diff --git a/client/demo/dist/assets/gui_settings/RVC.json b/client/demo/dist/assets/gui_settings/RVC.json
index 12fb4b83..d92dc92b 100644
--- a/client/demo/dist/assets/gui_settings/RVC.json
+++ b/client/demo/dist/assets/gui_settings/RVC.json
@@ -16,70 +16,8 @@
"options": {}
}
],
- "serverControl": [
- {
- "name": "startButton",
- "options": {}
- },
- {
- "name": "performance",
- "options": {}
- },
- {
- "name": "modelSwitch",
- "options": {}
- },
- {
- "name": "serverOperation",
- "options": {
- "showDownload": true,
- "showExportOnnx": true,
- "showReload": true
- }
- }
- ],
- "modelSetting": [
- {
- "name": "modelUploaderv2",
- "options": {}
- },
- {
- "name": "modelSlotRow2",
- "options": {}
- },
- {
- "name": "commonFileSelect",
- "options": {
- "title": "Model(.onnx, .pt, pth)",
- "acceptExtentions": ["onnx", "pth", "pt"],
- "fileKind": "rvcModel"
- }
- },
- {
- "name": "commonFileSelect",
- "options": {
- "title": "index(.index)",
- "acceptExtentions": ["index"],
- "fileKind": "rvcIndex"
- }
- },
- {
- "name": "sampleModelSelect",
- "options": {}
- },
- {
- "name": "sampleDownloadControlRow",
- "options": {}
- },
- {
- "name": "defaultTuneRow2",
- "options": {}
- },
- {
- "name": "modelUploadButtonRow2",
- "options": {}
- }
- ],
+ "serverControl": [],
+ "modelSetting": [],
"lab": [
{
"name": "mergeLab",
@@ -87,72 +25,10 @@
}
],
- "deviceSetting": [
- {
- "name": "audioDeviceMode",
- "options": {}
- },
- {
- "name": "audioInput",
- "options": {}
- },
- {
- "name": "audioOutput",
- "options": {}
- }
- ],
- "qualityControl": [
- {
- "name": "noiseControl",
- "options": {}
- },
- {
- "name": "gainControl",
- "options": {}
- },
- {
- "name": "f0Detector",
- "options": {
- "detectors": ["dio", "harvest", "crepe"]
- }
- },
- {
- "name": "divider",
- "options": {}
- },
- {
- "name": "analyzer",
- "options": {}
- }
- ],
- "speakerSetting": [
- {
- "name": "tune",
- "options": {}
- },
- {
- "name": "indexRatio",
- "options": {}
- },
- {
- "name": "silentThreshold",
- "options": {}
- }
- ],
- "converterSetting": [
- {
- "name": "inputChunkNum",
- "options": {}
- },
- {
- "name": "extraDataLength",
- "options": {}
- },
- {
- "name": "gpu",
- "options": {}
- }
- ],
+ "deviceSetting": [],
+ "qualityControl": [],
+ "speakerSetting": [],
+ "converterSetting": [],
"advancedSetting": [
{
"name": "protocol",
@@ -182,6 +58,23 @@
"name": "protect",
"options": {}
}
+ ],
+ "modelSlotControl": [
+ {
+ "name": "modelSlotArea",
+ "options": {}
+ },
+ {
+ "name": "characterArea",
+ "options": {}
+ },
+ {
+ "name": "configArea",
+ "options": {
+ "detectors": ["dio", "harvest", "crepe"],
+ "inputChunkNums": [8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024, 2048]
+ }
+ }
]
},
diff --git a/client/demo/dist/assets/icons/folder.svg b/client/demo/dist/assets/icons/folder.svg
new file mode 100644
index 00000000..134458b9
--- /dev/null
+++ b/client/demo/dist/assets/icons/folder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/demo/dist/assets/icons/human.png b/client/demo/dist/assets/icons/human.png
new file mode 100644
index 00000000..7b4bf8df
Binary files /dev/null and b/client/demo/dist/assets/icons/human.png differ
diff --git a/client/demo/dist/index.js b/client/demo/dist/index.js
index d1e16d5f..43ee439c 100644
--- a/client/demo/dist/index.js
+++ b/client/demo/dist/index.js
@@ -15,7 +15,7 @@
\***********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
-eval("/*\n * ATTENTION: The \"eval\" devtool has been used (maybe by default in mode: \"development\").\n * This devtool is neither made for production nor for readable output files.\n * It uses \"eval()\" calls to create a separate source file in the browser devtools.\n * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)\n * or disable the default devtool with \"devtool: false\".\n * If you are looking for production-ready output files, see mode: \"production\" (https://webpack.js.org/configuration/mode/).\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\telse { var i, a; }\n})(typeof self !== 'undefined' ? self : this, (__WEBPACK_EXTERNAL_MODULE_react__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./node_modules/@protobufjs/aspromise/index.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/@protobufjs/aspromise/index.js ***!\n \\*****************************************************/\n/***/ ((module) => {\n\n\"use strict\";\neval(\"\\r\\nmodule.exports = asPromise;\\r\\n\\r\\n/**\\r\\n * Callback as used by {@link util.asPromise}.\\r\\n * @typedef asPromiseCallback\\r\\n * @type {function}\\r\\n * @param {Error|null} error Error, if any\\r\\n * @param {...*} params Additional arguments\\r\\n * @returns {undefined}\\r\\n */\\r\\n\\r\\n/**\\r\\n * Returns a promise from a node-style callback function.\\r\\n * @memberof util\\r\\n * @param {asPromiseCallback} fn Function to call\\r\\n * @param {*} ctx Function context\\r\\n * @param {...*} params Function arguments\\r\\n * @returns {Promise<*>} Promisified function\\r\\n */\\r\\nfunction asPromise(fn, ctx/*, varargs */) {\\r\\n var params = new Array(arguments.length - 1),\\r\\n offset = 0,\\r\\n index = 2,\\r\\n pending = true;\\r\\n while (index < arguments.length)\\r\\n params[offset++] = arguments[index++];\\r\\n return new Promise(function executor(resolve, reject) {\\r\\n params[offset] = function callback(err/*, varargs */) {\\r\\n if (pending) {\\r\\n pending = false;\\r\\n if (err)\\r\\n reject(err);\\r\\n else {\\r\\n var params = new Array(arguments.length - 1),\\r\\n offset = 0;\\r\\n while (offset < params.length)\\r\\n params[offset++] = arguments[offset];\\r\\n resolve.apply(null, params);\\r\\n }\\r\\n }\\r\\n };\\r\\n try {\\r\\n fn.apply(ctx || null, params);\\r\\n } catch (err) {\\r\\n if (pending) {\\r\\n pending = false;\\r\\n reject(err);\\r\\n }\\r\\n }\\r\\n });\\r\\n}\\r\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/@protobufjs/aspromise/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/@protobufjs/base64/index.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/@protobufjs/base64/index.js ***!\n \\**************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\r\\n\\r\\n/**\\r\\n * A minimal base64 implementation for number arrays.\\r\\n * @memberof util\\r\\n * @namespace\\r\\n */\\r\\nvar base64 = exports;\\r\\n\\r\\n/**\\r\\n * Calculates the byte length of a base64 encoded string.\\r\\n * @param {string} string Base64 encoded string\\r\\n * @returns {number} Byte length\\r\\n */\\r\\nbase64.length = function length(string) {\\r\\n var p = string.length;\\r\\n if (!p)\\r\\n return 0;\\r\\n var n = 0;\\r\\n while (--p % 4 > 1 && string.charAt(p) === \\\"=\\\")\\r\\n ++n;\\r\\n return Math.ceil(string.length * 3) / 4 - n;\\r\\n};\\r\\n\\r\\n// Base64 encoding table\\r\\nvar b64 = new Array(64);\\r\\n\\r\\n// Base64 decoding table\\r\\nvar s64 = new Array(123);\\r\\n\\r\\n// 65..90, 97..122, 48..57, 43, 47\\r\\nfor (var i = 0; i < 64;)\\r\\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\\r\\n\\r\\n/**\\r\\n * Encodes a buffer to a base64 encoded string.\\r\\n * @param {Uint8Array} buffer Source buffer\\r\\n * @param {number} start Source start\\r\\n * @param {number} end Source end\\r\\n * @returns {string} Base64 encoded string\\r\\n */\\r\\nbase64.encode = function encode(buffer, start, end) {\\r\\n var parts = null,\\r\\n chunk = [];\\r\\n var i = 0, // output index\\r\\n j = 0, // goto index\\r\\n t; // temporary\\r\\n while (start < end) {\\r\\n var b = buffer[start++];\\r\\n switch (j) {\\r\\n case 0:\\r\\n chunk[i++] = b64[b >> 2];\\r\\n t = (b & 3) << 4;\\r\\n j = 1;\\r\\n break;\\r\\n case 1:\\r\\n chunk[i++] = b64[t | b >> 4];\\r\\n t = (b & 15) << 2;\\r\\n j = 2;\\r\\n break;\\r\\n case 2:\\r\\n chunk[i++] = b64[t | b >> 6];\\r\\n chunk[i++] = b64[b & 63];\\r\\n j = 0;\\r\\n break;\\r\\n }\\r\\n if (i > 8191) {\\r\\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\\r\\n i = 0;\\r\\n }\\r\\n }\\r\\n if (j) {\\r\\n chunk[i++] = b64[t];\\r\\n chunk[i++] = 61;\\r\\n if (j === 1)\\r\\n chunk[i++] = 61;\\r\\n }\\r\\n if (parts) {\\r\\n if (i)\\r\\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\\r\\n return parts.join(\\\"\\\");\\r\\n }\\r\\n return String.fromCharCode.apply(String, chunk.slice(0, i));\\r\\n};\\r\\n\\r\\nvar invalidEncoding = \\\"invalid encoding\\\";\\r\\n\\r\\n/**\\r\\n * Decodes a base64 encoded string to a buffer.\\r\\n * @param {string} string Source string\\r\\n * @param {Uint8Array} buffer Destination buffer\\r\\n * @param {number} offset Destination offset\\r\\n * @returns {number} Number of bytes written\\r\\n * @throws {Error} If encoding is invalid\\r\\n */\\r\\nbase64.decode = function decode(string, buffer, offset) {\\r\\n var start = offset;\\r\\n var j = 0, // goto index\\r\\n t; // temporary\\r\\n for (var i = 0; i < string.length;) {\\r\\n var c = string.charCodeAt(i++);\\r\\n if (c === 61 && j > 1)\\r\\n break;\\r\\n if ((c = s64[c]) === undefined)\\r\\n throw Error(invalidEncoding);\\r\\n switch (j) {\\r\\n case 0:\\r\\n t = c;\\r\\n j = 1;\\r\\n break;\\r\\n case 1:\\r\\n buffer[offset++] = t << 2 | (c & 48) >> 4;\\r\\n t = c;\\r\\n j = 2;\\r\\n break;\\r\\n case 2:\\r\\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\\r\\n t = c;\\r\\n j = 3;\\r\\n break;\\r\\n case 3:\\r\\n buffer[offset++] = (t & 3) << 6 | c;\\r\\n j = 0;\\r\\n break;\\r\\n }\\r\\n }\\r\\n if (j === 1)\\r\\n throw Error(invalidEncoding);\\r\\n return offset - start;\\r\\n};\\r\\n\\r\\n/**\\r\\n * Tests if the specified string appears to be base64 encoded.\\r\\n * @param {string} string String to test\\r\\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\\r\\n */\\r\\nbase64.test = function test(string) {\\r\\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\\r\\n};\\r\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/@protobufjs/base64/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/@protobufjs/eventemitter/index.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/@protobufjs/eventemitter/index.js ***!\n \\********************************************************/\n/***/ ((module) => {\n\n\"use strict\";\neval(\"\\r\\nmodule.exports = EventEmitter;\\r\\n\\r\\n/**\\r\\n * Constructs a new event emitter instance.\\r\\n * @classdesc A minimal event emitter.\\r\\n * @memberof util\\r\\n * @constructor\\r\\n */\\r\\nfunction EventEmitter() {\\r\\n\\r\\n /**\\r\\n * Registered listeners.\\r\\n * @type {Object.}\\r\\n * @private\\r\\n */\\r\\n this._listeners = {};\\r\\n}\\r\\n\\r\\n/**\\r\\n * Registers an event listener.\\r\\n * @param {string} evt Event name\\r\\n * @param {function} fn Listener\\r\\n * @param {*} [ctx] Listener context\\r\\n * @returns {util.EventEmitter} `this`\\r\\n */\\r\\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\\r\\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\\r\\n fn : fn,\\r\\n ctx : ctx || this\\r\\n });\\r\\n return this;\\r\\n};\\r\\n\\r\\n/**\\r\\n * Removes an event listener or any matching listeners if arguments are omitted.\\r\\n * @param {string} [evt] Event name. Removes all listeners if omitted.\\r\\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\\r\\n * @returns {util.EventEmitter} `this`\\r\\n */\\r\\nEventEmitter.prototype.off = function off(evt, fn) {\\r\\n if (evt === undefined)\\r\\n this._listeners = {};\\r\\n else {\\r\\n if (fn === undefined)\\r\\n this._listeners[evt] = [];\\r\\n else {\\r\\n var listeners = this._listeners[evt];\\r\\n for (var i = 0; i < listeners.length;)\\r\\n if (listeners[i].fn === fn)\\r\\n listeners.splice(i, 1);\\r\\n else\\r\\n ++i;\\r\\n }\\r\\n }\\r\\n return this;\\r\\n};\\r\\n\\r\\n/**\\r\\n * Emits an event by calling its listeners with the specified arguments.\\r\\n * @param {string} evt Event name\\r\\n * @param {...*} args Arguments\\r\\n * @returns {util.EventEmitter} `this`\\r\\n */\\r\\nEventEmitter.prototype.emit = function emit(evt) {\\r\\n var listeners = this._listeners[evt];\\r\\n if (listeners) {\\r\\n var args = [],\\r\\n i = 1;\\r\\n for (; i < arguments.length;)\\r\\n args.push(arguments[i++]);\\r\\n for (i = 0; i < listeners.length;)\\r\\n listeners[i].fn.apply(listeners[i++].ctx, args);\\r\\n }\\r\\n return this;\\r\\n};\\r\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/@protobufjs/eventemitter/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/@protobufjs/float/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/@protobufjs/float/index.js ***!\n \\*************************************************/\n/***/ ((module) => {\n\n\"use strict\";\neval(\"\\r\\n\\r\\nmodule.exports = factory(factory);\\r\\n\\r\\n/**\\r\\n * Reads / writes floats / doubles from / to buffers.\\r\\n * @name util.float\\r\\n * @namespace\\r\\n */\\r\\n\\r\\n/**\\r\\n * Writes a 32 bit float to a buffer using little endian byte order.\\r\\n * @name util.float.writeFloatLE\\r\\n * @function\\r\\n * @param {number} val Value to write\\r\\n * @param {Uint8Array} buf Target buffer\\r\\n * @param {number} pos Target buffer offset\\r\\n * @returns {undefined}\\r\\n */\\r\\n\\r\\n/**\\r\\n * Writes a 32 bit float to a buffer using big endian byte order.\\r\\n * @name util.float.writeFloatBE\\r\\n * @function\\r\\n * @param {number} val Value to write\\r\\n * @param {Uint8Array} buf Target buffer\\r\\n * @param {number} pos Target buffer offset\\r\\n * @returns {undefined}\\r\\n */\\r\\n\\r\\n/**\\r\\n * Reads a 32 bit float from a buffer using little endian byte order.\\r\\n * @name util.float.readFloatLE\\r\\n * @function\\r\\n * @param {Uint8Array} buf Source buffer\\r\\n * @param {number} pos Source buffer offset\\r\\n * @returns {number} Value read\\r\\n */\\r\\n\\r\\n/**\\r\\n * Reads a 32 bit float from a buffer using big endian byte order.\\r\\n * @name util.float.readFloatBE\\r\\n * @function\\r\\n * @param {Uint8Array} buf Source buffer\\r\\n * @param {number} pos Source buffer offset\\r\\n * @returns {number} Value read\\r\\n */\\r\\n\\r\\n/**\\r\\n * Writes a 64 bit double to a buffer using little endian byte order.\\r\\n * @name util.float.writeDoubleLE\\r\\n * @function\\r\\n * @param {number} val Value to write\\r\\n * @param {Uint8Array} buf Target buffer\\r\\n * @param {number} pos Target buffer offset\\r\\n * @returns {undefined}\\r\\n */\\r\\n\\r\\n/**\\r\\n * Writes a 64 bit double to a buffer using big endian byte order.\\r\\n * @name util.float.writeDoubleBE\\r\\n * @function\\r\\n * @param {number} val Value to write\\r\\n * @param {Uint8Array} buf Target buffer\\r\\n * @param {number} pos Target buffer offset\\r\\n * @returns {undefined}\\r\\n */\\r\\n\\r\\n/**\\r\\n * Reads a 64 bit double from a buffer using little endian byte order.\\r\\n * @name util.float.readDoubleLE\\r\\n * @function\\r\\n * @param {Uint8Array} buf Source buffer\\r\\n * @param {number} pos Source buffer offset\\r\\n * @returns {number} Value read\\r\\n */\\r\\n\\r\\n/**\\r\\n * Reads a 64 bit double from a buffer using big endian byte order.\\r\\n * @name util.float.readDoubleBE\\r\\n * @function\\r\\n * @param {Uint8Array} buf Source buffer\\r\\n * @param {number} pos Source buffer offset\\r\\n * @returns {number} Value read\\r\\n */\\r\\n\\r\\n// Factory function for the purpose of node-based testing in modified global environments\\r\\nfunction factory(exports) {\\r\\n\\r\\n // float: typed array\\r\\n if (typeof Float32Array !== \\\"undefined\\\") (function() {\\r\\n\\r\\n var f32 = new Float32Array([ -0 ]),\\r\\n f8b = new Uint8Array(f32.buffer),\\r\\n le = f8b[3] === 128;\\r\\n\\r\\n function writeFloat_f32_cpy(val, buf, pos) {\\r\\n f32[0] = val;\\r\\n buf[pos ] = f8b[0];\\r\\n buf[pos + 1] = f8b[1];\\r\\n buf[pos + 2] = f8b[2];\\r\\n buf[pos + 3] = f8b[3];\\r\\n }\\r\\n\\r\\n function writeFloat_f32_rev(val, buf, pos) {\\r\\n f32[0] = val;\\r\\n buf[pos ] = f8b[3];\\r\\n buf[pos + 1] = f8b[2];\\r\\n buf[pos + 2] = f8b[1];\\r\\n buf[pos + 3] = f8b[0];\\r\\n }\\r\\n\\r\\n /* istanbul ignore next */\\r\\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\\r\\n /* istanbul ignore next */\\r\\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\\r\\n\\r\\n function readFloat_f32_cpy(buf, pos) {\\r\\n f8b[0] = buf[pos ];\\r\\n f8b[1] = buf[pos + 1];\\r\\n f8b[2] = buf[pos + 2];\\r\\n f8b[3] = buf[pos + 3];\\r\\n return f32[0];\\r\\n }\\r\\n\\r\\n function readFloat_f32_rev(buf, pos) {\\r\\n f8b[3] = buf[pos ];\\r\\n f8b[2] = buf[pos + 1];\\r\\n f8b[1] = buf[pos + 2];\\r\\n f8b[0] = buf[pos + 3];\\r\\n return f32[0];\\r\\n }\\r\\n\\r\\n /* istanbul ignore next */\\r\\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\\r\\n /* istanbul ignore next */\\r\\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\\r\\n\\r\\n // float: ieee754\\r\\n })(); else (function() {\\r\\n\\r\\n function writeFloat_ieee754(writeUint, val, buf, pos) {\\r\\n var sign = val < 0 ? 1 : 0;\\r\\n if (sign)\\r\\n val = -val;\\r\\n if (val === 0)\\r\\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\\r\\n else if (isNaN(val))\\r\\n writeUint(2143289344, buf, pos);\\r\\n else if (val > 3.4028234663852886e+38) // +-Infinity\\r\\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\\r\\n else if (val < 1.1754943508222875e-38) // denormal\\r\\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\\r\\n else {\\r\\n var exponent = Math.floor(Math.log(val) / Math.LN2),\\r\\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\\r\\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\\r\\n }\\r\\n }\\r\\n\\r\\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\\r\\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\\r\\n\\r\\n function readFloat_ieee754(readUint, buf, pos) {\\r\\n var uint = readUint(buf, pos),\\r\\n sign = (uint >> 31) * 2 + 1,\\r\\n exponent = uint >>> 23 & 255,\\r\\n mantissa = uint & 8388607;\\r\\n return exponent === 255\\r\\n ? mantissa\\r\\n ? NaN\\r\\n : sign * Infinity\\r\\n : exponent === 0 // denormal\\r\\n ? sign * 1.401298464324817e-45 * mantissa\\r\\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\\r\\n }\\r\\n\\r\\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\\r\\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\\r\\n\\r\\n })();\\r\\n\\r\\n // double: typed array\\r\\n if (typeof Float64Array !== \\\"undefined\\\") (function() {\\r\\n\\r\\n var f64 = new Float64Array([-0]),\\r\\n f8b = new Uint8Array(f64.buffer),\\r\\n le = f8b[7] === 128;\\r\\n\\r\\n function writeDouble_f64_cpy(val, buf, pos) {\\r\\n f64[0] = val;\\r\\n buf[pos ] = f8b[0];\\r\\n buf[pos + 1] = f8b[1];\\r\\n buf[pos + 2] = f8b[2];\\r\\n buf[pos + 3] = f8b[3];\\r\\n buf[pos + 4] = f8b[4];\\r\\n buf[pos + 5] = f8b[5];\\r\\n buf[pos + 6] = f8b[6];\\r\\n buf[pos + 7] = f8b[7];\\r\\n }\\r\\n\\r\\n function writeDouble_f64_rev(val, buf, pos) {\\r\\n f64[0] = val;\\r\\n buf[pos ] = f8b[7];\\r\\n buf[pos + 1] = f8b[6];\\r\\n buf[pos + 2] = f8b[5];\\r\\n buf[pos + 3] = f8b[4];\\r\\n buf[pos + 4] = f8b[3];\\r\\n buf[pos + 5] = f8b[2];\\r\\n buf[pos + 6] = f8b[1];\\r\\n buf[pos + 7] = f8b[0];\\r\\n }\\r\\n\\r\\n /* istanbul ignore next */\\r\\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\\r\\n /* istanbul ignore next */\\r\\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\\r\\n\\r\\n function readDouble_f64_cpy(buf, pos) {\\r\\n f8b[0] = buf[pos ];\\r\\n f8b[1] = buf[pos + 1];\\r\\n f8b[2] = buf[pos + 2];\\r\\n f8b[3] = buf[pos + 3];\\r\\n f8b[4] = buf[pos + 4];\\r\\n f8b[5] = buf[pos + 5];\\r\\n f8b[6] = buf[pos + 6];\\r\\n f8b[7] = buf[pos + 7];\\r\\n return f64[0];\\r\\n }\\r\\n\\r\\n function readDouble_f64_rev(buf, pos) {\\r\\n f8b[7] = buf[pos ];\\r\\n f8b[6] = buf[pos + 1];\\r\\n f8b[5] = buf[pos + 2];\\r\\n f8b[4] = buf[pos + 3];\\r\\n f8b[3] = buf[pos + 4];\\r\\n f8b[2] = buf[pos + 5];\\r\\n f8b[1] = buf[pos + 6];\\r\\n f8b[0] = buf[pos + 7];\\r\\n return f64[0];\\r\\n }\\r\\n\\r\\n /* istanbul ignore next */\\r\\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\\r\\n /* istanbul ignore next */\\r\\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\\r\\n\\r\\n // double: ieee754\\r\\n })(); else (function() {\\r\\n\\r\\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\\r\\n var sign = val < 0 ? 1 : 0;\\r\\n if (sign)\\r\\n val = -val;\\r\\n if (val === 0) {\\r\\n writeUint(0, buf, pos + off0);\\r\\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\\r\\n } else if (isNaN(val)) {\\r\\n writeUint(0, buf, pos + off0);\\r\\n writeUint(2146959360, buf, pos + off1);\\r\\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\\r\\n writeUint(0, buf, pos + off0);\\r\\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\\r\\n } else {\\r\\n var mantissa;\\r\\n if (val < 2.2250738585072014e-308) { // denormal\\r\\n mantissa = val / 5e-324;\\r\\n writeUint(mantissa >>> 0, buf, pos + off0);\\r\\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\\r\\n } else {\\r\\n var exponent = Math.floor(Math.log(val) / Math.LN2);\\r\\n if (exponent === 1024)\\r\\n exponent = 1023;\\r\\n mantissa = val * Math.pow(2, -exponent);\\r\\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\\r\\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\\r\\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\\r\\n\\r\\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\\r\\n var lo = readUint(buf, pos + off0),\\r\\n hi = readUint(buf, pos + off1);\\r\\n var sign = (hi >> 31) * 2 + 1,\\r\\n exponent = hi >>> 20 & 2047,\\r\\n mantissa = 4294967296 * (hi & 1048575) + lo;\\r\\n return exponent === 2047\\r\\n ? mantissa\\r\\n ? NaN\\r\\n : sign * Infinity\\r\\n : exponent === 0 // denormal\\r\\n ? sign * 5e-324 * mantissa\\r\\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\\r\\n }\\r\\n\\r\\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\\r\\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\\r\\n\\r\\n })();\\r\\n\\r\\n return exports;\\r\\n}\\r\\n\\r\\n// uint helpers\\r\\n\\r\\nfunction writeUintLE(val, buf, pos) {\\r\\n buf[pos ] = val & 255;\\r\\n buf[pos + 1] = val >>> 8 & 255;\\r\\n buf[pos + 2] = val >>> 16 & 255;\\r\\n buf[pos + 3] = val >>> 24;\\r\\n}\\r\\n\\r\\nfunction writeUintBE(val, buf, pos) {\\r\\n buf[pos ] = val >>> 24;\\r\\n buf[pos + 1] = val >>> 16 & 255;\\r\\n buf[pos + 2] = val >>> 8 & 255;\\r\\n buf[pos + 3] = val & 255;\\r\\n}\\r\\n\\r\\nfunction readUintLE(buf, pos) {\\r\\n return (buf[pos ]\\r\\n | buf[pos + 1] << 8\\r\\n | buf[pos + 2] << 16\\r\\n | buf[pos + 3] << 24) >>> 0;\\r\\n}\\r\\n\\r\\nfunction readUintBE(buf, pos) {\\r\\n return (buf[pos ] << 24\\r\\n | buf[pos + 1] << 16\\r\\n | buf[pos + 2] << 8\\r\\n | buf[pos + 3]) >>> 0;\\r\\n}\\r\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/@protobufjs/float/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/@protobufjs/inquire/index.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/@protobufjs/inquire/index.js ***!\n \\***************************************************/\n/***/ ((module) => {\n\n\"use strict\";\neval(\"\\r\\nmodule.exports = inquire;\\r\\n\\r\\n/**\\r\\n * Requires a module only if available.\\r\\n * @memberof util\\r\\n * @param {string} moduleName Module to require\\r\\n * @returns {?Object} Required module if available and not empty, otherwise `null`\\r\\n */\\r\\nfunction inquire(moduleName) {\\r\\n try {\\r\\n var mod = eval(\\\"quire\\\".replace(/^/,\\\"re\\\"))(moduleName); // eslint-disable-line no-eval\\r\\n if (mod && (mod.length || Object.keys(mod).length))\\r\\n return mod;\\r\\n } catch (e) {} // eslint-disable-line no-empty\\r\\n return null;\\r\\n}\\r\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/@protobufjs/inquire/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/@protobufjs/pool/index.js\":\n/*!************************************************!*\\\n !*** ./node_modules/@protobufjs/pool/index.js ***!\n \\************************************************/\n/***/ ((module) => {\n\n\"use strict\";\neval(\"\\r\\nmodule.exports = pool;\\r\\n\\r\\n/**\\r\\n * An allocator as used by {@link util.pool}.\\r\\n * @typedef PoolAllocator\\r\\n * @type {function}\\r\\n * @param {number} size Buffer size\\r\\n * @returns {Uint8Array} Buffer\\r\\n */\\r\\n\\r\\n/**\\r\\n * A slicer as used by {@link util.pool}.\\r\\n * @typedef PoolSlicer\\r\\n * @type {function}\\r\\n * @param {number} start Start offset\\r\\n * @param {number} end End offset\\r\\n * @returns {Uint8Array} Buffer slice\\r\\n * @this {Uint8Array}\\r\\n */\\r\\n\\r\\n/**\\r\\n * A general purpose buffer pool.\\r\\n * @memberof util\\r\\n * @function\\r\\n * @param {PoolAllocator} alloc Allocator\\r\\n * @param {PoolSlicer} slice Slicer\\r\\n * @param {number} [size=8192] Slab size\\r\\n * @returns {PoolAllocator} Pooled allocator\\r\\n */\\r\\nfunction pool(alloc, slice, size) {\\r\\n var SIZE = size || 8192;\\r\\n var MAX = SIZE >>> 1;\\r\\n var slab = null;\\r\\n var offset = SIZE;\\r\\n return function pool_alloc(size) {\\r\\n if (size < 1 || size > MAX)\\r\\n return alloc(size);\\r\\n if (offset + size > SIZE) {\\r\\n slab = alloc(SIZE);\\r\\n offset = 0;\\r\\n }\\r\\n var buf = slice.call(slab, offset, offset += size);\\r\\n if (offset & 7) // align to 32 bit\\r\\n offset = (offset | 7) + 1;\\r\\n return buf;\\r\\n };\\r\\n}\\r\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/@protobufjs/pool/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/@protobufjs/utf8/index.js\":\n/*!************************************************!*\\\n !*** ./node_modules/@protobufjs/utf8/index.js ***!\n \\************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\r\\n\\r\\n/**\\r\\n * A minimal UTF8 implementation for number arrays.\\r\\n * @memberof util\\r\\n * @namespace\\r\\n */\\r\\nvar utf8 = exports;\\r\\n\\r\\n/**\\r\\n * Calculates the UTF8 byte length of a string.\\r\\n * @param {string} string String\\r\\n * @returns {number} Byte length\\r\\n */\\r\\nutf8.length = function utf8_length(string) {\\r\\n var len = 0,\\r\\n c = 0;\\r\\n for (var i = 0; i < string.length; ++i) {\\r\\n c = string.charCodeAt(i);\\r\\n if (c < 128)\\r\\n len += 1;\\r\\n else if (c < 2048)\\r\\n len += 2;\\r\\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\\r\\n ++i;\\r\\n len += 4;\\r\\n } else\\r\\n len += 3;\\r\\n }\\r\\n return len;\\r\\n};\\r\\n\\r\\n/**\\r\\n * Reads UTF8 bytes as a string.\\r\\n * @param {Uint8Array} buffer Source buffer\\r\\n * @param {number} start Source start\\r\\n * @param {number} end Source end\\r\\n * @returns {string} String read\\r\\n */\\r\\nutf8.read = function utf8_read(buffer, start, end) {\\r\\n var len = end - start;\\r\\n if (len < 1)\\r\\n return \\\"\\\";\\r\\n var parts = null,\\r\\n chunk = [],\\r\\n i = 0, // char offset\\r\\n t; // temporary\\r\\n while (start < end) {\\r\\n t = buffer[start++];\\r\\n if (t < 128)\\r\\n chunk[i++] = t;\\r\\n else if (t > 191 && t < 224)\\r\\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\\r\\n else if (t > 239 && t < 365) {\\r\\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\\r\\n chunk[i++] = 0xD800 + (t >> 10);\\r\\n chunk[i++] = 0xDC00 + (t & 1023);\\r\\n } else\\r\\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\\r\\n if (i > 8191) {\\r\\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\\r\\n i = 0;\\r\\n }\\r\\n }\\r\\n if (parts) {\\r\\n if (i)\\r\\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\\r\\n return parts.join(\\\"\\\");\\r\\n }\\r\\n return String.fromCharCode.apply(String, chunk.slice(0, i));\\r\\n};\\r\\n\\r\\n/**\\r\\n * Writes a string as UTF8 bytes.\\r\\n * @param {string} string Source string\\r\\n * @param {Uint8Array} buffer Destination buffer\\r\\n * @param {number} offset Destination offset\\r\\n * @returns {number} Bytes written\\r\\n */\\r\\nutf8.write = function utf8_write(string, buffer, offset) {\\r\\n var start = offset,\\r\\n c1, // character 1\\r\\n c2; // character 2\\r\\n for (var i = 0; i < string.length; ++i) {\\r\\n c1 = string.charCodeAt(i);\\r\\n if (c1 < 128) {\\r\\n buffer[offset++] = c1;\\r\\n } else if (c1 < 2048) {\\r\\n buffer[offset++] = c1 >> 6 | 192;\\r\\n buffer[offset++] = c1 & 63 | 128;\\r\\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\\r\\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\\r\\n ++i;\\r\\n buffer[offset++] = c1 >> 18 | 240;\\r\\n buffer[offset++] = c1 >> 12 & 63 | 128;\\r\\n buffer[offset++] = c1 >> 6 & 63 | 128;\\r\\n buffer[offset++] = c1 & 63 | 128;\\r\\n } else {\\r\\n buffer[offset++] = c1 >> 12 | 224;\\r\\n buffer[offset++] = c1 >> 6 & 63 | 128;\\r\\n buffer[offset++] = c1 & 63 | 128;\\r\\n }\\r\\n }\\r\\n return offset - start;\\r\\n};\\r\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/@protobufjs/utf8/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/activespeakerdetector/DefaultActiveSpeakerDetector.js\":\n/*!******************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/activespeakerdetector/DefaultActiveSpeakerDetector.js ***!\n \\******************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst IntervalScheduler_1 = __webpack_require__(/*! ../scheduler/IntervalScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js\\\");\\nclass DefaultActiveSpeakerDetector {\\n constructor(realtimeController, selfAttendeeId, hasBandwidthPriorityCallback, waitIntervalMs = 1000, updateIntervalMs = 200) {\\n this.realtimeController = realtimeController;\\n this.selfAttendeeId = selfAttendeeId;\\n this.hasBandwidthPriorityCallback = hasBandwidthPriorityCallback;\\n this.waitIntervalMs = waitIntervalMs;\\n this.updateIntervalMs = updateIntervalMs;\\n this.speakerScores = {};\\n this.speakerMuteState = {};\\n this.detectorCallbackToHandler = new Map();\\n this.detectorCallbackToScoresTimer = new Map();\\n this.detectorCallbackToActivityTimer = new Map();\\n this.hasBandwidthPriority = false;\\n this.mostRecentUpdateTimestamp = {};\\n }\\n needUpdate(attendeeId) {\\n if (!this.activeSpeakers) {\\n return true;\\n }\\n return ((this.speakerScores[attendeeId] === 0 && this.activeSpeakers.includes(attendeeId)) ||\\n (this.speakerScores[attendeeId] > 0 && !this.activeSpeakers.includes(attendeeId)));\\n }\\n updateActiveSpeakers(policy, callback, attendeeId) {\\n if (!this.needUpdate(attendeeId)) {\\n return;\\n }\\n const sortedSpeakers = [];\\n const attendeeIds = Object.keys(this.speakerScores);\\n for (let i = 0; i < attendeeIds.length; i++) {\\n const attendeeId = attendeeIds[i];\\n sortedSpeakers.push({ attendeeId: attendeeId, activeScore: this.speakerScores[attendeeId] });\\n }\\n const sortedAttendeeIds = sortedSpeakers\\n .sort((s1, s2) => s2.activeScore - s1.activeScore)\\n .filter(function (s) {\\n return s.activeScore > 0;\\n })\\n .map(function (s) {\\n return s.attendeeId;\\n });\\n this.activeSpeakers = sortedAttendeeIds;\\n callback(sortedAttendeeIds);\\n const selfIsActive = sortedAttendeeIds.length > 0 && sortedAttendeeIds[0] === this.selfAttendeeId;\\n const hasBandwidthPriority = selfIsActive && policy.prioritizeVideoSendBandwidthForActiveSpeaker();\\n const hasBandwidthPriorityDidChange = this.hasBandwidthPriority !== hasBandwidthPriority;\\n if (hasBandwidthPriorityDidChange) {\\n this.hasBandwidthPriority = hasBandwidthPriority;\\n this.hasBandwidthPriorityCallback(hasBandwidthPriority);\\n }\\n }\\n updateScore(policy, callback, attendeeId, volume, muted) {\\n const activeScore = policy.calculateScore(attendeeId, volume, muted);\\n if (this.speakerScores[attendeeId] !== activeScore) {\\n this.speakerScores[attendeeId] = activeScore;\\n this.mostRecentUpdateTimestamp[attendeeId] = Date.now();\\n this.updateActiveSpeakers(policy, callback, attendeeId);\\n }\\n }\\n subscribe(policy, callback, scoresCallback, scoresCallbackIntervalMs) {\\n const handler = (attendeeId, present) => {\\n if (!present) {\\n this.speakerScores[attendeeId] = 0;\\n this.mostRecentUpdateTimestamp[attendeeId] = Date.now();\\n this.updateActiveSpeakers(policy, callback, attendeeId);\\n return;\\n }\\n this.realtimeController.realtimeSubscribeToVolumeIndicator(attendeeId, (attendeeId, volume, muted, _signalStrength) => {\\n this.mostRecentUpdateTimestamp[attendeeId] = Date.now();\\n if (muted !== null) {\\n this.speakerMuteState[attendeeId] = muted;\\n }\\n this.updateScore(policy, callback, attendeeId, volume, muted);\\n });\\n };\\n this.detectorCallbackToHandler.set(callback, handler);\\n const activityTimer = new IntervalScheduler_1.default(this.updateIntervalMs);\\n activityTimer.start(() => {\\n for (const attendeeId in this.speakerScores) {\\n if (Date.now() - this.mostRecentUpdateTimestamp[attendeeId] > this.waitIntervalMs) {\\n this.updateScore(policy, callback, attendeeId, 0, this.speakerMuteState[attendeeId]);\\n }\\n }\\n });\\n this.detectorCallbackToActivityTimer.set(callback, activityTimer);\\n if (scoresCallback && scoresCallbackIntervalMs) {\\n const scoresTimer = new IntervalScheduler_1.default(scoresCallbackIntervalMs);\\n scoresTimer.start(() => {\\n scoresCallback(this.speakerScores);\\n });\\n this.detectorCallbackToScoresTimer.set(callback, scoresTimer);\\n }\\n this.realtimeController.realtimeSubscribeToAttendeeIdPresence(handler);\\n }\\n unsubscribe(callback) {\\n const handler = this.detectorCallbackToHandler.get(callback);\\n this.detectorCallbackToHandler.delete(callback);\\n if (handler) {\\n this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(handler);\\n }\\n const activityTimer = this.detectorCallbackToActivityTimer.get(callback);\\n if (activityTimer) {\\n activityTimer.stop();\\n this.detectorCallbackToActivityTimer.delete(callback);\\n }\\n const scoresTimer = this.detectorCallbackToScoresTimer.get(callback);\\n if (scoresTimer) {\\n scoresTimer.stop();\\n this.detectorCallbackToHandler.delete(callback);\\n }\\n }\\n destroy() {\\n return __awaiter(this, void 0, void 0, function* () {\\n for (const handler of this.detectorCallbackToHandler.values()) {\\n this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(handler);\\n }\\n for (const activityTimer of this.detectorCallbackToActivityTimer.values()) {\\n activityTimer.stop();\\n }\\n for (const scoresTimer of this.detectorCallbackToScoresTimer.values()) {\\n scoresTimer.stop();\\n }\\n this.detectorCallbackToHandler.clear();\\n this.detectorCallbackToActivityTimer.clear();\\n this.detectorCallbackToScoresTimer.clear();\\n });\\n }\\n}\\nexports[\\\"default\\\"] = DefaultActiveSpeakerDetector;\\n//# sourceMappingURL=DefaultActiveSpeakerDetector.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/activespeakerdetector/DefaultActiveSpeakerDetector.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/activespeakerpolicy/DefaultActiveSpeakerPolicy.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/activespeakerpolicy/DefaultActiveSpeakerPolicy.js ***!\n \\**************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass DefaultActiveSpeakerPolicy {\\n /** Creates active speaker policy with speakerWeight, cutoffThreshold, silenceThreshold, and takeoverRate.\\n *\\n * @param speakerWeight\\n * The number used to calculate new active speaker score for current attendee\\n * ```js\\n * Formula:\\n * updatedCurrentAttendeeScore = currentAttendeeExistingScore * speakerWeight + currentReceivedVolume * (1 - speakerWeight)\\n * ```\\n *\\n * @param cutoffThreshold\\n * The threshold number compared with updated active speaker score.\\n * If the updated active speaker score is less than this threshold value,\\n * the updated score is returned as 0, else the updated score is returned.\\n *\\n * @param silenceThreshold\\n * The threshold number compared with current received volume.\\n * While calculating the new active speaker score, if the current received\\n * volume is less than this threshold value, the current received volume is considered as 0,\\n * else 1.\\n *\\n * @param takeoverRate\\n * The number used to calculate other attendee's active speaker score, other than the current attendee.\\n * ```js\\n * Formula:\\n * updatedOtherAttendeeActiveSpeakerScore = Math.max(\\n * existingOtherAttendeeActiveSpeakerScore - takeoverRate * currentReceivedVolume,\\n * 0\\n * );\\n * ```\\n */\\n constructor(speakerWeight = 0.9, cutoffThreshold = 0.01, silenceThreshold = 0.2, takeoverRate = 0.2) {\\n this.speakerWeight = speakerWeight;\\n this.cutoffThreshold = cutoffThreshold;\\n this.silenceThreshold = silenceThreshold;\\n this.takeoverRate = takeoverRate;\\n /**\\n * The map of attendeeIds to their active speaker score values\\n */\\n this.volumes = {};\\n }\\n calculateScore(attendeeId, volume, muted) {\\n if (muted || volume === null) {\\n volume = 0;\\n }\\n if (!this.volumes.hasOwnProperty(attendeeId)) {\\n this.volumes[attendeeId] = 0;\\n }\\n if (volume > this.silenceThreshold) {\\n volume = 1.0;\\n }\\n else {\\n volume = 0.0;\\n }\\n const score = this.volumes[attendeeId] * this.speakerWeight + volume * (1 - this.speakerWeight);\\n this.volumes[attendeeId] = score;\\n for (const otherAttendeeId in this.volumes) {\\n if (otherAttendeeId !== attendeeId) {\\n this.volumes[otherAttendeeId] = Math.max(this.volumes[otherAttendeeId] - this.takeoverRate * volume, 0);\\n }\\n }\\n if (score < this.cutoffThreshold) {\\n return 0;\\n }\\n return score;\\n }\\n prioritizeVideoSendBandwidthForActiveSpeaker() {\\n return true;\\n }\\n}\\nexports[\\\"default\\\"] = DefaultActiveSpeakerPolicy;\\n//# sourceMappingURL=DefaultActiveSpeakerPolicy.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/activespeakerpolicy/DefaultActiveSpeakerPolicy.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/attendee/Attendee.js\":\n/*!*********************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/attendee/Attendee.js ***!\n \\*********************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[Attendee]] contains the information of an attendee.\\n */\\nclass Attendee {\\n}\\nexports[\\\"default\\\"] = Attendee;\\n//# sourceMappingURL=Attendee.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/attendee/Attendee.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/audiomixcontroller/DefaultAudioMixController.js\":\n/*!************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/audiomixcontroller/DefaultAudioMixController.js ***!\n \\************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nclass DefaultAudioMixController {\\n constructor(logger) {\\n this.logger = logger;\\n this.audioDevice = null;\\n this.audioElement = null;\\n this.audioStream = null;\\n this.browserBehavior = new DefaultBrowserBehavior_1.default();\\n }\\n bindAudioElement(element) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!element) {\\n throw new Error(`Cannot bind audio element: ${element}`);\\n }\\n this.audioElement = element;\\n this.audioElement.autoplay = true;\\n return this.bindAudioMix();\\n });\\n }\\n unbindAudioElement() {\\n if (!this.audioElement) {\\n return;\\n }\\n this.audioElement.srcObject = null;\\n this.audioElement = null;\\n }\\n bindAudioStream(stream) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!stream) {\\n return;\\n }\\n this.audioStream = stream;\\n try {\\n yield this.bindAudioMix();\\n }\\n catch (error) {\\n /* istanbul ignore else */\\n if (this.logger) {\\n this.logger.warn(`Failed to bind audio stream: ${error}`);\\n }\\n }\\n });\\n }\\n bindAudioDevice(device) {\\n return __awaiter(this, void 0, void 0, function* () {\\n /**\\n * Throw error if browser doesn't even support setSinkId\\n * Read more: https://caniuse.com/?search=setSinkId\\n */\\n if (device && !this.browserBehavior.supportsSetSinkId()) {\\n throw new Error('Cannot select audio output device. This browser does not support setSinkId.');\\n }\\n // Always set device -- we might be setting it back to `null` to reselect\\n // the default, and even in that case we need to call `bindAudioMix` in\\n // order to update the sink ID to the empty string.\\n this.audioDevice = device;\\n return this.bindAudioMix();\\n });\\n }\\n bindAudioMix() {\\n var _a, _b;\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!this.audioElement) {\\n return;\\n }\\n if (this.audioStream) {\\n this.audioElement.srcObject = this.audioStream;\\n }\\n // In usual operation, the output device is undefined, and so is the element\\n // sink ID. In this case, don't throw an error -- we're being called as a side\\n // effect of just binding the audio element, not choosing an output device.\\n const shouldSetSinkId = ((_a = this.audioDevice) === null || _a === void 0 ? void 0 : _a.deviceId) !== this.audioElement.sinkId;\\n if (shouldSetSinkId &&\\n typeof this.audioElement.sinkId === 'undefined') {\\n throw new Error('Cannot select audio output device. This browser does not support setSinkId.');\\n }\\n const newSinkId = this.audioDevice ? this.audioDevice.deviceId : '';\\n const oldSinkId = this.audioElement.sinkId;\\n if (newSinkId === oldSinkId) {\\n return;\\n }\\n // Take the existing stream and temporarily unbind it while we change\\n // the sink ID.\\n const existingAudioElement = this\\n .audioElement;\\n const existingStream = this.audioStream;\\n if (this.browserBehavior.hasChromiumWebRTC()) {\\n existingAudioElement.srcObject = null;\\n }\\n if (shouldSetSinkId) {\\n try {\\n yield existingAudioElement.setSinkId(newSinkId);\\n }\\n catch (error) {\\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(`Failed to set sinkId for audio element: ${error}`);\\n throw error;\\n }\\n }\\n if (this.browserBehavior.hasChromiumWebRTC()) {\\n existingAudioElement.srcObject = existingStream;\\n }\\n });\\n }\\n}\\nexports[\\\"default\\\"] = DefaultAudioMixController;\\n//# sourceMappingURL=DefaultAudioMixController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/audiomixcontroller/DefaultAudioMixController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/audioprofile/AudioProfile.js\":\n/*!*****************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/audioprofile/AudioProfile.js ***!\n \\*****************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * AudioProfile defines quality settings of the audio input\\n * device. Use the static methods to create presets optimized\\n * for fullband speech and fullband music with a mono channel.\\n */\\nclass AudioProfile {\\n /**\\n * Constructs an AudioProfile given an audio bitrate. If no\\n * audio bitrate is supplied, then the default AudioProfile\\n * is constructed. The default AudioProfile does not adjust\\n * the browser's internal bitrate setting.\\n */\\n constructor(audioBitrateBps = null) {\\n this.audioBitrateBps = audioBitrateBps;\\n }\\n /**\\n * Creates an AudioProfile optimized for fullband speech (40 kbit/s mono).\\n */\\n static fullbandSpeechMono() {\\n return new AudioProfile(40000);\\n }\\n /**\\n * Creates an AudioProfile optimized for fullband music (64 kbit/s mono).\\n */\\n static fullbandMusicMono() {\\n return new AudioProfile(64000);\\n }\\n}\\nexports[\\\"default\\\"] = AudioProfile;\\n//# sourceMappingURL=AudioProfile.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/audioprofile/AudioProfile.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/AudioVideoControllerState.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/AudioVideoControllerState.js ***!\n \\**************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[AudioVideoControllerState]] includes the compute resources shared by [[Task]].\\n */\\nclass AudioVideoControllerState {\\n constructor() {\\n this.logger = null;\\n this.browserBehavior = null;\\n this.signalingClient = null;\\n this.meetingSessionConfiguration = null;\\n this.peer = null;\\n this.previousSdpOffer = null;\\n this.sdpOfferInit = null;\\n this.audioVideoController = null;\\n this.realtimeController = null;\\n this.videoTileController = null;\\n this.mediaStreamBroker = null;\\n this.audioMixController = null;\\n this.activeAudioInput = null;\\n this.activeVideoInput = null;\\n this.transceiverController = null;\\n this.indexFrame = null;\\n this.iceCandidates = [];\\n this.iceCandidateHandler = null;\\n this.iceGatheringStateEventHandler = null;\\n this.sdpAnswer = null;\\n this.turnCredentials = null;\\n this.reconnectController = null;\\n this.removableObservers = [];\\n this.audioProfile = null;\\n this.videoStreamIndex = null;\\n this.videoDownlinkBandwidthPolicy = null;\\n this.videoUplinkBandwidthPolicy = null;\\n this.lastKnownVideoAvailability = null;\\n this.localVideoSender = null;\\n this.localAudioSender = null;\\n this.videoCaptureAndEncodeParameter = null;\\n this.videosToReceive = null;\\n this.videoSubscriptions = null;\\n this.videosPaused = null;\\n this.videoDuplexMode = null;\\n this.volumeIndicatorAdapter = null;\\n this.statsCollector = null;\\n this.connectionMonitor = null;\\n this.videoInputAttachedTimestampMs = 0;\\n this.audioDeviceInformation = {};\\n this.videoDeviceInformation = {};\\n this.enableSimulcast = false;\\n this.eventController = null;\\n this.signalingOpenDurationMs = null;\\n this.iceGatheringDurationMs = null;\\n this.startAudioVideoTimestamp = null;\\n this.attendeePresenceDurationMs = null;\\n this.meetingStartDurationMs = null;\\n this.poorConnectionCount = 0;\\n this.maxVideoTileCount = 0;\\n this.startTimeMs = null;\\n }\\n}\\nexports[\\\"default\\\"] = AudioVideoControllerState;\\n//# sourceMappingURL=AudioVideoControllerState.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/AudioVideoControllerState.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/DefaultAudioVideoController.js\":\n/*!****************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/DefaultAudioVideoController.js ***!\n \\****************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultActiveSpeakerDetector_1 = __webpack_require__(/*! ../activespeakerdetector/DefaultActiveSpeakerDetector */ \\\"./node_modules/amazon-chime-sdk-js/build/activespeakerdetector/DefaultActiveSpeakerDetector.js\\\");\\nconst DefaultAudioMixController_1 = __webpack_require__(/*! ../audiomixcontroller/DefaultAudioMixController */ \\\"./node_modules/amazon-chime-sdk-js/build/audiomixcontroller/DefaultAudioMixController.js\\\");\\nconst AudioProfile_1 = __webpack_require__(/*! ../audioprofile/AudioProfile */ \\\"./node_modules/amazon-chime-sdk-js/build/audioprofile/AudioProfile.js\\\");\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst ConnectionHealthData_1 = __webpack_require__(/*! ../connectionhealthpolicy/ConnectionHealthData */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthData.js\\\");\\nconst SignalingAndMetricsConnectionMonitor_1 = __webpack_require__(/*! ../connectionmonitor/SignalingAndMetricsConnectionMonitor */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionmonitor/SignalingAndMetricsConnectionMonitor.js\\\");\\nconst DefaultEventController_1 = __webpack_require__(/*! ../eventcontroller/DefaultEventController */ \\\"./node_modules/amazon-chime-sdk-js/build/eventcontroller/DefaultEventController.js\\\");\\nconst Maybe_1 = __webpack_require__(/*! ../maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nconst MeetingSessionStatus_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionStatus */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatus.js\\\");\\nconst MeetingSessionStatusCode_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionStatusCode */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js\\\");\\nconst MeetingSessionVideoAvailability_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionVideoAvailability */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionVideoAvailability.js\\\");\\nconst DefaultPingPong_1 = __webpack_require__(/*! ../pingpong/DefaultPingPong */ \\\"./node_modules/amazon-chime-sdk-js/build/pingpong/DefaultPingPong.js\\\");\\nconst DefaultRealtimeController_1 = __webpack_require__(/*! ../realtimecontroller/DefaultRealtimeController */ \\\"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/DefaultRealtimeController.js\\\");\\nconst AsyncScheduler_1 = __webpack_require__(/*! ../scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nconst DefaultSessionStateController_1 = __webpack_require__(/*! ../sessionstatecontroller/DefaultSessionStateController */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/DefaultSessionStateController.js\\\");\\nconst SessionStateControllerAction_1 = __webpack_require__(/*! ../sessionstatecontroller/SessionStateControllerAction */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerAction.js\\\");\\nconst SessionStateControllerState_1 = __webpack_require__(/*! ../sessionstatecontroller/SessionStateControllerState */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerState.js\\\");\\nconst SessionStateControllerTransitionResult_1 = __webpack_require__(/*! ../sessionstatecontroller/SessionStateControllerTransitionResult */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerTransitionResult.js\\\");\\nconst DefaultSignalingClient_1 = __webpack_require__(/*! ../signalingclient/DefaultSignalingClient */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/DefaultSignalingClient.js\\\");\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst DefaultStatsCollector_1 = __webpack_require__(/*! ../statscollector/DefaultStatsCollector */ \\\"./node_modules/amazon-chime-sdk-js/build/statscollector/DefaultStatsCollector.js\\\");\\nconst AttachMediaInputTask_1 = __webpack_require__(/*! ../task/AttachMediaInputTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/AttachMediaInputTask.js\\\");\\nconst CleanRestartedSessionTask_1 = __webpack_require__(/*! ../task/CleanRestartedSessionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CleanRestartedSessionTask.js\\\");\\nconst CleanStoppedSessionTask_1 = __webpack_require__(/*! ../task/CleanStoppedSessionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CleanStoppedSessionTask.js\\\");\\nconst CreatePeerConnectionTask_1 = __webpack_require__(/*! ../task/CreatePeerConnectionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CreatePeerConnectionTask.js\\\");\\nconst CreateSDPTask_1 = __webpack_require__(/*! ../task/CreateSDPTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CreateSDPTask.js\\\");\\nconst FinishGatheringICECandidatesTask_1 = __webpack_require__(/*! ../task/FinishGatheringICECandidatesTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/FinishGatheringICECandidatesTask.js\\\");\\nconst JoinAndReceiveIndexTask_1 = __webpack_require__(/*! ../task/JoinAndReceiveIndexTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/JoinAndReceiveIndexTask.js\\\");\\nconst LeaveAndReceiveLeaveAckTask_1 = __webpack_require__(/*! ../task/LeaveAndReceiveLeaveAckTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/LeaveAndReceiveLeaveAckTask.js\\\");\\nconst ListenForVolumeIndicatorsTask_1 = __webpack_require__(/*! ../task/ListenForVolumeIndicatorsTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ListenForVolumeIndicatorsTask.js\\\");\\nconst MonitorTask_1 = __webpack_require__(/*! ../task/MonitorTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/MonitorTask.js\\\");\\nconst OpenSignalingConnectionTask_1 = __webpack_require__(/*! ../task/OpenSignalingConnectionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/OpenSignalingConnectionTask.js\\\");\\nconst ParallelGroupTask_1 = __webpack_require__(/*! ../task/ParallelGroupTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ParallelGroupTask.js\\\");\\nconst ReceiveAudioInputTask_1 = __webpack_require__(/*! ../task/ReceiveAudioInputTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveAudioInputTask.js\\\");\\nconst ReceiveTURNCredentialsTask_1 = __webpack_require__(/*! ../task/ReceiveTURNCredentialsTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveTURNCredentialsTask.js\\\");\\nconst ReceiveVideoInputTask_1 = __webpack_require__(/*! ../task/ReceiveVideoInputTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveVideoInputTask.js\\\");\\nconst ReceiveVideoStreamIndexTask_1 = __webpack_require__(/*! ../task/ReceiveVideoStreamIndexTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveVideoStreamIndexTask.js\\\");\\nconst SendAndReceiveDataMessagesTask_1 = __webpack_require__(/*! ../task/SendAndReceiveDataMessagesTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SendAndReceiveDataMessagesTask.js\\\");\\nconst SerialGroupTask_1 = __webpack_require__(/*! ../task/SerialGroupTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SerialGroupTask.js\\\");\\nconst SetLocalDescriptionTask_1 = __webpack_require__(/*! ../task/SetLocalDescriptionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SetLocalDescriptionTask.js\\\");\\nconst SetRemoteDescriptionTask_1 = __webpack_require__(/*! ../task/SetRemoteDescriptionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SetRemoteDescriptionTask.js\\\");\\nconst SubscribeAndReceiveSubscribeAckTask_1 = __webpack_require__(/*! ../task/SubscribeAndReceiveSubscribeAckTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SubscribeAndReceiveSubscribeAckTask.js\\\");\\nconst TimeoutTask_1 = __webpack_require__(/*! ../task/TimeoutTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/TimeoutTask.js\\\");\\nconst WaitForAttendeePresenceTask_1 = __webpack_require__(/*! ../task/WaitForAttendeePresenceTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/WaitForAttendeePresenceTask.js\\\");\\nconst DefaultTransceiverController_1 = __webpack_require__(/*! ../transceivercontroller/DefaultTransceiverController */ \\\"./node_modules/amazon-chime-sdk-js/build/transceivercontroller/DefaultTransceiverController.js\\\");\\nconst SimulcastTransceiverController_1 = __webpack_require__(/*! ../transceivercontroller/SimulcastTransceiverController */ \\\"./node_modules/amazon-chime-sdk-js/build/transceivercontroller/SimulcastTransceiverController.js\\\");\\nconst DefaultVideoCaptureAndEncodeParameter_1 = __webpack_require__(/*! ../videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter */ \\\"./node_modules/amazon-chime-sdk-js/build/videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter.js\\\");\\nconst AllHighestVideoBandwidthPolicy_1 = __webpack_require__(/*! ../videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy.js\\\");\\nconst VideoAdaptiveProbePolicy_1 = __webpack_require__(/*! ../videodownlinkbandwidthpolicy/VideoAdaptiveProbePolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/VideoAdaptiveProbePolicy.js\\\");\\nconst DefaultVideoStreamIdSet_1 = __webpack_require__(/*! ../videostreamidset/DefaultVideoStreamIdSet */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamidset/DefaultVideoStreamIdSet.js\\\");\\nconst DefaultVideoStreamIndex_1 = __webpack_require__(/*! ../videostreamindex/DefaultVideoStreamIndex */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamindex/DefaultVideoStreamIndex.js\\\");\\nconst SimulcastVideoStreamIndex_1 = __webpack_require__(/*! ../videostreamindex/SimulcastVideoStreamIndex */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamindex/SimulcastVideoStreamIndex.js\\\");\\nconst DefaultVideoTileController_1 = __webpack_require__(/*! ../videotilecontroller/DefaultVideoTileController */ \\\"./node_modules/amazon-chime-sdk-js/build/videotilecontroller/DefaultVideoTileController.js\\\");\\nconst DefaultVideoTileFactory_1 = __webpack_require__(/*! ../videotilefactory/DefaultVideoTileFactory */ \\\"./node_modules/amazon-chime-sdk-js/build/videotilefactory/DefaultVideoTileFactory.js\\\");\\nconst DefaultSimulcastUplinkPolicy_1 = __webpack_require__(/*! ../videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicy.js\\\");\\nconst NScaleVideoUplinkBandwidthPolicy_1 = __webpack_require__(/*! ../videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.js\\\");\\nconst DefaultVolumeIndicatorAdapter_1 = __webpack_require__(/*! ../volumeindicatoradapter/DefaultVolumeIndicatorAdapter */ \\\"./node_modules/amazon-chime-sdk-js/build/volumeindicatoradapter/DefaultVolumeIndicatorAdapter.js\\\");\\nconst AudioVideoControllerState_1 = __webpack_require__(/*! ./AudioVideoControllerState */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/AudioVideoControllerState.js\\\");\\nclass DefaultAudioVideoController {\\n constructor(configuration, logger, webSocketAdapter, mediaStreamBroker, reconnectController) {\\n this._audioProfile = new AudioProfile_1.default();\\n this.connectionHealthData = new ConnectionHealthData_1.default();\\n this.observerQueue = new Set();\\n this.meetingSessionContext = new AudioVideoControllerState_1.default();\\n this.enableSimulcast = false;\\n this.totalRetryCount = 0;\\n this.startAudioVideoTimestamp = 0;\\n this.destroyed = false;\\n this._logger = logger;\\n this.sessionStateController = new DefaultSessionStateController_1.default(this._logger);\\n this._configuration = configuration;\\n this.enableSimulcast =\\n configuration.enableUnifiedPlanForChromiumBasedBrowsers &&\\n configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers &&\\n new DefaultBrowserBehavior_1.default().hasChromiumWebRTC();\\n this._webSocketAdapter = webSocketAdapter;\\n this._realtimeController = new DefaultRealtimeController_1.default();\\n this._realtimeController.realtimeSetLocalAttendeeId(configuration.credentials.attendeeId, configuration.credentials.externalUserId);\\n this._mediaStreamBroker = mediaStreamBroker;\\n this._reconnectController = reconnectController;\\n this._videoTileController = new DefaultVideoTileController_1.default(new DefaultVideoTileFactory_1.default(), this, this._logger);\\n this._audioMixController = new DefaultAudioMixController_1.default(this._logger);\\n this.meetingSessionContext.logger = this._logger;\\n this._eventController = new DefaultEventController_1.default(this);\\n }\\n destroy() {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.observerQueue.clear();\\n this.destroyed = true;\\n });\\n }\\n get configuration() {\\n return this._configuration;\\n }\\n get realtimeController() {\\n return this._realtimeController;\\n }\\n get activeSpeakerDetector() {\\n // Lazy init.\\n if (!this._activeSpeakerDetector) {\\n this._activeSpeakerDetector = new DefaultActiveSpeakerDetector_1.default(this._realtimeController, this._configuration.credentials.attendeeId, this.handleHasBandwidthPriority.bind(this));\\n }\\n return this._activeSpeakerDetector;\\n }\\n get videoTileController() {\\n return this._videoTileController;\\n }\\n get audioMixController() {\\n return this._audioMixController;\\n }\\n get eventController() {\\n return this._eventController;\\n }\\n get logger() {\\n return this._logger;\\n }\\n get rtcPeerConnection() {\\n return (this.meetingSessionContext && this.meetingSessionContext.peer) || null;\\n }\\n get mediaStreamBroker() {\\n return this._mediaStreamBroker;\\n }\\n getRTCPeerConnectionStats(selector) {\\n if (!this.rtcPeerConnection) {\\n return null;\\n }\\n return this.rtcPeerConnection.getStats(selector);\\n }\\n setAudioProfile(audioProfile) {\\n this._audioProfile = audioProfile;\\n }\\n addObserver(observer) {\\n this.logger.info('adding meeting observer');\\n this.observerQueue.add(observer);\\n }\\n removeObserver(observer) {\\n this.logger.info('removing meeting observer');\\n this.observerQueue.delete(observer);\\n }\\n forEachObserver(observerFunc) {\\n for (const observer of this.observerQueue) {\\n AsyncScheduler_1.default.nextTick(() => {\\n if (this.observerQueue.has(observer)) {\\n observerFunc(observer);\\n }\\n });\\n }\\n }\\n start() {\\n this.activeSpeakerDetector;\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.Connect, () => {\\n this.actionConnect(false);\\n });\\n }\\n actionConnect(reconnecting) {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.connectionHealthData.reset();\\n this.meetingSessionContext = new AudioVideoControllerState_1.default();\\n this.meetingSessionContext.logger = this.logger;\\n this.meetingSessionContext.eventController = this.eventController;\\n this.meetingSessionContext.browserBehavior = new DefaultBrowserBehavior_1.default({\\n enableUnifiedPlanForChromiumBasedBrowsers: this.configuration\\n .enableUnifiedPlanForChromiumBasedBrowsers,\\n });\\n this.meetingSessionContext.meetingSessionConfiguration = this.configuration;\\n this.meetingSessionContext.signalingClient = new DefaultSignalingClient_1.default(this._webSocketAdapter, this.logger);\\n this.meetingSessionContext.mediaStreamBroker = this._mediaStreamBroker;\\n this.meetingSessionContext.realtimeController = this._realtimeController;\\n this.meetingSessionContext.audioMixController = this._audioMixController;\\n this.meetingSessionContext.audioVideoController = this;\\n if (this.enableSimulcast) {\\n this.meetingSessionContext.transceiverController = new SimulcastTransceiverController_1.default(this.logger, this.meetingSessionContext.browserBehavior);\\n }\\n else {\\n this.meetingSessionContext.transceiverController = new DefaultTransceiverController_1.default(this.logger, this.meetingSessionContext.browserBehavior);\\n }\\n this.meetingSessionContext.volumeIndicatorAdapter = new DefaultVolumeIndicatorAdapter_1.default(this.logger, this._realtimeController, DefaultAudioVideoController.MIN_VOLUME_DECIBELS, DefaultAudioVideoController.MAX_VOLUME_DECIBELS);\\n this.meetingSessionContext.videoTileController = this._videoTileController;\\n this.meetingSessionContext.videoDownlinkBandwidthPolicy = this.configuration.videoDownlinkBandwidthPolicy;\\n this.meetingSessionContext.videoUplinkBandwidthPolicy = this.configuration.videoUplinkBandwidthPolicy;\\n this.meetingSessionContext.enableSimulcast = this.enableSimulcast;\\n if (this.enableSimulcast) {\\n const simulcastPolicy = new DefaultSimulcastUplinkPolicy_1.default(this.configuration.credentials.attendeeId, this.meetingSessionContext.logger);\\n simulcastPolicy.addObserver(this);\\n this.meetingSessionContext.videoUplinkBandwidthPolicy = simulcastPolicy;\\n this.meetingSessionContext.videoDownlinkBandwidthPolicy = new VideoAdaptiveProbePolicy_1.default(this.logger, this.meetingSessionContext.videoTileController);\\n this.meetingSessionContext.videoStreamIndex = new SimulcastVideoStreamIndex_1.default(this.logger);\\n }\\n else {\\n this.meetingSessionContext.enableSimulcast = false;\\n this.meetingSessionContext.videoStreamIndex = new DefaultVideoStreamIndex_1.default(this.logger);\\n if (!this.meetingSessionContext.videoDownlinkBandwidthPolicy) {\\n this.meetingSessionContext.videoDownlinkBandwidthPolicy = new AllHighestVideoBandwidthPolicy_1.default(this.configuration.credentials.attendeeId);\\n }\\n if (!this.meetingSessionContext.videoUplinkBandwidthPolicy) {\\n this.meetingSessionContext.videoUplinkBandwidthPolicy = new NScaleVideoUplinkBandwidthPolicy_1.default(this.configuration.credentials.attendeeId);\\n }\\n this.meetingSessionContext.audioProfile = this._audioProfile;\\n }\\n this.meetingSessionContext.lastKnownVideoAvailability = new MeetingSessionVideoAvailability_1.default();\\n this.meetingSessionContext.videoCaptureAndEncodeParameter = new DefaultVideoCaptureAndEncodeParameter_1.default(0, 0, 0, 0, false);\\n this.meetingSessionContext.videosToReceive = new DefaultVideoStreamIdSet_1.default();\\n this.meetingSessionContext.videosPaused = new DefaultVideoStreamIdSet_1.default();\\n this.meetingSessionContext.statsCollector = new DefaultStatsCollector_1.default(this, this.logger, this.meetingSessionContext.browserBehavior);\\n this.meetingSessionContext.connectionMonitor = new SignalingAndMetricsConnectionMonitor_1.default(this, this._realtimeController, this._videoTileController, this.connectionHealthData, new DefaultPingPong_1.default(this.meetingSessionContext.signalingClient, DefaultAudioVideoController.PING_PONG_INTERVAL_MS, this.logger), this.meetingSessionContext.statsCollector);\\n this.meetingSessionContext.reconnectController = this._reconnectController;\\n this.meetingSessionContext.videoDeviceInformation = {};\\n if (!reconnecting) {\\n this.totalRetryCount = 0;\\n this._reconnectController.reset();\\n this.startAudioVideoTimestamp = Date.now();\\n this.forEachObserver(observer => {\\n Maybe_1.default.of(observer.audioVideoDidStartConnecting).map(f => f.bind(observer)(false));\\n });\\n /* istanbul ignore else */\\n if (this.eventController) {\\n this.eventController.publishEvent('meetingStartRequested');\\n }\\n }\\n this.meetingSessionContext.startAudioVideoTimestamp = this.startAudioVideoTimestamp;\\n if (this._reconnectController.hasStartedConnectionAttempt()) {\\n // This does not reset the reconnect deadline, but declare it's not the first connection.\\n this._reconnectController.startedConnectionAttempt(false);\\n }\\n else {\\n this._reconnectController.startedConnectionAttempt(true);\\n }\\n try {\\n yield new SerialGroupTask_1.default(this.logger, this.wrapTaskName('AudioVideoStart'), [\\n new MonitorTask_1.default(this.meetingSessionContext, this.configuration.connectionHealthPolicyConfiguration, this.connectionHealthData),\\n new ReceiveAudioInputTask_1.default(this.meetingSessionContext),\\n new TimeoutTask_1.default(this.logger, new SerialGroupTask_1.default(this.logger, 'Media', [\\n new SerialGroupTask_1.default(this.logger, 'Signaling', [\\n new OpenSignalingConnectionTask_1.default(this.meetingSessionContext),\\n new ListenForVolumeIndicatorsTask_1.default(this.meetingSessionContext),\\n new SendAndReceiveDataMessagesTask_1.default(this.meetingSessionContext),\\n new JoinAndReceiveIndexTask_1.default(this.meetingSessionContext),\\n new ReceiveTURNCredentialsTask_1.default(this.meetingSessionContext),\\n // TODO: ensure index handler does not race with incoming index update\\n new ReceiveVideoStreamIndexTask_1.default(this.meetingSessionContext),\\n ]),\\n new SerialGroupTask_1.default(this.logger, 'Peer', [\\n new CreatePeerConnectionTask_1.default(this.meetingSessionContext),\\n new AttachMediaInputTask_1.default(this.meetingSessionContext),\\n new CreateSDPTask_1.default(this.meetingSessionContext),\\n new SetLocalDescriptionTask_1.default(this.meetingSessionContext),\\n new FinishGatheringICECandidatesTask_1.default(this.meetingSessionContext),\\n new SubscribeAndReceiveSubscribeAckTask_1.default(this.meetingSessionContext),\\n this.meetingSessionContext.meetingSessionConfiguration.attendeePresenceTimeoutMs > 0\\n ? new TimeoutTask_1.default(this.logger, new ParallelGroupTask_1.default(this.logger, 'FinalizeConnection', [\\n new WaitForAttendeePresenceTask_1.default(this.meetingSessionContext),\\n new SetRemoteDescriptionTask_1.default(this.meetingSessionContext),\\n ]), this.meetingSessionContext.meetingSessionConfiguration.attendeePresenceTimeoutMs)\\n : new SetRemoteDescriptionTask_1.default(this.meetingSessionContext),\\n ]),\\n ]), this.configuration.connectionTimeoutMs),\\n ]).run();\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishConnecting, () => {\\n /* istanbul ignore else */\\n if (this.eventController) {\\n this.meetingSessionContext.meetingStartDurationMs =\\n Date.now() - this.startAudioVideoTimestamp;\\n this.eventController.publishEvent('meetingStartSucceeded', {\\n maxVideoTileCount: this.meetingSessionContext.maxVideoTileCount,\\n poorConnectionCount: this.meetingSessionContext.poorConnectionCount,\\n retryCount: this.totalRetryCount,\\n signalingOpenDurationMs: this.meetingSessionContext.signalingOpenDurationMs,\\n iceGatheringDurationMs: this.meetingSessionContext.iceGatheringDurationMs,\\n meetingStartDurationMs: this.meetingSessionContext.meetingStartDurationMs,\\n });\\n }\\n this.meetingSessionContext.startTimeMs = Date.now();\\n this.actionFinishConnecting();\\n });\\n }\\n catch (error) {\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.Fail, () => __awaiter(this, void 0, void 0, function* () {\\n const status = new MeetingSessionStatus_1.default(this.getMeetingStatusCode(error) || MeetingSessionStatusCode_1.default.TaskFailed);\\n yield this.actionDisconnect(status, true, error);\\n if (!this.handleMeetingSessionStatus(status, error)) {\\n this.notifyStop(status, error);\\n }\\n }));\\n }\\n this.connectionHealthData.setConnectionStartTime();\\n });\\n }\\n actionFinishConnecting() {\\n this.meetingSessionContext.videoDuplexMode = SignalingProtocol_js_1.SdkStreamServiceType.RX;\\n if (!this.meetingSessionContext.enableSimulcast) {\\n this.enforceBandwidthLimitationForSender(this.meetingSessionContext.videoCaptureAndEncodeParameter.encodeBitrates()[0]);\\n }\\n this.forEachObserver(observer => {\\n Maybe_1.default.of(observer.audioVideoDidStart).map(f => f.bind(observer)());\\n });\\n this._reconnectController.reset();\\n }\\n stop() {\\n /*\\n Stops the current audio video meeting session.\\n The stop method execution is deferred and executed after\\n the current reconnection attempt completes.\\n It disables any further reconnection attempts.\\n Upon completion, AudioVideoObserver's `audioVideoDidStop`\\n callback function is called with `MeetingSessionStatusCode.Left`.\\n */\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.Disconnect, () => {\\n this._reconnectController.disableReconnect();\\n this.logger.info('attendee left meeting, session will not be reconnected');\\n this.actionDisconnect(new MeetingSessionStatus_1.default(MeetingSessionStatusCode_1.default.Left), false, null);\\n });\\n }\\n actionDisconnect(status, reconnecting, error) {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n yield new SerialGroupTask_1.default(this.logger, this.wrapTaskName('AudioVideoStop'), [\\n new TimeoutTask_1.default(this.logger, new LeaveAndReceiveLeaveAckTask_1.default(this.meetingSessionContext), this.configuration.connectionTimeoutMs),\\n ]).run();\\n }\\n catch (stopError) {\\n this.logger.info('fail to stop');\\n }\\n try {\\n yield new SerialGroupTask_1.default(this.logger, this.wrapTaskName('AudioVideoClean'), [\\n new TimeoutTask_1.default(this.logger, new CleanStoppedSessionTask_1.default(this.meetingSessionContext), this.configuration.connectionTimeoutMs),\\n ]).run();\\n }\\n catch (cleanError) {\\n this.logger.info('fail to clean');\\n }\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishDisconnecting, () => {\\n if (!reconnecting) {\\n this.notifyStop(status, error);\\n }\\n });\\n });\\n }\\n update() {\\n const result = this.sessionStateController.perform(SessionStateControllerAction_1.default.Update, () => {\\n this.actionUpdate(true);\\n });\\n return (result === SessionStateControllerTransitionResult_1.default.Transitioned ||\\n result === SessionStateControllerTransitionResult_1.default.DeferredTransition);\\n }\\n restartLocalVideo(callback) {\\n const restartVideo = () => __awaiter(this, void 0, void 0, function* () {\\n if (this._videoTileController.hasStartedLocalVideoTile()) {\\n this.logger.info('stopping local video tile prior to local video restart');\\n this._videoTileController.stopLocalVideoTile();\\n this.logger.info('preparing local video restart update');\\n yield this.actionUpdate(false);\\n this.logger.info('starting local video tile for local video restart');\\n this._videoTileController.startLocalVideoTile();\\n }\\n this.logger.info('finalizing local video restart update');\\n yield this.actionUpdate(true);\\n callback();\\n });\\n const result = this.sessionStateController.perform(SessionStateControllerAction_1.default.Update, () => {\\n restartVideo();\\n });\\n return (result === SessionStateControllerTransitionResult_1.default.Transitioned ||\\n result === SessionStateControllerTransitionResult_1.default.DeferredTransition);\\n }\\n replaceLocalVideo() {\\n return __awaiter(this, void 0, void 0, function* () {\\n let videoStream = null;\\n try {\\n videoStream = yield this.mediaStreamBroker.acquireVideoInputStream();\\n }\\n catch (error) {\\n throw new Error(`could not acquire video stream from mediaStreamBroker due to ${error.message}`);\\n }\\n if (!videoStream || videoStream.getVideoTracks().length < 1) {\\n throw new Error('could not acquire video track');\\n }\\n const videoTrack = videoStream.getVideoTracks()[0];\\n if (!this.meetingSessionContext || !this.meetingSessionContext.peer) {\\n throw new Error('no active meeting and peer connection');\\n }\\n if (this.meetingSessionContext.browserBehavior.requiresUnifiedPlan()) {\\n yield this.meetingSessionContext.transceiverController.setVideoInput(videoTrack);\\n }\\n else {\\n throw new Error('cannot replace track on Plan B');\\n }\\n // if there is a local tile, a video tile update event should be fired.\\n const localTile = this.meetingSessionContext.videoTileController.getLocalVideoTile();\\n if (localTile) {\\n const state = localTile.state();\\n const settings = videoStream.getVideoTracks()[0].getSettings();\\n // so tile update wil be fired.\\n localTile.bindVideoStream(state.boundAttendeeId, true, videoStream, settings.width, settings.height, state.streamId, state.boundExternalUserId);\\n }\\n // Update the active video input on subscription context to match what we just changed\\n // so that subsequent meeting actions can reuse and destroy it.\\n this.meetingSessionContext.activeVideoInput = videoStream;\\n });\\n }\\n restartLocalAudio(callback) {\\n return __awaiter(this, void 0, void 0, function* () {\\n let audioStream = null;\\n try {\\n audioStream = yield this.mediaStreamBroker.acquireAudioInputStream();\\n }\\n catch (error) {\\n this.logger.info('could not acquire audio stream from mediaStreamBroker');\\n }\\n if (!audioStream || audioStream.getAudioTracks().length < 1) {\\n throw new Error('could not acquire audio track');\\n }\\n this.connectionHealthData.reset();\\n this.connectionHealthData.setConnectionStartTime();\\n const audioTrack = audioStream.getAudioTracks()[0];\\n if (!this.meetingSessionContext || !this.meetingSessionContext.peer) {\\n throw new Error('no active meeting and peer connection');\\n }\\n let replaceTrackSuccess = false;\\n if (this.meetingSessionContext.browserBehavior.requiresUnifiedPlan()) {\\n replaceTrackSuccess = yield this.meetingSessionContext.transceiverController.replaceAudioTrack(audioTrack);\\n }\\n else {\\n replaceTrackSuccess = yield DefaultTransceiverController_1.default.replaceAudioTrackForSender(this.meetingSessionContext.localAudioSender, audioTrack);\\n }\\n this._realtimeController.realtimeSetLocalAudioInput(audioStream);\\n this.meetingSessionContext.activeAudioInput = audioStream;\\n callback();\\n if (replaceTrackSuccess) {\\n return Promise.resolve();\\n }\\n else {\\n return Promise.reject();\\n }\\n });\\n }\\n actionUpdate(notify) {\\n return __awaiter(this, void 0, void 0, function* () {\\n // TODO: do not block other updates while waiting for video input\\n try {\\n yield new SerialGroupTask_1.default(this.logger, this.wrapTaskName('AudioVideoUpdate'), [\\n new ReceiveVideoInputTask_1.default(this.meetingSessionContext),\\n new TimeoutTask_1.default(this.logger, new SerialGroupTask_1.default(this.logger, 'UpdateSession', [\\n new AttachMediaInputTask_1.default(this.meetingSessionContext),\\n new CreateSDPTask_1.default(this.meetingSessionContext),\\n new SetLocalDescriptionTask_1.default(this.meetingSessionContext),\\n new FinishGatheringICECandidatesTask_1.default(this.meetingSessionContext),\\n new SubscribeAndReceiveSubscribeAckTask_1.default(this.meetingSessionContext),\\n new SetRemoteDescriptionTask_1.default(this.meetingSessionContext),\\n ]), this.configuration.connectionTimeoutMs),\\n ]).run();\\n if (notify) {\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishUpdating, () => {\\n this.actionFinishUpdating();\\n });\\n }\\n }\\n catch (error) {\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishUpdating, () => {\\n const status = new MeetingSessionStatus_1.default(this.getMeetingStatusCode(error) || MeetingSessionStatusCode_1.default.TaskFailed);\\n if (status.statusCode() !== MeetingSessionStatusCode_1.default.IncompatibleSDP) {\\n this.logger.info('failed to update audio-video session');\\n }\\n this.handleMeetingSessionStatus(status, error);\\n });\\n }\\n });\\n }\\n notifyStop(status, error) {\\n this.forEachObserver(observer => {\\n Maybe_1.default.of(observer.audioVideoDidStop).map(f => f.bind(observer)(status));\\n });\\n /* istanbul ignore else */\\n if (this.eventController) {\\n const { signalingOpenDurationMs, poorConnectionCount, startTimeMs, iceGatheringDurationMs, attendeePresenceDurationMs, meetingStartDurationMs, } = this.meetingSessionContext;\\n const attributes = {\\n maxVideoTileCount: this.meetingSessionContext.maxVideoTileCount,\\n meetingDurationMs: startTimeMs === null ? 0 : Math.round(Date.now() - startTimeMs),\\n meetingStatus: MeetingSessionStatusCode_1.default[status.statusCode()],\\n signalingOpenDurationMs,\\n iceGatheringDurationMs,\\n attendeePresenceDurationMs,\\n poorConnectionCount,\\n meetingStartDurationMs,\\n retryCount: this.totalRetryCount,\\n };\\n if (attributes.meetingDurationMs === 0) {\\n attributes.meetingErrorMessage = (error && error.message) || '';\\n delete attributes.meetingDurationMs;\\n delete attributes.attendeePresenceDurationMs;\\n delete attributes.meetingStartDurationMs;\\n this.eventController.publishEvent('meetingStartFailed', attributes);\\n }\\n else if (status.isFailure() || status.isAudioConnectionFailure()) {\\n attributes.meetingErrorMessage = (error && error.message) || '';\\n this.eventController.publishEvent('meetingFailed', attributes);\\n }\\n else {\\n this.eventController.publishEvent('meetingEnded', attributes);\\n }\\n }\\n }\\n actionFinishUpdating() {\\n // we do not update parameter for simulcast since they are updated in AttachMediaInputTask\\n if (!this.meetingSessionContext.enableSimulcast) {\\n const maxBitrateKbps = this.meetingSessionContext.videoCaptureAndEncodeParameter.encodeBitrates()[0];\\n this.enforceBandwidthLimitationForSender(maxBitrateKbps);\\n }\\n this.logger.info('updated audio-video session');\\n }\\n reconnect(status, error) {\\n const willRetry = this._reconnectController.retryWithBackoff(() => __awaiter(this, void 0, void 0, function* () {\\n if (this.sessionStateController.state() === SessionStateControllerState_1.default.NotConnected) {\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.Connect, () => {\\n this.actionConnect(true);\\n });\\n }\\n else {\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.Reconnect, () => {\\n this.actionReconnect();\\n });\\n }\\n this.totalRetryCount += 1;\\n }), () => {\\n this.logger.info('canceled retry');\\n });\\n if (!willRetry) {\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.Fail, () => {\\n this.actionDisconnect(status, false, error);\\n });\\n }\\n return willRetry;\\n }\\n actionReconnect() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!this._reconnectController.hasStartedConnectionAttempt()) {\\n this._reconnectController.startedConnectionAttempt(false);\\n this.forEachObserver(observer => {\\n Maybe_1.default.of(observer.audioVideoDidStartConnecting).map(f => f.bind(observer)(true));\\n });\\n }\\n this.meetingSessionContext.volumeIndicatorAdapter.onReconnect();\\n this.connectionHealthData.reset();\\n try {\\n yield new SerialGroupTask_1.default(this.logger, this.wrapTaskName('AudioVideoReconnect'), [\\n new TimeoutTask_1.default(this.logger, new SerialGroupTask_1.default(this.logger, 'Media', [\\n new CleanRestartedSessionTask_1.default(this.meetingSessionContext),\\n new SerialGroupTask_1.default(this.logger, 'Signaling', [\\n new OpenSignalingConnectionTask_1.default(this.meetingSessionContext),\\n new JoinAndReceiveIndexTask_1.default(this.meetingSessionContext),\\n new ReceiveTURNCredentialsTask_1.default(this.meetingSessionContext),\\n ]),\\n new CreatePeerConnectionTask_1.default(this.meetingSessionContext),\\n ]), this.configuration.connectionTimeoutMs),\\n // TODO: Do we need ReceiveVideoInputTask in the reconnect operation?\\n new ReceiveVideoInputTask_1.default(this.meetingSessionContext),\\n new TimeoutTask_1.default(this.logger, new SerialGroupTask_1.default(this.logger, 'UpdateSession', [\\n new AttachMediaInputTask_1.default(this.meetingSessionContext),\\n new CreateSDPTask_1.default(this.meetingSessionContext),\\n new SetLocalDescriptionTask_1.default(this.meetingSessionContext),\\n new FinishGatheringICECandidatesTask_1.default(this.meetingSessionContext),\\n new SubscribeAndReceiveSubscribeAckTask_1.default(this.meetingSessionContext),\\n new SetRemoteDescriptionTask_1.default(this.meetingSessionContext),\\n ]), this.configuration.connectionTimeoutMs),\\n ]).run();\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishConnecting, () => {\\n /* istanbul ignore else */\\n if (this.eventController) {\\n this.eventController.pushMeetingState('meetingReconnected');\\n }\\n this.actionFinishConnecting();\\n });\\n }\\n catch (error) {\\n // To perform the \\\"Reconnect\\\" action again, the session should be in the \\\"Connected\\\" state.\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishConnecting, () => {\\n this.logger.info('failed to reconnect audio-video session');\\n const status = new MeetingSessionStatus_1.default(this.getMeetingStatusCode(error) || MeetingSessionStatusCode_1.default.TaskFailed);\\n this.handleMeetingSessionStatus(status, error);\\n });\\n }\\n this.connectionHealthData.setConnectionStartTime();\\n });\\n }\\n wrapTaskName(taskName) {\\n return `${taskName}/${this.configuration.meetingId}/${this.configuration.credentials.attendeeId}`;\\n }\\n getMeetingStatusCode(error) {\\n const matched = /the meeting status code: (\\\\d+)/.exec(error && error.message);\\n if (matched && matched.length > 1) {\\n return Number(matched[1]);\\n }\\n else {\\n return null;\\n }\\n }\\n enforceBandwidthLimitationForSender(maxBitrateKbps) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.meetingSessionContext.browserBehavior.requiresUnifiedPlan()) {\\n yield this.meetingSessionContext.transceiverController.setVideoSendingBitrateKbps(maxBitrateKbps);\\n }\\n else {\\n yield DefaultTransceiverController_1.default.setVideoSendingBitrateKbpsForSender(this.meetingSessionContext.localVideoSender, maxBitrateKbps, this.meetingSessionContext.logger);\\n }\\n });\\n }\\n handleMeetingSessionStatus(status, error) {\\n this.logger.info(`handling status: ${MeetingSessionStatusCode_1.default[status.statusCode()]}`);\\n if (!status.isTerminal()) {\\n if (this.meetingSessionContext.statsCollector) {\\n this.meetingSessionContext.statsCollector.logMeetingSessionStatus(status);\\n }\\n }\\n if (status.statusCode() === MeetingSessionStatusCode_1.default.IncompatibleSDP) {\\n this.restartLocalVideo(() => {\\n this.logger.info('handled incompatible SDP by attempting to restart video');\\n });\\n return true;\\n }\\n if (status.statusCode() === MeetingSessionStatusCode_1.default.VideoCallSwitchToViewOnly) {\\n this._videoTileController.removeLocalVideoTile();\\n this.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.videoSendDidBecomeUnavailable).map(f => f.bind(observer)());\\n });\\n return false;\\n }\\n if (status.isTerminal()) {\\n this.logger.error('session will not be reconnected');\\n if (this.meetingSessionContext.reconnectController) {\\n this.meetingSessionContext.reconnectController.disableReconnect();\\n }\\n }\\n if (status.isFailure() || status.isTerminal()) {\\n if (this.meetingSessionContext.reconnectController) {\\n const willRetry = this.reconnect(status, error);\\n if (willRetry) {\\n this.logger.warn(`will retry due to status code ${MeetingSessionStatusCode_1.default[status.statusCode()]}${error ? ` and error: ${error.message}` : ``}`);\\n }\\n else {\\n this.logger.error(`failed with status code ${MeetingSessionStatusCode_1.default[status.statusCode()]}${error ? ` and error: ${error.message}` : ``}`);\\n }\\n return willRetry;\\n }\\n }\\n return false;\\n }\\n setVideoMaxBandwidthKbps(maxBandwidthKbps) {\\n if (this.meetingSessionContext && this.meetingSessionContext.videoUplinkBandwidthPolicy) {\\n this.logger.info(`video send has ideal max bandwidth ${maxBandwidthKbps} kbps`);\\n this.meetingSessionContext.videoUplinkBandwidthPolicy.setIdealMaxBandwidthKbps(maxBandwidthKbps);\\n }\\n }\\n handleHasBandwidthPriority(hasBandwidthPriority) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.meetingSessionContext &&\\n this.meetingSessionContext.videoUplinkBandwidthPolicy &&\\n !this.meetingSessionContext.enableSimulcast) {\\n const oldMaxBandwidth = this.meetingSessionContext.videoUplinkBandwidthPolicy.maxBandwidthKbps();\\n this.meetingSessionContext.videoUplinkBandwidthPolicy.setHasBandwidthPriority(hasBandwidthPriority);\\n const newMaxBandwidth = this.meetingSessionContext.videoUplinkBandwidthPolicy.maxBandwidthKbps();\\n if (oldMaxBandwidth !== newMaxBandwidth) {\\n this.logger.info(`video send bandwidth priority ${hasBandwidthPriority} max has changed from ${oldMaxBandwidth} kbps to ${newMaxBandwidth} kbps`);\\n yield this.enforceBandwidthLimitationForSender(newMaxBandwidth);\\n }\\n }\\n });\\n }\\n pauseReceivingStream(streamId) {\\n if (!!this.meetingSessionContext && this.meetingSessionContext.signalingClient) {\\n this.meetingSessionContext.signalingClient.pause([streamId]);\\n }\\n }\\n resumeReceivingStream(streamId) {\\n if (!!this.meetingSessionContext && this.meetingSessionContext.signalingClient) {\\n this.meetingSessionContext.signalingClient.resume([streamId]);\\n }\\n }\\n getRemoteVideoSources() {\\n const { videoStreamIndex } = this.meetingSessionContext;\\n if (!videoStreamIndex) {\\n this.logger.info('meeting has not started');\\n return [];\\n }\\n const selfAttendeeId = this.configuration.credentials.attendeeId;\\n return videoStreamIndex.allVideoSendingSourcesExcludingSelf(selfAttendeeId);\\n }\\n encodingSimulcastLayersDidChange(simulcastLayers) {\\n this.forEachObserver(observer => {\\n Maybe_1.default.of(observer.encodingSimulcastLayersDidChange).map(f => f.bind(observer)(simulcastLayers));\\n });\\n }\\n}\\nexports[\\\"default\\\"] = DefaultAudioVideoController;\\nDefaultAudioVideoController.MIN_VOLUME_DECIBELS = -42;\\nDefaultAudioVideoController.MAX_VOLUME_DECIBELS = -14;\\nDefaultAudioVideoController.PING_PONG_INTERVAL_MS = 10000;\\n//# sourceMappingURL=DefaultAudioVideoController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/DefaultAudioVideoController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/NoOpAudioVideoController.js\":\n/*!*************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/NoOpAudioVideoController.js ***!\n \\*************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst FullJitterBackoff_1 = __webpack_require__(/*! ../backoff/FullJitterBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js\\\");\\nconst NoOpDebugLogger_1 = __webpack_require__(/*! ../logger/NoOpDebugLogger */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/NoOpDebugLogger.js\\\");\\nconst NoOpMediaStreamBroker_1 = __webpack_require__(/*! ../mediastreambroker/NoOpMediaStreamBroker */ \\\"./node_modules/amazon-chime-sdk-js/build/mediastreambroker/NoOpMediaStreamBroker.js\\\");\\nconst MeetingSessionConfiguration_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionConfiguration.js\\\");\\nconst MeetingSessionCredentials_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionCredentials */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionCredentials.js\\\");\\nconst MeetingSessionURLs_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionURLs */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionURLs.js\\\");\\nconst DefaultReconnectController_1 = __webpack_require__(/*! ../reconnectcontroller/DefaultReconnectController */ \\\"./node_modules/amazon-chime-sdk-js/build/reconnectcontroller/DefaultReconnectController.js\\\");\\nconst DefaultWebSocketAdapter_1 = __webpack_require__(/*! ../websocketadapter/DefaultWebSocketAdapter */ \\\"./node_modules/amazon-chime-sdk-js/build/websocketadapter/DefaultWebSocketAdapter.js\\\");\\nconst DefaultAudioVideoController_1 = __webpack_require__(/*! ./DefaultAudioVideoController */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/DefaultAudioVideoController.js\\\");\\nclass NoOpAudioVideoController extends DefaultAudioVideoController_1.default {\\n constructor(configuration) {\\n const emptyConfiguration = new MeetingSessionConfiguration_1.default();\\n emptyConfiguration.meetingId = '';\\n emptyConfiguration.externalMeetingId = '';\\n emptyConfiguration.credentials = new MeetingSessionCredentials_1.default();\\n emptyConfiguration.credentials.attendeeId = '';\\n emptyConfiguration.credentials.joinToken = '';\\n emptyConfiguration.urls = new MeetingSessionURLs_1.default();\\n emptyConfiguration.urls.turnControlURL = '';\\n emptyConfiguration.urls.audioHostURL = '';\\n emptyConfiguration.urls.screenViewingURL = '';\\n emptyConfiguration.urls.screenDataURL = '';\\n emptyConfiguration.urls.screenSharingURL = 'wss://localhost/';\\n emptyConfiguration.urls.signalingURL = 'wss://localhost/';\\n super(configuration ? configuration : emptyConfiguration, new NoOpDebugLogger_1.default(), new DefaultWebSocketAdapter_1.default(new NoOpDebugLogger_1.default()), new NoOpMediaStreamBroker_1.default(), new DefaultReconnectController_1.default(0, new FullJitterBackoff_1.default(0, 0, 0)));\\n }\\n setAudioProfile(_audioProfile) { }\\n start() { }\\n stop() { }\\n}\\nexports[\\\"default\\\"] = NoOpAudioVideoController;\\n//# sourceMappingURL=NoOpAudioVideoController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/NoOpAudioVideoController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/audiovideofacade/DefaultAudioVideoFacade.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/audiovideofacade/DefaultAudioVideoFacade.js ***!\n \\********************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst VideoTransformDevice_1 = __webpack_require__(/*! ../devicecontroller/VideoTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoTransformDevice.js\\\");\\nclass DefaultAudioVideoFacade {\\n constructor(audioVideoController, videoTileController, realtimeController, audioMixController, deviceController, contentShareController) {\\n this.audioVideoController = audioVideoController;\\n this.videoTileController = videoTileController;\\n this.realtimeController = realtimeController;\\n this.audioMixController = audioMixController;\\n this.deviceController = deviceController;\\n this.contentShareController = contentShareController;\\n }\\n addObserver(observer) {\\n this.audioVideoController.addObserver(observer);\\n this.trace('addObserver');\\n }\\n removeObserver(observer) {\\n this.audioVideoController.removeObserver(observer);\\n this.trace('removeObserver');\\n }\\n setAudioProfile(audioProfile) {\\n this.trace('setAudioProfile', audioProfile);\\n this.audioVideoController.setAudioProfile(audioProfile);\\n }\\n start() {\\n this.audioVideoController.start();\\n this.trace('start');\\n }\\n stop() {\\n this.audioVideoController.stop();\\n this.trace('stop');\\n }\\n getRTCPeerConnectionStats(selector) {\\n this.trace('getRTCPeerConnectionStats', selector ? selector.id : null);\\n return this.audioVideoController.getRTCPeerConnectionStats(selector);\\n }\\n bindAudioElement(element) {\\n const result = this.audioMixController.bindAudioElement(element);\\n this.trace('bindAudioElement', element.id, result);\\n return result;\\n }\\n unbindAudioElement() {\\n this.audioMixController.unbindAudioElement();\\n this.trace('unbindAudioElement');\\n }\\n bindVideoElement(tileId, videoElement) {\\n this.videoTileController.bindVideoElement(tileId, videoElement);\\n this.trace('bindVideoElement', { tileId: tileId, videoElementId: videoElement.id });\\n }\\n unbindVideoElement(tileId) {\\n this.videoTileController.unbindVideoElement(tileId);\\n this.trace('unbindVideoElement', tileId);\\n }\\n startLocalVideoTile() {\\n const result = this.videoTileController.startLocalVideoTile();\\n this.trace('startLocalVideoTile', null, result);\\n return result;\\n }\\n stopLocalVideoTile() {\\n this.videoTileController.stopLocalVideoTile();\\n this.trace('stopLocalVideoTile');\\n }\\n hasStartedLocalVideoTile() {\\n const result = this.videoTileController.hasStartedLocalVideoTile();\\n this.trace('hasStartedLocalVideoTile', null, result);\\n return result;\\n }\\n removeLocalVideoTile() {\\n this.videoTileController.removeLocalVideoTile();\\n this.trace('removeLocalVideoTile');\\n }\\n getLocalVideoTile() {\\n const result = this.videoTileController.getLocalVideoTile();\\n this.trace('getLocalVideoTile');\\n return result;\\n }\\n pauseVideoTile(tileId) {\\n this.videoTileController.pauseVideoTile(tileId);\\n this.trace('pauseVideoTile', tileId);\\n }\\n unpauseVideoTile(tileId) {\\n this.videoTileController.unpauseVideoTile(tileId);\\n this.trace('unpauseVideoTile', tileId);\\n }\\n getVideoTile(tileId) {\\n const result = this.videoTileController.getVideoTile(tileId);\\n this.trace('getVideoTile', tileId);\\n return result;\\n }\\n getAllRemoteVideoTiles() {\\n const result = this.videoTileController.getAllRemoteVideoTiles();\\n this.trace('getAllRemoteVideoTiles');\\n return result;\\n }\\n getAllVideoTiles() {\\n const result = this.videoTileController.getAllVideoTiles();\\n this.trace('getAllVideoTiles');\\n return result;\\n }\\n addVideoTile() {\\n const result = this.videoTileController.addVideoTile();\\n this.trace('addVideoTile', null, result.state());\\n return result;\\n }\\n removeVideoTile(tileId) {\\n this.videoTileController.removeVideoTile(tileId);\\n this.trace('removeVideoTile', tileId);\\n }\\n removeVideoTilesByAttendeeId(attendeeId) {\\n const result = this.videoTileController.removeVideoTilesByAttendeeId(attendeeId);\\n this.trace('removeVideoTilesByAttendeeId', attendeeId, result);\\n return result;\\n }\\n removeAllVideoTiles() {\\n this.videoTileController.removeAllVideoTiles();\\n this.trace('removeAllVideoTiles');\\n }\\n captureVideoTile(tileId) {\\n const result = this.videoTileController.captureVideoTile(tileId);\\n this.trace('captureVideoTile', tileId);\\n return result;\\n }\\n realtimeSubscribeToAttendeeIdPresence(callback) {\\n this.realtimeController.realtimeSubscribeToAttendeeIdPresence(callback);\\n this.trace('realtimeSubscribeToAttendeeIdPresence');\\n }\\n realtimeUnsubscribeToAttendeeIdPresence(callback) {\\n this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(callback);\\n this.trace('realtimeUnsubscribeToAttendeeIdPresence');\\n }\\n realtimeSetCanUnmuteLocalAudio(canUnmute) {\\n this.realtimeController.realtimeSetCanUnmuteLocalAudio(canUnmute);\\n this.trace('realtimeSetCanUnmuteLocalAudio', canUnmute);\\n }\\n realtimeSubscribeToSetCanUnmuteLocalAudio(callback) {\\n this.realtimeController.realtimeSubscribeToSetCanUnmuteLocalAudio(callback);\\n this.trace('realtimeSubscribeToSetCanUnmuteLocalAudio');\\n }\\n realtimeUnsubscribeToSetCanUnmuteLocalAudio(callback) {\\n this.realtimeController.realtimeUnsubscribeToSetCanUnmuteLocalAudio(callback);\\n }\\n realtimeCanUnmuteLocalAudio() {\\n const result = this.realtimeController.realtimeCanUnmuteLocalAudio();\\n this.trace('realtimeCanUnmuteLocalAudio', null, result);\\n return result;\\n }\\n realtimeMuteLocalAudio() {\\n this.realtimeController.realtimeMuteLocalAudio();\\n this.trace('realtimeMuteLocalAudio');\\n }\\n realtimeUnmuteLocalAudio() {\\n const result = this.realtimeController.realtimeUnmuteLocalAudio();\\n this.trace('realtimeUnmuteLocalAudio');\\n return result;\\n }\\n realtimeSubscribeToMuteAndUnmuteLocalAudio(callback) {\\n this.realtimeController.realtimeSubscribeToMuteAndUnmuteLocalAudio(callback);\\n this.trace('realtimeSubscribeToMuteAndUnmuteLocalAudio');\\n }\\n realtimeUnsubscribeToMuteAndUnmuteLocalAudio(callback) {\\n this.realtimeController.realtimeUnsubscribeToMuteAndUnmuteLocalAudio(callback);\\n }\\n realtimeIsLocalAudioMuted() {\\n const result = this.realtimeController.realtimeIsLocalAudioMuted();\\n this.trace('realtimeIsLocalAudioMuted');\\n return result;\\n }\\n realtimeSubscribeToVolumeIndicator(attendeeId, callback) {\\n this.realtimeController.realtimeSubscribeToVolumeIndicator(attendeeId, callback);\\n this.trace('realtimeSubscribeToVolumeIndicator', attendeeId);\\n }\\n realtimeUnsubscribeFromVolumeIndicator(attendeeId, callback) {\\n this.realtimeController.realtimeUnsubscribeFromVolumeIndicator(attendeeId, callback);\\n this.trace('realtimeUnsubscribeFromVolumeIndicator', attendeeId, callback);\\n }\\n realtimeSubscribeToLocalSignalStrengthChange(callback) {\\n this.realtimeController.realtimeSubscribeToLocalSignalStrengthChange(callback);\\n this.trace('realtimeSubscribeToLocalSignalStrengthChange');\\n }\\n realtimeUnsubscribeToLocalSignalStrengthChange(callback) {\\n this.realtimeController.realtimeUnsubscribeToLocalSignalStrengthChange(callback);\\n this.trace('realtimeUnsubscribeToLocalSignalStrengthChange');\\n }\\n realtimeSendDataMessage(topic, // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n data, lifetimeMs) {\\n this.realtimeController.realtimeSendDataMessage(topic, data, lifetimeMs);\\n this.trace('realtimeSendDataMessage');\\n }\\n realtimeSubscribeToReceiveDataMessage(topic, callback) {\\n this.realtimeController.realtimeSubscribeToReceiveDataMessage(topic, callback);\\n this.trace('realtimeSubscribeToReceiveDataMessage');\\n }\\n realtimeUnsubscribeFromReceiveDataMessage(topic) {\\n this.realtimeController.realtimeUnsubscribeFromReceiveDataMessage(topic);\\n this.trace('realtimeUnsubscribeFromReceiveDataMessage');\\n }\\n realtimeSubscribeToFatalError(callback) {\\n this.realtimeController.realtimeSubscribeToFatalError(callback);\\n }\\n realtimeUnsubscribeToFatalError(callback) {\\n this.realtimeController.realtimeUnsubscribeToFatalError(callback);\\n }\\n subscribeToActiveSpeakerDetector(policy, callback, scoresCallback, scoresCallbackIntervalMs) {\\n this.audioVideoController.activeSpeakerDetector.subscribe(policy, callback, scoresCallback, scoresCallbackIntervalMs);\\n this.trace('subscribeToActiveSpeakerDetector');\\n }\\n unsubscribeFromActiveSpeakerDetector(callback) {\\n this.audioVideoController.activeSpeakerDetector.unsubscribe(callback);\\n this.trace('unsubscribeFromActiveSpeakerDetector');\\n }\\n listAudioInputDevices() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const result = yield this.deviceController.listAudioInputDevices();\\n this.trace('listAudioInputDevices', null, result);\\n return result;\\n });\\n }\\n listVideoInputDevices() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const result = yield this.deviceController.listVideoInputDevices();\\n this.trace('listVideoInputDevices', null, result);\\n return result;\\n });\\n }\\n listAudioOutputDevices() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const result = yield this.deviceController.listAudioOutputDevices();\\n this.trace('listAudioOutputDevices', null, result);\\n return result;\\n });\\n }\\n chooseAudioInputDevice(device) {\\n this.trace('chooseAudioInputDevice', device);\\n return this.deviceController.chooseAudioInputDevice(device);\\n }\\n chooseVideoInputDevice(device) {\\n if (VideoTransformDevice_1.isVideoTransformDevice(device)) {\\n // Don't stringify the device to avoid failures when cyclic object references are present.\\n this.trace('chooseVideoInputDevice with transform device');\\n }\\n else {\\n this.trace('chooseVideoInputDevice', device);\\n }\\n return this.deviceController.chooseVideoInputDevice(device);\\n }\\n chooseAudioOutputDevice(deviceId) {\\n const result = this.deviceController.chooseAudioOutputDevice(deviceId);\\n this.trace('chooseAudioOutputDevice', deviceId);\\n return result;\\n }\\n addDeviceChangeObserver(observer) {\\n this.deviceController.addDeviceChangeObserver(observer);\\n this.trace('addDeviceChangeObserver');\\n }\\n removeDeviceChangeObserver(observer) {\\n this.deviceController.removeDeviceChangeObserver(observer);\\n this.trace('removeDeviceChangeObserver');\\n }\\n createAnalyserNodeForAudioInput() {\\n const result = this.deviceController.createAnalyserNodeForAudioInput();\\n this.trace('createAnalyserNodeForAudioInput');\\n return result;\\n }\\n startVideoPreviewForVideoInput(element) {\\n this.deviceController.startVideoPreviewForVideoInput(element);\\n this.trace('startVideoPreviewForVideoInput', element.id);\\n }\\n stopVideoPreviewForVideoInput(element) {\\n this.deviceController.stopVideoPreviewForVideoInput(element);\\n this.trace('stopVideoPreviewForVideoInput', element.id);\\n }\\n setDeviceLabelTrigger(trigger) {\\n this.deviceController.setDeviceLabelTrigger(trigger);\\n this.trace('setDeviceLabelTrigger');\\n }\\n mixIntoAudioInput(stream) {\\n const result = this.deviceController.mixIntoAudioInput(stream);\\n this.trace('mixIntoAudioInput', stream.id);\\n return result;\\n }\\n chooseVideoInputQuality(width, height, frameRate, maxBandwidthKbps) {\\n this.deviceController.chooseVideoInputQuality(width, height, frameRate, maxBandwidthKbps);\\n this.trace('chooseVideoInputQuality', {\\n width: width,\\n height: height,\\n frameRate: frameRate,\\n maxBandwidthKbps: maxBandwidthKbps,\\n });\\n }\\n getVideoInputQualitySettings() {\\n const result = this.deviceController.getVideoInputQualitySettings();\\n this.trace('getVideoInputQualitySettings');\\n return result;\\n }\\n setContentAudioProfile(audioProfile) {\\n this.trace('setContentAudioProfile', audioProfile);\\n this.contentShareController.setContentAudioProfile(audioProfile);\\n }\\n startContentShare(stream) {\\n const result = this.contentShareController.startContentShare(stream);\\n this.trace('startContentShare');\\n return result;\\n }\\n startContentShareFromScreenCapture(sourceId, frameRate) {\\n const result = this.contentShareController.startContentShareFromScreenCapture(sourceId, frameRate);\\n this.trace('startContentShareFromScreenCapture');\\n return result;\\n }\\n pauseContentShare() {\\n this.contentShareController.pauseContentShare();\\n this.trace('pauseContentShare');\\n }\\n unpauseContentShare() {\\n this.contentShareController.unpauseContentShare();\\n this.trace('unpauseContentShare');\\n }\\n stopContentShare() {\\n this.contentShareController.stopContentShare();\\n this.trace('stopContentShare');\\n }\\n addContentShareObserver(observer) {\\n this.contentShareController.addContentShareObserver(observer);\\n this.trace('addContentShareObserver');\\n }\\n removeContentShareObserver(observer) {\\n this.contentShareController.removeContentShareObserver(observer);\\n this.trace('removeContentShareObserver');\\n }\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n trace(name, input, output) {\\n const meetingId = this.audioVideoController.configuration.meetingId;\\n const attendeeId = this.audioVideoController.configuration.credentials.attendeeId;\\n let s = `API/DefaultAudioVideoFacade/${meetingId}/${attendeeId}/${name}`;\\n if (typeof input !== 'undefined') {\\n s += ` ${JSON.stringify(input)}`;\\n }\\n if (typeof output !== 'undefined') {\\n s += ` -> ${JSON.stringify(output)}`;\\n }\\n this.audioVideoController.logger.info(s);\\n }\\n getRemoteVideoSources() {\\n const result = this.audioVideoController.getRemoteVideoSources();\\n this.trace('getRemoteVideoSources', null, result);\\n return result;\\n }\\n}\\nexports[\\\"default\\\"] = DefaultAudioVideoFacade;\\n//# sourceMappingURL=DefaultAudioVideoFacade.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/audiovideofacade/DefaultAudioVideoFacade.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js\":\n/*!*****************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js ***!\n \\*****************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * Implements the [Full Jitter algorithm](\\n * https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/)\\n * and also allows for specifying a fixed wait added to the full jitter backoff\\n * (which can be zero).\\n */\\nclass FullJitterBackoff {\\n constructor(fixedWaitMs, shortBackoffMs, longBackoffMs) {\\n this.fixedWaitMs = fixedWaitMs;\\n this.shortBackoffMs = shortBackoffMs;\\n this.longBackoffMs = longBackoffMs;\\n this.currentRetry = 0;\\n if (this.fixedWaitMs < 0) {\\n this.fixedWaitMs = 0;\\n }\\n if (this.shortBackoffMs < 0) {\\n this.shortBackoffMs = 0;\\n }\\n if (this.longBackoffMs < 0) {\\n this.longBackoffMs = 0;\\n }\\n this.reset();\\n }\\n reset() {\\n this.currentRetry = 0;\\n }\\n nextBackoffAmountMs() {\\n const fullJitterMs = Math.random() *\\n Math.min(this.longBackoffMs, this.shortBackoffMs * Math.pow(2.0, this.currentRetry)) +\\n this.fixedWaitMs;\\n this.currentRetry += 1;\\n return fullJitterMs;\\n }\\n}\\nexports[\\\"default\\\"] = FullJitterBackoff;\\n//# sourceMappingURL=FullJitterBackoff.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoffFactory.js\":\n/*!************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoffFactory.js ***!\n \\************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst FullJitterBackoff_1 = __webpack_require__(/*! ./FullJitterBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js\\\");\\nconst FullJitterLimitedBackoff_1 = __webpack_require__(/*! ./FullJitterLimitedBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterLimitedBackoff.js\\\");\\nclass FullJitterBackoffFactory {\\n constructor(fixedWaitMs, shortBackoffMs, longBackoffMs) {\\n this.fixedWaitMs = fixedWaitMs;\\n this.shortBackoffMs = shortBackoffMs;\\n this.longBackoffMs = longBackoffMs;\\n }\\n create() {\\n return new FullJitterBackoff_1.default(this.fixedWaitMs, this.shortBackoffMs, this.longBackoffMs);\\n }\\n createWithLimit(limit) {\\n return new FullJitterLimitedBackoff_1.default(this.fixedWaitMs, this.shortBackoffMs, this.longBackoffMs, limit);\\n }\\n}\\nexports[\\\"default\\\"] = FullJitterBackoffFactory;\\n//# sourceMappingURL=FullJitterBackoffFactory.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoffFactory.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterLimitedBackoff.js\":\n/*!************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterLimitedBackoff.js ***!\n \\************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst FullJitterBackoff_1 = __webpack_require__(/*! ./FullJitterBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js\\\");\\nclass FullJitterLimitedBackoff extends FullJitterBackoff_1.default {\\n constructor(fixedWaitMs, shortBackoffMs, longBackoffMs, limit) {\\n super(fixedWaitMs, shortBackoffMs, longBackoffMs);\\n this.limit = limit;\\n this.attempts = 0;\\n }\\n nextBackoffAmountMs() {\\n this.attempts++;\\n if (this.attempts > this.limit) {\\n throw new Error('retry limit exceeded');\\n }\\n return super.nextBackoffAmountMs();\\n }\\n}\\nexports[\\\"default\\\"] = FullJitterLimitedBackoff;\\n//# sourceMappingURL=FullJitterLimitedBackoff.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterLimitedBackoff.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\":\n/*!******************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js ***!\n \\******************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst detect_browser_1 = __webpack_require__(/*! detect-browser */ \\\"./node_modules/detect-browser/es/index.js\\\");\\nclass DefaultBrowserBehavior {\\n constructor({ enableUnifiedPlanForChromiumBasedBrowsers = false, } = {}) {\\n this.browser = detect_browser_1.detect();\\n this.browserSupport = {\\n chrome: 78,\\n 'edge-chromium': 79,\\n electron: 7,\\n firefox: 60,\\n ios: 12,\\n safari: 12,\\n opera: 66,\\n samsung: 12,\\n crios: 86,\\n fxios: 23,\\n };\\n this.browserName = {\\n chrome: 'Google Chrome',\\n 'edge-chromium': 'Microsoft Edge',\\n electron: 'Electron',\\n firefox: 'Mozilla Firefox',\\n ios: 'Safari iOS',\\n safari: 'Safari',\\n opera: 'Opera',\\n samsung: 'Samsung Internet',\\n crios: 'Chrome iOS',\\n fxios: 'Firefox iOS',\\n };\\n this.chromeLike = [\\n 'chrome',\\n 'edge-chromium',\\n 'chromium-webview',\\n 'opera',\\n 'samsung',\\n ];\\n this.webkitBrowsers = ['crios', 'fxios', 'safari', 'ios'];\\n this.enableUnifiedPlanForChromiumBasedBrowsers = enableUnifiedPlanForChromiumBasedBrowsers;\\n }\\n version() {\\n return this.browser.version;\\n }\\n majorVersion() {\\n return parseInt(this.version().split('.')[0]);\\n }\\n name() {\\n return this.browser.name;\\n }\\n hasChromiumWebRTC() {\\n for (const browser of this.chromeLike) {\\n if (browser === this.browser.name) {\\n return true;\\n }\\n }\\n return false;\\n }\\n hasWebKitWebRTC() {\\n for (const browser of this.webkitBrowsers) {\\n if (browser === this.browser.name) {\\n return true;\\n }\\n }\\n return false;\\n }\\n hasFirefoxWebRTC() {\\n return this.isFirefox();\\n }\\n supportsCanvasCapturedStreamPlayback() {\\n return !this.isIOSSafari() && !this.isIOSChrome() && !this.isIOSFirefox();\\n }\\n requiresUnifiedPlan() {\\n let shouldEnable = this.isFirefox() || (this.hasWebKitWebRTC() && this.isUnifiedPlanSupported());\\n if (this.enableUnifiedPlanForChromiumBasedBrowsers) {\\n shouldEnable = shouldEnable || this.hasChromiumWebRTC();\\n }\\n return shouldEnable;\\n }\\n requiresResolutionAlignment(width, height) {\\n if (this.isAndroid() && this.isPixel3()) {\\n return [Math.ceil(width / 64) * 64, Math.ceil(height / 64) * 64];\\n }\\n return [width, height];\\n }\\n requiresCheckForSdpConnectionAttributes() {\\n return !this.isIOSSafari() && !this.isIOSChrome() && !this.isIOSFirefox();\\n }\\n requiresIceCandidateGatheringTimeoutWorkaround() {\\n return this.hasChromiumWebRTC();\\n }\\n requiresUnifiedPlanMunging() {\\n let shouldRequire = this.hasWebKitWebRTC() && this.isUnifiedPlanSupported();\\n if (this.enableUnifiedPlanForChromiumBasedBrowsers) {\\n shouldRequire = shouldRequire || this.hasChromiumWebRTC();\\n }\\n return shouldRequire;\\n }\\n requiresSortCodecPreferencesForSdpAnswer() {\\n return this.isFirefox() && this.majorVersion() <= 68;\\n }\\n requiresSimulcastMunging() {\\n return this.isSafari();\\n }\\n requiresBundlePolicy() {\\n return 'max-bundle';\\n }\\n requiresPromiseBasedWebRTCGetStats() {\\n return !this.hasChromiumWebRTC();\\n }\\n requiresVideoElementWorkaround() {\\n return this.isSafari();\\n }\\n requiresNoExactMediaStreamConstraints() {\\n return (this.isSamsungInternet() ||\\n (this.isIOSSafari() && (this.version() === '12.0.0' || this.version() === '12.1.0')));\\n }\\n requiresGroupIdMediaStreamConstraints() {\\n return this.isSamsungInternet();\\n }\\n requiresContextRecreationForAudioWorklet() {\\n // Definitely not Chrome; no worries.\\n if (!('chrome' in __webpack_require__.g)) {\\n return false;\\n }\\n // Everything seems to work fine on platforms other than macOS.\\n if (this.browser.os !== 'Mac OS') {\\n return false;\\n }\\n // Electron or Chromium.\\n if (this.isChrome() || this.isEdge()) {\\n return true;\\n }\\n // All other browsers are fine.\\n return false;\\n }\\n getDisplayMediaAudioCaptureSupport() {\\n return this.isChrome() || this.isEdge();\\n }\\n supportsSenderSideBandwidthEstimation() {\\n return this.hasChromiumWebRTC() || this.isSafari();\\n }\\n // TODO: Deprecated, needs to be removed\\n screenShareUnsupported() {\\n console.warn('This function is no longer supported.');\\n if (this.isSafari()) {\\n return true;\\n }\\n return false;\\n }\\n isSupported() {\\n if (!this.browserSupport[this.browser.name] ||\\n this.majorVersion() < this.browserSupport[this.browser.name]) {\\n return false;\\n }\\n if (this.browser.name === 'firefox' && this.isAndroid()) {\\n return false;\\n }\\n return true;\\n }\\n supportString() {\\n if (this.isAndroid()) {\\n return `${this.browserName['chrome']} ${this.browserSupport['chrome']}+, ${this.browserName['samsung']} ${this.browserSupport['samsung']}+`;\\n }\\n const s = [];\\n for (const k in this.browserSupport) {\\n s.push(`${this.browserName[k]} ${this.browserSupport[k]}+`);\\n }\\n return s.join(', ');\\n }\\n supportedVideoCodecs() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const pc = new RTCPeerConnection();\\n pc.addTransceiver('video', { direction: 'inactive', streams: [] });\\n return (yield pc.createOffer({ offerToReceiveVideo: true })).sdp\\n .split('\\\\r\\\\n')\\n .filter(x => {\\n return x.includes('a=rtpmap:');\\n })\\n .map(x => {\\n return x.replace(/.* /, '').replace(/\\\\/.*/, '');\\n })\\n .filter((v, i, a) => {\\n return a.indexOf(v) === i;\\n })\\n .filter(x => {\\n return x !== 'rtx' && x !== 'red' && x !== 'ulpfec';\\n });\\n });\\n }\\n supportsSetSinkId() {\\n return 'setSinkId' in HTMLAudioElement.prototype;\\n }\\n // These helpers should be kept private to encourage\\n // feature detection instead of browser detection.\\n isIOSSafari() {\\n return this.browser.name === 'ios';\\n }\\n isSafari() {\\n return this.browser.name === 'safari' || this.browser.name === 'ios';\\n }\\n isFirefox() {\\n return this.browser.name === 'firefox';\\n }\\n isIOSFirefox() {\\n return this.browser.name === 'fxios';\\n }\\n isIOSChrome() {\\n return this.browser.name === 'crios';\\n }\\n isChrome() {\\n return this.browser.name === 'chrome';\\n }\\n isEdge() {\\n return this.browser.name === 'edge-chromium';\\n }\\n isSamsungInternet() {\\n return this.browser.name === 'samsung';\\n }\\n isAndroid() {\\n return /(android)/i.test(navigator.userAgent);\\n }\\n isPixel3() {\\n return /( pixel 3)/i.test(navigator.userAgent);\\n }\\n isUnifiedPlanSupported() {\\n return RTCRtpTransceiver.prototype.hasOwnProperty('currentDirection');\\n }\\n}\\nexports[\\\"default\\\"] = DefaultBrowserBehavior;\\n//# sourceMappingURL=DefaultBrowserBehavior.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportDirection.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportDirection.js ***!\n \\**************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.ClientMetricReportDirection = void 0;\\nvar ClientMetricReportDirection;\\n(function (ClientMetricReportDirection) {\\n ClientMetricReportDirection[ClientMetricReportDirection[\\\"UPSTREAM\\\"] = 0] = \\\"UPSTREAM\\\";\\n ClientMetricReportDirection[ClientMetricReportDirection[\\\"DOWNSTREAM\\\"] = 1] = \\\"DOWNSTREAM\\\";\\n})(ClientMetricReportDirection = exports.ClientMetricReportDirection || (exports.ClientMetricReportDirection = {}));\\nexports[\\\"default\\\"] = ClientMetricReportDirection;\\n//# sourceMappingURL=ClientMetricReportDirection.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportDirection.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportMediaType.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportMediaType.js ***!\n \\**************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.ClientMetricReportMediaType = void 0;\\nvar ClientMetricReportMediaType;\\n(function (ClientMetricReportMediaType) {\\n ClientMetricReportMediaType[ClientMetricReportMediaType[\\\"AUDIO\\\"] = 0] = \\\"AUDIO\\\";\\n ClientMetricReportMediaType[ClientMetricReportMediaType[\\\"VIDEO\\\"] = 1] = \\\"VIDEO\\\";\\n})(ClientMetricReportMediaType = exports.ClientMetricReportMediaType || (exports.ClientMetricReportMediaType = {}));\\nexports[\\\"default\\\"] = ClientMetricReportMediaType;\\n//# sourceMappingURL=ClientMetricReportMediaType.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportMediaType.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientVideoStreamReceivingReport.js\":\n/*!*******************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientVideoStreamReceivingReport.js ***!\n \\*******************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass ClientVideoStreamReceivingReport {\\n}\\nexports[\\\"default\\\"] = ClientVideoStreamReceivingReport;\\n//# sourceMappingURL=ClientVideoStreamReceivingReport.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientVideoStreamReceivingReport.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/DefaultClientMetricReport.js\":\n/*!************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/clientmetricreport/DefaultClientMetricReport.js ***!\n \\************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst ClientMetricReportDirection_1 = __webpack_require__(/*! ./ClientMetricReportDirection */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportDirection.js\\\");\\nconst ClientMetricReportMediaType_1 = __webpack_require__(/*! ./ClientMetricReportMediaType */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportMediaType.js\\\");\\nconst GlobalMetricReport_1 = __webpack_require__(/*! ./GlobalMetricReport */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/GlobalMetricReport.js\\\");\\nclass DefaultClientMetricReport {\\n constructor(logger) {\\n this.logger = logger;\\n this.globalMetricReport = new GlobalMetricReport_1.default();\\n this.streamMetricReports = {};\\n this.currentTimestampMs = 0;\\n this.previousTimestampMs = 0;\\n this.currentSsrcs = {};\\n /**\\n * Metric transform functions\\n */\\n this.identityValue = (metricName, ssrc) => {\\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\\n return Number(metricReport.currentMetrics[metricName]);\\n };\\n this.decoderLossPercent = (metricName, ssrc) => {\\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\\n const decoderNormal = metricReport.currentMetrics['googDecodingNormal'] -\\n (metricReport.previousMetrics['googDecodingNormal'] || 0);\\n const decoderCalls = metricReport.currentMetrics['googDecodingCTN'] -\\n (metricReport.previousMetrics['googDecodingCTN'] || 0);\\n if (decoderCalls <= 0) {\\n return 0;\\n }\\n const decoderAbnormal = decoderCalls - decoderNormal;\\n if (decoderAbnormal <= 0) {\\n return 0;\\n }\\n return (decoderAbnormal * 100) / decoderCalls;\\n };\\n this.packetLossPercent = (sourceMetricName, ssrc) => {\\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\\n const sentOrReceived = metricReport.currentMetrics[sourceMetricName] -\\n (metricReport.previousMetrics[sourceMetricName] || 0);\\n const lost = metricReport.currentMetrics['packetsLost'] -\\n (metricReport.previousMetrics['packetsLost'] || 0);\\n const total = sentOrReceived + lost;\\n if (total <= 0 || lost <= 0) {\\n return 0;\\n }\\n return (lost * 100) / total;\\n };\\n this.countPerSecond = (metricName, ssrc) => {\\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\\n let intervalSeconds = (this.currentTimestampMs - this.previousTimestampMs) / 1000;\\n if (intervalSeconds <= 0) {\\n return 0;\\n }\\n if (this.previousTimestampMs <= 0) {\\n intervalSeconds = 1;\\n }\\n const diff = metricReport.currentMetrics[metricName] - (metricReport.previousMetrics[metricName] || 0);\\n if (diff <= 0) {\\n return 0;\\n }\\n return Math.trunc(diff / intervalSeconds);\\n };\\n this.bitsPerSecond = (metricName, ssrc) => {\\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\\n let intervalSeconds = (this.currentTimestampMs - this.previousTimestampMs) / 1000;\\n if (intervalSeconds <= 0) {\\n return 0;\\n }\\n if (this.previousTimestampMs <= 0) {\\n intervalSeconds = 1;\\n }\\n const diff = (metricReport.currentMetrics[metricName] - (metricReport.previousMetrics[metricName] || 0)) *\\n 8;\\n if (diff <= 0) {\\n return 0;\\n }\\n return Math.trunc(diff / intervalSeconds);\\n };\\n this.secondsToMilliseconds = (metricName, ssrc) => {\\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\\n return Number(metricReport.currentMetrics[metricName] * 1000);\\n };\\n /**\\n * Canonical and derived metric maps\\n */\\n this.globalMetricMap = {\\n googActualEncBitrate: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_ACTUAL_ENCODER_BITRATE,\\n },\\n googAvailableSendBandwidth: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_AVAILABLE_SEND_BANDWIDTH,\\n },\\n googRetransmitBitrate: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RETRANSMIT_BITRATE,\\n },\\n googAvailableReceiveBandwidth: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_AVAILABLE_RECEIVE_BANDWIDTH,\\n },\\n googTargetEncBitrate: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_TARGET_ENCODER_BITRATE,\\n },\\n googBucketDelay: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_BUCKET_DELAY_MS },\\n googRtt: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.STUN_RTT_MS },\\n packetsDiscardedOnSend: {\\n transform: this.countPerSecond,\\n type: SignalingProtocol_js_1.SdkMetric.Type.SOCKET_DISCARDED_PPS,\\n },\\n availableIncomingBitrate: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_AVAILABLE_RECEIVE_BANDWIDTH,\\n },\\n availableOutgoingBitrate: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_AVAILABLE_SEND_BANDWIDTH,\\n },\\n currentRoundTripTime: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.STUN_RTT_MS },\\n };\\n this.audioUpstreamMetricMap = {\\n googJitterReceived: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_JITTER_MS },\\n jitter: { transform: this.secondsToMilliseconds, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_JITTER_MS },\\n packetsSent: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_PPS },\\n bytesSent: { transform: this.bitsPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_BITRATE },\\n googRtt: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_RTT_MS },\\n packetsLost: {\\n transform: this.packetLossPercent,\\n type: SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_FRACTION_PACKET_LOST_PERCENT,\\n source: 'packetsSent',\\n },\\n };\\n this.audioDownstreamMetricMap = {\\n packetsReceived: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_PPS },\\n packetsLost: {\\n transform: this.packetLossPercent,\\n type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_FRACTION_PACKET_LOST_PERCENT,\\n source: 'packetsReceived',\\n },\\n googJitterReceived: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_JITTER_MS },\\n jitter: { transform: this.secondsToMilliseconds, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_JITTER_MS },\\n googDecodingCTN: { transform: this.countPerSecond },\\n googDecodingNormal: {\\n transform: this.decoderLossPercent,\\n type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_FRACTION_DECODER_LOSS_PERCENT,\\n source: 'googDecodingCTN',\\n },\\n bytesReceived: { transform: this.bitsPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_BITRATE },\\n googCurrentDelayMs: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_CURRENT_DELAY_MS,\\n },\\n googJitterBufferMs: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_JITTER_BUFFER_MS,\\n },\\n };\\n this.videoUpstreamMetricMap = {\\n googRtt: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_RTT_MS },\\n googEncodeUsagePercent: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_ENCODE_USAGE_PERCENT,\\n },\\n googNacksReceived: {\\n transform: this.countPerSecond,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_NACKS_RECEIVED,\\n },\\n nackCount: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_NACKS_RECEIVED },\\n googPlisReceived: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_PLIS_RECEIVED },\\n pliCount: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_PLIS_RECEIVED },\\n googFirsReceived: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_FIRS_RECEIVED },\\n firCount: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_FIRS_RECEIVED },\\n googAvgEncodeMs: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_AVERAGE_ENCODE_MS,\\n },\\n googFrameRateInput: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_INPUT_FPS },\\n framesEncoded: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_ENCODE_FPS },\\n googFrameRateSent: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_FPS },\\n framerateMean: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_FPS },\\n packetsSent: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_PPS },\\n packetsLost: {\\n transform: this.packetLossPercent,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT,\\n source: 'packetsSent',\\n },\\n bytesSent: { transform: this.bitsPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_BITRATE },\\n droppedFrames: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DROPPED_FPS },\\n qpSum: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_QP_SUM },\\n };\\n this.videoDownstreamMetricMap = {\\n googTargetDelayMs: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_TARGET_DELAY_MS,\\n },\\n googDecodeMs: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DECODE_MS },\\n googFrameRateOutput: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_OUTPUT_FPS },\\n packetsReceived: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_PPS },\\n packetsLost: {\\n transform: this.packetLossPercent,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT,\\n source: 'packetsReceived',\\n },\\n googRenderDelayMs: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RENDER_DELAY_MS,\\n },\\n googFrameRateReceived: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_FPS,\\n },\\n framerateMean: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_FPS },\\n framesDecoded: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DECODE_FPS },\\n googNacksSent: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_NACKS_SENT },\\n nackCount: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_NACKS_SENT },\\n googFirsSent: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_FIRS_SENT },\\n firCount: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_FIRS_SENT },\\n googPlisSent: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_PLIS_SENT },\\n pliCount: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_PLIS_SENT },\\n bytesReceived: { transform: this.bitsPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_BITRATE },\\n googCurrentDelayMs: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_CURRENT_DELAY_MS,\\n },\\n googJitterBufferMs: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_JITTER_BUFFER_MS,\\n },\\n discardedPackets: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DISCARDED_PPS },\\n googJitterReceived: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_JITTER_MS,\\n },\\n jitter: {\\n transform: this.secondsToMilliseconds,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_JITTER_MS,\\n },\\n qpSum: {\\n transform: this.countPerSecond,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_QP_SUM,\\n },\\n };\\n /**\\n * Observable metrics and related APIs\\n */\\n this.observableMetricSpec = {\\n audioPacketsReceived: {\\n source: 'packetsReceived',\\n media: ClientMetricReportMediaType_1.default.AUDIO,\\n dir: ClientMetricReportDirection_1.default.DOWNSTREAM,\\n },\\n audioPacketsReceivedFractionLoss: {\\n source: 'packetsLost',\\n media: ClientMetricReportMediaType_1.default.AUDIO,\\n dir: ClientMetricReportDirection_1.default.DOWNSTREAM,\\n },\\n audioDecoderLoss: {\\n source: 'googDecodingNormal',\\n media: ClientMetricReportMediaType_1.default.AUDIO,\\n dir: ClientMetricReportDirection_1.default.DOWNSTREAM,\\n },\\n videoUpstreamBitrate: { source: 'bytesSent', media: ClientMetricReportMediaType_1.default.VIDEO, dir: ClientMetricReportDirection_1.default.UPSTREAM },\\n videoPacketSentPerSecond: {\\n source: 'packetsSent',\\n media: ClientMetricReportMediaType_1.default.VIDEO,\\n dir: ClientMetricReportDirection_1.default.UPSTREAM,\\n },\\n availableSendBandwidth: { source: 'googAvailableSendBandwidth' },\\n availableReceiveBandwidth: { source: 'googAvailableReceiveBandwidth' },\\n audioSpeakerDelayMs: {\\n source: 'googCurrentDelayMs',\\n media: ClientMetricReportMediaType_1.default.AUDIO,\\n dir: ClientMetricReportDirection_1.default.DOWNSTREAM,\\n },\\n // new getStats() API\\n availableIncomingBitrate: { source: 'availableIncomingBitrate' },\\n availableOutgoingBitrate: { source: 'availableOutgoingBitrate' },\\n nackCountReceivedPerSecond: {\\n source: 'nackCount',\\n media: ClientMetricReportMediaType_1.default.VIDEO,\\n dir: ClientMetricReportDirection_1.default.UPSTREAM,\\n },\\n googNackCountReceivedPerSecond: {\\n source: 'googNacksReceived',\\n media: ClientMetricReportMediaType_1.default.VIDEO,\\n dir: ClientMetricReportDirection_1.default.UPSTREAM,\\n },\\n };\\n }\\n getMetricMap(mediaType, direction) {\\n switch (mediaType) {\\n case ClientMetricReportMediaType_1.default.AUDIO:\\n switch (direction) {\\n case ClientMetricReportDirection_1.default.UPSTREAM:\\n return this.audioUpstreamMetricMap;\\n case ClientMetricReportDirection_1.default.DOWNSTREAM:\\n return this.audioDownstreamMetricMap;\\n }\\n case ClientMetricReportMediaType_1.default.VIDEO:\\n switch (direction) {\\n case ClientMetricReportDirection_1.default.UPSTREAM:\\n return this.videoUpstreamMetricMap;\\n case ClientMetricReportDirection_1.default.DOWNSTREAM:\\n return this.videoDownstreamMetricMap;\\n }\\n default:\\n return this.globalMetricMap;\\n }\\n }\\n getObservableMetricValue(metricName) {\\n const observableMetricSpec = this.observableMetricSpec[metricName];\\n const metricMap = this.getMetricMap(observableMetricSpec.media, observableMetricSpec.dir);\\n const metricSpec = metricMap[observableMetricSpec.source];\\n const transform = metricSpec.transform;\\n const source = metricSpec.source;\\n if (observableMetricSpec.hasOwnProperty('media')) {\\n for (const ssrc in this.streamMetricReports) {\\n const streamMetricReport = this.streamMetricReports[ssrc];\\n if (observableMetricSpec.source in streamMetricReport.currentMetrics &&\\n streamMetricReport.direction === observableMetricSpec.dir &&\\n streamMetricReport.mediaType === observableMetricSpec.media) {\\n return source\\n ? transform(source, Number(ssrc))\\n : transform(observableMetricSpec.source, Number(ssrc));\\n }\\n }\\n }\\n else {\\n return source ? transform(source) : transform(observableMetricSpec.source);\\n }\\n return 0;\\n }\\n getObservableMetrics() {\\n const metric = {};\\n for (const metricName in this.observableMetricSpec) {\\n metric[metricName] = this.getObservableMetricValue(metricName);\\n }\\n return metric;\\n }\\n /**\\n * Utilities\\n */\\n clone() {\\n const cloned = new DefaultClientMetricReport(this.logger);\\n cloned.globalMetricReport = this.globalMetricReport;\\n cloned.streamMetricReports = this.streamMetricReports;\\n cloned.currentTimestampMs = this.currentTimestampMs;\\n cloned.previousTimestampMs = this.previousTimestampMs;\\n return cloned;\\n }\\n print() {\\n const clientMetricReport = {\\n globalMetricReport: this.globalMetricReport,\\n streamMetricReports: this.streamMetricReports,\\n currentTimestampMs: this.currentTimestampMs,\\n previousTimestampMs: this.previousTimestampMs,\\n };\\n this.logger.debug(() => {\\n return `Client Metric Report: ${JSON.stringify(clientMetricReport)}`;\\n });\\n }\\n removeDestroyedSsrcs() {\\n for (const ssrc in this.streamMetricReports) {\\n if (!this.currentSsrcs[ssrc]) {\\n delete this.streamMetricReports[ssrc];\\n }\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultClientMetricReport;\\n//# sourceMappingURL=DefaultClientMetricReport.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/clientmetricreport/DefaultClientMetricReport.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/GlobalMetricReport.js\":\n/*!*****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/clientmetricreport/GlobalMetricReport.js ***!\n \\*****************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass GlobalMetricReport {\\n constructor() {\\n this.previousMetrics = {};\\n this.currentMetrics = {};\\n }\\n}\\nexports[\\\"default\\\"] = GlobalMetricReport;\\n//# sourceMappingURL=GlobalMetricReport.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/clientmetricreport/GlobalMetricReport.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/StreamMetricReport.js\":\n/*!*****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/clientmetricreport/StreamMetricReport.js ***!\n \\*****************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass StreamMetricReport {\\n constructor() {\\n this.previousMetrics = {};\\n this.currentMetrics = {};\\n }\\n}\\nexports[\\\"default\\\"] = StreamMetricReport;\\n//# sourceMappingURL=StreamMetricReport.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/clientmetricreport/StreamMetricReport.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/BaseConnectionHealthPolicy.js\":\n/*!*****************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/BaseConnectionHealthPolicy.js ***!\n \\*****************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass BaseConnectionHealthPolicy {\\n constructor(configuration, data) {\\n this.minHealth = configuration.minHealth;\\n this.maxHealth = configuration.maxHealth;\\n this.currentHealth = configuration.initialHealth;\\n this.currentData = data.clone();\\n }\\n minimumHealth() {\\n return this.minHealth;\\n }\\n maximumHealth() {\\n return this.maxHealth;\\n }\\n health() {\\n return this.maximumHealth();\\n }\\n update(connectionHealthData) {\\n this.currentData = connectionHealthData;\\n }\\n getConnectionHealthData() {\\n return this.currentData.clone();\\n }\\n healthy() {\\n return this.health() > this.minimumHealth();\\n }\\n healthIfChanged() {\\n const newHealth = this.health();\\n if (newHealth !== this.currentHealth) {\\n this.currentHealth = newHealth;\\n return newHealth;\\n }\\n return null;\\n }\\n}\\nexports[\\\"default\\\"] = BaseConnectionHealthPolicy;\\n//# sourceMappingURL=BaseConnectionHealthPolicy.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/BaseConnectionHealthPolicy.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthData.js\":\n/*!***********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthData.js ***!\n \\***********************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass ConnectionHealthData {\\n constructor() {\\n this.connectionStartTimestampMs = 0;\\n this.consecutiveStatsWithNoPackets = 0;\\n this.lastPacketLossInboundTimestampMs = 0;\\n this.lastGoodSignalTimestampMs = 0;\\n this.lastWeakSignalTimestampMs = 0;\\n this.lastNoSignalTimestampMs = 0;\\n this.consecutiveMissedPongs = 0;\\n this.packetsReceivedInLastMinute = [];\\n this.fractionPacketsLostInboundInLastMinute = [];\\n this.audioSpeakerDelayMs = 0;\\n this.connectionStartTimestampMs = Date.now();\\n this.lastGoodSignalTimestampMs = Date.now();\\n }\\n static isTimestampRecent(timestampMs, recentDurationMs) {\\n return Date.now() < timestampMs + recentDurationMs;\\n }\\n setConnectionStartTime() {\\n this.connectionStartTimestampMs = Date.now();\\n this.lastGoodSignalTimestampMs = Date.now();\\n }\\n reset() {\\n this.connectionStartTimestampMs = 0;\\n this.consecutiveStatsWithNoPackets = 0;\\n this.lastPacketLossInboundTimestampMs = 0;\\n this.lastGoodSignalTimestampMs = 0;\\n this.lastWeakSignalTimestampMs = 0;\\n this.lastNoSignalTimestampMs = 0;\\n this.consecutiveMissedPongs = 0;\\n this.packetsReceivedInLastMinute = [];\\n this.fractionPacketsLostInboundInLastMinute = [];\\n this.audioSpeakerDelayMs = 0;\\n this.connectionStartTimestampMs = Date.now();\\n this.lastGoodSignalTimestampMs = Date.now();\\n }\\n isConnectionStartRecent(recentDurationMs) {\\n return ConnectionHealthData.isTimestampRecent(this.connectionStartTimestampMs, recentDurationMs);\\n }\\n isLastPacketLossRecent(recentDurationMs) {\\n return ConnectionHealthData.isTimestampRecent(this.lastPacketLossInboundTimestampMs, recentDurationMs);\\n }\\n isGoodSignalRecent(recentDurationMs) {\\n return ConnectionHealthData.isTimestampRecent(this.lastGoodSignalTimestampMs, recentDurationMs);\\n }\\n isWeakSignalRecent(recentDurationMs) {\\n return ConnectionHealthData.isTimestampRecent(this.lastWeakSignalTimestampMs, recentDurationMs);\\n }\\n isNoSignalRecent(recentDurationMs) {\\n return ConnectionHealthData.isTimestampRecent(this.lastNoSignalTimestampMs, recentDurationMs);\\n }\\n clone() {\\n const cloned = new ConnectionHealthData();\\n cloned.connectionStartTimestampMs = this.connectionStartTimestampMs;\\n cloned.consecutiveStatsWithNoPackets = this.consecutiveStatsWithNoPackets;\\n cloned.lastPacketLossInboundTimestampMs = this.lastPacketLossInboundTimestampMs;\\n cloned.lastGoodSignalTimestampMs = this.lastGoodSignalTimestampMs;\\n cloned.lastWeakSignalTimestampMs = this.lastWeakSignalTimestampMs;\\n cloned.lastNoSignalTimestampMs = this.lastNoSignalTimestampMs;\\n cloned.consecutiveMissedPongs = this.consecutiveMissedPongs;\\n cloned.packetsReceivedInLastMinute = this.packetsReceivedInLastMinute.slice(0);\\n cloned.fractionPacketsLostInboundInLastMinute = this.fractionPacketsLostInboundInLastMinute.slice(0);\\n cloned.audioSpeakerDelayMs = this.audioSpeakerDelayMs;\\n return cloned;\\n }\\n setConsecutiveMissedPongs(pongs) {\\n this.consecutiveMissedPongs = pongs;\\n }\\n setConsecutiveStatsWithNoPackets(stats) {\\n this.consecutiveStatsWithNoPackets = stats;\\n }\\n setLastPacketLossInboundTimestampMs(timeStamp) {\\n this.lastPacketLossInboundTimestampMs = timeStamp;\\n }\\n setLastNoSignalTimestampMs(timeStamp) {\\n this.lastNoSignalTimestampMs = timeStamp;\\n }\\n setLastWeakSignalTimestampMs(timeStamp) {\\n this.lastWeakSignalTimestampMs = timeStamp;\\n }\\n setLastGoodSignalTimestampMs(timeStamp) {\\n this.lastGoodSignalTimestampMs = timeStamp;\\n }\\n setAudioSpeakerDelayMs(delayMs) {\\n this.audioSpeakerDelayMs = delayMs;\\n }\\n}\\nexports[\\\"default\\\"] = ConnectionHealthData;\\n//# sourceMappingURL=ConnectionHealthData.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthData.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthPolicyConfiguration.js\":\n/*!**************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthPolicyConfiguration.js ***!\n \\**************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass ConnectionHealthPolicyConfiguration {\\n constructor() {\\n this.minHealth = 0;\\n this.maxHealth = 1;\\n this.initialHealth = 1;\\n this.connectionUnhealthyThreshold = 25;\\n this.noSignalThresholdTimeMs = 10000;\\n this.connectionWaitTimeMs = 10000;\\n this.zeroBarsNoSignalTimeMs = 5000;\\n this.oneBarWeakSignalTimeMs = 5000;\\n this.twoBarsTimeMs = 5000;\\n this.threeBarsTimeMs = 10000;\\n this.fourBarsTimeMs = 20000;\\n this.fiveBarsTimeMs = 60000;\\n this.cooldownTimeMs = 60000;\\n this.pastSamplesToConsider = 15;\\n this.goodSignalTimeMs = 15000;\\n this.fractionalLoss = 0.5;\\n this.packetsExpected = 50;\\n this.maximumTimesToWarn = 2;\\n this.missedPongsLowerThreshold = 1;\\n this.missedPongsUpperThreshold = 4;\\n this.maximumAudioDelayMs = 60000;\\n this.maximumAudioDelayDataPoints = 10;\\n }\\n}\\nexports[\\\"default\\\"] = ConnectionHealthPolicyConfiguration;\\n//# sourceMappingURL=ConnectionHealthPolicyConfiguration.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthPolicyConfiguration.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ReconnectionHealthPolicy.js\":\n/*!***************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ReconnectionHealthPolicy.js ***!\n \\***************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst BaseConnectionHealthPolicy_1 = __webpack_require__(/*! ./BaseConnectionHealthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/BaseConnectionHealthPolicy.js\\\");\\nclass ReconnectionHealthPolicy extends BaseConnectionHealthPolicy_1.default {\\n constructor(logger, configuration, data) {\\n super(configuration, data);\\n this.logger = logger;\\n this.audioDelayPointsOverMaximum = 0;\\n ReconnectionHealthPolicy.CONNECTION_UNHEALTHY_THRESHOLD =\\n configuration.connectionUnhealthyThreshold;\\n ReconnectionHealthPolicy.CONNECTION_WAIT_TIME_MS = configuration.connectionWaitTimeMs;\\n ReconnectionHealthPolicy.MISSED_PONGS_THRESHOLD = configuration.missedPongsUpperThreshold;\\n ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_MS = configuration.maximumAudioDelayMs;\\n ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_DATA_POINTS =\\n configuration.maximumAudioDelayDataPoints;\\n }\\n health() {\\n const connectionStartedRecently = this.currentData.isConnectionStartRecent(ReconnectionHealthPolicy.CONNECTION_WAIT_TIME_MS);\\n if (connectionStartedRecently) {\\n return 1;\\n }\\n const noPacketsReceivedRecently = this.currentData.consecutiveStatsWithNoPackets >=\\n ReconnectionHealthPolicy.CONNECTION_UNHEALTHY_THRESHOLD;\\n const missedPongsRecently = this.currentData.consecutiveMissedPongs >= ReconnectionHealthPolicy.MISSED_PONGS_THRESHOLD;\\n if (this.currentData.audioSpeakerDelayMs > ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_MS) {\\n this.audioDelayPointsOverMaximum += 1;\\n }\\n else {\\n this.audioDelayPointsOverMaximum = 0;\\n }\\n const hasBadAudioDelay = this.audioDelayPointsOverMaximum > ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_DATA_POINTS;\\n if (hasBadAudioDelay) {\\n this.audioDelayPointsOverMaximum = 0;\\n }\\n const needsReconnect = noPacketsReceivedRecently || missedPongsRecently || hasBadAudioDelay;\\n if (needsReconnect) {\\n this.logger.warn(`reconnection recommended due to: no packets received: ${noPacketsReceivedRecently}, missed pongs: ${missedPongsRecently}, bad audio delay: ${hasBadAudioDelay}`);\\n return 0;\\n }\\n return 1;\\n }\\n}\\nexports[\\\"default\\\"] = ReconnectionHealthPolicy;\\n//# sourceMappingURL=ReconnectionHealthPolicy.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ReconnectionHealthPolicy.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/UnusableAudioWarningConnectionHealthPolicy.js\":\n/*!*********************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/UnusableAudioWarningConnectionHealthPolicy.js ***!\n \\*********************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst BaseConnectionHealthPolicy_1 = __webpack_require__(/*! ./BaseConnectionHealthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/BaseConnectionHealthPolicy.js\\\");\\nclass UnusableAudioWarningConnectionHealthPolicy extends BaseConnectionHealthPolicy_1.default {\\n constructor(configuration, data) {\\n super(configuration, data);\\n this.coolDownTimeMs = configuration.cooldownTimeMs;\\n this.pastSamplesToConsider = configuration.pastSamplesToConsider;\\n this.fractionalLoss = configuration.fractionalLoss;\\n this.packetsExpected = configuration.packetsExpected;\\n this.maximumTimesToWarn = configuration.maximumTimesToWarn;\\n this.lastWarnTimestampMs = 0;\\n this.warnCount = 0;\\n }\\n calculateFractionalLoss() {\\n if (this.currentData.packetsReceivedInLastMinute.length < this.pastSamplesToConsider) {\\n return 0;\\n }\\n const samplesToConsider = this.pastSamplesToConsider;\\n const totalPacketsExpected = samplesToConsider * this.packetsExpected;\\n let totalPacketsReceived = 0;\\n for (let i = 0; i < samplesToConsider; i++) {\\n totalPacketsReceived += this.currentData.packetsReceivedInLastMinute[i];\\n }\\n return Math.min(Math.max(1 - totalPacketsReceived / totalPacketsExpected, 0), 1);\\n }\\n health() {\\n const warnedRecently = Date.now() - this.lastWarnTimestampMs < this.coolDownTimeMs;\\n if (warnedRecently) {\\n return this.currentHealth;\\n }\\n const hasHadHighPacketLoss = this.calculateFractionalLoss() >= this.fractionalLoss;\\n if (hasHadHighPacketLoss) {\\n if (this.currentHealth !== 0) {\\n this.lastWarnTimestampMs = Date.now();\\n this.warnCount++;\\n if (this.warnCount > this.maximumTimesToWarn) {\\n return 1;\\n }\\n }\\n return 0;\\n }\\n return 1;\\n }\\n}\\nexports[\\\"default\\\"] = UnusableAudioWarningConnectionHealthPolicy;\\n//# sourceMappingURL=UnusableAudioWarningConnectionHealthPolicy.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/UnusableAudioWarningConnectionHealthPolicy.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/connectionmonitor/SignalingAndMetricsConnectionMonitor.js\":\n/*!**********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/connectionmonitor/SignalingAndMetricsConnectionMonitor.js ***!\n \\**********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst Maybe_1 = __webpack_require__(/*! ../maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nclass SignalingAndMetricsConnectionMonitor {\\n constructor(audioVideoController, realtimeController, videoTileController, connectionHealthData, pingPong, statsCollector) {\\n this.audioVideoController = audioVideoController;\\n this.realtimeController = realtimeController;\\n this.videoTileController = videoTileController;\\n this.connectionHealthData = connectionHealthData;\\n this.pingPong = pingPong;\\n this.statsCollector = statsCollector;\\n this.isActive = false;\\n this.hasSeenValidPacketMetricsBefore = false;\\n this.lastAvailableSendBandwidthKbps = 0;\\n this.lastAvailableRecvBandwidthKbps = 0;\\n this.realtimeController.realtimeSubscribeToLocalSignalStrengthChange((signalStrength) => {\\n if (this.isActive) {\\n this.receiveSignalStrengthChange(signalStrength);\\n }\\n });\\n }\\n start() {\\n this.isActive = true;\\n this.pingPong.addObserver(this);\\n this.pingPong.start();\\n this.audioVideoController.addObserver(this);\\n }\\n stop() {\\n this.isActive = false;\\n this.pingPong.removeObserver(this);\\n this.pingPong.stop();\\n this.audioVideoController.removeObserver(this);\\n }\\n receiveSignalStrengthChange(signalStrength) {\\n if (signalStrength === 0) {\\n this.connectionHealthData.setLastNoSignalTimestampMs(Date.now());\\n }\\n else if (signalStrength <= 0.5) {\\n this.connectionHealthData.setLastWeakSignalTimestampMs(Date.now());\\n }\\n else {\\n this.connectionHealthData.setLastGoodSignalTimestampMs(Date.now());\\n }\\n this.updateConnectionHealth();\\n }\\n didReceivePong(_id, latencyMs, clockSkewMs) {\\n this.connectionHealthData.setConsecutiveMissedPongs(0);\\n this.statsCollector.logLatency('ping_pong', latencyMs);\\n this.statsCollector.logLatency('ping_pong_clock_skew', clockSkewMs);\\n this.updateConnectionHealth();\\n }\\n didMissPongs() {\\n this.connectionHealthData.setConsecutiveMissedPongs(this.connectionHealthData.consecutiveMissedPongs + 1);\\n this.updateConnectionHealth();\\n }\\n metricsDidReceive(clientMetricReport) {\\n let packetsReceived = 0;\\n let fractionPacketsLostInbound = 0;\\n const metricReport = clientMetricReport.getObservableMetrics();\\n const potentialPacketsReceived = metricReport.audioPacketsReceived;\\n const potentialFractionPacketsLostInbound = metricReport.audioPacketsReceivedFractionLoss;\\n let videoUpstreamBitrateKbps = 0;\\n const videoUpstreamPacketPerSecond = metricReport.videoPacketSentPerSecond;\\n const videoUpstreamBitrate = metricReport.videoUpstreamBitrate;\\n const availableSendBandwidth = metricReport.availableSendBandwidth || metricReport.availableOutgoingBitrate;\\n const availableRecvBandwidth = metricReport.availableReceiveBandwidth || metricReport.availableIncomingBitrate;\\n const audioSpeakerDelayMs = metricReport.audioSpeakerDelayMs;\\n const nackCountPerSecond = metricReport.nackCountReceivedPerSecond || metricReport.googNackCountReceivedPerSecond;\\n // Firefox does not presently have aggregated bandwidth estimation\\n if (typeof availableSendBandwidth === 'number' && !isNaN(availableSendBandwidth)) {\\n this.updateAvailableSendBandwidth(availableSendBandwidth / 1000, nackCountPerSecond);\\n }\\n if (typeof availableRecvBandwidth === 'number' && !isNaN(availableRecvBandwidth)) {\\n this.updateAvailableReceiveBandwidth(availableRecvBandwidth / 1000);\\n }\\n if (typeof videoUpstreamBitrate === 'number' && !isNaN(videoUpstreamBitrate)) {\\n videoUpstreamBitrateKbps = videoUpstreamBitrate / 1000;\\n }\\n if (typeof audioSpeakerDelayMs === 'number' && !isNaN(audioSpeakerDelayMs)) {\\n this.connectionHealthData.setAudioSpeakerDelayMs(audioSpeakerDelayMs);\\n }\\n this.monitorVideoUplinkHealth(videoUpstreamBitrateKbps, videoUpstreamPacketPerSecond);\\n if (typeof potentialPacketsReceived === 'number' &&\\n typeof potentialFractionPacketsLostInbound === 'number') {\\n packetsReceived = potentialPacketsReceived;\\n fractionPacketsLostInbound = potentialFractionPacketsLostInbound;\\n if (packetsReceived < 0 || fractionPacketsLostInbound < 0) {\\n // TODO: getting negative numbers on this metric after reconnect sometimes\\n // For now, just skip the metric if it looks weird.\\n return;\\n }\\n }\\n else {\\n return;\\n }\\n this.addToMinuteWindow(this.connectionHealthData.packetsReceivedInLastMinute, packetsReceived);\\n this.addToMinuteWindow(this.connectionHealthData.fractionPacketsLostInboundInLastMinute, fractionPacketsLostInbound);\\n if (packetsReceived > 0) {\\n this.hasSeenValidPacketMetricsBefore = true;\\n this.connectionHealthData.setConsecutiveStatsWithNoPackets(0);\\n }\\n else if (this.hasSeenValidPacketMetricsBefore) {\\n this.connectionHealthData.setConsecutiveStatsWithNoPackets(this.connectionHealthData.consecutiveStatsWithNoPackets + 1);\\n }\\n if (packetsReceived === 0 || fractionPacketsLostInbound > 0) {\\n this.connectionHealthData.setLastPacketLossInboundTimestampMs(Date.now());\\n }\\n this.updateConnectionHealth();\\n }\\n addToMinuteWindow(array, value) {\\n array.unshift(value);\\n if (array.length > 60) {\\n array.pop();\\n }\\n }\\n updateAvailableSendBandwidth(sendBandwidthKbps, nackCountPerSecond) {\\n if (sendBandwidthKbps !== this.lastAvailableSendBandwidthKbps) {\\n if (this.lastAvailableSendBandwidthKbps === 0) {\\n this.lastAvailableSendBandwidthKbps = sendBandwidthKbps;\\n return;\\n }\\n const prevSendBandwidthKbps = this.lastAvailableSendBandwidthKbps;\\n this.lastAvailableSendBandwidthKbps = sendBandwidthKbps;\\n this.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.videoSendBandwidthDidChange).map(f => f.bind(observer)(sendBandwidthKbps, prevSendBandwidthKbps, nackCountPerSecond));\\n });\\n }\\n }\\n updateAvailableReceiveBandwidth(recvBandwidthKbps) {\\n if (recvBandwidthKbps !== this.lastAvailableRecvBandwidthKbps) {\\n if (this.lastAvailableRecvBandwidthKbps === 0) {\\n this.lastAvailableRecvBandwidthKbps = recvBandwidthKbps;\\n return;\\n }\\n const prevRecvBandwidthKbps = this.lastAvailableRecvBandwidthKbps;\\n this.lastAvailableRecvBandwidthKbps = recvBandwidthKbps;\\n this.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.videoReceiveBandwidthDidChange).map(f => f.bind(observer)(recvBandwidthKbps, prevRecvBandwidthKbps));\\n });\\n }\\n }\\n updateConnectionHealth() {\\n this.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.connectionHealthDidChange).map(f => f.bind(observer)(this.connectionHealthData.clone()));\\n });\\n }\\n monitorVideoUplinkHealth(videoUpstreamBitrateKbps, videoUpstreamPacketsPerSecond) {\\n if (!this.videoTileController.hasStartedLocalVideoTile()) {\\n return;\\n }\\n this.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.videoSendHealthDidChange).map(f => f.bind(observer)(videoUpstreamBitrateKbps, videoUpstreamPacketsPerSecond));\\n });\\n }\\n}\\nexports[\\\"default\\\"] = SignalingAndMetricsConnectionMonitor;\\n//# sourceMappingURL=SignalingAndMetricsConnectionMonitor.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/connectionmonitor/SignalingAndMetricsConnectionMonitor.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareConstants.js\":\n/*!************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareConstants.js ***!\n \\************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nvar ContentShareConstants;\\n(function (ContentShareConstants) {\\n ContentShareConstants[\\\"Modality\\\"] = \\\"#content\\\";\\n})(ContentShareConstants || (ContentShareConstants = {}));\\nexports[\\\"default\\\"] = ContentShareConstants;\\n//# sourceMappingURL=ContentShareConstants.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareConstants.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareMediaStreamBroker.js\":\n/*!********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareMediaStreamBroker.js ***!\n \\********************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst DefaultDeviceController_1 = __webpack_require__(/*! ../devicecontroller/DefaultDeviceController */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/DefaultDeviceController.js\\\");\\nclass ContentShareMediaStreamBroker {\\n constructor(logger) {\\n this.logger = logger;\\n }\\n get mediaStream() {\\n return this._mediaStream;\\n }\\n set mediaStream(mediaStream) {\\n this._mediaStream = mediaStream;\\n }\\n acquireAudioInputStream() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this._mediaStream.getAudioTracks().length === 0) {\\n return DefaultDeviceController_1.default.synthesizeAudioDevice(0);\\n }\\n return this._mediaStream;\\n });\\n }\\n acquireVideoInputStream() {\\n return __awaiter(this, void 0, void 0, function* () {\\n return this._mediaStream;\\n });\\n }\\n releaseMediaStream(_mediaStreamToRelease) {\\n this.logger.warn('release media stream called');\\n return;\\n }\\n acquireDisplayInputStream(streamConstraints) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (streamConstraints &&\\n streamConstraints.video &&\\n // @ts-ignore\\n streamConstraints.video.mandatory &&\\n // @ts-ignore\\n streamConstraints.video.mandatory.chromeMediaSource &&\\n // @ts-ignore\\n streamConstraints.video.mandatory.chromeMediaSourceId) {\\n return navigator.mediaDevices.getUserMedia(streamConstraints);\\n }\\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/31821\\n return navigator.mediaDevices.getDisplayMedia(streamConstraints);\\n });\\n }\\n bindToAudioVideoController(_audioVideoController) {\\n throw new Error('unsupported');\\n }\\n acquireScreenCaptureDisplayInputStream(sourceId, frameRate) {\\n return __awaiter(this, void 0, void 0, function* () {\\n return this.acquireDisplayInputStream(this.screenCaptureDisplayMediaConstraints(sourceId, frameRate));\\n });\\n }\\n screenCaptureDisplayMediaConstraints(sourceId, frameRate) {\\n return {\\n audio: !sourceId && new DefaultBrowserBehavior_1.default().getDisplayMediaAudioCaptureSupport()\\n ? true\\n : false,\\n video: Object.assign(Object.assign({}, (!sourceId && {\\n frameRate: {\\n max: frameRate ? frameRate : ContentShareMediaStreamBroker.defaultFrameRate,\\n },\\n })), (sourceId && {\\n mandatory: {\\n chromeMediaSource: 'desktop',\\n chromeMediaSourceId: sourceId,\\n maxFrameRate: frameRate ? frameRate : ContentShareMediaStreamBroker.defaultFrameRate,\\n },\\n })),\\n };\\n }\\n toggleMediaStream(enable) {\\n let changed = false;\\n if (this.mediaStream) {\\n for (let i = 0; i < this.mediaStream.getTracks().length; i++) {\\n if (this.mediaStream.getTracks()[i].enabled !== enable) {\\n this.mediaStream.getTracks()[i].enabled = enable;\\n changed = true;\\n }\\n }\\n }\\n return changed;\\n }\\n cleanup() {\\n if (this.mediaStream) {\\n for (let i = 0; i < this.mediaStream.getTracks().length; i++) {\\n const track = this.mediaStream.getTracks()[i];\\n track.stop();\\n }\\n }\\n this.mediaStream = null;\\n }\\n}\\nexports[\\\"default\\\"] = ContentShareMediaStreamBroker;\\nContentShareMediaStreamBroker.defaultFrameRate = 15;\\n//# sourceMappingURL=ContentShareMediaStreamBroker.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareMediaStreamBroker.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/DefaultContentShareController.js\":\n/*!********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/DefaultContentShareController.js ***!\n \\********************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst Maybe_1 = __webpack_require__(/*! ../maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nconst MeetingSessionConfiguration_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionConfiguration.js\\\");\\nconst MeetingSessionCredentials_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionCredentials */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionCredentials.js\\\");\\nconst DefaultModality_1 = __webpack_require__(/*! ../modality/DefaultModality */ \\\"./node_modules/amazon-chime-sdk-js/build/modality/DefaultModality.js\\\");\\nconst AsyncScheduler_1 = __webpack_require__(/*! ../scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nconst ContentShareConstants_1 = __webpack_require__(/*! ./ContentShareConstants */ \\\"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareConstants.js\\\");\\nclass DefaultContentShareController {\\n constructor(mediaStreamBroker, contentAudioVideo, attendeeAudioVideo) {\\n this.mediaStreamBroker = mediaStreamBroker;\\n this.contentAudioVideo = contentAudioVideo;\\n this.attendeeAudioVideo = attendeeAudioVideo;\\n this.observerQueue = new Set();\\n this.destroyed = false;\\n this.contentAudioVideo.addObserver(this);\\n this.setupContentShareEvents();\\n }\\n static createContentShareMeetingSessionConfigure(configuration) {\\n const contentShareConfiguration = new MeetingSessionConfiguration_1.default();\\n contentShareConfiguration.meetingId = configuration.meetingId;\\n contentShareConfiguration.externalMeetingId = configuration.externalMeetingId;\\n contentShareConfiguration.urls = configuration.urls;\\n contentShareConfiguration.credentials = new MeetingSessionCredentials_1.default();\\n contentShareConfiguration.credentials.attendeeId =\\n configuration.credentials.attendeeId + ContentShareConstants_1.default.Modality;\\n contentShareConfiguration.credentials.externalUserId = configuration.credentials.externalUserId;\\n contentShareConfiguration.credentials.joinToken =\\n configuration.credentials.joinToken + ContentShareConstants_1.default.Modality;\\n return contentShareConfiguration;\\n }\\n setContentAudioProfile(audioProfile) {\\n this.contentAudioVideo.setAudioProfile(audioProfile);\\n }\\n startContentShare(stream) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!stream) {\\n return;\\n }\\n this.mediaStreamBroker.mediaStream = stream;\\n for (let i = 0; i < this.mediaStreamBroker.mediaStream.getTracks().length; i++) {\\n this.mediaStreamBroker.mediaStream.getTracks()[i].addEventListener('ended', () => {\\n this.stopContentShare();\\n });\\n }\\n this.contentAudioVideo.start();\\n if (this.mediaStreamBroker.mediaStream.getVideoTracks().length > 0) {\\n this.contentAudioVideo.videoTileController.startLocalVideoTile();\\n }\\n });\\n }\\n startContentShareFromScreenCapture(sourceId, frameRate) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const mediaStream = yield this.mediaStreamBroker.acquireScreenCaptureDisplayInputStream(sourceId, frameRate);\\n yield this.startContentShare(mediaStream);\\n return mediaStream;\\n });\\n }\\n pauseContentShare() {\\n if (this.mediaStreamBroker.toggleMediaStream(false)) {\\n this.forEachContentShareObserver(observer => {\\n Maybe_1.default.of(observer.contentShareDidPause).map(f => f.call(observer));\\n });\\n }\\n }\\n unpauseContentShare() {\\n if (this.mediaStreamBroker.toggleMediaStream(true)) {\\n this.forEachContentShareObserver(observer => {\\n Maybe_1.default.of(observer.contentShareDidUnpause).map(f => f.call(observer));\\n });\\n }\\n }\\n destroy() {\\n return __awaiter(this, void 0, void 0, function* () {\\n // Idempotency.\\n /* istanbul ignore if */\\n if (!this.contentAudioVideo) {\\n return;\\n }\\n this.destroyed = true;\\n this.contentAudioVideo.removeObserver(this);\\n this.stopContentShare();\\n this.observerQueue.clear();\\n this.contentAudioVideo = undefined;\\n this.attendeeAudioVideo = undefined;\\n this.mediaStreamBroker = undefined;\\n });\\n }\\n stopContentShare() {\\n this.contentAudioVideo.stop();\\n this.mediaStreamBroker.cleanup();\\n }\\n addContentShareObserver(observer) {\\n this.observerQueue.add(observer);\\n }\\n removeContentShareObserver(observer) {\\n this.observerQueue.delete(observer);\\n }\\n forEachContentShareObserver(observerFunc) {\\n for (const observer of this.observerQueue) {\\n AsyncScheduler_1.default.nextTick(() => {\\n if (this.observerQueue.has(observer)) {\\n observerFunc(observer);\\n }\\n });\\n }\\n }\\n audioVideoDidStop(_sessionStatus) {\\n // If the content attendee got dropped or could not connect, stopContentShare will not be called\\n // so make sure to clean up the media stream.\\n this.mediaStreamBroker.cleanup();\\n if (this.contentShareTile) {\\n this.attendeeAudioVideo.videoTileController.removeVideoTile(this.contentShareTile.id());\\n this.contentShareTile = null;\\n }\\n this.forEachContentShareObserver(observer => {\\n Maybe_1.default.of(observer.contentShareDidStop).map(f => f.call(observer));\\n });\\n }\\n setupContentShareEvents() {\\n // We use realtimeSubscribeToAttendeeIdPresence instead of audioVideoDidStart because audioVideoDidStart fires\\n // before the capacity check in Tincan while when realtimeSubscribeToAttendeeIdPresence fires, we know the\\n // content attendee has been able to pass the capacity check and join the call so we can start the local\\n // content share video\\n this.attendeeAudioVideo.realtimeController.realtimeSubscribeToAttendeeIdPresence((attendeeId, present, _externalUserId, _dropped) => {\\n const isContentAttendee = new DefaultModality_1.default(attendeeId).hasModality(DefaultModality_1.default.MODALITY_CONTENT);\\n const isSelfAttendee = new DefaultModality_1.default(attendeeId).base() ===\\n this.attendeeAudioVideo.configuration.credentials.attendeeId;\\n if (!isContentAttendee || !isSelfAttendee || !present || this.contentShareTile) {\\n return;\\n }\\n const stream = this.mediaStreamBroker.mediaStream;\\n if (stream.getVideoTracks().length > 0) {\\n this.contentShareTile = this.attendeeAudioVideo.videoTileController.addVideoTile();\\n const track = stream.getVideoTracks()[0];\\n let width, height;\\n if (track.getSettings) {\\n const cap = track.getSettings();\\n width = cap.width;\\n height = cap.height;\\n }\\n else {\\n const cap = track.getCapabilities();\\n width = cap.width;\\n height = cap.height;\\n }\\n this.contentShareTile.bindVideoStream(this.contentAudioVideo.configuration.credentials.attendeeId, false, stream, width, height, null, this.contentAudioVideo.configuration.credentials.externalUserId);\\n }\\n this.forEachContentShareObserver(observer => {\\n Maybe_1.default.of(observer.contentShareDidStart).map(f => f.call(observer));\\n });\\n });\\n }\\n}\\nexports[\\\"default\\\"] = DefaultContentShareController;\\n//# sourceMappingURL=DefaultContentShareController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/DefaultContentShareController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/datamessage/DataMessage.js\":\n/*!***************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/datamessage/DataMessage.js ***!\n \\***************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/* eslint @typescript-eslint/no-explicit-any: 0 */\\nclass DataMessage {\\n constructor(timestampMs, topic, data, senderAttendeeId, senderExternalUserId, throttled) {\\n this.timestampMs = timestampMs;\\n this.topic = topic;\\n this.data = data;\\n this.senderAttendeeId = senderAttendeeId;\\n this.senderExternalUserId = senderExternalUserId;\\n this.throttled = !!throttled;\\n }\\n /**\\n * Helper conversion methods to convert Uint8Array data to string\\n */\\n text() {\\n return new TextDecoder().decode(this.data);\\n }\\n /**\\n * Helper conversion methods to convert Uint8Array data to JSON\\n */\\n json() {\\n return JSON.parse(new TextDecoder().decode(this.data));\\n }\\n}\\nexports[\\\"default\\\"] = DataMessage;\\n//# sourceMappingURL=DataMessage.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/datamessage/DataMessage.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/destroyable/Destroyable.js\":\n/*!***************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/destroyable/Destroyable.js ***!\n \\***************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.isDestroyable = void 0;\\n/**\\n * Type guard for `Destroyable`.\\n *\\n * @param x A value that might implement the `Destroyable` interface.\\n * @returns Whether the value implements `Destroyable`.\\n */\\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\\nfunction isDestroyable(x) {\\n return x && 'destroy' in x;\\n}\\nexports.isDestroyable = isDestroyable;\\n//# sourceMappingURL=Destroyable.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/destroyable/Destroyable.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/AudioTransformDevice.js\":\n/*!*****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/AudioTransformDevice.js ***!\n \\*****************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.isAudioTransformDevice = void 0;\\n/**\\n * `isAudioTransformDevice` is a type guard for {@link AudioTransformDevice}.\\n *\\n * @param device the value to check.\\n */\\n// eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\\nfunction isAudioTransformDevice(device) {\\n return (!!device &&\\n typeof device === 'object' &&\\n 'mute' in device &&\\n 'stop' in device &&\\n 'intrinsicDevice' in device);\\n}\\nexports.isAudioTransformDevice = isAudioTransformDevice;\\n//# sourceMappingURL=AudioTransformDevice.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/AudioTransformDevice.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/DefaultDeviceController.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/DefaultDeviceController.js ***!\n \\********************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst Maybe_1 = __webpack_require__(/*! ../maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nconst DefaultMediaDeviceFactory_1 = __webpack_require__(/*! ../mediadevicefactory/DefaultMediaDeviceFactory */ \\\"./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/DefaultMediaDeviceFactory.js\\\");\\nconst AsyncScheduler_1 = __webpack_require__(/*! ../scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nconst IntervalScheduler_1 = __webpack_require__(/*! ../scheduler/IntervalScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js\\\");\\nconst DefaultVideoTile_1 = __webpack_require__(/*! ../videotile/DefaultVideoTile */ \\\"./node_modules/amazon-chime-sdk-js/build/videotile/DefaultVideoTile.js\\\");\\nconst AudioTransformDevice_1 = __webpack_require__(/*! ./AudioTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/AudioTransformDevice.js\\\");\\nconst DeviceSelection_1 = __webpack_require__(/*! ./DeviceSelection */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/DeviceSelection.js\\\");\\nconst GetUserMediaError_1 = __webpack_require__(/*! ./GetUserMediaError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\\\");\\nconst NotFoundError_1 = __webpack_require__(/*! ./NotFoundError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotFoundError.js\\\");\\nconst NotReadableError_1 = __webpack_require__(/*! ./NotReadableError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotReadableError.js\\\");\\nconst OverconstrainedError_1 = __webpack_require__(/*! ./OverconstrainedError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/OverconstrainedError.js\\\");\\nconst PermissionDeniedError_1 = __webpack_require__(/*! ./PermissionDeniedError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/PermissionDeniedError.js\\\");\\nconst TypeError_1 = __webpack_require__(/*! ./TypeError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/TypeError.js\\\");\\nconst VideoQualitySettings_1 = __webpack_require__(/*! ./VideoQualitySettings */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoQualitySettings.js\\\");\\nconst VideoTransformDevice_1 = __webpack_require__(/*! ./VideoTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoTransformDevice.js\\\");\\nfunction fillSMPTEColorBars(canvas, xShift) {\\n const w = canvas.width;\\n const h = canvas.height;\\n const h1 = (h * 2) / 3;\\n const h2 = (h * 3) / 4;\\n const h3 = h;\\n const top = ['#c0c0c0', '#c0c000', '#00c0c0', '#00c000', '#c000c0', '#c00000', '#0000c0'];\\n const middle = ['#0000c0', '#000000', '#c000c0', '#000000', '#00c0c0', '#000000', '#c0c0c0'];\\n const bottom = [\\n '#00214c',\\n '#ffffff',\\n '#32006a',\\n '#131313',\\n '#090909',\\n '#131313',\\n '#1d1d1d',\\n '#131313',\\n ];\\n const bottomX = [\\n w * 0,\\n ((w * 1) / 4) * (5 / 7),\\n ((w * 2) / 4) * (5 / 7),\\n ((w * 3) / 4) * (5 / 7),\\n w * (5 / 7),\\n w * (5 / 7 + 1 / 21),\\n w * (5 / 7 + 2 / 21),\\n w * (6 / 7),\\n w * 1,\\n ];\\n const segmentWidth = w / top.length;\\n const ctx = canvas.getContext('2d');\\n for (let i = 0; i < top.length; i++) {\\n ctx.fillStyle = top[i];\\n ctx.fillRect(xShift + i * segmentWidth, 0, segmentWidth, h1);\\n ctx.fillStyle = middle[i];\\n ctx.fillRect(xShift + i * segmentWidth, h1, segmentWidth, h2 - h1);\\n }\\n for (let i = 0; i < bottom.length; i++) {\\n ctx.fillStyle = bottom[i];\\n ctx.fillRect(xShift + bottomX[i], h2, bottomX[i + 1] - bottomX[i], h3 - h2);\\n }\\n}\\n// This is a top-level function so that its captured environment is as small as possible,\\n// minimizing leaks -- the interval scheduler will cause everything here to be retained\\n// until it is stopped.\\nfunction makeColorBars(canvas, colorOrPattern) {\\n const scheduler = new IntervalScheduler_1.default(1000);\\n const context = canvas.getContext('2d');\\n // @ts-ignore\\n const stream = canvas.captureStream(5) || null;\\n if (!stream) {\\n return undefined;\\n }\\n const onTick = () => {\\n if (colorOrPattern === 'smpte') {\\n fillSMPTEColorBars(canvas, 0);\\n }\\n else {\\n context.fillStyle = colorOrPattern;\\n context.fillRect(0, 0, canvas.width, canvas.height);\\n }\\n };\\n scheduler.start(onTick);\\n const listener = () => {\\n scheduler.stop();\\n };\\n // This event listener will leak unless you remove it.\\n stream.getVideoTracks()[0].addEventListener('ended', listener);\\n return { listener, scheduler, stream };\\n}\\nclass DefaultDeviceController {\\n constructor(logger, options, browserBehavior = new DefaultBrowserBehavior_1.default()) {\\n this.logger = logger;\\n this.browserBehavior = browserBehavior;\\n this.deviceInfoCache = null;\\n this.activeDevices = { audio: null, video: null };\\n // `chosenVideoTransformDevice` is tracked and owned by device controller.\\n // It is saved when `chooseVideoInputDevice` is called with VideoTransformDevice object.\\n this.chosenVideoTransformDevice = null;\\n this.audioOutputDeviceId = null;\\n this.deviceChangeObservers = new Set();\\n this.deviceLabelTrigger = () => {\\n return navigator.mediaDevices.getUserMedia({ audio: true, video: true });\\n };\\n this.audioInputDestinationNode = null;\\n this.audioInputSourceNode = null;\\n this.videoInputQualitySettings = null;\\n this.useWebAudio = false;\\n this.inputDeviceCount = 0;\\n this.alreadyHandlingDeviceChange = false;\\n const { enableWebAudio = false } = options || {};\\n this.useWebAudio = enableWebAudio;\\n this.muteCallback = (muted) => {\\n var _a;\\n (_a = this.transform) === null || _a === void 0 ? void 0 : _a.device.mute(muted);\\n };\\n this.videoInputQualitySettings = new VideoQualitySettings_1.default(DefaultDeviceController.defaultVideoWidth, DefaultDeviceController.defaultVideoHeight, DefaultDeviceController.defaultVideoFrameRate, DefaultDeviceController.defaultVideoMaxBandwidthKbps);\\n const dimension = this.browserBehavior.requiresResolutionAlignment(this.videoInputQualitySettings.videoWidth, this.videoInputQualitySettings.videoHeight);\\n this.videoInputQualitySettings.videoWidth = dimension[0];\\n this.videoInputQualitySettings.videoHeight = dimension[1];\\n this.logger.info(`DefaultDeviceController video dimension ${this.videoInputQualitySettings.videoWidth} x ${this.videoInputQualitySettings.videoHeight}`);\\n try {\\n this.mediaDeviceWrapper = new DefaultMediaDeviceFactory_1.default().create();\\n const supportedConstraints = navigator.mediaDevices.getSupportedConstraints();\\n this.logger.info(`Supported Constraints in this browser ${JSON.stringify(supportedConstraints)}`);\\n }\\n catch (error) {\\n logger.error(error.message);\\n }\\n }\\n isWatchingForDeviceChanges() {\\n return !!this.onDeviceChangeCallback;\\n }\\n ensureWatchingDeviceChanges() {\\n if (this.isWatchingForDeviceChanges()) {\\n return;\\n }\\n this.logger.info('Starting devicechange listener.');\\n this.onDeviceChangeCallback = () => this.handleDeviceChange();\\n this.mediaDeviceWrapper.addEventListener('devicechange', this.onDeviceChangeCallback);\\n }\\n /**\\n * Unsubscribe from the `devicechange` event, which allows the device controller to\\n * update its device cache.\\n */\\n stopWatchingDeviceChanges() {\\n if (!this.isWatchingForDeviceChanges()) {\\n return;\\n }\\n this.logger.info('Stopping devicechange listener.');\\n this.mediaDeviceWrapper.removeEventListener('devicechange', this.onDeviceChangeCallback);\\n this.onDeviceChangeCallback = undefined;\\n }\\n shouldObserveDeviceChanges() {\\n if (this.deviceChangeObservers.size) {\\n return true;\\n }\\n const hasActiveDevices = (this.activeDevices['audio'] && this.activeDevices['audio'].constraints !== null) ||\\n (this.activeDevices['video'] && this.activeDevices['video'].constraints !== null) ||\\n !!this.audioOutputDeviceId;\\n return hasActiveDevices;\\n }\\n watchForDeviceChangesIfNecessary() {\\n if (this.shouldObserveDeviceChanges()) {\\n this.ensureWatchingDeviceChanges();\\n }\\n else {\\n this.stopWatchingDeviceChanges();\\n }\\n }\\n destroy() {\\n var _a, _b;\\n return __awaiter(this, void 0, void 0, function* () {\\n // Remove device change callbacks.\\n this.stopWatchingDeviceChanges();\\n // Deselect any audio input devices and throw away the streams.\\n // Discard the current video device, if there is one.\\n // Discard any audio or video transforms.\\n yield this.chooseAudioInputDevice(null);\\n yield this.chooseVideoInputDevice(null);\\n // Tear down any Web Audio infrastructure we have hanging around.\\n (_a = this.audioInputSourceNode) === null || _a === void 0 ? void 0 : _a.disconnect();\\n (_b = this.audioInputDestinationNode) === null || _b === void 0 ? void 0 : _b.disconnect();\\n this.audioInputSourceNode = undefined;\\n this.audioInputDestinationNode = undefined;\\n });\\n }\\n listAudioInputDevices() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const result = yield this.listDevicesOfKind('audioinput');\\n this.trace('listAudioInputDevices', null, result);\\n return result;\\n });\\n }\\n listVideoInputDevices() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const result = yield this.listDevicesOfKind('videoinput');\\n this.trace('listVideoInputDevices', null, result);\\n return result;\\n });\\n }\\n listAudioOutputDevices() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const result = yield this.listDevicesOfKind('audiooutput');\\n this.trace('listAudioOutputDevices', null, result);\\n return result;\\n });\\n }\\n pushAudioMeetingStateForPermissions(device) {\\n var _a, _b;\\n (_b = (_a = this.boundAudioVideoController) === null || _a === void 0 ? void 0 : _a.eventController) === null || _b === void 0 ? void 0 : _b.publishEvent(device === null ? 'audioInputUnselected' : 'audioInputSelected');\\n }\\n pushVideoMeetingStateForPermissions(device) {\\n var _a, _b;\\n (_b = (_a = this.boundAudioVideoController) === null || _a === void 0 ? void 0 : _a.eventController) === null || _b === void 0 ? void 0 : _b.publishEvent(device === null ? 'videoInputUnselected' : 'videoInputSelected');\\n }\\n chooseAudioInputDevice(device) {\\n var _a;\\n return __awaiter(this, void 0, void 0, function* () {\\n if (device === undefined) {\\n this.logger.error('Audio input device cannot be undefined');\\n return;\\n }\\n if (AudioTransformDevice_1.isAudioTransformDevice(device)) {\\n // N.B., do not JSON.stringify here — for some kinds of devices this\\n // will cause a cyclic object reference error.\\n this.logger.info(`Choosing transform input device ${device}`);\\n /*\\n * This block of code is a workaround for a Chromium bug:\\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1173656\\n *\\n * In short: if we are about to select an audio device with a transform, which we assume for\\n * safety's sake uses AudioWorklet, we recreate the audio context and the nodes that\\n * are linked to it.\\n *\\n * This causes Chrome to rejig its buffers and the second context works correctly.\\n *\\n * This is theoretically worse for performance, but in practice it is fine.\\n *\\n * This is not safe in the general case: an application that already\\n * retrieved the audio context in order to build an audio graph for some other purpose\\n * will fail at this point as we pull the context out from under it.\\n *\\n * An application that always uses the supplied context in an\\n * `AudioTransformDevice.createAudioNode` call should work correctly.\\n *\\n * If you are confident that your application does not use AudioWorklet, does not run in\\n * an un-fixed Chromium version, or will never be used with sample-rate-switching Bluetooth\\n * devices, you can disable this workaround by suppling a custom {@link ExtendedBrowserBehavior}\\n * when you create your device controller.\\n *\\n * We can't tell in advance whether we need to give the device a different audio context,\\n * because checking whether the resulting node is an AudioWorkletNode needs it to have been\\n * created first.\\n */\\n const recreateAudioContext = this.browserBehavior.requiresContextRecreationForAudioWorklet();\\n if (recreateAudioContext) {\\n this.logger.info('Recreating audio context when selecting transform device.');\\n if (this.transform) {\\n /* istanbul ignore else */\\n if (this.transform.nodes) {\\n this.transform.nodes.end.disconnect();\\n this.transform.nodes = undefined;\\n }\\n this.transform = undefined;\\n }\\n /* istanbul ignore else */\\n if (this.audioInputSourceNode) {\\n this.audioInputSourceNode.disconnect();\\n this.audioInputSourceNode = undefined;\\n }\\n /* istanbul ignore else */\\n if (this.audioInputDestinationNode) {\\n this.audioInputDestinationNode.disconnect();\\n this.audioInputDestinationNode = undefined;\\n }\\n DefaultDeviceController.closeAudioContext();\\n }\\n yield this.chooseAudioTransformInputDevice(device);\\n if (recreateAudioContext && ((_a = this.boundAudioVideoController) === null || _a === void 0 ? void 0 : _a.rtcPeerConnection)) {\\n this.boundAudioVideoController.restartLocalAudio(() => {\\n this.logger.info('Local audio restarted.');\\n });\\n }\\n return this.pushAudioMeetingStateForPermissions(device);\\n }\\n this.removeTransform();\\n yield this.chooseInputIntrinsicDevice('audio', device, false);\\n this.trace('chooseAudioInputDevice', device, `success`);\\n this.pushAudioMeetingStateForPermissions(device);\\n });\\n }\\n chooseAudioTransformInputDevice(device) {\\n var _a;\\n return __awaiter(this, void 0, void 0, function* () {\\n if (((_a = this.transform) === null || _a === void 0 ? void 0 : _a.device) === device) {\\n return;\\n }\\n if (!this.useWebAudio) {\\n throw new Error('Cannot apply transform device without enabling Web Audio.');\\n }\\n const context = DefaultDeviceController.getAudioContext();\\n if (context instanceof OfflineAudioContext) {\\n // Nothing to do.\\n }\\n else {\\n switch (context.state) {\\n case 'running':\\n // Nothing to do.\\n break;\\n case 'closed':\\n // A closed context cannot be used for creating nodes, so the correct\\n // thing to do is to raise a descriptive error sooner.\\n throw new Error('Cannot choose a transform device with a closed audio context.');\\n case 'suspended':\\n // A context might be suspended after page load. We try to resume it\\n // here, otherwise audio won't work.\\n yield context.resume();\\n }\\n }\\n let nodes;\\n try {\\n nodes = yield device.createAudioNode(context);\\n }\\n catch (e) {\\n this.logger.error(`Unable to create transform device node: ${e}.`);\\n throw e;\\n }\\n // Pick the plain ol' inner device as the source. It will be\\n // connected to the node.\\n const inner = yield device.intrinsicDevice();\\n yield this.chooseInputIntrinsicDevice('audio', inner, false);\\n this.logger.debug(`Got inner stream: ${inner}.`);\\n // Otherwise, continue: hook up the new node.\\n this.setTransform(device, nodes);\\n });\\n }\\n chooseVideoTransformInputDevice(device) {\\n var _a, _b;\\n return __awaiter(this, void 0, void 0, function* () {\\n if (device === this.chosenVideoTransformDevice) {\\n this.logger.info('Reselecting same VideoTransformDevice');\\n return;\\n }\\n const prevVideoTransformDevice = this.chosenVideoTransformDevice;\\n if (prevVideoTransformDevice) {\\n this.logger.info('Switched from previous VideoTransformDevice');\\n }\\n const wasUsingTransformDevice = !!prevVideoTransformDevice;\\n const inner = yield device.intrinsicDevice();\\n const canReuseMediaStream = this.isMediaStreamReusableByDeviceId((_a = this.activeDevices['video']) === null || _a === void 0 ? void 0 : _a.stream, inner);\\n if (!canReuseMediaStream) {\\n this.logger.info('video transform device needs new intrinsic device');\\n if (wasUsingTransformDevice) {\\n // detach input media stream - turn off the camera or leave it be if inner is media stream\\n prevVideoTransformDevice.onOutputStreamDisconnect();\\n }\\n this.chosenVideoTransformDevice = device;\\n // VideoTransformDevice owns input MediaStream\\n this.activeDevices['video'] = null;\\n yield this.chooseInputIntrinsicDevice('video', inner, false, true);\\n return;\\n }\\n // When saved stream is reusable, only switch the saved stream to filtered stream for sending\\n // but keep the saved stream intact.\\n // Note: to keep the chosen media stream intact, it is important to avoid a full stop\\n // because videoTileUpdate can be called when video is stopped and user might call `bindVideoElement` to disconnect the element.\\n // In current implementation, disconnecting the element will `hard` stop the media stream.\\n // Update device and stream\\n this.chosenVideoTransformDevice = device;\\n const newMediaStream = this.activeDevices['video'].stream;\\n this.logger.info('video transform device uses previous stream');\\n // Input is not a MediaStream. Update constraints\\n if (!inner.id) {\\n const constraint = inner;\\n constraint.width = constraint.width || this.videoInputQualitySettings.videoWidth;\\n constraint.height = constraint.height || this.videoInputQualitySettings.videoHeight;\\n constraint.frameRate = constraint.frameRate || this.videoInputQualitySettings.videoFrameRate;\\n yield newMediaStream.getVideoTracks()[0].applyConstraints(constraint);\\n }\\n // `transformStream` will start processing.\\n yield device.transformStream(this.activeDevices['video'].stream);\\n // Replace video to send\\n if ((_b = this.boundAudioVideoController) === null || _b === void 0 ? void 0 : _b.videoTileController.hasStartedLocalVideoTile()) {\\n // optimized method exists, a negotiation can be avoided\\n if (this.boundAudioVideoController.replaceLocalVideo) {\\n this.restartLocalVideoAfterSelection(null, false, true);\\n }\\n else {\\n // non-optimized path, a negotiation is coming\\n yield this.boundAudioVideoController.update();\\n }\\n }\\n });\\n }\\n chooseVideoInputDevice(device) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (device === undefined) {\\n this.logger.error('Video input device cannot be undefined');\\n return;\\n }\\n if (VideoTransformDevice_1.isVideoTransformDevice(device)) {\\n this.logger.info(`Choosing video transform device ${device}`);\\n return this.chooseVideoTransformInputDevice(device);\\n }\\n this.updateMaxBandwidthKbps();\\n // handle direct switching from VideoTransformDevice to Device\\n // From WebRTC point, it is a device switching.\\n if (this.chosenVideoInputIsTransformDevice()) {\\n // disconnect old stream\\n this.chosenVideoTransformDevice.onOutputStreamDisconnect();\\n this.chosenVideoTransformDevice = null;\\n }\\n yield this.chooseInputIntrinsicDevice('video', device, false);\\n this.trace('chooseVideoInputDevice', device);\\n this.pushVideoMeetingStateForPermissions(device);\\n });\\n }\\n chooseAudioOutputDevice(deviceId) {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.audioOutputDeviceId = deviceId;\\n this.watchForDeviceChangesIfNecessary();\\n yield this.bindAudioOutput();\\n this.trace('chooseAudioOutputDevice', deviceId, null);\\n return;\\n });\\n }\\n addDeviceChangeObserver(observer) {\\n this.logger.info('adding device change observer');\\n this.deviceChangeObservers.add(observer);\\n this.watchForDeviceChangesIfNecessary();\\n this.trace('addDeviceChangeObserver');\\n }\\n removeDeviceChangeObserver(observer) {\\n this.logger.info('removing device change observer');\\n this.deviceChangeObservers.delete(observer);\\n this.watchForDeviceChangesIfNecessary();\\n this.trace('removeDeviceChangeObserver');\\n }\\n createAnalyserNodeForAudioInput() {\\n var _a, _b;\\n if (!this.activeDevices['audio']) {\\n return null;\\n }\\n // If there is a WebAudio node in the graph, we use that as the source instead of the stream.\\n const node = (_b = (_a = this.transform) === null || _a === void 0 ? void 0 : _a.nodes) === null || _b === void 0 ? void 0 : _b.end;\\n if (node) {\\n const analyser = node.context.createAnalyser();\\n analyser.removeOriginalInputs = () => {\\n try {\\n node.disconnect(analyser);\\n }\\n catch (e) {\\n // This can fail in some unusual cases, but this is best-effort.\\n }\\n };\\n node.connect(analyser);\\n return analyser;\\n }\\n return this.createAnalyserNodeForRawAudioInput();\\n }\\n //\\n // N.B., this bypasses any applied transform node.\\n //\\n createAnalyserNodeForRawAudioInput() {\\n if (!this.activeDevices['audio']) {\\n return null;\\n }\\n return this.createAnalyserNodeForStream(this.activeDevices['audio'].stream);\\n }\\n createAnalyserNodeForStream(stream) {\\n const audioContext = DefaultDeviceController.getAudioContext();\\n const analyser = audioContext.createAnalyser();\\n const source = audioContext.createMediaStreamSource(stream);\\n source.connect(analyser);\\n this.trace('createAnalyserNodeForAudioInput');\\n analyser.removeOriginalInputs = () => {\\n try {\\n source.disconnect(analyser);\\n }\\n catch (e) {\\n // This can fail in some unusual cases, but this is best-effort.\\n }\\n };\\n return analyser;\\n }\\n startVideoPreviewForVideoInput(element) {\\n if (!this.activeDevices['video']) {\\n this.logger.warn('cannot bind video preview since video input device has not been chosen');\\n this.trace('startVideoPreviewForVideoInput', element.id);\\n return;\\n }\\n // TODO: implement MediaDestroyer to provide single release MediaStream function\\n this.releaseMediaStream(element.srcObject);\\n DefaultVideoTile_1.default.disconnectVideoStreamFromVideoElement(element, false);\\n navigator.mediaDevices\\n .getUserMedia(this.activeDevices['video'].constraints)\\n .then(previewStream => {\\n DefaultVideoTile_1.default.connectVideoStreamToVideoElement(previewStream, element, true);\\n })\\n .catch(error => {\\n this.logger.warn(`Unable to reacquire video stream for preview to element ${element.id}: ${error}`);\\n });\\n this.trace('startVideoPreviewForVideoInput', element.id);\\n }\\n stopVideoPreviewForVideoInput(element) {\\n const stream = element.srcObject;\\n const activeVideoDevice = this.activeDevices['video'];\\n // Safety.\\n /* istanbul ignore else */\\n if (activeVideoDevice) {\\n this.releaseActiveDevice(activeVideoDevice);\\n }\\n if (stream) {\\n this.releaseMediaStream(stream);\\n DefaultVideoTile_1.default.disconnectVideoStreamFromVideoElement(element, false);\\n }\\n this.trace('stopVideoPreviewForVideoInput', element.id);\\n }\\n setDeviceLabelTrigger(trigger) {\\n this.deviceLabelTrigger = trigger;\\n this.trace('setDeviceLabelTrigger');\\n }\\n mixIntoAudioInput(stream) {\\n let node = null;\\n if (this.useWebAudio) {\\n node = DefaultDeviceController.getAudioContext().createMediaStreamSource(stream);\\n node.connect(this.getMediaStreamOutputNode());\\n }\\n else {\\n this.logger.warn('WebAudio is not enabled, mixIntoAudioInput will not work');\\n }\\n this.trace('mixIntoAudioInput', stream.id);\\n return node;\\n }\\n chooseVideoInputQuality(width, height, frameRate, maxBandwidthKbps) {\\n const dimension = this.browserBehavior.requiresResolutionAlignment(width, height);\\n this.videoInputQualitySettings = new VideoQualitySettings_1.default(dimension[0], dimension[1], frameRate, maxBandwidthKbps);\\n this.updateMaxBandwidthKbps();\\n }\\n getVideoInputQualitySettings() {\\n return this.videoInputQualitySettings;\\n }\\n acquireAudioInputStream() {\\n return this.acquireInputStream('audio');\\n }\\n acquireVideoInputStream() {\\n return this.acquireInputStream('video');\\n }\\n acquireDisplayInputStream(streamConstraints) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (streamConstraints &&\\n streamConstraints.video &&\\n // @ts-ignore\\n streamConstraints.video.mandatory &&\\n // @ts-ignore\\n streamConstraints.video.mandatory.chromeMediaSource &&\\n // @ts-ignore\\n streamConstraints.video.mandatory.chromeMediaSourceId) {\\n return navigator.mediaDevices.getUserMedia(streamConstraints);\\n }\\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/31821\\n return navigator.mediaDevices.getDisplayMedia(streamConstraints);\\n });\\n }\\n /**\\n * This function helps `releaseMediaStream` do the right thing.\\n *\\n * We need to do three things:\\n *\\n * * Close the tracks of the source stream.\\n * * Remove the transform.\\n * * Clean up the _source_ stream's callback, as if `releaseMediaStream` had\\n * been called with that stream -- that's the stream that's tracked in\\n * `activeDevices` and needs to have its callbacks removed.\\n *\\n * This is a little fiddly because the stream broker interface doesn't\\n * know about the innards of the device controller, and only has the\\n * meeting session state's stream to work with.\\n *\\n */\\n releaseAudioTransformStream() {\\n this.logger.info('Stopping audio track for Web Audio graph');\\n this.stopTracksAndRemoveCallback('audio');\\n this.logger.info('Removing audio transform, if there is one.');\\n this.removeTransform();\\n // Remove the input and output nodes. They will be recreated later if\\n // needed.\\n this.audioInputSourceNode.disconnect();\\n this.audioInputSourceNode = undefined;\\n this.audioInputDestinationNode.disconnect();\\n this.audioInputDestinationNode = undefined;\\n }\\n releaseVideoTransformStream() {\\n this.logger.info('Stopping video track for transform');\\n this.stopTracksAndRemoveCallback('video');\\n this.logger.info('Disconnecting video transform');\\n this.chosenVideoTransformDevice.onOutputStreamDisconnect();\\n this.chosenVideoTransformDevice = null;\\n }\\n stopTracksAndRemoveCallback(kind) {\\n const activeDevice = this.activeDevices[kind];\\n /* istanbul ignore next */\\n const endedCallback = activeDevice === null || activeDevice === void 0 ? void 0 : activeDevice.endedCallback;\\n for (const track of activeDevice.stream.getTracks()) {\\n track.stop();\\n /* istanbul ignore else */\\n if (endedCallback) {\\n track.removeEventListener('ended', endedCallback);\\n delete activeDevice.endedCallback;\\n }\\n delete this.activeDevices[kind];\\n }\\n }\\n releaseOrdinaryStream(mediaStreamToRelease) {\\n var _a;\\n const tracksToStop = mediaStreamToRelease.getTracks();\\n if (!tracksToStop.length) {\\n return;\\n }\\n for (const track of tracksToStop) {\\n track.stop();\\n }\\n // This function is called from `CleanStoppedSessionTask` using the\\n // session state, which does not allow us to clean up any associated 'ended'\\n // callbacks in advance. Look here to see if we have any to clean up.\\n for (const kind in this.activeDevices) {\\n const activeDevice = this.activeDevices[kind];\\n if ((activeDevice === null || activeDevice === void 0 ? void 0 : activeDevice.stream) !== mediaStreamToRelease) {\\n continue;\\n }\\n if (activeDevice.endedCallback) {\\n tracksToStop[0].removeEventListener('ended', activeDevice.endedCallback);\\n delete activeDevice.endedCallback;\\n }\\n delete this.activeDevices[kind];\\n if (kind === 'video' &&\\n ((_a = this.boundAudioVideoController) === null || _a === void 0 ? void 0 : _a.videoTileController.hasStartedLocalVideoTile())) {\\n this.boundAudioVideoController.videoTileController.stopLocalVideoTile();\\n }\\n }\\n }\\n releaseMediaStream(mediaStreamToRelease) {\\n var _a, _b;\\n if (!mediaStreamToRelease) {\\n return;\\n }\\n try {\\n // This method can be called with the output of an audio transform's\\n // Web Audio graph. That graph runs from a `MediaStreamSourceNode`, through\\n // the transform (if present), to a `MediaStreamDestinationNode`, and out to\\n // WebRTC.\\n //\\n // The call teardown task will call `releaseMediaStream` with the stream it\\n // receives — the destination stream.\\n //\\n // This function detects with this comparison:\\n const isReleasingAudioDestinationStream = mediaStreamToRelease === ((_a = this.audioInputDestinationNode) === null || _a === void 0 ? void 0 : _a.stream);\\n if (isReleasingAudioDestinationStream) {\\n this.releaseAudioTransformStream();\\n return;\\n }\\n // Similarly, it can be called with a video transform's output stream.\\n // As with the Web Audio case, we need to release the actual input stream to\\n // really stop it.\\n const isReleasingVideoOutputStream = mediaStreamToRelease === ((_b = this.chosenVideoTransformDevice) === null || _b === void 0 ? void 0 : _b.outputMediaStream);\\n if (isReleasingVideoOutputStream) {\\n this.releaseVideoTransformStream();\\n return;\\n }\\n // Otherwise, this is one of our inputs that was plumbed straight through to\\n // WebRTC. Go ahead and release it track by track.\\n this.releaseOrdinaryStream(mediaStreamToRelease);\\n }\\n finally {\\n this.watchForDeviceChangesIfNecessary();\\n }\\n }\\n chosenVideoInputIsTransformDevice() {\\n return !!this.chosenVideoTransformDevice;\\n }\\n bindToAudioVideoController(audioVideoController) {\\n if (this.boundAudioVideoController) {\\n this.unsubscribeFromMuteAndUnmuteLocalAudio();\\n }\\n this.boundAudioVideoController = audioVideoController;\\n this.subscribeToMuteAndUnmuteLocalAudio();\\n if (this.browserBehavior.supportsSetSinkId()) {\\n AsyncScheduler_1.default.nextTick(() => {\\n this.bindAudioOutput();\\n });\\n }\\n }\\n subscribeToMuteAndUnmuteLocalAudio() {\\n if (!this.boundAudioVideoController) {\\n return;\\n }\\n // Safety that's hard to test.\\n /* istanbul ignore next */\\n if (!this.boundAudioVideoController.realtimeController) {\\n return;\\n }\\n this.boundAudioVideoController.realtimeController.realtimeSubscribeToMuteAndUnmuteLocalAudio(this.muteCallback);\\n }\\n unsubscribeFromMuteAndUnmuteLocalAudio() {\\n // Safety that's hard to test.\\n /* istanbul ignore next */\\n if (!this.boundAudioVideoController.realtimeController) {\\n return;\\n }\\n this.boundAudioVideoController.realtimeController.realtimeUnsubscribeToMuteAndUnmuteLocalAudio(this.muteCallback);\\n }\\n static getIntrinsicDeviceId(device) {\\n if (device === undefined) {\\n return undefined;\\n }\\n if (device === null) {\\n return null;\\n }\\n if (typeof device === 'string') {\\n return device;\\n }\\n if (device.id) {\\n return device.id;\\n }\\n const constraints = device;\\n const deviceIdConstraints = constraints.deviceId;\\n if (deviceIdConstraints === undefined) {\\n return undefined;\\n }\\n if (deviceIdConstraints === null) {\\n return null;\\n }\\n if (typeof deviceIdConstraints === 'string' || Array.isArray(deviceIdConstraints)) {\\n return deviceIdConstraints;\\n }\\n const constraintStringParams = deviceIdConstraints;\\n if (typeof constraintStringParams.exact === 'string' ||\\n Array.isArray(constraintStringParams.exact)) {\\n return constraintStringParams.exact;\\n }\\n return undefined;\\n }\\n static createEmptyAudioDevice() {\\n return DefaultDeviceController.synthesizeAudioDevice(0);\\n }\\n static createEmptyVideoDevice() {\\n return DefaultDeviceController.synthesizeVideoDevice('black');\\n }\\n static synthesizeAudioDevice(toneHz) {\\n const audioContext = DefaultDeviceController.getAudioContext();\\n const outputNode = audioContext.createMediaStreamDestination();\\n if (!toneHz) {\\n const source = audioContext.createBufferSource();\\n // The AudioContext object uses the sample rate of the default output device\\n // if not specified. Creating an AudioBuffer object with the output device's\\n // sample rate fails in some browsers, e.g. Safari with a Bluetooth headphone.\\n try {\\n source.buffer = audioContext.createBuffer(1, audioContext.sampleRate * 5, audioContext.sampleRate);\\n }\\n catch (error) {\\n if (error && error.name === 'NotSupportedError') {\\n source.buffer = audioContext.createBuffer(1, DefaultDeviceController.defaultSampleRate * 5, DefaultDeviceController.defaultSampleRate);\\n }\\n else {\\n throw error;\\n }\\n }\\n // Some browsers will not play audio out the MediaStreamDestination\\n // unless there is actually audio to play, so we add a small amount of\\n // noise here to ensure that audio is played out.\\n source.buffer.getChannelData(0)[0] = 0.0003;\\n source.loop = true;\\n source.connect(outputNode);\\n source.start();\\n }\\n else {\\n const gainNode = audioContext.createGain();\\n gainNode.gain.value = 0.1;\\n gainNode.connect(outputNode);\\n const oscillatorNode = audioContext.createOscillator();\\n oscillatorNode.frequency.value = toneHz;\\n oscillatorNode.connect(gainNode);\\n oscillatorNode.start();\\n }\\n return outputNode.stream;\\n }\\n static synthesizeVideoDevice(colorOrPattern) {\\n const canvas = document.createElement('canvas');\\n canvas.width = 480;\\n canvas.height = (canvas.width / 16) * 9;\\n const colorBars = makeColorBars(canvas, colorOrPattern);\\n if (!colorBars) {\\n return null;\\n }\\n // `scheduler` and `listener` will leak.\\n const { stream } = colorBars;\\n return stream;\\n }\\n updateMaxBandwidthKbps() {\\n if (this.boundAudioVideoController) {\\n this.boundAudioVideoController.setVideoMaxBandwidthKbps(this.videoInputQualitySettings.videoMaxBandwidthKbps);\\n }\\n }\\n listDevicesOfKind(deviceKind) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.deviceInfoCache === null || !this.isWatchingForDeviceChanges()) {\\n yield this.updateDeviceInfoCacheFromBrowser();\\n }\\n return this.listCachedDevicesOfKind(deviceKind);\\n });\\n }\\n updateDeviceInfoCacheFromBrowser() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const doesNotHaveAccessToMediaDevices = typeof MediaDeviceInfo === 'undefined';\\n if (doesNotHaveAccessToMediaDevices) {\\n this.deviceInfoCache = [];\\n return;\\n }\\n let devices = yield navigator.mediaDevices.enumerateDevices();\\n let hasDeviceLabels = true;\\n for (const device of devices) {\\n if (!device.label) {\\n hasDeviceLabels = false;\\n break;\\n }\\n }\\n if (!hasDeviceLabels) {\\n try {\\n this.logger.info('attempting to trigger media device labels since they are hidden');\\n const triggerStream = yield this.deviceLabelTrigger();\\n devices = yield navigator.mediaDevices.enumerateDevices();\\n for (const track of triggerStream.getTracks()) {\\n track.stop();\\n }\\n }\\n catch (err) {\\n this.logger.info('unable to get media device labels');\\n }\\n }\\n this.deviceInfoCache = devices;\\n });\\n }\\n listCachedDevicesOfKind(deviceKind) {\\n const devicesOfKind = [];\\n for (const device of this.deviceInfoCache) {\\n if (device.kind === deviceKind) {\\n devicesOfKind.push(device);\\n }\\n }\\n return devicesOfKind;\\n }\\n handleDeviceChange() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.deviceInfoCache === null) {\\n return;\\n }\\n if (this.alreadyHandlingDeviceChange) {\\n AsyncScheduler_1.default.nextTick(() => {\\n this.handleDeviceChange();\\n });\\n return;\\n }\\n this.alreadyHandlingDeviceChange = true;\\n const oldAudioInputDevices = this.listCachedDevicesOfKind('audioinput');\\n const oldVideoInputDevices = this.listCachedDevicesOfKind('videoinput');\\n const oldAudioOutputDevices = this.listCachedDevicesOfKind('audiooutput');\\n yield this.updateDeviceInfoCacheFromBrowser();\\n const newAudioInputDevices = this.listCachedDevicesOfKind('audioinput');\\n const newVideoInputDevices = this.listCachedDevicesOfKind('videoinput');\\n const newAudioOutputDevices = this.listCachedDevicesOfKind('audiooutput');\\n this.forEachObserver((observer) => {\\n if (!this.areDeviceListsEqual(oldAudioInputDevices, newAudioInputDevices)) {\\n Maybe_1.default.of(observer.audioInputsChanged).map(f => f.bind(observer)(newAudioInputDevices));\\n }\\n if (!this.areDeviceListsEqual(oldVideoInputDevices, newVideoInputDevices)) {\\n Maybe_1.default.of(observer.videoInputsChanged).map(f => f.bind(observer)(newVideoInputDevices));\\n }\\n if (!this.areDeviceListsEqual(oldAudioOutputDevices, newAudioOutputDevices)) {\\n Maybe_1.default.of(observer.audioOutputsChanged).map(f => f.bind(observer)(newAudioOutputDevices));\\n }\\n });\\n this.alreadyHandlingDeviceChange = false;\\n });\\n }\\n handleDeviceStreamEnded(kind, deviceId) {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n yield this.chooseInputIntrinsicDevice(kind, null, false);\\n }\\n catch (e) {\\n /* istanbul ignore next */\\n this.logger.error('Failed to choose null device after stream ended.');\\n }\\n if (kind === 'audio') {\\n this.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.audioInputStreamEnded).map(f => f.bind(observer)(deviceId));\\n });\\n }\\n else {\\n this.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.videoInputStreamEnded).map(f => f.bind(observer)(deviceId));\\n });\\n }\\n });\\n }\\n forEachObserver(observerFunc) {\\n for (const observer of this.deviceChangeObservers) {\\n AsyncScheduler_1.default.nextTick(() => {\\n /* istanbul ignore else */\\n if (this.deviceChangeObservers.has(observer)) {\\n observerFunc(observer);\\n }\\n });\\n }\\n }\\n areDeviceListsEqual(a, b) {\\n return (JSON.stringify(a.map(device => JSON.stringify(device)).sort()) ===\\n JSON.stringify(b.map(device => JSON.stringify(device)).sort()));\\n }\\n intrinsicDeviceAsMediaStream(device) {\\n // @ts-ignore\\n return device && device.id ? device : null;\\n }\\n hasSameGroupId(groupId, kind, device) {\\n if (groupId === '') {\\n return true;\\n }\\n const deviceIds = DefaultDeviceController.getIntrinsicDeviceId(device);\\n if (typeof deviceIds === 'string' && groupId === this.getGroupIdFromDeviceId(kind, deviceIds)) {\\n return true;\\n }\\n return false;\\n }\\n getGroupIdFromDeviceId(kind, deviceId) {\\n if (this.deviceInfoCache !== null) {\\n const cachedDeviceInfo = this.listCachedDevicesOfKind(`${kind}input`).find((cachedDevice) => cachedDevice.deviceId === deviceId);\\n if (cachedDeviceInfo && cachedDeviceInfo.groupId) {\\n return cachedDeviceInfo.groupId;\\n }\\n }\\n return '';\\n }\\n getActiveDeviceId(kind) {\\n /* istanbul ignore else */\\n if (this.activeDevices[kind] && this.activeDevices[kind].constraints) {\\n const activeDeviceMediaTrackConstraints = this.activeDevices[kind].constraints.audio || this.activeDevices[kind].constraints.video;\\n const activeDeviceConstrainDOMStringParameters = activeDeviceMediaTrackConstraints\\n .deviceId;\\n let activeDeviceId;\\n if (typeof activeDeviceConstrainDOMStringParameters === 'string') {\\n activeDeviceId = activeDeviceConstrainDOMStringParameters;\\n }\\n else {\\n activeDeviceId = activeDeviceConstrainDOMStringParameters\\n .exact;\\n }\\n return activeDeviceId;\\n }\\n /* istanbul ignore next */\\n return null;\\n }\\n restartLocalVideoAfterSelection(oldDevice, fromAcquire, fromVideoTransformDevice) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!fromAcquire &&\\n this.boundAudioVideoController &&\\n this.boundAudioVideoController.videoTileController.hasStartedLocalVideoTile()) {\\n if (fromVideoTransformDevice) {\\n // similar to `useWebaudio`, either Device or VideoTransformDevice, `this.activeDevices['video']` tracks the supplied inner Device.\\n // Upon in-meeting switching to VideoTransformDevice, device controller releases old \\\"supplied\\\" stream and\\n // calls replaceLocalVideo to avoid a full stop-start update.\\n yield this.boundAudioVideoController.replaceLocalVideo();\\n this.logger.info('successfully replaced video track');\\n if (oldDevice === null || oldDevice === void 0 ? void 0 : oldDevice.stream.active) {\\n this.logger.warn('previous media stream is not stopped during restart video');\\n this.releaseActiveDevice(oldDevice);\\n }\\n }\\n else {\\n // not from VideoTransformDevice, usual behavior.\\n this.logger.info('restarting local video to switch to new device');\\n this.boundAudioVideoController.restartLocalVideo(() => {\\n // TODO: implement MediaStreamDestroyer\\n // tracks of oldStream should be stopped when video tile is disconnected from MediaStream\\n // otherwise, camera is still being accessed and we need to stop it here.\\n if (oldDevice === null || oldDevice === void 0 ? void 0 : oldDevice.stream.active) {\\n this.logger.warn('previous media stream is not stopped during restart video');\\n this.releaseActiveDevice(oldDevice);\\n }\\n });\\n }\\n }\\n else {\\n this.releaseActiveDevice(oldDevice);\\n }\\n });\\n }\\n handleGetUserMediaError(error, errorTimeMs) {\\n if (!error) {\\n throw new GetUserMediaError_1.default(error);\\n }\\n switch (error.name) {\\n case 'NotReadableError':\\n case 'TrackStartError':\\n throw new NotReadableError_1.default(error);\\n case 'NotFoundError':\\n case 'DevicesNotFoundError':\\n throw new NotFoundError_1.default(error);\\n case 'NotAllowedError':\\n case 'PermissionDeniedError':\\n case 'SecurityError':\\n if (errorTimeMs &&\\n errorTimeMs < DefaultDeviceController.permissionDeniedOriginDetectionThresholdMs) {\\n throw new PermissionDeniedError_1.default(error, 'Permission denied by browser');\\n }\\n else {\\n throw new PermissionDeniedError_1.default(error, 'Permission denied by user');\\n }\\n case 'OverconstrainedError':\\n case 'ConstraintNotSatisfiedError':\\n throw new OverconstrainedError_1.default(error);\\n case 'TypeError':\\n throw new TypeError_1.default(error);\\n case 'AbortError':\\n default:\\n throw new GetUserMediaError_1.default(error);\\n }\\n }\\n releaseActiveDevice(device) {\\n if (!device || !device.stream) {\\n return;\\n }\\n if (device.endedCallback) {\\n const track = device.stream.getTracks()[0];\\n // Safety.\\n /* istanbul ignore else */\\n if (track) {\\n track.removeEventListener('ended', device.endedCallback);\\n }\\n }\\n delete device.endedCallback;\\n this.releaseMediaStream(device.stream);\\n delete device.stream;\\n }\\n chooseInputIntrinsicDevice(kind, device, fromAcquire, fromVideoTransformDevice = false) {\\n var _a, _b, _c, _d, _e;\\n return __awaiter(this, void 0, void 0, function* () {\\n this.inputDeviceCount += 1;\\n const callCount = this.inputDeviceCount;\\n if (device === null && kind === 'video') {\\n this.lastNoVideoInputDeviceCount = this.inputDeviceCount;\\n const active = this.activeDevices[kind];\\n if (active) {\\n this.releaseActiveDevice(active);\\n delete this.activeDevices[kind];\\n this.watchForDeviceChangesIfNecessary();\\n }\\n return;\\n }\\n // N.B.,: the input device might already have augmented constraints supplied\\n // by an `AudioTransformDevice`. `calculateMediaStreamConstraints` will respect\\n // settings supplied by the device.\\n const proposedConstraints = this.calculateMediaStreamConstraints(kind, device);\\n // TODO: `matchesConstraints` should really return compatible/incompatible/exact --\\n // `applyConstraints` can be used to reuse the active device while changing the\\n // requested constraints.\\n if (this.activeDevices[kind] &&\\n this.activeDevices[kind].matchesConstraints(proposedConstraints) &&\\n this.activeDevices[kind].stream.active &&\\n this.activeDevices[kind].groupId !== null &&\\n this.hasSameGroupId(this.activeDevices[kind].groupId, kind, device)) {\\n this.logger.info(`reusing existing ${kind} device`);\\n return;\\n }\\n if (kind === 'audio' && this.activeDevices[kind] && this.activeDevices[kind].stream) {\\n this.releaseActiveDevice(this.activeDevices[kind]);\\n }\\n const startTimeMs = Date.now();\\n const newDevice = new DeviceSelection_1.default();\\n try {\\n this.logger.info(`requesting new ${kind} device with constraint ${JSON.stringify(proposedConstraints)}`);\\n const stream = this.intrinsicDeviceAsMediaStream(device);\\n if (kind === 'audio' && device === null) {\\n newDevice.stream = DefaultDeviceController.createEmptyAudioDevice();\\n newDevice.constraints = null;\\n }\\n else if (stream) {\\n this.logger.info(`using media stream ${stream.id} for ${kind} device`);\\n newDevice.stream = stream;\\n newDevice.constraints = proposedConstraints;\\n }\\n else {\\n newDevice.stream = yield navigator.mediaDevices.getUserMedia(proposedConstraints);\\n newDevice.constraints = proposedConstraints;\\n if (kind === 'video' && this.lastNoVideoInputDeviceCount > callCount) {\\n this.logger.warn(`ignored to get video device for constraints ${JSON.stringify(proposedConstraints)} as no device was requested`);\\n this.releaseMediaStream(newDevice.stream);\\n return;\\n }\\n yield this.handleDeviceChange();\\n const track = newDevice.stream.getTracks()[0];\\n newDevice.endedCallback = () => {\\n // Hard to test, but the safety check is worthwhile.\\n /* istanbul ignore else */\\n if (this.activeDevices[kind] && this.activeDevices[kind].stream === newDevice.stream) {\\n this.logger.warn(`${kind} input device which was active is no longer available, resetting to null device`);\\n this.handleDeviceStreamEnded(kind, this.getActiveDeviceId(kind));\\n delete newDevice.endedCallback;\\n }\\n };\\n track.addEventListener('ended', newDevice.endedCallback, { once: true });\\n }\\n newDevice.groupId = ((_a = this.getMediaTrackSettings(newDevice.stream)) === null || _a === void 0 ? void 0 : _a.groupId) || '';\\n }\\n catch (error) {\\n let errorMessage;\\n if ((error === null || error === void 0 ? void 0 : error.name) && error.message) {\\n errorMessage = `${error.name}: ${error.message}`;\\n }\\n else if (error === null || error === void 0 ? void 0 : error.name) {\\n errorMessage = error.name;\\n }\\n else if (error === null || error === void 0 ? void 0 : error.message) {\\n errorMessage = error.message;\\n }\\n else {\\n errorMessage = 'UnknownError';\\n }\\n if (kind === 'audio') {\\n (_c = (_b = this.boundAudioVideoController) === null || _b === void 0 ? void 0 : _b.eventController) === null || _c === void 0 ? void 0 : _c.publishEvent('audioInputFailed', {\\n audioInputErrorMessage: errorMessage,\\n });\\n }\\n else {\\n (_e = (_d = this.boundAudioVideoController) === null || _d === void 0 ? void 0 : _d.eventController) === null || _e === void 0 ? void 0 : _e.publishEvent('videoInputFailed', {\\n videoInputErrorMessage: errorMessage,\\n });\\n }\\n this.logger.error(`failed to get ${kind} device for constraints ${JSON.stringify(proposedConstraints)}: ${errorMessage}`);\\n // This is effectively `error instanceof OverconstrainedError` but works in Node.\\n if (error && 'constraint' in error) {\\n this.logger.error(`Over-constrained by constraint: ${error.constraint}`);\\n }\\n /*\\n * If there is any error while acquiring the audio device, we fall back to null device.\\n * Reason: If device selection fails (e.g. NotReadableError), the peer connection is left hanging\\n * with no active audio track since we release the previously attached track.\\n * If no audio packet has yet been sent to the server, the server will not emit the joined event.\\n */\\n if (kind === 'audio') {\\n this.logger.info(`choosing null ${kind} device instead`);\\n try {\\n newDevice.stream = DefaultDeviceController.createEmptyAudioDevice();\\n newDevice.constraints = null;\\n yield this.handleNewInputDevice(kind, newDevice, fromAcquire);\\n }\\n catch (error) {\\n this.logger.error(`failed to choose null ${kind} device. ${error.name}: ${error.message}`);\\n }\\n }\\n this.handleGetUserMediaError(error, Date.now() - startTimeMs);\\n }\\n finally {\\n this.watchForDeviceChangesIfNecessary();\\n }\\n this.logger.info(`got ${kind} device for constraints ${JSON.stringify(proposedConstraints)}`);\\n yield this.handleNewInputDevice(kind, newDevice, fromAcquire, fromVideoTransformDevice);\\n return;\\n });\\n }\\n handleNewInputDevice(kind, newDevice, fromAcquire, fromVideoTransformDevice = false) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const oldDevice = this.activeDevices[kind];\\n this.activeDevices[kind] = newDevice;\\n this.watchForDeviceChangesIfNecessary();\\n if (kind === 'video') {\\n // attempts to mirror `this.useWebAudio`. The difference is that audio destination stream stays the same\\n // but video sending needs to switch streams.\\n if (this.chosenVideoInputIsTransformDevice()) {\\n this.logger.info('apply processors to transform');\\n yield this.chosenVideoTransformDevice.transformStream(this.activeDevices['video'].stream);\\n }\\n yield this.restartLocalVideoAfterSelection(oldDevice, fromAcquire, fromVideoTransformDevice);\\n }\\n else {\\n this.releaseActiveDevice(oldDevice);\\n if (this.useWebAudio) {\\n this.attachAudioInputStreamToAudioContext(this.activeDevices[kind].stream);\\n }\\n else if (this.boundAudioVideoController) {\\n try {\\n yield this.boundAudioVideoController.restartLocalAudio(() => { });\\n }\\n catch (error) {\\n this.logger.info(`cannot replace audio track due to: ${error.message}`);\\n }\\n }\\n else {\\n this.logger.info('no audio-video controller is bound to the device controller');\\n }\\n }\\n });\\n }\\n bindAudioOutput() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!this.boundAudioVideoController) {\\n return;\\n }\\n const deviceInfo = this.deviceInfoFromDeviceId('audiooutput', this.audioOutputDeviceId);\\n yield this.boundAudioVideoController.audioMixController.bindAudioDevice(deviceInfo);\\n });\\n }\\n calculateMediaStreamConstraints(kind, device) {\\n let trackConstraints = {};\\n if (device === '') {\\n device = null;\\n }\\n const stream = this.intrinsicDeviceAsMediaStream(device);\\n if (device === null) {\\n return null;\\n }\\n else if (typeof device === 'string') {\\n if (this.browserBehavior.requiresNoExactMediaStreamConstraints() &&\\n this.browserBehavior.requiresGroupIdMediaStreamConstraints()) {\\n // In Samsung Internet browser, navigator.mediaDevices.enumerateDevices()\\n // returns same deviceId but different groupdId for some audioinput and videoinput devices.\\n // To handle this, we select appropriate device using deviceId + groupId.\\n trackConstraints.deviceId = device;\\n trackConstraints.groupId = this.getGroupIdFromDeviceId(kind, device);\\n }\\n else if (this.browserBehavior.requiresNoExactMediaStreamConstraints()) {\\n trackConstraints.deviceId = device;\\n }\\n else {\\n trackConstraints.deviceId = { exact: device };\\n }\\n }\\n else if (stream) {\\n // @ts-ignore - create a fake track constraint using the stream id\\n trackConstraints.streamId = stream.id;\\n }\\n else if (isMediaDeviceInfo(device)) {\\n trackConstraints.deviceId = device.deviceId;\\n trackConstraints.groupId = device.groupId;\\n }\\n else {\\n // Take the input set of constraints. Note that this allows\\n // the builder to specify overrides for properties like `autoGainControl`.\\n // @ts-ignore - device is a MediaTrackConstraints\\n trackConstraints = device;\\n }\\n if (kind === 'video') {\\n trackConstraints.width = trackConstraints.width || {\\n ideal: this.videoInputQualitySettings.videoWidth,\\n };\\n trackConstraints.height = trackConstraints.height || {\\n ideal: this.videoInputQualitySettings.videoHeight,\\n };\\n trackConstraints.frameRate = trackConstraints.frameRate || {\\n ideal: this.videoInputQualitySettings.videoFrameRate,\\n };\\n // TODO: try to replace hard-code value related to videos into quality-level presets\\n // The following configs relaxes CPU overuse detection threshold to offer better encoding quality\\n // @ts-ignore\\n trackConstraints.googCpuOveruseDetection = true;\\n // @ts-ignore\\n trackConstraints.googCpuOveruseEncodeUsage = true;\\n // @ts-ignore\\n trackConstraints.googCpuOveruseThreshold = 85;\\n // @ts-ignore\\n trackConstraints.googCpuUnderuseThreshold = 55;\\n }\\n if (kind === 'audio' && this.supportSampleRateConstraint()) {\\n trackConstraints.sampleRate = { ideal: DefaultDeviceController.defaultSampleRate };\\n }\\n if (kind === 'audio' && this.supportSampleSizeConstraint()) {\\n trackConstraints.sampleSize = { ideal: DefaultDeviceController.defaultSampleSize };\\n }\\n if (kind === 'audio' && this.supportChannelCountConstraint()) {\\n trackConstraints.channelCount = { ideal: DefaultDeviceController.defaultChannelCount };\\n }\\n if (kind === 'audio') {\\n const augmented = Object.assign({ echoCancellation: true, googEchoCancellation: true, googEchoCancellation2: true, googAutoGainControl: true, googAutoGainControl2: true, googNoiseSuppression: true, googNoiseSuppression2: true, googHighpassFilter: true }, trackConstraints);\\n trackConstraints = augmented;\\n }\\n return kind === 'audio' ? { audio: trackConstraints } : { video: trackConstraints };\\n }\\n deviceInfoFromDeviceId(deviceKind, deviceId) {\\n if (this.deviceInfoCache === null) {\\n return null;\\n }\\n for (const device of this.deviceInfoCache) {\\n if (device.kind === deviceKind && device.deviceId === deviceId) {\\n return device;\\n }\\n }\\n return null;\\n }\\n acquireInputStream(kind) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (kind === 'audio') {\\n if (this.useWebAudio) {\\n const dest = this.getMediaStreamDestinationNode();\\n return dest.stream;\\n }\\n }\\n // mirrors `this.useWebAudio`\\n if (kind === 'video') {\\n if (this.chosenVideoInputIsTransformDevice()) {\\n return this.chosenVideoTransformDevice.outputMediaStream;\\n }\\n }\\n let existingConstraints = null;\\n if (!this.activeDevices[kind]) {\\n if (kind === 'audio') {\\n this.logger.info(`no ${kind} device chosen, creating empty ${kind} device`);\\n }\\n else {\\n this.logger.error(`no ${kind} device chosen, stopping local video tile`);\\n this.boundAudioVideoController.videoTileController.stopLocalVideoTile();\\n throw new Error(`no ${kind} device chosen, stopping local video tile`);\\n }\\n }\\n else {\\n this.logger.info(`checking whether existing ${kind} device can be reused`);\\n const active = this.activeDevices[kind];\\n // @ts-ignore\\n existingConstraints = active.constraints ? active.constraints[kind] : null;\\n }\\n try {\\n yield this.chooseInputIntrinsicDevice(kind, existingConstraints, true);\\n }\\n catch (e) {\\n this.logger.error(`unable to acquire ${kind} device`);\\n if (e instanceof PermissionDeniedError_1.default) {\\n throw e;\\n }\\n throw new GetUserMediaError_1.default(e, `unable to acquire ${kind} device`);\\n }\\n return this.activeDevices[kind].stream;\\n });\\n }\\n hasAppliedTransform() {\\n return !!this.transform;\\n }\\n isMediaStreamReusableByDeviceId(stream, device) {\\n // for null device, assume the stream is not reusable\\n if (!stream || !stream.active || !device) {\\n return false;\\n }\\n if (device.id) {\\n return stream.id === device.id;\\n }\\n const settings = this.getMediaTrackSettings(stream);\\n // If a device does not specify deviceId, we have to assume the stream is not reusable.\\n if (!settings.deviceId) {\\n return false;\\n }\\n const deviceIds = DefaultDeviceController.getIntrinsicDeviceId(device);\\n if (typeof deviceIds === 'string') {\\n return settings.deviceId === deviceIds;\\n }\\n return false;\\n }\\n getMediaTrackSettings(stream) {\\n var _a;\\n return (_a = stream.getTracks()[0]) === null || _a === void 0 ? void 0 : _a.getSettings();\\n }\\n reconnectAudioInputs() {\\n if (!this.audioInputSourceNode) {\\n return;\\n }\\n this.audioInputSourceNode.disconnect();\\n const output = this.getMediaStreamOutputNode();\\n this.audioInputSourceNode.connect(output);\\n }\\n setTransform(device, nodes) {\\n var _a, _b;\\n (_b = (_a = this.transform) === null || _a === void 0 ? void 0 : _a.nodes) === null || _b === void 0 ? void 0 : _b.end.disconnect();\\n this.transform = { nodes, device };\\n const proc = nodes === null || nodes === void 0 ? void 0 : nodes.end;\\n const dest = this.getMediaStreamDestinationNode();\\n this.logger.debug(`Connecting transform node ${proc} to destination ${dest}.`);\\n proc === null || proc === void 0 ? void 0 : proc.connect(dest);\\n this.reconnectAudioInputs();\\n }\\n removeTransform() {\\n var _a;\\n const previous = this.transform;\\n if (!previous) {\\n return undefined;\\n }\\n (_a = this.transform.nodes) === null || _a === void 0 ? void 0 : _a.end.disconnect();\\n this.transform = undefined;\\n this.reconnectAudioInputs();\\n return previous;\\n }\\n attachAudioInputStreamToAudioContext(stream) {\\n var _a;\\n (_a = this.audioInputSourceNode) === null || _a === void 0 ? void 0 : _a.disconnect();\\n this.audioInputSourceNode = DefaultDeviceController.getAudioContext().createMediaStreamSource(stream);\\n const output = this.getMediaStreamOutputNode();\\n this.audioInputSourceNode.connect(output);\\n }\\n /**\\n * Return the end of the Web Audio graph: post-transform audio.\\n */\\n getMediaStreamDestinationNode() {\\n if (!this.audioInputDestinationNode) {\\n this.audioInputDestinationNode = DefaultDeviceController.getAudioContext().createMediaStreamDestination();\\n }\\n return this.audioInputDestinationNode;\\n }\\n /**\\n * Return the start of the Web Audio graph: pre-transform audio.\\n * If there's no transform node, this is the destination node.\\n */\\n getMediaStreamOutputNode() {\\n var _a, _b;\\n return ((_b = (_a = this.transform) === null || _a === void 0 ? void 0 : _a.nodes) === null || _b === void 0 ? void 0 : _b.start) || this.getMediaStreamDestinationNode();\\n }\\n static getAudioContext() {\\n if (!DefaultDeviceController.audioContext) {\\n const options = {};\\n if (navigator.mediaDevices.getSupportedConstraints().sampleRate) {\\n options.sampleRate = DefaultDeviceController.defaultSampleRate;\\n }\\n // @ts-ignore\\n DefaultDeviceController.audioContext = new (window.AudioContext || window.webkitAudioContext)(options);\\n }\\n return DefaultDeviceController.audioContext;\\n }\\n static closeAudioContext() {\\n if (DefaultDeviceController.audioContext) {\\n try {\\n DefaultDeviceController.audioContext.close();\\n }\\n catch (e) {\\n // Nothing we can do.\\n }\\n }\\n DefaultDeviceController.audioContext = null;\\n }\\n supportSampleRateConstraint() {\\n return this.useWebAudio && !!navigator.mediaDevices.getSupportedConstraints().sampleRate;\\n }\\n supportSampleSizeConstraint() {\\n return this.useWebAudio && !!navigator.mediaDevices.getSupportedConstraints().sampleSize;\\n }\\n supportChannelCountConstraint() {\\n return this.useWebAudio && !!navigator.mediaDevices.getSupportedConstraints().channelCount;\\n }\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n trace(name, input, output) {\\n let s = `API/DefaultDeviceController/${name}`;\\n if (typeof input !== 'undefined') {\\n s += ` ${JSON.stringify(input)}`;\\n }\\n if (typeof output !== 'undefined') {\\n s += ` -> ${JSON.stringify(output)}`;\\n }\\n this.logger.info(s);\\n }\\n}\\nexports[\\\"default\\\"] = DefaultDeviceController;\\nDefaultDeviceController.permissionDeniedOriginDetectionThresholdMs = 500;\\nDefaultDeviceController.defaultVideoWidth = 960;\\nDefaultDeviceController.defaultVideoHeight = 540;\\nDefaultDeviceController.defaultVideoFrameRate = 15;\\nDefaultDeviceController.defaultVideoMaxBandwidthKbps = 1400;\\nDefaultDeviceController.defaultSampleRate = 48000;\\nDefaultDeviceController.defaultSampleSize = 16;\\nDefaultDeviceController.defaultChannelCount = 1;\\nDefaultDeviceController.audioContext = null;\\nfunction isMediaDeviceInfo(device) {\\n return (typeof device === 'object' &&\\n 'deviceId' in device &&\\n 'groupId' in device &&\\n 'kind' in device &&\\n 'label' in device);\\n}\\n//# sourceMappingURL=DefaultDeviceController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/DefaultDeviceController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/DeviceSelection.js\":\n/*!************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/DeviceSelection.js ***!\n \\************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass DeviceSelection {\\n constructor() {\\n this.groupId = '';\\n }\\n matchesConstraints(constraints) {\\n return JSON.stringify(this.constraints) === JSON.stringify(constraints);\\n }\\n}\\nexports[\\\"default\\\"] = DeviceSelection;\\n//# sourceMappingURL=DeviceSelection.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/DeviceSelection.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\":\n/*!**************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js ***!\n \\**************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass GetUserMediaError extends Error {\\n constructor(cause, message) {\\n super(message || 'Error fetching device.');\\n this.cause = cause;\\n }\\n}\\nexports[\\\"default\\\"] = GetUserMediaError;\\n//# sourceMappingURL=GetUserMediaError.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NoOpDeviceController.js\":\n/*!*****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/NoOpDeviceController.js ***!\n \\*****************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.DestroyableNoOpDeviceController = void 0;\\nconst NoOpMediaStreamBroker_1 = __webpack_require__(/*! ../mediastreambroker/NoOpMediaStreamBroker */ \\\"./node_modules/amazon-chime-sdk-js/build/mediastreambroker/NoOpMediaStreamBroker.js\\\");\\nclass NoOpDeviceController extends NoOpMediaStreamBroker_1.default {\\n constructor(_options) {\\n super();\\n }\\n listAudioInputDevices() {\\n return Promise.resolve([]);\\n }\\n listVideoInputDevices() {\\n return Promise.resolve([]);\\n }\\n listAudioOutputDevices() {\\n return Promise.resolve([]);\\n }\\n chooseAudioInputDevice(_device) {\\n return Promise.reject();\\n }\\n chooseVideoInputDevice(_device) {\\n return Promise.reject();\\n }\\n chooseAudioOutputDevice(_deviceId) {\\n return Promise.reject();\\n }\\n addDeviceChangeObserver(_observer) { }\\n removeDeviceChangeObserver(_observer) { }\\n createAnalyserNodeForAudioInput() {\\n return null;\\n }\\n startVideoPreviewForVideoInput(_element) { }\\n stopVideoPreviewForVideoInput(_element) { }\\n setDeviceLabelTrigger(_trigger) { }\\n mixIntoAudioInput(_stream) {\\n return null;\\n }\\n chooseVideoInputQuality(_width, _height, _frameRate, _maxBandwidthKbps) { }\\n getVideoInputQualitySettings() {\\n return null;\\n }\\n}\\nexports[\\\"default\\\"] = NoOpDeviceController;\\nclass DestroyableNoOpDeviceController extends NoOpDeviceController {\\n constructor() {\\n super(...arguments);\\n this.destroyed = false;\\n }\\n destroy() {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.destroyed = true;\\n });\\n }\\n}\\nexports.DestroyableNoOpDeviceController = DestroyableNoOpDeviceController;\\n//# sourceMappingURL=NoOpDeviceController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/NoOpDeviceController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotFoundError.js\":\n/*!**********************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotFoundError.js ***!\n \\**********************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst GetUserMediaError_1 = __webpack_require__(/*! ./GetUserMediaError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\\\");\\nclass NotFoundError extends GetUserMediaError_1.default {\\n constructor(cause) {\\n super(cause);\\n }\\n}\\nexports[\\\"default\\\"] = NotFoundError;\\n//# sourceMappingURL=NotFoundError.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotFoundError.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotReadableError.js\":\n/*!*************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotReadableError.js ***!\n \\*************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst GetUserMediaError_1 = __webpack_require__(/*! ./GetUserMediaError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\\\");\\nclass NotReadableError extends GetUserMediaError_1.default {\\n constructor(cause) {\\n super(cause);\\n }\\n}\\nexports[\\\"default\\\"] = NotReadableError;\\n//# sourceMappingURL=NotReadableError.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotReadableError.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/OverconstrainedError.js\":\n/*!*****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/OverconstrainedError.js ***!\n \\*****************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst GetUserMediaError_1 = __webpack_require__(/*! ./GetUserMediaError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\\\");\\nclass OverconstrainedError extends GetUserMediaError_1.default {\\n constructor(cause, constraint) {\\n super(cause);\\n this.constraint = constraint;\\n }\\n}\\nexports[\\\"default\\\"] = OverconstrainedError;\\n//# sourceMappingURL=OverconstrainedError.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/OverconstrainedError.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/PermissionDeniedError.js\":\n/*!******************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/PermissionDeniedError.js ***!\n \\******************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst GetUserMediaError_1 = __webpack_require__(/*! ./GetUserMediaError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\\\");\\nclass PermissionDeniedError extends GetUserMediaError_1.default {\\n constructor(cause, message) {\\n super(cause, message);\\n }\\n}\\nexports[\\\"default\\\"] = PermissionDeniedError;\\n//# sourceMappingURL=PermissionDeniedError.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/PermissionDeniedError.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/SingleNodeAudioTransformDevice.js\":\n/*!***************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/SingleNodeAudioTransformDevice.js ***!\n \\***************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * This class simplifies the process of defining a transform device that\\n * does not modify its input device constraints, and provides only a single audio node\\n * to apply transforms.\\n *\\n * Subclass `SingleNodeAudioTransformDevice`, implementing `createSingleAudioNode`.\\n */\\nclass SingleNodeAudioTransformDevice {\\n constructor(inner) {\\n this.inner = inner;\\n }\\n mute(_muted) {\\n return __awaiter(this, void 0, void 0, function* () { });\\n }\\n /**\\n * `stop` should be called by the application to free any resources associated\\n * with the device (e.g., workers).\\n *\\n * After this is called, the device should be discarded.\\n */\\n stop() {\\n var _a;\\n return __awaiter(this, void 0, void 0, function* () {\\n (_a = this.node) === null || _a === void 0 ? void 0 : _a.disconnect();\\n });\\n }\\n /**\\n * Return the inner {@link Device} that the device controller should select as part\\n * of the application of this `AudioTransformDevice`.\\n */\\n intrinsicDevice() {\\n return __awaiter(this, void 0, void 0, function* () {\\n return this.inner;\\n });\\n }\\n /**\\n * Optionally return a pair of `AudioNode`s that should be connected to the applied inner\\n * device. The two nodes can be the same, indicating the smallest possible subgraph.\\n *\\n * @param context The `AudioContext` to use when instantiating the nodes.\\n */\\n createAudioNode(context) {\\n var _a;\\n return __awaiter(this, void 0, void 0, function* () {\\n (_a = this.node) === null || _a === void 0 ? void 0 : _a.disconnect();\\n this.node = yield this.createSingleAudioNode(context);\\n return {\\n start: this.node,\\n end: this.node,\\n };\\n });\\n }\\n}\\nexports[\\\"default\\\"] = SingleNodeAudioTransformDevice;\\n//# sourceMappingURL=SingleNodeAudioTransformDevice.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/SingleNodeAudioTransformDevice.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/TypeError.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/TypeError.js ***!\n \\******************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst GetUserMediaError_1 = __webpack_require__(/*! ./GetUserMediaError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\\\");\\nclass TypeError extends GetUserMediaError_1.default {\\n constructor(cause) {\\n super(cause);\\n }\\n}\\nexports[\\\"default\\\"] = TypeError;\\n//# sourceMappingURL=TypeError.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/TypeError.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoQualitySettings.js\":\n/*!*****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoQualitySettings.js ***!\n \\*****************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass VideoQualitySettings {\\n constructor(videoWidth, videoHeight, videoFrameRate, videoMaxBandwidthKbps) {\\n this.videoWidth = videoWidth;\\n this.videoHeight = videoHeight;\\n this.videoFrameRate = videoFrameRate;\\n this.videoMaxBandwidthKbps = videoMaxBandwidthKbps;\\n }\\n}\\nexports[\\\"default\\\"] = VideoQualitySettings;\\n//# sourceMappingURL=VideoQualitySettings.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoQualitySettings.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoTransformDevice.js\":\n/*!*****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoTransformDevice.js ***!\n \\*****************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.isVideoTransformDevice = void 0;\\n/**\\n * `isVideoTransformDevice` is a type guard for {@link VideoTransformDevice}.\\n *\\n * @param device the value to check.\\n */\\nfunction isVideoTransformDevice(device) {\\n return (!!device &&\\n typeof device === 'object' &&\\n 'transformStream' in device &&\\n 'stop' in device &&\\n 'intrinsicDevice' in device);\\n}\\nexports.isVideoTransformDevice = isVideoTransformDevice;\\n//# sourceMappingURL=VideoTransformDevice.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoTransformDevice.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicepixelratiomonitor/DefaultDevicePixelRatioMonitor.js\":\n/*!**********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicepixelratiomonitor/DefaultDevicePixelRatioMonitor.js ***!\n \\**********************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass DefaultDevicePixelRatioMonitor {\\n constructor(devicePixelRatioSource, logger) {\\n this.devicePixelRatioSource = devicePixelRatioSource;\\n this.observerQueue = new Set();\\n this.mediaQueryListener = () => {\\n this.observerQueue.forEach(tileObserver => {\\n tileObserver.devicePixelRatioChanged(this.devicePixelRatioSource.devicePixelRatio());\\n });\\n };\\n if (typeof window === 'undefined') {\\n return;\\n }\\n const mediaQueryList = matchMedia(`(resolution: ${this.devicePixelRatioSource.devicePixelRatio()}dppx)`);\\n if (typeof mediaQueryList.addEventListener === 'function') {\\n mediaQueryList.addEventListener('change', this.mediaQueryListener);\\n this.mediaQueryList = mediaQueryList;\\n }\\n else if (typeof mediaQueryList.addListener === 'function') {\\n mediaQueryList.addListener(this.mediaQueryListener);\\n this.mediaQueryList = mediaQueryList;\\n }\\n else {\\n logger.warn('ignoring DefaultDevicePixelRatioMonitor');\\n }\\n }\\n destroy() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.mediaQueryList) {\\n if (typeof this.mediaQueryList.addEventListener === 'function') {\\n this.mediaQueryList.removeEventListener('change', this.mediaQueryListener);\\n }\\n else {\\n this.mediaQueryList.removeListener(this.mediaQueryListener);\\n }\\n }\\n delete this.mediaQueryListener;\\n this.observerQueue.clear();\\n });\\n }\\n registerObserver(observer) {\\n this.observerQueue.add(observer);\\n observer.devicePixelRatioChanged(this.devicePixelRatioSource.devicePixelRatio());\\n }\\n removeObserver(observer) {\\n this.observerQueue.delete(observer);\\n }\\n}\\nexports[\\\"default\\\"] = DefaultDevicePixelRatioMonitor;\\n//# sourceMappingURL=DefaultDevicePixelRatioMonitor.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicepixelratiomonitor/DefaultDevicePixelRatioMonitor.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicepixelratiosource/DevicePixelRatioWindowSource.js\":\n/*!*******************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicepixelratiosource/DevicePixelRatioWindowSource.js ***!\n \\*******************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass DevicePixelRatioWindowSource {\\n devicePixelRatio() {\\n if (typeof window === 'undefined' || !window || !window.devicePixelRatio) {\\n return 1;\\n }\\n return window.devicePixelRatio;\\n }\\n}\\nexports[\\\"default\\\"] = DevicePixelRatioWindowSource;\\n//# sourceMappingURL=DevicePixelRatioWindowSource.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicepixelratiosource/DevicePixelRatioWindowSource.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/eventcontroller/DefaultEventController.js\":\n/*!******************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/eventcontroller/DefaultEventController.js ***!\n \\******************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst ua_parser_js_1 = __webpack_require__(/*! ua-parser-js */ \\\"./node_modules/ua-parser-js/src/ua-parser.js\\\");\\nconst Versioning_1 = __webpack_require__(/*! ../versioning/Versioning */ \\\"./node_modules/amazon-chime-sdk-js/build/versioning/Versioning.js\\\");\\nclass DefaultEventController {\\n constructor(audioVideoController) {\\n var _a, _b, _c, _d, _e, _f, _g;\\n this.audioVideoController = audioVideoController;\\n /** @internal */\\n this.meetingHistoryStates = [];\\n try {\\n this.parserResult =\\n navigator && navigator.userAgent ? new ua_parser_js_1.UAParser(navigator.userAgent).getResult() : null;\\n }\\n catch (error) {\\n audioVideoController.logger.error(error.message);\\n }\\n this.browserMajorVersion =\\n ((_c = (_b = (_a = this.parserResult) === null || _a === void 0 ? void 0 : _a.browser) === null || _b === void 0 ? void 0 : _b.version) === null || _c === void 0 ? void 0 : _c.split('.')[0]) || DefaultEventController.UNAVAILABLE;\\n this.browserName = ((_d = this.parserResult) === null || _d === void 0 ? void 0 : _d.browser.name) || DefaultEventController.UNAVAILABLE;\\n this.browserVersion = ((_e = this.parserResult) === null || _e === void 0 ? void 0 : _e.browser.version) || DefaultEventController.UNAVAILABLE;\\n this.deviceName =\\n [((_f = this.parserResult) === null || _f === void 0 ? void 0 : _f.device.vendor) || '', ((_g = this.parserResult) === null || _g === void 0 ? void 0 : _g.device.model) || '']\\n .join(' ')\\n .trim() || DefaultEventController.UNAVAILABLE;\\n }\\n publishEvent(name, attributes) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const timestampMs = Date.now();\\n yield this.pushMeetingState(name, timestampMs);\\n // Make a single frozen copy of the event, reusing the object returned by\\n // `getAttributes` to avoid copying too much.\\n const eventAttributes = Object.freeze(Object.assign(this.getAttributes(timestampMs), attributes));\\n this.audioVideoController.forEachObserver((observer) => {\\n if (observer.eventDidReceive) {\\n observer.eventDidReceive(name, eventAttributes);\\n }\\n });\\n });\\n }\\n pushMeetingState(state, timestampMs = Date.now()) {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.meetingHistoryStates.push({\\n name: state,\\n timestampMs,\\n });\\n });\\n }\\n getAttributes(timestampMs) {\\n var _a, _b;\\n return {\\n attendeeId: this.audioVideoController.configuration.credentials.attendeeId,\\n browserMajorVersion: this.browserMajorVersion,\\n browserName: this.browserName,\\n browserVersion: this.browserVersion,\\n deviceName: this.deviceName,\\n externalMeetingId: typeof this.audioVideoController.configuration.externalMeetingId === 'string'\\n ? this.audioVideoController.configuration.externalMeetingId\\n : '',\\n externalUserId: this.audioVideoController.configuration.credentials.externalUserId,\\n meetingHistory: this.meetingHistoryStates,\\n meetingId: this.audioVideoController.configuration.meetingId,\\n osName: ((_a = this.parserResult) === null || _a === void 0 ? void 0 : _a.os.name) || DefaultEventController.UNAVAILABLE,\\n osVersion: ((_b = this.parserResult) === null || _b === void 0 ? void 0 : _b.os.version) || DefaultEventController.UNAVAILABLE,\\n sdkVersion: Versioning_1.default.sdkVersion,\\n sdkName: Versioning_1.default.sdkName,\\n timestampMs,\\n };\\n }\\n}\\nexports[\\\"default\\\"] = DefaultEventController;\\n/** @internal */\\nDefaultEventController.UNAVAILABLE = 'Unavailable';\\n//# sourceMappingURL=DefaultEventController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/eventcontroller/DefaultEventController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/index.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/index.js ***!\n \\*********************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.DefaultPingPong = exports.DefaultModality = exports.DefaultMessagingSession = exports.DefaultMeetingSession = exports.DefaultMeetingReadinessChecker = exports.DefaultMediaDeviceFactory = exports.DefaultEventController = exports.DefaultDevicePixelRatioMonitor = exports.DefaultDeviceController = exports.DefaultContentShareController = exports.DefaultClientMetricReport = exports.DefaultBrowserBehavior = exports.DefaultAudioVideoFacade = exports.DefaultAudioVideoController = exports.DefaultAudioMixController = exports.DefaultActiveSpeakerPolicy = exports.DefaultActiveSpeakerDetector = exports.DataMessage = exports.CreateSDPTask = exports.CreatePeerConnectionTask = exports.ContentShareMediaStreamBroker = exports.ContentShareConstants = exports.ConsoleLogger = exports.ConnectionHealthPolicyConfiguration = exports.ConnectionHealthData = exports.ClientVideoStreamReceivingReport = exports.ClientMetricReportMediaType = exports.ClientMetricReportDirection = exports.CleanStoppedSessionTask = exports.CleanRestartedSessionTask = exports.CheckVideoInputFeedback = exports.CheckVideoConnectivityFeedback = exports.CheckNetworkUDPConnectivityFeedback = exports.CheckNetworkTCPConnectivityFeedback = exports.CheckContentShareConnectivityFeedback = exports.CheckCameraResolutionFeedback = exports.CheckAudioOutputFeedback = exports.CheckAudioInputFeedback = exports.CheckAudioConnectivityFeedback = exports.CanvasVideoFrameBuffer = exports.BitrateParameters = exports.BaseTask = exports.BaseConnectionHealthPolicy = exports.AudioVideoControllerState = exports.AudioProfile = exports.AudioLogEvent = exports.Attendee = exports.AttachMediaInputTask = exports.AsyncScheduler = exports.AllHighestVideoBandwidthPolicy = void 0;\\nexports.MultiLogger = exports.MonitorTask = exports.MessagingSessionConfiguration = exports.Message = exports.MeetingSessionVideoAvailability = exports.MeetingSessionURLs = exports.MeetingSessionTURNCredentials = exports.MeetingSessionStatusCode = exports.MeetingSessionStatus = exports.MeetingSessionPOSTLogger = exports.MeetingSessionLifecycleEventCondition = exports.MeetingSessionLifecycleEvent = exports.MeetingSessionCredentials = exports.MeetingSessionConfiguration = exports.MeetingReadinessCheckerConfiguration = exports.MediaDeviceProxyHandler = exports.Maybe = exports.LogLevel = exports.Log = exports.ListenForVolumeIndicatorsTask = exports.LeaveAndReceiveLeaveAckTask = exports.JoinAndReceiveIndexTask = exports.IntervalScheduler = exports.GlobalMetricReport = exports.GetUserMediaError = exports.FullJitterLimitedBackoff = exports.FullJitterBackoffFactory = exports.FullJitterBackoff = exports.FinishGatheringICECandidatesTask = exports.DeviceSelection = exports.DevicePixelRatioWindowSource = exports.DefaultWebSocketAdapter = exports.DefaultVolumeIndicatorAdapter = exports.DefaultVideoTransformDevice = exports.DefaultVideoTileFactory = exports.DefaultVideoTileController = exports.DefaultVideoTile = exports.DefaultVideoStreamIndex = exports.DefaultVideoStreamIdSet = exports.DefaultVideoFrameProcessorPipeline = exports.DefaultVideoCaptureAndEncodeParameter = exports.DefaultTransceiverController = exports.DefaultStatsCollector = exports.DefaultSimulcastUplinkPolicy = exports.DefaultSignalingClient = exports.DefaultSigV4 = exports.DefaultSessionStateController = exports.DefaultSDP = exports.DefaultReconnectController = exports.DefaultRealtimeController = void 0;\\nexports.TaskStatus = exports.SubscribeAndReceiveSubscribeAckTask = exports.StreamMetricReport = exports.Some = exports.SingleNodeAudioTransformDevice = exports.SimulcastVideoStreamIndex = exports.SimulcastTransceiverController = exports.SimulcastLayers = exports.SignalingClientSubscribe = exports.SignalingClientJoin = exports.SignalingClientEventType = exports.SignalingClientEvent = exports.SignalingClientConnectionRequest = exports.SignalingAndMetricsConnectionMonitor = exports.SetRemoteDescriptionTask = exports.SetLocalDescriptionTask = exports.SessionStateControllerTransitionResult = exports.SessionStateControllerState = exports.SessionStateControllerDeferPriority = exports.SessionStateControllerAction = exports.SerialGroupTask = exports.SendAndReceiveDataMessagesTask = exports.SDPCandidateType = exports.RunnableTask = exports.ReconnectionHealthPolicy = exports.ReceiveVideoStreamIndexTask = exports.ReceiveVideoInputTask = exports.ReceiveTURNCredentialsTask = exports.ReceiveAudioInputTask = exports.RealtimeVolumeIndicator = exports.RealtimeState = exports.RealtimeAttendeePositionInFrame = exports.PermissionDeniedError = exports.ParallelGroupTask = exports.OverconstrainedError = exports.OpenSignalingConnectionTask = exports.NotReadableError = exports.NotFoundError = exports.None = exports.NoVideoUplinkBandwidthPolicy = exports.NoVideoDownlinkBandwidthPolicy = exports.NoOpVideoFrameProcessor = exports.NoOpVideoElementFactory = exports.NoOpTask = exports.NoOpMediaStreamBroker = exports.NoOpLogger = exports.NoOpDeviceController = exports.NoOpDebugLogger = exports.NoOpAudioVideoController = exports.NScaleVideoUplinkBandwidthPolicy = void 0;\\nexports.isVideoTransformDevice = exports.isDestroyable = exports.isAudioTransformDevice = exports.WebSocketReadyState = exports.WaitForAttendeePresenceTask = exports.VoiceFocusTransformDevice = exports.VoiceFocusDeviceTransformer = exports.VideoTileState = exports.VideoStreamDescription = exports.VideoSource = exports.VideoQualitySettings = exports.VideoLogEvent = exports.VideoAdaptiveProbePolicy = exports.Versioning = exports.UnusableAudioWarningConnectionHealthPolicy = exports.TypeError = exports.TimeoutTask = exports.TimeoutScheduler = void 0;\\nconst AllHighestVideoBandwidthPolicy_1 = __webpack_require__(/*! ./videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy.js\\\");\\nexports.AllHighestVideoBandwidthPolicy = AllHighestVideoBandwidthPolicy_1.default;\\nconst AsyncScheduler_1 = __webpack_require__(/*! ./scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nexports.AsyncScheduler = AsyncScheduler_1.default;\\nconst AttachMediaInputTask_1 = __webpack_require__(/*! ./task/AttachMediaInputTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/AttachMediaInputTask.js\\\");\\nexports.AttachMediaInputTask = AttachMediaInputTask_1.default;\\nconst Attendee_1 = __webpack_require__(/*! ./attendee/Attendee */ \\\"./node_modules/amazon-chime-sdk-js/build/attendee/Attendee.js\\\");\\nexports.Attendee = Attendee_1.default;\\nconst AudioLogEvent_1 = __webpack_require__(/*! ./statscollector/AudioLogEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/statscollector/AudioLogEvent.js\\\");\\nexports.AudioLogEvent = AudioLogEvent_1.default;\\nconst AudioProfile_1 = __webpack_require__(/*! ./audioprofile/AudioProfile */ \\\"./node_modules/amazon-chime-sdk-js/build/audioprofile/AudioProfile.js\\\");\\nexports.AudioProfile = AudioProfile_1.default;\\nconst AudioVideoControllerState_1 = __webpack_require__(/*! ./audiovideocontroller/AudioVideoControllerState */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/AudioVideoControllerState.js\\\");\\nexports.AudioVideoControllerState = AudioVideoControllerState_1.default;\\nconst BaseConnectionHealthPolicy_1 = __webpack_require__(/*! ./connectionhealthpolicy/BaseConnectionHealthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/BaseConnectionHealthPolicy.js\\\");\\nexports.BaseConnectionHealthPolicy = BaseConnectionHealthPolicy_1.default;\\nconst BaseTask_1 = __webpack_require__(/*! ./task/BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\nexports.BaseTask = BaseTask_1.default;\\nconst BitrateParameters_1 = __webpack_require__(/*! ./videouplinkbandwidthpolicy/BitrateParameters */ \\\"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/BitrateParameters.js\\\");\\nexports.BitrateParameters = BitrateParameters_1.default;\\nconst CanvasVideoFrameBuffer_1 = __webpack_require__(/*! ./videoframeprocessor/CanvasVideoFrameBuffer */ \\\"./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/CanvasVideoFrameBuffer.js\\\");\\nexports.CanvasVideoFrameBuffer = CanvasVideoFrameBuffer_1.default;\\nconst CheckAudioConnectivityFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckAudioConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioConnectivityFeedback.js\\\");\\nexports.CheckAudioConnectivityFeedback = CheckAudioConnectivityFeedback_1.default;\\nconst CheckAudioInputFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckAudioInputFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioInputFeedback.js\\\");\\nexports.CheckAudioInputFeedback = CheckAudioInputFeedback_1.default;\\nconst CheckAudioOutputFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckAudioOutputFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioOutputFeedback.js\\\");\\nexports.CheckAudioOutputFeedback = CheckAudioOutputFeedback_1.default;\\nconst CheckCameraResolutionFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckCameraResolutionFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckCameraResolutionFeedback.js\\\");\\nexports.CheckCameraResolutionFeedback = CheckCameraResolutionFeedback_1.default;\\nconst CheckContentShareConnectivityFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckContentShareConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckContentShareConnectivityFeedback.js\\\");\\nexports.CheckContentShareConnectivityFeedback = CheckContentShareConnectivityFeedback_1.default;\\nconst CheckNetworkTCPConnectivityFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckNetworkTCPConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkTCPConnectivityFeedback.js\\\");\\nexports.CheckNetworkTCPConnectivityFeedback = CheckNetworkTCPConnectivityFeedback_1.default;\\nconst CheckNetworkUDPConnectivityFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckNetworkUDPConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkUDPConnectivityFeedback.js\\\");\\nexports.CheckNetworkUDPConnectivityFeedback = CheckNetworkUDPConnectivityFeedback_1.default;\\nconst CheckVideoConnectivityFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckVideoConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoConnectivityFeedback.js\\\");\\nexports.CheckVideoConnectivityFeedback = CheckVideoConnectivityFeedback_1.default;\\nconst CheckVideoInputFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckVideoInputFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoInputFeedback.js\\\");\\nexports.CheckVideoInputFeedback = CheckVideoInputFeedback_1.default;\\nconst CleanRestartedSessionTask_1 = __webpack_require__(/*! ./task/CleanRestartedSessionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CleanRestartedSessionTask.js\\\");\\nexports.CleanRestartedSessionTask = CleanRestartedSessionTask_1.default;\\nconst CleanStoppedSessionTask_1 = __webpack_require__(/*! ./task/CleanStoppedSessionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CleanStoppedSessionTask.js\\\");\\nexports.CleanStoppedSessionTask = CleanStoppedSessionTask_1.default;\\nconst ClientMetricReportDirection_1 = __webpack_require__(/*! ./clientmetricreport/ClientMetricReportDirection */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportDirection.js\\\");\\nexports.ClientMetricReportDirection = ClientMetricReportDirection_1.default;\\nconst ClientMetricReportMediaType_1 = __webpack_require__(/*! ./clientmetricreport/ClientMetricReportMediaType */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportMediaType.js\\\");\\nexports.ClientMetricReportMediaType = ClientMetricReportMediaType_1.default;\\nconst ClientVideoStreamReceivingReport_1 = __webpack_require__(/*! ./clientmetricreport/ClientVideoStreamReceivingReport */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientVideoStreamReceivingReport.js\\\");\\nexports.ClientVideoStreamReceivingReport = ClientVideoStreamReceivingReport_1.default;\\nconst ConnectionHealthData_1 = __webpack_require__(/*! ./connectionhealthpolicy/ConnectionHealthData */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthData.js\\\");\\nexports.ConnectionHealthData = ConnectionHealthData_1.default;\\nconst ConnectionHealthPolicyConfiguration_1 = __webpack_require__(/*! ./connectionhealthpolicy/ConnectionHealthPolicyConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthPolicyConfiguration.js\\\");\\nexports.ConnectionHealthPolicyConfiguration = ConnectionHealthPolicyConfiguration_1.default;\\nconst ConsoleLogger_1 = __webpack_require__(/*! ./logger/ConsoleLogger */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/ConsoleLogger.js\\\");\\nexports.ConsoleLogger = ConsoleLogger_1.default;\\nconst ContentShareConstants_1 = __webpack_require__(/*! ./contentsharecontroller/ContentShareConstants */ \\\"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareConstants.js\\\");\\nexports.ContentShareConstants = ContentShareConstants_1.default;\\nconst ContentShareMediaStreamBroker_1 = __webpack_require__(/*! ./contentsharecontroller/ContentShareMediaStreamBroker */ \\\"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareMediaStreamBroker.js\\\");\\nexports.ContentShareMediaStreamBroker = ContentShareMediaStreamBroker_1.default;\\nconst CreatePeerConnectionTask_1 = __webpack_require__(/*! ./task/CreatePeerConnectionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CreatePeerConnectionTask.js\\\");\\nexports.CreatePeerConnectionTask = CreatePeerConnectionTask_1.default;\\nconst CreateSDPTask_1 = __webpack_require__(/*! ./task/CreateSDPTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CreateSDPTask.js\\\");\\nexports.CreateSDPTask = CreateSDPTask_1.default;\\nconst DataMessage_1 = __webpack_require__(/*! ./datamessage/DataMessage */ \\\"./node_modules/amazon-chime-sdk-js/build/datamessage/DataMessage.js\\\");\\nexports.DataMessage = DataMessage_1.default;\\nconst DefaultActiveSpeakerDetector_1 = __webpack_require__(/*! ./activespeakerdetector/DefaultActiveSpeakerDetector */ \\\"./node_modules/amazon-chime-sdk-js/build/activespeakerdetector/DefaultActiveSpeakerDetector.js\\\");\\nexports.DefaultActiveSpeakerDetector = DefaultActiveSpeakerDetector_1.default;\\nconst DefaultActiveSpeakerPolicy_1 = __webpack_require__(/*! ./activespeakerpolicy/DefaultActiveSpeakerPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/activespeakerpolicy/DefaultActiveSpeakerPolicy.js\\\");\\nexports.DefaultActiveSpeakerPolicy = DefaultActiveSpeakerPolicy_1.default;\\nconst DefaultAudioMixController_1 = __webpack_require__(/*! ./audiomixcontroller/DefaultAudioMixController */ \\\"./node_modules/amazon-chime-sdk-js/build/audiomixcontroller/DefaultAudioMixController.js\\\");\\nexports.DefaultAudioMixController = DefaultAudioMixController_1.default;\\nconst DefaultAudioVideoController_1 = __webpack_require__(/*! ./audiovideocontroller/DefaultAudioVideoController */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/DefaultAudioVideoController.js\\\");\\nexports.DefaultAudioVideoController = DefaultAudioVideoController_1.default;\\nconst DefaultAudioVideoFacade_1 = __webpack_require__(/*! ./audiovideofacade/DefaultAudioVideoFacade */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideofacade/DefaultAudioVideoFacade.js\\\");\\nexports.DefaultAudioVideoFacade = DefaultAudioVideoFacade_1.default;\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ./browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nexports.DefaultBrowserBehavior = DefaultBrowserBehavior_1.default;\\nconst DefaultClientMetricReport_1 = __webpack_require__(/*! ./clientmetricreport/DefaultClientMetricReport */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/DefaultClientMetricReport.js\\\");\\nexports.DefaultClientMetricReport = DefaultClientMetricReport_1.default;\\nconst DefaultContentShareController_1 = __webpack_require__(/*! ./contentsharecontroller/DefaultContentShareController */ \\\"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/DefaultContentShareController.js\\\");\\nexports.DefaultContentShareController = DefaultContentShareController_1.default;\\nconst DefaultDeviceController_1 = __webpack_require__(/*! ./devicecontroller/DefaultDeviceController */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/DefaultDeviceController.js\\\");\\nexports.DefaultDeviceController = DefaultDeviceController_1.default;\\nconst DefaultDevicePixelRatioMonitor_1 = __webpack_require__(/*! ./devicepixelratiomonitor/DefaultDevicePixelRatioMonitor */ \\\"./node_modules/amazon-chime-sdk-js/build/devicepixelratiomonitor/DefaultDevicePixelRatioMonitor.js\\\");\\nexports.DefaultDevicePixelRatioMonitor = DefaultDevicePixelRatioMonitor_1.default;\\nconst DefaultEventController_1 = __webpack_require__(/*! ./eventcontroller/DefaultEventController */ \\\"./node_modules/amazon-chime-sdk-js/build/eventcontroller/DefaultEventController.js\\\");\\nexports.DefaultEventController = DefaultEventController_1.default;\\nconst DefaultMediaDeviceFactory_1 = __webpack_require__(/*! ./mediadevicefactory/DefaultMediaDeviceFactory */ \\\"./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/DefaultMediaDeviceFactory.js\\\");\\nexports.DefaultMediaDeviceFactory = DefaultMediaDeviceFactory_1.default;\\nconst DefaultMeetingReadinessChecker_1 = __webpack_require__(/*! ./meetingreadinesschecker/DefaultMeetingReadinessChecker */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/DefaultMeetingReadinessChecker.js\\\");\\nexports.DefaultMeetingReadinessChecker = DefaultMeetingReadinessChecker_1.default;\\nconst DefaultMeetingSession_1 = __webpack_require__(/*! ./meetingsession/DefaultMeetingSession */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/DefaultMeetingSession.js\\\");\\nexports.DefaultMeetingSession = DefaultMeetingSession_1.default;\\nconst DefaultMessagingSession_1 = __webpack_require__(/*! ./messagingsession/DefaultMessagingSession */ \\\"./node_modules/amazon-chime-sdk-js/build/messagingsession/DefaultMessagingSession.js\\\");\\nexports.DefaultMessagingSession = DefaultMessagingSession_1.default;\\nconst DefaultModality_1 = __webpack_require__(/*! ./modality/DefaultModality */ \\\"./node_modules/amazon-chime-sdk-js/build/modality/DefaultModality.js\\\");\\nexports.DefaultModality = DefaultModality_1.default;\\nconst DefaultPingPong_1 = __webpack_require__(/*! ./pingpong/DefaultPingPong */ \\\"./node_modules/amazon-chime-sdk-js/build/pingpong/DefaultPingPong.js\\\");\\nexports.DefaultPingPong = DefaultPingPong_1.default;\\nconst DefaultRealtimeController_1 = __webpack_require__(/*! ./realtimecontroller/DefaultRealtimeController */ \\\"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/DefaultRealtimeController.js\\\");\\nexports.DefaultRealtimeController = DefaultRealtimeController_1.default;\\nconst DefaultReconnectController_1 = __webpack_require__(/*! ./reconnectcontroller/DefaultReconnectController */ \\\"./node_modules/amazon-chime-sdk-js/build/reconnectcontroller/DefaultReconnectController.js\\\");\\nexports.DefaultReconnectController = DefaultReconnectController_1.default;\\nconst DefaultSDP_1 = __webpack_require__(/*! ./sdp/DefaultSDP */ \\\"./node_modules/amazon-chime-sdk-js/build/sdp/DefaultSDP.js\\\");\\nexports.DefaultSDP = DefaultSDP_1.default;\\nconst DefaultSessionStateController_1 = __webpack_require__(/*! ./sessionstatecontroller/DefaultSessionStateController */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/DefaultSessionStateController.js\\\");\\nexports.DefaultSessionStateController = DefaultSessionStateController_1.default;\\nconst DefaultSigV4_1 = __webpack_require__(/*! ./sigv4/DefaultSigV4 */ \\\"./node_modules/amazon-chime-sdk-js/build/sigv4/DefaultSigV4.js\\\");\\nexports.DefaultSigV4 = DefaultSigV4_1.default;\\nconst DefaultSignalingClient_1 = __webpack_require__(/*! ./signalingclient/DefaultSignalingClient */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/DefaultSignalingClient.js\\\");\\nexports.DefaultSignalingClient = DefaultSignalingClient_1.default;\\nconst DefaultSimulcastUplinkPolicy_1 = __webpack_require__(/*! ./videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicy.js\\\");\\nexports.DefaultSimulcastUplinkPolicy = DefaultSimulcastUplinkPolicy_1.default;\\nconst DefaultStatsCollector_1 = __webpack_require__(/*! ./statscollector/DefaultStatsCollector */ \\\"./node_modules/amazon-chime-sdk-js/build/statscollector/DefaultStatsCollector.js\\\");\\nexports.DefaultStatsCollector = DefaultStatsCollector_1.default;\\nconst DefaultTransceiverController_1 = __webpack_require__(/*! ./transceivercontroller/DefaultTransceiverController */ \\\"./node_modules/amazon-chime-sdk-js/build/transceivercontroller/DefaultTransceiverController.js\\\");\\nexports.DefaultTransceiverController = DefaultTransceiverController_1.default;\\nconst DefaultVideoCaptureAndEncodeParameter_1 = __webpack_require__(/*! ./videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter */ \\\"./node_modules/amazon-chime-sdk-js/build/videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter.js\\\");\\nexports.DefaultVideoCaptureAndEncodeParameter = DefaultVideoCaptureAndEncodeParameter_1.default;\\nconst DefaultVideoFrameProcessorPipeline_1 = __webpack_require__(/*! ./videoframeprocessor/DefaultVideoFrameProcessorPipeline */ \\\"./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/DefaultVideoFrameProcessorPipeline.js\\\");\\nexports.DefaultVideoFrameProcessorPipeline = DefaultVideoFrameProcessorPipeline_1.default;\\nconst DefaultVideoStreamIdSet_1 = __webpack_require__(/*! ./videostreamidset/DefaultVideoStreamIdSet */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamidset/DefaultVideoStreamIdSet.js\\\");\\nexports.DefaultVideoStreamIdSet = DefaultVideoStreamIdSet_1.default;\\nconst DefaultVideoStreamIndex_1 = __webpack_require__(/*! ./videostreamindex/DefaultVideoStreamIndex */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamindex/DefaultVideoStreamIndex.js\\\");\\nexports.DefaultVideoStreamIndex = DefaultVideoStreamIndex_1.default;\\nconst DefaultVideoTile_1 = __webpack_require__(/*! ./videotile/DefaultVideoTile */ \\\"./node_modules/amazon-chime-sdk-js/build/videotile/DefaultVideoTile.js\\\");\\nexports.DefaultVideoTile = DefaultVideoTile_1.default;\\nconst DefaultVideoTileController_1 = __webpack_require__(/*! ./videotilecontroller/DefaultVideoTileController */ \\\"./node_modules/amazon-chime-sdk-js/build/videotilecontroller/DefaultVideoTileController.js\\\");\\nexports.DefaultVideoTileController = DefaultVideoTileController_1.default;\\nconst DefaultVideoTileFactory_1 = __webpack_require__(/*! ./videotilefactory/DefaultVideoTileFactory */ \\\"./node_modules/amazon-chime-sdk-js/build/videotilefactory/DefaultVideoTileFactory.js\\\");\\nexports.DefaultVideoTileFactory = DefaultVideoTileFactory_1.default;\\nconst DefaultVideoTransformDevice_1 = __webpack_require__(/*! ./videoframeprocessor/DefaultVideoTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/DefaultVideoTransformDevice.js\\\");\\nexports.DefaultVideoTransformDevice = DefaultVideoTransformDevice_1.default;\\nconst DefaultVolumeIndicatorAdapter_1 = __webpack_require__(/*! ./volumeindicatoradapter/DefaultVolumeIndicatorAdapter */ \\\"./node_modules/amazon-chime-sdk-js/build/volumeindicatoradapter/DefaultVolumeIndicatorAdapter.js\\\");\\nexports.DefaultVolumeIndicatorAdapter = DefaultVolumeIndicatorAdapter_1.default;\\nconst DefaultWebSocketAdapter_1 = __webpack_require__(/*! ./websocketadapter/DefaultWebSocketAdapter */ \\\"./node_modules/amazon-chime-sdk-js/build/websocketadapter/DefaultWebSocketAdapter.js\\\");\\nexports.DefaultWebSocketAdapter = DefaultWebSocketAdapter_1.default;\\nconst DevicePixelRatioWindowSource_1 = __webpack_require__(/*! ./devicepixelratiosource/DevicePixelRatioWindowSource */ \\\"./node_modules/amazon-chime-sdk-js/build/devicepixelratiosource/DevicePixelRatioWindowSource.js\\\");\\nexports.DevicePixelRatioWindowSource = DevicePixelRatioWindowSource_1.default;\\nconst DeviceSelection_1 = __webpack_require__(/*! ./devicecontroller/DeviceSelection */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/DeviceSelection.js\\\");\\nexports.DeviceSelection = DeviceSelection_1.default;\\nconst FinishGatheringICECandidatesTask_1 = __webpack_require__(/*! ./task/FinishGatheringICECandidatesTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/FinishGatheringICECandidatesTask.js\\\");\\nexports.FinishGatheringICECandidatesTask = FinishGatheringICECandidatesTask_1.default;\\nconst FullJitterBackoff_1 = __webpack_require__(/*! ./backoff/FullJitterBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js\\\");\\nexports.FullJitterBackoff = FullJitterBackoff_1.default;\\nconst FullJitterBackoffFactory_1 = __webpack_require__(/*! ./backoff/FullJitterBackoffFactory */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoffFactory.js\\\");\\nexports.FullJitterBackoffFactory = FullJitterBackoffFactory_1.default;\\nconst FullJitterLimitedBackoff_1 = __webpack_require__(/*! ./backoff/FullJitterLimitedBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterLimitedBackoff.js\\\");\\nexports.FullJitterLimitedBackoff = FullJitterLimitedBackoff_1.default;\\nconst GetUserMediaError_1 = __webpack_require__(/*! ./devicecontroller/GetUserMediaError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\\\");\\nexports.GetUserMediaError = GetUserMediaError_1.default;\\nconst GlobalMetricReport_1 = __webpack_require__(/*! ./clientmetricreport/GlobalMetricReport */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/GlobalMetricReport.js\\\");\\nexports.GlobalMetricReport = GlobalMetricReport_1.default;\\nconst IntervalScheduler_1 = __webpack_require__(/*! ./scheduler/IntervalScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js\\\");\\nexports.IntervalScheduler = IntervalScheduler_1.default;\\nconst JoinAndReceiveIndexTask_1 = __webpack_require__(/*! ./task/JoinAndReceiveIndexTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/JoinAndReceiveIndexTask.js\\\");\\nexports.JoinAndReceiveIndexTask = JoinAndReceiveIndexTask_1.default;\\nconst LeaveAndReceiveLeaveAckTask_1 = __webpack_require__(/*! ./task/LeaveAndReceiveLeaveAckTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/LeaveAndReceiveLeaveAckTask.js\\\");\\nexports.LeaveAndReceiveLeaveAckTask = LeaveAndReceiveLeaveAckTask_1.default;\\nconst ListenForVolumeIndicatorsTask_1 = __webpack_require__(/*! ./task/ListenForVolumeIndicatorsTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ListenForVolumeIndicatorsTask.js\\\");\\nexports.ListenForVolumeIndicatorsTask = ListenForVolumeIndicatorsTask_1.default;\\nconst Log_1 = __webpack_require__(/*! ./logger/Log */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/Log.js\\\");\\nexports.Log = Log_1.default;\\nconst LogLevel_1 = __webpack_require__(/*! ./logger/LogLevel */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js\\\");\\nexports.LogLevel = LogLevel_1.default;\\nconst Maybe_1 = __webpack_require__(/*! ./maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nexports.Maybe = Maybe_1.default;\\nconst MediaDeviceProxyHandler_1 = __webpack_require__(/*! ./mediadevicefactory/MediaDeviceProxyHandler */ \\\"./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/MediaDeviceProxyHandler.js\\\");\\nexports.MediaDeviceProxyHandler = MediaDeviceProxyHandler_1.default;\\nconst MeetingReadinessCheckerConfiguration_1 = __webpack_require__(/*! ./meetingreadinesschecker/MeetingReadinessCheckerConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/MeetingReadinessCheckerConfiguration.js\\\");\\nexports.MeetingReadinessCheckerConfiguration = MeetingReadinessCheckerConfiguration_1.default;\\nconst MeetingSessionConfiguration_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionConfiguration.js\\\");\\nexports.MeetingSessionConfiguration = MeetingSessionConfiguration_1.default;\\nconst MeetingSessionCredentials_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionCredentials */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionCredentials.js\\\");\\nexports.MeetingSessionCredentials = MeetingSessionCredentials_1.default;\\nconst MeetingSessionLifecycleEvent_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionLifecycleEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEvent.js\\\");\\nexports.MeetingSessionLifecycleEvent = MeetingSessionLifecycleEvent_1.default;\\nconst MeetingSessionLifecycleEventCondition_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionLifecycleEventCondition */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEventCondition.js\\\");\\nexports.MeetingSessionLifecycleEventCondition = MeetingSessionLifecycleEventCondition_1.default;\\nconst MeetingSessionPOSTLogger_1 = __webpack_require__(/*! ./logger/MeetingSessionPOSTLogger */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/MeetingSessionPOSTLogger.js\\\");\\nexports.MeetingSessionPOSTLogger = MeetingSessionPOSTLogger_1.default;\\nconst MeetingSessionStatus_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionStatus */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatus.js\\\");\\nexports.MeetingSessionStatus = MeetingSessionStatus_1.default;\\nconst MeetingSessionStatusCode_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionStatusCode */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js\\\");\\nexports.MeetingSessionStatusCode = MeetingSessionStatusCode_1.default;\\nconst MeetingSessionTURNCredentials_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionTURNCredentials */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionTURNCredentials.js\\\");\\nexports.MeetingSessionTURNCredentials = MeetingSessionTURNCredentials_1.default;\\nconst MeetingSessionURLs_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionURLs */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionURLs.js\\\");\\nexports.MeetingSessionURLs = MeetingSessionURLs_1.default;\\nconst MeetingSessionVideoAvailability_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionVideoAvailability */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionVideoAvailability.js\\\");\\nexports.MeetingSessionVideoAvailability = MeetingSessionVideoAvailability_1.default;\\nconst Message_1 = __webpack_require__(/*! ./message/Message */ \\\"./node_modules/amazon-chime-sdk-js/build/message/Message.js\\\");\\nexports.Message = Message_1.default;\\nconst MessagingSessionConfiguration_1 = __webpack_require__(/*! ./messagingsession/MessagingSessionConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/messagingsession/MessagingSessionConfiguration.js\\\");\\nexports.MessagingSessionConfiguration = MessagingSessionConfiguration_1.default;\\nconst MonitorTask_1 = __webpack_require__(/*! ./task/MonitorTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/MonitorTask.js\\\");\\nexports.MonitorTask = MonitorTask_1.default;\\nconst MultiLogger_1 = __webpack_require__(/*! ./logger/MultiLogger */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/MultiLogger.js\\\");\\nexports.MultiLogger = MultiLogger_1.default;\\nconst NScaleVideoUplinkBandwidthPolicy_1 = __webpack_require__(/*! ./videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.js\\\");\\nexports.NScaleVideoUplinkBandwidthPolicy = NScaleVideoUplinkBandwidthPolicy_1.default;\\nconst NoOpAudioVideoController_1 = __webpack_require__(/*! ./audiovideocontroller/NoOpAudioVideoController */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/NoOpAudioVideoController.js\\\");\\nexports.NoOpAudioVideoController = NoOpAudioVideoController_1.default;\\nconst NoOpDebugLogger_1 = __webpack_require__(/*! ./logger/NoOpDebugLogger */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/NoOpDebugLogger.js\\\");\\nexports.NoOpDebugLogger = NoOpDebugLogger_1.default;\\nconst NoOpDeviceController_1 = __webpack_require__(/*! ./devicecontroller/NoOpDeviceController */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NoOpDeviceController.js\\\");\\nexports.NoOpDeviceController = NoOpDeviceController_1.default;\\nconst NoOpLogger_1 = __webpack_require__(/*! ./logger/NoOpLogger */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/NoOpLogger.js\\\");\\nexports.NoOpLogger = NoOpLogger_1.default;\\nconst NoOpMediaStreamBroker_1 = __webpack_require__(/*! ./mediastreambroker/NoOpMediaStreamBroker */ \\\"./node_modules/amazon-chime-sdk-js/build/mediastreambroker/NoOpMediaStreamBroker.js\\\");\\nexports.NoOpMediaStreamBroker = NoOpMediaStreamBroker_1.default;\\nconst NoOpTask_1 = __webpack_require__(/*! ./task/NoOpTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/NoOpTask.js\\\");\\nexports.NoOpTask = NoOpTask_1.default;\\nconst NoOpVideoElementFactory_1 = __webpack_require__(/*! ./videoelementfactory/NoOpVideoElementFactory */ \\\"./node_modules/amazon-chime-sdk-js/build/videoelementfactory/NoOpVideoElementFactory.js\\\");\\nexports.NoOpVideoElementFactory = NoOpVideoElementFactory_1.default;\\nconst NoOpVideoFrameProcessor_1 = __webpack_require__(/*! ./videoframeprocessor/NoOpVideoFrameProcessor */ \\\"./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/NoOpVideoFrameProcessor.js\\\");\\nexports.NoOpVideoFrameProcessor = NoOpVideoFrameProcessor_1.default;\\nconst NoVideoDownlinkBandwidthPolicy_1 = __webpack_require__(/*! ./videodownlinkbandwidthpolicy/NoVideoDownlinkBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/NoVideoDownlinkBandwidthPolicy.js\\\");\\nexports.NoVideoDownlinkBandwidthPolicy = NoVideoDownlinkBandwidthPolicy_1.default;\\nconst NoVideoUplinkBandwidthPolicy_1 = __webpack_require__(/*! ./videouplinkbandwidthpolicy/NoVideoUplinkBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/NoVideoUplinkBandwidthPolicy.js\\\");\\nexports.NoVideoUplinkBandwidthPolicy = NoVideoUplinkBandwidthPolicy_1.default;\\nconst None_1 = __webpack_require__(/*! ./maybe/None */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/None.js\\\");\\nexports.None = None_1.default;\\nconst NotFoundError_1 = __webpack_require__(/*! ./devicecontroller/NotFoundError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotFoundError.js\\\");\\nexports.NotFoundError = NotFoundError_1.default;\\nconst NotReadableError_1 = __webpack_require__(/*! ./devicecontroller/NotReadableError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotReadableError.js\\\");\\nexports.NotReadableError = NotReadableError_1.default;\\nconst OpenSignalingConnectionTask_1 = __webpack_require__(/*! ./task/OpenSignalingConnectionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/OpenSignalingConnectionTask.js\\\");\\nexports.OpenSignalingConnectionTask = OpenSignalingConnectionTask_1.default;\\nconst OverconstrainedError_1 = __webpack_require__(/*! ./devicecontroller/OverconstrainedError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/OverconstrainedError.js\\\");\\nexports.OverconstrainedError = OverconstrainedError_1.default;\\nconst ParallelGroupTask_1 = __webpack_require__(/*! ./task/ParallelGroupTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ParallelGroupTask.js\\\");\\nexports.ParallelGroupTask = ParallelGroupTask_1.default;\\nconst PermissionDeniedError_1 = __webpack_require__(/*! ./devicecontroller/PermissionDeniedError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/PermissionDeniedError.js\\\");\\nexports.PermissionDeniedError = PermissionDeniedError_1.default;\\nconst RealtimeAttendeePositionInFrame_1 = __webpack_require__(/*! ./realtimecontroller/RealtimeAttendeePositionInFrame */ \\\"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeAttendeePositionInFrame.js\\\");\\nexports.RealtimeAttendeePositionInFrame = RealtimeAttendeePositionInFrame_1.default;\\nconst RealtimeState_1 = __webpack_require__(/*! ./realtimecontroller/RealtimeState */ \\\"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeState.js\\\");\\nexports.RealtimeState = RealtimeState_1.default;\\nconst RealtimeVolumeIndicator_1 = __webpack_require__(/*! ./realtimecontroller/RealtimeVolumeIndicator */ \\\"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeVolumeIndicator.js\\\");\\nexports.RealtimeVolumeIndicator = RealtimeVolumeIndicator_1.default;\\nconst ReceiveAudioInputTask_1 = __webpack_require__(/*! ./task/ReceiveAudioInputTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveAudioInputTask.js\\\");\\nexports.ReceiveAudioInputTask = ReceiveAudioInputTask_1.default;\\nconst ReceiveTURNCredentialsTask_1 = __webpack_require__(/*! ./task/ReceiveTURNCredentialsTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveTURNCredentialsTask.js\\\");\\nexports.ReceiveTURNCredentialsTask = ReceiveTURNCredentialsTask_1.default;\\nconst ReceiveVideoInputTask_1 = __webpack_require__(/*! ./task/ReceiveVideoInputTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveVideoInputTask.js\\\");\\nexports.ReceiveVideoInputTask = ReceiveVideoInputTask_1.default;\\nconst ReceiveVideoStreamIndexTask_1 = __webpack_require__(/*! ./task/ReceiveVideoStreamIndexTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveVideoStreamIndexTask.js\\\");\\nexports.ReceiveVideoStreamIndexTask = ReceiveVideoStreamIndexTask_1.default;\\nconst ReconnectionHealthPolicy_1 = __webpack_require__(/*! ./connectionhealthpolicy/ReconnectionHealthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ReconnectionHealthPolicy.js\\\");\\nexports.ReconnectionHealthPolicy = ReconnectionHealthPolicy_1.default;\\nconst RunnableTask_1 = __webpack_require__(/*! ./task/RunnableTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/RunnableTask.js\\\");\\nexports.RunnableTask = RunnableTask_1.default;\\nconst SDPCandidateType_1 = __webpack_require__(/*! ./sdp/SDPCandidateType */ \\\"./node_modules/amazon-chime-sdk-js/build/sdp/SDPCandidateType.js\\\");\\nexports.SDPCandidateType = SDPCandidateType_1.default;\\nconst SendAndReceiveDataMessagesTask_1 = __webpack_require__(/*! ./task/SendAndReceiveDataMessagesTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SendAndReceiveDataMessagesTask.js\\\");\\nexports.SendAndReceiveDataMessagesTask = SendAndReceiveDataMessagesTask_1.default;\\nconst SerialGroupTask_1 = __webpack_require__(/*! ./task/SerialGroupTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SerialGroupTask.js\\\");\\nexports.SerialGroupTask = SerialGroupTask_1.default;\\nconst SessionStateControllerAction_1 = __webpack_require__(/*! ./sessionstatecontroller/SessionStateControllerAction */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerAction.js\\\");\\nexports.SessionStateControllerAction = SessionStateControllerAction_1.default;\\nconst SessionStateControllerDeferPriority_1 = __webpack_require__(/*! ./sessionstatecontroller/SessionStateControllerDeferPriority */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerDeferPriority.js\\\");\\nexports.SessionStateControllerDeferPriority = SessionStateControllerDeferPriority_1.default;\\nconst SessionStateControllerState_1 = __webpack_require__(/*! ./sessionstatecontroller/SessionStateControllerState */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerState.js\\\");\\nexports.SessionStateControllerState = SessionStateControllerState_1.default;\\nconst SessionStateControllerTransitionResult_1 = __webpack_require__(/*! ./sessionstatecontroller/SessionStateControllerTransitionResult */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerTransitionResult.js\\\");\\nexports.SessionStateControllerTransitionResult = SessionStateControllerTransitionResult_1.default;\\nconst SetLocalDescriptionTask_1 = __webpack_require__(/*! ./task/SetLocalDescriptionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SetLocalDescriptionTask.js\\\");\\nexports.SetLocalDescriptionTask = SetLocalDescriptionTask_1.default;\\nconst SetRemoteDescriptionTask_1 = __webpack_require__(/*! ./task/SetRemoteDescriptionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SetRemoteDescriptionTask.js\\\");\\nexports.SetRemoteDescriptionTask = SetRemoteDescriptionTask_1.default;\\nconst SignalingAndMetricsConnectionMonitor_1 = __webpack_require__(/*! ./connectionmonitor/SignalingAndMetricsConnectionMonitor */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionmonitor/SignalingAndMetricsConnectionMonitor.js\\\");\\nexports.SignalingAndMetricsConnectionMonitor = SignalingAndMetricsConnectionMonitor_1.default;\\nconst SignalingClientConnectionRequest_1 = __webpack_require__(/*! ./signalingclient/SignalingClientConnectionRequest */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientConnectionRequest.js\\\");\\nexports.SignalingClientConnectionRequest = SignalingClientConnectionRequest_1.default;\\nconst SignalingClientEvent_1 = __webpack_require__(/*! ./signalingclient/SignalingClientEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEvent.js\\\");\\nexports.SignalingClientEvent = SignalingClientEvent_1.default;\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ./signalingclient/SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\nexports.SignalingClientEventType = SignalingClientEventType_1.default;\\nconst SignalingClientJoin_1 = __webpack_require__(/*! ./signalingclient/SignalingClientJoin */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientJoin.js\\\");\\nexports.SignalingClientJoin = SignalingClientJoin_1.default;\\nconst SignalingClientSubscribe_1 = __webpack_require__(/*! ./signalingclient/SignalingClientSubscribe */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientSubscribe.js\\\");\\nexports.SignalingClientSubscribe = SignalingClientSubscribe_1.default;\\nconst SimulcastLayers_1 = __webpack_require__(/*! ./simulcastlayers/SimulcastLayers */ \\\"./node_modules/amazon-chime-sdk-js/build/simulcastlayers/SimulcastLayers.js\\\");\\nexports.SimulcastLayers = SimulcastLayers_1.default;\\nconst SimulcastTransceiverController_1 = __webpack_require__(/*! ./transceivercontroller/SimulcastTransceiverController */ \\\"./node_modules/amazon-chime-sdk-js/build/transceivercontroller/SimulcastTransceiverController.js\\\");\\nexports.SimulcastTransceiverController = SimulcastTransceiverController_1.default;\\nconst SimulcastVideoStreamIndex_1 = __webpack_require__(/*! ./videostreamindex/SimulcastVideoStreamIndex */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamindex/SimulcastVideoStreamIndex.js\\\");\\nexports.SimulcastVideoStreamIndex = SimulcastVideoStreamIndex_1.default;\\nconst SingleNodeAudioTransformDevice_1 = __webpack_require__(/*! ./devicecontroller/SingleNodeAudioTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/SingleNodeAudioTransformDevice.js\\\");\\nexports.SingleNodeAudioTransformDevice = SingleNodeAudioTransformDevice_1.default;\\nconst Some_1 = __webpack_require__(/*! ./maybe/Some */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Some.js\\\");\\nexports.Some = Some_1.default;\\nconst StreamMetricReport_1 = __webpack_require__(/*! ./clientmetricreport/StreamMetricReport */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/StreamMetricReport.js\\\");\\nexports.StreamMetricReport = StreamMetricReport_1.default;\\nconst SubscribeAndReceiveSubscribeAckTask_1 = __webpack_require__(/*! ./task/SubscribeAndReceiveSubscribeAckTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SubscribeAndReceiveSubscribeAckTask.js\\\");\\nexports.SubscribeAndReceiveSubscribeAckTask = SubscribeAndReceiveSubscribeAckTask_1.default;\\nconst TaskStatus_1 = __webpack_require__(/*! ./task/TaskStatus */ \\\"./node_modules/amazon-chime-sdk-js/build/task/TaskStatus.js\\\");\\nexports.TaskStatus = TaskStatus_1.default;\\nconst TimeoutScheduler_1 = __webpack_require__(/*! ./scheduler/TimeoutScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/TimeoutScheduler.js\\\");\\nexports.TimeoutScheduler = TimeoutScheduler_1.default;\\nconst TimeoutTask_1 = __webpack_require__(/*! ./task/TimeoutTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/TimeoutTask.js\\\");\\nexports.TimeoutTask = TimeoutTask_1.default;\\nconst TypeError_1 = __webpack_require__(/*! ./devicecontroller/TypeError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/TypeError.js\\\");\\nexports.TypeError = TypeError_1.default;\\nconst UnusableAudioWarningConnectionHealthPolicy_1 = __webpack_require__(/*! ./connectionhealthpolicy/UnusableAudioWarningConnectionHealthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/UnusableAudioWarningConnectionHealthPolicy.js\\\");\\nexports.UnusableAudioWarningConnectionHealthPolicy = UnusableAudioWarningConnectionHealthPolicy_1.default;\\nconst Versioning_1 = __webpack_require__(/*! ./versioning/Versioning */ \\\"./node_modules/amazon-chime-sdk-js/build/versioning/Versioning.js\\\");\\nexports.Versioning = Versioning_1.default;\\nconst VideoAdaptiveProbePolicy_1 = __webpack_require__(/*! ./videodownlinkbandwidthpolicy/VideoAdaptiveProbePolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/VideoAdaptiveProbePolicy.js\\\");\\nexports.VideoAdaptiveProbePolicy = VideoAdaptiveProbePolicy_1.default;\\nconst VideoLogEvent_1 = __webpack_require__(/*! ./statscollector/VideoLogEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/statscollector/VideoLogEvent.js\\\");\\nexports.VideoLogEvent = VideoLogEvent_1.default;\\nconst VideoQualitySettings_1 = __webpack_require__(/*! ./devicecontroller/VideoQualitySettings */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoQualitySettings.js\\\");\\nexports.VideoQualitySettings = VideoQualitySettings_1.default;\\nconst VideoSource_1 = __webpack_require__(/*! ./videosource/VideoSource */ \\\"./node_modules/amazon-chime-sdk-js/build/videosource/VideoSource.js\\\");\\nexports.VideoSource = VideoSource_1.default;\\nconst VideoStreamDescription_1 = __webpack_require__(/*! ./videostreamindex/VideoStreamDescription */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamindex/VideoStreamDescription.js\\\");\\nexports.VideoStreamDescription = VideoStreamDescription_1.default;\\nconst VideoTileState_1 = __webpack_require__(/*! ./videotile/VideoTileState */ \\\"./node_modules/amazon-chime-sdk-js/build/videotile/VideoTileState.js\\\");\\nexports.VideoTileState = VideoTileState_1.default;\\nconst VoiceFocusDeviceTransformer_1 = __webpack_require__(/*! ./voicefocus/VoiceFocusDeviceTransformer */ \\\"./node_modules/amazon-chime-sdk-js/build/voicefocus/VoiceFocusDeviceTransformer.js\\\");\\nexports.VoiceFocusDeviceTransformer = VoiceFocusDeviceTransformer_1.default;\\nconst VoiceFocusTransformDevice_1 = __webpack_require__(/*! ./voicefocus/VoiceFocusTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/voicefocus/VoiceFocusTransformDevice.js\\\");\\nexports.VoiceFocusTransformDevice = VoiceFocusTransformDevice_1.default;\\nconst WaitForAttendeePresenceTask_1 = __webpack_require__(/*! ./task/WaitForAttendeePresenceTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/WaitForAttendeePresenceTask.js\\\");\\nexports.WaitForAttendeePresenceTask = WaitForAttendeePresenceTask_1.default;\\nconst WebSocketReadyState_1 = __webpack_require__(/*! ./websocketadapter/WebSocketReadyState */ \\\"./node_modules/amazon-chime-sdk-js/build/websocketadapter/WebSocketReadyState.js\\\");\\nexports.WebSocketReadyState = WebSocketReadyState_1.default;\\nconst AudioTransformDevice_1 = __webpack_require__(/*! ./devicecontroller/AudioTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/AudioTransformDevice.js\\\");\\nObject.defineProperty(exports, \\\"isAudioTransformDevice\\\", ({ enumerable: true, get: function () { return AudioTransformDevice_1.isAudioTransformDevice; } }));\\nconst Destroyable_1 = __webpack_require__(/*! ./destroyable/Destroyable */ \\\"./node_modules/amazon-chime-sdk-js/build/destroyable/Destroyable.js\\\");\\nObject.defineProperty(exports, \\\"isDestroyable\\\", ({ enumerable: true, get: function () { return Destroyable_1.isDestroyable; } }));\\nconst VideoTransformDevice_1 = __webpack_require__(/*! ./devicecontroller/VideoTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoTransformDevice.js\\\");\\nObject.defineProperty(exports, \\\"isVideoTransformDevice\\\", ({ enumerable: true, get: function () { return VideoTransformDevice_1.isVideoTransformDevice; } }));\\n//# sourceMappingURL=index.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/logger/ConsoleLogger.js\":\n/*!************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/logger/ConsoleLogger.js ***!\n \\************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst LogLevel_1 = __webpack_require__(/*! ./LogLevel */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js\\\");\\n/**\\n * ConsoleLogger writes logs with console\\n *\\n * ```typescript\\n * // working with the ConsoleLogger\\n * const logger = new ConsoleLogger('demo'); //default level is LogLevel.WARN\\n * logger.info('info');\\n * logger.debug('debug');\\n * logger.warn('warn');\\n * logger.error('error');\\n *\\n * // setting logging levels\\n * const logger = new ConsoleLogger('demo', LogLevel.INFO)\\n * logger.debug(debugFunc()); // this will not show up\\n * logger.setLogLevel(LogLevel.DEBUG)\\n * logger.debug(debugFunc()); // this will show up\\n *\\n * ```\\n */\\nclass ConsoleLogger {\\n constructor(name, level = LogLevel_1.default.WARN) {\\n this.name = name;\\n this.level = level;\\n }\\n info(msg) {\\n this.log(LogLevel_1.default.INFO, msg);\\n }\\n warn(msg) {\\n this.log(LogLevel_1.default.WARN, msg);\\n }\\n error(msg) {\\n this.log(LogLevel_1.default.ERROR, msg);\\n }\\n debug(debugFunction) {\\n if (LogLevel_1.default.DEBUG < this.level) {\\n return;\\n }\\n if (typeof debugFunction === 'string') {\\n this.log(LogLevel_1.default.DEBUG, debugFunction);\\n }\\n else if (debugFunction) {\\n this.log(LogLevel_1.default.DEBUG, debugFunction());\\n }\\n else {\\n this.log(LogLevel_1.default.DEBUG, '' + debugFunction);\\n }\\n }\\n setLogLevel(level) {\\n this.level = level;\\n }\\n getLogLevel() {\\n return this.level;\\n }\\n log(type, msg) {\\n if (type < this.level) {\\n return;\\n }\\n const timestamp = new Date().toISOString();\\n const logMessage = `${timestamp} [${LogLevel_1.default[type]}] ${this.name} - ${msg}`;\\n switch (type) {\\n case LogLevel_1.default.ERROR:\\n console.error(logMessage);\\n break;\\n case LogLevel_1.default.WARN:\\n console.warn(logMessage);\\n break;\\n case LogLevel_1.default.DEBUG:\\n console.debug(logMessage.replace(/\\\\\\\\r\\\\\\\\n/g, '\\\\n'));\\n break;\\n case LogLevel_1.default.INFO:\\n console.info(logMessage);\\n break;\\n }\\n }\\n}\\nexports[\\\"default\\\"] = ConsoleLogger;\\n//# sourceMappingURL=ConsoleLogger.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/logger/ConsoleLogger.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/logger/Log.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/logger/Log.js ***!\n \\**************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass Log {\\n constructor(sequenceNumber, message, timestampMs, logLevel) {\\n this.sequenceNumber = sequenceNumber;\\n this.message = message;\\n this.timestampMs = timestampMs;\\n this.logLevel = logLevel;\\n }\\n}\\nexports[\\\"default\\\"] = Log;\\n//# sourceMappingURL=Log.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/logger/Log.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js ***!\n \\*******************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.LogLevel = void 0;\\nvar LogLevel;\\n(function (LogLevel) {\\n LogLevel[LogLevel[\\\"DEBUG\\\"] = 0] = \\\"DEBUG\\\";\\n LogLevel[LogLevel[\\\"INFO\\\"] = 1] = \\\"INFO\\\";\\n LogLevel[LogLevel[\\\"WARN\\\"] = 2] = \\\"WARN\\\";\\n LogLevel[LogLevel[\\\"ERROR\\\"] = 3] = \\\"ERROR\\\";\\n LogLevel[LogLevel[\\\"OFF\\\"] = 4] = \\\"OFF\\\";\\n})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));\\nexports[\\\"default\\\"] = LogLevel;\\n//# sourceMappingURL=LogLevel.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/logger/MeetingSessionPOSTLogger.js\":\n/*!***********************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/logger/MeetingSessionPOSTLogger.js ***!\n \\***********************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst LogLevel_1 = __webpack_require__(/*! ../logger/LogLevel */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js\\\");\\nconst IntervalScheduler_1 = __webpack_require__(/*! ../scheduler/IntervalScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js\\\");\\nconst Log_1 = __webpack_require__(/*! ./Log */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/Log.js\\\");\\n/**\\n * `MeetingSessionPOSTLogger` publishes log messages in batches to a URL\\n * supplied during its construction.\\n *\\n * Be sure to call {@link MeetingSessionPOSTLogger.dispose} when you're done\\n * with the logger in order to avoid leaks.\\n */\\nclass MeetingSessionPOSTLogger {\\n constructor(name, configuration, batchSize, intervalMs, url, level = LogLevel_1.default.WARN) {\\n this.name = name;\\n this.configuration = configuration;\\n this.batchSize = batchSize;\\n this.intervalMs = intervalMs;\\n this.url = url;\\n this.level = level;\\n this.logCapture = [];\\n this.sequenceNumber = 0;\\n this.lock = false;\\n this.startLogPublishScheduler(this.batchSize);\\n this.eventListener = () => {\\n this.stop();\\n };\\n this.addEventListener();\\n }\\n addEventListener() {\\n if (!this.eventListener || !('window' in __webpack_require__.g) || !window.addEventListener) {\\n return;\\n }\\n window.addEventListener('unload', this.eventListener);\\n }\\n removeEventListener() {\\n if (!this.eventListener || !('window' in __webpack_require__.g) || !window.removeEventListener) {\\n return;\\n }\\n window.removeEventListener('unload', this.eventListener);\\n }\\n debug(debugFunction) {\\n if (LogLevel_1.default.DEBUG < this.level) {\\n return;\\n }\\n if (typeof debugFunction === 'string') {\\n this.log(LogLevel_1.default.DEBUG, debugFunction);\\n }\\n else if (debugFunction) {\\n this.log(LogLevel_1.default.DEBUG, debugFunction());\\n }\\n else {\\n this.log(LogLevel_1.default.DEBUG, '' + debugFunction);\\n }\\n }\\n info(msg) {\\n this.log(LogLevel_1.default.INFO, msg);\\n }\\n warn(msg) {\\n this.log(LogLevel_1.default.WARN, msg);\\n }\\n error(msg) {\\n this.log(LogLevel_1.default.ERROR, msg);\\n }\\n setLogLevel(level) {\\n this.level = level;\\n }\\n getLogLevel() {\\n return this.level;\\n }\\n getLogCaptureSize() {\\n return this.logCapture.length;\\n }\\n startLogPublishScheduler(batchSize) {\\n var _a;\\n this.addEventListener();\\n (_a = this.intervalScheduler) === null || _a === void 0 ? void 0 : _a.stop();\\n this.intervalScheduler = new IntervalScheduler_1.default(this.intervalMs);\\n this.intervalScheduler.start(() => __awaiter(this, void 0, void 0, function* () {\\n if (this.lock === true || this.getLogCaptureSize() === 0) {\\n return;\\n }\\n this.lock = true;\\n const batch = this.logCapture.slice(0, batchSize);\\n const body = this.makeRequestBody(batch);\\n try {\\n const response = yield fetch(this.url, {\\n method: 'POST',\\n body,\\n });\\n if (response.status === 200) {\\n this.logCapture = this.logCapture.slice(batch.length);\\n }\\n }\\n catch (error) {\\n console.warn('[MeetingSessionPOSTLogger] ' + error.message);\\n }\\n finally {\\n this.lock = false;\\n }\\n }));\\n }\\n stop() {\\n var _a;\\n // Clean up to avoid resource leaks.\\n (_a = this.intervalScheduler) === null || _a === void 0 ? void 0 : _a.stop();\\n this.intervalScheduler = undefined;\\n this.removeEventListener();\\n const body = this.makeRequestBody(this.logCapture);\\n navigator.sendBeacon(this.url, body);\\n }\\n /**\\n * Permanently clean up the logger. A new logger must be created to\\n * resume logging.\\n */\\n destroy() {\\n var _a;\\n return __awaiter(this, void 0, void 0, function* () {\\n (_a = this.intervalScheduler) === null || _a === void 0 ? void 0 : _a.stop();\\n this.intervalScheduler = undefined;\\n this.removeEventListener();\\n this.configuration = undefined;\\n this.logCapture = [];\\n });\\n }\\n makeRequestBody(batch) {\\n return JSON.stringify({\\n meetingId: this.configuration.meetingId,\\n attendeeId: this.configuration.credentials.attendeeId,\\n appName: this.name,\\n logs: batch,\\n });\\n }\\n log(type, msg) {\\n if (type < this.level) {\\n return;\\n }\\n const now = Date.now();\\n // Handle undefined.\\n this.logCapture.push(new Log_1.default(this.sequenceNumber, msg, now, LogLevel_1.default[type]));\\n this.sequenceNumber += 1;\\n }\\n}\\nexports[\\\"default\\\"] = MeetingSessionPOSTLogger;\\n//# sourceMappingURL=MeetingSessionPOSTLogger.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/logger/MeetingSessionPOSTLogger.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/logger/MultiLogger.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/logger/MultiLogger.js ***!\n \\**********************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst LogLevel_1 = __webpack_require__(/*! ./LogLevel */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js\\\");\\n/**\\n * MultiLogger writes logs to multiple other loggers\\n */\\nclass MultiLogger {\\n constructor(...loggers) {\\n this._loggers = loggers;\\n }\\n info(msg) {\\n for (const logger of this._loggers) {\\n logger.info(msg);\\n }\\n }\\n warn(msg) {\\n for (const logger of this._loggers) {\\n logger.warn(msg);\\n }\\n }\\n error(msg) {\\n for (const logger of this._loggers) {\\n logger.error(msg);\\n }\\n }\\n debug(debugFunction) {\\n let message;\\n let memoized;\\n if (typeof debugFunction === 'string') {\\n memoized = debugFunction;\\n }\\n else if (debugFunction) {\\n memoized = () => {\\n if (!message) {\\n message = debugFunction();\\n }\\n return message;\\n };\\n }\\n else {\\n memoized = '' + debugFunction;\\n }\\n for (const logger of this._loggers) {\\n logger.debug(memoized);\\n }\\n }\\n setLogLevel(level) {\\n for (const logger of this._loggers) {\\n logger.setLogLevel(level);\\n }\\n }\\n getLogLevel() {\\n for (const logger of this._loggers) {\\n return logger.getLogLevel();\\n }\\n return LogLevel_1.default.OFF;\\n }\\n}\\nexports[\\\"default\\\"] = MultiLogger;\\n//# sourceMappingURL=MultiLogger.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/logger/MultiLogger.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/logger/NoOpDebugLogger.js\":\n/*!**************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/logger/NoOpDebugLogger.js ***!\n \\**************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst LogLevel_1 = __webpack_require__(/*! ./LogLevel */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js\\\");\\nconst NoOpLogger_1 = __webpack_require__(/*! ./NoOpLogger */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/NoOpLogger.js\\\");\\n/**\\n * [[NoOpDebugLogger]] does not log any message but does call\\n * debug functions by default.\\n */\\nclass NoOpDebugLogger extends NoOpLogger_1.default {\\n constructor() {\\n super(LogLevel_1.default.DEBUG);\\n }\\n}\\nexports[\\\"default\\\"] = NoOpDebugLogger;\\n//# sourceMappingURL=NoOpDebugLogger.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/logger/NoOpDebugLogger.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/logger/NoOpLogger.js\":\n/*!*********************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/logger/NoOpLogger.js ***!\n \\*********************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst LogLevel_1 = __webpack_require__(/*! ./LogLevel */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js\\\");\\n/**\\n * [[NoOpLogger]] does not log any message.\\n */\\nclass NoOpLogger {\\n constructor(level = LogLevel_1.default.OFF) {\\n this.level = level;\\n }\\n info(_msg) { }\\n warn(_msg) { }\\n error(_msg) { }\\n debug(debugFunction) {\\n if (LogLevel_1.default.DEBUG < this.level) {\\n return;\\n }\\n if (typeof debugFunction !== 'string') {\\n debugFunction();\\n }\\n }\\n setLogLevel(level) {\\n this.level = level;\\n }\\n getLogLevel() {\\n return this.level;\\n }\\n}\\nexports[\\\"default\\\"] = NoOpLogger;\\n//# sourceMappingURL=NoOpLogger.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/logger/NoOpLogger.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js ***!\n \\***************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst None_1 = __webpack_require__(/*! ./None */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/None.js\\\");\\nconst Some_1 = __webpack_require__(/*! ./Some */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Some.js\\\");\\nclass Maybe {\\n static of(value) {\\n return value === undefined || value === null ? None_1.default.of() : Some_1.default.of(value);\\n }\\n}\\nexports[\\\"default\\\"] = Maybe;\\n//# sourceMappingURL=Maybe.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/maybe/None.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/maybe/None.js ***!\n \\**************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst Maybe_1 = __webpack_require__(/*! ./Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nclass None {\\n constructor() {\\n this.isSome = false;\\n this.isNone = true;\\n }\\n get() {\\n throw new Error('value is null');\\n }\\n getOrElse(value) {\\n return value;\\n }\\n map(_f) {\\n return new None();\\n }\\n flatMap(_f) {\\n return new None();\\n }\\n defaulting(value) {\\n return Maybe_1.default.of(this.getOrElse(value));\\n }\\n static of() {\\n return new None();\\n }\\n}\\nexports[\\\"default\\\"] = None;\\n//# sourceMappingURL=None.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/maybe/None.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/maybe/Some.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/maybe/Some.js ***!\n \\**************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst Maybe_1 = __webpack_require__(/*! ./Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nclass Some {\\n constructor(value) {\\n this.value = value;\\n this.isSome = true;\\n this.isNone = false;\\n }\\n map(f) {\\n return Maybe_1.default.of(f(this.value));\\n }\\n flatMap(f) {\\n return f(this.value);\\n }\\n get() {\\n return this.value;\\n }\\n getOrElse(_value) {\\n return this.value;\\n }\\n defaulting(value) {\\n return Maybe_1.default.of(this.getOrElse(value));\\n }\\n static of(value) {\\n if (value === null || value === undefined) {\\n throw new Error('value is ${value}');\\n }\\n return new Some(value);\\n }\\n}\\nexports[\\\"default\\\"] = Some;\\n//# sourceMappingURL=Some.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/maybe/Some.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/DefaultMediaDeviceFactory.js\":\n/*!************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/DefaultMediaDeviceFactory.js ***!\n \\************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst MediaDeviceProxyHandler_1 = __webpack_require__(/*! ./MediaDeviceProxyHandler */ \\\"./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/MediaDeviceProxyHandler.js\\\");\\nclass DefaultMediaDeviceFactory {\\n constructor() {\\n this.isMediaDevicesSupported = typeof navigator !== 'undefined' && !!navigator.mediaDevices;\\n }\\n create() {\\n if (!this.isMediaDevicesSupported) {\\n throw new Error(`navigator.mediaDevices is not supported`);\\n }\\n else {\\n return new Proxy(navigator.mediaDevices, new MediaDeviceProxyHandler_1.default());\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultMediaDeviceFactory;\\n//# sourceMappingURL=DefaultMediaDeviceFactory.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/DefaultMediaDeviceFactory.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/MediaDeviceProxyHandler.js\":\n/*!**********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/MediaDeviceProxyHandler.js ***!\n \\**********************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst AsyncScheduler_1 = __webpack_require__(/*! ../scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nconst IntervalScheduler_1 = __webpack_require__(/*! ../scheduler/IntervalScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js\\\");\\nclass MediaDeviceProxyHandler {\\n constructor() {\\n this.scheduler = null;\\n this.devices = null;\\n this.deviceChangeListeners = new Set();\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\\n this.get = (target, property, receiver) => {\\n if (!Reflect.has(target, property)) {\\n return undefined;\\n }\\n if (!('ondevicechange' in navigator.mediaDevices)) {\\n if (property === 'addEventListener') {\\n return this.patchAddEventListener(target, property, receiver);\\n }\\n else if (property === 'removeEventListener') {\\n return this.patchRemoveEventListener(target, property, receiver);\\n }\\n }\\n const value = Reflect.get(target, property, receiver);\\n return typeof value === 'function' ? value.bind(target) : value;\\n };\\n this.patchAddEventListener = (target, property, \\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n receiver) => {\\n const value = Reflect.get(target, property, receiver);\\n return (type, listener, options) => {\\n if (type === 'devicechange') {\\n this.deviceChangeListeners.add(listener);\\n if (!this.scheduler) {\\n this.scheduler = new IntervalScheduler_1.default(MediaDeviceProxyHandler.INTERVAL_MS);\\n this.scheduler.start(this.pollDeviceLists);\\n }\\n }\\n else {\\n return Reflect.apply(value, target, [type, listener, options]);\\n }\\n };\\n };\\n this.patchRemoveEventListener = (target, property, \\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n receiver) => {\\n const value = Reflect.get(target, property, receiver);\\n return (type, listener, options) => {\\n if (type === 'devicechange') {\\n this.deviceChangeListeners.delete(listener);\\n if (this.deviceChangeListeners.size === 0 && this.scheduler) {\\n this.scheduler.stop();\\n this.scheduler = null;\\n }\\n }\\n else {\\n return Reflect.apply(value, target, [type, listener, options]);\\n }\\n };\\n };\\n this.pollDeviceLists = () => __awaiter(this, void 0, void 0, function* () {\\n const newDevices = yield this.sortedDeviceList();\\n if (this.devices) {\\n const changed = newDevices.length !== this.devices.length ||\\n newDevices.some((device, index) => {\\n return device.deviceId !== this.devices[index].deviceId;\\n });\\n if (changed) {\\n this.handleDeviceChangeEvent();\\n }\\n }\\n this.devices = newDevices;\\n });\\n }\\n sortedDeviceList() {\\n return __awaiter(this, void 0, void 0, function* () {\\n // @ts-ignore\\n const newDevices = yield navigator.mediaDevices.enumerateDevices();\\n return newDevices.sort((device1, device2) => {\\n if (device1.deviceId < device2.deviceId) {\\n return 1;\\n }\\n if (device1.deviceId > device2.deviceId) {\\n return -1;\\n }\\n return 0;\\n });\\n });\\n }\\n handleDeviceChangeEvent() {\\n for (const listener of this.deviceChangeListeners) {\\n AsyncScheduler_1.default.nextTick(() => {\\n /* istanbul ignore else */\\n if (this.deviceChangeListeners.has(listener)) {\\n const event = new Event('devicechange');\\n if (typeof listener === 'function') {\\n listener(event);\\n }\\n else {\\n listener.handleEvent(event);\\n }\\n }\\n });\\n }\\n }\\n}\\nexports[\\\"default\\\"] = MediaDeviceProxyHandler;\\nMediaDeviceProxyHandler.INTERVAL_MS = 1000;\\n//# sourceMappingURL=MediaDeviceProxyHandler.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/MediaDeviceProxyHandler.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/mediastreambroker/NoOpMediaStreamBroker.js\":\n/*!*******************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/mediastreambroker/NoOpMediaStreamBroker.js ***!\n \\*******************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[NoOpDeviceBroker]] rejects requests to acquire a [[MediaStream]].\\n */\\nclass NoOpMediaStreamBroker {\\n acquireAudioInputStream() {\\n return Promise.reject();\\n }\\n acquireVideoInputStream() {\\n return Promise.reject();\\n }\\n acquireDisplayInputStream(_streamConstraints) {\\n return Promise.reject();\\n }\\n releaseMediaStream(_mediaStreamToRelease) { }\\n bindToAudioVideoController(_audioVideoController) { }\\n}\\nexports[\\\"default\\\"] = NoOpMediaStreamBroker;\\n//# sourceMappingURL=NoOpMediaStreamBroker.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/mediastreambroker/NoOpMediaStreamBroker.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioConnectivityFeedback.js\":\n/*!**********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioConnectivityFeedback.js ***!\n \\**********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckAudioConnectivityFeedback = void 0;\\nvar CheckAudioConnectivityFeedback;\\n(function (CheckAudioConnectivityFeedback) {\\n CheckAudioConnectivityFeedback[CheckAudioConnectivityFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckAudioConnectivityFeedback[CheckAudioConnectivityFeedback[\\\"AudioInputRequestFailed\\\"] = 1] = \\\"AudioInputRequestFailed\\\";\\n CheckAudioConnectivityFeedback[CheckAudioConnectivityFeedback[\\\"AudioInputPermissionDenied\\\"] = 2] = \\\"AudioInputPermissionDenied\\\";\\n CheckAudioConnectivityFeedback[CheckAudioConnectivityFeedback[\\\"ConnectionFailed\\\"] = 3] = \\\"ConnectionFailed\\\";\\n CheckAudioConnectivityFeedback[CheckAudioConnectivityFeedback[\\\"AudioNotReceived\\\"] = 4] = \\\"AudioNotReceived\\\";\\n})(CheckAudioConnectivityFeedback = exports.CheckAudioConnectivityFeedback || (exports.CheckAudioConnectivityFeedback = {}));\\nexports[\\\"default\\\"] = CheckAudioConnectivityFeedback;\\n//# sourceMappingURL=CheckAudioConnectivityFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioConnectivityFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioInputFeedback.js\":\n/*!***************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioInputFeedback.js ***!\n \\***************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckAudioInputFeedback = void 0;\\nvar CheckAudioInputFeedback;\\n(function (CheckAudioInputFeedback) {\\n CheckAudioInputFeedback[CheckAudioInputFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckAudioInputFeedback[CheckAudioInputFeedback[\\\"Failed\\\"] = 1] = \\\"Failed\\\";\\n CheckAudioInputFeedback[CheckAudioInputFeedback[\\\"PermissionDenied\\\"] = 2] = \\\"PermissionDenied\\\";\\n})(CheckAudioInputFeedback = exports.CheckAudioInputFeedback || (exports.CheckAudioInputFeedback = {}));\\nexports[\\\"default\\\"] = CheckAudioInputFeedback;\\n//# sourceMappingURL=CheckAudioInputFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioInputFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioOutputFeedback.js\":\n/*!****************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioOutputFeedback.js ***!\n \\****************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckAudioOutputFeedback = void 0;\\nvar CheckAudioOutputFeedback;\\n(function (CheckAudioOutputFeedback) {\\n CheckAudioOutputFeedback[CheckAudioOutputFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckAudioOutputFeedback[CheckAudioOutputFeedback[\\\"Failed\\\"] = 1] = \\\"Failed\\\";\\n})(CheckAudioOutputFeedback = exports.CheckAudioOutputFeedback || (exports.CheckAudioOutputFeedback = {}));\\nexports[\\\"default\\\"] = CheckAudioOutputFeedback;\\n//# sourceMappingURL=CheckAudioOutputFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioOutputFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckCameraResolutionFeedback.js\":\n/*!*********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckCameraResolutionFeedback.js ***!\n \\*********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckCameraResolutionFeedback = void 0;\\nvar CheckCameraResolutionFeedback;\\n(function (CheckCameraResolutionFeedback) {\\n CheckCameraResolutionFeedback[CheckCameraResolutionFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckCameraResolutionFeedback[CheckCameraResolutionFeedback[\\\"Failed\\\"] = 1] = \\\"Failed\\\";\\n CheckCameraResolutionFeedback[CheckCameraResolutionFeedback[\\\"ResolutionNotSupported\\\"] = 2] = \\\"ResolutionNotSupported\\\";\\n CheckCameraResolutionFeedback[CheckCameraResolutionFeedback[\\\"PermissionDenied\\\"] = 3] = \\\"PermissionDenied\\\";\\n})(CheckCameraResolutionFeedback = exports.CheckCameraResolutionFeedback || (exports.CheckCameraResolutionFeedback = {}));\\nexports[\\\"default\\\"] = CheckCameraResolutionFeedback;\\n//# sourceMappingURL=CheckCameraResolutionFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckCameraResolutionFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckContentShareConnectivityFeedback.js\":\n/*!*****************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckContentShareConnectivityFeedback.js ***!\n \\*****************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckContentShareConnectivityFeedback = void 0;\\nvar CheckContentShareConnectivityFeedback;\\n(function (CheckContentShareConnectivityFeedback) {\\n CheckContentShareConnectivityFeedback[CheckContentShareConnectivityFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckContentShareConnectivityFeedback[CheckContentShareConnectivityFeedback[\\\"Failed\\\"] = 1] = \\\"Failed\\\";\\n CheckContentShareConnectivityFeedback[CheckContentShareConnectivityFeedback[\\\"PermissionDenied\\\"] = 2] = \\\"PermissionDenied\\\";\\n CheckContentShareConnectivityFeedback[CheckContentShareConnectivityFeedback[\\\"TimedOut\\\"] = 3] = \\\"TimedOut\\\";\\n CheckContentShareConnectivityFeedback[CheckContentShareConnectivityFeedback[\\\"ConnectionFailed\\\"] = 4] = \\\"ConnectionFailed\\\";\\n})(CheckContentShareConnectivityFeedback = exports.CheckContentShareConnectivityFeedback || (exports.CheckContentShareConnectivityFeedback = {}));\\nexports[\\\"default\\\"] = CheckContentShareConnectivityFeedback;\\n//# sourceMappingURL=CheckContentShareConnectivityFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckContentShareConnectivityFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkTCPConnectivityFeedback.js\":\n/*!***************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkTCPConnectivityFeedback.js ***!\n \\***************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckNetworkTCPConnectivityFeedback = void 0;\\nvar CheckNetworkTCPConnectivityFeedback;\\n(function (CheckNetworkTCPConnectivityFeedback) {\\n CheckNetworkTCPConnectivityFeedback[CheckNetworkTCPConnectivityFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckNetworkTCPConnectivityFeedback[CheckNetworkTCPConnectivityFeedback[\\\"MeetingSessionURLsNotInitialized\\\"] = 1] = \\\"MeetingSessionURLsNotInitialized\\\";\\n CheckNetworkTCPConnectivityFeedback[CheckNetworkTCPConnectivityFeedback[\\\"ConnectionFailed\\\"] = 2] = \\\"ConnectionFailed\\\";\\n CheckNetworkTCPConnectivityFeedback[CheckNetworkTCPConnectivityFeedback[\\\"ICENegotiationFailed\\\"] = 3] = \\\"ICENegotiationFailed\\\";\\n})(CheckNetworkTCPConnectivityFeedback = exports.CheckNetworkTCPConnectivityFeedback || (exports.CheckNetworkTCPConnectivityFeedback = {}));\\nexports[\\\"default\\\"] = CheckNetworkTCPConnectivityFeedback;\\n//# sourceMappingURL=CheckNetworkTCPConnectivityFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkTCPConnectivityFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkUDPConnectivityFeedback.js\":\n/*!***************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkUDPConnectivityFeedback.js ***!\n \\***************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckNetworkUDPConnectivityFeedback = void 0;\\nvar CheckNetworkUDPConnectivityFeedback;\\n(function (CheckNetworkUDPConnectivityFeedback) {\\n CheckNetworkUDPConnectivityFeedback[CheckNetworkUDPConnectivityFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckNetworkUDPConnectivityFeedback[CheckNetworkUDPConnectivityFeedback[\\\"MeetingSessionURLsNotInitialized\\\"] = 1] = \\\"MeetingSessionURLsNotInitialized\\\";\\n CheckNetworkUDPConnectivityFeedback[CheckNetworkUDPConnectivityFeedback[\\\"ConnectionFailed\\\"] = 2] = \\\"ConnectionFailed\\\";\\n CheckNetworkUDPConnectivityFeedback[CheckNetworkUDPConnectivityFeedback[\\\"ICENegotiationFailed\\\"] = 3] = \\\"ICENegotiationFailed\\\";\\n})(CheckNetworkUDPConnectivityFeedback = exports.CheckNetworkUDPConnectivityFeedback || (exports.CheckNetworkUDPConnectivityFeedback = {}));\\nexports[\\\"default\\\"] = CheckNetworkUDPConnectivityFeedback;\\n//# sourceMappingURL=CheckNetworkUDPConnectivityFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkUDPConnectivityFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoConnectivityFeedback.js\":\n/*!**********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoConnectivityFeedback.js ***!\n \\**********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckVideoConnectivityFeedback = void 0;\\nvar CheckVideoConnectivityFeedback;\\n(function (CheckVideoConnectivityFeedback) {\\n CheckVideoConnectivityFeedback[CheckVideoConnectivityFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckVideoConnectivityFeedback[CheckVideoConnectivityFeedback[\\\"VideoInputRequestFailed\\\"] = 1] = \\\"VideoInputRequestFailed\\\";\\n CheckVideoConnectivityFeedback[CheckVideoConnectivityFeedback[\\\"VideoInputPermissionDenied\\\"] = 2] = \\\"VideoInputPermissionDenied\\\";\\n CheckVideoConnectivityFeedback[CheckVideoConnectivityFeedback[\\\"ConnectionFailed\\\"] = 3] = \\\"ConnectionFailed\\\";\\n CheckVideoConnectivityFeedback[CheckVideoConnectivityFeedback[\\\"VideoNotSent\\\"] = 4] = \\\"VideoNotSent\\\";\\n})(CheckVideoConnectivityFeedback = exports.CheckVideoConnectivityFeedback || (exports.CheckVideoConnectivityFeedback = {}));\\nexports[\\\"default\\\"] = CheckVideoConnectivityFeedback;\\n//# sourceMappingURL=CheckVideoConnectivityFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoConnectivityFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoInputFeedback.js\":\n/*!***************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoInputFeedback.js ***!\n \\***************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckVideoInputFeedback = void 0;\\nvar CheckVideoInputFeedback;\\n(function (CheckVideoInputFeedback) {\\n CheckVideoInputFeedback[CheckVideoInputFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckVideoInputFeedback[CheckVideoInputFeedback[\\\"Failed\\\"] = 1] = \\\"Failed\\\";\\n CheckVideoInputFeedback[CheckVideoInputFeedback[\\\"PermissionDenied\\\"] = 2] = \\\"PermissionDenied\\\";\\n})(CheckVideoInputFeedback = exports.CheckVideoInputFeedback || (exports.CheckVideoInputFeedback = {}));\\nexports[\\\"default\\\"] = CheckVideoInputFeedback;\\n//# sourceMappingURL=CheckVideoInputFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoInputFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/DefaultMeetingReadinessChecker.js\":\n/*!**********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/DefaultMeetingReadinessChecker.js ***!\n \\**********************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultAudioMixController_1 = __webpack_require__(/*! ../audiomixcontroller/DefaultAudioMixController */ \\\"./node_modules/amazon-chime-sdk-js/build/audiomixcontroller/DefaultAudioMixController.js\\\");\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst DefaultDeviceController_1 = __webpack_require__(/*! ../devicecontroller/DefaultDeviceController */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/DefaultDeviceController.js\\\");\\nconst PermissionDeniedError_1 = __webpack_require__(/*! ../devicecontroller/PermissionDeniedError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/PermissionDeniedError.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ../task/BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\nconst TimeoutTask_1 = __webpack_require__(/*! ../task/TimeoutTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/TimeoutTask.js\\\");\\nconst CheckAudioConnectivityFeedback_1 = __webpack_require__(/*! ./CheckAudioConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioConnectivityFeedback.js\\\");\\nconst CheckAudioInputFeedback_1 = __webpack_require__(/*! ./CheckAudioInputFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioInputFeedback.js\\\");\\nconst CheckAudioOutputFeedback_1 = __webpack_require__(/*! ./CheckAudioOutputFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioOutputFeedback.js\\\");\\nconst CheckCameraResolutionFeedback_1 = __webpack_require__(/*! ./CheckCameraResolutionFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckCameraResolutionFeedback.js\\\");\\nconst CheckContentShareConnectivityFeedback_1 = __webpack_require__(/*! ./CheckContentShareConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckContentShareConnectivityFeedback.js\\\");\\nconst CheckNetworkTCPConnectivityFeedback_1 = __webpack_require__(/*! ./CheckNetworkTCPConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkTCPConnectivityFeedback.js\\\");\\nconst CheckNetworkUDPConnectivityFeedback_1 = __webpack_require__(/*! ./CheckNetworkUDPConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkUDPConnectivityFeedback.js\\\");\\nconst CheckVideoConnectivityFeedback_1 = __webpack_require__(/*! ./CheckVideoConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoConnectivityFeedback.js\\\");\\nconst CheckVideoInputFeedback_1 = __webpack_require__(/*! ./CheckVideoInputFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoInputFeedback.js\\\");\\nconst MeetingReadinessCheckerConfiguration_1 = __webpack_require__(/*! ./MeetingReadinessCheckerConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/MeetingReadinessCheckerConfiguration.js\\\");\\nclass DefaultMeetingReadinessChecker {\\n constructor(logger, meetingSession, configuration = new MeetingReadinessCheckerConfiguration_1.default()) {\\n this.logger = logger;\\n this.meetingSession = meetingSession;\\n this.configuration = configuration;\\n this.browserBehavior = new DefaultBrowserBehavior_1.default();\\n }\\n static delay(timeoutMs) {\\n return __awaiter(this, void 0, void 0, function* () {\\n return new Promise(resolve => setTimeout(resolve, timeoutMs));\\n });\\n }\\n checkAudioInput(audioInputDevice) {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n yield this.meetingSession.audioVideo.chooseAudioInputDevice(audioInputDevice);\\n yield this.meetingSession.audioVideo.chooseAudioInputDevice(null);\\n return CheckAudioInputFeedback_1.default.Succeeded;\\n }\\n catch (error) {\\n this.logger.error(`MeetingReadinessChecker: Audio input check failed with error ${error}`);\\n if (error instanceof PermissionDeniedError_1.default) {\\n return CheckAudioInputFeedback_1.default.PermissionDenied;\\n }\\n return CheckAudioInputFeedback_1.default.Failed;\\n }\\n });\\n }\\n checkAudioOutput(audioOutputDeviceInfo, audioOutputVerificationCallback, audioElement = null) {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n const audioOutputDeviceId = audioOutputDeviceInfo\\n ? DefaultDeviceController_1.default.getIntrinsicDeviceId(audioOutputDeviceInfo)\\n : '';\\n yield this.playTone(audioOutputDeviceId, 440, audioElement);\\n const userFeedback = yield audioOutputVerificationCallback();\\n if (userFeedback) {\\n return CheckAudioOutputFeedback_1.default.Succeeded;\\n }\\n return CheckAudioOutputFeedback_1.default.Failed;\\n }\\n catch (error) {\\n this.logger.error(`MeetingReadinessChecker: Audio output check failed with error: ${error}`);\\n return CheckAudioOutputFeedback_1.default.Failed;\\n }\\n finally {\\n this.stopTone();\\n }\\n });\\n }\\n playTone(sinkId, frequency, audioElement) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const rampSec = 0.1;\\n const maxGainValue = 0.1;\\n if (this.oscillatorNode) {\\n this.stopTone();\\n }\\n this.audioContext = DefaultDeviceController_1.default.getAudioContext();\\n this.gainNode = this.audioContext.createGain();\\n this.gainNode.gain.value = 0;\\n this.oscillatorNode = this.audioContext.createOscillator();\\n this.oscillatorNode.frequency.value = frequency;\\n this.oscillatorNode.connect(this.gainNode);\\n this.destinationStream = this.audioContext.createMediaStreamDestination();\\n this.gainNode.connect(this.destinationStream);\\n const currentTime = this.audioContext.currentTime;\\n const startTime = currentTime + 0.1;\\n this.gainNode.gain.linearRampToValueAtTime(0, startTime);\\n this.gainNode.gain.linearRampToValueAtTime(maxGainValue, startTime + rampSec);\\n this.oscillatorNode.start();\\n // Because we always use `DefaultAudioMixController`, and both this class\\n // and DAMC use `DefaultBrowserBehavior`, it is not possible for the `bindAudioDevice` call here to throw.\\n // Nevertheless, we `catch` here and disable code coverage.\\n const audioMixController = new DefaultAudioMixController_1.default(this.logger);\\n try {\\n if (this.browserBehavior.supportsSetSinkId()) {\\n yield audioMixController.bindAudioDevice({ deviceId: sinkId });\\n }\\n }\\n catch (e) {\\n /* istanbul ignore next */\\n this.logger.error(`Failed to bind audio device: ${e}`);\\n }\\n try {\\n yield audioMixController.bindAudioElement(audioElement || new Audio());\\n }\\n catch (e) {\\n this.logger.error(`Failed to bind audio element: ${e}`);\\n }\\n yield audioMixController.bindAudioStream(this.destinationStream.stream);\\n });\\n }\\n stopTone() {\\n if (!this.audioContext || !this.gainNode || !this.oscillatorNode || !this.destinationStream) {\\n return;\\n }\\n const durationSec = 1;\\n const rampSec = 0.1;\\n const maxGainValue = 0.1;\\n const currentTime = this.audioContext.currentTime;\\n this.gainNode.gain.linearRampToValueAtTime(maxGainValue, currentTime + rampSec + durationSec);\\n this.gainNode.gain.linearRampToValueAtTime(0, currentTime + rampSec * 2 + durationSec);\\n this.oscillatorNode.stop();\\n this.oscillatorNode.disconnect(this.gainNode);\\n this.gainNode.disconnect(this.destinationStream);\\n this.oscillatorNode = null;\\n this.gainNode = null;\\n this.destinationStream = null;\\n }\\n checkVideoInput(videoInputDevice) {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n yield this.meetingSession.audioVideo.chooseVideoInputDevice(videoInputDevice);\\n yield this.meetingSession.audioVideo.chooseVideoInputDevice(null);\\n return CheckVideoInputFeedback_1.default.Succeeded;\\n }\\n catch (error) {\\n this.logger.error(`MeetingReadinessChecker: Video check failed with error ${error}`);\\n if (error instanceof PermissionDeniedError_1.default) {\\n return CheckVideoInputFeedback_1.default.PermissionDenied;\\n }\\n return CheckVideoInputFeedback_1.default.Failed;\\n }\\n });\\n }\\n checkCameraResolution(videoInputDevice, width, height) {\\n return __awaiter(this, void 0, void 0, function* () {\\n let stream;\\n try {\\n const videoInputDeviceId = DefaultDeviceController_1.default.getIntrinsicDeviceId(videoInputDevice);\\n const videoConstraint = {\\n video: this.calculateVideoConstraint(videoInputDeviceId, width, height),\\n };\\n stream = yield navigator.mediaDevices.getUserMedia(videoConstraint);\\n }\\n catch (error) {\\n this.logger.error(`MeetingReadinessChecker: Camera resolution check with width: ${width} height ${height} failed with error ${error}`);\\n if (error && error.name === 'OverconstrainedError') {\\n return CheckCameraResolutionFeedback_1.default.ResolutionNotSupported;\\n }\\n if (error && error.name === 'NotAllowedError') {\\n return CheckCameraResolutionFeedback_1.default.PermissionDenied;\\n }\\n return CheckCameraResolutionFeedback_1.default.Failed;\\n }\\n finally {\\n if (stream) {\\n stream.getTracks().forEach(function (track) {\\n track.stop();\\n });\\n }\\n }\\n return CheckCameraResolutionFeedback_1.default.Succeeded;\\n });\\n }\\n calculateVideoConstraint(videoInputDeviceId, width, height) {\\n const dimension = this.browserBehavior.requiresResolutionAlignment(width, height);\\n const trackConstraints = {};\\n if (this.browserBehavior.requiresNoExactMediaStreamConstraints()) {\\n trackConstraints.deviceId = videoInputDeviceId;\\n trackConstraints.width = width;\\n trackConstraints.height = height;\\n }\\n else {\\n trackConstraints.deviceId = { exact: videoInputDeviceId };\\n trackConstraints.width = { exact: dimension[0] };\\n trackConstraints.height = { exact: dimension[1] };\\n }\\n return trackConstraints;\\n }\\n checkContentShareConnectivity(sourceId) {\\n return __awaiter(this, void 0, void 0, function* () {\\n let isContentShareStarted = false;\\n let isAudioVideoStarted = false;\\n const contentShareObserver = {\\n contentShareDidStart: () => {\\n isContentShareStarted = true;\\n },\\n };\\n const observer = {\\n audioVideoDidStart: () => {\\n isAudioVideoStarted = true;\\n },\\n };\\n try {\\n this.meetingSession.audioVideo.addObserver(observer);\\n this.meetingSession.audioVideo.start();\\n this.meetingSession.audioVideo.addContentShareObserver(contentShareObserver);\\n yield this.meetingSession.audioVideo.startContentShareFromScreenCapture(sourceId);\\n yield this.executeTimeoutTask(() => __awaiter(this, void 0, void 0, function* () {\\n return isAudioVideoStarted && isContentShareStarted;\\n }));\\n if (!isAudioVideoStarted) {\\n return CheckContentShareConnectivityFeedback_1.default.ConnectionFailed;\\n }\\n yield this.stopMeeting();\\n return isContentShareStarted\\n ? CheckContentShareConnectivityFeedback_1.default.Succeeded\\n : CheckContentShareConnectivityFeedback_1.default.TimedOut;\\n }\\n catch (error) {\\n this.logger.error(`MeetingReadinessChecker: Content share check failed with error ${error}`);\\n if (error.name === 'NotAllowedError') {\\n return CheckContentShareConnectivityFeedback_1.default.PermissionDenied;\\n }\\n else {\\n return CheckContentShareConnectivityFeedback_1.default.Failed;\\n }\\n }\\n finally {\\n this.meetingSession.audioVideo.removeObserver(observer);\\n this.meetingSession.audioVideo.stopContentShare();\\n this.meetingSession.audioVideo.removeContentShareObserver(contentShareObserver);\\n }\\n });\\n }\\n checkAudioConnectivity(audioInputDevice) {\\n return __awaiter(this, void 0, void 0, function* () {\\n let audioPresence = false;\\n const audioVideo = this.meetingSession.audioVideo;\\n const attendeePresenceHandler = (attendeeId, present, _externalUserId, _dropped) => {\\n if (attendeeId === this.meetingSession.configuration.credentials.attendeeId && present) {\\n audioPresence = true;\\n }\\n };\\n try {\\n yield audioVideo.chooseAudioInputDevice(audioInputDevice);\\n }\\n catch (error) {\\n this.logger.error(`MeetingReadinessChecker: Failed to get audio input device with error ${error}`);\\n if (error instanceof PermissionDeniedError_1.default) {\\n return CheckAudioConnectivityFeedback_1.default.AudioInputPermissionDenied;\\n }\\n return CheckAudioConnectivityFeedback_1.default.AudioInputRequestFailed;\\n }\\n audioVideo.realtimeSubscribeToAttendeeIdPresence(attendeePresenceHandler);\\n if (!(yield this.startMeeting())) {\\n audioVideo.realtimeUnsubscribeToAttendeeIdPresence(attendeePresenceHandler);\\n try {\\n yield this.meetingSession.audioVideo.chooseAudioInputDevice(null);\\n }\\n catch (e) {\\n this.logger.error(`MeetingReadinessChecker: Failed to choose null device with error ${e}`);\\n }\\n return CheckAudioConnectivityFeedback_1.default.ConnectionFailed;\\n }\\n yield this.executeTimeoutTask(() => __awaiter(this, void 0, void 0, function* () {\\n return audioPresence;\\n }));\\n audioVideo.realtimeUnsubscribeToAttendeeIdPresence(attendeePresenceHandler);\\n yield this.stopMeeting();\\n try {\\n yield this.meetingSession.audioVideo.chooseAudioInputDevice(null);\\n }\\n catch (e) {\\n this.logger.error(`MeetingReadinessChecker: Failed to choose null device with error ${e}`);\\n }\\n return audioPresence\\n ? CheckAudioConnectivityFeedback_1.default.Succeeded\\n : CheckAudioConnectivityFeedback_1.default.AudioNotReceived;\\n });\\n }\\n checkVideoConnectivity(videoInputDevice) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const audioVideo = this.meetingSession.audioVideo;\\n try {\\n yield audioVideo.chooseVideoInputDevice(videoInputDevice);\\n }\\n catch (error) {\\n this.logger.error(`MeetingReadinessChecker: Failed to get video input device with error ${error}`);\\n if (error instanceof PermissionDeniedError_1.default) {\\n return CheckVideoConnectivityFeedback_1.default.VideoInputPermissionDenied;\\n }\\n return CheckVideoConnectivityFeedback_1.default.VideoInputRequestFailed;\\n }\\n if (!(yield this.startMeeting())) {\\n return CheckVideoConnectivityFeedback_1.default.ConnectionFailed;\\n }\\n let packetsSent = 0;\\n audioVideo.startLocalVideoTile();\\n yield this.executeTimeoutTask(() => __awaiter(this, void 0, void 0, function* () {\\n const rawStats = yield audioVideo.getRTCPeerConnectionStats();\\n if (rawStats) {\\n rawStats.forEach(report => {\\n if (report.type === 'outbound-rtp' && report.mediaType === 'video') {\\n packetsSent = report.packetsSent;\\n }\\n });\\n }\\n return packetsSent > 0;\\n }));\\n audioVideo.stopLocalVideoTile();\\n yield this.stopMeeting();\\n if (packetsSent <= 0) {\\n return CheckVideoConnectivityFeedback_1.default.VideoNotSent;\\n }\\n return CheckVideoConnectivityFeedback_1.default.Succeeded;\\n });\\n }\\n checkNetworkUDPConnectivity() {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n this.originalURLRewriter = this.meetingSession.configuration.urls.urlRewriter;\\n }\\n catch (error) {\\n this.logger.error(`MeetingSessionConfiguration.urls doesn't exist. Error: ${error}`);\\n return CheckNetworkUDPConnectivityFeedback_1.default.MeetingSessionURLsNotInitialized;\\n }\\n this.meetingSession.configuration.urls.urlRewriter = (uri) => {\\n const transformedUri = this.originalURLRewriter(uri);\\n if (transformedUri.includes('transport=tcp')) {\\n return '';\\n }\\n return transformedUri;\\n };\\n const audioVideo = this.meetingSession.audioVideo;\\n if (!(yield this.startMeeting())) {\\n this.meetingSession.configuration.urls.urlRewriter = this.originalURLRewriter;\\n return CheckNetworkUDPConnectivityFeedback_1.default.ConnectionFailed;\\n }\\n let candidatePairSucceed = false;\\n yield this.executeTimeoutTask(() => __awaiter(this, void 0, void 0, function* () {\\n const rawStats = yield audioVideo.getRTCPeerConnectionStats();\\n if (rawStats) {\\n rawStats.forEach(report => {\\n if (report.type === 'candidate-pair' && report.state === 'succeeded') {\\n candidatePairSucceed = true;\\n }\\n });\\n }\\n return candidatePairSucceed;\\n }));\\n this.meetingSession.configuration.urls.urlRewriter = this.originalURLRewriter;\\n yield this.stopMeeting();\\n if (!candidatePairSucceed) {\\n return CheckNetworkUDPConnectivityFeedback_1.default.ICENegotiationFailed;\\n }\\n return CheckNetworkUDPConnectivityFeedback_1.default.Succeeded;\\n });\\n }\\n checkNetworkTCPConnectivity() {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n this.originalURLRewriter = this.meetingSession.configuration.urls.urlRewriter;\\n }\\n catch (error) {\\n this.logger.error(`MeetingSessionConfiguration.urls doesn't exist. Error: ${error}`);\\n return CheckNetworkTCPConnectivityFeedback_1.default.MeetingSessionURLsNotInitialized;\\n }\\n this.meetingSession.configuration.urls.urlRewriter = (uri) => {\\n const transformedUri = this.originalURLRewriter(uri);\\n if (transformedUri.includes('transport=udp')) {\\n return '';\\n }\\n return transformedUri;\\n };\\n const audioVideo = this.meetingSession.audioVideo;\\n if (!(yield this.startMeeting())) {\\n this.meetingSession.configuration.urls.urlRewriter = this.originalURLRewriter;\\n return CheckNetworkTCPConnectivityFeedback_1.default.ConnectionFailed;\\n }\\n let candidatePairSucceed = false;\\n yield this.executeTimeoutTask(() => __awaiter(this, void 0, void 0, function* () {\\n const rawStats = yield audioVideo.getRTCPeerConnectionStats();\\n if (rawStats) {\\n rawStats.forEach(report => {\\n if (report.type === 'candidate-pair' && report.state === 'succeeded') {\\n candidatePairSucceed = true;\\n }\\n });\\n }\\n return candidatePairSucceed;\\n }));\\n this.meetingSession.configuration.urls.urlRewriter = this.originalURLRewriter;\\n yield this.stopMeeting();\\n if (!candidatePairSucceed) {\\n return CheckNetworkTCPConnectivityFeedback_1.default.ICENegotiationFailed;\\n }\\n return CheckNetworkTCPConnectivityFeedback_1.default.Succeeded;\\n });\\n }\\n startMeeting() {\\n return __awaiter(this, void 0, void 0, function* () {\\n let isStarted = false;\\n const observer = {\\n audioVideoDidStart: () => {\\n isStarted = true;\\n },\\n };\\n this.meetingSession.audioVideo.addObserver(observer);\\n this.meetingSession.audioVideo.start();\\n yield this.executeTimeoutTask(() => __awaiter(this, void 0, void 0, function* () {\\n return isStarted;\\n }));\\n this.meetingSession.audioVideo.removeObserver(observer);\\n return isStarted;\\n });\\n }\\n stopMeeting() {\\n return __awaiter(this, void 0, void 0, function* () {\\n let isStopped = false;\\n const observer = {\\n audioVideoDidStop: (_sessionStatus) => {\\n isStopped = true;\\n },\\n };\\n this.meetingSession.audioVideo.addObserver(observer);\\n this.meetingSession.audioVideo.stop();\\n yield this.executeTimeoutTask(() => __awaiter(this, void 0, void 0, function* () {\\n return isStopped;\\n }));\\n this.meetingSession.audioVideo.removeObserver(observer);\\n return isStopped;\\n });\\n }\\n executeTimeoutTask(conditionCheck) {\\n return __awaiter(this, void 0, void 0, function* () {\\n let isSuccess = false;\\n class CheckForConditionTask extends BaseTask_1.default {\\n constructor(logger, waitDurationMs) {\\n super(logger);\\n this.waitDurationMs = waitDurationMs;\\n this.isCancelled = false;\\n }\\n cancel() {\\n this.isCancelled = true;\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n while (!this.isCancelled) {\\n if (yield conditionCheck()) {\\n isSuccess = true;\\n break;\\n }\\n yield DefaultMeetingReadinessChecker.delay(this.waitDurationMs);\\n }\\n });\\n }\\n }\\n const timeoutTask = new TimeoutTask_1.default(this.logger, new CheckForConditionTask(this.logger, this.configuration.waitDurationMs), this.configuration.timeoutMs);\\n yield timeoutTask.run();\\n return isSuccess;\\n });\\n }\\n}\\nexports[\\\"default\\\"] = DefaultMeetingReadinessChecker;\\n//# sourceMappingURL=DefaultMeetingReadinessChecker.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/DefaultMeetingReadinessChecker.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/MeetingReadinessCheckerConfiguration.js\":\n/*!****************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/MeetingReadinessCheckerConfiguration.js ***!\n \\****************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[MeetingReadinessCheckerConfiguration]] includes custom settings used for MeetingReadinessChecker\\n */\\nclass MeetingReadinessCheckerConfiguration {\\n constructor() {\\n /**\\n * Specify how long to wait for each check in a test.\\n * If null, it will use the default value.\\n */\\n this.timeoutMs = 10000;\\n /**\\n * Specify the wait time before checking again when a check condition is not met.\\n * If null, it will use the default value.\\n */\\n this.waitDurationMs = 3000;\\n }\\n}\\nexports[\\\"default\\\"] = MeetingReadinessCheckerConfiguration;\\n//# sourceMappingURL=MeetingReadinessCheckerConfiguration.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/MeetingReadinessCheckerConfiguration.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/DefaultMeetingSession.js\":\n/*!****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/DefaultMeetingSession.js ***!\n \\****************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultAudioVideoController_1 = __webpack_require__(/*! ../audiovideocontroller/DefaultAudioVideoController */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/DefaultAudioVideoController.js\\\");\\nconst DefaultAudioVideoFacade_1 = __webpack_require__(/*! ../audiovideofacade/DefaultAudioVideoFacade */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideofacade/DefaultAudioVideoFacade.js\\\");\\nconst FullJitterBackoff_1 = __webpack_require__(/*! ../backoff/FullJitterBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js\\\");\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst ContentShareMediaStreamBroker_1 = __webpack_require__(/*! ../contentsharecontroller/ContentShareMediaStreamBroker */ \\\"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareMediaStreamBroker.js\\\");\\nconst DefaultContentShareController_1 = __webpack_require__(/*! ../contentsharecontroller/DefaultContentShareController */ \\\"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/DefaultContentShareController.js\\\");\\nconst Destroyable_1 = __webpack_require__(/*! ../destroyable/Destroyable */ \\\"./node_modules/amazon-chime-sdk-js/build/destroyable/Destroyable.js\\\");\\nconst DefaultReconnectController_1 = __webpack_require__(/*! ../reconnectcontroller/DefaultReconnectController */ \\\"./node_modules/amazon-chime-sdk-js/build/reconnectcontroller/DefaultReconnectController.js\\\");\\nconst DefaultWebSocketAdapter_1 = __webpack_require__(/*! ../websocketadapter/DefaultWebSocketAdapter */ \\\"./node_modules/amazon-chime-sdk-js/build/websocketadapter/DefaultWebSocketAdapter.js\\\");\\nclass DefaultMeetingSession {\\n constructor(configuration, logger, deviceController) {\\n this._configuration = configuration;\\n this._logger = logger;\\n this.checkBrowserSupportAndFeatureConfiguration();\\n this._deviceController = deviceController;\\n this.audioVideoController = new DefaultAudioVideoController_1.default(this._configuration, this._logger, new DefaultWebSocketAdapter_1.default(this._logger), deviceController, new DefaultReconnectController_1.default(DefaultMeetingSession.RECONNECT_TIMEOUT_MS, new FullJitterBackoff_1.default(DefaultMeetingSession.RECONNECT_FIXED_WAIT_MS, DefaultMeetingSession.RECONNECT_SHORT_BACKOFF_MS, DefaultMeetingSession.RECONNECT_LONG_BACKOFF_MS)));\\n deviceController.bindToAudioVideoController(this.audioVideoController);\\n const contentShareMediaStreamBroker = new ContentShareMediaStreamBroker_1.default(this._logger);\\n this.contentShareController = new DefaultContentShareController_1.default(contentShareMediaStreamBroker, new DefaultAudioVideoController_1.default(DefaultContentShareController_1.default.createContentShareMeetingSessionConfigure(this._configuration), this._logger, new DefaultWebSocketAdapter_1.default(this._logger), contentShareMediaStreamBroker, new DefaultReconnectController_1.default(DefaultMeetingSession.RECONNECT_TIMEOUT_MS, new FullJitterBackoff_1.default(DefaultMeetingSession.RECONNECT_FIXED_WAIT_MS, DefaultMeetingSession.RECONNECT_SHORT_BACKOFF_MS, DefaultMeetingSession.RECONNECT_LONG_BACKOFF_MS))), this.audioVideoController);\\n this.audioVideoFacade = new DefaultAudioVideoFacade_1.default(this.audioVideoController, this.audioVideoController.videoTileController, this.audioVideoController.realtimeController, this.audioVideoController.audioMixController, this._deviceController, this.contentShareController);\\n }\\n get configuration() {\\n return this._configuration;\\n }\\n get logger() {\\n return this._logger;\\n }\\n get audioVideo() {\\n return this.audioVideoFacade;\\n }\\n get contentShare() {\\n return this.contentShareController;\\n }\\n get deviceController() {\\n return this._deviceController;\\n }\\n /**\\n * Clean up this instance and resources that it created.\\n *\\n * After calling `destroy`, internal fields like `audioVideoController` will be unavailable.\\n */\\n destroy() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (Destroyable_1.isDestroyable(this.contentShareController)) {\\n yield this.contentShareController.destroy();\\n }\\n if (Destroyable_1.isDestroyable(this.audioVideoController)) {\\n yield this.audioVideoController.destroy();\\n }\\n this._logger = undefined;\\n this._configuration = undefined;\\n this._deviceController = undefined;\\n this.audioVideoFacade = undefined;\\n this.audioVideoController = undefined;\\n this.contentShareController = undefined;\\n });\\n }\\n checkBrowserSupportAndFeatureConfiguration() {\\n const browserBehavior = new DefaultBrowserBehavior_1.default();\\n const browser = `${browserBehavior.name()} ${browserBehavior.majorVersion()} (${browserBehavior.version()})`;\\n this.logger.info(`browser is ${browser}`);\\n if (!browserBehavior.isSupported()) {\\n this.logger.warn('this browser is not currently supported. ' +\\n 'Stability may suffer. ' +\\n `Supported browsers are: ${browserBehavior.supportString()}.`);\\n }\\n if (this._configuration.enableUnifiedPlanForChromiumBasedBrowsers) {\\n if (browserBehavior.hasChromiumWebRTC()) {\\n this.logger.info('WebRTC unified plan for Chromium-based browsers is enabled');\\n }\\n else {\\n this.logger.info(`WebRTC unified plan is required for ${browserBehavior.name()}`);\\n }\\n }\\n if (this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers) {\\n if (!this._configuration.enableUnifiedPlanForChromiumBasedBrowsers) {\\n this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers = false;\\n this.logger.info('Simulcast requires enabling WebRTC Unified Plan for Chromium-based browsers');\\n }\\n else if (browserBehavior.hasChromiumWebRTC()) {\\n this.logger.info(`Simulcast is enabled for ${browserBehavior.name()}`);\\n }\\n else {\\n this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers = false;\\n this.logger.info('Simulcast requires WebRTC Unified Plan and is only supported on Chromium-based browsers');\\n }\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultMeetingSession;\\nDefaultMeetingSession.RECONNECT_TIMEOUT_MS = 120 * 1000;\\nDefaultMeetingSession.RECONNECT_FIXED_WAIT_MS = 0;\\nDefaultMeetingSession.RECONNECT_SHORT_BACKOFF_MS = 1 * 1000;\\nDefaultMeetingSession.RECONNECT_LONG_BACKOFF_MS = 5 * 1000;\\n//# sourceMappingURL=DefaultMeetingSession.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/DefaultMeetingSession.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionConfiguration.js\":\n/*!**********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionConfiguration.js ***!\n \\**********************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst ConnectionHealthPolicyConfiguration_1 = __webpack_require__(/*! ../connectionhealthpolicy/ConnectionHealthPolicyConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthPolicyConfiguration.js\\\");\\nconst AllHighestVideoBandwidthPolicy_1 = __webpack_require__(/*! ../videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy.js\\\");\\nconst NScaleVideoUplinkBandwidthPolicy_1 = __webpack_require__(/*! ../videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.js\\\");\\nconst MeetingSessionCredentials_1 = __webpack_require__(/*! ./MeetingSessionCredentials */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionCredentials.js\\\");\\nconst MeetingSessionURLs_1 = __webpack_require__(/*! ./MeetingSessionURLs */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionURLs.js\\\");\\n/**\\n * [[MeetingSessionConfiguration]] contains the information necessary to start\\n * a session.\\n */\\nclass MeetingSessionConfiguration {\\n /**\\n * Constructs a MeetingSessionConfiguration optionally with a chime:CreateMeeting and\\n * chime:CreateAttendee response. You can pass in either a JSON object containing the\\n * responses, or a JSON object containing the information in the Meeting and Attendee\\n * root-level fields. Examples:\\n *\\n * ```\\n * const configuration = new MeetingSessionConfiguration({\\n * \\\"Meeting\\\": {\\n * \\\"MeetingId\\\": \\\"...\\\",\\n * \\\"MediaPlacement\\\": {\\n * \\\"AudioHostUrl\\\": \\\"...\\\",\\n * \\\"ScreenDataUrl\\\": \\\"...\\\",\\n * \\\"ScreenSharingUrl\\\": \\\"...\\\",\\n * \\\"ScreenViewingUrl\\\": \\\"...\\\",\\n * \\\"SignalingUrl\\\": \\\"...\\\",\\n * \\\"TurnControlUrl\\\": \\\"...\\\"\\n * }\\n * }\\n * }\\n * }, {\\n * \\\"Attendee\\\": {\\n * \\\"ExternalUserId\\\": \\\"...\\\",\\n * \\\"AttendeeId\\\": \\\"...\\\",\\n * \\\"JoinToken\\\": \\\"...\\\"\\n * }\\n * });\\n * ```\\n *\\n * ```\\n * const configuration = new MeetingSessionConfiguration({\\n * \\\"MeetingId\\\": \\\"...\\\",\\n * \\\"MediaPlacement\\\": {\\n * \\\"AudioHostUrl\\\": \\\"...\\\",\\n * \\\"ScreenDataUrl\\\": \\\"...\\\",\\n * \\\"ScreenSharingUrl\\\": \\\"...\\\",\\n * \\\"ScreenViewingUrl\\\": \\\"...\\\",\\n * \\\"SignalingUrl\\\": \\\"...\\\",\\n * \\\"TurnControlUrl\\\": \\\"...\\\"\\n * }\\n * }, {\\n * \\\"ExternalUserId\\\": \\\"...\\\",\\n * \\\"AttendeeId\\\": \\\"...\\\",\\n * \\\"JoinToken\\\": \\\"...\\\"\\n * });\\n * ```\\n */\\n constructor(createMeetingResponse, createAttendeeResponse) {\\n /**\\n * The id of the meeting the session is joining.\\n */\\n this.meetingId = null;\\n /**\\n * The external meeting id of the meeting the session is joining.\\n */\\n this.externalMeetingId = null;\\n /**\\n * The credentials used to authenticate the session.\\n */\\n this.credentials = null;\\n /**\\n * The URLs the session uses to reach the meeting service.\\n */\\n this.urls = null;\\n /**\\n * Maximum amount of time in milliseconds to allow for connecting.\\n */\\n this.connectionTimeoutMs = 15000;\\n /**\\n * Maximum amount of time in milliseconds to allow for a screen sharing connection.\\n */\\n this.screenSharingTimeoutMs = 5000;\\n /**\\n * Maximum amount of time in milliseconds to allow for a screen viewing connection.\\n */\\n this.screenViewingTimeoutMs = 5000;\\n /**\\n * Maximum amount of time in milliseconds to wait for the current attendee to be present\\n * after initial connection.\\n */\\n this.attendeePresenceTimeoutMs = 0;\\n /**\\n * Configuration for connection health policies: reconnection, unusable audio warning connection,\\n * and signal strength bars connection.\\n */\\n this.connectionHealthPolicyConfiguration = new ConnectionHealthPolicyConfiguration_1.default();\\n /**\\n * Feature flag to enable Chromium-based browsers\\n */\\n this.enableUnifiedPlanForChromiumBasedBrowsers = true;\\n /**\\n * Feature flag to enable Simulcast\\n */\\n this.enableSimulcastForUnifiedPlanChromiumBasedBrowsers = false;\\n /**\\n * Video downlink bandwidth policy to determine which remote videos\\n * are subscribed to.\\n */\\n this.videoDownlinkBandwidthPolicy = null;\\n /**\\n * Video uplink bandwidth policy to determine the bandwidth constraints\\n * of the local video.\\n */\\n this.videoUplinkBandwidthPolicy = null;\\n if (createMeetingResponse) {\\n createMeetingResponse = this.toLowerCasePropertyNames(createMeetingResponse);\\n if (createMeetingResponse.meeting) {\\n createMeetingResponse = createMeetingResponse.meeting;\\n }\\n this.meetingId = createMeetingResponse.meetingid;\\n this.externalMeetingId = createMeetingResponse.externalmeetingid;\\n this.urls = new MeetingSessionURLs_1.default();\\n this.urls.audioHostURL = createMeetingResponse.mediaplacement.audiohosturl;\\n this.urls.screenDataURL = createMeetingResponse.mediaplacement.screendataurl;\\n this.urls.screenSharingURL = createMeetingResponse.mediaplacement.screensharingurl;\\n this.urls.screenViewingURL = createMeetingResponse.mediaplacement.screenviewingurl;\\n this.urls.signalingURL = createMeetingResponse.mediaplacement.signalingurl;\\n this.urls.turnControlURL = createMeetingResponse.mediaplacement.turncontrolurl;\\n }\\n if (createAttendeeResponse) {\\n createAttendeeResponse = this.toLowerCasePropertyNames(createAttendeeResponse);\\n if (createAttendeeResponse.attendee) {\\n createAttendeeResponse = createAttendeeResponse.attendee;\\n }\\n this.credentials = new MeetingSessionCredentials_1.default();\\n this.credentials.attendeeId = createAttendeeResponse.attendeeid;\\n this.credentials.externalUserId = createAttendeeResponse.externaluserid;\\n this.credentials.joinToken = createAttendeeResponse.jointoken;\\n }\\n // simulcast feature flag will override the following policies when DefaultAudioVideoController is created\\n this.videoDownlinkBandwidthPolicy = new AllHighestVideoBandwidthPolicy_1.default(this.credentials ? this.credentials.attendeeId : null);\\n this.videoUplinkBandwidthPolicy = new NScaleVideoUplinkBandwidthPolicy_1.default(this.credentials ? this.credentials.attendeeId : null);\\n }\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n toLowerCasePropertyNames(input) {\\n if (input === null) {\\n return null;\\n }\\n else if (typeof input !== 'object') {\\n return input;\\n }\\n else if (Array.isArray(input)) {\\n return input.map(this.toLowerCasePropertyNames);\\n }\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n return Object.keys(input).reduce((result, key) => {\\n const value = input[key];\\n const newValue = typeof value === 'object' ? this.toLowerCasePropertyNames(value) : value;\\n result[key.toLowerCase()] = newValue;\\n return result;\\n }, {});\\n }\\n}\\nexports[\\\"default\\\"] = MeetingSessionConfiguration;\\n//# sourceMappingURL=MeetingSessionConfiguration.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionConfiguration.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionCredentials.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionCredentials.js ***!\n \\********************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[MeetingSessionCredentials]] includes the credentials used to authenticate\\n * the attendee on the meeting\\n */\\nclass MeetingSessionCredentials {\\n constructor() {\\n /**\\n * The attendee id for these credentials.\\n */\\n this.attendeeId = null;\\n /**\\n * The external user id associated with the attendee.\\n */\\n this.externalUserId = null;\\n /**\\n * If set, the session will be authenticated with a join token.\\n */\\n this.joinToken = null;\\n }\\n /**\\n * Overrides JSON serialization so that join token is redacted.\\n */\\n toJSON() {\\n return {\\n attendeeId: this.attendeeId,\\n joinToken: this.joinToken === null ? null : '',\\n };\\n }\\n}\\nexports[\\\"default\\\"] = MeetingSessionCredentials;\\n//# sourceMappingURL=MeetingSessionCredentials.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionCredentials.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEvent.js\":\n/*!***********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEvent.js ***!\n \\***********************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.MeetingSessionLifecycleEvent = void 0;\\n/**\\n * [[MeetingSessionLifecycleEvent]] indicates the lifecycle status.\\n * Add new enums to the bottom. We depend on these numbers for analytics.\\n */\\nvar MeetingSessionLifecycleEvent;\\n(function (MeetingSessionLifecycleEvent) {\\n /**\\n * The session is connecting, either to start a new call, or reconnect to an existing one.\\n */\\n MeetingSessionLifecycleEvent[MeetingSessionLifecycleEvent[\\\"Connecting\\\"] = 0] = \\\"Connecting\\\";\\n /**\\n * The session successfully arrived in the started state either for the first time or\\n * due to a change in connection type.\\n */\\n MeetingSessionLifecycleEvent[MeetingSessionLifecycleEvent[\\\"Started\\\"] = 1] = \\\"Started\\\";\\n /**\\n * The session came to a stop, either from leaving or due to a failure.\\n */\\n MeetingSessionLifecycleEvent[MeetingSessionLifecycleEvent[\\\"Stopped\\\"] = 2] = \\\"Stopped\\\";\\n})(MeetingSessionLifecycleEvent = exports.MeetingSessionLifecycleEvent || (exports.MeetingSessionLifecycleEvent = {}));\\nexports[\\\"default\\\"] = MeetingSessionLifecycleEvent;\\n//# sourceMappingURL=MeetingSessionLifecycleEvent.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEvent.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEventCondition.js\":\n/*!********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEventCondition.js ***!\n \\********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.MeetingSessionLifecycleEventCondition = void 0;\\n/**\\n * [[MeetingSessionLifecycleEventCondition]] indicates the lifecycle event condition.\\n * Add new enums to the bottom. We depend on these numbers for analytics.\\n */\\nvar MeetingSessionLifecycleEventCondition;\\n(function (MeetingSessionLifecycleEventCondition) {\\n /**\\n * The session is connecting for the first time.\\n */\\n MeetingSessionLifecycleEventCondition[MeetingSessionLifecycleEventCondition[\\\"ConnectingNew\\\"] = 0] = \\\"ConnectingNew\\\";\\n /**\\n * The session was connected before and is now reconnecting.\\n */\\n MeetingSessionLifecycleEventCondition[MeetingSessionLifecycleEventCondition[\\\"ReconnectingExisting\\\"] = 1] = \\\"ReconnectingExisting\\\";\\n /**\\n * The session successfully arrived in the started state for the first time.\\n */\\n MeetingSessionLifecycleEventCondition[MeetingSessionLifecycleEventCondition[\\\"StartedNew\\\"] = 2] = \\\"StartedNew\\\";\\n /**\\n * The session successfully arrived in the started state but was connected before.\\n * This can happen, for example, when the connection type changes.\\n */\\n MeetingSessionLifecycleEventCondition[MeetingSessionLifecycleEventCondition[\\\"StartedExisting\\\"] = 3] = \\\"StartedExisting\\\";\\n /**\\n * The session successfully arrived in the started state following a reconnect.\\n */\\n MeetingSessionLifecycleEventCondition[MeetingSessionLifecycleEventCondition[\\\"StartedAfterReconnect\\\"] = 4] = \\\"StartedAfterReconnect\\\";\\n /**\\n * The session stopped cleanly, probably due to leaving the call.\\n */\\n MeetingSessionLifecycleEventCondition[MeetingSessionLifecycleEventCondition[\\\"StoppedCleanly\\\"] = 5] = \\\"StoppedCleanly\\\";\\n /**\\n * The session stopped due to a failure. A status code will indicate the cause of\\n * the failure.\\n */\\n MeetingSessionLifecycleEventCondition[MeetingSessionLifecycleEventCondition[\\\"StoppedWithFailure\\\"] = 6] = \\\"StoppedWithFailure\\\";\\n})(MeetingSessionLifecycleEventCondition = exports.MeetingSessionLifecycleEventCondition || (exports.MeetingSessionLifecycleEventCondition = {}));\\nexports[\\\"default\\\"] = MeetingSessionLifecycleEventCondition;\\n//# sourceMappingURL=MeetingSessionLifecycleEventCondition.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEventCondition.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatus.js\":\n/*!***************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatus.js ***!\n \\***************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst MeetingSessionStatusCode_1 = __webpack_require__(/*! ./MeetingSessionStatusCode */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js\\\");\\n/**\\n * [[MeetingSessionStatus]] indicates a status received regarding the session.\\n */\\nclass MeetingSessionStatus {\\n constructor(_statusCode) {\\n this._statusCode = _statusCode;\\n }\\n statusCode() {\\n return this._statusCode;\\n }\\n isFailure() {\\n switch (this._statusCode) {\\n case MeetingSessionStatusCode_1.default.AudioAuthenticationRejected:\\n case MeetingSessionStatusCode_1.default.AudioCallAtCapacity:\\n case MeetingSessionStatusCode_1.default.AudioInternalServerError:\\n case MeetingSessionStatusCode_1.default.AudioServiceUnavailable:\\n case MeetingSessionStatusCode_1.default.AudioDisconnected:\\n case MeetingSessionStatusCode_1.default.VideoCallAtSourceCapacity:\\n case MeetingSessionStatusCode_1.default.SignalingBadRequest:\\n case MeetingSessionStatusCode_1.default.SignalingInternalServerError:\\n case MeetingSessionStatusCode_1.default.SignalingRequestFailed:\\n case MeetingSessionStatusCode_1.default.StateMachineTransitionFailed:\\n case MeetingSessionStatusCode_1.default.ICEGatheringTimeoutWorkaround:\\n case MeetingSessionStatusCode_1.default.ConnectionHealthReconnect:\\n case MeetingSessionStatusCode_1.default.RealtimeApiFailed:\\n case MeetingSessionStatusCode_1.default.TaskFailed:\\n case MeetingSessionStatusCode_1.default.NoAttendeePresent:\\n return true;\\n default:\\n return false;\\n }\\n }\\n isTerminal() {\\n switch (this._statusCode) {\\n case MeetingSessionStatusCode_1.default.Left:\\n case MeetingSessionStatusCode_1.default.AudioJoinedFromAnotherDevice:\\n case MeetingSessionStatusCode_1.default.AudioAuthenticationRejected:\\n case MeetingSessionStatusCode_1.default.AudioCallAtCapacity:\\n case MeetingSessionStatusCode_1.default.MeetingEnded:\\n case MeetingSessionStatusCode_1.default.AudioDisconnected:\\n case MeetingSessionStatusCode_1.default.TURNCredentialsForbidden:\\n case MeetingSessionStatusCode_1.default.SignalingBadRequest:\\n case MeetingSessionStatusCode_1.default.SignalingRequestFailed:\\n case MeetingSessionStatusCode_1.default.VideoCallAtSourceCapacity:\\n case MeetingSessionStatusCode_1.default.RealtimeApiFailed:\\n return true;\\n default:\\n return false;\\n }\\n }\\n isAudioConnectionFailure() {\\n switch (this._statusCode) {\\n case MeetingSessionStatusCode_1.default.AudioAuthenticationRejected:\\n case MeetingSessionStatusCode_1.default.AudioInternalServerError:\\n case MeetingSessionStatusCode_1.default.AudioServiceUnavailable:\\n case MeetingSessionStatusCode_1.default.StateMachineTransitionFailed:\\n case MeetingSessionStatusCode_1.default.ICEGatheringTimeoutWorkaround:\\n case MeetingSessionStatusCode_1.default.SignalingBadRequest:\\n case MeetingSessionStatusCode_1.default.SignalingInternalServerError:\\n case MeetingSessionStatusCode_1.default.SignalingRequestFailed:\\n case MeetingSessionStatusCode_1.default.RealtimeApiFailed:\\n case MeetingSessionStatusCode_1.default.NoAttendeePresent:\\n return true;\\n default:\\n return false;\\n }\\n }\\n static fromSignalFrame(frame) {\\n if (frame.error && frame.error.status) {\\n return this.fromSignalingStatus(frame.error.status);\\n }\\n else if (frame.type === SignalingProtocol_js_1.SdkSignalFrame.Type.AUDIO_STATUS) {\\n if (frame.audioStatus) {\\n return this.fromAudioStatus(frame.audioStatus.audioStatus);\\n }\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.SignalingRequestFailed);\\n }\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.OK);\\n }\\n static fromAudioStatus(status) {\\n // TODO: Add these numbers to proto definition and reference them here.\\n switch (status) {\\n case 200:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.OK);\\n case 301:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioJoinedFromAnotherDevice);\\n case 302:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioDisconnectAudio);\\n case 403:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioAuthenticationRejected);\\n case 409:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioCallAtCapacity);\\n case 410:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.MeetingEnded);\\n case 500:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioInternalServerError);\\n case 503:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioServiceUnavailable);\\n default:\\n switch (Math.floor(status / 100)) {\\n case 2:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.OK);\\n default:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioDisconnected);\\n }\\n }\\n }\\n static fromSignalingStatus(status) {\\n // TODO: Add these numbers to proto definition and reference them here.\\n switch (status) {\\n case 206:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.VideoCallSwitchToViewOnly);\\n case 509:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.VideoCallAtSourceCapacity);\\n default:\\n switch (Math.floor(status / 100)) {\\n case 2:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.OK);\\n case 4:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.SignalingBadRequest);\\n case 5:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.SignalingInternalServerError);\\n default:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.SignalingRequestFailed);\\n }\\n }\\n }\\n}\\nexports[\\\"default\\\"] = MeetingSessionStatus;\\n//# sourceMappingURL=MeetingSessionStatus.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatus.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js\":\n/*!*******************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js ***!\n \\*******************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.MeetingSessionStatusCode = void 0;\\nvar MeetingSessionStatusCode;\\n(function (MeetingSessionStatusCode) {\\n /**\\n * Everything is OK so far.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"OK\\\"] = 0] = \\\"OK\\\";\\n /**\\n * The attendee left the meeting normally.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"Left\\\"] = 1] = \\\"Left\\\";\\n /**\\n * The attendee joined from another device.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioJoinedFromAnotherDevice\\\"] = 2] = \\\"AudioJoinedFromAnotherDevice\\\";\\n /**\\n * The attendee should explicitly switch itself from joined with audio to\\n * checked-in.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioDisconnectAudio\\\"] = 3] = \\\"AudioDisconnectAudio\\\";\\n /**\\n * Authentication was rejected. The client is not allowed on this meeting.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioAuthenticationRejected\\\"] = 4] = \\\"AudioAuthenticationRejected\\\";\\n /**\\n * The client can not join because the meeting is at capacity.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioCallAtCapacity\\\"] = 5] = \\\"AudioCallAtCapacity\\\";\\n /**\\n * Deprecated. The meeting has ended. This is a legacy alias for MeetingEnded and will\\n * be removed in v2.0.0.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioCallEnded\\\"] = 6] = \\\"AudioCallEnded\\\";\\n /**\\n * Deprecated. The meeting has ended. This is a legacy alias for MeetingEnded and will\\n * be removed in v2.0.0.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"TURNMeetingEnded\\\"] = 6] = \\\"TURNMeetingEnded\\\";\\n /**\\n * The meeting has ended.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"MeetingEnded\\\"] = 6] = \\\"MeetingEnded\\\";\\n /**\\n * There was an internal server error with the audio leg.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioInternalServerError\\\"] = 7] = \\\"AudioInternalServerError\\\";\\n /**\\n * Could not connect the audio leg due to the service being unavailable.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioServiceUnavailable\\\"] = 8] = \\\"AudioServiceUnavailable\\\";\\n /**\\n * The audio leg failed.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioDisconnected\\\"] = 9] = \\\"AudioDisconnected\\\";\\n /**\\n * The client has asked to send and receive video, but it is only possible to\\n * continue in view-only mode (receiving video). This should be handled by\\n * explicitly switching to view-only mode.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"VideoCallSwitchToViewOnly\\\"] = 10] = \\\"VideoCallSwitchToViewOnly\\\";\\n /** This can happen when you attempt to join a video meeting in \\\"send only\\\" mode\\n (transmitting your camera, but not receiving anything -- this isn't something\\n we ever do in practice, but it is supported on the server). It should be\\n treated as \\\"fatal\\\" and probably should not be retried (despite the 5xx nature). */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"VideoCallAtSourceCapacity\\\"] = 11] = \\\"VideoCallAtSourceCapacity\\\";\\n /**\\n * Bad request on JOIN or SUBSCRIBE\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"SignalingBadRequest\\\"] = 12] = \\\"SignalingBadRequest\\\";\\n /**\\n * Internal server error on JOIN or SUBSCRIBE\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"SignalingInternalServerError\\\"] = 13] = \\\"SignalingInternalServerError\\\";\\n /**\\n * Received unknown signaling error frame\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"SignalingRequestFailed\\\"] = 14] = \\\"SignalingRequestFailed\\\";\\n /**\\n * Failed to transition between two states for some reason\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"StateMachineTransitionFailed\\\"] = 15] = \\\"StateMachineTransitionFailed\\\";\\n /**\\n * Timed out gathering ICE candidates. If in Chrome, this could be an\\n * indication that the browser is in a bad state due to a VPN reconnect and\\n * the user should try quitting and relaunching the app. See:\\n * https://bugs.chromium.org/p/webrtc/issues/detail?id=9097\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"ICEGatheringTimeoutWorkaround\\\"] = 16] = \\\"ICEGatheringTimeoutWorkaround\\\";\\n /**\\n * Due to connection health, a reconnect has been triggered.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"ConnectionHealthReconnect\\\"] = 17] = \\\"ConnectionHealthReconnect\\\";\\n /**\\n * The realtime API failed in some way. This indicates a fatal problem.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"RealtimeApiFailed\\\"] = 18] = \\\"RealtimeApiFailed\\\";\\n /**\\n * A task failed for an unknown reason.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"TaskFailed\\\"] = 19] = \\\"TaskFailed\\\";\\n /**\\n * Audio device has switched.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioDeviceSwitched\\\"] = 20] = \\\"AudioDeviceSwitched\\\";\\n /**\\n * Session update produces incompatible SDP.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"IncompatibleSDP\\\"] = 21] = \\\"IncompatibleSDP\\\";\\n /**\\n * This can happen when you attempt to join a meeting which has ended or attendee got removed\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"TURNCredentialsForbidden\\\"] = 22] = \\\"TURNCredentialsForbidden\\\";\\n /**\\n * The attendee is not present.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"NoAttendeePresent\\\"] = 23] = \\\"NoAttendeePresent\\\";\\n})(MeetingSessionStatusCode = exports.MeetingSessionStatusCode || (exports.MeetingSessionStatusCode = {}));\\nexports[\\\"default\\\"] = MeetingSessionStatusCode;\\n//# sourceMappingURL=MeetingSessionStatusCode.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionTURNCredentials.js\":\n/*!************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionTURNCredentials.js ***!\n \\************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[MeetingSessionTURNCredentials]] contains TURN credentials from the TURN server.\\n */\\nclass MeetingSessionTURNCredentials {\\n constructor() {\\n this.username = null;\\n this.password = null;\\n this.ttl = null;\\n this.uris = null;\\n }\\n}\\nexports[\\\"default\\\"] = MeetingSessionTURNCredentials;\\n//# sourceMappingURL=MeetingSessionTURNCredentials.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionTURNCredentials.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionURLs.js\":\n/*!*************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionURLs.js ***!\n \\*************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[MeetingSessionURLs]] contains the URLs that will be used to reach the\\n * meeting service.\\n */\\nclass MeetingSessionURLs {\\n constructor() {\\n /**\\n * The audio host URL of the session\\n */\\n this._audioHostURL = null;\\n /**\\n * The screen data URL of the session\\n */\\n this._screenDataURL = null;\\n /**\\n * The screen sharing URL of the session\\n */\\n this._screenSharingURL = null;\\n /**\\n * The screen viewing URL of the session\\n */\\n this._screenViewingURL = null;\\n /**\\n * The signaling URL of the session\\n */\\n this._signalingURL = null;\\n /**\\n * The TURN control URL of the session\\n */\\n this._turnControlURL = null;\\n /**\\n * Function to transform URLs. Use this to rewrite URLs to traverse proxies.\\n * The default implementation returns the original URL unchanged.\\n */\\n this.urlRewriter = (url) => {\\n return url;\\n };\\n }\\n /**\\n * Gets the audio host URL after applying the urlRewriter function.\\n */\\n get audioHostURL() {\\n return this.urlRewriter(this._audioHostURL);\\n }\\n /**\\n * Sets the raw audio host URL.\\n */\\n set audioHostURL(value) {\\n this._audioHostURL = value;\\n }\\n /**\\n * Gets the screen data URL after applying the urlRewriter function.\\n */\\n get screenDataURL() {\\n return this.urlRewriter(this._screenDataURL);\\n }\\n /**\\n * Sets the raw screen data URL.\\n */\\n set screenDataURL(value) {\\n this._screenDataURL = value;\\n }\\n /**\\n * Gets the screen sharing URL after applying the urlRewriter function.\\n */\\n get screenSharingURL() {\\n return this.urlRewriter(this._screenSharingURL);\\n }\\n /**\\n * Sets the raw screen sharing URL.\\n */\\n set screenSharingURL(value) {\\n this._screenSharingURL = value;\\n }\\n /**\\n * Gets the screen viewing URL after applying the urlRewriter function.\\n */\\n get screenViewingURL() {\\n return this.urlRewriter(this._screenViewingURL);\\n }\\n /**\\n * Sets the raw screen viewing URL.\\n */\\n set screenViewingURL(value) {\\n this._screenViewingURL = value;\\n }\\n /**\\n * Gets the signaling URL after applying the urlRewriter function.\\n */\\n get signalingURL() {\\n return this.urlRewriter(this._signalingURL);\\n }\\n /**\\n * Sets the raw signaling URL.\\n */\\n set signalingURL(value) {\\n this._signalingURL = value;\\n }\\n /**\\n * Gets the TURN control URL after applying the urlRewriter function.\\n */\\n get turnControlURL() {\\n return this.urlRewriter(this._turnControlURL);\\n }\\n /**\\n * Sets the raw TURN control URL.\\n */\\n set turnControlURL(value) {\\n this._turnControlURL = value;\\n }\\n}\\nexports[\\\"default\\\"] = MeetingSessionURLs;\\n//# sourceMappingURL=MeetingSessionURLs.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionURLs.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionVideoAvailability.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionVideoAvailability.js ***!\n \\**************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[MeetingSessionVideoAvailability]] contains the video availability information.\\n */\\nclass MeetingSessionVideoAvailability {\\n constructor() {\\n /**\\n * Indicates whether one or more remote video streams\\n * are available for streaming. This can be used to decide whether or not to\\n * switch the connection type to include video.\\n */\\n this.remoteVideoAvailable = false;\\n /**\\n * Indicates whether the server has a slot available for\\n * this client's local video tile. If the client is already sending a local\\n * video tile, then this will be true. This property can be used to decide\\n * whether to offer the option to start the local video tile.\\n */\\n this.canStartLocalVideo = false;\\n }\\n /**\\n * Returns whether the fields are the same as that of another availability object.\\n */\\n equal(other) {\\n return (this.remoteVideoAvailable === other.remoteVideoAvailable &&\\n this.canStartLocalVideo === other.canStartLocalVideo);\\n }\\n /**\\n * Returns a deep copy of this object.\\n */\\n clone() {\\n const cloned = new MeetingSessionVideoAvailability();\\n cloned.remoteVideoAvailable = this.remoteVideoAvailable;\\n cloned.canStartLocalVideo = this.canStartLocalVideo;\\n return cloned;\\n }\\n}\\nexports[\\\"default\\\"] = MeetingSessionVideoAvailability;\\n//# sourceMappingURL=MeetingSessionVideoAvailability.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionVideoAvailability.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/message/Message.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/message/Message.js ***!\n \\*******************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass Message {\\n constructor(type, // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\\n headers, payload) {\\n this.type = type;\\n this.headers = headers;\\n this.payload = payload;\\n }\\n}\\nexports[\\\"default\\\"] = Message;\\n//# sourceMappingURL=Message.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/message/Message.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/messagingsession/DefaultMessagingSession.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/messagingsession/DefaultMessagingSession.js ***!\n \\********************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst FullJitterBackoff_1 = __webpack_require__(/*! ../backoff/FullJitterBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js\\\");\\nconst Message_1 = __webpack_require__(/*! ../message/Message */ \\\"./node_modules/amazon-chime-sdk-js/build/message/Message.js\\\");\\nconst DefaultReconnectController_1 = __webpack_require__(/*! ../reconnectcontroller/DefaultReconnectController */ \\\"./node_modules/amazon-chime-sdk-js/build/reconnectcontroller/DefaultReconnectController.js\\\");\\nconst AsyncScheduler_1 = __webpack_require__(/*! ../scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nconst DefaultSigV4_1 = __webpack_require__(/*! ../sigv4/DefaultSigV4 */ \\\"./node_modules/amazon-chime-sdk-js/build/sigv4/DefaultSigV4.js\\\");\\nconst DefaultWebSocketAdapter_1 = __webpack_require__(/*! ../websocketadapter/DefaultWebSocketAdapter */ \\\"./node_modules/amazon-chime-sdk-js/build/websocketadapter/DefaultWebSocketAdapter.js\\\");\\nconst WebSocketReadyState_1 = __webpack_require__(/*! ../websocketadapter/WebSocketReadyState */ \\\"./node_modules/amazon-chime-sdk-js/build/websocketadapter/WebSocketReadyState.js\\\");\\nclass DefaultMessagingSession {\\n constructor(configuration, logger, webSocket, reconnectController, sigV4) {\\n this.configuration = configuration;\\n this.logger = logger;\\n this.webSocket = webSocket;\\n this.reconnectController = reconnectController;\\n this.sigV4 = sigV4;\\n this.observerQueue = new Set();\\n if (!this.webSocket) {\\n this.webSocket = new DefaultWebSocketAdapter_1.default(this.logger);\\n }\\n if (!this.reconnectController) {\\n this.reconnectController = new DefaultReconnectController_1.default(configuration.reconnectTimeoutMs, new FullJitterBackoff_1.default(configuration.reconnectFixedWaitMs, configuration.reconnectShortBackoffMs, configuration.reconnectLongBackoffMs));\\n }\\n if (!this.sigV4) {\\n this.sigV4 = new DefaultSigV4_1.default(this.configuration.chimeClient, this.configuration.awsClient);\\n }\\n }\\n addObserver(observer) {\\n this.logger.info('adding messaging observer');\\n this.observerQueue.add(observer);\\n }\\n removeObserver(observer) {\\n this.logger.info('removing messaging observer');\\n this.observerQueue.delete(observer);\\n }\\n start() {\\n if (this.isClosed()) {\\n this.startConnecting(false);\\n }\\n else {\\n this.logger.info('messaging session already started');\\n }\\n }\\n stop() {\\n if (!this.isClosed()) {\\n this.isClosing = true;\\n this.webSocket.close();\\n }\\n else {\\n this.logger.info('no existing connection needs closing');\\n }\\n }\\n forEachObserver(observerFunc) {\\n for (const observer of this.observerQueue) {\\n AsyncScheduler_1.default.nextTick(() => {\\n if (this.observerQueue.has(observer)) {\\n observerFunc(observer);\\n }\\n });\\n }\\n }\\n setUpEventListeners() {\\n this.webSocket.addEventListener('open', () => {\\n this.openEventHandler();\\n });\\n this.webSocket.addEventListener('message', (event) => {\\n this.receiveMessageHandler(event.data);\\n });\\n this.webSocket.addEventListener('close', (event) => {\\n this.closeEventHandler(event);\\n });\\n this.webSocket.addEventListener('error', () => {\\n this.logger.error(`WebSocket error`);\\n });\\n }\\n startConnecting(reconnecting) {\\n const signedUrl = this.prepareWebSocketUrl();\\n this.logger.info(`opening connection to ${signedUrl}`);\\n if (!reconnecting) {\\n this.reconnectController.reset();\\n }\\n if (this.reconnectController.hasStartedConnectionAttempt()) {\\n this.reconnectController.startedConnectionAttempt(false);\\n }\\n else {\\n this.reconnectController.startedConnectionAttempt(true);\\n }\\n this.webSocket.create(signedUrl, [], true);\\n this.forEachObserver(observer => {\\n if (observer.messagingSessionDidStartConnecting) {\\n observer.messagingSessionDidStartConnecting(reconnecting);\\n }\\n });\\n this.setUpEventListeners();\\n }\\n prepareWebSocketUrl() {\\n const queryParams = new Map();\\n queryParams.set('userArn', [this.configuration.userArn]);\\n queryParams.set('sessionId', [this.configuration.messagingSessionId]);\\n return this.sigV4.signURL('GET', 'wss', 'chime', this.configuration.endpointUrl, '/connect', '', queryParams);\\n }\\n isClosed() {\\n return (this.webSocket.readyState() === WebSocketReadyState_1.default.None ||\\n this.webSocket.readyState() === WebSocketReadyState_1.default.Closed);\\n }\\n openEventHandler() {\\n this.reconnectController.reset();\\n this.isFirstMessageReceived = false;\\n }\\n receiveMessageHandler(data) {\\n try {\\n const jsonData = JSON.parse(data);\\n const messageType = jsonData.Headers['x-amz-chime-event-type'];\\n const message = new Message_1.default(messageType, jsonData.Headers, jsonData.Payload || null);\\n if (!this.isFirstMessageReceived) {\\n // Since backend does authorization after the websocket open we cannot rely on open event for didStart\\n // as the socket will close if authorization fail after it open. So we trigger didStart on first message event\\n // instead\\n this.forEachObserver(observer => {\\n if (observer.messagingSessionDidStart) {\\n observer.messagingSessionDidStart();\\n }\\n });\\n this.isFirstMessageReceived = true;\\n }\\n this.forEachObserver(observer => {\\n if (observer.messagingSessionDidReceiveMessage) {\\n observer.messagingSessionDidReceiveMessage(message);\\n }\\n });\\n }\\n catch (error) {\\n this.logger.error(`Messaging parsing failed: ${error}`);\\n }\\n }\\n closeEventHandler(event) {\\n this.logger.info(`WebSocket close: ${event.code} ${event.reason}`);\\n this.webSocket.destroy();\\n if (!this.isClosing &&\\n this.canReconnect(event.code) &&\\n this.reconnectController.retryWithBackoff(() => __awaiter(this, void 0, void 0, function* () {\\n this.startConnecting(true);\\n }), null)) {\\n return;\\n }\\n this.isClosing = false;\\n if (this.isFirstMessageReceived) {\\n this.forEachObserver(observer => {\\n if (observer.messagingSessionDidStop) {\\n observer.messagingSessionDidStop(event);\\n }\\n });\\n }\\n }\\n canReconnect(closeCode) {\\n // 4003 is Kicked closing event from the back end\\n return (closeCode === 1001 ||\\n closeCode === 1006 ||\\n (closeCode >= 1011 && closeCode <= 1014) ||\\n (closeCode > 4000 && closeCode !== 4002 && closeCode !== 4003 && closeCode !== 4401));\\n }\\n}\\nexports[\\\"default\\\"] = DefaultMessagingSession;\\n//# sourceMappingURL=DefaultMessagingSession.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/messagingsession/DefaultMessagingSession.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/messagingsession/MessagingSessionConfiguration.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/messagingsession/MessagingSessionConfiguration.js ***!\n \\**************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[MessagingSessionConfiguration]] contains the information necessary to start\\n * a messaging session.\\n */\\n/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/explicit-module-boundary-types: 0 */\\nclass MessagingSessionConfiguration {\\n /**\\n * Constructs a MessagingSessionConfiguration optionally with userArn, messaging session id, a messaging session\\n * endpoint URL, the chimeClient, and the AWSClient.\\n * The messaging session id is to uniquely identify this messaging session for the userArn.\\n * If messaging session id is passed in as null, it will be automatically generated.\\n */\\n constructor(userArn, messagingSessionId, endpointUrl, chimeClient, awsClient) {\\n this.userArn = userArn;\\n this.messagingSessionId = messagingSessionId;\\n this.endpointUrl = endpointUrl;\\n this.chimeClient = chimeClient;\\n this.awsClient = awsClient;\\n /**\\n * Maximum amount of time in milliseconds to allow for reconnecting.\\n */\\n this.reconnectTimeoutMs = 10 * 1000;\\n /**\\n * Fixed wait amount in milliseconds between reconnecting attempts.\\n */\\n this.reconnectFixedWaitMs = 0;\\n /**\\n * The short back off time in milliseconds between reconnecting attempts.\\n */\\n this.reconnectShortBackoffMs = 1 * 1000;\\n /**\\n * The short back off time in milliseconds between reconnecting attempts.\\n */\\n this.reconnectLongBackoffMs = 5 * 1000;\\n if (!this.messagingSessionId) {\\n this.messagingSessionId = this.generateSessionId();\\n }\\n }\\n generateSessionId() {\\n const num = new Uint32Array(1);\\n const randomNum = window.crypto.getRandomValues(num);\\n return randomNum[0].toString();\\n }\\n}\\nexports[\\\"default\\\"] = MessagingSessionConfiguration;\\n//# sourceMappingURL=MessagingSessionConfiguration.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/messagingsession/MessagingSessionConfiguration.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/modality/DefaultModality.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/modality/DefaultModality.js ***!\n \\****************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst ContentShareConstants_1 = __webpack_require__(/*! ../contentsharecontroller/ContentShareConstants */ \\\"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareConstants.js\\\");\\nclass DefaultModality {\\n constructor(_id) {\\n this._id = _id;\\n }\\n id() {\\n return this._id;\\n }\\n base() {\\n if (!this._id) {\\n return '';\\n }\\n return this._id.split(DefaultModality.MODALITY_SEPARATOR)[0];\\n }\\n modality() {\\n if (!this._id) {\\n return '';\\n }\\n const components = this._id.split(DefaultModality.MODALITY_SEPARATOR);\\n if (components.length === 2) {\\n return components[1];\\n }\\n return '';\\n }\\n hasModality(modality) {\\n return modality !== '' && this.modality() === modality;\\n }\\n withModality(modality) {\\n const m = new DefaultModality(this.base() + DefaultModality.MODALITY_SEPARATOR + modality);\\n if (modality === '' ||\\n this.base() === '' ||\\n new DefaultModality(m._id).modality() !== modality) {\\n return new DefaultModality(this.base());\\n }\\n return m;\\n }\\n}\\nexports[\\\"default\\\"] = DefaultModality;\\nDefaultModality.MODALITY_SEPARATOR = ContentShareConstants_1.default.Modality[0];\\nDefaultModality.MODALITY_CONTENT = ContentShareConstants_1.default.Modality.substr(1);\\n//# sourceMappingURL=DefaultModality.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/modality/DefaultModality.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/pingpong/DefaultPingPong.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/pingpong/DefaultPingPong.js ***!\n \\****************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst Maybe_1 = __webpack_require__(/*! ../maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nconst AsyncScheduler_1 = __webpack_require__(/*! ../scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nconst IntervalScheduler_1 = __webpack_require__(/*! ../scheduler/IntervalScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js\\\");\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ../signalingclient/SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\n/**\\n * [[DefaultPingPong]] implements the PingPong and SignalingClientObserver interface.\\n */\\nclass DefaultPingPong {\\n constructor(signalingClient, intervalMs, logger) {\\n this.signalingClient = signalingClient;\\n this.intervalMs = intervalMs;\\n this.logger = logger;\\n this.observerQueue = new Set();\\n this.consecutivePongsUnaccountedFor = 0;\\n this.intervalScheduler = new IntervalScheduler_1.default(this.intervalMs);\\n this.pingId = 0;\\n }\\n addObserver(observer) {\\n this.logger.info('adding a ping-pong observer');\\n this.observerQueue.add(observer);\\n }\\n removeObserver(observer) {\\n this.logger.info('removing a ping-pong observer');\\n this.observerQueue.delete(observer);\\n }\\n forEachObserver(observerFunc) {\\n for (const observer of this.observerQueue) {\\n AsyncScheduler_1.default.nextTick(() => {\\n if (this.observerQueue.has(observer)) {\\n observerFunc(observer);\\n }\\n });\\n }\\n }\\n start() {\\n this.stop();\\n this.signalingClient.registerObserver(this);\\n if (this.signalingClient.ready()) {\\n this.startPingInterval();\\n }\\n }\\n stop() {\\n this.stopPingInterval();\\n this.signalingClient.removeObserver(this);\\n }\\n startPingInterval() {\\n this.intervalScheduler.start(() => {\\n this.ping();\\n });\\n this.ping();\\n }\\n stopPingInterval() {\\n this.intervalScheduler.stop();\\n this.pingId = 0;\\n this.consecutivePongsUnaccountedFor = 0;\\n }\\n ping() {\\n if (this.consecutivePongsUnaccountedFor > 0) {\\n this.logger.warn(`missed pong ${this.consecutivePongsUnaccountedFor} time(s)`);\\n this.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.didMissPongs).map(f => f.bind(observer)(this.consecutivePongsUnaccountedFor));\\n });\\n }\\n this.consecutivePongsUnaccountedFor += 1;\\n this.pingId = (this.pingId + 1) & 0xffffffff;\\n const ping = SignalingProtocol_js_1.SdkPingPongFrame.create();\\n ping.pingId = this.pingId;\\n ping.type = SignalingProtocol_js_1.SdkPingPongType.PING;\\n this.pingTimestampLocalMs = this.signalingClient.pingPong(ping);\\n this.logger.debug(() => {\\n return `sent ping ${this.pingId}`;\\n });\\n }\\n pong(pingId) {\\n const pong = SignalingProtocol_js_1.SdkPingPongFrame.create();\\n pong.pingId = pingId;\\n pong.type = SignalingProtocol_js_1.SdkPingPongType.PONG;\\n this.signalingClient.pingPong(pong);\\n }\\n handleSignalingClientEvent(event) {\\n switch (event.type) {\\n case SignalingClientEventType_1.default.WebSocketOpen:\\n this.startPingInterval();\\n break;\\n case SignalingClientEventType_1.default.WebSocketFailed:\\n case SignalingClientEventType_1.default.WebSocketError:\\n this.logger.warn(`stopped pinging (${SignalingClientEventType_1.default[event.type]})`);\\n this.stopPingInterval();\\n break;\\n case SignalingClientEventType_1.default.WebSocketClosing:\\n case SignalingClientEventType_1.default.WebSocketClosed:\\n this.logger.info(`stopped pinging (${SignalingClientEventType_1.default[event.type]})`);\\n this.stopPingInterval();\\n break;\\n case SignalingClientEventType_1.default.ReceivedSignalFrame:\\n if (event.message.type !== SignalingProtocol_js_1.SdkSignalFrame.Type.PING_PONG) {\\n break;\\n }\\n if (event.message.pingPong.type === SignalingProtocol_js_1.SdkPingPongType.PONG) {\\n const pingId = event.message.pingPong.pingId;\\n if (pingId !== this.pingId) {\\n this.logger.warn(`unexpected ping id ${pingId} (expected ${this.pingId})`);\\n break;\\n }\\n this.consecutivePongsUnaccountedFor = 0;\\n let pongTimestampRemoteMs;\\n if (typeof event.message.timestampMs === 'number') {\\n pongTimestampRemoteMs = event.message.timestampMs;\\n }\\n else {\\n break;\\n }\\n this.logger.debug(() => {\\n return `received pong ${pingId} with timestamp ${pongTimestampRemoteMs}`;\\n });\\n const pongTimestampLocalMs = event.timestampMs;\\n const pingPongLocalIntervalMs = pongTimestampLocalMs - this.pingTimestampLocalMs;\\n const estimatedPingTimestampRemoteMs = Math.round(pongTimestampRemoteMs - pingPongLocalIntervalMs / 2);\\n const estimatedClockSkewMs = this.pingTimestampLocalMs - estimatedPingTimestampRemoteMs;\\n this.logger.info(`local clock skew estimate=${estimatedClockSkewMs}ms from ping-pong time=${pingPongLocalIntervalMs}ms`);\\n this.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.didReceivePong).map(f => f.bind(observer)(pingId, estimatedClockSkewMs, pingPongLocalIntervalMs));\\n });\\n }\\n else {\\n this.pong(event.message.pingPong.pingId);\\n }\\n break;\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultPingPong;\\n//# sourceMappingURL=DefaultPingPong.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/pingpong/DefaultPingPong.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/DefaultRealtimeController.js\":\n/*!************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/realtimecontroller/DefaultRealtimeController.js ***!\n \\************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst RealtimeState_1 = __webpack_require__(/*! ./RealtimeState */ \\\"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeState.js\\\");\\nconst RealtimeVolumeIndicator_1 = __webpack_require__(/*! ./RealtimeVolumeIndicator */ \\\"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeVolumeIndicator.js\\\");\\n/**\\n * [[DefaultRealtimeController]] is written to adhere to the following tenets to\\n * make privacy and performance bugs significantly less likely.\\n *\\n * 1. Any call to the object is guaranteed to succeed from the caller's\\n * perspective to the maximum extent that this can be ensured. However, all\\n * failures of the object are reported as fatal errors. For example, if local\\n * mute fails, then that is a privacy issue and we must tear down the\\n * connection and try starting over.\\n *\\n * 2. State is owned by the object and is considered authoritative at all times.\\n * For example, if [[realtimeIsLocalAudioMuted]] is true then the user *is*\\n * muted.\\n *\\n * 3. Callbacks are fired synchronously and do their work synchronously. Any\\n * unnecessary asynchronous implementation only invites latency and\\n * increases the surface error for potential errors.\\n *\\n * 4. Mutation only occurs when state changes. All state-changing functions are\\n * idempotent.\\n *\\n * 5. Every conditional branch gets its own if statement and test coverage is\\n * 100% for this object.\\n *\\n * 6. Function parameters and returns use primitives only (no classes or enums).\\n * This minimizes the number of dependencies that consumers have to take on\\n * and allows the object to be more easily wrapped. Values are normalized\\n * where possible.\\n *\\n * 7. The object takes no other non-realtime dependencies.\\n *\\n * 8. Interface functions begin with `realtime` to make boundaries between the\\n * RealtimeController interface and the UI or business logic explicit and\\n * auditable.\\n *\\n * 9. Local state overrides remote state but not vice-versa. For example, if\\n * locally muted with an active audio input and a remote state indicates the\\n * same user is unmuted because the muted state has not yet propagated, then\\n * the volume indicator update for the user would show the remote mute state\\n * as muted. However, if locally muted without an active audio input and a\\n * remote state indicates the user is unmuted (since they are dialed in), the\\n * remote state persists but does not override the local state so\\n * [[realtimeIsLocalAudioMuted]] still returns true.\\n */\\nclass DefaultRealtimeController {\\n constructor() {\\n this.state = new RealtimeState_1.default();\\n }\\n realtimeSetLocalAttendeeId(attendeeId, externalUserId) {\\n this.state.localAttendeeId = attendeeId;\\n this.state.localExternalUserId = externalUserId;\\n }\\n realtimeSetAttendeeIdPresence(attendeeId, present, externalUserId, dropped, posInFrame) {\\n try {\\n if (present) {\\n this.state.attendeeIdToExternalUserId[attendeeId] = externalUserId;\\n }\\n for (const fn of this.state.attendeeIdChangesCallbacks) {\\n fn(attendeeId, present, externalUserId, dropped, posInFrame);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeSubscribeToAttendeeIdPresence(callback) {\\n try {\\n this.state.attendeeIdChangesCallbacks.push(callback);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeToAttendeeIdPresence(callback) {\\n try {\\n const index = this.state.attendeeIdChangesCallbacks.indexOf(callback);\\n if (index !== -1) {\\n this.state.attendeeIdChangesCallbacks.splice(index, 1);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n // Audio Input\\n realtimeSetLocalAudioInput(audioInput) {\\n try {\\n if (this.state.audioInput === audioInput) {\\n return;\\n }\\n this.setAudioInputEnabled(false);\\n this.state.audioInput = audioInput;\\n this.setAudioInputEnabled(!this.state.muted);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n // Muting\\n realtimeSetCanUnmuteLocalAudio(canUnmute) {\\n try {\\n if (this.state.canUnmute === canUnmute) {\\n return;\\n }\\n this.state.canUnmute = canUnmute;\\n for (const fn of this.state.setCanUnmuteLocalAudioCallbacks) {\\n fn(canUnmute);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeSubscribeToSetCanUnmuteLocalAudio(callback) {\\n try {\\n this.state.setCanUnmuteLocalAudioCallbacks.push(callback);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeToSetCanUnmuteLocalAudio(callback) {\\n try {\\n const index = this.state.setCanUnmuteLocalAudioCallbacks.indexOf(callback);\\n if (index !== -1) {\\n this.state.setCanUnmuteLocalAudioCallbacks.splice(index, 1);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeCanUnmuteLocalAudio() {\\n return this.state.canUnmute;\\n }\\n realtimeMuteLocalAudio() {\\n if (this.state.muted) {\\n return;\\n }\\n try {\\n this.setAudioInputEnabled(false);\\n this.state.muted = true;\\n this.realtimeUpdateVolumeIndicator(this.state.localAttendeeId, null, null, null, this.state.localExternalUserId);\\n for (const fn of this.state.muteAndUnmuteLocalAudioCallbacks) {\\n fn(true);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnmuteLocalAudio() {\\n if (!this.state.muted) {\\n return true;\\n }\\n if (!this.state.canUnmute) {\\n return false;\\n }\\n try {\\n this.setAudioInputEnabled(true);\\n this.state.muted = false;\\n this.realtimeUpdateVolumeIndicator(this.state.localAttendeeId, null, null, null, this.state.localExternalUserId);\\n for (const fn of this.state.muteAndUnmuteLocalAudioCallbacks) {\\n fn(false);\\n }\\n return true;\\n }\\n catch (e) {\\n this.onError(e);\\n return false;\\n }\\n }\\n realtimeSubscribeToMuteAndUnmuteLocalAudio(callback) {\\n try {\\n this.state.muteAndUnmuteLocalAudioCallbacks.push(callback);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeToMuteAndUnmuteLocalAudio(callback) {\\n try {\\n const index = this.state.muteAndUnmuteLocalAudioCallbacks.indexOf(callback);\\n if (index !== -1) {\\n this.state.muteAndUnmuteLocalAudioCallbacks.splice(index, 1);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeIsLocalAudioMuted() {\\n return this.state.muted;\\n }\\n // Volume Indicators\\n realtimeSubscribeToVolumeIndicator(attendeeId, callback) {\\n try {\\n if (!this.state.volumeIndicatorCallbacks.hasOwnProperty(attendeeId)) {\\n this.state.volumeIndicatorCallbacks[attendeeId] = [];\\n }\\n this.state.volumeIndicatorCallbacks[attendeeId].push(callback);\\n this.sendVolumeIndicatorChange(attendeeId, true, true, true, this.state.attendeeIdToExternalUserId[attendeeId]);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeFromVolumeIndicator(attendeeId, callback) {\\n try {\\n if (callback) {\\n const index = this.state.volumeIndicatorCallbacks[attendeeId].indexOf(callback);\\n if (index !== -1) {\\n this.state.volumeIndicatorCallbacks[attendeeId].splice(index, 1);\\n }\\n }\\n else {\\n delete this.state.volumeIndicatorCallbacks[attendeeId];\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUpdateVolumeIndicator(attendeeId, volume, muted, signalStrength, externalUserId) {\\n try {\\n muted = this.applyLocalMuteOverride(attendeeId, muted);\\n const state = this.getVolumeIndicatorState(attendeeId);\\n let volumeUpdated = false;\\n let mutedUpdated = false;\\n let signalStrengthUpdated = false;\\n if (muted !== null) {\\n if (state.muted !== muted) {\\n state.muted = muted;\\n mutedUpdated = true;\\n if (state.muted && state.volume !== 0.0) {\\n state.volume = 0.0;\\n volumeUpdated = true;\\n }\\n }\\n }\\n if (!state.muted && volume !== null) {\\n if (state.volume !== volume) {\\n state.volume = volume;\\n volumeUpdated = true;\\n }\\n if (state.muted === null) {\\n state.muted = false;\\n mutedUpdated = true;\\n }\\n }\\n if (signalStrength !== null) {\\n if (state.signalStrength !== signalStrength) {\\n state.signalStrength = signalStrength;\\n signalStrengthUpdated = true;\\n }\\n }\\n this.sendVolumeIndicatorChange(attendeeId, volumeUpdated, mutedUpdated, signalStrengthUpdated, externalUserId);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeSubscribeToLocalSignalStrengthChange(callback) {\\n try {\\n this.state.localSignalStrengthChangeCallbacks.push(callback);\\n if (this.state.localAttendeeId === null) {\\n return;\\n }\\n this.sendLocalSignalStrengthChange(this.state.localAttendeeId, true);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeToLocalSignalStrengthChange(callback) {\\n try {\\n const index = this.state.localSignalStrengthChangeCallbacks.indexOf(callback);\\n if (index !== -1) {\\n this.state.localSignalStrengthChangeCallbacks.splice(index, 1);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeSubscribeToSendDataMessage(\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n callback) {\\n try {\\n this.state.sendDataMessageCallbacks.push(callback);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeFromSendDataMessage(\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n callback) {\\n try {\\n const index = this.state.sendDataMessageCallbacks.indexOf(callback);\\n if (index !== -1) {\\n this.state.sendDataMessageCallbacks.splice(index, 1);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeSendDataMessage(topic, data, // eslint-disable-line @typescript-eslint/no-explicit-any\\n lifetimeMs) {\\n try {\\n for (const fn of this.state.sendDataMessageCallbacks) {\\n fn(topic, data, lifetimeMs);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeSubscribeToReceiveDataMessage(topic, callback) {\\n try {\\n if (this.state.receiveDataMessageCallbacks.has(topic)) {\\n this.state.receiveDataMessageCallbacks.get(topic).push(callback);\\n }\\n else {\\n this.state.receiveDataMessageCallbacks.set(topic, [callback]);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeFromReceiveDataMessage(topic) {\\n try {\\n this.state.receiveDataMessageCallbacks.delete(topic);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeReceiveDataMessage(dataMessage) {\\n try {\\n if (this.state.receiveDataMessageCallbacks.has(dataMessage.topic)) {\\n for (const fn of this.state.receiveDataMessageCallbacks.get(dataMessage.topic)) {\\n fn(dataMessage);\\n }\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n // Error Handling\\n realtimeSubscribeToFatalError(callback) {\\n try {\\n this.state.fatalErrorCallbacks.push(callback);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeToFatalError(callback) {\\n try {\\n const index = this.state.fatalErrorCallbacks.indexOf(callback);\\n if (index !== -1) {\\n this.state.fatalErrorCallbacks.splice(index, 1);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n // Internals\\n setAudioInputEnabled(enabled) {\\n if (!this.state.audioInput) {\\n return;\\n }\\n for (const track of this.state.audioInput.getTracks()) {\\n if (track.enabled === enabled) {\\n continue;\\n }\\n track.enabled = enabled;\\n }\\n }\\n applyLocalMuteOverride(attendeeIdRemote, mutedRemote) {\\n const attendeeIdLocal = this.state.localAttendeeId;\\n const mutedLocal = this.state.muted;\\n if (attendeeIdRemote !== attendeeIdLocal) {\\n return mutedRemote;\\n }\\n if (this.state.audioInput === null) {\\n return mutedRemote;\\n }\\n return mutedLocal;\\n }\\n sendVolumeIndicatorChange(attendeeId, volumeUpdated, mutedUpdated, signalStrengthUpdated, externalUserId) {\\n this.sendLocalSignalStrengthChange(attendeeId, signalStrengthUpdated);\\n if (!this.state.volumeIndicatorCallbacks.hasOwnProperty(attendeeId)) {\\n return;\\n }\\n const state = this.getVolumeIndicatorState(attendeeId);\\n const updateState = new RealtimeVolumeIndicator_1.default();\\n if (volumeUpdated) {\\n updateState.volume = state.volume;\\n }\\n if (mutedUpdated) {\\n updateState.muted = state.muted;\\n }\\n if (signalStrengthUpdated) {\\n updateState.signalStrength = state.signalStrength;\\n }\\n if (this.stateIsEmpty(updateState)) {\\n return;\\n }\\n for (const fn of this.state.volumeIndicatorCallbacks[attendeeId]) {\\n fn(attendeeId, updateState.volume, updateState.muted, updateState.signalStrength, externalUserId);\\n }\\n }\\n sendLocalSignalStrengthChange(attendeeId, signalStrengthUpdated) {\\n if (!signalStrengthUpdated) {\\n return;\\n }\\n if (attendeeId !== this.state.localAttendeeId) {\\n return;\\n }\\n const state = this.getVolumeIndicatorState(attendeeId);\\n const signalStrength = state.signalStrength;\\n if (signalStrength === null) {\\n return;\\n }\\n for (const fn of this.state.localSignalStrengthChangeCallbacks) {\\n fn(signalStrength);\\n }\\n }\\n getVolumeIndicatorState(id) {\\n if (!this.state.volumeIndicatorState.hasOwnProperty(id)) {\\n this.state.volumeIndicatorState[id] = new RealtimeVolumeIndicator_1.default();\\n }\\n return this.state.volumeIndicatorState[id];\\n }\\n stateIsEmpty(state) {\\n return state.volume === null && state.muted === null && state.signalStrength === null;\\n }\\n onError(error) {\\n try {\\n // 1) try the fatal error callbacks so that the issue is reported in\\n // logs and to give the handler a chance to clean up and reset.\\n for (const callback of this.state.fatalErrorCallbacks) {\\n callback(error);\\n }\\n }\\n catch (eventError) {\\n try {\\n // 2) if the error event fails, fall back to console.error so that\\n // it at least prints out to the console before moving on.\\n console.error(error);\\n console.error(eventError);\\n }\\n catch (consoleError) {\\n // 3) if all else fails, swallow the error and give up to guarantee\\n // that the API call returns cleanly.\\n }\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultRealtimeController;\\n//# sourceMappingURL=DefaultRealtimeController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/realtimecontroller/DefaultRealtimeController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeAttendeePositionInFrame.js\":\n/*!******************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeAttendeePositionInFrame.js ***!\n \\******************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[RealtimeAttendeePositionInFrame]] information about the attendee's place in the frame.\\n */\\nclass RealtimeAttendeePositionInFrame {\\n constructor() {\\n /**\\n * Index of attendee update in the frame starting at zero\\n */\\n this.attendeeIndex = null;\\n /**\\n * Number of total attendee updates in the frame\\n */\\n this.attendeesInFrame = null;\\n }\\n}\\nexports[\\\"default\\\"] = RealtimeAttendeePositionInFrame;\\n//# sourceMappingURL=RealtimeAttendeePositionInFrame.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeAttendeePositionInFrame.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeState.js\":\n/*!************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeState.js ***!\n \\************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[RealtimeState]] stores all realtime persistent state.\\n */\\nclass RealtimeState {\\n constructor() {\\n /**\\n * Stores the attendee id of the current user\\n */\\n this.localAttendeeId = null;\\n /**\\n * Stores the external user id of the current user\\n */\\n this.localExternalUserId = null;\\n /**\\n * Callbacks to listen for attendee id changes\\n */\\n this.attendeeIdChangesCallbacks = [];\\n /**\\n * Stores whether the user can transition from muted to unmuted\\n */\\n this.canUnmute = true;\\n /**\\n * Callbacks to listen for changes to can-unmute local audio state\\n */\\n this.setCanUnmuteLocalAudioCallbacks = [];\\n /**\\n * Stores whether the user is presently muted\\n */\\n this.muted = false;\\n /**\\n * Callbacks to listen for local audio mutes and unmutes\\n */\\n this.muteAndUnmuteLocalAudioCallbacks = [];\\n /**\\n * Stores the active audio input\\n */\\n this.audioInput = null;\\n /**\\n * Stores per-attendee id volume indicator state\\n */\\n this.volumeIndicatorState = {};\\n /**\\n * Stores attendee id to external user id mappings\\n */\\n this.attendeeIdToExternalUserId = {};\\n /**\\n * Stores per-attendee id callbacks called when volume indicators change\\n */\\n this.volumeIndicatorCallbacks = {};\\n /**\\n * Callbacks to listen for changes to local signal strength\\n */\\n this.localSignalStrengthChangeCallbacks = [];\\n /**\\n * Callbacks to listen for fatal errors\\n */\\n this.fatalErrorCallbacks = [];\\n /**\\n * Callbacks to trigger when sending message\\n */\\n this.sendDataMessageCallbacks = [];\\n /**\\n * Callbacks to listen for receiving message from data channel based on given topic\\n */\\n this.receiveDataMessageCallbacks = new Map();\\n }\\n}\\nexports[\\\"default\\\"] = RealtimeState;\\n//# sourceMappingURL=RealtimeState.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeState.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeVolumeIndicator.js\":\n/*!**********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeVolumeIndicator.js ***!\n \\**********************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[RealtimeVolumeIndicator]] stores the current volume, mute, and\\n * signal strength for an attendee.\\n */\\nclass RealtimeVolumeIndicator {\\n constructor() {\\n this.volume = null;\\n this.muted = null;\\n this.signalStrength = null;\\n }\\n}\\nexports[\\\"default\\\"] = RealtimeVolumeIndicator;\\n//# sourceMappingURL=RealtimeVolumeIndicator.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeVolumeIndicator.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/reconnectcontroller/DefaultReconnectController.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/reconnectcontroller/DefaultReconnectController.js ***!\n \\**************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst TimeoutScheduler_1 = __webpack_require__(/*! ../scheduler/TimeoutScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/TimeoutScheduler.js\\\");\\nclass DefaultReconnectController {\\n constructor(reconnectTimeoutMs, backoffPolicy) {\\n this.reconnectTimeoutMs = reconnectTimeoutMs;\\n this.backoffPolicy = backoffPolicy;\\n this.shouldReconnect = true;\\n this.onlyRestartPeerConnection = false;\\n this.firstConnectionAttempted = false;\\n this.firstConnectionAttemptTimestampMs = 0;\\n this.lastActiveTimestampMs = Infinity;\\n this._isFirstConnection = true;\\n this.backoffTimer = null;\\n this.backoffCancel = null;\\n this.reset();\\n }\\n timeSpentReconnectingMs() {\\n if (!this.firstConnectionAttempted) {\\n return 0;\\n }\\n return Date.now() - this.firstConnectionAttemptTimestampMs;\\n }\\n hasPastReconnectDeadline() {\\n if (Date.now() - this.lastActiveTimestampMs >= this.reconnectTimeoutMs) {\\n return true;\\n }\\n return this.timeSpentReconnectingMs() >= this.reconnectTimeoutMs;\\n }\\n reset() {\\n this.cancel();\\n this.shouldReconnect = true;\\n this.onlyRestartPeerConnection = false;\\n this.firstConnectionAttempted = false;\\n this.firstConnectionAttemptTimestampMs = 0;\\n this.lastActiveTimestampMs = Infinity;\\n this.backoffPolicy.reset();\\n }\\n startedConnectionAttempt(isFirstConnection) {\\n this._isFirstConnection = isFirstConnection;\\n if (!this.firstConnectionAttempted) {\\n this.firstConnectionAttempted = true;\\n this.firstConnectionAttemptTimestampMs = Date.now();\\n }\\n }\\n hasStartedConnectionAttempt() {\\n return this.firstConnectionAttempted;\\n }\\n isFirstConnection() {\\n return this._isFirstConnection;\\n }\\n disableReconnect() {\\n this.shouldReconnect = false;\\n }\\n enableRestartPeerConnection() {\\n this.onlyRestartPeerConnection = true;\\n }\\n cancel() {\\n this.disableReconnect();\\n if (this.backoffTimer) {\\n this.backoffTimer.stop();\\n if (this.backoffCancel) {\\n this.backoffCancel();\\n this.backoffCancel = null;\\n }\\n }\\n }\\n retryWithBackoff(retryFunc, cancelFunc) {\\n const willRetry = this.shouldReconnect && !this.hasPastReconnectDeadline();\\n if (willRetry) {\\n this.backoffCancel = cancelFunc;\\n this.backoffTimer = new TimeoutScheduler_1.default(this.backoffPolicy.nextBackoffAmountMs());\\n this.backoffTimer.start(() => {\\n this.backoffCancel = null;\\n retryFunc();\\n });\\n }\\n return willRetry;\\n }\\n shouldOnlyRestartPeerConnection() {\\n return this.onlyRestartPeerConnection;\\n }\\n clone() {\\n return new DefaultReconnectController(this.reconnectTimeoutMs, this.backoffPolicy);\\n }\\n setLastActiveTimestampMs(timestampMs) {\\n this.lastActiveTimestampMs = timestampMs;\\n }\\n}\\nexports[\\\"default\\\"] = DefaultReconnectController;\\n//# sourceMappingURL=DefaultReconnectController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/reconnectcontroller/DefaultReconnectController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js ***!\n \\****************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst TimeoutScheduler_1 = __webpack_require__(/*! ./TimeoutScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/TimeoutScheduler.js\\\");\\n/**\\n * [[AsyncScheduler]] enqueues the callback for the soonest available run of the\\n * event loop.\\n */\\nclass AsyncScheduler extends TimeoutScheduler_1.default {\\n constructor() {\\n super(0);\\n }\\n /**\\n * Execute the provided callback on the next tick of the event loop.\\n * This is semantically equivalent to\\n *\\n * ```typescript\\n * new AsyncScheduler(callback).start();\\n * ```\\n *\\n * but with less overhead.\\n *\\n * @param callback the code to run.\\n */\\n static nextTick(callback) {\\n setTimeout(callback, 0);\\n }\\n}\\nexports[\\\"default\\\"] = AsyncScheduler;\\n//# sourceMappingURL=AsyncScheduler.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js\":\n/*!*******************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js ***!\n \\*******************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[IntervalScheduler]] calls the callback every intervalMs milliseconds.\\n */\\nclass IntervalScheduler {\\n constructor(intervalMs) {\\n this.intervalMs = intervalMs;\\n }\\n start(callback) {\\n this.stop();\\n this.timer = setInterval(callback, this.intervalMs);\\n }\\n stop() {\\n if (this.timer === undefined) {\\n return;\\n }\\n clearInterval(this.timer);\\n this.timer = undefined;\\n }\\n running() {\\n return this.timer !== undefined;\\n }\\n}\\nexports[\\\"default\\\"] = IntervalScheduler;\\n//# sourceMappingURL=IntervalScheduler.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/scheduler/TimeoutScheduler.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/scheduler/TimeoutScheduler.js ***!\n \\******************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[TimeoutScheduler]] calls the callback once after timeoutMs milliseconds.\\n */\\nclass TimeoutScheduler {\\n constructor(timeoutMs) {\\n this.timeoutMs = timeoutMs;\\n // eslint-disable-next-line\\n this.timer = null;\\n }\\n start(callback) {\\n this.stop();\\n this.timer = setTimeout(() => {\\n clearTimeout(this.timer);\\n callback();\\n }, this.timeoutMs);\\n }\\n stop() {\\n if (this.timer !== null) {\\n clearTimeout(this.timer);\\n this.timer = null;\\n }\\n }\\n}\\nexports[\\\"default\\\"] = TimeoutScheduler;\\n//# sourceMappingURL=TimeoutScheduler.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/scheduler/TimeoutScheduler.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/sdp/DefaultSDP.js\":\n/*!******************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/sdp/DefaultSDP.js ***!\n \\******************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SDPCandidateType_1 = __webpack_require__(/*! ./SDPCandidateType */ \\\"./node_modules/amazon-chime-sdk-js/build/sdp/SDPCandidateType.js\\\");\\n/**\\n * Implements [[SDP]]. [[SDP]] also includes a few helper functions for parsing string.\\n */\\nclass DefaultSDP {\\n constructor(sdp) {\\n this.sdp = sdp;\\n }\\n clone() {\\n return new DefaultSDP(this.sdp);\\n }\\n static isRTPCandidate(candidate) {\\n const match = /candidate[:](\\\\S+) (\\\\d+)/g.exec(candidate);\\n if (match === null || match[2] !== '1') {\\n return false;\\n }\\n return true;\\n }\\n static linesToSDP(lines) {\\n return new DefaultSDP(lines.join(DefaultSDP.CRLF));\\n }\\n static candidateTypeFromString(candidateType) {\\n switch (candidateType) {\\n case SDPCandidateType_1.default.Host:\\n return SDPCandidateType_1.default.Host;\\n case SDPCandidateType_1.default.ServerReflexive:\\n return SDPCandidateType_1.default.ServerReflexive;\\n case SDPCandidateType_1.default.PeerReflexive:\\n return SDPCandidateType_1.default.PeerReflexive;\\n case SDPCandidateType_1.default.Relay:\\n return SDPCandidateType_1.default.Relay;\\n }\\n return null;\\n }\\n static candidateType(sdpLine) {\\n const match = /a[=]candidate[:].* typ ([a-z]+) /g.exec(sdpLine);\\n if (match === null) {\\n return null;\\n }\\n return DefaultSDP.candidateTypeFromString(match[1]);\\n }\\n static splitLines(blob) {\\n return blob\\n .trim()\\n .split('\\\\n')\\n .map((line) => {\\n return line.trim();\\n });\\n }\\n static splitSections(sdp) {\\n // each section starts with \\\"m=\\\"\\n const sections = sdp.split('\\\\nm=');\\n return sections.map((section, index) => {\\n return (index > 0 ? 'm=' + section : section).trim() + DefaultSDP.CRLF;\\n });\\n }\\n static findActiveCameraSection(sections) {\\n let cameraLineIndex = 0;\\n let hasCamera = false;\\n for (const sec of sections) {\\n if (/^m=video/.test(sec)) {\\n if (sec.indexOf('sendrecv') > -1) {\\n hasCamera = true;\\n break;\\n }\\n }\\n cameraLineIndex++;\\n }\\n if (hasCamera === false) {\\n cameraLineIndex = -1;\\n }\\n return cameraLineIndex;\\n }\\n static parseSSRCMedia(ssrcMediaAttributeLine) {\\n const separator = ssrcMediaAttributeLine.indexOf(' ');\\n let ssrc = 0;\\n let attribute = '';\\n let value = '';\\n ssrc = DefaultSDP.extractSSRCFromAttributeLine(ssrcMediaAttributeLine);\\n const secondColon = ssrcMediaAttributeLine.indexOf(':', separator);\\n if (secondColon > -1) {\\n attribute = ssrcMediaAttributeLine.substr(separator + 1, secondColon - separator - 1);\\n value = ssrcMediaAttributeLine.substr(secondColon + 1);\\n }\\n else {\\n attribute = ssrcMediaAttributeLine.substr(separator + 1);\\n }\\n return [ssrc, attribute, value];\\n }\\n // a=ssrc-group: ...\\n static extractSSRCsFromFIDGroupLine(figGroupLine) {\\n const ssrcStringMatch = /^a=ssrc-group:FID\\\\s(.+)/.exec(figGroupLine);\\n return ssrcStringMatch[1];\\n }\\n // a=ssrc: or a=ssrc: :, ssrc-id is a 32bit integer\\n static extractSSRCFromAttributeLine(ssrcMediaAttributeLine) {\\n const ssrcStringMatch = /^a=ssrc:([0-9]+)\\\\s/.exec(ssrcMediaAttributeLine);\\n if (ssrcStringMatch === null) {\\n return 0;\\n }\\n return parseInt(ssrcStringMatch[1], 10);\\n }\\n static matchPrefix(blob, prefix) {\\n return DefaultSDP.splitLines(blob).filter((line) => {\\n return line.indexOf(prefix) === 0;\\n });\\n }\\n lines() {\\n return this.sdp.split(DefaultSDP.CRLF);\\n }\\n hasVideo() {\\n return /^m=video/gm.exec(this.sdp) !== null;\\n }\\n hasCandidates() {\\n const match = /a[=]candidate[:]/g.exec(this.sdp);\\n if (match === null) {\\n return false;\\n }\\n return true;\\n }\\n hasCandidatesForAllMLines() {\\n const isAnyCLineUsingLocalHost = this.sdp.indexOf('c=IN IP4 0.0.0.0') > -1;\\n const mLinesHaveCandidates = !isAnyCLineUsingLocalHost;\\n return mLinesHaveCandidates;\\n }\\n withBundleAudioVideo() {\\n const srcLines = this.lines();\\n const dstLines = [];\\n for (const line of srcLines) {\\n const mod = line.replace(/^a=group:BUNDLE audio$/, 'a=group:BUNDLE audio video');\\n if (mod !== line) {\\n dstLines.push(mod);\\n continue;\\n }\\n dstLines.push(line);\\n }\\n return DefaultSDP.linesToSDP(dstLines);\\n }\\n copyVideo(otherSDP) {\\n const otherLines = otherSDP.split(DefaultSDP.CRLF);\\n const dstLines = DefaultSDP.splitLines(this.sdp);\\n let inVideoMedia = false;\\n for (const line of otherLines) {\\n if (/^m=video/.test(line)) {\\n inVideoMedia = true;\\n }\\n else if (/^m=/.test(line)) {\\n inVideoMedia = false;\\n }\\n if (inVideoMedia) {\\n dstLines.push(line);\\n }\\n }\\n return DefaultSDP.linesToSDP(dstLines);\\n }\\n withoutCandidateType(candidateTypeToExclude) {\\n return DefaultSDP.linesToSDP(this.lines().filter(line => DefaultSDP.candidateType(line) !== candidateTypeToExclude));\\n }\\n withoutServerReflexiveCandidates() {\\n return this.withoutCandidateType(SDPCandidateType_1.default.ServerReflexive);\\n }\\n withBandwidthRestriction(maxBitrateKbps, isUnifiedPlan) {\\n const srcLines = this.lines();\\n const dstLines = [];\\n for (const line of srcLines) {\\n dstLines.push(line);\\n if (/^m=video/.test(line)) {\\n if (isUnifiedPlan) {\\n dstLines.push(`b=TIAS:${maxBitrateKbps * 1000}`);\\n }\\n else {\\n dstLines.push(`b=AS:${maxBitrateKbps}`);\\n }\\n }\\n }\\n return DefaultSDP.linesToSDP(dstLines);\\n }\\n withAudioMaxAverageBitrate(maxAverageBitrate) {\\n if (!maxAverageBitrate) {\\n return this.clone();\\n }\\n maxAverageBitrate = Math.trunc(Math.min(Math.max(maxAverageBitrate, DefaultSDP.rfc7587LowestBitrate), DefaultSDP.rfc7587HighestBitrate));\\n const srcLines = this.lines();\\n const dstLines = [];\\n const opusRtpMapRegex = /^a=rtpmap:\\\\s*(\\\\d+)\\\\s+opus\\\\/48000/;\\n let lookingForOpusRtpMap = false;\\n let fmtpAttribute = null;\\n for (const line of srcLines) {\\n if (line.startsWith('m=audio')) {\\n lookingForOpusRtpMap = true;\\n fmtpAttribute = null;\\n }\\n if (line.startsWith('m=video')) {\\n lookingForOpusRtpMap = false;\\n fmtpAttribute = null;\\n }\\n if (lookingForOpusRtpMap) {\\n const match = opusRtpMapRegex.exec(line);\\n if (match !== null) {\\n fmtpAttribute = `a=fmtp:${match[1]} `;\\n lookingForOpusRtpMap = false;\\n }\\n }\\n if (fmtpAttribute && line.startsWith(fmtpAttribute)) {\\n const oldParameters = line.slice(fmtpAttribute.length).split(';');\\n const newParameters = [];\\n for (const parameter of oldParameters) {\\n if (!parameter.startsWith('maxaveragebitrate=')) {\\n newParameters.push(parameter);\\n }\\n }\\n newParameters.push(`maxaveragebitrate=${maxAverageBitrate}`);\\n dstLines.push(fmtpAttribute + newParameters.join(';'));\\n }\\n else {\\n dstLines.push(line);\\n }\\n }\\n return DefaultSDP.linesToSDP(dstLines);\\n }\\n // TODO: will remove this soon.\\n withUnifiedPlanFormat() {\\n let originalSdp = this.sdp;\\n if (originalSdp.includes('mozilla')) {\\n return this.clone();\\n }\\n else {\\n originalSdp = originalSdp.replace('o=-', 'o=mozilla-chrome');\\n }\\n return new DefaultSDP(originalSdp);\\n }\\n preferH264IfExists() {\\n const srcSDP = this.sdp;\\n const sections = DefaultSDP.splitSections(srcSDP);\\n if (sections.length < 2) {\\n return new DefaultSDP(this.sdp);\\n }\\n const newSections = [];\\n for (let i = 0; i < sections.length; i++) {\\n if (/^m=video/.test(sections[i])) {\\n const lines = DefaultSDP.splitLines(sections[i]);\\n let payloadTypeForVP8 = 0;\\n let payloadTypeForH264 = 0;\\n lines.forEach(attribute => {\\n if (/^a=rtpmap:/.test(attribute)) {\\n const payloadMatch = /^a=rtpmap:([0-9]+)\\\\s/.exec(attribute);\\n if (attribute.toLowerCase().includes('vp8')) {\\n payloadTypeForVP8 = parseInt(payloadMatch[1], 10);\\n }\\n else if (attribute.toLowerCase().includes('h264')) {\\n payloadTypeForH264 = parseInt(payloadMatch[1], 10);\\n }\\n }\\n });\\n // m=video 9 UDP/+++ \\n if (payloadTypeForVP8 !== 0 && payloadTypeForH264 !== 0) {\\n const mline = lines[0].split(' ');\\n let indexForVP8 = -1;\\n let indexForH264 = -1;\\n for (let i = 3; i < mline.length; i++) {\\n const payload = parseInt(mline[i], 10);\\n if (payload === payloadTypeForVP8) {\\n indexForVP8 = i;\\n }\\n else if (payload === payloadTypeForH264) {\\n indexForH264 = i;\\n }\\n }\\n if (indexForVP8 < indexForH264) {\\n mline[indexForVP8] = payloadTypeForH264.toString();\\n mline[indexForH264] = payloadTypeForVP8.toString();\\n }\\n lines[0] = mline.join(' ');\\n }\\n sections[i] = lines.join(DefaultSDP.CRLF) + DefaultSDP.CRLF;\\n // since there is only H264 or VP8, we don't switch payload places\\n }\\n newSections.push(sections[i]);\\n }\\n const newSdp = newSections.join('');\\n return new DefaultSDP(newSdp);\\n }\\n withOldFashionedMungingSimulcast(videoSimulcastLayerCount) {\\n if (videoSimulcastLayerCount < 2) {\\n return this.clone();\\n }\\n const srcSDP = this.sdp;\\n const sections = DefaultSDP.splitSections(srcSDP);\\n if (sections.length < 2) {\\n return new DefaultSDP(this.sdp);\\n }\\n const cameraLineIndex = DefaultSDP.findActiveCameraSection(sections);\\n if (cameraLineIndex === -1) {\\n return new DefaultSDP(this.sdp);\\n }\\n let cname = '';\\n let msid = '';\\n DefaultSDP.matchPrefix(sections[cameraLineIndex], 'a=ssrc:').forEach((line) => {\\n const ssrcAttrTuple = DefaultSDP.parseSSRCMedia(line);\\n if (ssrcAttrTuple[1] === 'cname') {\\n cname = ssrcAttrTuple[2];\\n }\\n else if (ssrcAttrTuple[1] === 'msid') {\\n msid = ssrcAttrTuple[2];\\n }\\n });\\n const fidGroupMatch = DefaultSDP.matchPrefix(sections[cameraLineIndex], 'a=ssrc-group:FID ');\\n if (cname === '' || msid === '' || fidGroupMatch.length < 1) {\\n return new DefaultSDP(this.sdp);\\n }\\n const fidGroup = DefaultSDP.extractSSRCsFromFIDGroupLine(fidGroupMatch[0]);\\n const cameraSectionLines = sections[cameraLineIndex]\\n .trim()\\n .split(DefaultSDP.CRLF)\\n .filter((line) => {\\n return line.indexOf('a=ssrc:') !== 0 && line.indexOf('a=ssrc-group:') !== 0;\\n });\\n const simulcastSSRCs = [];\\n const [videoSSRC1, rtxSSRC1] = fidGroup.split(' ').map(ssrc => parseInt(ssrc, 10));\\n let videoSSRC = videoSSRC1;\\n let rtxSSRC = rtxSSRC1;\\n for (let i = 0; i < videoSimulcastLayerCount; i++) {\\n cameraSectionLines.push('a=ssrc:' + videoSSRC + ' cname:' + cname);\\n cameraSectionLines.push('a=ssrc:' + videoSSRC + ' msid:' + msid);\\n cameraSectionLines.push('a=ssrc:' + rtxSSRC + ' cname:' + cname);\\n cameraSectionLines.push('a=ssrc:' + rtxSSRC + ' msid:' + msid);\\n cameraSectionLines.push('a=ssrc-group:FID ' + videoSSRC + ' ' + rtxSSRC);\\n simulcastSSRCs.push(videoSSRC);\\n videoSSRC = videoSSRC + 1;\\n rtxSSRC = videoSSRC + 1;\\n }\\n cameraSectionLines.push('a=ssrc-group:SIM ' + simulcastSSRCs.join(' '));\\n sections[cameraLineIndex] = cameraSectionLines.join(DefaultSDP.CRLF) + DefaultSDP.CRLF;\\n const newSDP = sections.join('');\\n return new DefaultSDP(newSDP);\\n }\\n ssrcForVideoSendingSection() {\\n const srcSDP = this.sdp;\\n const sections = DefaultSDP.splitSections(srcSDP);\\n if (sections.length < 2) {\\n return '';\\n }\\n const cameraLineIndex = DefaultSDP.findActiveCameraSection(sections);\\n if (cameraLineIndex === -1) {\\n return '';\\n }\\n // TODO: match for Firefox. Currently all failures are not Firefox induced.\\n const fidGroupMatch = DefaultSDP.matchPrefix(sections[cameraLineIndex], 'a=ssrc-group:FID ');\\n if (fidGroupMatch.length < 1) {\\n return '';\\n }\\n const fidGroup = DefaultSDP.extractSSRCsFromFIDGroupLine(fidGroupMatch[0]);\\n const [videoSSRC1] = fidGroup.split(' ').map(ssrc => parseInt(ssrc, 10));\\n return videoSSRC1.toString();\\n }\\n videoSendSectionHasDifferentSSRC(prevSdp) {\\n const ssrc1 = this.ssrcForVideoSendingSection();\\n const ssrc2 = prevSdp.ssrcForVideoSendingSection();\\n if (ssrc1 === '' || ssrc2 === '') {\\n return false;\\n }\\n const ssrc1InNumber = parseInt(ssrc1, 10);\\n const ssrc2InNumber = parseInt(ssrc2, 10);\\n if (ssrc1InNumber === ssrc2InNumber) {\\n return false;\\n }\\n return true;\\n }\\n}\\nexports[\\\"default\\\"] = DefaultSDP;\\nDefaultSDP.CRLF = '\\\\r\\\\n';\\nDefaultSDP.rfc7587LowestBitrate = 6000;\\nDefaultSDP.rfc7587HighestBitrate = 510000;\\n//# sourceMappingURL=DefaultSDP.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/sdp/DefaultSDP.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/sdp/SDPCandidateType.js\":\n/*!************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/sdp/SDPCandidateType.js ***!\n \\************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.SDPCandidateType = void 0;\\nvar SDPCandidateType;\\n(function (SDPCandidateType) {\\n SDPCandidateType[\\\"Host\\\"] = \\\"host\\\";\\n SDPCandidateType[\\\"ServerReflexive\\\"] = \\\"srflx\\\";\\n SDPCandidateType[\\\"PeerReflexive\\\"] = \\\"prflx\\\";\\n SDPCandidateType[\\\"Relay\\\"] = \\\"relay\\\";\\n})(SDPCandidateType = exports.SDPCandidateType || (exports.SDPCandidateType = {}));\\nexports[\\\"default\\\"] = SDPCandidateType;\\n//# sourceMappingURL=SDPCandidateType.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/sdp/SDPCandidateType.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/DefaultSessionStateController.js\":\n/*!********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/DefaultSessionStateController.js ***!\n \\********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SessionStateControllerAction_1 = __webpack_require__(/*! ./SessionStateControllerAction */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerAction.js\\\");\\nconst SessionStateControllerDeferPriority_1 = __webpack_require__(/*! ./SessionStateControllerDeferPriority */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerDeferPriority.js\\\");\\nconst SessionStateControllerState_1 = __webpack_require__(/*! ./SessionStateControllerState */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerState.js\\\");\\nconst SessionStateControllerTransitionResult_1 = __webpack_require__(/*! ./SessionStateControllerTransitionResult */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerTransitionResult.js\\\");\\nclass DefaultSessionStateController {\\n constructor(logger) {\\n this.logger = logger;\\n this.currentState = SessionStateControllerState_1.SessionStateControllerState.NotConnected;\\n this.deferredAction = null;\\n this.deferredWork = null;\\n }\\n perform(action, work) {\\n const state = this.currentState;\\n if (state === SessionStateControllerState_1.SessionStateControllerState.NotConnected &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.Connect) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Connecting, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Connecting &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.Fail) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Disconnecting, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Connecting &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.FinishConnecting) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Connected, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Connected &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.Disconnect) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Disconnecting, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Connected &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.Reconnect) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Connecting, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Connected &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.Fail) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Disconnecting, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Connected &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.Update) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Updating, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Updating &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.Fail) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Disconnecting, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Updating &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.FinishUpdating) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Connected, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Disconnecting &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.FinishDisconnecting) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.NotConnected, action);\\n }\\n else if (this.canDefer(action)) {\\n this.logger.info(`deferring transition from ${SessionStateControllerState_1.SessionStateControllerState[this.currentState]} with ${SessionStateControllerAction_1.SessionStateControllerAction[action]}`);\\n this.deferAction(action, work);\\n return SessionStateControllerTransitionResult_1.SessionStateControllerTransitionResult.DeferredTransition;\\n }\\n else {\\n this.logger.warn(`no transition found from ${SessionStateControllerState_1.SessionStateControllerState[this.currentState]} with ${SessionStateControllerAction_1.SessionStateControllerAction[action]}`);\\n return SessionStateControllerTransitionResult_1.SessionStateControllerTransitionResult.NoTransitionAvailable;\\n }\\n try {\\n work();\\n }\\n catch (e) {\\n this.logger.error(`error during state ${SessionStateControllerState_1.SessionStateControllerState[this.currentState]} with action ${SessionStateControllerAction_1.SessionStateControllerAction[action]}: ${e}`);\\n this.logger.info(`rolling back transition to ${SessionStateControllerState_1.SessionStateControllerState[state]}`);\\n this.currentState = state;\\n return SessionStateControllerTransitionResult_1.SessionStateControllerTransitionResult.TransitionFailed;\\n }\\n this.performDeferredAction();\\n return SessionStateControllerTransitionResult_1.SessionStateControllerTransitionResult.Transitioned;\\n }\\n state() {\\n return this.currentState;\\n }\\n transition(newState, action) {\\n this.logger.info(`transitioning from ${SessionStateControllerState_1.SessionStateControllerState[this.currentState]} to ${SessionStateControllerState_1.SessionStateControllerState[newState]} with ${SessionStateControllerAction_1.SessionStateControllerAction[action]}`);\\n this.currentState = newState;\\n }\\n deferPriority(action) {\\n switch (action) {\\n case SessionStateControllerAction_1.SessionStateControllerAction.Disconnect:\\n return SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.VeryHigh;\\n case SessionStateControllerAction_1.SessionStateControllerAction.Fail:\\n return SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.High;\\n case SessionStateControllerAction_1.SessionStateControllerAction.Reconnect:\\n return SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.Medium;\\n case SessionStateControllerAction_1.SessionStateControllerAction.Update:\\n return SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.Low;\\n default:\\n return SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.DoNotDefer;\\n }\\n }\\n deferAction(action, work) {\\n if (this.deferredAction !== null &&\\n this.deferPriority(this.deferredAction) > this.deferPriority(action)) {\\n return;\\n }\\n this.deferredAction = action;\\n this.deferredWork = work;\\n }\\n canDefer(action) {\\n return (this.deferPriority(action) !== SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.DoNotDefer &&\\n (this.currentState === SessionStateControllerState_1.SessionStateControllerState.Connecting ||\\n this.currentState === SessionStateControllerState_1.SessionStateControllerState.Updating));\\n }\\n performDeferredAction() {\\n if (!this.deferredAction) {\\n return;\\n }\\n const deferredAction = this.deferredAction;\\n const deferredWork = this.deferredWork;\\n this.deferredAction = null;\\n this.deferredWork = null;\\n this.logger.info(`performing deferred action ${SessionStateControllerAction_1.SessionStateControllerAction[deferredAction]}`);\\n if (this.perform(deferredAction, deferredWork) !==\\n SessionStateControllerTransitionResult_1.SessionStateControllerTransitionResult.Transitioned) {\\n this.logger.info(`unable to perform deferred action ${SessionStateControllerAction_1.SessionStateControllerAction[deferredAction]} in state ${SessionStateControllerState_1.SessionStateControllerState[this.currentState]}`);\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultSessionStateController;\\n//# sourceMappingURL=DefaultSessionStateController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/DefaultSessionStateController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerAction.js\":\n/*!*******************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerAction.js ***!\n \\*******************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.SessionStateControllerAction = void 0;\\n/**\\n * [[SessionStateControllerAction]] is a state-changing action to perform.\\n */\\nvar SessionStateControllerAction;\\n(function (SessionStateControllerAction) {\\n SessionStateControllerAction[SessionStateControllerAction[\\\"Connect\\\"] = 0] = \\\"Connect\\\";\\n SessionStateControllerAction[SessionStateControllerAction[\\\"FinishConnecting\\\"] = 1] = \\\"FinishConnecting\\\";\\n SessionStateControllerAction[SessionStateControllerAction[\\\"Update\\\"] = 2] = \\\"Update\\\";\\n SessionStateControllerAction[SessionStateControllerAction[\\\"FinishUpdating\\\"] = 3] = \\\"FinishUpdating\\\";\\n SessionStateControllerAction[SessionStateControllerAction[\\\"Reconnect\\\"] = 4] = \\\"Reconnect\\\";\\n SessionStateControllerAction[SessionStateControllerAction[\\\"Disconnect\\\"] = 5] = \\\"Disconnect\\\";\\n SessionStateControllerAction[SessionStateControllerAction[\\\"Fail\\\"] = 6] = \\\"Fail\\\";\\n SessionStateControllerAction[SessionStateControllerAction[\\\"FinishDisconnecting\\\"] = 7] = \\\"FinishDisconnecting\\\";\\n})(SessionStateControllerAction = exports.SessionStateControllerAction || (exports.SessionStateControllerAction = {}));\\nexports[\\\"default\\\"] = SessionStateControllerAction;\\n//# sourceMappingURL=SessionStateControllerAction.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerAction.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerDeferPriority.js\":\n/*!**************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerDeferPriority.js ***!\n \\**************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.SessionStateControllerDeferPriority = void 0;\\n/**\\n * [[SessionStateControllerDeferPriority]] indicates the priority level of the action\\n * being deferred. For example, stop is more important than update so if forced\\n * to pick between the two stop should be chosen.\\n */\\nvar SessionStateControllerDeferPriority;\\n(function (SessionStateControllerDeferPriority) {\\n SessionStateControllerDeferPriority[SessionStateControllerDeferPriority[\\\"DoNotDefer\\\"] = 0] = \\\"DoNotDefer\\\";\\n SessionStateControllerDeferPriority[SessionStateControllerDeferPriority[\\\"Low\\\"] = 1] = \\\"Low\\\";\\n SessionStateControllerDeferPriority[SessionStateControllerDeferPriority[\\\"Medium\\\"] = 2] = \\\"Medium\\\";\\n SessionStateControllerDeferPriority[SessionStateControllerDeferPriority[\\\"High\\\"] = 3] = \\\"High\\\";\\n SessionStateControllerDeferPriority[SessionStateControllerDeferPriority[\\\"VeryHigh\\\"] = 4] = \\\"VeryHigh\\\";\\n})(SessionStateControllerDeferPriority = exports.SessionStateControllerDeferPriority || (exports.SessionStateControllerDeferPriority = {}));\\nexports[\\\"default\\\"] = SessionStateControllerDeferPriority;\\n//# sourceMappingURL=SessionStateControllerDeferPriority.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerDeferPriority.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerState.js\":\n/*!******************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerState.js ***!\n \\******************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.SessionStateControllerState = void 0;\\n/**\\n * [[SessionStateControllerState]] reflects the current connection state of the session.\\n */\\nvar SessionStateControllerState;\\n(function (SessionStateControllerState) {\\n SessionStateControllerState[SessionStateControllerState[\\\"NotConnected\\\"] = 0] = \\\"NotConnected\\\";\\n SessionStateControllerState[SessionStateControllerState[\\\"Connecting\\\"] = 1] = \\\"Connecting\\\";\\n SessionStateControllerState[SessionStateControllerState[\\\"Connected\\\"] = 2] = \\\"Connected\\\";\\n SessionStateControllerState[SessionStateControllerState[\\\"Updating\\\"] = 3] = \\\"Updating\\\";\\n SessionStateControllerState[SessionStateControllerState[\\\"Disconnecting\\\"] = 4] = \\\"Disconnecting\\\";\\n})(SessionStateControllerState = exports.SessionStateControllerState || (exports.SessionStateControllerState = {}));\\nexports[\\\"default\\\"] = SessionStateControllerState;\\n//# sourceMappingURL=SessionStateControllerState.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerState.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerTransitionResult.js\":\n/*!*****************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerTransitionResult.js ***!\n \\*****************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.SessionStateControllerTransitionResult = void 0;\\n/**\\n * Indicates the result of an attempted state transition.\\n */\\nvar SessionStateControllerTransitionResult;\\n(function (SessionStateControllerTransitionResult) {\\n /**\\n * The transition was successful.\\n */\\n SessionStateControllerTransitionResult[SessionStateControllerTransitionResult[\\\"Transitioned\\\"] = 0] = \\\"Transitioned\\\";\\n /**\\n * No transition is available from the current state using that action.\\n */\\n SessionStateControllerTransitionResult[SessionStateControllerTransitionResult[\\\"NoTransitionAvailable\\\"] = 1] = \\\"NoTransitionAvailable\\\";\\n /**\\n * The transition will be tried on the next state.\\n */\\n SessionStateControllerTransitionResult[SessionStateControllerTransitionResult[\\\"DeferredTransition\\\"] = 2] = \\\"DeferredTransition\\\";\\n /**\\n * An unexpected error occurred while transitioning to the next state.\\n */\\n SessionStateControllerTransitionResult[SessionStateControllerTransitionResult[\\\"TransitionFailed\\\"] = 3] = \\\"TransitionFailed\\\";\\n})(SessionStateControllerTransitionResult = exports.SessionStateControllerTransitionResult || (exports.SessionStateControllerTransitionResult = {}));\\nexports[\\\"default\\\"] = SessionStateControllerTransitionResult;\\n//# sourceMappingURL=SessionStateControllerTransitionResult.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerTransitionResult.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/signalingclient/DefaultSignalingClient.js\":\n/*!******************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/signalingclient/DefaultSignalingClient.js ***!\n \\******************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst Versioning_1 = __webpack_require__(/*! ../versioning/Versioning */ \\\"./node_modules/amazon-chime-sdk-js/build/versioning/Versioning.js\\\");\\nconst WebSocketReadyState_1 = __webpack_require__(/*! ../websocketadapter/WebSocketReadyState */ \\\"./node_modules/amazon-chime-sdk-js/build/websocketadapter/WebSocketReadyState.js\\\");\\nconst SignalingClientEvent_1 = __webpack_require__(/*! ./SignalingClientEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEvent.js\\\");\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ./SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\n/**\\n * [[DefaultSignalingClient]] implements the SignalingClient interface.\\n */\\nclass DefaultSignalingClient {\\n constructor(webSocket, logger) {\\n this.webSocket = webSocket;\\n this.logger = logger;\\n this.unloadHandler = null;\\n this.observerQueue = new Set();\\n this.connectionRequestQueue = [];\\n this.resetConnection();\\n this.logger.debug(() => 'signaling client init');\\n this.audioSessionId = this.generateNewAudioSessionId();\\n }\\n registerObserver(observer) {\\n this.logger.debug(() => 'registering signaling client observer');\\n this.observerQueue.add(observer);\\n }\\n removeObserver(observer) {\\n this.logger.debug(() => 'removing signaling client observer');\\n this.observerQueue.delete(observer);\\n }\\n openConnection(request) {\\n this.logger.info('adding connection request to queue: ' + request.url());\\n this.connectionRequestQueue.push(request);\\n this.closeConnection();\\n }\\n pingPong(pingPongFrame) {\\n this.logger.debug(() => 'sending ping');\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.PING_PONG;\\n message.pingPong = pingPongFrame;\\n this.sendMessage(message);\\n return message.timestampMs;\\n }\\n join(settings) {\\n this.logger.info('sending join');\\n const joinFrame = SignalingProtocol_js_1.SdkJoinFrame.create();\\n joinFrame.protocolVersion = 2;\\n joinFrame.maxNumOfVideos = settings.maxVideos;\\n joinFrame.flags = SignalingProtocol_js_1.SdkJoinFlags.HAS_STREAM_UPDATE;\\n const browserBehavior = new DefaultBrowserBehavior_1.default();\\n if (browserBehavior.supportsSenderSideBandwidthEstimation()) {\\n joinFrame.flags |= SignalingProtocol_js_1.SdkJoinFlags.USE_SEND_SIDE_BWE;\\n }\\n joinFrame.flags |= settings.sendBitrates ? SignalingProtocol_js_1.SdkJoinFlags.SEND_BITRATES : 0;\\n joinFrame.clientDetails = SignalingProtocol_js_1.SdkClientDetails.create({\\n platformName: browserBehavior.name(),\\n platformVersion: browserBehavior.version(),\\n clientSource: Versioning_1.default.sdkName,\\n chimeSdkVersion: Versioning_1.default.sdkVersion,\\n });\\n joinFrame.audioSessionId = this.audioSessionId;\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.JOIN;\\n message.join = joinFrame;\\n this.sendMessage(message);\\n }\\n subscribe(settings) {\\n const subscribeFrame = SignalingProtocol_js_1.SdkSubscribeFrame.create();\\n subscribeFrame.sendStreams = [];\\n subscribeFrame.sdpOffer = settings.sdpOffer;\\n subscribeFrame.audioCheckin = settings.audioCheckin;\\n subscribeFrame.audioHost = settings.audioHost;\\n subscribeFrame.audioMuted = settings.audioMuted;\\n if (settings.connectionTypeHasVideo) {\\n subscribeFrame.receiveStreamIds = settings.receiveStreamIds;\\n }\\n subscribeFrame.duplex = SignalingProtocol_js_1.SdkStreamServiceType.RX;\\n if (!settings.audioCheckin) {\\n const audioStream = SignalingProtocol_js_1.SdkStreamDescriptor.create();\\n audioStream.mediaType = SignalingProtocol_js_1.SdkStreamMediaType.AUDIO;\\n audioStream.trackLabel = 'AmazonChimeExpressAudio';\\n audioStream.attendeeId = settings.attendeeId;\\n audioStream.streamId = 1;\\n audioStream.groupId = 1;\\n audioStream.framerate = 15;\\n audioStream.maxBitrateKbps = 600;\\n audioStream.avgBitrateBps = 400000;\\n subscribeFrame.sendStreams.push(audioStream);\\n }\\n if (settings.localVideoEnabled) {\\n subscribeFrame.duplex = SignalingProtocol_js_1.SdkStreamServiceType.DUPLEX;\\n for (let i = 0; i < settings.videoStreamDescriptions.length; i++) {\\n // Non-simulcast use DefaultVideoStreamIndex.localStreamDescriptions\\n // which is the exact old behavior\\n const streamDescription = settings.videoStreamDescriptions[i].clone();\\n streamDescription.attendeeId = settings.attendeeId;\\n subscribeFrame.sendStreams.push(streamDescription.toStreamDescriptor());\\n }\\n }\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.SUBSCRIBE;\\n message.sub = subscribeFrame;\\n this.sendMessage(message);\\n }\\n leave() {\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.LEAVE;\\n message.leave = SignalingProtocol_js_1.SdkLeaveFrame.create();\\n this.sendMessage(message);\\n this.logger.debug(() => {\\n return 'sent leave';\\n });\\n }\\n sendClientMetrics(clientMetricFrame) {\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.CLIENT_METRIC;\\n message.clientMetric = clientMetricFrame;\\n this.sendMessage(message);\\n }\\n sendDataMessage(messageFrame) {\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.DATA_MESSAGE;\\n message.dataMessage = messageFrame;\\n this.sendMessage(message);\\n }\\n closeConnection() {\\n if (this.webSocket.readyState() !== WebSocketReadyState_1.default.None &&\\n this.webSocket.readyState() !== WebSocketReadyState_1.default.Closed) {\\n this.isClosing = true;\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketClosing, null));\\n this.webSocket.close();\\n this.deactivatePageUnloadHandler();\\n }\\n else {\\n this.logger.info('no existing connection needs closing');\\n this.serviceConnectionRequestQueue();\\n }\\n }\\n ready() {\\n return (this.webSocket.readyState() === WebSocketReadyState_1.default.Open && !this.isClosing && this.wasOpened);\\n }\\n mute(muted) {\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.AUDIO_CONTROL;\\n const audioControl = SignalingProtocol_js_1.SdkAudioControlFrame.create();\\n audioControl.muted = muted;\\n message.audioControl = audioControl;\\n this.sendMessage(message);\\n }\\n pause(streamIds) {\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.PAUSE;\\n message.pause = SignalingProtocol_js_1.SdkPauseResumeFrame.create();\\n message.pause.streamIds = streamIds;\\n this.sendMessage(message);\\n }\\n resume(streamIds) {\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.RESUME;\\n message.pause = SignalingProtocol_js_1.SdkPauseResumeFrame.create();\\n message.pause.streamIds = streamIds;\\n this.sendMessage(message);\\n }\\n resetConnection() {\\n this.webSocket.destroy();\\n this.wasOpened = false;\\n }\\n sendMessage(message) {\\n message.timestampMs = Date.now();\\n this.logger.debug(() => `sending: ${JSON.stringify(message)}`);\\n const buffer = this.prependWithFrameTypeRTC(SignalingProtocol_js_1.SdkSignalFrame.encode(message).finish());\\n if (this.ready()) {\\n if (!this.webSocket.send(buffer)) {\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketSendMessageFailure, null));\\n return;\\n }\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketSentMessage, null));\\n }\\n else {\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketSkippedMessage, null));\\n }\\n }\\n receiveMessage(inBuffer) {\\n let message;\\n try {\\n message = SignalingProtocol_js_1.SdkSignalFrame.decode(inBuffer);\\n }\\n catch (e) {\\n this.logger.info(`failed to decode: ${inBuffer}`);\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.ProtocolDecodeFailure, null));\\n return;\\n }\\n this.logger.debug(() => `received: ${JSON.stringify(message)}`);\\n if (this.webSocket.readyState() === WebSocketReadyState_1.default.Open) {\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.ReceivedSignalFrame, message));\\n }\\n else {\\n this.logger.info(`skipping notification of message since WebSocket is not open: ${JSON.stringify(message)}`);\\n }\\n }\\n stripFrameTypeRTC(inBuffer) {\\n const frameType = inBuffer[0];\\n // TODO: change server frame type to send 0x05\\n if (frameType !== DefaultSignalingClient.FRAME_TYPE_RTC && frameType !== 0x02) {\\n this.logger.warn(`expected FrameTypeRTC for message but got ${frameType}`);\\n }\\n return inBuffer.slice(1);\\n }\\n prependWithFrameTypeRTC(inBuffer) {\\n const outBuffer = new Uint8Array(inBuffer.length + 1);\\n outBuffer[0] = DefaultSignalingClient.FRAME_TYPE_RTC;\\n outBuffer.set(inBuffer, 1);\\n return outBuffer;\\n }\\n serviceConnectionRequestQueue() {\\n if (this.connectionRequestQueue.length === 0) {\\n this.logger.info('no connection requests to service');\\n return;\\n }\\n const request = this.connectionRequestQueue.shift();\\n this.logger.info(`opening connection to ${request.url()}`);\\n this.isClosing = false;\\n this.webSocket.create(request.url(), request.protocols());\\n this.setUpEventListeners();\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketConnecting, null));\\n }\\n sendEvent(event) {\\n switch (event.type) {\\n case SignalingClientEventType_1.default.WebSocketMessage:\\n case SignalingClientEventType_1.default.ReceivedSignalFrame:\\n case SignalingClientEventType_1.default.WebSocketSentMessage:\\n this.logger.debug(() => `notifying event: ${SignalingClientEventType_1.default[event.type]}`);\\n break;\\n case SignalingClientEventType_1.default.WebSocketSkippedMessage:\\n this.logger.debug(() => `notifying event: ${SignalingClientEventType_1.default[event.type]}, websocket state=${WebSocketReadyState_1.default[this.webSocket.readyState()]}`);\\n break;\\n default:\\n this.logger.info(`notifying event: ${SignalingClientEventType_1.default[event.type]}`);\\n break;\\n }\\n for (const observer of this.observerQueue) {\\n observer.handleSignalingClientEvent(event);\\n }\\n }\\n setUpEventListeners() {\\n this.webSocket.addEventListener('open', () => {\\n this.activatePageUnloadHandler();\\n this.wasOpened = true;\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketOpen, null));\\n });\\n this.webSocket.addEventListener('message', (event) => {\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketMessage, null));\\n this.receiveMessage(this.stripFrameTypeRTC(new Uint8Array(event.data)));\\n });\\n this.webSocket.addEventListener('close', (event) => {\\n this.deactivatePageUnloadHandler();\\n this.resetConnection();\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketClosed, null, event.code, event.reason));\\n this.serviceConnectionRequestQueue();\\n });\\n this.webSocket.addEventListener('error', () => {\\n if (this.isClosing && !this.wasOpened) {\\n this.logger.info('ignoring error closing signaling while connecting');\\n return;\\n }\\n if (this.wasOpened) {\\n this.logger.error('received error while connected');\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketError, null));\\n }\\n else {\\n this.logger.error('failed to connect');\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketFailed, null));\\n }\\n });\\n }\\n activatePageUnloadHandler() {\\n this.unloadHandler = () => {\\n this.leave();\\n };\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n const GlobalAny = __webpack_require__.g;\\n GlobalAny['window'] &&\\n GlobalAny['window']['addEventListener'] &&\\n window.addEventListener('unload', this.unloadHandler);\\n }\\n deactivatePageUnloadHandler() {\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n const GlobalAny = __webpack_require__.g;\\n GlobalAny['window'] &&\\n GlobalAny['window']['addEventListener'] &&\\n window.removeEventListener('unload', this.unloadHandler);\\n this.unloadHandler = null;\\n }\\n generateNewAudioSessionId() {\\n const num = new Uint32Array(1);\\n const randomNum = window.crypto.getRandomValues(num);\\n return randomNum[0];\\n }\\n}\\nexports[\\\"default\\\"] = DefaultSignalingClient;\\nDefaultSignalingClient.FRAME_TYPE_RTC = 0x5;\\n//# sourceMappingURL=DefaultSignalingClient.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/signalingclient/DefaultSignalingClient.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientConnectionRequest.js\":\n/*!****************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientConnectionRequest.js ***!\n \\****************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/*\\n * [[SignalingClientConnectionRequest]] represents an connection request.\\n */\\nclass SignalingClientConnectionRequest {\\n /** Creates a request with the given URL, conference id, and join token.\\n *\\n * @param {string} signalingURL The URL of the signaling proxy.\\n * @param {string} joinToken The join token that will authenticate the connection.\\n */\\n constructor(signalingURL, joinToken) {\\n this.signalingURL = signalingURL;\\n this.joinToken = joinToken;\\n }\\n /** Gets the signaling URL representing this request.*/\\n url() {\\n return (this.signalingURL + '?X-Chime-Control-Protocol-Version=3&X-Amzn-Chime-Send-Close-On-Error=1');\\n }\\n /** Gets the protocols associated with this request.*/\\n protocols() {\\n return ['_aws_wt_session', this.joinToken];\\n }\\n}\\nexports[\\\"default\\\"] = SignalingClientConnectionRequest;\\n//# sourceMappingURL=SignalingClientConnectionRequest.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientConnectionRequest.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEvent.js\":\n/*!****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEvent.js ***!\n \\****************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ./SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\n/*\\n * [[SignalingClientEvent]] stores an event that can be sent to observers of the SignalingClient.\\n */\\nclass SignalingClientEvent {\\n /** Initializes a SignalingClientEvent with the given SignalingClientEventType.\\n *\\n * @param {SignalingClient} client Indicates the SignalingClient associated with the event.\\n * @param {SignalingClientEventType} type Indicates the kind of event.\\n * @param {SdkSignalFrame} message SdkSignalFrame if type is ReceivedSignalFrame\\n */\\n constructor(client, type, message, closeCode, closeReason) {\\n this.client = client;\\n this.type = type;\\n this.message = message;\\n this.closeCode = closeCode;\\n this.closeReason = closeReason;\\n this.timestampMs = Date.now();\\n }\\n isConnectionTerminated() {\\n switch (this.type) {\\n case SignalingClientEventType_1.default.WebSocketFailed:\\n case SignalingClientEventType_1.default.WebSocketError:\\n case SignalingClientEventType_1.default.WebSocketClosing:\\n case SignalingClientEventType_1.default.WebSocketClosed:\\n return true;\\n default:\\n return false;\\n }\\n }\\n}\\nexports[\\\"default\\\"] = SignalingClientEvent;\\n//# sourceMappingURL=SignalingClientEvent.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEvent.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js ***!\n \\********************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.SignalingClientEventType = void 0;\\n/** Defines the event types generated by SignalingClient and the underlying WebSocket connection. */\\nvar SignalingClientEventType;\\n(function (SignalingClientEventType) {\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketConnecting\\\"] = 0] = \\\"WebSocketConnecting\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketOpen\\\"] = 1] = \\\"WebSocketOpen\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketError\\\"] = 2] = \\\"WebSocketError\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketClosing\\\"] = 3] = \\\"WebSocketClosing\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketClosed\\\"] = 4] = \\\"WebSocketClosed\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketFailed\\\"] = 5] = \\\"WebSocketFailed\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketMessage\\\"] = 6] = \\\"WebSocketMessage\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketSendMessageFailure\\\"] = 7] = \\\"WebSocketSendMessageFailure\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketSentMessage\\\"] = 8] = \\\"WebSocketSentMessage\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"ProtocolDecodeFailure\\\"] = 9] = \\\"ProtocolDecodeFailure\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"ReceivedSignalFrame\\\"] = 10] = \\\"ReceivedSignalFrame\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketSkippedMessage\\\"] = 11] = \\\"WebSocketSkippedMessage\\\";\\n})(SignalingClientEventType = exports.SignalingClientEventType || (exports.SignalingClientEventType = {}));\\nexports[\\\"default\\\"] = SignalingClientEventType;\\n//# sourceMappingURL=SignalingClientEventType.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientJoin.js\":\n/*!***************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientJoin.js ***!\n \\***************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[SignalingClientJoin]] contains settings for the Join SignalFrame.\\n */\\nclass SignalingClientJoin {\\n /** Initializes a SignalingClientJoin with the given properties.\\n *\\n * @param {number} maxVideos The maximum number of video tiles to send.\\n * @param {boolean} sendBitrates Whether the server should send Bitrates messages.\\n */\\n constructor(maxVideos, sendBitrates) {\\n this.maxVideos = maxVideos;\\n this.sendBitrates = sendBitrates;\\n }\\n}\\nexports[\\\"default\\\"] = SignalingClientJoin;\\n//# sourceMappingURL=SignalingClientJoin.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientJoin.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientSubscribe.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientSubscribe.js ***!\n \\********************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[SignalingClientSubscribe]] contains settings for the Subscribe SignalFrame.\\n */\\nclass SignalingClientSubscribe {\\n /** Initializes a SignalingClientSubscribe with the given properties.\\n *\\n * @param{string} attendeeId Attendee ID of the client\\n * @param{string} sdpOffer SDP offer created by WebRTC\\n * @param{string} audioHost host\\n * @param{boolean} audioMuted Whether audio from client is muted\\n * @param{boolean} audioCheckin Whether audio is in checked-in state\\n * @param{Array} receiveStreamIds Which video streams to receive\\n * @param{boolean} localVideoEnabled Whether to send a video stream for the local camera\\n * @param{Array} array of local video stream description\\n * @param{boolean} connectionTypeHasVideo Whether connection type has video\\n */\\n constructor(attendeeId, sdpOffer, audioHost, audioMuted, audioCheckin, receiveStreamIds, localVideoEnabled, videoStreamDescriptions, connectionTypeHasVideo) {\\n this.attendeeId = attendeeId;\\n this.sdpOffer = sdpOffer;\\n this.audioHost = audioHost;\\n this.audioMuted = audioMuted;\\n this.audioCheckin = audioCheckin;\\n this.receiveStreamIds = receiveStreamIds;\\n this.localVideoEnabled = localVideoEnabled;\\n this.videoStreamDescriptions = videoStreamDescriptions;\\n this.connectionTypeHasVideo = connectionTypeHasVideo;\\n }\\n}\\nexports[\\\"default\\\"] = SignalingClientSubscribe;\\n//# sourceMappingURL=SignalingClientSubscribe.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientSubscribe.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\":\n/*!***************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js ***!\n \\***************************************************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\\n\\n\\nvar $protobuf = __webpack_require__(/*! protobufjs/minimal */ \\\"./node_modules/protobufjs/minimal.js\\\");\\n\\n// Common aliases\\nvar $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\\n\\n// Exported root namespace\\nvar $root = $protobuf.roots[\\\"default\\\"] || ($protobuf.roots[\\\"default\\\"] = {});\\n\\n$root.SdkSignalFrame = (function() {\\n\\n /**\\n * Properties of a SdkSignalFrame.\\n * @exports ISdkSignalFrame\\n * @interface ISdkSignalFrame\\n * @property {number|Long} timestampMs SdkSignalFrame timestampMs\\n * @property {SdkSignalFrame.Type} type SdkSignalFrame type\\n * @property {ISdkErrorFrame|null} [error] SdkSignalFrame error\\n * @property {ISdkJoinFrame|null} [join] SdkSignalFrame join\\n * @property {ISdkJoinAckFrame|null} [joinack] SdkSignalFrame joinack\\n * @property {ISdkSubscribeFrame|null} [sub] SdkSignalFrame sub\\n * @property {ISdkSubscribeAckFrame|null} [suback] SdkSignalFrame suback\\n * @property {ISdkIndexFrame|null} [index] SdkSignalFrame index\\n * @property {ISdkPauseResumeFrame|null} [pause] SdkSignalFrame pause\\n * @property {ISdkLeaveFrame|null} [leave] SdkSignalFrame leave\\n * @property {ISdkLeaveAckFrame|null} [leaveAck] SdkSignalFrame leaveAck\\n * @property {ISdkBitrateFrame|null} [bitrates] SdkSignalFrame bitrates\\n * @property {ISdkAudioControlFrame|null} [audioControl] SdkSignalFrame audioControl\\n * @property {ISdkAudioMetadataFrame|null} [audioMetadata] SdkSignalFrame audioMetadata\\n * @property {ISdkAudioStreamIdInfoFrame|null} [audioStreamIdInfo] SdkSignalFrame audioStreamIdInfo\\n * @property {ISdkPingPongFrame|null} [pingPong] SdkSignalFrame pingPong\\n * @property {ISdkAudioStatusFrame|null} [audioStatus] SdkSignalFrame audioStatus\\n * @property {ISdkClientMetricFrame|null} [clientMetric] SdkSignalFrame clientMetric\\n * @property {ISdkDataMessageFrame|null} [dataMessage] SdkSignalFrame dataMessage\\n */\\n\\n /**\\n * Constructs a new SdkSignalFrame.\\n * @exports SdkSignalFrame\\n * @classdesc Represents a SdkSignalFrame.\\n * @implements ISdkSignalFrame\\n * @constructor\\n * @param {ISdkSignalFrame=} [properties] Properties to set\\n */\\n function SdkSignalFrame(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkSignalFrame timestampMs.\\n * @member {number|Long} timestampMs\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.timestampMs = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\\n\\n /**\\n * SdkSignalFrame type.\\n * @member {SdkSignalFrame.Type} type\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.type = 1;\\n\\n /**\\n * SdkSignalFrame error.\\n * @member {ISdkErrorFrame|null|undefined} error\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.error = null;\\n\\n /**\\n * SdkSignalFrame join.\\n * @member {ISdkJoinFrame|null|undefined} join\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.join = null;\\n\\n /**\\n * SdkSignalFrame joinack.\\n * @member {ISdkJoinAckFrame|null|undefined} joinack\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.joinack = null;\\n\\n /**\\n * SdkSignalFrame sub.\\n * @member {ISdkSubscribeFrame|null|undefined} sub\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.sub = null;\\n\\n /**\\n * SdkSignalFrame suback.\\n * @member {ISdkSubscribeAckFrame|null|undefined} suback\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.suback = null;\\n\\n /**\\n * SdkSignalFrame index.\\n * @member {ISdkIndexFrame|null|undefined} index\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.index = null;\\n\\n /**\\n * SdkSignalFrame pause.\\n * @member {ISdkPauseResumeFrame|null|undefined} pause\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.pause = null;\\n\\n /**\\n * SdkSignalFrame leave.\\n * @member {ISdkLeaveFrame|null|undefined} leave\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.leave = null;\\n\\n /**\\n * SdkSignalFrame leaveAck.\\n * @member {ISdkLeaveAckFrame|null|undefined} leaveAck\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.leaveAck = null;\\n\\n /**\\n * SdkSignalFrame bitrates.\\n * @member {ISdkBitrateFrame|null|undefined} bitrates\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.bitrates = null;\\n\\n /**\\n * SdkSignalFrame audioControl.\\n * @member {ISdkAudioControlFrame|null|undefined} audioControl\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.audioControl = null;\\n\\n /**\\n * SdkSignalFrame audioMetadata.\\n * @member {ISdkAudioMetadataFrame|null|undefined} audioMetadata\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.audioMetadata = null;\\n\\n /**\\n * SdkSignalFrame audioStreamIdInfo.\\n * @member {ISdkAudioStreamIdInfoFrame|null|undefined} audioStreamIdInfo\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.audioStreamIdInfo = null;\\n\\n /**\\n * SdkSignalFrame pingPong.\\n * @member {ISdkPingPongFrame|null|undefined} pingPong\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.pingPong = null;\\n\\n /**\\n * SdkSignalFrame audioStatus.\\n * @member {ISdkAudioStatusFrame|null|undefined} audioStatus\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.audioStatus = null;\\n\\n /**\\n * SdkSignalFrame clientMetric.\\n * @member {ISdkClientMetricFrame|null|undefined} clientMetric\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.clientMetric = null;\\n\\n /**\\n * SdkSignalFrame dataMessage.\\n * @member {ISdkDataMessageFrame|null|undefined} dataMessage\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.dataMessage = null;\\n\\n /**\\n * Creates a new SdkSignalFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {ISdkSignalFrame=} [properties] Properties to set\\n * @returns {SdkSignalFrame} SdkSignalFrame instance\\n */\\n SdkSignalFrame.create = function create(properties) {\\n return new SdkSignalFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkSignalFrame message. Does not implicitly {@link SdkSignalFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {ISdkSignalFrame} message SdkSignalFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkSignalFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.timestampMs);\\n writer.uint32(/* id 2, wireType 0 =*/16).int32(message.type);\\n if (message.error != null && message.hasOwnProperty(\\\"error\\\"))\\n $root.SdkErrorFrame.encode(message.error, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\\n if (message.join != null && message.hasOwnProperty(\\\"join\\\"))\\n $root.SdkJoinFrame.encode(message.join, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\\n if (message.joinack != null && message.hasOwnProperty(\\\"joinack\\\"))\\n $root.SdkJoinAckFrame.encode(message.joinack, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\\n if (message.sub != null && message.hasOwnProperty(\\\"sub\\\"))\\n $root.SdkSubscribeFrame.encode(message.sub, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\\n if (message.suback != null && message.hasOwnProperty(\\\"suback\\\"))\\n $root.SdkSubscribeAckFrame.encode(message.suback, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\\n if (message.index != null && message.hasOwnProperty(\\\"index\\\"))\\n $root.SdkIndexFrame.encode(message.index, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\\n if (message.pause != null && message.hasOwnProperty(\\\"pause\\\"))\\n $root.SdkPauseResumeFrame.encode(message.pause, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\\n if (message.leave != null && message.hasOwnProperty(\\\"leave\\\"))\\n $root.SdkLeaveFrame.encode(message.leave, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\\n if (message.leaveAck != null && message.hasOwnProperty(\\\"leaveAck\\\"))\\n $root.SdkLeaveAckFrame.encode(message.leaveAck, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim();\\n if (message.bitrates != null && message.hasOwnProperty(\\\"bitrates\\\"))\\n $root.SdkBitrateFrame.encode(message.bitrates, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\\n if (message.audioControl != null && message.hasOwnProperty(\\\"audioControl\\\"))\\n $root.SdkAudioControlFrame.encode(message.audioControl, writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\\n if (message.audioMetadata != null && message.hasOwnProperty(\\\"audioMetadata\\\"))\\n $root.SdkAudioMetadataFrame.encode(message.audioMetadata, writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\\n if (message.audioStreamIdInfo != null && message.hasOwnProperty(\\\"audioStreamIdInfo\\\"))\\n $root.SdkAudioStreamIdInfoFrame.encode(message.audioStreamIdInfo, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim();\\n if (message.pingPong != null && message.hasOwnProperty(\\\"pingPong\\\"))\\n $root.SdkPingPongFrame.encode(message.pingPong, writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim();\\n if (message.audioStatus != null && message.hasOwnProperty(\\\"audioStatus\\\"))\\n $root.SdkAudioStatusFrame.encode(message.audioStatus, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim();\\n if (message.clientMetric != null && message.hasOwnProperty(\\\"clientMetric\\\"))\\n $root.SdkClientMetricFrame.encode(message.clientMetric, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim();\\n if (message.dataMessage != null && message.hasOwnProperty(\\\"dataMessage\\\"))\\n $root.SdkDataMessageFrame.encode(message.dataMessage, writer.uint32(/* id 23, wireType 2 =*/186).fork()).ldelim();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkSignalFrame message, length delimited. Does not implicitly {@link SdkSignalFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {ISdkSignalFrame} message SdkSignalFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkSignalFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkSignalFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkSignalFrame} SdkSignalFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkSignalFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkSignalFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.timestampMs = reader.uint64();\\n break;\\n case 2:\\n message.type = reader.int32();\\n break;\\n case 3:\\n message.error = $root.SdkErrorFrame.decode(reader, reader.uint32());\\n break;\\n case 4:\\n message.join = $root.SdkJoinFrame.decode(reader, reader.uint32());\\n break;\\n case 5:\\n message.joinack = $root.SdkJoinAckFrame.decode(reader, reader.uint32());\\n break;\\n case 6:\\n message.sub = $root.SdkSubscribeFrame.decode(reader, reader.uint32());\\n break;\\n case 7:\\n message.suback = $root.SdkSubscribeAckFrame.decode(reader, reader.uint32());\\n break;\\n case 8:\\n message.index = $root.SdkIndexFrame.decode(reader, reader.uint32());\\n break;\\n case 10:\\n message.pause = $root.SdkPauseResumeFrame.decode(reader, reader.uint32());\\n break;\\n case 11:\\n message.leave = $root.SdkLeaveFrame.decode(reader, reader.uint32());\\n break;\\n case 12:\\n message.leaveAck = $root.SdkLeaveAckFrame.decode(reader, reader.uint32());\\n break;\\n case 14:\\n message.bitrates = $root.SdkBitrateFrame.decode(reader, reader.uint32());\\n break;\\n case 17:\\n message.audioControl = $root.SdkAudioControlFrame.decode(reader, reader.uint32());\\n break;\\n case 18:\\n message.audioMetadata = $root.SdkAudioMetadataFrame.decode(reader, reader.uint32());\\n break;\\n case 19:\\n message.audioStreamIdInfo = $root.SdkAudioStreamIdInfoFrame.decode(reader, reader.uint32());\\n break;\\n case 20:\\n message.pingPong = $root.SdkPingPongFrame.decode(reader, reader.uint32());\\n break;\\n case 21:\\n message.audioStatus = $root.SdkAudioStatusFrame.decode(reader, reader.uint32());\\n break;\\n case 22:\\n message.clientMetric = $root.SdkClientMetricFrame.decode(reader, reader.uint32());\\n break;\\n case 23:\\n message.dataMessage = $root.SdkDataMessageFrame.decode(reader, reader.uint32());\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n if (!message.hasOwnProperty(\\\"timestampMs\\\"))\\n throw $util.ProtocolError(\\\"missing required 'timestampMs'\\\", { instance: message });\\n if (!message.hasOwnProperty(\\\"type\\\"))\\n throw $util.ProtocolError(\\\"missing required 'type'\\\", { instance: message });\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkSignalFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkSignalFrame} SdkSignalFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkSignalFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkSignalFrame message.\\n * @function verify\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkSignalFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (!$util.isInteger(message.timestampMs) && !(message.timestampMs && $util.isInteger(message.timestampMs.low) && $util.isInteger(message.timestampMs.high)))\\n return \\\"timestampMs: integer|Long expected\\\";\\n switch (message.type) {\\n default:\\n return \\\"type: enum value expected\\\";\\n case 1:\\n case 2:\\n case 3:\\n case 4:\\n case 5:\\n case 7:\\n case 8:\\n case 9:\\n case 10:\\n case 13:\\n case 16:\\n case 17:\\n case 18:\\n case 19:\\n case 20:\\n case 21:\\n case 22:\\n break;\\n }\\n if (message.error != null && message.hasOwnProperty(\\\"error\\\")) {\\n var error = $root.SdkErrorFrame.verify(message.error);\\n if (error)\\n return \\\"error.\\\" + error;\\n }\\n if (message.join != null && message.hasOwnProperty(\\\"join\\\")) {\\n var error = $root.SdkJoinFrame.verify(message.join);\\n if (error)\\n return \\\"join.\\\" + error;\\n }\\n if (message.joinack != null && message.hasOwnProperty(\\\"joinack\\\")) {\\n var error = $root.SdkJoinAckFrame.verify(message.joinack);\\n if (error)\\n return \\\"joinack.\\\" + error;\\n }\\n if (message.sub != null && message.hasOwnProperty(\\\"sub\\\")) {\\n var error = $root.SdkSubscribeFrame.verify(message.sub);\\n if (error)\\n return \\\"sub.\\\" + error;\\n }\\n if (message.suback != null && message.hasOwnProperty(\\\"suback\\\")) {\\n var error = $root.SdkSubscribeAckFrame.verify(message.suback);\\n if (error)\\n return \\\"suback.\\\" + error;\\n }\\n if (message.index != null && message.hasOwnProperty(\\\"index\\\")) {\\n var error = $root.SdkIndexFrame.verify(message.index);\\n if (error)\\n return \\\"index.\\\" + error;\\n }\\n if (message.pause != null && message.hasOwnProperty(\\\"pause\\\")) {\\n var error = $root.SdkPauseResumeFrame.verify(message.pause);\\n if (error)\\n return \\\"pause.\\\" + error;\\n }\\n if (message.leave != null && message.hasOwnProperty(\\\"leave\\\")) {\\n var error = $root.SdkLeaveFrame.verify(message.leave);\\n if (error)\\n return \\\"leave.\\\" + error;\\n }\\n if (message.leaveAck != null && message.hasOwnProperty(\\\"leaveAck\\\")) {\\n var error = $root.SdkLeaveAckFrame.verify(message.leaveAck);\\n if (error)\\n return \\\"leaveAck.\\\" + error;\\n }\\n if (message.bitrates != null && message.hasOwnProperty(\\\"bitrates\\\")) {\\n var error = $root.SdkBitrateFrame.verify(message.bitrates);\\n if (error)\\n return \\\"bitrates.\\\" + error;\\n }\\n if (message.audioControl != null && message.hasOwnProperty(\\\"audioControl\\\")) {\\n var error = $root.SdkAudioControlFrame.verify(message.audioControl);\\n if (error)\\n return \\\"audioControl.\\\" + error;\\n }\\n if (message.audioMetadata != null && message.hasOwnProperty(\\\"audioMetadata\\\")) {\\n var error = $root.SdkAudioMetadataFrame.verify(message.audioMetadata);\\n if (error)\\n return \\\"audioMetadata.\\\" + error;\\n }\\n if (message.audioStreamIdInfo != null && message.hasOwnProperty(\\\"audioStreamIdInfo\\\")) {\\n var error = $root.SdkAudioStreamIdInfoFrame.verify(message.audioStreamIdInfo);\\n if (error)\\n return \\\"audioStreamIdInfo.\\\" + error;\\n }\\n if (message.pingPong != null && message.hasOwnProperty(\\\"pingPong\\\")) {\\n var error = $root.SdkPingPongFrame.verify(message.pingPong);\\n if (error)\\n return \\\"pingPong.\\\" + error;\\n }\\n if (message.audioStatus != null && message.hasOwnProperty(\\\"audioStatus\\\")) {\\n var error = $root.SdkAudioStatusFrame.verify(message.audioStatus);\\n if (error)\\n return \\\"audioStatus.\\\" + error;\\n }\\n if (message.clientMetric != null && message.hasOwnProperty(\\\"clientMetric\\\")) {\\n var error = $root.SdkClientMetricFrame.verify(message.clientMetric);\\n if (error)\\n return \\\"clientMetric.\\\" + error;\\n }\\n if (message.dataMessage != null && message.hasOwnProperty(\\\"dataMessage\\\")) {\\n var error = $root.SdkDataMessageFrame.verify(message.dataMessage);\\n if (error)\\n return \\\"dataMessage.\\\" + error;\\n }\\n return null;\\n };\\n\\n /**\\n * Creates a SdkSignalFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkSignalFrame} SdkSignalFrame\\n */\\n SdkSignalFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkSignalFrame)\\n return object;\\n var message = new $root.SdkSignalFrame();\\n if (object.timestampMs != null)\\n if ($util.Long)\\n (message.timestampMs = $util.Long.fromValue(object.timestampMs)).unsigned = true;\\n else if (typeof object.timestampMs === \\\"string\\\")\\n message.timestampMs = parseInt(object.timestampMs, 10);\\n else if (typeof object.timestampMs === \\\"number\\\")\\n message.timestampMs = object.timestampMs;\\n else if (typeof object.timestampMs === \\\"object\\\")\\n message.timestampMs = new $util.LongBits(object.timestampMs.low >>> 0, object.timestampMs.high >>> 0).toNumber(true);\\n switch (object.type) {\\n case \\\"JOIN\\\":\\n case 1:\\n message.type = 1;\\n break;\\n case \\\"JOIN_ACK\\\":\\n case 2:\\n message.type = 2;\\n break;\\n case \\\"SUBSCRIBE\\\":\\n case 3:\\n message.type = 3;\\n break;\\n case \\\"SUBSCRIBE_ACK\\\":\\n case 4:\\n message.type = 4;\\n break;\\n case \\\"INDEX\\\":\\n case 5:\\n message.type = 5;\\n break;\\n case \\\"PAUSE\\\":\\n case 7:\\n message.type = 7;\\n break;\\n case \\\"RESUME\\\":\\n case 8:\\n message.type = 8;\\n break;\\n case \\\"LEAVE\\\":\\n case 9:\\n message.type = 9;\\n break;\\n case \\\"LEAVE_ACK\\\":\\n case 10:\\n message.type = 10;\\n break;\\n case \\\"BITRATES\\\":\\n case 13:\\n message.type = 13;\\n break;\\n case \\\"AUDIO_CONTROL\\\":\\n case 16:\\n message.type = 16;\\n break;\\n case \\\"AUDIO_METADATA\\\":\\n case 17:\\n message.type = 17;\\n break;\\n case \\\"AUDIO_STREAM_ID_INFO\\\":\\n case 18:\\n message.type = 18;\\n break;\\n case \\\"PING_PONG\\\":\\n case 19:\\n message.type = 19;\\n break;\\n case \\\"AUDIO_STATUS\\\":\\n case 20:\\n message.type = 20;\\n break;\\n case \\\"CLIENT_METRIC\\\":\\n case 21:\\n message.type = 21;\\n break;\\n case \\\"DATA_MESSAGE\\\":\\n case 22:\\n message.type = 22;\\n break;\\n }\\n if (object.error != null) {\\n if (typeof object.error !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.error: object expected\\\");\\n message.error = $root.SdkErrorFrame.fromObject(object.error);\\n }\\n if (object.join != null) {\\n if (typeof object.join !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.join: object expected\\\");\\n message.join = $root.SdkJoinFrame.fromObject(object.join);\\n }\\n if (object.joinack != null) {\\n if (typeof object.joinack !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.joinack: object expected\\\");\\n message.joinack = $root.SdkJoinAckFrame.fromObject(object.joinack);\\n }\\n if (object.sub != null) {\\n if (typeof object.sub !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.sub: object expected\\\");\\n message.sub = $root.SdkSubscribeFrame.fromObject(object.sub);\\n }\\n if (object.suback != null) {\\n if (typeof object.suback !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.suback: object expected\\\");\\n message.suback = $root.SdkSubscribeAckFrame.fromObject(object.suback);\\n }\\n if (object.index != null) {\\n if (typeof object.index !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.index: object expected\\\");\\n message.index = $root.SdkIndexFrame.fromObject(object.index);\\n }\\n if (object.pause != null) {\\n if (typeof object.pause !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.pause: object expected\\\");\\n message.pause = $root.SdkPauseResumeFrame.fromObject(object.pause);\\n }\\n if (object.leave != null) {\\n if (typeof object.leave !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.leave: object expected\\\");\\n message.leave = $root.SdkLeaveFrame.fromObject(object.leave);\\n }\\n if (object.leaveAck != null) {\\n if (typeof object.leaveAck !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.leaveAck: object expected\\\");\\n message.leaveAck = $root.SdkLeaveAckFrame.fromObject(object.leaveAck);\\n }\\n if (object.bitrates != null) {\\n if (typeof object.bitrates !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.bitrates: object expected\\\");\\n message.bitrates = $root.SdkBitrateFrame.fromObject(object.bitrates);\\n }\\n if (object.audioControl != null) {\\n if (typeof object.audioControl !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.audioControl: object expected\\\");\\n message.audioControl = $root.SdkAudioControlFrame.fromObject(object.audioControl);\\n }\\n if (object.audioMetadata != null) {\\n if (typeof object.audioMetadata !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.audioMetadata: object expected\\\");\\n message.audioMetadata = $root.SdkAudioMetadataFrame.fromObject(object.audioMetadata);\\n }\\n if (object.audioStreamIdInfo != null) {\\n if (typeof object.audioStreamIdInfo !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.audioStreamIdInfo: object expected\\\");\\n message.audioStreamIdInfo = $root.SdkAudioStreamIdInfoFrame.fromObject(object.audioStreamIdInfo);\\n }\\n if (object.pingPong != null) {\\n if (typeof object.pingPong !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.pingPong: object expected\\\");\\n message.pingPong = $root.SdkPingPongFrame.fromObject(object.pingPong);\\n }\\n if (object.audioStatus != null) {\\n if (typeof object.audioStatus !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.audioStatus: object expected\\\");\\n message.audioStatus = $root.SdkAudioStatusFrame.fromObject(object.audioStatus);\\n }\\n if (object.clientMetric != null) {\\n if (typeof object.clientMetric !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.clientMetric: object expected\\\");\\n message.clientMetric = $root.SdkClientMetricFrame.fromObject(object.clientMetric);\\n }\\n if (object.dataMessage != null) {\\n if (typeof object.dataMessage !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.dataMessage: object expected\\\");\\n message.dataMessage = $root.SdkDataMessageFrame.fromObject(object.dataMessage);\\n }\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkSignalFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {SdkSignalFrame} message SdkSignalFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkSignalFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n if ($util.Long) {\\n var long = new $util.Long(0, 0, true);\\n object.timestampMs = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\\n } else\\n object.timestampMs = options.longs === String ? \\\"0\\\" : 0;\\n object.type = options.enums === String ? \\\"JOIN\\\" : 1;\\n object.error = null;\\n object.join = null;\\n object.joinack = null;\\n object.sub = null;\\n object.suback = null;\\n object.index = null;\\n object.pause = null;\\n object.leave = null;\\n object.leaveAck = null;\\n object.bitrates = null;\\n object.audioControl = null;\\n object.audioMetadata = null;\\n object.audioStreamIdInfo = null;\\n object.pingPong = null;\\n object.audioStatus = null;\\n object.clientMetric = null;\\n object.dataMessage = null;\\n }\\n if (message.timestampMs != null && message.hasOwnProperty(\\\"timestampMs\\\"))\\n if (typeof message.timestampMs === \\\"number\\\")\\n object.timestampMs = options.longs === String ? String(message.timestampMs) : message.timestampMs;\\n else\\n object.timestampMs = options.longs === String ? $util.Long.prototype.toString.call(message.timestampMs) : options.longs === Number ? new $util.LongBits(message.timestampMs.low >>> 0, message.timestampMs.high >>> 0).toNumber(true) : message.timestampMs;\\n if (message.type != null && message.hasOwnProperty(\\\"type\\\"))\\n object.type = options.enums === String ? $root.SdkSignalFrame.Type[message.type] : message.type;\\n if (message.error != null && message.hasOwnProperty(\\\"error\\\"))\\n object.error = $root.SdkErrorFrame.toObject(message.error, options);\\n if (message.join != null && message.hasOwnProperty(\\\"join\\\"))\\n object.join = $root.SdkJoinFrame.toObject(message.join, options);\\n if (message.joinack != null && message.hasOwnProperty(\\\"joinack\\\"))\\n object.joinack = $root.SdkJoinAckFrame.toObject(message.joinack, options);\\n if (message.sub != null && message.hasOwnProperty(\\\"sub\\\"))\\n object.sub = $root.SdkSubscribeFrame.toObject(message.sub, options);\\n if (message.suback != null && message.hasOwnProperty(\\\"suback\\\"))\\n object.suback = $root.SdkSubscribeAckFrame.toObject(message.suback, options);\\n if (message.index != null && message.hasOwnProperty(\\\"index\\\"))\\n object.index = $root.SdkIndexFrame.toObject(message.index, options);\\n if (message.pause != null && message.hasOwnProperty(\\\"pause\\\"))\\n object.pause = $root.SdkPauseResumeFrame.toObject(message.pause, options);\\n if (message.leave != null && message.hasOwnProperty(\\\"leave\\\"))\\n object.leave = $root.SdkLeaveFrame.toObject(message.leave, options);\\n if (message.leaveAck != null && message.hasOwnProperty(\\\"leaveAck\\\"))\\n object.leaveAck = $root.SdkLeaveAckFrame.toObject(message.leaveAck, options);\\n if (message.bitrates != null && message.hasOwnProperty(\\\"bitrates\\\"))\\n object.bitrates = $root.SdkBitrateFrame.toObject(message.bitrates, options);\\n if (message.audioControl != null && message.hasOwnProperty(\\\"audioControl\\\"))\\n object.audioControl = $root.SdkAudioControlFrame.toObject(message.audioControl, options);\\n if (message.audioMetadata != null && message.hasOwnProperty(\\\"audioMetadata\\\"))\\n object.audioMetadata = $root.SdkAudioMetadataFrame.toObject(message.audioMetadata, options);\\n if (message.audioStreamIdInfo != null && message.hasOwnProperty(\\\"audioStreamIdInfo\\\"))\\n object.audioStreamIdInfo = $root.SdkAudioStreamIdInfoFrame.toObject(message.audioStreamIdInfo, options);\\n if (message.pingPong != null && message.hasOwnProperty(\\\"pingPong\\\"))\\n object.pingPong = $root.SdkPingPongFrame.toObject(message.pingPong, options);\\n if (message.audioStatus != null && message.hasOwnProperty(\\\"audioStatus\\\"))\\n object.audioStatus = $root.SdkAudioStatusFrame.toObject(message.audioStatus, options);\\n if (message.clientMetric != null && message.hasOwnProperty(\\\"clientMetric\\\"))\\n object.clientMetric = $root.SdkClientMetricFrame.toObject(message.clientMetric, options);\\n if (message.dataMessage != null && message.hasOwnProperty(\\\"dataMessage\\\"))\\n object.dataMessage = $root.SdkDataMessageFrame.toObject(message.dataMessage, options);\\n return object;\\n };\\n\\n /**\\n * Converts this SdkSignalFrame to JSON.\\n * @function toJSON\\n * @memberof SdkSignalFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkSignalFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n /**\\n * Type enum.\\n * @name SdkSignalFrame.Type\\n * @enum {string}\\n * @property {number} JOIN=1 JOIN value\\n * @property {number} JOIN_ACK=2 JOIN_ACK value\\n * @property {number} SUBSCRIBE=3 SUBSCRIBE value\\n * @property {number} SUBSCRIBE_ACK=4 SUBSCRIBE_ACK value\\n * @property {number} INDEX=5 INDEX value\\n * @property {number} PAUSE=7 PAUSE value\\n * @property {number} RESUME=8 RESUME value\\n * @property {number} LEAVE=9 LEAVE value\\n * @property {number} LEAVE_ACK=10 LEAVE_ACK value\\n * @property {number} BITRATES=13 BITRATES value\\n * @property {number} AUDIO_CONTROL=16 AUDIO_CONTROL value\\n * @property {number} AUDIO_METADATA=17 AUDIO_METADATA value\\n * @property {number} AUDIO_STREAM_ID_INFO=18 AUDIO_STREAM_ID_INFO value\\n * @property {number} PING_PONG=19 PING_PONG value\\n * @property {number} AUDIO_STATUS=20 AUDIO_STATUS value\\n * @property {number} CLIENT_METRIC=21 CLIENT_METRIC value\\n * @property {number} DATA_MESSAGE=22 DATA_MESSAGE value\\n */\\n SdkSignalFrame.Type = (function() {\\n var valuesById = {}, values = Object.create(valuesById);\\n values[valuesById[1] = \\\"JOIN\\\"] = 1;\\n values[valuesById[2] = \\\"JOIN_ACK\\\"] = 2;\\n values[valuesById[3] = \\\"SUBSCRIBE\\\"] = 3;\\n values[valuesById[4] = \\\"SUBSCRIBE_ACK\\\"] = 4;\\n values[valuesById[5] = \\\"INDEX\\\"] = 5;\\n values[valuesById[7] = \\\"PAUSE\\\"] = 7;\\n values[valuesById[8] = \\\"RESUME\\\"] = 8;\\n values[valuesById[9] = \\\"LEAVE\\\"] = 9;\\n values[valuesById[10] = \\\"LEAVE_ACK\\\"] = 10;\\n values[valuesById[13] = \\\"BITRATES\\\"] = 13;\\n values[valuesById[16] = \\\"AUDIO_CONTROL\\\"] = 16;\\n values[valuesById[17] = \\\"AUDIO_METADATA\\\"] = 17;\\n values[valuesById[18] = \\\"AUDIO_STREAM_ID_INFO\\\"] = 18;\\n values[valuesById[19] = \\\"PING_PONG\\\"] = 19;\\n values[valuesById[20] = \\\"AUDIO_STATUS\\\"] = 20;\\n values[valuesById[21] = \\\"CLIENT_METRIC\\\"] = 21;\\n values[valuesById[22] = \\\"DATA_MESSAGE\\\"] = 22;\\n return values;\\n })();\\n\\n return SdkSignalFrame;\\n})();\\n\\n$root.SdkErrorFrame = (function() {\\n\\n /**\\n * Properties of a SdkErrorFrame.\\n * @exports ISdkErrorFrame\\n * @interface ISdkErrorFrame\\n * @property {number|null} [status] SdkErrorFrame status\\n * @property {string|null} [description] SdkErrorFrame description\\n */\\n\\n /**\\n * Constructs a new SdkErrorFrame.\\n * @exports SdkErrorFrame\\n * @classdesc Represents a SdkErrorFrame.\\n * @implements ISdkErrorFrame\\n * @constructor\\n * @param {ISdkErrorFrame=} [properties] Properties to set\\n */\\n function SdkErrorFrame(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkErrorFrame status.\\n * @member {number} status\\n * @memberof SdkErrorFrame\\n * @instance\\n */\\n SdkErrorFrame.prototype.status = 0;\\n\\n /**\\n * SdkErrorFrame description.\\n * @member {string} description\\n * @memberof SdkErrorFrame\\n * @instance\\n */\\n SdkErrorFrame.prototype.description = \\\"\\\";\\n\\n /**\\n * Creates a new SdkErrorFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {ISdkErrorFrame=} [properties] Properties to set\\n * @returns {SdkErrorFrame} SdkErrorFrame instance\\n */\\n SdkErrorFrame.create = function create(properties) {\\n return new SdkErrorFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkErrorFrame message. Does not implicitly {@link SdkErrorFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {ISdkErrorFrame} message SdkErrorFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkErrorFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.status != null && message.hasOwnProperty(\\\"status\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.status);\\n if (message.description != null && message.hasOwnProperty(\\\"description\\\"))\\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.description);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkErrorFrame message, length delimited. Does not implicitly {@link SdkErrorFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {ISdkErrorFrame} message SdkErrorFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkErrorFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkErrorFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkErrorFrame} SdkErrorFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkErrorFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkErrorFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.status = reader.uint32();\\n break;\\n case 2:\\n message.description = reader.string();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkErrorFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkErrorFrame} SdkErrorFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkErrorFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkErrorFrame message.\\n * @function verify\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkErrorFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.status != null && message.hasOwnProperty(\\\"status\\\"))\\n if (!$util.isInteger(message.status))\\n return \\\"status: integer expected\\\";\\n if (message.description != null && message.hasOwnProperty(\\\"description\\\"))\\n if (!$util.isString(message.description))\\n return \\\"description: string expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkErrorFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkErrorFrame} SdkErrorFrame\\n */\\n SdkErrorFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkErrorFrame)\\n return object;\\n var message = new $root.SdkErrorFrame();\\n if (object.status != null)\\n message.status = object.status >>> 0;\\n if (object.description != null)\\n message.description = String(object.description);\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkErrorFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {SdkErrorFrame} message SdkErrorFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkErrorFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n object.status = 0;\\n object.description = \\\"\\\";\\n }\\n if (message.status != null && message.hasOwnProperty(\\\"status\\\"))\\n object.status = message.status;\\n if (message.description != null && message.hasOwnProperty(\\\"description\\\"))\\n object.description = message.description;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkErrorFrame to JSON.\\n * @function toJSON\\n * @memberof SdkErrorFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkErrorFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkErrorFrame;\\n})();\\n\\n/**\\n * SdkJoinFlags enum.\\n * @exports SdkJoinFlags\\n * @enum {string}\\n * @property {number} SEND_BITRATES=1 SEND_BITRATES value\\n * @property {number} HAS_STREAM_UPDATE=2 HAS_STREAM_UPDATE value\\n * @property {number} USE_SEND_SIDE_BWE=8 USE_SEND_SIDE_BWE value\\n * @property {number} COMPLETE_VIDEO_SOURCES_LIST=16 COMPLETE_VIDEO_SOURCES_LIST value\\n * @property {number} EXCLUDE_SELF_CONTENT_IN_INDEX=32 EXCLUDE_SELF_CONTENT_IN_INDEX value\\n */\\n$root.SdkJoinFlags = (function() {\\n var valuesById = {}, values = Object.create(valuesById);\\n values[valuesById[1] = \\\"SEND_BITRATES\\\"] = 1;\\n values[valuesById[2] = \\\"HAS_STREAM_UPDATE\\\"] = 2;\\n values[valuesById[8] = \\\"USE_SEND_SIDE_BWE\\\"] = 8;\\n values[valuesById[16] = \\\"COMPLETE_VIDEO_SOURCES_LIST\\\"] = 16;\\n values[valuesById[32] = \\\"EXCLUDE_SELF_CONTENT_IN_INDEX\\\"] = 32;\\n return values;\\n})();\\n\\n$root.SdkClientDetails = (function() {\\n\\n /**\\n * Properties of a SdkClientDetails.\\n * @exports ISdkClientDetails\\n * @interface ISdkClientDetails\\n * @property {string|null} [appVersionName] SdkClientDetails appVersionName\\n * @property {string|null} [appVersionCode] SdkClientDetails appVersionCode\\n * @property {string|null} [deviceModel] SdkClientDetails deviceModel\\n * @property {string|null} [deviceMake] SdkClientDetails deviceMake\\n * @property {string|null} [platformName] SdkClientDetails platformName\\n * @property {string|null} [platformVersion] SdkClientDetails platformVersion\\n * @property {string|null} [clientSource] SdkClientDetails clientSource\\n * @property {string|null} [chimeSdkVersion] SdkClientDetails chimeSdkVersion\\n */\\n\\n /**\\n * Constructs a new SdkClientDetails.\\n * @exports SdkClientDetails\\n * @classdesc Represents a SdkClientDetails.\\n * @implements ISdkClientDetails\\n * @constructor\\n * @param {ISdkClientDetails=} [properties] Properties to set\\n */\\n function SdkClientDetails(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkClientDetails appVersionName.\\n * @member {string} appVersionName\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.appVersionName = \\\"\\\";\\n\\n /**\\n * SdkClientDetails appVersionCode.\\n * @member {string} appVersionCode\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.appVersionCode = \\\"\\\";\\n\\n /**\\n * SdkClientDetails deviceModel.\\n * @member {string} deviceModel\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.deviceModel = \\\"\\\";\\n\\n /**\\n * SdkClientDetails deviceMake.\\n * @member {string} deviceMake\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.deviceMake = \\\"\\\";\\n\\n /**\\n * SdkClientDetails platformName.\\n * @member {string} platformName\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.platformName = \\\"\\\";\\n\\n /**\\n * SdkClientDetails platformVersion.\\n * @member {string} platformVersion\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.platformVersion = \\\"\\\";\\n\\n /**\\n * SdkClientDetails clientSource.\\n * @member {string} clientSource\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.clientSource = \\\"\\\";\\n\\n /**\\n * SdkClientDetails chimeSdkVersion.\\n * @member {string} chimeSdkVersion\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.chimeSdkVersion = \\\"\\\";\\n\\n /**\\n * Creates a new SdkClientDetails instance using the specified properties.\\n * @function create\\n * @memberof SdkClientDetails\\n * @static\\n * @param {ISdkClientDetails=} [properties] Properties to set\\n * @returns {SdkClientDetails} SdkClientDetails instance\\n */\\n SdkClientDetails.create = function create(properties) {\\n return new SdkClientDetails(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkClientDetails message. Does not implicitly {@link SdkClientDetails.verify|verify} messages.\\n * @function encode\\n * @memberof SdkClientDetails\\n * @static\\n * @param {ISdkClientDetails} message SdkClientDetails message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkClientDetails.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.appVersionName != null && message.hasOwnProperty(\\\"appVersionName\\\"))\\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.appVersionName);\\n if (message.appVersionCode != null && message.hasOwnProperty(\\\"appVersionCode\\\"))\\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.appVersionCode);\\n if (message.deviceModel != null && message.hasOwnProperty(\\\"deviceModel\\\"))\\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.deviceModel);\\n if (message.deviceMake != null && message.hasOwnProperty(\\\"deviceMake\\\"))\\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.deviceMake);\\n if (message.platformName != null && message.hasOwnProperty(\\\"platformName\\\"))\\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.platformName);\\n if (message.platformVersion != null && message.hasOwnProperty(\\\"platformVersion\\\"))\\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.platformVersion);\\n if (message.clientSource != null && message.hasOwnProperty(\\\"clientSource\\\"))\\n writer.uint32(/* id 7, wireType 2 =*/58).string(message.clientSource);\\n if (message.chimeSdkVersion != null && message.hasOwnProperty(\\\"chimeSdkVersion\\\"))\\n writer.uint32(/* id 8, wireType 2 =*/66).string(message.chimeSdkVersion);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkClientDetails message, length delimited. Does not implicitly {@link SdkClientDetails.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkClientDetails\\n * @static\\n * @param {ISdkClientDetails} message SdkClientDetails message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkClientDetails.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkClientDetails message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkClientDetails\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkClientDetails} SdkClientDetails\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkClientDetails.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkClientDetails();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.appVersionName = reader.string();\\n break;\\n case 2:\\n message.appVersionCode = reader.string();\\n break;\\n case 3:\\n message.deviceModel = reader.string();\\n break;\\n case 4:\\n message.deviceMake = reader.string();\\n break;\\n case 5:\\n message.platformName = reader.string();\\n break;\\n case 6:\\n message.platformVersion = reader.string();\\n break;\\n case 7:\\n message.clientSource = reader.string();\\n break;\\n case 8:\\n message.chimeSdkVersion = reader.string();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkClientDetails message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkClientDetails\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkClientDetails} SdkClientDetails\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkClientDetails.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkClientDetails message.\\n * @function verify\\n * @memberof SdkClientDetails\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkClientDetails.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.appVersionName != null && message.hasOwnProperty(\\\"appVersionName\\\"))\\n if (!$util.isString(message.appVersionName))\\n return \\\"appVersionName: string expected\\\";\\n if (message.appVersionCode != null && message.hasOwnProperty(\\\"appVersionCode\\\"))\\n if (!$util.isString(message.appVersionCode))\\n return \\\"appVersionCode: string expected\\\";\\n if (message.deviceModel != null && message.hasOwnProperty(\\\"deviceModel\\\"))\\n if (!$util.isString(message.deviceModel))\\n return \\\"deviceModel: string expected\\\";\\n if (message.deviceMake != null && message.hasOwnProperty(\\\"deviceMake\\\"))\\n if (!$util.isString(message.deviceMake))\\n return \\\"deviceMake: string expected\\\";\\n if (message.platformName != null && message.hasOwnProperty(\\\"platformName\\\"))\\n if (!$util.isString(message.platformName))\\n return \\\"platformName: string expected\\\";\\n if (message.platformVersion != null && message.hasOwnProperty(\\\"platformVersion\\\"))\\n if (!$util.isString(message.platformVersion))\\n return \\\"platformVersion: string expected\\\";\\n if (message.clientSource != null && message.hasOwnProperty(\\\"clientSource\\\"))\\n if (!$util.isString(message.clientSource))\\n return \\\"clientSource: string expected\\\";\\n if (message.chimeSdkVersion != null && message.hasOwnProperty(\\\"chimeSdkVersion\\\"))\\n if (!$util.isString(message.chimeSdkVersion))\\n return \\\"chimeSdkVersion: string expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkClientDetails message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkClientDetails\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkClientDetails} SdkClientDetails\\n */\\n SdkClientDetails.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkClientDetails)\\n return object;\\n var message = new $root.SdkClientDetails();\\n if (object.appVersionName != null)\\n message.appVersionName = String(object.appVersionName);\\n if (object.appVersionCode != null)\\n message.appVersionCode = String(object.appVersionCode);\\n if (object.deviceModel != null)\\n message.deviceModel = String(object.deviceModel);\\n if (object.deviceMake != null)\\n message.deviceMake = String(object.deviceMake);\\n if (object.platformName != null)\\n message.platformName = String(object.platformName);\\n if (object.platformVersion != null)\\n message.platformVersion = String(object.platformVersion);\\n if (object.clientSource != null)\\n message.clientSource = String(object.clientSource);\\n if (object.chimeSdkVersion != null)\\n message.chimeSdkVersion = String(object.chimeSdkVersion);\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkClientDetails message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkClientDetails\\n * @static\\n * @param {SdkClientDetails} message SdkClientDetails\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkClientDetails.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n object.appVersionName = \\\"\\\";\\n object.appVersionCode = \\\"\\\";\\n object.deviceModel = \\\"\\\";\\n object.deviceMake = \\\"\\\";\\n object.platformName = \\\"\\\";\\n object.platformVersion = \\\"\\\";\\n object.clientSource = \\\"\\\";\\n object.chimeSdkVersion = \\\"\\\";\\n }\\n if (message.appVersionName != null && message.hasOwnProperty(\\\"appVersionName\\\"))\\n object.appVersionName = message.appVersionName;\\n if (message.appVersionCode != null && message.hasOwnProperty(\\\"appVersionCode\\\"))\\n object.appVersionCode = message.appVersionCode;\\n if (message.deviceModel != null && message.hasOwnProperty(\\\"deviceModel\\\"))\\n object.deviceModel = message.deviceModel;\\n if (message.deviceMake != null && message.hasOwnProperty(\\\"deviceMake\\\"))\\n object.deviceMake = message.deviceMake;\\n if (message.platformName != null && message.hasOwnProperty(\\\"platformName\\\"))\\n object.platformName = message.platformName;\\n if (message.platformVersion != null && message.hasOwnProperty(\\\"platformVersion\\\"))\\n object.platformVersion = message.platformVersion;\\n if (message.clientSource != null && message.hasOwnProperty(\\\"clientSource\\\"))\\n object.clientSource = message.clientSource;\\n if (message.chimeSdkVersion != null && message.hasOwnProperty(\\\"chimeSdkVersion\\\"))\\n object.chimeSdkVersion = message.chimeSdkVersion;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkClientDetails to JSON.\\n * @function toJSON\\n * @memberof SdkClientDetails\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkClientDetails.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkClientDetails;\\n})();\\n\\n$root.SdkJoinFrame = (function() {\\n\\n /**\\n * Properties of a SdkJoinFrame.\\n * @exports ISdkJoinFrame\\n * @interface ISdkJoinFrame\\n * @property {number|null} [protocolVersion] SdkJoinFrame protocolVersion\\n * @property {number|null} [maxNumOfVideos] SdkJoinFrame maxNumOfVideos\\n * @property {number|null} [flags] SdkJoinFrame flags\\n * @property {ISdkClientDetails|null} [clientDetails] SdkJoinFrame clientDetails\\n * @property {number|Long|null} [audioSessionId] SdkJoinFrame audioSessionId\\n */\\n\\n /**\\n * Constructs a new SdkJoinFrame.\\n * @exports SdkJoinFrame\\n * @classdesc Represents a SdkJoinFrame.\\n * @implements ISdkJoinFrame\\n * @constructor\\n * @param {ISdkJoinFrame=} [properties] Properties to set\\n */\\n function SdkJoinFrame(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkJoinFrame protocolVersion.\\n * @member {number} protocolVersion\\n * @memberof SdkJoinFrame\\n * @instance\\n */\\n SdkJoinFrame.prototype.protocolVersion = 2;\\n\\n /**\\n * SdkJoinFrame maxNumOfVideos.\\n * @member {number} maxNumOfVideos\\n * @memberof SdkJoinFrame\\n * @instance\\n */\\n SdkJoinFrame.prototype.maxNumOfVideos = 8;\\n\\n /**\\n * SdkJoinFrame flags.\\n * @member {number} flags\\n * @memberof SdkJoinFrame\\n * @instance\\n */\\n SdkJoinFrame.prototype.flags = 0;\\n\\n /**\\n * SdkJoinFrame clientDetails.\\n * @member {ISdkClientDetails|null|undefined} clientDetails\\n * @memberof SdkJoinFrame\\n * @instance\\n */\\n SdkJoinFrame.prototype.clientDetails = null;\\n\\n /**\\n * SdkJoinFrame audioSessionId.\\n * @member {number|Long} audioSessionId\\n * @memberof SdkJoinFrame\\n * @instance\\n */\\n SdkJoinFrame.prototype.audioSessionId = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\\n\\n /**\\n * Creates a new SdkJoinFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {ISdkJoinFrame=} [properties] Properties to set\\n * @returns {SdkJoinFrame} SdkJoinFrame instance\\n */\\n SdkJoinFrame.create = function create(properties) {\\n return new SdkJoinFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkJoinFrame message. Does not implicitly {@link SdkJoinFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {ISdkJoinFrame} message SdkJoinFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkJoinFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.protocolVersion != null && message.hasOwnProperty(\\\"protocolVersion\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.protocolVersion);\\n if (message.maxNumOfVideos != null && message.hasOwnProperty(\\\"maxNumOfVideos\\\"))\\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.maxNumOfVideos);\\n if (message.flags != null && message.hasOwnProperty(\\\"flags\\\"))\\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.flags);\\n if (message.clientDetails != null && message.hasOwnProperty(\\\"clientDetails\\\"))\\n $root.SdkClientDetails.encode(message.clientDetails, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\\n if (message.audioSessionId != null && message.hasOwnProperty(\\\"audioSessionId\\\"))\\n writer.uint32(/* id 6, wireType 0 =*/48).uint64(message.audioSessionId);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkJoinFrame message, length delimited. Does not implicitly {@link SdkJoinFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {ISdkJoinFrame} message SdkJoinFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkJoinFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkJoinFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkJoinFrame} SdkJoinFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkJoinFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkJoinFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.protocolVersion = reader.uint32();\\n break;\\n case 2:\\n message.maxNumOfVideos = reader.uint32();\\n break;\\n case 3:\\n message.flags = reader.uint32();\\n break;\\n case 4:\\n message.clientDetails = $root.SdkClientDetails.decode(reader, reader.uint32());\\n break;\\n case 6:\\n message.audioSessionId = reader.uint64();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkJoinFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkJoinFrame} SdkJoinFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkJoinFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkJoinFrame message.\\n * @function verify\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkJoinFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.protocolVersion != null && message.hasOwnProperty(\\\"protocolVersion\\\"))\\n if (!$util.isInteger(message.protocolVersion))\\n return \\\"protocolVersion: integer expected\\\";\\n if (message.maxNumOfVideos != null && message.hasOwnProperty(\\\"maxNumOfVideos\\\"))\\n if (!$util.isInteger(message.maxNumOfVideos))\\n return \\\"maxNumOfVideos: integer expected\\\";\\n if (message.flags != null && message.hasOwnProperty(\\\"flags\\\"))\\n if (!$util.isInteger(message.flags))\\n return \\\"flags: integer expected\\\";\\n if (message.clientDetails != null && message.hasOwnProperty(\\\"clientDetails\\\")) {\\n var error = $root.SdkClientDetails.verify(message.clientDetails);\\n if (error)\\n return \\\"clientDetails.\\\" + error;\\n }\\n if (message.audioSessionId != null && message.hasOwnProperty(\\\"audioSessionId\\\"))\\n if (!$util.isInteger(message.audioSessionId) && !(message.audioSessionId && $util.isInteger(message.audioSessionId.low) && $util.isInteger(message.audioSessionId.high)))\\n return \\\"audioSessionId: integer|Long expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkJoinFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkJoinFrame} SdkJoinFrame\\n */\\n SdkJoinFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkJoinFrame)\\n return object;\\n var message = new $root.SdkJoinFrame();\\n if (object.protocolVersion != null)\\n message.protocolVersion = object.protocolVersion >>> 0;\\n if (object.maxNumOfVideos != null)\\n message.maxNumOfVideos = object.maxNumOfVideos >>> 0;\\n if (object.flags != null)\\n message.flags = object.flags >>> 0;\\n if (object.clientDetails != null) {\\n if (typeof object.clientDetails !== \\\"object\\\")\\n throw TypeError(\\\".SdkJoinFrame.clientDetails: object expected\\\");\\n message.clientDetails = $root.SdkClientDetails.fromObject(object.clientDetails);\\n }\\n if (object.audioSessionId != null)\\n if ($util.Long)\\n (message.audioSessionId = $util.Long.fromValue(object.audioSessionId)).unsigned = true;\\n else if (typeof object.audioSessionId === \\\"string\\\")\\n message.audioSessionId = parseInt(object.audioSessionId, 10);\\n else if (typeof object.audioSessionId === \\\"number\\\")\\n message.audioSessionId = object.audioSessionId;\\n else if (typeof object.audioSessionId === \\\"object\\\")\\n message.audioSessionId = new $util.LongBits(object.audioSessionId.low >>> 0, object.audioSessionId.high >>> 0).toNumber(true);\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkJoinFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {SdkJoinFrame} message SdkJoinFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkJoinFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n object.protocolVersion = 2;\\n object.maxNumOfVideos = 8;\\n object.flags = 0;\\n object.clientDetails = null;\\n if ($util.Long) {\\n var long = new $util.Long(0, 0, true);\\n object.audioSessionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\\n } else\\n object.audioSessionId = options.longs === String ? \\\"0\\\" : 0;\\n }\\n if (message.protocolVersion != null && message.hasOwnProperty(\\\"protocolVersion\\\"))\\n object.protocolVersion = message.protocolVersion;\\n if (message.maxNumOfVideos != null && message.hasOwnProperty(\\\"maxNumOfVideos\\\"))\\n object.maxNumOfVideos = message.maxNumOfVideos;\\n if (message.flags != null && message.hasOwnProperty(\\\"flags\\\"))\\n object.flags = message.flags;\\n if (message.clientDetails != null && message.hasOwnProperty(\\\"clientDetails\\\"))\\n object.clientDetails = $root.SdkClientDetails.toObject(message.clientDetails, options);\\n if (message.audioSessionId != null && message.hasOwnProperty(\\\"audioSessionId\\\"))\\n if (typeof message.audioSessionId === \\\"number\\\")\\n object.audioSessionId = options.longs === String ? String(message.audioSessionId) : message.audioSessionId;\\n else\\n object.audioSessionId = options.longs === String ? $util.Long.prototype.toString.call(message.audioSessionId) : options.longs === Number ? new $util.LongBits(message.audioSessionId.low >>> 0, message.audioSessionId.high >>> 0).toNumber(true) : message.audioSessionId;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkJoinFrame to JSON.\\n * @function toJSON\\n * @memberof SdkJoinFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkJoinFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkJoinFrame;\\n})();\\n\\n$root.SdkJoinAckFrame = (function() {\\n\\n /**\\n * Properties of a SdkJoinAckFrame.\\n * @exports ISdkJoinAckFrame\\n * @interface ISdkJoinAckFrame\\n * @property {ISdkTurnCredentials|null} [turnCredentials] SdkJoinAckFrame turnCredentials\\n */\\n\\n /**\\n * Constructs a new SdkJoinAckFrame.\\n * @exports SdkJoinAckFrame\\n * @classdesc Represents a SdkJoinAckFrame.\\n * @implements ISdkJoinAckFrame\\n * @constructor\\n * @param {ISdkJoinAckFrame=} [properties] Properties to set\\n */\\n function SdkJoinAckFrame(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkJoinAckFrame turnCredentials.\\n * @member {ISdkTurnCredentials|null|undefined} turnCredentials\\n * @memberof SdkJoinAckFrame\\n * @instance\\n */\\n SdkJoinAckFrame.prototype.turnCredentials = null;\\n\\n /**\\n * Creates a new SdkJoinAckFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {ISdkJoinAckFrame=} [properties] Properties to set\\n * @returns {SdkJoinAckFrame} SdkJoinAckFrame instance\\n */\\n SdkJoinAckFrame.create = function create(properties) {\\n return new SdkJoinAckFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkJoinAckFrame message. Does not implicitly {@link SdkJoinAckFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {ISdkJoinAckFrame} message SdkJoinAckFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkJoinAckFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.turnCredentials != null && message.hasOwnProperty(\\\"turnCredentials\\\"))\\n $root.SdkTurnCredentials.encode(message.turnCredentials, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkJoinAckFrame message, length delimited. Does not implicitly {@link SdkJoinAckFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {ISdkJoinAckFrame} message SdkJoinAckFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkJoinAckFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkJoinAckFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkJoinAckFrame} SdkJoinAckFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkJoinAckFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkJoinAckFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.turnCredentials = $root.SdkTurnCredentials.decode(reader, reader.uint32());\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkJoinAckFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkJoinAckFrame} SdkJoinAckFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkJoinAckFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkJoinAckFrame message.\\n * @function verify\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkJoinAckFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.turnCredentials != null && message.hasOwnProperty(\\\"turnCredentials\\\")) {\\n var error = $root.SdkTurnCredentials.verify(message.turnCredentials);\\n if (error)\\n return \\\"turnCredentials.\\\" + error;\\n }\\n return null;\\n };\\n\\n /**\\n * Creates a SdkJoinAckFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkJoinAckFrame} SdkJoinAckFrame\\n */\\n SdkJoinAckFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkJoinAckFrame)\\n return object;\\n var message = new $root.SdkJoinAckFrame();\\n if (object.turnCredentials != null) {\\n if (typeof object.turnCredentials !== \\\"object\\\")\\n throw TypeError(\\\".SdkJoinAckFrame.turnCredentials: object expected\\\");\\n message.turnCredentials = $root.SdkTurnCredentials.fromObject(object.turnCredentials);\\n }\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkJoinAckFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {SdkJoinAckFrame} message SdkJoinAckFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkJoinAckFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults)\\n object.turnCredentials = null;\\n if (message.turnCredentials != null && message.hasOwnProperty(\\\"turnCredentials\\\"))\\n object.turnCredentials = $root.SdkTurnCredentials.toObject(message.turnCredentials, options);\\n return object;\\n };\\n\\n /**\\n * Converts this SdkJoinAckFrame to JSON.\\n * @function toJSON\\n * @memberof SdkJoinAckFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkJoinAckFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkJoinAckFrame;\\n})();\\n\\n$root.SdkLeaveFrame = (function() {\\n\\n /**\\n * Properties of a SdkLeaveFrame.\\n * @exports ISdkLeaveFrame\\n * @interface ISdkLeaveFrame\\n */\\n\\n /**\\n * Constructs a new SdkLeaveFrame.\\n * @exports SdkLeaveFrame\\n * @classdesc Represents a SdkLeaveFrame.\\n * @implements ISdkLeaveFrame\\n * @constructor\\n * @param {ISdkLeaveFrame=} [properties] Properties to set\\n */\\n function SdkLeaveFrame(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * Creates a new SdkLeaveFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {ISdkLeaveFrame=} [properties] Properties to set\\n * @returns {SdkLeaveFrame} SdkLeaveFrame instance\\n */\\n SdkLeaveFrame.create = function create(properties) {\\n return new SdkLeaveFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkLeaveFrame message. Does not implicitly {@link SdkLeaveFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {ISdkLeaveFrame} message SdkLeaveFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkLeaveFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkLeaveFrame message, length delimited. Does not implicitly {@link SdkLeaveFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {ISdkLeaveFrame} message SdkLeaveFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkLeaveFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkLeaveFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkLeaveFrame} SdkLeaveFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkLeaveFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkLeaveFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkLeaveFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkLeaveFrame} SdkLeaveFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkLeaveFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkLeaveFrame message.\\n * @function verify\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkLeaveFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkLeaveFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkLeaveFrame} SdkLeaveFrame\\n */\\n SdkLeaveFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkLeaveFrame)\\n return object;\\n return new $root.SdkLeaveFrame();\\n };\\n\\n /**\\n * Creates a plain object from a SdkLeaveFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {SdkLeaveFrame} message SdkLeaveFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkLeaveFrame.toObject = function toObject() {\\n return {};\\n };\\n\\n /**\\n * Converts this SdkLeaveFrame to JSON.\\n * @function toJSON\\n * @memberof SdkLeaveFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkLeaveFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkLeaveFrame;\\n})();\\n\\n$root.SdkLeaveAckFrame = (function() {\\n\\n /**\\n * Properties of a SdkLeaveAckFrame.\\n * @exports ISdkLeaveAckFrame\\n * @interface ISdkLeaveAckFrame\\n */\\n\\n /**\\n * Constructs a new SdkLeaveAckFrame.\\n * @exports SdkLeaveAckFrame\\n * @classdesc Represents a SdkLeaveAckFrame.\\n * @implements ISdkLeaveAckFrame\\n * @constructor\\n * @param {ISdkLeaveAckFrame=} [properties] Properties to set\\n */\\n function SdkLeaveAckFrame(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * Creates a new SdkLeaveAckFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {ISdkLeaveAckFrame=} [properties] Properties to set\\n * @returns {SdkLeaveAckFrame} SdkLeaveAckFrame instance\\n */\\n SdkLeaveAckFrame.create = function create(properties) {\\n return new SdkLeaveAckFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkLeaveAckFrame message. Does not implicitly {@link SdkLeaveAckFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {ISdkLeaveAckFrame} message SdkLeaveAckFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkLeaveAckFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkLeaveAckFrame message, length delimited. Does not implicitly {@link SdkLeaveAckFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {ISdkLeaveAckFrame} message SdkLeaveAckFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkLeaveAckFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkLeaveAckFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkLeaveAckFrame} SdkLeaveAckFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkLeaveAckFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkLeaveAckFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkLeaveAckFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkLeaveAckFrame} SdkLeaveAckFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkLeaveAckFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkLeaveAckFrame message.\\n * @function verify\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkLeaveAckFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkLeaveAckFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkLeaveAckFrame} SdkLeaveAckFrame\\n */\\n SdkLeaveAckFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkLeaveAckFrame)\\n return object;\\n return new $root.SdkLeaveAckFrame();\\n };\\n\\n /**\\n * Creates a plain object from a SdkLeaveAckFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {SdkLeaveAckFrame} message SdkLeaveAckFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkLeaveAckFrame.toObject = function toObject() {\\n return {};\\n };\\n\\n /**\\n * Converts this SdkLeaveAckFrame to JSON.\\n * @function toJSON\\n * @memberof SdkLeaveAckFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkLeaveAckFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkLeaveAckFrame;\\n})();\\n\\n/**\\n * SdkStreamServiceType enum.\\n * @exports SdkStreamServiceType\\n * @enum {string}\\n * @property {number} RX=1 RX value\\n * @property {number} TX=2 TX value\\n * @property {number} DUPLEX=3 DUPLEX value\\n */\\n$root.SdkStreamServiceType = (function() {\\n var valuesById = {}, values = Object.create(valuesById);\\n values[valuesById[1] = \\\"RX\\\"] = 1;\\n values[valuesById[2] = \\\"TX\\\"] = 2;\\n values[valuesById[3] = \\\"DUPLEX\\\"] = 3;\\n return values;\\n})();\\n\\n/**\\n * SdkStreamMediaType enum.\\n * @exports SdkStreamMediaType\\n * @enum {string}\\n * @property {number} AUDIO=1 AUDIO value\\n * @property {number} VIDEO=2 VIDEO value\\n */\\n$root.SdkStreamMediaType = (function() {\\n var valuesById = {}, values = Object.create(valuesById);\\n values[valuesById[1] = \\\"AUDIO\\\"] = 1;\\n values[valuesById[2] = \\\"VIDEO\\\"] = 2;\\n return values;\\n})();\\n\\n$root.SdkSubscribeFrame = (function() {\\n\\n /**\\n * Properties of a SdkSubscribeFrame.\\n * @exports ISdkSubscribeFrame\\n * @interface ISdkSubscribeFrame\\n * @property {SdkStreamServiceType|null} [duplex] SdkSubscribeFrame duplex\\n * @property {Array.|null} [sendStreams] SdkSubscribeFrame sendStreams\\n * @property {Array.|null} [receiveStreamIds] SdkSubscribeFrame receiveStreamIds\\n * @property {string|null} [sdpOffer] SdkSubscribeFrame sdpOffer\\n * @property {string|null} [audioHost] SdkSubscribeFrame audioHost\\n * @property {boolean|null} [audioCheckin] SdkSubscribeFrame audioCheckin\\n * @property {boolean|null} [audioMuted] SdkSubscribeFrame audioMuted\\n */\\n\\n /**\\n * Constructs a new SdkSubscribeFrame.\\n * @exports SdkSubscribeFrame\\n * @classdesc Represents a SdkSubscribeFrame.\\n * @implements ISdkSubscribeFrame\\n * @constructor\\n * @param {ISdkSubscribeFrame=} [properties] Properties to set\\n */\\n function SdkSubscribeFrame(properties) {\\n this.sendStreams = [];\\n this.receiveStreamIds = [];\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkSubscribeFrame duplex.\\n * @member {SdkStreamServiceType} duplex\\n * @memberof SdkSubscribeFrame\\n * @instance\\n */\\n SdkSubscribeFrame.prototype.duplex = 1;\\n\\n /**\\n * SdkSubscribeFrame sendStreams.\\n * @member {Array.} sendStreams\\n * @memberof SdkSubscribeFrame\\n * @instance\\n */\\n SdkSubscribeFrame.prototype.sendStreams = $util.emptyArray;\\n\\n /**\\n * SdkSubscribeFrame receiveStreamIds.\\n * @member {Array.} receiveStreamIds\\n * @memberof SdkSubscribeFrame\\n * @instance\\n */\\n SdkSubscribeFrame.prototype.receiveStreamIds = $util.emptyArray;\\n\\n /**\\n * SdkSubscribeFrame sdpOffer.\\n * @member {string} sdpOffer\\n * @memberof SdkSubscribeFrame\\n * @instance\\n */\\n SdkSubscribeFrame.prototype.sdpOffer = \\\"\\\";\\n\\n /**\\n * SdkSubscribeFrame audioHost.\\n * @member {string} audioHost\\n * @memberof SdkSubscribeFrame\\n * @instance\\n */\\n SdkSubscribeFrame.prototype.audioHost = \\\"\\\";\\n\\n /**\\n * SdkSubscribeFrame audioCheckin.\\n * @member {boolean} audioCheckin\\n * @memberof SdkSubscribeFrame\\n * @instance\\n */\\n SdkSubscribeFrame.prototype.audioCheckin = false;\\n\\n /**\\n * SdkSubscribeFrame audioMuted.\\n * @member {boolean} audioMuted\\n * @memberof SdkSubscribeFrame\\n * @instance\\n */\\n SdkSubscribeFrame.prototype.audioMuted = false;\\n\\n /**\\n * Creates a new SdkSubscribeFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {ISdkSubscribeFrame=} [properties] Properties to set\\n * @returns {SdkSubscribeFrame} SdkSubscribeFrame instance\\n */\\n SdkSubscribeFrame.create = function create(properties) {\\n return new SdkSubscribeFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkSubscribeFrame message. Does not implicitly {@link SdkSubscribeFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {ISdkSubscribeFrame} message SdkSubscribeFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkSubscribeFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.duplex != null && message.hasOwnProperty(\\\"duplex\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.duplex);\\n if (message.sendStreams != null && message.sendStreams.length)\\n for (var i = 0; i < message.sendStreams.length; ++i)\\n $root.SdkStreamDescriptor.encode(message.sendStreams[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\\n if (message.receiveStreamIds != null && message.receiveStreamIds.length)\\n for (var i = 0; i < message.receiveStreamIds.length; ++i)\\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.receiveStreamIds[i]);\\n if (message.sdpOffer != null && message.hasOwnProperty(\\\"sdpOffer\\\"))\\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.sdpOffer);\\n if (message.audioHost != null && message.hasOwnProperty(\\\"audioHost\\\"))\\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.audioHost);\\n if (message.audioCheckin != null && message.hasOwnProperty(\\\"audioCheckin\\\"))\\n writer.uint32(/* id 6, wireType 0 =*/48).bool(message.audioCheckin);\\n if (message.audioMuted != null && message.hasOwnProperty(\\\"audioMuted\\\"))\\n writer.uint32(/* id 7, wireType 0 =*/56).bool(message.audioMuted);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkSubscribeFrame message, length delimited. Does not implicitly {@link SdkSubscribeFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {ISdkSubscribeFrame} message SdkSubscribeFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkSubscribeFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkSubscribeFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkSubscribeFrame} SdkSubscribeFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkSubscribeFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkSubscribeFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.duplex = reader.int32();\\n break;\\n case 2:\\n if (!(message.sendStreams && message.sendStreams.length))\\n message.sendStreams = [];\\n message.sendStreams.push($root.SdkStreamDescriptor.decode(reader, reader.uint32()));\\n break;\\n case 3:\\n if (!(message.receiveStreamIds && message.receiveStreamIds.length))\\n message.receiveStreamIds = [];\\n if ((tag & 7) === 2) {\\n var end2 = reader.uint32() + reader.pos;\\n while (reader.pos < end2)\\n message.receiveStreamIds.push(reader.uint32());\\n } else\\n message.receiveStreamIds.push(reader.uint32());\\n break;\\n case 4:\\n message.sdpOffer = reader.string();\\n break;\\n case 5:\\n message.audioHost = reader.string();\\n break;\\n case 6:\\n message.audioCheckin = reader.bool();\\n break;\\n case 7:\\n message.audioMuted = reader.bool();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkSubscribeFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkSubscribeFrame} SdkSubscribeFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkSubscribeFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkSubscribeFrame message.\\n * @function verify\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkSubscribeFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.duplex != null && message.hasOwnProperty(\\\"duplex\\\"))\\n switch (message.duplex) {\\n default:\\n return \\\"duplex: enum value expected\\\";\\n case 1:\\n case 2:\\n case 3:\\n break;\\n }\\n if (message.sendStreams != null && message.hasOwnProperty(\\\"sendStreams\\\")) {\\n if (!Array.isArray(message.sendStreams))\\n return \\\"sendStreams: array expected\\\";\\n for (var i = 0; i < message.sendStreams.length; ++i) {\\n var error = $root.SdkStreamDescriptor.verify(message.sendStreams[i]);\\n if (error)\\n return \\\"sendStreams.\\\" + error;\\n }\\n }\\n if (message.receiveStreamIds != null && message.hasOwnProperty(\\\"receiveStreamIds\\\")) {\\n if (!Array.isArray(message.receiveStreamIds))\\n return \\\"receiveStreamIds: array expected\\\";\\n for (var i = 0; i < message.receiveStreamIds.length; ++i)\\n if (!$util.isInteger(message.receiveStreamIds[i]))\\n return \\\"receiveStreamIds: integer[] expected\\\";\\n }\\n if (message.sdpOffer != null && message.hasOwnProperty(\\\"sdpOffer\\\"))\\n if (!$util.isString(message.sdpOffer))\\n return \\\"sdpOffer: string expected\\\";\\n if (message.audioHost != null && message.hasOwnProperty(\\\"audioHost\\\"))\\n if (!$util.isString(message.audioHost))\\n return \\\"audioHost: string expected\\\";\\n if (message.audioCheckin != null && message.hasOwnProperty(\\\"audioCheckin\\\"))\\n if (typeof message.audioCheckin !== \\\"boolean\\\")\\n return \\\"audioCheckin: boolean expected\\\";\\n if (message.audioMuted != null && message.hasOwnProperty(\\\"audioMuted\\\"))\\n if (typeof message.audioMuted !== \\\"boolean\\\")\\n return \\\"audioMuted: boolean expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkSubscribeFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkSubscribeFrame} SdkSubscribeFrame\\n */\\n SdkSubscribeFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkSubscribeFrame)\\n return object;\\n var message = new $root.SdkSubscribeFrame();\\n switch (object.duplex) {\\n case \\\"RX\\\":\\n case 1:\\n message.duplex = 1;\\n break;\\n case \\\"TX\\\":\\n case 2:\\n message.duplex = 2;\\n break;\\n case \\\"DUPLEX\\\":\\n case 3:\\n message.duplex = 3;\\n break;\\n }\\n if (object.sendStreams) {\\n if (!Array.isArray(object.sendStreams))\\n throw TypeError(\\\".SdkSubscribeFrame.sendStreams: array expected\\\");\\n message.sendStreams = [];\\n for (var i = 0; i < object.sendStreams.length; ++i) {\\n if (typeof object.sendStreams[i] !== \\\"object\\\")\\n throw TypeError(\\\".SdkSubscribeFrame.sendStreams: object expected\\\");\\n message.sendStreams[i] = $root.SdkStreamDescriptor.fromObject(object.sendStreams[i]);\\n }\\n }\\n if (object.receiveStreamIds) {\\n if (!Array.isArray(object.receiveStreamIds))\\n throw TypeError(\\\".SdkSubscribeFrame.receiveStreamIds: array expected\\\");\\n message.receiveStreamIds = [];\\n for (var i = 0; i < object.receiveStreamIds.length; ++i)\\n message.receiveStreamIds[i] = object.receiveStreamIds[i] >>> 0;\\n }\\n if (object.sdpOffer != null)\\n message.sdpOffer = String(object.sdpOffer);\\n if (object.audioHost != null)\\n message.audioHost = String(object.audioHost);\\n if (object.audioCheckin != null)\\n message.audioCheckin = Boolean(object.audioCheckin);\\n if (object.audioMuted != null)\\n message.audioMuted = Boolean(object.audioMuted);\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkSubscribeFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {SdkSubscribeFrame} message SdkSubscribeFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkSubscribeFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.arrays || options.defaults) {\\n object.sendStreams = [];\\n object.receiveStreamIds = [];\\n }\\n if (options.defaults) {\\n object.duplex = options.enums === String ? \\\"RX\\\" : 1;\\n object.sdpOffer = \\\"\\\";\\n object.audioHost = \\\"\\\";\\n object.audioCheckin = false;\\n object.audioMuted = false;\\n }\\n if (message.duplex != null && message.hasOwnProperty(\\\"duplex\\\"))\\n object.duplex = options.enums === String ? $root.SdkStreamServiceType[message.duplex] : message.duplex;\\n if (message.sendStreams && message.sendStreams.length) {\\n object.sendStreams = [];\\n for (var j = 0; j < message.sendStreams.length; ++j)\\n object.sendStreams[j] = $root.SdkStreamDescriptor.toObject(message.sendStreams[j], options);\\n }\\n if (message.receiveStreamIds && message.receiveStreamIds.length) {\\n object.receiveStreamIds = [];\\n for (var j = 0; j < message.receiveStreamIds.length; ++j)\\n object.receiveStreamIds[j] = message.receiveStreamIds[j];\\n }\\n if (message.sdpOffer != null && message.hasOwnProperty(\\\"sdpOffer\\\"))\\n object.sdpOffer = message.sdpOffer;\\n if (message.audioHost != null && message.hasOwnProperty(\\\"audioHost\\\"))\\n object.audioHost = message.audioHost;\\n if (message.audioCheckin != null && message.hasOwnProperty(\\\"audioCheckin\\\"))\\n object.audioCheckin = message.audioCheckin;\\n if (message.audioMuted != null && message.hasOwnProperty(\\\"audioMuted\\\"))\\n object.audioMuted = message.audioMuted;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkSubscribeFrame to JSON.\\n * @function toJSON\\n * @memberof SdkSubscribeFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkSubscribeFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkSubscribeFrame;\\n})();\\n\\n$root.SdkSubscribeAckFrame = (function() {\\n\\n /**\\n * Properties of a SdkSubscribeAckFrame.\\n * @exports ISdkSubscribeAckFrame\\n * @interface ISdkSubscribeAckFrame\\n * @property {SdkStreamServiceType|null} [duplex] SdkSubscribeAckFrame duplex\\n * @property {Array.|null} [allocations] SdkSubscribeAckFrame allocations\\n * @property {string|null} [sdpAnswer] SdkSubscribeAckFrame sdpAnswer\\n * @property {Array.|null} [tracks] SdkSubscribeAckFrame tracks\\n */\\n\\n /**\\n * Constructs a new SdkSubscribeAckFrame.\\n * @exports SdkSubscribeAckFrame\\n * @classdesc Represents a SdkSubscribeAckFrame.\\n * @implements ISdkSubscribeAckFrame\\n * @constructor\\n * @param {ISdkSubscribeAckFrame=} [properties] Properties to set\\n */\\n function SdkSubscribeAckFrame(properties) {\\n this.allocations = [];\\n this.tracks = [];\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkSubscribeAckFrame duplex.\\n * @member {SdkStreamServiceType} duplex\\n * @memberof SdkSubscribeAckFrame\\n * @instance\\n */\\n SdkSubscribeAckFrame.prototype.duplex = 1;\\n\\n /**\\n * SdkSubscribeAckFrame allocations.\\n * @member {Array.} allocations\\n * @memberof SdkSubscribeAckFrame\\n * @instance\\n */\\n SdkSubscribeAckFrame.prototype.allocations = $util.emptyArray;\\n\\n /**\\n * SdkSubscribeAckFrame sdpAnswer.\\n * @member {string} sdpAnswer\\n * @memberof SdkSubscribeAckFrame\\n * @instance\\n */\\n SdkSubscribeAckFrame.prototype.sdpAnswer = \\\"\\\";\\n\\n /**\\n * SdkSubscribeAckFrame tracks.\\n * @member {Array.} tracks\\n * @memberof SdkSubscribeAckFrame\\n * @instance\\n */\\n SdkSubscribeAckFrame.prototype.tracks = $util.emptyArray;\\n\\n /**\\n * Creates a new SdkSubscribeAckFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {ISdkSubscribeAckFrame=} [properties] Properties to set\\n * @returns {SdkSubscribeAckFrame} SdkSubscribeAckFrame instance\\n */\\n SdkSubscribeAckFrame.create = function create(properties) {\\n return new SdkSubscribeAckFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkSubscribeAckFrame message. Does not implicitly {@link SdkSubscribeAckFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {ISdkSubscribeAckFrame} message SdkSubscribeAckFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkSubscribeAckFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.duplex != null && message.hasOwnProperty(\\\"duplex\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.duplex);\\n if (message.allocations != null && message.allocations.length)\\n for (var i = 0; i < message.allocations.length; ++i)\\n $root.SdkStreamAllocation.encode(message.allocations[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\\n if (message.sdpAnswer != null && message.hasOwnProperty(\\\"sdpAnswer\\\"))\\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.sdpAnswer);\\n if (message.tracks != null && message.tracks.length)\\n for (var i = 0; i < message.tracks.length; ++i)\\n $root.SdkTrackMapping.encode(message.tracks[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkSubscribeAckFrame message, length delimited. Does not implicitly {@link SdkSubscribeAckFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {ISdkSubscribeAckFrame} message SdkSubscribeAckFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkSubscribeAckFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkSubscribeAckFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkSubscribeAckFrame} SdkSubscribeAckFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkSubscribeAckFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkSubscribeAckFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.duplex = reader.int32();\\n break;\\n case 2:\\n if (!(message.allocations && message.allocations.length))\\n message.allocations = [];\\n message.allocations.push($root.SdkStreamAllocation.decode(reader, reader.uint32()));\\n break;\\n case 3:\\n message.sdpAnswer = reader.string();\\n break;\\n case 4:\\n if (!(message.tracks && message.tracks.length))\\n message.tracks = [];\\n message.tracks.push($root.SdkTrackMapping.decode(reader, reader.uint32()));\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkSubscribeAckFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkSubscribeAckFrame} SdkSubscribeAckFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkSubscribeAckFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkSubscribeAckFrame message.\\n * @function verify\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkSubscribeAckFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.duplex != null && message.hasOwnProperty(\\\"duplex\\\"))\\n switch (message.duplex) {\\n default:\\n return \\\"duplex: enum value expected\\\";\\n case 1:\\n case 2:\\n case 3:\\n break;\\n }\\n if (message.allocations != null && message.hasOwnProperty(\\\"allocations\\\")) {\\n if (!Array.isArray(message.allocations))\\n return \\\"allocations: array expected\\\";\\n for (var i = 0; i < message.allocations.length; ++i) {\\n var error = $root.SdkStreamAllocation.verify(message.allocations[i]);\\n if (error)\\n return \\\"allocations.\\\" + error;\\n }\\n }\\n if (message.sdpAnswer != null && message.hasOwnProperty(\\\"sdpAnswer\\\"))\\n if (!$util.isString(message.sdpAnswer))\\n return \\\"sdpAnswer: string expected\\\";\\n if (message.tracks != null && message.hasOwnProperty(\\\"tracks\\\")) {\\n if (!Array.isArray(message.tracks))\\n return \\\"tracks: array expected\\\";\\n for (var i = 0; i < message.tracks.length; ++i) {\\n var error = $root.SdkTrackMapping.verify(message.tracks[i]);\\n if (error)\\n return \\\"tracks.\\\" + error;\\n }\\n }\\n return null;\\n };\\n\\n /**\\n * Creates a SdkSubscribeAckFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkSubscribeAckFrame} SdkSubscribeAckFrame\\n */\\n SdkSubscribeAckFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkSubscribeAckFrame)\\n return object;\\n var message = new $root.SdkSubscribeAckFrame();\\n switch (object.duplex) {\\n case \\\"RX\\\":\\n case 1:\\n message.duplex = 1;\\n break;\\n case \\\"TX\\\":\\n case 2:\\n message.duplex = 2;\\n break;\\n case \\\"DUPLEX\\\":\\n case 3:\\n message.duplex = 3;\\n break;\\n }\\n if (object.allocations) {\\n if (!Array.isArray(object.allocations))\\n throw TypeError(\\\".SdkSubscribeAckFrame.allocations: array expected\\\");\\n message.allocations = [];\\n for (var i = 0; i < object.allocations.length; ++i) {\\n if (typeof object.allocations[i] !== \\\"object\\\")\\n throw TypeError(\\\".SdkSubscribeAckFrame.allocations: object expected\\\");\\n message.allocations[i] = $root.SdkStreamAllocation.fromObject(object.allocations[i]);\\n }\\n }\\n if (object.sdpAnswer != null)\\n message.sdpAnswer = String(object.sdpAnswer);\\n if (object.tracks) {\\n if (!Array.isArray(object.tracks))\\n throw TypeError(\\\".SdkSubscribeAckFrame.tracks: array expected\\\");\\n message.tracks = [];\\n for (var i = 0; i < object.tracks.length; ++i) {\\n if (typeof object.tracks[i] !== \\\"object\\\")\\n throw TypeError(\\\".SdkSubscribeAckFrame.tracks: object expected\\\");\\n message.tracks[i] = $root.SdkTrackMapping.fromObject(object.tracks[i]);\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkSubscribeAckFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {SdkSubscribeAckFrame} message SdkSubscribeAckFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkSubscribeAckFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.arrays || options.defaults) {\\n object.allocations = [];\\n object.tracks = [];\\n }\\n if (options.defaults) {\\n object.duplex = options.enums === String ? \\\"RX\\\" : 1;\\n object.sdpAnswer = \\\"\\\";\\n }\\n if (message.duplex != null && message.hasOwnProperty(\\\"duplex\\\"))\\n object.duplex = options.enums === String ? $root.SdkStreamServiceType[message.duplex] : message.duplex;\\n if (message.allocations && message.allocations.length) {\\n object.allocations = [];\\n for (var j = 0; j < message.allocations.length; ++j)\\n object.allocations[j] = $root.SdkStreamAllocation.toObject(message.allocations[j], options);\\n }\\n if (message.sdpAnswer != null && message.hasOwnProperty(\\\"sdpAnswer\\\"))\\n object.sdpAnswer = message.sdpAnswer;\\n if (message.tracks && message.tracks.length) {\\n object.tracks = [];\\n for (var j = 0; j < message.tracks.length; ++j)\\n object.tracks[j] = $root.SdkTrackMapping.toObject(message.tracks[j], options);\\n }\\n return object;\\n };\\n\\n /**\\n * Converts this SdkSubscribeAckFrame to JSON.\\n * @function toJSON\\n * @memberof SdkSubscribeAckFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkSubscribeAckFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkSubscribeAckFrame;\\n})();\\n\\n$root.SdkIndexFrame = (function() {\\n\\n /**\\n * Properties of a SdkIndexFrame.\\n * @exports ISdkIndexFrame\\n * @interface ISdkIndexFrame\\n * @property {boolean|null} [atCapacity] SdkIndexFrame atCapacity\\n * @property {Array.|null} [sources] SdkIndexFrame sources\\n * @property {Array.|null} [pausedAtSourceIds] SdkIndexFrame pausedAtSourceIds\\n * @property {number|null} [numParticipants] SdkIndexFrame numParticipants\\n */\\n\\n /**\\n * Constructs a new SdkIndexFrame.\\n * @exports SdkIndexFrame\\n * @classdesc Represents a SdkIndexFrame.\\n * @implements ISdkIndexFrame\\n * @constructor\\n * @param {ISdkIndexFrame=} [properties] Properties to set\\n */\\n function SdkIndexFrame(properties) {\\n this.sources = [];\\n this.pausedAtSourceIds = [];\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkIndexFrame atCapacity.\\n * @member {boolean} atCapacity\\n * @memberof SdkIndexFrame\\n * @instance\\n */\\n SdkIndexFrame.prototype.atCapacity = false;\\n\\n /**\\n * SdkIndexFrame sources.\\n * @member {Array.} sources\\n * @memberof SdkIndexFrame\\n * @instance\\n */\\n SdkIndexFrame.prototype.sources = $util.emptyArray;\\n\\n /**\\n * SdkIndexFrame pausedAtSourceIds.\\n * @member {Array.} pausedAtSourceIds\\n * @memberof SdkIndexFrame\\n * @instance\\n */\\n SdkIndexFrame.prototype.pausedAtSourceIds = $util.emptyArray;\\n\\n /**\\n * SdkIndexFrame numParticipants.\\n * @member {number} numParticipants\\n * @memberof SdkIndexFrame\\n * @instance\\n */\\n SdkIndexFrame.prototype.numParticipants = 0;\\n\\n /**\\n * Creates a new SdkIndexFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {ISdkIndexFrame=} [properties] Properties to set\\n * @returns {SdkIndexFrame} SdkIndexFrame instance\\n */\\n SdkIndexFrame.create = function create(properties) {\\n return new SdkIndexFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkIndexFrame message. Does not implicitly {@link SdkIndexFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {ISdkIndexFrame} message SdkIndexFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkIndexFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.atCapacity != null && message.hasOwnProperty(\\\"atCapacity\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).bool(message.atCapacity);\\n if (message.sources != null && message.sources.length)\\n for (var i = 0; i < message.sources.length; ++i)\\n $root.SdkStreamDescriptor.encode(message.sources[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\\n if (message.pausedAtSourceIds != null && message.pausedAtSourceIds.length)\\n for (var i = 0; i < message.pausedAtSourceIds.length; ++i)\\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.pausedAtSourceIds[i]);\\n if (message.numParticipants != null && message.hasOwnProperty(\\\"numParticipants\\\"))\\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.numParticipants);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkIndexFrame message, length delimited. Does not implicitly {@link SdkIndexFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {ISdkIndexFrame} message SdkIndexFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkIndexFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkIndexFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkIndexFrame} SdkIndexFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkIndexFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkIndexFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.atCapacity = reader.bool();\\n break;\\n case 2:\\n if (!(message.sources && message.sources.length))\\n message.sources = [];\\n message.sources.push($root.SdkStreamDescriptor.decode(reader, reader.uint32()));\\n break;\\n case 3:\\n if (!(message.pausedAtSourceIds && message.pausedAtSourceIds.length))\\n message.pausedAtSourceIds = [];\\n if ((tag & 7) === 2) {\\n var end2 = reader.uint32() + reader.pos;\\n while (reader.pos < end2)\\n message.pausedAtSourceIds.push(reader.uint32());\\n } else\\n message.pausedAtSourceIds.push(reader.uint32());\\n break;\\n case 4:\\n message.numParticipants = reader.uint32();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkIndexFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkIndexFrame} SdkIndexFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkIndexFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkIndexFrame message.\\n * @function verify\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkIndexFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.atCapacity != null && message.hasOwnProperty(\\\"atCapacity\\\"))\\n if (typeof message.atCapacity !== \\\"boolean\\\")\\n return \\\"atCapacity: boolean expected\\\";\\n if (message.sources != null && message.hasOwnProperty(\\\"sources\\\")) {\\n if (!Array.isArray(message.sources))\\n return \\\"sources: array expected\\\";\\n for (var i = 0; i < message.sources.length; ++i) {\\n var error = $root.SdkStreamDescriptor.verify(message.sources[i]);\\n if (error)\\n return \\\"sources.\\\" + error;\\n }\\n }\\n if (message.pausedAtSourceIds != null && message.hasOwnProperty(\\\"pausedAtSourceIds\\\")) {\\n if (!Array.isArray(message.pausedAtSourceIds))\\n return \\\"pausedAtSourceIds: array expected\\\";\\n for (var i = 0; i < message.pausedAtSourceIds.length; ++i)\\n if (!$util.isInteger(message.pausedAtSourceIds[i]))\\n return \\\"pausedAtSourceIds: integer[] expected\\\";\\n }\\n if (message.numParticipants != null && message.hasOwnProperty(\\\"numParticipants\\\"))\\n if (!$util.isInteger(message.numParticipants))\\n return \\\"numParticipants: integer expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkIndexFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkIndexFrame} SdkIndexFrame\\n */\\n SdkIndexFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkIndexFrame)\\n return object;\\n var message = new $root.SdkIndexFrame();\\n if (object.atCapacity != null)\\n message.atCapacity = Boolean(object.atCapacity);\\n if (object.sources) {\\n if (!Array.isArray(object.sources))\\n throw TypeError(\\\".SdkIndexFrame.sources: array expected\\\");\\n message.sources = [];\\n for (var i = 0; i < object.sources.length; ++i) {\\n if (typeof object.sources[i] !== \\\"object\\\")\\n throw TypeError(\\\".SdkIndexFrame.sources: object expected\\\");\\n message.sources[i] = $root.SdkStreamDescriptor.fromObject(object.sources[i]);\\n }\\n }\\n if (object.pausedAtSourceIds) {\\n if (!Array.isArray(object.pausedAtSourceIds))\\n throw TypeError(\\\".SdkIndexFrame.pausedAtSourceIds: array expected\\\");\\n message.pausedAtSourceIds = [];\\n for (var i = 0; i < object.pausedAtSourceIds.length; ++i)\\n message.pausedAtSourceIds[i] = object.pausedAtSourceIds[i] >>> 0;\\n }\\n if (object.numParticipants != null)\\n message.numParticipants = object.numParticipants >>> 0;\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkIndexFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {SdkIndexFrame} message SdkIndexFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkIndexFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.arrays || options.defaults) {\\n object.sources = [];\\n object.pausedAtSourceIds = [];\\n }\\n if (options.defaults) {\\n object.atCapacity = false;\\n object.numParticipants = 0;\\n }\\n if (message.atCapacity != null && message.hasOwnProperty(\\\"atCapacity\\\"))\\n object.atCapacity = message.atCapacity;\\n if (message.sources && message.sources.length) {\\n object.sources = [];\\n for (var j = 0; j < message.sources.length; ++j)\\n object.sources[j] = $root.SdkStreamDescriptor.toObject(message.sources[j], options);\\n }\\n if (message.pausedAtSourceIds && message.pausedAtSourceIds.length) {\\n object.pausedAtSourceIds = [];\\n for (var j = 0; j < message.pausedAtSourceIds.length; ++j)\\n object.pausedAtSourceIds[j] = message.pausedAtSourceIds[j];\\n }\\n if (message.numParticipants != null && message.hasOwnProperty(\\\"numParticipants\\\"))\\n object.numParticipants = message.numParticipants;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkIndexFrame to JSON.\\n * @function toJSON\\n * @memberof SdkIndexFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkIndexFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkIndexFrame;\\n})();\\n\\n$root.SdkPauseResumeFrame = (function() {\\n\\n /**\\n * Properties of a SdkPauseResumeFrame.\\n * @exports ISdkPauseResumeFrame\\n * @interface ISdkPauseResumeFrame\\n * @property {Array.|null} [streamIds] SdkPauseResumeFrame streamIds\\n */\\n\\n /**\\n * Constructs a new SdkPauseResumeFrame.\\n * @exports SdkPauseResumeFrame\\n * @classdesc Represents a SdkPauseResumeFrame.\\n * @implements ISdkPauseResumeFrame\\n * @constructor\\n * @param {ISdkPauseResumeFrame=} [properties] Properties to set\\n */\\n function SdkPauseResumeFrame(properties) {\\n this.streamIds = [];\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkPauseResumeFrame streamIds.\\n * @member {Array.} streamIds\\n * @memberof SdkPauseResumeFrame\\n * @instance\\n */\\n SdkPauseResumeFrame.prototype.streamIds = $util.emptyArray;\\n\\n /**\\n * Creates a new SdkPauseResumeFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkPauseResumeFrame\\n * @static\\n * @param {ISdkPauseResumeFrame=} [properties] Properties to set\\n * @returns {SdkPauseResumeFrame} SdkPauseResumeFrame instance\\n */\\n SdkPauseResumeFrame.create = function create(properties) {\\n return new SdkPauseResumeFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkPauseResumeFrame message. Does not implicitly {@link SdkPauseResumeFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkPauseResumeFrame\\n * @static\\n * @param {ISdkPauseResumeFrame} message SdkPauseResumeFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkPauseResumeFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.streamIds != null && message.streamIds.length)\\n for (var i = 0; i < message.streamIds.length; ++i)\\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.streamIds[i]);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkPauseResumeFrame message, length delimited. Does not implicitly {@link SdkPauseResumeFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkPauseResumeFrame\\n * @static\\n * @param {ISdkPauseResumeFrame} message SdkPauseResumeFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkPauseResumeFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkPauseResumeFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkPauseResumeFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkPauseResumeFrame} SdkPauseResumeFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkPauseResumeFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkPauseResumeFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n if (!(message.streamIds && message.streamIds.length))\\n message.streamIds = [];\\n if ((tag & 7) === 2) {\\n var end2 = reader.uint32() + reader.pos;\\n while (reader.pos < end2)\\n message.streamIds.push(reader.uint32());\\n } else\\n message.streamIds.push(reader.uint32());\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkPauseResumeFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkPauseResumeFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkPauseResumeFrame} SdkPauseResumeFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkPauseResumeFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkPauseResumeFrame message.\\n * @function verify\\n * @memberof SdkPauseResumeFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkPauseResumeFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.streamIds != null && message.hasOwnProperty(\\\"streamIds\\\")) {\\n if (!Array.isArray(message.streamIds))\\n return \\\"streamIds: array expected\\\";\\n for (var i = 0; i < message.streamIds.length; ++i)\\n if (!$util.isInteger(message.streamIds[i]))\\n return \\\"streamIds: integer[] expected\\\";\\n }\\n return null;\\n };\\n\\n /**\\n * Creates a SdkPauseResumeFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkPauseResumeFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkPauseResumeFrame} SdkPauseResumeFrame\\n */\\n SdkPauseResumeFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkPauseResumeFrame)\\n return object;\\n var message = new $root.SdkPauseResumeFrame();\\n if (object.streamIds) {\\n if (!Array.isArray(object.streamIds))\\n throw TypeError(\\\".SdkPauseResumeFrame.streamIds: array expected\\\");\\n message.streamIds = [];\\n for (var i = 0; i < object.streamIds.length; ++i)\\n message.streamIds[i] = object.streamIds[i] >>> 0;\\n }\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkPauseResumeFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkPauseResumeFrame\\n * @static\\n * @param {SdkPauseResumeFrame} message SdkPauseResumeFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkPauseResumeFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.arrays || options.defaults)\\n object.streamIds = [];\\n if (message.streamIds && message.streamIds.length) {\\n object.streamIds = [];\\n for (var j = 0; j < message.streamIds.length; ++j)\\n object.streamIds[j] = message.streamIds[j];\\n }\\n return object;\\n };\\n\\n /**\\n * Converts this SdkPauseResumeFrame to JSON.\\n * @function toJSON\\n * @memberof SdkPauseResumeFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkPauseResumeFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkPauseResumeFrame;\\n})();\\n\\n$root.SdkBitrateFrame = (function() {\\n\\n /**\\n * Properties of a SdkBitrateFrame.\\n * @exports ISdkBitrateFrame\\n * @interface ISdkBitrateFrame\\n * @property {Array.|null} [bitrates] SdkBitrateFrame bitrates\\n */\\n\\n /**\\n * Constructs a new SdkBitrateFrame.\\n * @exports SdkBitrateFrame\\n * @classdesc Represents a SdkBitrateFrame.\\n * @implements ISdkBitrateFrame\\n * @constructor\\n * @param {ISdkBitrateFrame=} [properties] Properties to set\\n */\\n function SdkBitrateFrame(properties) {\\n this.bitrates = [];\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkBitrateFrame bitrates.\\n * @member {Array.} bitrates\\n * @memberof SdkBitrateFrame\\n * @instance\\n */\\n SdkBitrateFrame.prototype.bitrates = $util.emptyArray;\\n\\n /**\\n * Creates a new SdkBitrateFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkBitrateFrame\\n * @static\\n * @param {ISdkBitrateFrame=} [properties] Properties to set\\n * @returns {SdkBitrateFrame} SdkBitrateFrame instance\\n */\\n SdkBitrateFrame.create = function create(properties) {\\n return new SdkBitrateFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkBitrateFrame message. Does not implicitly {@link SdkBitrateFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkBitrateFrame\\n * @static\\n * @param {ISdkBitrateFrame} message SdkBitrateFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkBitrateFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.bitrates != null && message.bitrates.length)\\n for (var i = 0; i < message.bitrates.length; ++i)\\n $root.SdkBitrate.encode(message.bitrates[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkBitrateFrame message, length delimited. Does not implicitly {@link SdkBitrateFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkBitrateFrame\\n * @static\\n * @param {ISdkBitrateFrame} message SdkBitrateFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkBitrateFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkBitrateFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkBitrateFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkBitrateFrame} SdkBitrateFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkBitrateFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkBitrateFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n if (!(message.bitrates && message.bitrates.length))\\n message.bitrates = [];\\n message.bitrates.push($root.SdkBitrate.decode(reader, reader.uint32()));\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkBitrateFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkBitrateFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkBitrateFrame} SdkBitrateFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkBitrateFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkBitrateFrame message.\\n * @function verify\\n * @memberof SdkBitrateFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkBitrateFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.bitrates != null && message.hasOwnProperty(\\\"bitrates\\\")) {\\n if (!Array.isArray(message.bitrates))\\n return \\\"bitrates: array expected\\\";\\n for (var i = 0; i < message.bitrates.length; ++i) {\\n var error = $root.SdkBitrate.verify(message.bitrates[i]);\\n if (error)\\n return \\\"bitrates.\\\" + error;\\n }\\n }\\n return null;\\n };\\n\\n /**\\n * Creates a SdkBitrateFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkBitrateFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkBitrateFrame} SdkBitrateFrame\\n */\\n SdkBitrateFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkBitrateFrame)\\n return object;\\n var message = new $root.SdkBitrateFrame();\\n if (object.bitrates) {\\n if (!Array.isArray(object.bitrates))\\n throw TypeError(\\\".SdkBitrateFrame.bitrates: array expected\\\");\\n message.bitrates = [];\\n for (var i = 0; i < object.bitrates.length; ++i) {\\n if (typeof object.bitrates[i] !== \\\"object\\\")\\n throw TypeError(\\\".SdkBitrateFrame.bitrates: object expected\\\");\\n message.bitrates[i] = $root.SdkBitrate.fromObject(object.bitrates[i]);\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkBitrateFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkBitrateFrame\\n * @static\\n * @param {SdkBitrateFrame} message SdkBitrateFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkBitrateFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.arrays || options.defaults)\\n object.bitrates = [];\\n if (message.bitrates && message.bitrates.length) {\\n object.bitrates = [];\\n for (var j = 0; j < message.bitrates.length; ++j)\\n object.bitrates[j] = $root.SdkBitrate.toObject(message.bitrates[j], options);\\n }\\n return object;\\n };\\n\\n /**\\n * Converts this SdkBitrateFrame to JSON.\\n * @function toJSON\\n * @memberof SdkBitrateFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkBitrateFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkBitrateFrame;\\n})();\\n\\n$root.SdkStreamDescriptor = (function() {\\n\\n /**\\n * Properties of a SdkStreamDescriptor.\\n * @exports ISdkStreamDescriptor\\n * @interface ISdkStreamDescriptor\\n * @property {number|null} [streamId] SdkStreamDescriptor streamId\\n * @property {number|null} [framerate] SdkStreamDescriptor framerate\\n * @property {number|null} [maxBitrateKbps] SdkStreamDescriptor maxBitrateKbps\\n * @property {string|null} [trackLabel] SdkStreamDescriptor trackLabel\\n * @property {number|null} [groupId] SdkStreamDescriptor groupId\\n * @property {number|null} [avgBitrateBps] SdkStreamDescriptor avgBitrateBps\\n * @property {string|null} [attendeeId] SdkStreamDescriptor attendeeId\\n * @property {SdkStreamMediaType|null} [mediaType] SdkStreamDescriptor mediaType\\n * @property {string|null} [externalUserId] SdkStreamDescriptor externalUserId\\n */\\n\\n /**\\n * Constructs a new SdkStreamDescriptor.\\n * @exports SdkStreamDescriptor\\n * @classdesc Represents a SdkStreamDescriptor.\\n * @implements ISdkStreamDescriptor\\n * @constructor\\n * @param {ISdkStreamDescriptor=} [properties] Properties to set\\n */\\n function SdkStreamDescriptor(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkStreamDescriptor streamId.\\n * @member {number} streamId\\n * @memberof SdkStreamDescriptor\\n * @instance\\n */\\n SdkStreamDescriptor.prototype.streamId = 0;\\n\\n /**\\n * SdkStreamDescriptor framerate.\\n * @member {number} framerate\\n * @memberof SdkStreamDescriptor\\n * @instance\\n */\\n SdkStreamDescriptor.prototype.framerate = 0;\\n\\n /**\\n * SdkStreamDescriptor maxBitrateKbps.\\n * @member {number} maxBitrateKbps\\n * @memberof SdkStreamDescriptor\\n * @instance\\n */\\n SdkStreamDescriptor.prototype.maxBitrateKbps = 0;\\n\\n /**\\n * SdkStreamDescriptor trackLabel.\\n * @member {string} trackLabel\\n * @memberof SdkStreamDescriptor\\n * @instance\\n */\\n SdkStreamDescriptor.prototype.trackLabel = \\\"\\\";\\n\\n /**\\n * SdkStreamDescriptor groupId.\\n * @member {number} groupId\\n * @memberof SdkStreamDescriptor\\n * @instance\\n */\\n SdkStreamDescriptor.prototype.groupId = 0;\\n\\n /**\\n * SdkStreamDescriptor avgBitrateBps.\\n * @member {number} avgBitrateBps\\n * @memberof SdkStreamDescriptor\\n * @instance\\n */\\n SdkStreamDescriptor.prototype.avgBitrateBps = 0;\\n\\n /**\\n * SdkStreamDescriptor attendeeId.\\n * @member {string} attendeeId\\n * @memberof SdkStreamDescriptor\\n * @instance\\n */\\n SdkStreamDescriptor.prototype.attendeeId = \\\"\\\";\\n\\n /**\\n * SdkStreamDescriptor mediaType.\\n * @member {SdkStreamMediaType} mediaType\\n * @memberof SdkStreamDescriptor\\n * @instance\\n */\\n SdkStreamDescriptor.prototype.mediaType = 1;\\n\\n /**\\n * SdkStreamDescriptor externalUserId.\\n * @member {string} externalUserId\\n * @memberof SdkStreamDescriptor\\n * @instance\\n */\\n SdkStreamDescriptor.prototype.externalUserId = \\\"\\\";\\n\\n /**\\n * Creates a new SdkStreamDescriptor instance using the specified properties.\\n * @function create\\n * @memberof SdkStreamDescriptor\\n * @static\\n * @param {ISdkStreamDescriptor=} [properties] Properties to set\\n * @returns {SdkStreamDescriptor} SdkStreamDescriptor instance\\n */\\n SdkStreamDescriptor.create = function create(properties) {\\n return new SdkStreamDescriptor(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkStreamDescriptor message. Does not implicitly {@link SdkStreamDescriptor.verify|verify} messages.\\n * @function encode\\n * @memberof SdkStreamDescriptor\\n * @static\\n * @param {ISdkStreamDescriptor} message SdkStreamDescriptor message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkStreamDescriptor.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.streamId != null && message.hasOwnProperty(\\\"streamId\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.streamId);\\n if (message.framerate != null && message.hasOwnProperty(\\\"framerate\\\"))\\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.framerate);\\n if (message.maxBitrateKbps != null && message.hasOwnProperty(\\\"maxBitrateKbps\\\"))\\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.maxBitrateKbps);\\n if (message.trackLabel != null && message.hasOwnProperty(\\\"trackLabel\\\"))\\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.trackLabel);\\n if (message.groupId != null && message.hasOwnProperty(\\\"groupId\\\"))\\n writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.groupId);\\n if (message.avgBitrateBps != null && message.hasOwnProperty(\\\"avgBitrateBps\\\"))\\n writer.uint32(/* id 7, wireType 0 =*/56).uint32(message.avgBitrateBps);\\n if (message.attendeeId != null && message.hasOwnProperty(\\\"attendeeId\\\"))\\n writer.uint32(/* id 8, wireType 2 =*/66).string(message.attendeeId);\\n if (message.mediaType != null && message.hasOwnProperty(\\\"mediaType\\\"))\\n writer.uint32(/* id 9, wireType 0 =*/72).int32(message.mediaType);\\n if (message.externalUserId != null && message.hasOwnProperty(\\\"externalUserId\\\"))\\n writer.uint32(/* id 10, wireType 2 =*/82).string(message.externalUserId);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkStreamDescriptor message, length delimited. Does not implicitly {@link SdkStreamDescriptor.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkStreamDescriptor\\n * @static\\n * @param {ISdkStreamDescriptor} message SdkStreamDescriptor message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkStreamDescriptor.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkStreamDescriptor message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkStreamDescriptor\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkStreamDescriptor} SdkStreamDescriptor\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkStreamDescriptor.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkStreamDescriptor();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.streamId = reader.uint32();\\n break;\\n case 2:\\n message.framerate = reader.uint32();\\n break;\\n case 3:\\n message.maxBitrateKbps = reader.uint32();\\n break;\\n case 4:\\n message.trackLabel = reader.string();\\n break;\\n case 6:\\n message.groupId = reader.uint32();\\n break;\\n case 7:\\n message.avgBitrateBps = reader.uint32();\\n break;\\n case 8:\\n message.attendeeId = reader.string();\\n break;\\n case 9:\\n message.mediaType = reader.int32();\\n break;\\n case 10:\\n message.externalUserId = reader.string();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkStreamDescriptor message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkStreamDescriptor\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkStreamDescriptor} SdkStreamDescriptor\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkStreamDescriptor.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkStreamDescriptor message.\\n * @function verify\\n * @memberof SdkStreamDescriptor\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkStreamDescriptor.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.streamId != null && message.hasOwnProperty(\\\"streamId\\\"))\\n if (!$util.isInteger(message.streamId))\\n return \\\"streamId: integer expected\\\";\\n if (message.framerate != null && message.hasOwnProperty(\\\"framerate\\\"))\\n if (!$util.isInteger(message.framerate))\\n return \\\"framerate: integer expected\\\";\\n if (message.maxBitrateKbps != null && message.hasOwnProperty(\\\"maxBitrateKbps\\\"))\\n if (!$util.isInteger(message.maxBitrateKbps))\\n return \\\"maxBitrateKbps: integer expected\\\";\\n if (message.trackLabel != null && message.hasOwnProperty(\\\"trackLabel\\\"))\\n if (!$util.isString(message.trackLabel))\\n return \\\"trackLabel: string expected\\\";\\n if (message.groupId != null && message.hasOwnProperty(\\\"groupId\\\"))\\n if (!$util.isInteger(message.groupId))\\n return \\\"groupId: integer expected\\\";\\n if (message.avgBitrateBps != null && message.hasOwnProperty(\\\"avgBitrateBps\\\"))\\n if (!$util.isInteger(message.avgBitrateBps))\\n return \\\"avgBitrateBps: integer expected\\\";\\n if (message.attendeeId != null && message.hasOwnProperty(\\\"attendeeId\\\"))\\n if (!$util.isString(message.attendeeId))\\n return \\\"attendeeId: string expected\\\";\\n if (message.mediaType != null && message.hasOwnProperty(\\\"mediaType\\\"))\\n switch (message.mediaType) {\\n default:\\n return \\\"mediaType: enum value expected\\\";\\n case 1:\\n case 2:\\n break;\\n }\\n if (message.externalUserId != null && message.hasOwnProperty(\\\"externalUserId\\\"))\\n if (!$util.isString(message.externalUserId))\\n return \\\"externalUserId: string expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkStreamDescriptor message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkStreamDescriptor\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkStreamDescriptor} SdkStreamDescriptor\\n */\\n SdkStreamDescriptor.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkStreamDescriptor)\\n return object;\\n var message = new $root.SdkStreamDescriptor();\\n if (object.streamId != null)\\n message.streamId = object.streamId >>> 0;\\n if (object.framerate != null)\\n message.framerate = object.framerate >>> 0;\\n if (object.maxBitrateKbps != null)\\n message.maxBitrateKbps = object.maxBitrateKbps >>> 0;\\n if (object.trackLabel != null)\\n message.trackLabel = String(object.trackLabel);\\n if (object.groupId != null)\\n message.groupId = object.groupId >>> 0;\\n if (object.avgBitrateBps != null)\\n message.avgBitrateBps = object.avgBitrateBps >>> 0;\\n if (object.attendeeId != null)\\n message.attendeeId = String(object.attendeeId);\\n switch (object.mediaType) {\\n case \\\"AUDIO\\\":\\n case 1:\\n message.mediaType = 1;\\n break;\\n case \\\"VIDEO\\\":\\n case 2:\\n message.mediaType = 2;\\n break;\\n }\\n if (object.externalUserId != null)\\n message.externalUserId = String(object.externalUserId);\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkStreamDescriptor message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkStreamDescriptor\\n * @static\\n * @param {SdkStreamDescriptor} message SdkStreamDescriptor\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkStreamDescriptor.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n object.streamId = 0;\\n object.framerate = 0;\\n object.maxBitrateKbps = 0;\\n object.trackLabel = \\\"\\\";\\n object.groupId = 0;\\n object.avgBitrateBps = 0;\\n object.attendeeId = \\\"\\\";\\n object.mediaType = options.enums === String ? \\\"AUDIO\\\" : 1;\\n object.externalUserId = \\\"\\\";\\n }\\n if (message.streamId != null && message.hasOwnProperty(\\\"streamId\\\"))\\n object.streamId = message.streamId;\\n if (message.framerate != null && message.hasOwnProperty(\\\"framerate\\\"))\\n object.framerate = message.framerate;\\n if (message.maxBitrateKbps != null && message.hasOwnProperty(\\\"maxBitrateKbps\\\"))\\n object.maxBitrateKbps = message.maxBitrateKbps;\\n if (message.trackLabel != null && message.hasOwnProperty(\\\"trackLabel\\\"))\\n object.trackLabel = message.trackLabel;\\n if (message.groupId != null && message.hasOwnProperty(\\\"groupId\\\"))\\n object.groupId = message.groupId;\\n if (message.avgBitrateBps != null && message.hasOwnProperty(\\\"avgBitrateBps\\\"))\\n object.avgBitrateBps = message.avgBitrateBps;\\n if (message.attendeeId != null && message.hasOwnProperty(\\\"attendeeId\\\"))\\n object.attendeeId = message.attendeeId;\\n if (message.mediaType != null && message.hasOwnProperty(\\\"mediaType\\\"))\\n object.mediaType = options.enums === String ? $root.SdkStreamMediaType[message.mediaType] : message.mediaType;\\n if (message.externalUserId != null && message.hasOwnProperty(\\\"externalUserId\\\"))\\n object.externalUserId = message.externalUserId;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkStreamDescriptor to JSON.\\n * @function toJSON\\n * @memberof SdkStreamDescriptor\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkStreamDescriptor.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkStreamDescriptor;\\n})();\\n\\n$root.SdkStreamAllocation = (function() {\\n\\n /**\\n * Properties of a SdkStreamAllocation.\\n * @exports ISdkStreamAllocation\\n * @interface ISdkStreamAllocation\\n * @property {string|null} [trackLabel] SdkStreamAllocation trackLabel\\n * @property {number|null} [streamId] SdkStreamAllocation streamId\\n * @property {number|null} [groupId] SdkStreamAllocation groupId\\n */\\n\\n /**\\n * Constructs a new SdkStreamAllocation.\\n * @exports SdkStreamAllocation\\n * @classdesc Represents a SdkStreamAllocation.\\n * @implements ISdkStreamAllocation\\n * @constructor\\n * @param {ISdkStreamAllocation=} [properties] Properties to set\\n */\\n function SdkStreamAllocation(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkStreamAllocation trackLabel.\\n * @member {string} trackLabel\\n * @memberof SdkStreamAllocation\\n * @instance\\n */\\n SdkStreamAllocation.prototype.trackLabel = \\\"\\\";\\n\\n /**\\n * SdkStreamAllocation streamId.\\n * @member {number} streamId\\n * @memberof SdkStreamAllocation\\n * @instance\\n */\\n SdkStreamAllocation.prototype.streamId = 0;\\n\\n /**\\n * SdkStreamAllocation groupId.\\n * @member {number} groupId\\n * @memberof SdkStreamAllocation\\n * @instance\\n */\\n SdkStreamAllocation.prototype.groupId = 0;\\n\\n /**\\n * Creates a new SdkStreamAllocation instance using the specified properties.\\n * @function create\\n * @memberof SdkStreamAllocation\\n * @static\\n * @param {ISdkStreamAllocation=} [properties] Properties to set\\n * @returns {SdkStreamAllocation} SdkStreamAllocation instance\\n */\\n SdkStreamAllocation.create = function create(properties) {\\n return new SdkStreamAllocation(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkStreamAllocation message. Does not implicitly {@link SdkStreamAllocation.verify|verify} messages.\\n * @function encode\\n * @memberof SdkStreamAllocation\\n * @static\\n * @param {ISdkStreamAllocation} message SdkStreamAllocation message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkStreamAllocation.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.trackLabel != null && message.hasOwnProperty(\\\"trackLabel\\\"))\\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.trackLabel);\\n if (message.streamId != null && message.hasOwnProperty(\\\"streamId\\\"))\\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.streamId);\\n if (message.groupId != null && message.hasOwnProperty(\\\"groupId\\\"))\\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.groupId);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkStreamAllocation message, length delimited. Does not implicitly {@link SdkStreamAllocation.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkStreamAllocation\\n * @static\\n * @param {ISdkStreamAllocation} message SdkStreamAllocation message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkStreamAllocation.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkStreamAllocation message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkStreamAllocation\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkStreamAllocation} SdkStreamAllocation\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkStreamAllocation.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkStreamAllocation();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.trackLabel = reader.string();\\n break;\\n case 2:\\n message.streamId = reader.uint32();\\n break;\\n case 3:\\n message.groupId = reader.uint32();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkStreamAllocation message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkStreamAllocation\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkStreamAllocation} SdkStreamAllocation\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkStreamAllocation.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkStreamAllocation message.\\n * @function verify\\n * @memberof SdkStreamAllocation\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkStreamAllocation.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.trackLabel != null && message.hasOwnProperty(\\\"trackLabel\\\"))\\n if (!$util.isString(message.trackLabel))\\n return \\\"trackLabel: string expected\\\";\\n if (message.streamId != null && message.hasOwnProperty(\\\"streamId\\\"))\\n if (!$util.isInteger(message.streamId))\\n return \\\"streamId: integer expected\\\";\\n if (message.groupId != null && message.hasOwnProperty(\\\"groupId\\\"))\\n if (!$util.isInteger(message.groupId))\\n return \\\"groupId: integer expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkStreamAllocation message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkStreamAllocation\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkStreamAllocation} SdkStreamAllocation\\n */\\n SdkStreamAllocation.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkStreamAllocation)\\n return object;\\n var message = new $root.SdkStreamAllocation();\\n if (object.trackLabel != null)\\n message.trackLabel = String(object.trackLabel);\\n if (object.streamId != null)\\n message.streamId = object.streamId >>> 0;\\n if (object.groupId != null)\\n message.groupId = object.groupId >>> 0;\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkStreamAllocation message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkStreamAllocation\\n * @static\\n * @param {SdkStreamAllocation} message SdkStreamAllocation\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkStreamAllocation.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n object.trackLabel = \\\"\\\";\\n object.streamId = 0;\\n object.groupId = 0;\\n }\\n if (message.trackLabel != null && message.hasOwnProperty(\\\"trackLabel\\\"))\\n object.trackLabel = message.trackLabel;\\n if (message.streamId != null && message.hasOwnProperty(\\\"streamId\\\"))\\n object.streamId = message.streamId;\\n if (message.groupId != null && message.hasOwnProperty(\\\"groupId\\\"))\\n object.groupId = message.groupId;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkStreamAllocation to JSON.\\n * @function toJSON\\n * @memberof SdkStreamAllocation\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkStreamAllocation.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkStreamAllocation;\\n})();\\n\\n$root.SdkTrackMapping = (function() {\\n\\n /**\\n * Properties of a SdkTrackMapping.\\n * @exports ISdkTrackMapping\\n * @interface ISdkTrackMapping\\n * @property {number|null} [streamId] SdkTrackMapping streamId\\n * @property {number|null} [ssrc] SdkTrackMapping ssrc\\n * @property {string|null} [trackLabel] SdkTrackMapping trackLabel\\n */\\n\\n /**\\n * Constructs a new SdkTrackMapping.\\n * @exports SdkTrackMapping\\n * @classdesc Represents a SdkTrackMapping.\\n * @implements ISdkTrackMapping\\n * @constructor\\n * @param {ISdkTrackMapping=} [properties] Properties to set\\n */\\n function SdkTrackMapping(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkTrackMapping streamId.\\n * @member {number} streamId\\n * @memberof SdkTrackMapping\\n * @instance\\n */\\n SdkTrackMapping.prototype.streamId = 0;\\n\\n /**\\n * SdkTrackMapping ssrc.\\n * @member {number} ssrc\\n * @memberof SdkTrackMapping\\n * @instance\\n */\\n SdkTrackMapping.prototype.ssrc = 0;\\n\\n /**\\n * SdkTrackMapping trackLabel.\\n * @member {string} trackLabel\\n * @memberof SdkTrackMapping\\n * @instance\\n */\\n SdkTrackMapping.prototype.trackLabel = \\\"\\\";\\n\\n /**\\n * Creates a new SdkTrackMapping instance using the specified properties.\\n * @function create\\n * @memberof SdkTrackMapping\\n * @static\\n * @param {ISdkTrackMapping=} [properties] Properties to set\\n * @returns {SdkTrackMapping} SdkTrackMapping instance\\n */\\n SdkTrackMapping.create = function create(properties) {\\n return new SdkTrackMapping(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkTrackMapping message. Does not implicitly {@link SdkTrackMapping.verify|verify} messages.\\n * @function encode\\n * @memberof SdkTrackMapping\\n * @static\\n * @param {ISdkTrackMapping} message SdkTrackMapping message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkTrackMapping.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.streamId != null && message.hasOwnProperty(\\\"streamId\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.streamId);\\n if (message.ssrc != null && message.hasOwnProperty(\\\"ssrc\\\"))\\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.ssrc);\\n if (message.trackLabel != null && message.hasOwnProperty(\\\"trackLabel\\\"))\\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.trackLabel);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkTrackMapping message, length delimited. Does not implicitly {@link SdkTrackMapping.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkTrackMapping\\n * @static\\n * @param {ISdkTrackMapping} message SdkTrackMapping message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkTrackMapping.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkTrackMapping message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkTrackMapping\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkTrackMapping} SdkTrackMapping\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkTrackMapping.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkTrackMapping();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.streamId = reader.uint32();\\n break;\\n case 2:\\n message.ssrc = reader.uint32();\\n break;\\n case 3:\\n message.trackLabel = reader.string();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkTrackMapping message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkTrackMapping\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkTrackMapping} SdkTrackMapping\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkTrackMapping.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkTrackMapping message.\\n * @function verify\\n * @memberof SdkTrackMapping\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkTrackMapping.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.streamId != null && message.hasOwnProperty(\\\"streamId\\\"))\\n if (!$util.isInteger(message.streamId))\\n return \\\"streamId: integer expected\\\";\\n if (message.ssrc != null && message.hasOwnProperty(\\\"ssrc\\\"))\\n if (!$util.isInteger(message.ssrc))\\n return \\\"ssrc: integer expected\\\";\\n if (message.trackLabel != null && message.hasOwnProperty(\\\"trackLabel\\\"))\\n if (!$util.isString(message.trackLabel))\\n return \\\"trackLabel: string expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkTrackMapping message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkTrackMapping\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkTrackMapping} SdkTrackMapping\\n */\\n SdkTrackMapping.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkTrackMapping)\\n return object;\\n var message = new $root.SdkTrackMapping();\\n if (object.streamId != null)\\n message.streamId = object.streamId >>> 0;\\n if (object.ssrc != null)\\n message.ssrc = object.ssrc >>> 0;\\n if (object.trackLabel != null)\\n message.trackLabel = String(object.trackLabel);\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkTrackMapping message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkTrackMapping\\n * @static\\n * @param {SdkTrackMapping} message SdkTrackMapping\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkTrackMapping.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n object.streamId = 0;\\n object.ssrc = 0;\\n object.trackLabel = \\\"\\\";\\n }\\n if (message.streamId != null && message.hasOwnProperty(\\\"streamId\\\"))\\n object.streamId = message.streamId;\\n if (message.ssrc != null && message.hasOwnProperty(\\\"ssrc\\\"))\\n object.ssrc = message.ssrc;\\n if (message.trackLabel != null && message.hasOwnProperty(\\\"trackLabel\\\"))\\n object.trackLabel = message.trackLabel;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkTrackMapping to JSON.\\n * @function toJSON\\n * @memberof SdkTrackMapping\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkTrackMapping.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkTrackMapping;\\n})();\\n\\n$root.SdkBitrate = (function() {\\n\\n /**\\n * Properties of a SdkBitrate.\\n * @exports ISdkBitrate\\n * @interface ISdkBitrate\\n * @property {number|null} [sourceStreamId] SdkBitrate sourceStreamId\\n * @property {number|null} [avgBitrateBps] SdkBitrate avgBitrateBps\\n */\\n\\n /**\\n * Constructs a new SdkBitrate.\\n * @exports SdkBitrate\\n * @classdesc Represents a SdkBitrate.\\n * @implements ISdkBitrate\\n * @constructor\\n * @param {ISdkBitrate=} [properties] Properties to set\\n */\\n function SdkBitrate(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkBitrate sourceStreamId.\\n * @member {number} sourceStreamId\\n * @memberof SdkBitrate\\n * @instance\\n */\\n SdkBitrate.prototype.sourceStreamId = 0;\\n\\n /**\\n * SdkBitrate avgBitrateBps.\\n * @member {number} avgBitrateBps\\n * @memberof SdkBitrate\\n * @instance\\n */\\n SdkBitrate.prototype.avgBitrateBps = 0;\\n\\n /**\\n * Creates a new SdkBitrate instance using the specified properties.\\n * @function create\\n * @memberof SdkBitrate\\n * @static\\n * @param {ISdkBitrate=} [properties] Properties to set\\n * @returns {SdkBitrate} SdkBitrate instance\\n */\\n SdkBitrate.create = function create(properties) {\\n return new SdkBitrate(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkBitrate message. Does not implicitly {@link SdkBitrate.verify|verify} messages.\\n * @function encode\\n * @memberof SdkBitrate\\n * @static\\n * @param {ISdkBitrate} message SdkBitrate message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkBitrate.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.sourceStreamId != null && message.hasOwnProperty(\\\"sourceStreamId\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.sourceStreamId);\\n if (message.avgBitrateBps != null && message.hasOwnProperty(\\\"avgBitrateBps\\\"))\\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.avgBitrateBps);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkBitrate message, length delimited. Does not implicitly {@link SdkBitrate.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkBitrate\\n * @static\\n * @param {ISdkBitrate} message SdkBitrate message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkBitrate.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkBitrate message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkBitrate\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkBitrate} SdkBitrate\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkBitrate.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkBitrate();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.sourceStreamId = reader.uint32();\\n break;\\n case 2:\\n message.avgBitrateBps = reader.uint32();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkBitrate message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkBitrate\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkBitrate} SdkBitrate\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkBitrate.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkBitrate message.\\n * @function verify\\n * @memberof SdkBitrate\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkBitrate.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.sourceStreamId != null && message.hasOwnProperty(\\\"sourceStreamId\\\"))\\n if (!$util.isInteger(message.sourceStreamId))\\n return \\\"sourceStreamId: integer expected\\\";\\n if (message.avgBitrateBps != null && message.hasOwnProperty(\\\"avgBitrateBps\\\"))\\n if (!$util.isInteger(message.avgBitrateBps))\\n return \\\"avgBitrateBps: integer expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkBitrate message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkBitrate\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkBitrate} SdkBitrate\\n */\\n SdkBitrate.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkBitrate)\\n return object;\\n var message = new $root.SdkBitrate();\\n if (object.sourceStreamId != null)\\n message.sourceStreamId = object.sourceStreamId >>> 0;\\n if (object.avgBitrateBps != null)\\n message.avgBitrateBps = object.avgBitrateBps >>> 0;\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkBitrate message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkBitrate\\n * @static\\n * @param {SdkBitrate} message SdkBitrate\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkBitrate.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n object.sourceStreamId = 0;\\n object.avgBitrateBps = 0;\\n }\\n if (message.sourceStreamId != null && message.hasOwnProperty(\\\"sourceStreamId\\\"))\\n object.sourceStreamId = message.sourceStreamId;\\n if (message.avgBitrateBps != null && message.hasOwnProperty(\\\"avgBitrateBps\\\"))\\n object.avgBitrateBps = message.avgBitrateBps;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkBitrate to JSON.\\n * @function toJSON\\n * @memberof SdkBitrate\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkBitrate.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkBitrate;\\n})();\\n\\n$root.SdkAudioControlFrame = (function() {\\n\\n /**\\n * Properties of a SdkAudioControlFrame.\\n * @exports ISdkAudioControlFrame\\n * @interface ISdkAudioControlFrame\\n * @property {boolean|null} [muted] SdkAudioControlFrame muted\\n */\\n\\n /**\\n * Constructs a new SdkAudioControlFrame.\\n * @exports SdkAudioControlFrame\\n * @classdesc Represents a SdkAudioControlFrame.\\n * @implements ISdkAudioControlFrame\\n * @constructor\\n * @param {ISdkAudioControlFrame=} [properties] Properties to set\\n */\\n function SdkAudioControlFrame(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkAudioControlFrame muted.\\n * @member {boolean} muted\\n * @memberof SdkAudioControlFrame\\n * @instance\\n */\\n SdkAudioControlFrame.prototype.muted = false;\\n\\n /**\\n * Creates a new SdkAudioControlFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkAudioControlFrame\\n * @static\\n * @param {ISdkAudioControlFrame=} [properties] Properties to set\\n * @returns {SdkAudioControlFrame} SdkAudioControlFrame instance\\n */\\n SdkAudioControlFrame.create = function create(properties) {\\n return new SdkAudioControlFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkAudioControlFrame message. Does not implicitly {@link SdkAudioControlFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkAudioControlFrame\\n * @static\\n * @param {ISdkAudioControlFrame} message SdkAudioControlFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkAudioControlFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.muted != null && message.hasOwnProperty(\\\"muted\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).bool(message.muted);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkAudioControlFrame message, length delimited. Does not implicitly {@link SdkAudioControlFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkAudioControlFrame\\n * @static\\n * @param {ISdkAudioControlFrame} message SdkAudioControlFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkAudioControlFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkAudioControlFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkAudioControlFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkAudioControlFrame} SdkAudioControlFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkAudioControlFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkAudioControlFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.muted = reader.bool();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkAudioControlFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkAudioControlFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkAudioControlFrame} SdkAudioControlFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkAudioControlFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkAudioControlFrame message.\\n * @function verify\\n * @memberof SdkAudioControlFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkAudioControlFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.muted != null && message.hasOwnProperty(\\\"muted\\\"))\\n if (typeof message.muted !== \\\"boolean\\\")\\n return \\\"muted: boolean expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkAudioControlFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkAudioControlFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkAudioControlFrame} SdkAudioControlFrame\\n */\\n SdkAudioControlFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkAudioControlFrame)\\n return object;\\n var message = new $root.SdkAudioControlFrame();\\n if (object.muted != null)\\n message.muted = Boolean(object.muted);\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkAudioControlFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkAudioControlFrame\\n * @static\\n * @param {SdkAudioControlFrame} message SdkAudioControlFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkAudioControlFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults)\\n object.muted = false;\\n if (message.muted != null && message.hasOwnProperty(\\\"muted\\\"))\\n object.muted = message.muted;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkAudioControlFrame to JSON.\\n * @function toJSON\\n * @memberof SdkAudioControlFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkAudioControlFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkAudioControlFrame;\\n})();\\n\\n$root.SdkAudioMetadataFrame = (function() {\\n\\n /**\\n * Properties of a SdkAudioMetadataFrame.\\n * @exports ISdkAudioMetadataFrame\\n * @interface ISdkAudioMetadataFrame\\n * @property {Array.|null} [attendeeStates] SdkAudioMetadataFrame attendeeStates\\n */\\n\\n /**\\n * Constructs a new SdkAudioMetadataFrame.\\n * @exports SdkAudioMetadataFrame\\n * @classdesc Represents a SdkAudioMetadataFrame.\\n * @implements ISdkAudioMetadataFrame\\n * @constructor\\n * @param {ISdkAudioMetadataFrame=} [properties] Properties to set\\n */\\n function SdkAudioMetadataFrame(properties) {\\n this.attendeeStates = [];\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkAudioMetadataFrame attendeeStates.\\n * @member {Array.} attendeeStates\\n * @memberof SdkAudioMetadataFrame\\n * @instance\\n */\\n SdkAudioMetadataFrame.prototype.attendeeStates = $util.emptyArray;\\n\\n /**\\n * Creates a new SdkAudioMetadataFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkAudioMetadataFrame\\n * @static\\n * @param {ISdkAudioMetadataFrame=} [properties] Properties to set\\n * @returns {SdkAudioMetadataFrame} SdkAudioMetadataFrame instance\\n */\\n SdkAudioMetadataFrame.create = function create(properties) {\\n return new SdkAudioMetadataFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkAudioMetadataFrame message. Does not implicitly {@link SdkAudioMetadataFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkAudioMetadataFrame\\n * @static\\n * @param {ISdkAudioMetadataFrame} message SdkAudioMetadataFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkAudioMetadataFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.attendeeStates != null && message.attendeeStates.length)\\n for (var i = 0; i < message.attendeeStates.length; ++i)\\n $root.SdkAudioAttendeeState.encode(message.attendeeStates[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkAudioMetadataFrame message, length delimited. Does not implicitly {@link SdkAudioMetadataFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkAudioMetadataFrame\\n * @static\\n * @param {ISdkAudioMetadataFrame} message SdkAudioMetadataFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkAudioMetadataFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkAudioMetadataFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkAudioMetadataFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkAudioMetadataFrame} SdkAudioMetadataFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkAudioMetadataFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkAudioMetadataFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n if (!(message.attendeeStates && message.attendeeStates.length))\\n message.attendeeStates = [];\\n message.attendeeStates.push($root.SdkAudioAttendeeState.decode(reader, reader.uint32()));\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkAudioMetadataFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkAudioMetadataFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkAudioMetadataFrame} SdkAudioMetadataFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkAudioMetadataFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkAudioMetadataFrame message.\\n * @function verify\\n * @memberof SdkAudioMetadataFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkAudioMetadataFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.attendeeStates != null && message.hasOwnProperty(\\\"attendeeStates\\\")) {\\n if (!Array.isArray(message.attendeeStates))\\n return \\\"attendeeStates: array expected\\\";\\n for (var i = 0; i < message.attendeeStates.length; ++i) {\\n var error = $root.SdkAudioAttendeeState.verify(message.attendeeStates[i]);\\n if (error)\\n return \\\"attendeeStates.\\\" + error;\\n }\\n }\\n return null;\\n };\\n\\n /**\\n * Creates a SdkAudioMetadataFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkAudioMetadataFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkAudioMetadataFrame} SdkAudioMetadataFrame\\n */\\n SdkAudioMetadataFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkAudioMetadataFrame)\\n return object;\\n var message = new $root.SdkAudioMetadataFrame();\\n if (object.attendeeStates) {\\n if (!Array.isArray(object.attendeeStates))\\n throw TypeError(\\\".SdkAudioMetadataFrame.attendeeStates: array expected\\\");\\n message.attendeeStates = [];\\n for (var i = 0; i < object.attendeeStates.length; ++i) {\\n if (typeof object.attendeeStates[i] !== \\\"object\\\")\\n throw TypeError(\\\".SdkAudioMetadataFrame.attendeeStates: object expected\\\");\\n message.attendeeStates[i] = $root.SdkAudioAttendeeState.fromObject(object.attendeeStates[i]);\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkAudioMetadataFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkAudioMetadataFrame\\n * @static\\n * @param {SdkAudioMetadataFrame} message SdkAudioMetadataFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkAudioMetadataFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.arrays || options.defaults)\\n object.attendeeStates = [];\\n if (message.attendeeStates && message.attendeeStates.length) {\\n object.attendeeStates = [];\\n for (var j = 0; j < message.attendeeStates.length; ++j)\\n object.attendeeStates[j] = $root.SdkAudioAttendeeState.toObject(message.attendeeStates[j], options);\\n }\\n return object;\\n };\\n\\n /**\\n * Converts this SdkAudioMetadataFrame to JSON.\\n * @function toJSON\\n * @memberof SdkAudioMetadataFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkAudioMetadataFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkAudioMetadataFrame;\\n})();\\n\\n$root.SdkAudioAttendeeState = (function() {\\n\\n /**\\n * Properties of a SdkAudioAttendeeState.\\n * @exports ISdkAudioAttendeeState\\n * @interface ISdkAudioAttendeeState\\n * @property {number|null} [audioStreamId] SdkAudioAttendeeState audioStreamId\\n * @property {number|null} [volume] SdkAudioAttendeeState volume\\n * @property {boolean|null} [muted] SdkAudioAttendeeState muted\\n * @property {number|null} [signalStrength] SdkAudioAttendeeState signalStrength\\n */\\n\\n /**\\n * Constructs a new SdkAudioAttendeeState.\\n * @exports SdkAudioAttendeeState\\n * @classdesc Represents a SdkAudioAttendeeState.\\n * @implements ISdkAudioAttendeeState\\n * @constructor\\n * @param {ISdkAudioAttendeeState=} [properties] Properties to set\\n */\\n function SdkAudioAttendeeState(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkAudioAttendeeState audioStreamId.\\n * @member {number} audioStreamId\\n * @memberof SdkAudioAttendeeState\\n * @instance\\n */\\n SdkAudioAttendeeState.prototype.audioStreamId = 0;\\n\\n /**\\n * SdkAudioAttendeeState volume.\\n * @member {number} volume\\n * @memberof SdkAudioAttendeeState\\n * @instance\\n */\\n SdkAudioAttendeeState.prototype.volume = 0;\\n\\n /**\\n * SdkAudioAttendeeState muted.\\n * @member {boolean} muted\\n * @memberof SdkAudioAttendeeState\\n * @instance\\n */\\n SdkAudioAttendeeState.prototype.muted = false;\\n\\n /**\\n * SdkAudioAttendeeState signalStrength.\\n * @member {number} signalStrength\\n * @memberof SdkAudioAttendeeState\\n * @instance\\n */\\n SdkAudioAttendeeState.prototype.signalStrength = 0;\\n\\n /**\\n * Creates a new SdkAudioAttendeeState instance using the specified properties.\\n * @function create\\n * @memberof SdkAudioAttendeeState\\n * @static\\n * @param {ISdkAudioAttendeeState=} [properties] Properties to set\\n * @returns {SdkAudioAttendeeState} SdkAudioAttendeeState instance\\n */\\n SdkAudioAttendeeState.create = function create(properties) {\\n return new SdkAudioAttendeeState(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkAudioAttendeeState message. Does not implicitly {@link SdkAudioAttendeeState.verify|verify} messages.\\n * @function encode\\n * @memberof SdkAudioAttendeeState\\n * @static\\n * @param {ISdkAudioAttendeeState} message SdkAudioAttendeeState message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkAudioAttendeeState.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.audioStreamId != null && message.hasOwnProperty(\\\"audioStreamId\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.audioStreamId);\\n if (message.volume != null && message.hasOwnProperty(\\\"volume\\\"))\\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.volume);\\n if (message.muted != null && message.hasOwnProperty(\\\"muted\\\"))\\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.muted);\\n if (message.signalStrength != null && message.hasOwnProperty(\\\"signalStrength\\\"))\\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.signalStrength);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkAudioAttendeeState message, length delimited. Does not implicitly {@link SdkAudioAttendeeState.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkAudioAttendeeState\\n * @static\\n * @param {ISdkAudioAttendeeState} message SdkAudioAttendeeState message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkAudioAttendeeState.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkAudioAttendeeState message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkAudioAttendeeState\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkAudioAttendeeState} SdkAudioAttendeeState\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkAudioAttendeeState.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkAudioAttendeeState();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.audioStreamId = reader.uint32();\\n break;\\n case 2:\\n message.volume = reader.uint32();\\n break;\\n case 3:\\n message.muted = reader.bool();\\n break;\\n case 4:\\n message.signalStrength = reader.uint32();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkAudioAttendeeState message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkAudioAttendeeState\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkAudioAttendeeState} SdkAudioAttendeeState\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkAudioAttendeeState.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkAudioAttendeeState message.\\n * @function verify\\n * @memberof SdkAudioAttendeeState\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkAudioAttendeeState.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.audioStreamId != null && message.hasOwnProperty(\\\"audioStreamId\\\"))\\n if (!$util.isInteger(message.audioStreamId))\\n return \\\"audioStreamId: integer expected\\\";\\n if (message.volume != null && message.hasOwnProperty(\\\"volume\\\"))\\n if (!$util.isInteger(message.volume))\\n return \\\"volume: integer expected\\\";\\n if (message.muted != null && message.hasOwnProperty(\\\"muted\\\"))\\n if (typeof message.muted !== \\\"boolean\\\")\\n return \\\"muted: boolean expected\\\";\\n if (message.signalStrength != null && message.hasOwnProperty(\\\"signalStrength\\\"))\\n if (!$util.isInteger(message.signalStrength))\\n return \\\"signalStrength: integer expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkAudioAttendeeState message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkAudioAttendeeState\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkAudioAttendeeState} SdkAudioAttendeeState\\n */\\n SdkAudioAttendeeState.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkAudioAttendeeState)\\n return object;\\n var message = new $root.SdkAudioAttendeeState();\\n if (object.audioStreamId != null)\\n message.audioStreamId = object.audioStreamId >>> 0;\\n if (object.volume != null)\\n message.volume = object.volume >>> 0;\\n if (object.muted != null)\\n message.muted = Boolean(object.muted);\\n if (object.signalStrength != null)\\n message.signalStrength = object.signalStrength >>> 0;\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkAudioAttendeeState message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkAudioAttendeeState\\n * @static\\n * @param {SdkAudioAttendeeState} message SdkAudioAttendeeState\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkAudioAttendeeState.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n object.audioStreamId = 0;\\n object.volume = 0;\\n object.muted = false;\\n object.signalStrength = 0;\\n }\\n if (message.audioStreamId != null && message.hasOwnProperty(\\\"audioStreamId\\\"))\\n object.audioStreamId = message.audioStreamId;\\n if (message.volume != null && message.hasOwnProperty(\\\"volume\\\"))\\n object.volume = message.volume;\\n if (message.muted != null && message.hasOwnProperty(\\\"muted\\\"))\\n object.muted = message.muted;\\n if (message.signalStrength != null && message.hasOwnProperty(\\\"signalStrength\\\"))\\n object.signalStrength = message.signalStrength;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkAudioAttendeeState to JSON.\\n * @function toJSON\\n * @memberof SdkAudioAttendeeState\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkAudioAttendeeState.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkAudioAttendeeState;\\n})();\\n\\n$root.SdkAudioStreamIdInfoFrame = (function() {\\n\\n /**\\n * Properties of a SdkAudioStreamIdInfoFrame.\\n * @exports ISdkAudioStreamIdInfoFrame\\n * @interface ISdkAudioStreamIdInfoFrame\\n * @property {Array.|null} [streams] SdkAudioStreamIdInfoFrame streams\\n */\\n\\n /**\\n * Constructs a new SdkAudioStreamIdInfoFrame.\\n * @exports SdkAudioStreamIdInfoFrame\\n * @classdesc Represents a SdkAudioStreamIdInfoFrame.\\n * @implements ISdkAudioStreamIdInfoFrame\\n * @constructor\\n * @param {ISdkAudioStreamIdInfoFrame=} [properties] Properties to set\\n */\\n function SdkAudioStreamIdInfoFrame(properties) {\\n this.streams = [];\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkAudioStreamIdInfoFrame streams.\\n * @member {Array.} streams\\n * @memberof SdkAudioStreamIdInfoFrame\\n * @instance\\n */\\n SdkAudioStreamIdInfoFrame.prototype.streams = $util.emptyArray;\\n\\n /**\\n * Creates a new SdkAudioStreamIdInfoFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkAudioStreamIdInfoFrame\\n * @static\\n * @param {ISdkAudioStreamIdInfoFrame=} [properties] Properties to set\\n * @returns {SdkAudioStreamIdInfoFrame} SdkAudioStreamIdInfoFrame instance\\n */\\n SdkAudioStreamIdInfoFrame.create = function create(properties) {\\n return new SdkAudioStreamIdInfoFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkAudioStreamIdInfoFrame message. Does not implicitly {@link SdkAudioStreamIdInfoFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkAudioStreamIdInfoFrame\\n * @static\\n * @param {ISdkAudioStreamIdInfoFrame} message SdkAudioStreamIdInfoFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkAudioStreamIdInfoFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.streams != null && message.streams.length)\\n for (var i = 0; i < message.streams.length; ++i)\\n $root.SdkAudioStreamIdInfo.encode(message.streams[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkAudioStreamIdInfoFrame message, length delimited. Does not implicitly {@link SdkAudioStreamIdInfoFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkAudioStreamIdInfoFrame\\n * @static\\n * @param {ISdkAudioStreamIdInfoFrame} message SdkAudioStreamIdInfoFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkAudioStreamIdInfoFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkAudioStreamIdInfoFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkAudioStreamIdInfoFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkAudioStreamIdInfoFrame} SdkAudioStreamIdInfoFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkAudioStreamIdInfoFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkAudioStreamIdInfoFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n if (!(message.streams && message.streams.length))\\n message.streams = [];\\n message.streams.push($root.SdkAudioStreamIdInfo.decode(reader, reader.uint32()));\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkAudioStreamIdInfoFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkAudioStreamIdInfoFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkAudioStreamIdInfoFrame} SdkAudioStreamIdInfoFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkAudioStreamIdInfoFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkAudioStreamIdInfoFrame message.\\n * @function verify\\n * @memberof SdkAudioStreamIdInfoFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkAudioStreamIdInfoFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.streams != null && message.hasOwnProperty(\\\"streams\\\")) {\\n if (!Array.isArray(message.streams))\\n return \\\"streams: array expected\\\";\\n for (var i = 0; i < message.streams.length; ++i) {\\n var error = $root.SdkAudioStreamIdInfo.verify(message.streams[i]);\\n if (error)\\n return \\\"streams.\\\" + error;\\n }\\n }\\n return null;\\n };\\n\\n /**\\n * Creates a SdkAudioStreamIdInfoFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkAudioStreamIdInfoFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkAudioStreamIdInfoFrame} SdkAudioStreamIdInfoFrame\\n */\\n SdkAudioStreamIdInfoFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkAudioStreamIdInfoFrame)\\n return object;\\n var message = new $root.SdkAudioStreamIdInfoFrame();\\n if (object.streams) {\\n if (!Array.isArray(object.streams))\\n throw TypeError(\\\".SdkAudioStreamIdInfoFrame.streams: array expected\\\");\\n message.streams = [];\\n for (var i = 0; i < object.streams.length; ++i) {\\n if (typeof object.streams[i] !== \\\"object\\\")\\n throw TypeError(\\\".SdkAudioStreamIdInfoFrame.streams: object expected\\\");\\n message.streams[i] = $root.SdkAudioStreamIdInfo.fromObject(object.streams[i]);\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkAudioStreamIdInfoFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkAudioStreamIdInfoFrame\\n * @static\\n * @param {SdkAudioStreamIdInfoFrame} message SdkAudioStreamIdInfoFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkAudioStreamIdInfoFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.arrays || options.defaults)\\n object.streams = [];\\n if (message.streams && message.streams.length) {\\n object.streams = [];\\n for (var j = 0; j < message.streams.length; ++j)\\n object.streams[j] = $root.SdkAudioStreamIdInfo.toObject(message.streams[j], options);\\n }\\n return object;\\n };\\n\\n /**\\n * Converts this SdkAudioStreamIdInfoFrame to JSON.\\n * @function toJSON\\n * @memberof SdkAudioStreamIdInfoFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkAudioStreamIdInfoFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkAudioStreamIdInfoFrame;\\n})();\\n\\n$root.SdkAudioStreamIdInfo = (function() {\\n\\n /**\\n * Properties of a SdkAudioStreamIdInfo.\\n * @exports ISdkAudioStreamIdInfo\\n * @interface ISdkAudioStreamIdInfo\\n * @property {number|null} [audioStreamId] SdkAudioStreamIdInfo audioStreamId\\n * @property {string|null} [attendeeId] SdkAudioStreamIdInfo attendeeId\\n * @property {boolean|null} [muted] SdkAudioStreamIdInfo muted\\n * @property {string|null} [externalUserId] SdkAudioStreamIdInfo externalUserId\\n * @property {boolean|null} [dropped] SdkAudioStreamIdInfo dropped\\n */\\n\\n /**\\n * Constructs a new SdkAudioStreamIdInfo.\\n * @exports SdkAudioStreamIdInfo\\n * @classdesc Represents a SdkAudioStreamIdInfo.\\n * @implements ISdkAudioStreamIdInfo\\n * @constructor\\n * @param {ISdkAudioStreamIdInfo=} [properties] Properties to set\\n */\\n function SdkAudioStreamIdInfo(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkAudioStreamIdInfo audioStreamId.\\n * @member {number} audioStreamId\\n * @memberof SdkAudioStreamIdInfo\\n * @instance\\n */\\n SdkAudioStreamIdInfo.prototype.audioStreamId = 0;\\n\\n /**\\n * SdkAudioStreamIdInfo attendeeId.\\n * @member {string} attendeeId\\n * @memberof SdkAudioStreamIdInfo\\n * @instance\\n */\\n SdkAudioStreamIdInfo.prototype.attendeeId = \\\"\\\";\\n\\n /**\\n * SdkAudioStreamIdInfo muted.\\n * @member {boolean} muted\\n * @memberof SdkAudioStreamIdInfo\\n * @instance\\n */\\n SdkAudioStreamIdInfo.prototype.muted = false;\\n\\n /**\\n * SdkAudioStreamIdInfo externalUserId.\\n * @member {string} externalUserId\\n * @memberof SdkAudioStreamIdInfo\\n * @instance\\n */\\n SdkAudioStreamIdInfo.prototype.externalUserId = \\\"\\\";\\n\\n /**\\n * SdkAudioStreamIdInfo dropped.\\n * @member {boolean} dropped\\n * @memberof SdkAudioStreamIdInfo\\n * @instance\\n */\\n SdkAudioStreamIdInfo.prototype.dropped = false;\\n\\n /**\\n * Creates a new SdkAudioStreamIdInfo instance using the specified properties.\\n * @function create\\n * @memberof SdkAudioStreamIdInfo\\n * @static\\n * @param {ISdkAudioStreamIdInfo=} [properties] Properties to set\\n * @returns {SdkAudioStreamIdInfo} SdkAudioStreamIdInfo instance\\n */\\n SdkAudioStreamIdInfo.create = function create(properties) {\\n return new SdkAudioStreamIdInfo(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkAudioStreamIdInfo message. Does not implicitly {@link SdkAudioStreamIdInfo.verify|verify} messages.\\n * @function encode\\n * @memberof SdkAudioStreamIdInfo\\n * @static\\n * @param {ISdkAudioStreamIdInfo} message SdkAudioStreamIdInfo message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkAudioStreamIdInfo.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.audioStreamId != null && message.hasOwnProperty(\\\"audioStreamId\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.audioStreamId);\\n if (message.attendeeId != null && message.hasOwnProperty(\\\"attendeeId\\\"))\\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.attendeeId);\\n if (message.muted != null && message.hasOwnProperty(\\\"muted\\\"))\\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.muted);\\n if (message.externalUserId != null && message.hasOwnProperty(\\\"externalUserId\\\"))\\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.externalUserId);\\n if (message.dropped != null && message.hasOwnProperty(\\\"dropped\\\"))\\n writer.uint32(/* id 5, wireType 0 =*/40).bool(message.dropped);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkAudioStreamIdInfo message, length delimited. Does not implicitly {@link SdkAudioStreamIdInfo.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkAudioStreamIdInfo\\n * @static\\n * @param {ISdkAudioStreamIdInfo} message SdkAudioStreamIdInfo message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkAudioStreamIdInfo.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkAudioStreamIdInfo message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkAudioStreamIdInfo\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkAudioStreamIdInfo} SdkAudioStreamIdInfo\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkAudioStreamIdInfo.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkAudioStreamIdInfo();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.audioStreamId = reader.uint32();\\n break;\\n case 2:\\n message.attendeeId = reader.string();\\n break;\\n case 3:\\n message.muted = reader.bool();\\n break;\\n case 4:\\n message.externalUserId = reader.string();\\n break;\\n case 5:\\n message.dropped = reader.bool();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkAudioStreamIdInfo message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkAudioStreamIdInfo\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkAudioStreamIdInfo} SdkAudioStreamIdInfo\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkAudioStreamIdInfo.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkAudioStreamIdInfo message.\\n * @function verify\\n * @memberof SdkAudioStreamIdInfo\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkAudioStreamIdInfo.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.audioStreamId != null && message.hasOwnProperty(\\\"audioStreamId\\\"))\\n if (!$util.isInteger(message.audioStreamId))\\n return \\\"audioStreamId: integer expected\\\";\\n if (message.attendeeId != null && message.hasOwnProperty(\\\"attendeeId\\\"))\\n if (!$util.isString(message.attendeeId))\\n return \\\"attendeeId: string expected\\\";\\n if (message.muted != null && message.hasOwnProperty(\\\"muted\\\"))\\n if (typeof message.muted !== \\\"boolean\\\")\\n return \\\"muted: boolean expected\\\";\\n if (message.externalUserId != null && message.hasOwnProperty(\\\"externalUserId\\\"))\\n if (!$util.isString(message.externalUserId))\\n return \\\"externalUserId: string expected\\\";\\n if (message.dropped != null && message.hasOwnProperty(\\\"dropped\\\"))\\n if (typeof message.dropped !== \\\"boolean\\\")\\n return \\\"dropped: boolean expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkAudioStreamIdInfo message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkAudioStreamIdInfo\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkAudioStreamIdInfo} SdkAudioStreamIdInfo\\n */\\n SdkAudioStreamIdInfo.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkAudioStreamIdInfo)\\n return object;\\n var message = new $root.SdkAudioStreamIdInfo();\\n if (object.audioStreamId != null)\\n message.audioStreamId = object.audioStreamId >>> 0;\\n if (object.attendeeId != null)\\n message.attendeeId = String(object.attendeeId);\\n if (object.muted != null)\\n message.muted = Boolean(object.muted);\\n if (object.externalUserId != null)\\n message.externalUserId = String(object.externalUserId);\\n if (object.dropped != null)\\n message.dropped = Boolean(object.dropped);\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkAudioStreamIdInfo message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkAudioStreamIdInfo\\n * @static\\n * @param {SdkAudioStreamIdInfo} message SdkAudioStreamIdInfo\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkAudioStreamIdInfo.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n object.audioStreamId = 0;\\n object.attendeeId = \\\"\\\";\\n object.muted = false;\\n object.externalUserId = \\\"\\\";\\n object.dropped = false;\\n }\\n if (message.audioStreamId != null && message.hasOwnProperty(\\\"audioStreamId\\\"))\\n object.audioStreamId = message.audioStreamId;\\n if (message.attendeeId != null && message.hasOwnProperty(\\\"attendeeId\\\"))\\n object.attendeeId = message.attendeeId;\\n if (message.muted != null && message.hasOwnProperty(\\\"muted\\\"))\\n object.muted = message.muted;\\n if (message.externalUserId != null && message.hasOwnProperty(\\\"externalUserId\\\"))\\n object.externalUserId = message.externalUserId;\\n if (message.dropped != null && message.hasOwnProperty(\\\"dropped\\\"))\\n object.dropped = message.dropped;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkAudioStreamIdInfo to JSON.\\n * @function toJSON\\n * @memberof SdkAudioStreamIdInfo\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkAudioStreamIdInfo.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkAudioStreamIdInfo;\\n})();\\n\\n/**\\n * SdkPingPongType enum.\\n * @exports SdkPingPongType\\n * @enum {string}\\n * @property {number} PING=1 PING value\\n * @property {number} PONG=2 PONG value\\n */\\n$root.SdkPingPongType = (function() {\\n var valuesById = {}, values = Object.create(valuesById);\\n values[valuesById[1] = \\\"PING\\\"] = 1;\\n values[valuesById[2] = \\\"PONG\\\"] = 2;\\n return values;\\n})();\\n\\n$root.SdkPingPongFrame = (function() {\\n\\n /**\\n * Properties of a SdkPingPongFrame.\\n * @exports ISdkPingPongFrame\\n * @interface ISdkPingPongFrame\\n * @property {SdkPingPongType} type SdkPingPongFrame type\\n * @property {number} pingId SdkPingPongFrame pingId\\n */\\n\\n /**\\n * Constructs a new SdkPingPongFrame.\\n * @exports SdkPingPongFrame\\n * @classdesc Represents a SdkPingPongFrame.\\n * @implements ISdkPingPongFrame\\n * @constructor\\n * @param {ISdkPingPongFrame=} [properties] Properties to set\\n */\\n function SdkPingPongFrame(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkPingPongFrame type.\\n * @member {SdkPingPongType} type\\n * @memberof SdkPingPongFrame\\n * @instance\\n */\\n SdkPingPongFrame.prototype.type = 1;\\n\\n /**\\n * SdkPingPongFrame pingId.\\n * @member {number} pingId\\n * @memberof SdkPingPongFrame\\n * @instance\\n */\\n SdkPingPongFrame.prototype.pingId = 0;\\n\\n /**\\n * Creates a new SdkPingPongFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkPingPongFrame\\n * @static\\n * @param {ISdkPingPongFrame=} [properties] Properties to set\\n * @returns {SdkPingPongFrame} SdkPingPongFrame instance\\n */\\n SdkPingPongFrame.create = function create(properties) {\\n return new SdkPingPongFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkPingPongFrame message. Does not implicitly {@link SdkPingPongFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkPingPongFrame\\n * @static\\n * @param {ISdkPingPongFrame} message SdkPingPongFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkPingPongFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.pingId);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkPingPongFrame message, length delimited. Does not implicitly {@link SdkPingPongFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkPingPongFrame\\n * @static\\n * @param {ISdkPingPongFrame} message SdkPingPongFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkPingPongFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkPingPongFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkPingPongFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkPingPongFrame} SdkPingPongFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkPingPongFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkPingPongFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.type = reader.int32();\\n break;\\n case 2:\\n message.pingId = reader.uint32();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n if (!message.hasOwnProperty(\\\"type\\\"))\\n throw $util.ProtocolError(\\\"missing required 'type'\\\", { instance: message });\\n if (!message.hasOwnProperty(\\\"pingId\\\"))\\n throw $util.ProtocolError(\\\"missing required 'pingId'\\\", { instance: message });\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkPingPongFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkPingPongFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkPingPongFrame} SdkPingPongFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkPingPongFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkPingPongFrame message.\\n * @function verify\\n * @memberof SdkPingPongFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkPingPongFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n switch (message.type) {\\n default:\\n return \\\"type: enum value expected\\\";\\n case 1:\\n case 2:\\n break;\\n }\\n if (!$util.isInteger(message.pingId))\\n return \\\"pingId: integer expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkPingPongFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkPingPongFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkPingPongFrame} SdkPingPongFrame\\n */\\n SdkPingPongFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkPingPongFrame)\\n return object;\\n var message = new $root.SdkPingPongFrame();\\n switch (object.type) {\\n case \\\"PING\\\":\\n case 1:\\n message.type = 1;\\n break;\\n case \\\"PONG\\\":\\n case 2:\\n message.type = 2;\\n break;\\n }\\n if (object.pingId != null)\\n message.pingId = object.pingId >>> 0;\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkPingPongFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkPingPongFrame\\n * @static\\n * @param {SdkPingPongFrame} message SdkPingPongFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkPingPongFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n object.type = options.enums === String ? \\\"PING\\\" : 1;\\n object.pingId = 0;\\n }\\n if (message.type != null && message.hasOwnProperty(\\\"type\\\"))\\n object.type = options.enums === String ? $root.SdkPingPongType[message.type] : message.type;\\n if (message.pingId != null && message.hasOwnProperty(\\\"pingId\\\"))\\n object.pingId = message.pingId;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkPingPongFrame to JSON.\\n * @function toJSON\\n * @memberof SdkPingPongFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkPingPongFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkPingPongFrame;\\n})();\\n\\n$root.SdkAudioStatusFrame = (function() {\\n\\n /**\\n * Properties of a SdkAudioStatusFrame.\\n * @exports ISdkAudioStatusFrame\\n * @interface ISdkAudioStatusFrame\\n * @property {number|null} [audioStatus] SdkAudioStatusFrame audioStatus\\n */\\n\\n /**\\n * Constructs a new SdkAudioStatusFrame.\\n * @exports SdkAudioStatusFrame\\n * @classdesc Represents a SdkAudioStatusFrame.\\n * @implements ISdkAudioStatusFrame\\n * @constructor\\n * @param {ISdkAudioStatusFrame=} [properties] Properties to set\\n */\\n function SdkAudioStatusFrame(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkAudioStatusFrame audioStatus.\\n * @member {number} audioStatus\\n * @memberof SdkAudioStatusFrame\\n * @instance\\n */\\n SdkAudioStatusFrame.prototype.audioStatus = 0;\\n\\n /**\\n * Creates a new SdkAudioStatusFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkAudioStatusFrame\\n * @static\\n * @param {ISdkAudioStatusFrame=} [properties] Properties to set\\n * @returns {SdkAudioStatusFrame} SdkAudioStatusFrame instance\\n */\\n SdkAudioStatusFrame.create = function create(properties) {\\n return new SdkAudioStatusFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkAudioStatusFrame message. Does not implicitly {@link SdkAudioStatusFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkAudioStatusFrame\\n * @static\\n * @param {ISdkAudioStatusFrame} message SdkAudioStatusFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkAudioStatusFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.audioStatus != null && message.hasOwnProperty(\\\"audioStatus\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.audioStatus);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkAudioStatusFrame message, length delimited. Does not implicitly {@link SdkAudioStatusFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkAudioStatusFrame\\n * @static\\n * @param {ISdkAudioStatusFrame} message SdkAudioStatusFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkAudioStatusFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkAudioStatusFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkAudioStatusFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkAudioStatusFrame} SdkAudioStatusFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkAudioStatusFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkAudioStatusFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.audioStatus = reader.uint32();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkAudioStatusFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkAudioStatusFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkAudioStatusFrame} SdkAudioStatusFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkAudioStatusFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkAudioStatusFrame message.\\n * @function verify\\n * @memberof SdkAudioStatusFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkAudioStatusFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.audioStatus != null && message.hasOwnProperty(\\\"audioStatus\\\"))\\n if (!$util.isInteger(message.audioStatus))\\n return \\\"audioStatus: integer expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkAudioStatusFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkAudioStatusFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkAudioStatusFrame} SdkAudioStatusFrame\\n */\\n SdkAudioStatusFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkAudioStatusFrame)\\n return object;\\n var message = new $root.SdkAudioStatusFrame();\\n if (object.audioStatus != null)\\n message.audioStatus = object.audioStatus >>> 0;\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkAudioStatusFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkAudioStatusFrame\\n * @static\\n * @param {SdkAudioStatusFrame} message SdkAudioStatusFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkAudioStatusFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults)\\n object.audioStatus = 0;\\n if (message.audioStatus != null && message.hasOwnProperty(\\\"audioStatus\\\"))\\n object.audioStatus = message.audioStatus;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkAudioStatusFrame to JSON.\\n * @function toJSON\\n * @memberof SdkAudioStatusFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkAudioStatusFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkAudioStatusFrame;\\n})();\\n\\n$root.SdkMetric = (function() {\\n\\n /**\\n * Properties of a SdkMetric.\\n * @exports ISdkMetric\\n * @interface ISdkMetric\\n * @property {SdkMetric.Type|null} [type] SdkMetric type\\n * @property {number|null} [value] SdkMetric value\\n */\\n\\n /**\\n * Constructs a new SdkMetric.\\n * @exports SdkMetric\\n * @classdesc Represents a SdkMetric.\\n * @implements ISdkMetric\\n * @constructor\\n * @param {ISdkMetric=} [properties] Properties to set\\n */\\n function SdkMetric(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkMetric type.\\n * @member {SdkMetric.Type} type\\n * @memberof SdkMetric\\n * @instance\\n */\\n SdkMetric.prototype.type = 1;\\n\\n /**\\n * SdkMetric value.\\n * @member {number} value\\n * @memberof SdkMetric\\n * @instance\\n */\\n SdkMetric.prototype.value = 0;\\n\\n /**\\n * Creates a new SdkMetric instance using the specified properties.\\n * @function create\\n * @memberof SdkMetric\\n * @static\\n * @param {ISdkMetric=} [properties] Properties to set\\n * @returns {SdkMetric} SdkMetric instance\\n */\\n SdkMetric.create = function create(properties) {\\n return new SdkMetric(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkMetric message. Does not implicitly {@link SdkMetric.verify|verify} messages.\\n * @function encode\\n * @memberof SdkMetric\\n * @static\\n * @param {ISdkMetric} message SdkMetric message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkMetric.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.type != null && message.hasOwnProperty(\\\"type\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\\n if (message.value != null && message.hasOwnProperty(\\\"value\\\"))\\n writer.uint32(/* id 2, wireType 1 =*/17).double(message.value);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkMetric message, length delimited. Does not implicitly {@link SdkMetric.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkMetric\\n * @static\\n * @param {ISdkMetric} message SdkMetric message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkMetric.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkMetric message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkMetric\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkMetric} SdkMetric\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkMetric.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkMetric();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.type = reader.int32();\\n break;\\n case 2:\\n message.value = reader.double();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkMetric message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkMetric\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkMetric} SdkMetric\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkMetric.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkMetric message.\\n * @function verify\\n * @memberof SdkMetric\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkMetric.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.type != null && message.hasOwnProperty(\\\"type\\\"))\\n switch (message.type) {\\n default:\\n return \\\"type: enum value expected\\\";\\n case 1:\\n case 2:\\n case 3:\\n case 4:\\n case 5:\\n case 6:\\n case 7:\\n case 8:\\n case 9:\\n case 10:\\n case 11:\\n case 12:\\n case 13:\\n case 14:\\n case 15:\\n case 16:\\n case 17:\\n case 18:\\n case 19:\\n case 20:\\n case 21:\\n case 22:\\n case 23:\\n case 24:\\n case 25:\\n case 26:\\n case 27:\\n case 28:\\n case 29:\\n case 30:\\n case 31:\\n case 32:\\n case 33:\\n case 34:\\n case 35:\\n case 36:\\n case 37:\\n case 38:\\n case 39:\\n case 40:\\n case 41:\\n case 42:\\n case 43:\\n case 44:\\n case 45:\\n case 46:\\n case 47:\\n case 48:\\n case 49:\\n case 66:\\n case 72:\\n break;\\n }\\n if (message.value != null && message.hasOwnProperty(\\\"value\\\"))\\n if (typeof message.value !== \\\"number\\\")\\n return \\\"value: number expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkMetric message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkMetric\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkMetric} SdkMetric\\n */\\n SdkMetric.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkMetric)\\n return object;\\n var message = new $root.SdkMetric();\\n switch (object.type) {\\n case \\\"VIDEO_ACTUAL_ENCODER_BITRATE\\\":\\n case 1:\\n message.type = 1;\\n break;\\n case \\\"VIDEO_AVAILABLE_SEND_BANDWIDTH\\\":\\n case 2:\\n message.type = 2;\\n break;\\n case \\\"VIDEO_RETRANSMIT_BITRATE\\\":\\n case 3:\\n message.type = 3;\\n break;\\n case \\\"VIDEO_AVAILABLE_RECEIVE_BANDWIDTH\\\":\\n case 4:\\n message.type = 4;\\n break;\\n case \\\"VIDEO_TARGET_ENCODER_BITRATE\\\":\\n case 5:\\n message.type = 5;\\n break;\\n case \\\"VIDEO_BUCKET_DELAY_MS\\\":\\n case 6:\\n message.type = 6;\\n break;\\n case \\\"STUN_RTT_MS\\\":\\n case 7:\\n message.type = 7;\\n break;\\n case \\\"SOCKET_DISCARDED_PPS\\\":\\n case 8:\\n message.type = 8;\\n break;\\n case \\\"RTC_MIC_JITTER_MS\\\":\\n case 9:\\n message.type = 9;\\n break;\\n case \\\"RTC_MIC_PPS\\\":\\n case 10:\\n message.type = 10;\\n break;\\n case \\\"RTC_MIC_FRACTION_PACKET_LOST_PERCENT\\\":\\n case 11:\\n message.type = 11;\\n break;\\n case \\\"RTC_MIC_BITRATE\\\":\\n case 12:\\n message.type = 12;\\n break;\\n case \\\"RTC_MIC_RTT_MS\\\":\\n case 13:\\n message.type = 13;\\n break;\\n case \\\"RTC_SPK_PPS\\\":\\n case 14:\\n message.type = 14;\\n break;\\n case \\\"RTC_SPK_FRACTION_PACKET_LOST_PERCENT\\\":\\n case 15:\\n message.type = 15;\\n break;\\n case \\\"RTC_SPK_JITTER_MS\\\":\\n case 16:\\n message.type = 16;\\n break;\\n case \\\"RTC_SPK_FRACTION_DECODER_LOSS_PERCENT\\\":\\n case 17:\\n message.type = 17;\\n break;\\n case \\\"RTC_SPK_BITRATE\\\":\\n case 18:\\n message.type = 18;\\n break;\\n case \\\"RTC_SPK_CURRENT_DELAY_MS\\\":\\n case 19:\\n message.type = 19;\\n break;\\n case \\\"RTC_SPK_JITTER_BUFFER_MS\\\":\\n case 20:\\n message.type = 20;\\n break;\\n case \\\"VIDEO_SENT_RTT_MS\\\":\\n case 21:\\n message.type = 21;\\n break;\\n case \\\"VIDEO_ENCODE_USAGE_PERCENT\\\":\\n case 22:\\n message.type = 22;\\n break;\\n case \\\"VIDEO_NACKS_RECEIVED\\\":\\n case 23:\\n message.type = 23;\\n break;\\n case \\\"VIDEO_PLIS_RECEIVED\\\":\\n case 24:\\n message.type = 24;\\n break;\\n case \\\"VIDEO_AVERAGE_ENCODE_MS\\\":\\n case 25:\\n message.type = 25;\\n break;\\n case \\\"VIDEO_INPUT_FPS\\\":\\n case 26:\\n message.type = 26;\\n break;\\n case \\\"VIDEO_ENCODE_FPS\\\":\\n case 27:\\n message.type = 27;\\n break;\\n case \\\"VIDEO_SENT_FPS\\\":\\n case 28:\\n message.type = 28;\\n break;\\n case \\\"VIDEO_FIRS_RECEIVED\\\":\\n case 29:\\n message.type = 29;\\n break;\\n case \\\"VIDEO_SENT_PPS\\\":\\n case 30:\\n message.type = 30;\\n break;\\n case \\\"VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT\\\":\\n case 31:\\n message.type = 31;\\n break;\\n case \\\"VIDEO_SENT_BITRATE\\\":\\n case 32:\\n message.type = 32;\\n break;\\n case \\\"VIDEO_DROPPED_FPS\\\":\\n case 33:\\n message.type = 33;\\n break;\\n case \\\"VIDEO_TARGET_DELAY_MS\\\":\\n case 34:\\n message.type = 34;\\n break;\\n case \\\"VIDEO_DECODE_MS\\\":\\n case 35:\\n message.type = 35;\\n break;\\n case \\\"VIDEO_OUTPUT_FPS\\\":\\n case 36:\\n message.type = 36;\\n break;\\n case \\\"VIDEO_RECEIVED_PPS\\\":\\n case 37:\\n message.type = 37;\\n break;\\n case \\\"VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT\\\":\\n case 38:\\n message.type = 38;\\n break;\\n case \\\"VIDEO_RENDER_DELAY_MS\\\":\\n case 39:\\n message.type = 39;\\n break;\\n case \\\"VIDEO_RECEIVED_FPS\\\":\\n case 40:\\n message.type = 40;\\n break;\\n case \\\"VIDEO_DECODE_FPS\\\":\\n case 41:\\n message.type = 41;\\n break;\\n case \\\"VIDEO_NACKS_SENT\\\":\\n case 42:\\n message.type = 42;\\n break;\\n case \\\"VIDEO_FIRS_SENT\\\":\\n case 43:\\n message.type = 43;\\n break;\\n case \\\"VIDEO_RECEIVED_BITRATE\\\":\\n case 44:\\n message.type = 44;\\n break;\\n case \\\"VIDEO_CURRENT_DELAY_MS\\\":\\n case 45:\\n message.type = 45;\\n break;\\n case \\\"VIDEO_JITTER_BUFFER_MS\\\":\\n case 46:\\n message.type = 46;\\n break;\\n case \\\"VIDEO_DISCARDED_PPS\\\":\\n case 47:\\n message.type = 47;\\n break;\\n case \\\"VIDEO_PLIS_SENT\\\":\\n case 48:\\n message.type = 48;\\n break;\\n case \\\"VIDEO_RECEIVED_JITTER_MS\\\":\\n case 49:\\n message.type = 49;\\n break;\\n case \\\"VIDEO_SENT_QP_SUM\\\":\\n case 66:\\n message.type = 66;\\n break;\\n case \\\"VIDEO_RECEIVED_QP_SUM\\\":\\n case 72:\\n message.type = 72;\\n break;\\n }\\n if (object.value != null)\\n message.value = Number(object.value);\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkMetric message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkMetric\\n * @static\\n * @param {SdkMetric} message SdkMetric\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkMetric.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n object.type = options.enums === String ? \\\"VIDEO_ACTUAL_ENCODER_BITRATE\\\" : 1;\\n object.value = 0;\\n }\\n if (message.type != null && message.hasOwnProperty(\\\"type\\\"))\\n object.type = options.enums === String ? $root.SdkMetric.Type[message.type] : message.type;\\n if (message.value != null && message.hasOwnProperty(\\\"value\\\"))\\n object.value = options.json && !isFinite(message.value) ? String(message.value) : message.value;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkMetric to JSON.\\n * @function toJSON\\n * @memberof SdkMetric\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkMetric.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n /**\\n * Type enum.\\n * @name SdkMetric.Type\\n * @enum {string}\\n * @property {number} VIDEO_ACTUAL_ENCODER_BITRATE=1 VIDEO_ACTUAL_ENCODER_BITRATE value\\n * @property {number} VIDEO_AVAILABLE_SEND_BANDWIDTH=2 VIDEO_AVAILABLE_SEND_BANDWIDTH value\\n * @property {number} VIDEO_RETRANSMIT_BITRATE=3 VIDEO_RETRANSMIT_BITRATE value\\n * @property {number} VIDEO_AVAILABLE_RECEIVE_BANDWIDTH=4 VIDEO_AVAILABLE_RECEIVE_BANDWIDTH value\\n * @property {number} VIDEO_TARGET_ENCODER_BITRATE=5 VIDEO_TARGET_ENCODER_BITRATE value\\n * @property {number} VIDEO_BUCKET_DELAY_MS=6 VIDEO_BUCKET_DELAY_MS value\\n * @property {number} STUN_RTT_MS=7 STUN_RTT_MS value\\n * @property {number} SOCKET_DISCARDED_PPS=8 SOCKET_DISCARDED_PPS value\\n * @property {number} RTC_MIC_JITTER_MS=9 RTC_MIC_JITTER_MS value\\n * @property {number} RTC_MIC_PPS=10 RTC_MIC_PPS value\\n * @property {number} RTC_MIC_FRACTION_PACKET_LOST_PERCENT=11 RTC_MIC_FRACTION_PACKET_LOST_PERCENT value\\n * @property {number} RTC_MIC_BITRATE=12 RTC_MIC_BITRATE value\\n * @property {number} RTC_MIC_RTT_MS=13 RTC_MIC_RTT_MS value\\n * @property {number} RTC_SPK_PPS=14 RTC_SPK_PPS value\\n * @property {number} RTC_SPK_FRACTION_PACKET_LOST_PERCENT=15 RTC_SPK_FRACTION_PACKET_LOST_PERCENT value\\n * @property {number} RTC_SPK_JITTER_MS=16 RTC_SPK_JITTER_MS value\\n * @property {number} RTC_SPK_FRACTION_DECODER_LOSS_PERCENT=17 RTC_SPK_FRACTION_DECODER_LOSS_PERCENT value\\n * @property {number} RTC_SPK_BITRATE=18 RTC_SPK_BITRATE value\\n * @property {number} RTC_SPK_CURRENT_DELAY_MS=19 RTC_SPK_CURRENT_DELAY_MS value\\n * @property {number} RTC_SPK_JITTER_BUFFER_MS=20 RTC_SPK_JITTER_BUFFER_MS value\\n * @property {number} VIDEO_SENT_RTT_MS=21 VIDEO_SENT_RTT_MS value\\n * @property {number} VIDEO_ENCODE_USAGE_PERCENT=22 VIDEO_ENCODE_USAGE_PERCENT value\\n * @property {number} VIDEO_NACKS_RECEIVED=23 VIDEO_NACKS_RECEIVED value\\n * @property {number} VIDEO_PLIS_RECEIVED=24 VIDEO_PLIS_RECEIVED value\\n * @property {number} VIDEO_AVERAGE_ENCODE_MS=25 VIDEO_AVERAGE_ENCODE_MS value\\n * @property {number} VIDEO_INPUT_FPS=26 VIDEO_INPUT_FPS value\\n * @property {number} VIDEO_ENCODE_FPS=27 VIDEO_ENCODE_FPS value\\n * @property {number} VIDEO_SENT_FPS=28 VIDEO_SENT_FPS value\\n * @property {number} VIDEO_FIRS_RECEIVED=29 VIDEO_FIRS_RECEIVED value\\n * @property {number} VIDEO_SENT_PPS=30 VIDEO_SENT_PPS value\\n * @property {number} VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT=31 VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT value\\n * @property {number} VIDEO_SENT_BITRATE=32 VIDEO_SENT_BITRATE value\\n * @property {number} VIDEO_DROPPED_FPS=33 VIDEO_DROPPED_FPS value\\n * @property {number} VIDEO_TARGET_DELAY_MS=34 VIDEO_TARGET_DELAY_MS value\\n * @property {number} VIDEO_DECODE_MS=35 VIDEO_DECODE_MS value\\n * @property {number} VIDEO_OUTPUT_FPS=36 VIDEO_OUTPUT_FPS value\\n * @property {number} VIDEO_RECEIVED_PPS=37 VIDEO_RECEIVED_PPS value\\n * @property {number} VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT=38 VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT value\\n * @property {number} VIDEO_RENDER_DELAY_MS=39 VIDEO_RENDER_DELAY_MS value\\n * @property {number} VIDEO_RECEIVED_FPS=40 VIDEO_RECEIVED_FPS value\\n * @property {number} VIDEO_DECODE_FPS=41 VIDEO_DECODE_FPS value\\n * @property {number} VIDEO_NACKS_SENT=42 VIDEO_NACKS_SENT value\\n * @property {number} VIDEO_FIRS_SENT=43 VIDEO_FIRS_SENT value\\n * @property {number} VIDEO_RECEIVED_BITRATE=44 VIDEO_RECEIVED_BITRATE value\\n * @property {number} VIDEO_CURRENT_DELAY_MS=45 VIDEO_CURRENT_DELAY_MS value\\n * @property {number} VIDEO_JITTER_BUFFER_MS=46 VIDEO_JITTER_BUFFER_MS value\\n * @property {number} VIDEO_DISCARDED_PPS=47 VIDEO_DISCARDED_PPS value\\n * @property {number} VIDEO_PLIS_SENT=48 VIDEO_PLIS_SENT value\\n * @property {number} VIDEO_RECEIVED_JITTER_MS=49 VIDEO_RECEIVED_JITTER_MS value\\n * @property {number} VIDEO_SENT_QP_SUM=66 VIDEO_SENT_QP_SUM value\\n * @property {number} VIDEO_RECEIVED_QP_SUM=72 VIDEO_RECEIVED_QP_SUM value\\n */\\n SdkMetric.Type = (function() {\\n var valuesById = {}, values = Object.create(valuesById);\\n values[valuesById[1] = \\\"VIDEO_ACTUAL_ENCODER_BITRATE\\\"] = 1;\\n values[valuesById[2] = \\\"VIDEO_AVAILABLE_SEND_BANDWIDTH\\\"] = 2;\\n values[valuesById[3] = \\\"VIDEO_RETRANSMIT_BITRATE\\\"] = 3;\\n values[valuesById[4] = \\\"VIDEO_AVAILABLE_RECEIVE_BANDWIDTH\\\"] = 4;\\n values[valuesById[5] = \\\"VIDEO_TARGET_ENCODER_BITRATE\\\"] = 5;\\n values[valuesById[6] = \\\"VIDEO_BUCKET_DELAY_MS\\\"] = 6;\\n values[valuesById[7] = \\\"STUN_RTT_MS\\\"] = 7;\\n values[valuesById[8] = \\\"SOCKET_DISCARDED_PPS\\\"] = 8;\\n values[valuesById[9] = \\\"RTC_MIC_JITTER_MS\\\"] = 9;\\n values[valuesById[10] = \\\"RTC_MIC_PPS\\\"] = 10;\\n values[valuesById[11] = \\\"RTC_MIC_FRACTION_PACKET_LOST_PERCENT\\\"] = 11;\\n values[valuesById[12] = \\\"RTC_MIC_BITRATE\\\"] = 12;\\n values[valuesById[13] = \\\"RTC_MIC_RTT_MS\\\"] = 13;\\n values[valuesById[14] = \\\"RTC_SPK_PPS\\\"] = 14;\\n values[valuesById[15] = \\\"RTC_SPK_FRACTION_PACKET_LOST_PERCENT\\\"] = 15;\\n values[valuesById[16] = \\\"RTC_SPK_JITTER_MS\\\"] = 16;\\n values[valuesById[17] = \\\"RTC_SPK_FRACTION_DECODER_LOSS_PERCENT\\\"] = 17;\\n values[valuesById[18] = \\\"RTC_SPK_BITRATE\\\"] = 18;\\n values[valuesById[19] = \\\"RTC_SPK_CURRENT_DELAY_MS\\\"] = 19;\\n values[valuesById[20] = \\\"RTC_SPK_JITTER_BUFFER_MS\\\"] = 20;\\n values[valuesById[21] = \\\"VIDEO_SENT_RTT_MS\\\"] = 21;\\n values[valuesById[22] = \\\"VIDEO_ENCODE_USAGE_PERCENT\\\"] = 22;\\n values[valuesById[23] = \\\"VIDEO_NACKS_RECEIVED\\\"] = 23;\\n values[valuesById[24] = \\\"VIDEO_PLIS_RECEIVED\\\"] = 24;\\n values[valuesById[25] = \\\"VIDEO_AVERAGE_ENCODE_MS\\\"] = 25;\\n values[valuesById[26] = \\\"VIDEO_INPUT_FPS\\\"] = 26;\\n values[valuesById[27] = \\\"VIDEO_ENCODE_FPS\\\"] = 27;\\n values[valuesById[28] = \\\"VIDEO_SENT_FPS\\\"] = 28;\\n values[valuesById[29] = \\\"VIDEO_FIRS_RECEIVED\\\"] = 29;\\n values[valuesById[30] = \\\"VIDEO_SENT_PPS\\\"] = 30;\\n values[valuesById[31] = \\\"VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT\\\"] = 31;\\n values[valuesById[32] = \\\"VIDEO_SENT_BITRATE\\\"] = 32;\\n values[valuesById[33] = \\\"VIDEO_DROPPED_FPS\\\"] = 33;\\n values[valuesById[34] = \\\"VIDEO_TARGET_DELAY_MS\\\"] = 34;\\n values[valuesById[35] = \\\"VIDEO_DECODE_MS\\\"] = 35;\\n values[valuesById[36] = \\\"VIDEO_OUTPUT_FPS\\\"] = 36;\\n values[valuesById[37] = \\\"VIDEO_RECEIVED_PPS\\\"] = 37;\\n values[valuesById[38] = \\\"VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT\\\"] = 38;\\n values[valuesById[39] = \\\"VIDEO_RENDER_DELAY_MS\\\"] = 39;\\n values[valuesById[40] = \\\"VIDEO_RECEIVED_FPS\\\"] = 40;\\n values[valuesById[41] = \\\"VIDEO_DECODE_FPS\\\"] = 41;\\n values[valuesById[42] = \\\"VIDEO_NACKS_SENT\\\"] = 42;\\n values[valuesById[43] = \\\"VIDEO_FIRS_SENT\\\"] = 43;\\n values[valuesById[44] = \\\"VIDEO_RECEIVED_BITRATE\\\"] = 44;\\n values[valuesById[45] = \\\"VIDEO_CURRENT_DELAY_MS\\\"] = 45;\\n values[valuesById[46] = \\\"VIDEO_JITTER_BUFFER_MS\\\"] = 46;\\n values[valuesById[47] = \\\"VIDEO_DISCARDED_PPS\\\"] = 47;\\n values[valuesById[48] = \\\"VIDEO_PLIS_SENT\\\"] = 48;\\n values[valuesById[49] = \\\"VIDEO_RECEIVED_JITTER_MS\\\"] = 49;\\n values[valuesById[66] = \\\"VIDEO_SENT_QP_SUM\\\"] = 66;\\n values[valuesById[72] = \\\"VIDEO_RECEIVED_QP_SUM\\\"] = 72;\\n return values;\\n })();\\n\\n return SdkMetric;\\n})();\\n\\n$root.SdkStreamMetricFrame = (function() {\\n\\n /**\\n * Properties of a SdkStreamMetricFrame.\\n * @exports ISdkStreamMetricFrame\\n * @interface ISdkStreamMetricFrame\\n * @property {number|null} [streamId] SdkStreamMetricFrame streamId\\n * @property {number|null} [groupId] SdkStreamMetricFrame groupId\\n * @property {Array.|null} [metrics] SdkStreamMetricFrame metrics\\n */\\n\\n /**\\n * Constructs a new SdkStreamMetricFrame.\\n * @exports SdkStreamMetricFrame\\n * @classdesc Represents a SdkStreamMetricFrame.\\n * @implements ISdkStreamMetricFrame\\n * @constructor\\n * @param {ISdkStreamMetricFrame=} [properties] Properties to set\\n */\\n function SdkStreamMetricFrame(properties) {\\n this.metrics = [];\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkStreamMetricFrame streamId.\\n * @member {number} streamId\\n * @memberof SdkStreamMetricFrame\\n * @instance\\n */\\n SdkStreamMetricFrame.prototype.streamId = 0;\\n\\n /**\\n * SdkStreamMetricFrame groupId.\\n * @member {number} groupId\\n * @memberof SdkStreamMetricFrame\\n * @instance\\n */\\n SdkStreamMetricFrame.prototype.groupId = 0;\\n\\n /**\\n * SdkStreamMetricFrame metrics.\\n * @member {Array.} metrics\\n * @memberof SdkStreamMetricFrame\\n * @instance\\n */\\n SdkStreamMetricFrame.prototype.metrics = $util.emptyArray;\\n\\n /**\\n * Creates a new SdkStreamMetricFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkStreamMetricFrame\\n * @static\\n * @param {ISdkStreamMetricFrame=} [properties] Properties to set\\n * @returns {SdkStreamMetricFrame} SdkStreamMetricFrame instance\\n */\\n SdkStreamMetricFrame.create = function create(properties) {\\n return new SdkStreamMetricFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkStreamMetricFrame message. Does not implicitly {@link SdkStreamMetricFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkStreamMetricFrame\\n * @static\\n * @param {ISdkStreamMetricFrame} message SdkStreamMetricFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkStreamMetricFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.streamId != null && message.hasOwnProperty(\\\"streamId\\\"))\\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.streamId);\\n if (message.groupId != null && message.hasOwnProperty(\\\"groupId\\\"))\\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.groupId);\\n if (message.metrics != null && message.metrics.length)\\n for (var i = 0; i < message.metrics.length; ++i)\\n $root.SdkMetric.encode(message.metrics[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkStreamMetricFrame message, length delimited. Does not implicitly {@link SdkStreamMetricFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkStreamMetricFrame\\n * @static\\n * @param {ISdkStreamMetricFrame} message SdkStreamMetricFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkStreamMetricFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkStreamMetricFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkStreamMetricFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkStreamMetricFrame} SdkStreamMetricFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkStreamMetricFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkStreamMetricFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 3:\\n message.streamId = reader.uint32();\\n break;\\n case 4:\\n message.groupId = reader.uint32();\\n break;\\n case 5:\\n if (!(message.metrics && message.metrics.length))\\n message.metrics = [];\\n message.metrics.push($root.SdkMetric.decode(reader, reader.uint32()));\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkStreamMetricFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkStreamMetricFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkStreamMetricFrame} SdkStreamMetricFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkStreamMetricFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkStreamMetricFrame message.\\n * @function verify\\n * @memberof SdkStreamMetricFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkStreamMetricFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.streamId != null && message.hasOwnProperty(\\\"streamId\\\"))\\n if (!$util.isInteger(message.streamId))\\n return \\\"streamId: integer expected\\\";\\n if (message.groupId != null && message.hasOwnProperty(\\\"groupId\\\"))\\n if (!$util.isInteger(message.groupId))\\n return \\\"groupId: integer expected\\\";\\n if (message.metrics != null && message.hasOwnProperty(\\\"metrics\\\")) {\\n if (!Array.isArray(message.metrics))\\n return \\\"metrics: array expected\\\";\\n for (var i = 0; i < message.metrics.length; ++i) {\\n var error = $root.SdkMetric.verify(message.metrics[i]);\\n if (error)\\n return \\\"metrics.\\\" + error;\\n }\\n }\\n return null;\\n };\\n\\n /**\\n * Creates a SdkStreamMetricFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkStreamMetricFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkStreamMetricFrame} SdkStreamMetricFrame\\n */\\n SdkStreamMetricFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkStreamMetricFrame)\\n return object;\\n var message = new $root.SdkStreamMetricFrame();\\n if (object.streamId != null)\\n message.streamId = object.streamId >>> 0;\\n if (object.groupId != null)\\n message.groupId = object.groupId >>> 0;\\n if (object.metrics) {\\n if (!Array.isArray(object.metrics))\\n throw TypeError(\\\".SdkStreamMetricFrame.metrics: array expected\\\");\\n message.metrics = [];\\n for (var i = 0; i < object.metrics.length; ++i) {\\n if (typeof object.metrics[i] !== \\\"object\\\")\\n throw TypeError(\\\".SdkStreamMetricFrame.metrics: object expected\\\");\\n message.metrics[i] = $root.SdkMetric.fromObject(object.metrics[i]);\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkStreamMetricFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkStreamMetricFrame\\n * @static\\n * @param {SdkStreamMetricFrame} message SdkStreamMetricFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkStreamMetricFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.arrays || options.defaults)\\n object.metrics = [];\\n if (options.defaults) {\\n object.streamId = 0;\\n object.groupId = 0;\\n }\\n if (message.streamId != null && message.hasOwnProperty(\\\"streamId\\\"))\\n object.streamId = message.streamId;\\n if (message.groupId != null && message.hasOwnProperty(\\\"groupId\\\"))\\n object.groupId = message.groupId;\\n if (message.metrics && message.metrics.length) {\\n object.metrics = [];\\n for (var j = 0; j < message.metrics.length; ++j)\\n object.metrics[j] = $root.SdkMetric.toObject(message.metrics[j], options);\\n }\\n return object;\\n };\\n\\n /**\\n * Converts this SdkStreamMetricFrame to JSON.\\n * @function toJSON\\n * @memberof SdkStreamMetricFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkStreamMetricFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkStreamMetricFrame;\\n})();\\n\\n$root.SdkClientMetricFrame = (function() {\\n\\n /**\\n * Properties of a SdkClientMetricFrame.\\n * @exports ISdkClientMetricFrame\\n * @interface ISdkClientMetricFrame\\n * @property {Array.|null} [globalMetrics] SdkClientMetricFrame globalMetrics\\n * @property {Array.|null} [streamMetricFrames] SdkClientMetricFrame streamMetricFrames\\n */\\n\\n /**\\n * Constructs a new SdkClientMetricFrame.\\n * @exports SdkClientMetricFrame\\n * @classdesc Represents a SdkClientMetricFrame.\\n * @implements ISdkClientMetricFrame\\n * @constructor\\n * @param {ISdkClientMetricFrame=} [properties] Properties to set\\n */\\n function SdkClientMetricFrame(properties) {\\n this.globalMetrics = [];\\n this.streamMetricFrames = [];\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkClientMetricFrame globalMetrics.\\n * @member {Array.} globalMetrics\\n * @memberof SdkClientMetricFrame\\n * @instance\\n */\\n SdkClientMetricFrame.prototype.globalMetrics = $util.emptyArray;\\n\\n /**\\n * SdkClientMetricFrame streamMetricFrames.\\n * @member {Array.} streamMetricFrames\\n * @memberof SdkClientMetricFrame\\n * @instance\\n */\\n SdkClientMetricFrame.prototype.streamMetricFrames = $util.emptyArray;\\n\\n /**\\n * Creates a new SdkClientMetricFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkClientMetricFrame\\n * @static\\n * @param {ISdkClientMetricFrame=} [properties] Properties to set\\n * @returns {SdkClientMetricFrame} SdkClientMetricFrame instance\\n */\\n SdkClientMetricFrame.create = function create(properties) {\\n return new SdkClientMetricFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkClientMetricFrame message. Does not implicitly {@link SdkClientMetricFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkClientMetricFrame\\n * @static\\n * @param {ISdkClientMetricFrame} message SdkClientMetricFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkClientMetricFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.globalMetrics != null && message.globalMetrics.length)\\n for (var i = 0; i < message.globalMetrics.length; ++i)\\n $root.SdkMetric.encode(message.globalMetrics[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\\n if (message.streamMetricFrames != null && message.streamMetricFrames.length)\\n for (var i = 0; i < message.streamMetricFrames.length; ++i)\\n $root.SdkStreamMetricFrame.encode(message.streamMetricFrames[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkClientMetricFrame message, length delimited. Does not implicitly {@link SdkClientMetricFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkClientMetricFrame\\n * @static\\n * @param {ISdkClientMetricFrame} message SdkClientMetricFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkClientMetricFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkClientMetricFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkClientMetricFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkClientMetricFrame} SdkClientMetricFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkClientMetricFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkClientMetricFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n if (!(message.globalMetrics && message.globalMetrics.length))\\n message.globalMetrics = [];\\n message.globalMetrics.push($root.SdkMetric.decode(reader, reader.uint32()));\\n break;\\n case 2:\\n if (!(message.streamMetricFrames && message.streamMetricFrames.length))\\n message.streamMetricFrames = [];\\n message.streamMetricFrames.push($root.SdkStreamMetricFrame.decode(reader, reader.uint32()));\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkClientMetricFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkClientMetricFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkClientMetricFrame} SdkClientMetricFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkClientMetricFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkClientMetricFrame message.\\n * @function verify\\n * @memberof SdkClientMetricFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkClientMetricFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.globalMetrics != null && message.hasOwnProperty(\\\"globalMetrics\\\")) {\\n if (!Array.isArray(message.globalMetrics))\\n return \\\"globalMetrics: array expected\\\";\\n for (var i = 0; i < message.globalMetrics.length; ++i) {\\n var error = $root.SdkMetric.verify(message.globalMetrics[i]);\\n if (error)\\n return \\\"globalMetrics.\\\" + error;\\n }\\n }\\n if (message.streamMetricFrames != null && message.hasOwnProperty(\\\"streamMetricFrames\\\")) {\\n if (!Array.isArray(message.streamMetricFrames))\\n return \\\"streamMetricFrames: array expected\\\";\\n for (var i = 0; i < message.streamMetricFrames.length; ++i) {\\n var error = $root.SdkStreamMetricFrame.verify(message.streamMetricFrames[i]);\\n if (error)\\n return \\\"streamMetricFrames.\\\" + error;\\n }\\n }\\n return null;\\n };\\n\\n /**\\n * Creates a SdkClientMetricFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkClientMetricFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkClientMetricFrame} SdkClientMetricFrame\\n */\\n SdkClientMetricFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkClientMetricFrame)\\n return object;\\n var message = new $root.SdkClientMetricFrame();\\n if (object.globalMetrics) {\\n if (!Array.isArray(object.globalMetrics))\\n throw TypeError(\\\".SdkClientMetricFrame.globalMetrics: array expected\\\");\\n message.globalMetrics = [];\\n for (var i = 0; i < object.globalMetrics.length; ++i) {\\n if (typeof object.globalMetrics[i] !== \\\"object\\\")\\n throw TypeError(\\\".SdkClientMetricFrame.globalMetrics: object expected\\\");\\n message.globalMetrics[i] = $root.SdkMetric.fromObject(object.globalMetrics[i]);\\n }\\n }\\n if (object.streamMetricFrames) {\\n if (!Array.isArray(object.streamMetricFrames))\\n throw TypeError(\\\".SdkClientMetricFrame.streamMetricFrames: array expected\\\");\\n message.streamMetricFrames = [];\\n for (var i = 0; i < object.streamMetricFrames.length; ++i) {\\n if (typeof object.streamMetricFrames[i] !== \\\"object\\\")\\n throw TypeError(\\\".SdkClientMetricFrame.streamMetricFrames: object expected\\\");\\n message.streamMetricFrames[i] = $root.SdkStreamMetricFrame.fromObject(object.streamMetricFrames[i]);\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkClientMetricFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkClientMetricFrame\\n * @static\\n * @param {SdkClientMetricFrame} message SdkClientMetricFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkClientMetricFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.arrays || options.defaults) {\\n object.globalMetrics = [];\\n object.streamMetricFrames = [];\\n }\\n if (message.globalMetrics && message.globalMetrics.length) {\\n object.globalMetrics = [];\\n for (var j = 0; j < message.globalMetrics.length; ++j)\\n object.globalMetrics[j] = $root.SdkMetric.toObject(message.globalMetrics[j], options);\\n }\\n if (message.streamMetricFrames && message.streamMetricFrames.length) {\\n object.streamMetricFrames = [];\\n for (var j = 0; j < message.streamMetricFrames.length; ++j)\\n object.streamMetricFrames[j] = $root.SdkStreamMetricFrame.toObject(message.streamMetricFrames[j], options);\\n }\\n return object;\\n };\\n\\n /**\\n * Converts this SdkClientMetricFrame to JSON.\\n * @function toJSON\\n * @memberof SdkClientMetricFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkClientMetricFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkClientMetricFrame;\\n})();\\n\\n$root.SdkDataMessageFrame = (function() {\\n\\n /**\\n * Properties of a SdkDataMessageFrame.\\n * @exports ISdkDataMessageFrame\\n * @interface ISdkDataMessageFrame\\n * @property {Array.|null} [messages] SdkDataMessageFrame messages\\n */\\n\\n /**\\n * Constructs a new SdkDataMessageFrame.\\n * @exports SdkDataMessageFrame\\n * @classdesc Represents a SdkDataMessageFrame.\\n * @implements ISdkDataMessageFrame\\n * @constructor\\n * @param {ISdkDataMessageFrame=} [properties] Properties to set\\n */\\n function SdkDataMessageFrame(properties) {\\n this.messages = [];\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkDataMessageFrame messages.\\n * @member {Array.} messages\\n * @memberof SdkDataMessageFrame\\n * @instance\\n */\\n SdkDataMessageFrame.prototype.messages = $util.emptyArray;\\n\\n /**\\n * Creates a new SdkDataMessageFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkDataMessageFrame\\n * @static\\n * @param {ISdkDataMessageFrame=} [properties] Properties to set\\n * @returns {SdkDataMessageFrame} SdkDataMessageFrame instance\\n */\\n SdkDataMessageFrame.create = function create(properties) {\\n return new SdkDataMessageFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkDataMessageFrame message. Does not implicitly {@link SdkDataMessageFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkDataMessageFrame\\n * @static\\n * @param {ISdkDataMessageFrame} message SdkDataMessageFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkDataMessageFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.messages != null && message.messages.length)\\n for (var i = 0; i < message.messages.length; ++i)\\n $root.SdkDataMessagePayload.encode(message.messages[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkDataMessageFrame message, length delimited. Does not implicitly {@link SdkDataMessageFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkDataMessageFrame\\n * @static\\n * @param {ISdkDataMessageFrame} message SdkDataMessageFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkDataMessageFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkDataMessageFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkDataMessageFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkDataMessageFrame} SdkDataMessageFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkDataMessageFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkDataMessageFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n if (!(message.messages && message.messages.length))\\n message.messages = [];\\n message.messages.push($root.SdkDataMessagePayload.decode(reader, reader.uint32()));\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkDataMessageFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkDataMessageFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkDataMessageFrame} SdkDataMessageFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkDataMessageFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkDataMessageFrame message.\\n * @function verify\\n * @memberof SdkDataMessageFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkDataMessageFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.messages != null && message.hasOwnProperty(\\\"messages\\\")) {\\n if (!Array.isArray(message.messages))\\n return \\\"messages: array expected\\\";\\n for (var i = 0; i < message.messages.length; ++i) {\\n var error = $root.SdkDataMessagePayload.verify(message.messages[i]);\\n if (error)\\n return \\\"messages.\\\" + error;\\n }\\n }\\n return null;\\n };\\n\\n /**\\n * Creates a SdkDataMessageFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkDataMessageFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkDataMessageFrame} SdkDataMessageFrame\\n */\\n SdkDataMessageFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkDataMessageFrame)\\n return object;\\n var message = new $root.SdkDataMessageFrame();\\n if (object.messages) {\\n if (!Array.isArray(object.messages))\\n throw TypeError(\\\".SdkDataMessageFrame.messages: array expected\\\");\\n message.messages = [];\\n for (var i = 0; i < object.messages.length; ++i) {\\n if (typeof object.messages[i] !== \\\"object\\\")\\n throw TypeError(\\\".SdkDataMessageFrame.messages: object expected\\\");\\n message.messages[i] = $root.SdkDataMessagePayload.fromObject(object.messages[i]);\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkDataMessageFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkDataMessageFrame\\n * @static\\n * @param {SdkDataMessageFrame} message SdkDataMessageFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkDataMessageFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.arrays || options.defaults)\\n object.messages = [];\\n if (message.messages && message.messages.length) {\\n object.messages = [];\\n for (var j = 0; j < message.messages.length; ++j)\\n object.messages[j] = $root.SdkDataMessagePayload.toObject(message.messages[j], options);\\n }\\n return object;\\n };\\n\\n /**\\n * Converts this SdkDataMessageFrame to JSON.\\n * @function toJSON\\n * @memberof SdkDataMessageFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkDataMessageFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkDataMessageFrame;\\n})();\\n\\n$root.SdkDataMessagePayload = (function() {\\n\\n /**\\n * Properties of a SdkDataMessagePayload.\\n * @exports ISdkDataMessagePayload\\n * @interface ISdkDataMessagePayload\\n * @property {string|null} [topic] SdkDataMessagePayload topic\\n * @property {Uint8Array|null} [data] SdkDataMessagePayload data\\n * @property {number|null} [lifetimeMs] SdkDataMessagePayload lifetimeMs\\n * @property {string|null} [senderAttendeeId] SdkDataMessagePayload senderAttendeeId\\n * @property {number|Long|null} [ingestTimeNs] SdkDataMessagePayload ingestTimeNs\\n * @property {string|null} [senderExternalUserId] SdkDataMessagePayload senderExternalUserId\\n */\\n\\n /**\\n * Constructs a new SdkDataMessagePayload.\\n * @exports SdkDataMessagePayload\\n * @classdesc Represents a SdkDataMessagePayload.\\n * @implements ISdkDataMessagePayload\\n * @constructor\\n * @param {ISdkDataMessagePayload=} [properties] Properties to set\\n */\\n function SdkDataMessagePayload(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkDataMessagePayload topic.\\n * @member {string} topic\\n * @memberof SdkDataMessagePayload\\n * @instance\\n */\\n SdkDataMessagePayload.prototype.topic = \\\"\\\";\\n\\n /**\\n * SdkDataMessagePayload data.\\n * @member {Uint8Array} data\\n * @memberof SdkDataMessagePayload\\n * @instance\\n */\\n SdkDataMessagePayload.prototype.data = $util.newBuffer([]);\\n\\n /**\\n * SdkDataMessagePayload lifetimeMs.\\n * @member {number} lifetimeMs\\n * @memberof SdkDataMessagePayload\\n * @instance\\n */\\n SdkDataMessagePayload.prototype.lifetimeMs = 0;\\n\\n /**\\n * SdkDataMessagePayload senderAttendeeId.\\n * @member {string} senderAttendeeId\\n * @memberof SdkDataMessagePayload\\n * @instance\\n */\\n SdkDataMessagePayload.prototype.senderAttendeeId = \\\"\\\";\\n\\n /**\\n * SdkDataMessagePayload ingestTimeNs.\\n * @member {number|Long} ingestTimeNs\\n * @memberof SdkDataMessagePayload\\n * @instance\\n */\\n SdkDataMessagePayload.prototype.ingestTimeNs = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\\n\\n /**\\n * SdkDataMessagePayload senderExternalUserId.\\n * @member {string} senderExternalUserId\\n * @memberof SdkDataMessagePayload\\n * @instance\\n */\\n SdkDataMessagePayload.prototype.senderExternalUserId = \\\"\\\";\\n\\n /**\\n * Creates a new SdkDataMessagePayload instance using the specified properties.\\n * @function create\\n * @memberof SdkDataMessagePayload\\n * @static\\n * @param {ISdkDataMessagePayload=} [properties] Properties to set\\n * @returns {SdkDataMessagePayload} SdkDataMessagePayload instance\\n */\\n SdkDataMessagePayload.create = function create(properties) {\\n return new SdkDataMessagePayload(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkDataMessagePayload message. Does not implicitly {@link SdkDataMessagePayload.verify|verify} messages.\\n * @function encode\\n * @memberof SdkDataMessagePayload\\n * @static\\n * @param {ISdkDataMessagePayload} message SdkDataMessagePayload message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkDataMessagePayload.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.topic != null && message.hasOwnProperty(\\\"topic\\\"))\\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.topic);\\n if (message.data != null && message.hasOwnProperty(\\\"data\\\"))\\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\\n if (message.lifetimeMs != null && message.hasOwnProperty(\\\"lifetimeMs\\\"))\\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.lifetimeMs);\\n if (message.senderAttendeeId != null && message.hasOwnProperty(\\\"senderAttendeeId\\\"))\\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.senderAttendeeId);\\n if (message.ingestTimeNs != null && message.hasOwnProperty(\\\"ingestTimeNs\\\"))\\n writer.uint32(/* id 5, wireType 0 =*/40).int64(message.ingestTimeNs);\\n if (message.senderExternalUserId != null && message.hasOwnProperty(\\\"senderExternalUserId\\\"))\\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.senderExternalUserId);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkDataMessagePayload message, length delimited. Does not implicitly {@link SdkDataMessagePayload.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkDataMessagePayload\\n * @static\\n * @param {ISdkDataMessagePayload} message SdkDataMessagePayload message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkDataMessagePayload.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkDataMessagePayload message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkDataMessagePayload\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkDataMessagePayload} SdkDataMessagePayload\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkDataMessagePayload.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkDataMessagePayload();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.topic = reader.string();\\n break;\\n case 2:\\n message.data = reader.bytes();\\n break;\\n case 3:\\n message.lifetimeMs = reader.uint32();\\n break;\\n case 4:\\n message.senderAttendeeId = reader.string();\\n break;\\n case 5:\\n message.ingestTimeNs = reader.int64();\\n break;\\n case 6:\\n message.senderExternalUserId = reader.string();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkDataMessagePayload message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkDataMessagePayload\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkDataMessagePayload} SdkDataMessagePayload\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkDataMessagePayload.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkDataMessagePayload message.\\n * @function verify\\n * @memberof SdkDataMessagePayload\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkDataMessagePayload.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.topic != null && message.hasOwnProperty(\\\"topic\\\"))\\n if (!$util.isString(message.topic))\\n return \\\"topic: string expected\\\";\\n if (message.data != null && message.hasOwnProperty(\\\"data\\\"))\\n if (!(message.data && typeof message.data.length === \\\"number\\\" || $util.isString(message.data)))\\n return \\\"data: buffer expected\\\";\\n if (message.lifetimeMs != null && message.hasOwnProperty(\\\"lifetimeMs\\\"))\\n if (!$util.isInteger(message.lifetimeMs))\\n return \\\"lifetimeMs: integer expected\\\";\\n if (message.senderAttendeeId != null && message.hasOwnProperty(\\\"senderAttendeeId\\\"))\\n if (!$util.isString(message.senderAttendeeId))\\n return \\\"senderAttendeeId: string expected\\\";\\n if (message.ingestTimeNs != null && message.hasOwnProperty(\\\"ingestTimeNs\\\"))\\n if (!$util.isInteger(message.ingestTimeNs) && !(message.ingestTimeNs && $util.isInteger(message.ingestTimeNs.low) && $util.isInteger(message.ingestTimeNs.high)))\\n return \\\"ingestTimeNs: integer|Long expected\\\";\\n if (message.senderExternalUserId != null && message.hasOwnProperty(\\\"senderExternalUserId\\\"))\\n if (!$util.isString(message.senderExternalUserId))\\n return \\\"senderExternalUserId: string expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkDataMessagePayload message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkDataMessagePayload\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkDataMessagePayload} SdkDataMessagePayload\\n */\\n SdkDataMessagePayload.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkDataMessagePayload)\\n return object;\\n var message = new $root.SdkDataMessagePayload();\\n if (object.topic != null)\\n message.topic = String(object.topic);\\n if (object.data != null)\\n if (typeof object.data === \\\"string\\\")\\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\\n else if (object.data.length)\\n message.data = object.data;\\n if (object.lifetimeMs != null)\\n message.lifetimeMs = object.lifetimeMs >>> 0;\\n if (object.senderAttendeeId != null)\\n message.senderAttendeeId = String(object.senderAttendeeId);\\n if (object.ingestTimeNs != null)\\n if ($util.Long)\\n (message.ingestTimeNs = $util.Long.fromValue(object.ingestTimeNs)).unsigned = false;\\n else if (typeof object.ingestTimeNs === \\\"string\\\")\\n message.ingestTimeNs = parseInt(object.ingestTimeNs, 10);\\n else if (typeof object.ingestTimeNs === \\\"number\\\")\\n message.ingestTimeNs = object.ingestTimeNs;\\n else if (typeof object.ingestTimeNs === \\\"object\\\")\\n message.ingestTimeNs = new $util.LongBits(object.ingestTimeNs.low >>> 0, object.ingestTimeNs.high >>> 0).toNumber();\\n if (object.senderExternalUserId != null)\\n message.senderExternalUserId = String(object.senderExternalUserId);\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkDataMessagePayload message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkDataMessagePayload\\n * @static\\n * @param {SdkDataMessagePayload} message SdkDataMessagePayload\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkDataMessagePayload.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n object.topic = \\\"\\\";\\n if (options.bytes === String)\\n object.data = \\\"\\\";\\n else {\\n object.data = [];\\n if (options.bytes !== Array)\\n object.data = $util.newBuffer(object.data);\\n }\\n object.lifetimeMs = 0;\\n object.senderAttendeeId = \\\"\\\";\\n if ($util.Long) {\\n var long = new $util.Long(0, 0, false);\\n object.ingestTimeNs = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\\n } else\\n object.ingestTimeNs = options.longs === String ? \\\"0\\\" : 0;\\n object.senderExternalUserId = \\\"\\\";\\n }\\n if (message.topic != null && message.hasOwnProperty(\\\"topic\\\"))\\n object.topic = message.topic;\\n if (message.data != null && message.hasOwnProperty(\\\"data\\\"))\\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\\n if (message.lifetimeMs != null && message.hasOwnProperty(\\\"lifetimeMs\\\"))\\n object.lifetimeMs = message.lifetimeMs;\\n if (message.senderAttendeeId != null && message.hasOwnProperty(\\\"senderAttendeeId\\\"))\\n object.senderAttendeeId = message.senderAttendeeId;\\n if (message.ingestTimeNs != null && message.hasOwnProperty(\\\"ingestTimeNs\\\"))\\n if (typeof message.ingestTimeNs === \\\"number\\\")\\n object.ingestTimeNs = options.longs === String ? String(message.ingestTimeNs) : message.ingestTimeNs;\\n else\\n object.ingestTimeNs = options.longs === String ? $util.Long.prototype.toString.call(message.ingestTimeNs) : options.longs === Number ? new $util.LongBits(message.ingestTimeNs.low >>> 0, message.ingestTimeNs.high >>> 0).toNumber() : message.ingestTimeNs;\\n if (message.senderExternalUserId != null && message.hasOwnProperty(\\\"senderExternalUserId\\\"))\\n object.senderExternalUserId = message.senderExternalUserId;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkDataMessagePayload to JSON.\\n * @function toJSON\\n * @memberof SdkDataMessagePayload\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkDataMessagePayload.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkDataMessagePayload;\\n})();\\n\\n$root.SdkTurnCredentials = (function() {\\n\\n /**\\n * Properties of a SdkTurnCredentials.\\n * @exports ISdkTurnCredentials\\n * @interface ISdkTurnCredentials\\n * @property {string|null} [username] SdkTurnCredentials username\\n * @property {string|null} [password] SdkTurnCredentials password\\n * @property {number|null} [ttl] SdkTurnCredentials ttl\\n * @property {Array.|null} [uris] SdkTurnCredentials uris\\n */\\n\\n /**\\n * Constructs a new SdkTurnCredentials.\\n * @exports SdkTurnCredentials\\n * @classdesc Represents a SdkTurnCredentials.\\n * @implements ISdkTurnCredentials\\n * @constructor\\n * @param {ISdkTurnCredentials=} [properties] Properties to set\\n */\\n function SdkTurnCredentials(properties) {\\n this.uris = [];\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkTurnCredentials username.\\n * @member {string} username\\n * @memberof SdkTurnCredentials\\n * @instance\\n */\\n SdkTurnCredentials.prototype.username = \\\"\\\";\\n\\n /**\\n * SdkTurnCredentials password.\\n * @member {string} password\\n * @memberof SdkTurnCredentials\\n * @instance\\n */\\n SdkTurnCredentials.prototype.password = \\\"\\\";\\n\\n /**\\n * SdkTurnCredentials ttl.\\n * @member {number} ttl\\n * @memberof SdkTurnCredentials\\n * @instance\\n */\\n SdkTurnCredentials.prototype.ttl = 0;\\n\\n /**\\n * SdkTurnCredentials uris.\\n * @member {Array.} uris\\n * @memberof SdkTurnCredentials\\n * @instance\\n */\\n SdkTurnCredentials.prototype.uris = $util.emptyArray;\\n\\n /**\\n * Creates a new SdkTurnCredentials instance using the specified properties.\\n * @function create\\n * @memberof SdkTurnCredentials\\n * @static\\n * @param {ISdkTurnCredentials=} [properties] Properties to set\\n * @returns {SdkTurnCredentials} SdkTurnCredentials instance\\n */\\n SdkTurnCredentials.create = function create(properties) {\\n return new SdkTurnCredentials(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkTurnCredentials message. Does not implicitly {@link SdkTurnCredentials.verify|verify} messages.\\n * @function encode\\n * @memberof SdkTurnCredentials\\n * @static\\n * @param {ISdkTurnCredentials} message SdkTurnCredentials message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkTurnCredentials.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.username != null && message.hasOwnProperty(\\\"username\\\"))\\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.username);\\n if (message.password != null && message.hasOwnProperty(\\\"password\\\"))\\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.password);\\n if (message.ttl != null && message.hasOwnProperty(\\\"ttl\\\"))\\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.ttl);\\n if (message.uris != null && message.uris.length)\\n for (var i = 0; i < message.uris.length; ++i)\\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.uris[i]);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkTurnCredentials message, length delimited. Does not implicitly {@link SdkTurnCredentials.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkTurnCredentials\\n * @static\\n * @param {ISdkTurnCredentials} message SdkTurnCredentials message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkTurnCredentials.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkTurnCredentials message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkTurnCredentials\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkTurnCredentials} SdkTurnCredentials\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkTurnCredentials.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkTurnCredentials();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.username = reader.string();\\n break;\\n case 2:\\n message.password = reader.string();\\n break;\\n case 3:\\n message.ttl = reader.uint32();\\n break;\\n case 4:\\n if (!(message.uris && message.uris.length))\\n message.uris = [];\\n message.uris.push(reader.string());\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkTurnCredentials message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkTurnCredentials\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkTurnCredentials} SdkTurnCredentials\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkTurnCredentials.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkTurnCredentials message.\\n * @function verify\\n * @memberof SdkTurnCredentials\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkTurnCredentials.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.username != null && message.hasOwnProperty(\\\"username\\\"))\\n if (!$util.isString(message.username))\\n return \\\"username: string expected\\\";\\n if (message.password != null && message.hasOwnProperty(\\\"password\\\"))\\n if (!$util.isString(message.password))\\n return \\\"password: string expected\\\";\\n if (message.ttl != null && message.hasOwnProperty(\\\"ttl\\\"))\\n if (!$util.isInteger(message.ttl))\\n return \\\"ttl: integer expected\\\";\\n if (message.uris != null && message.hasOwnProperty(\\\"uris\\\")) {\\n if (!Array.isArray(message.uris))\\n return \\\"uris: array expected\\\";\\n for (var i = 0; i < message.uris.length; ++i)\\n if (!$util.isString(message.uris[i]))\\n return \\\"uris: string[] expected\\\";\\n }\\n return null;\\n };\\n\\n /**\\n * Creates a SdkTurnCredentials message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkTurnCredentials\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkTurnCredentials} SdkTurnCredentials\\n */\\n SdkTurnCredentials.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkTurnCredentials)\\n return object;\\n var message = new $root.SdkTurnCredentials();\\n if (object.username != null)\\n message.username = String(object.username);\\n if (object.password != null)\\n message.password = String(object.password);\\n if (object.ttl != null)\\n message.ttl = object.ttl >>> 0;\\n if (object.uris) {\\n if (!Array.isArray(object.uris))\\n throw TypeError(\\\".SdkTurnCredentials.uris: array expected\\\");\\n message.uris = [];\\n for (var i = 0; i < object.uris.length; ++i)\\n message.uris[i] = String(object.uris[i]);\\n }\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkTurnCredentials message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkTurnCredentials\\n * @static\\n * @param {SdkTurnCredentials} message SdkTurnCredentials\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkTurnCredentials.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.arrays || options.defaults)\\n object.uris = [];\\n if (options.defaults) {\\n object.username = \\\"\\\";\\n object.password = \\\"\\\";\\n object.ttl = 0;\\n }\\n if (message.username != null && message.hasOwnProperty(\\\"username\\\"))\\n object.username = message.username;\\n if (message.password != null && message.hasOwnProperty(\\\"password\\\"))\\n object.password = message.password;\\n if (message.ttl != null && message.hasOwnProperty(\\\"ttl\\\"))\\n object.ttl = message.ttl;\\n if (message.uris && message.uris.length) {\\n object.uris = [];\\n for (var j = 0; j < message.uris.length; ++j)\\n object.uris[j] = message.uris[j];\\n }\\n return object;\\n };\\n\\n /**\\n * Converts this SdkTurnCredentials to JSON.\\n * @function toJSON\\n * @memberof SdkTurnCredentials\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkTurnCredentials.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkTurnCredentials;\\n})();\\n\\nmodule.exports = $root;\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/sigv4/DefaultSigV4.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/sigv4/DefaultSigV4.js ***!\n \\**********************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst Versioning_1 = __webpack_require__(/*! ../versioning/Versioning */ \\\"./node_modules/amazon-chime-sdk-js/build/versioning/Versioning.js\\\");\\nclass DefaultSigV4 {\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\\n constructor(chimeClient, awsClient) {\\n this.chimeClient = chimeClient;\\n this.awsClient = awsClient;\\n }\\n makeTwoDigits(n) {\\n /* istanbul ignore if */\\n /* istanbul ignore else */\\n if (n > 9) {\\n return n.toString();\\n }\\n else {\\n return '0' + n.toString();\\n }\\n }\\n getDateTimeString() {\\n const d = new Date();\\n return (d.getUTCFullYear() +\\n this.makeTwoDigits(d.getUTCMonth() + 1) +\\n this.makeTwoDigits(d.getUTCDate()) +\\n 'T' +\\n this.makeTwoDigits(d.getUTCHours()) +\\n this.makeTwoDigits(d.getUTCMinutes()) +\\n this.makeTwoDigits(d.getUTCSeconds()) +\\n 'Z');\\n }\\n getDateString(dateTimeString) {\\n return dateTimeString.substring(0, dateTimeString.indexOf('T'));\\n }\\n getSignatureKey(key, date, regionName, serviceName) {\\n const kDate = this.awsClient.util.crypto.hmac('AWS4' + key, date, 'buffer');\\n const kRegion = this.awsClient.util.crypto.hmac(kDate, regionName, 'buffer');\\n const kService = this.awsClient.util.crypto.hmac(kRegion, serviceName, 'buffer');\\n const kSigning = this.awsClient.util.crypto.hmac(kService, 'aws4_request', 'buffer');\\n return kSigning;\\n }\\n signURL(method, scheme, serviceName, hostname, path, payload, queryParams) {\\n const now = this.getDateTimeString();\\n const today = this.getDateString(now);\\n const algorithm = 'AWS4-HMAC-SHA256';\\n const region = this.chimeClient.config.region;\\n const signedHeaders = 'host';\\n const canonicalHeaders = 'host:' + hostname.toLowerCase() + '\\\\n';\\n const credentialScope = today + '/' + region + '/' + serviceName + '/' + 'aws4_request';\\n const credentials = this.chimeClient.config.credentials;\\n let params = new Map();\\n params.set('X-Amz-Algorithm', [algorithm]);\\n params.set('X-Amz-Credential', [\\n encodeURIComponent(credentials.accessKeyId + '/' + credentialScope),\\n ]);\\n params.set('X-Amz-Date', [now]);\\n params.set('X-Amz-Expires', ['10']);\\n params.set('X-Amz-SignedHeaders', ['host']);\\n if (credentials.sessionToken) {\\n params.set('X-Amz-Security-Token', [encodeURIComponent(credentials.sessionToken)]);\\n }\\n params.set(Versioning_1.default.X_AMZN_VERSION, [encodeURIComponent(Versioning_1.default.sdkVersion)]);\\n params.set(Versioning_1.default.X_AMZN_USER_AGENT, [\\n encodeURIComponent(Versioning_1.default.sdkUserAgentLowResolution),\\n ]);\\n queryParams === null || queryParams === void 0 ? void 0 : queryParams.forEach((values, key) => {\\n const encodedKey = encodeURIComponent(key);\\n values.sort().forEach((value) => {\\n if (!params.has(encodedKey)) {\\n params.set(encodedKey, []);\\n }\\n params.get(encodedKey).push(encodeURIComponent(value));\\n });\\n });\\n let canonicalQuerystring = '';\\n params = new Map([...params.entries()].sort());\\n params.forEach((values, key) => {\\n values.forEach(value => {\\n if (canonicalQuerystring.length) {\\n canonicalQuerystring += '&';\\n }\\n canonicalQuerystring += key + '=' + value;\\n });\\n });\\n const canonicalRequest = method +\\n '\\\\n' +\\n path +\\n '\\\\n' +\\n canonicalQuerystring +\\n '\\\\n' +\\n canonicalHeaders +\\n '\\\\n' +\\n signedHeaders +\\n '\\\\n' +\\n this.awsClient.util.crypto.sha256(payload, 'hex');\\n const hashedCanonicalRequest = this.awsClient.util.crypto.sha256(canonicalRequest, 'hex');\\n const stringToSign = 'AWS4-HMAC-SHA256\\\\n' +\\n now +\\n '\\\\n' +\\n today +\\n '/' +\\n region +\\n '/' +\\n serviceName +\\n '/aws4_request\\\\n' +\\n hashedCanonicalRequest;\\n const signingKey = this.getSignatureKey(credentials.secretAccessKey, today, region, serviceName);\\n const signature = this.awsClient.util.crypto.hmac(signingKey, stringToSign, 'hex');\\n const finalParams = canonicalQuerystring + '&X-Amz-Signature=' + signature;\\n return scheme + '://' + hostname + path + '?' + finalParams;\\n }\\n}\\nexports[\\\"default\\\"] = DefaultSigV4;\\n//# sourceMappingURL=DefaultSigV4.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/sigv4/DefaultSigV4.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/simulcastlayers/SimulcastLayers.js\":\n/*!***********************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/simulcastlayers/SimulcastLayers.js ***!\n \\***********************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.SimulcastLayers = void 0;\\n/**\\n * [[SimulcastLayers]] represents simulcast layers for selected simulcast video streams.\\n */\\nvar SimulcastLayers;\\n(function (SimulcastLayers) {\\n /**\\n * Low resolution video stream.\\n */\\n SimulcastLayers[SimulcastLayers[\\\"Low\\\"] = 0] = \\\"Low\\\";\\n /**\\n * Low and medium resolution video streams.\\n */\\n SimulcastLayers[SimulcastLayers[\\\"LowAndMedium\\\"] = 1] = \\\"LowAndMedium\\\";\\n /**\\n * Low and high resolution video streams.\\n */\\n SimulcastLayers[SimulcastLayers[\\\"LowAndHigh\\\"] = 2] = \\\"LowAndHigh\\\";\\n /**\\n * Medium resolution video stream.\\n */\\n SimulcastLayers[SimulcastLayers[\\\"Medium\\\"] = 3] = \\\"Medium\\\";\\n /**\\n * Medium and high resolution video streams.\\n */\\n SimulcastLayers[SimulcastLayers[\\\"MediumAndHigh\\\"] = 4] = \\\"MediumAndHigh\\\";\\n /**\\n * High resolution video stream.\\n */\\n SimulcastLayers[SimulcastLayers[\\\"High\\\"] = 5] = \\\"High\\\";\\n})(SimulcastLayers = exports.SimulcastLayers || (exports.SimulcastLayers = {}));\\nexports[\\\"default\\\"] = SimulcastLayers;\\n//# sourceMappingURL=SimulcastLayers.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/simulcastlayers/SimulcastLayers.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/statscollector/AudioLogEvent.js\":\n/*!********************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/statscollector/AudioLogEvent.js ***!\n \\********************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.AudioLogEvent = void 0;\\nvar AudioLogEvent;\\n(function (AudioLogEvent) {\\n AudioLogEvent[AudioLogEvent[\\\"DeviceChanged\\\"] = 0] = \\\"DeviceChanged\\\";\\n AudioLogEvent[AudioLogEvent[\\\"MutedLocal\\\"] = 1] = \\\"MutedLocal\\\";\\n AudioLogEvent[AudioLogEvent[\\\"UnmutedLocal\\\"] = 2] = \\\"UnmutedLocal\\\";\\n AudioLogEvent[AudioLogEvent[\\\"Connected\\\"] = 3] = \\\"Connected\\\";\\n AudioLogEvent[AudioLogEvent[\\\"ConnectFailed\\\"] = 4] = \\\"ConnectFailed\\\";\\n AudioLogEvent[AudioLogEvent[\\\"RedmicStartLoss\\\"] = 5] = \\\"RedmicStartLoss\\\";\\n AudioLogEvent[AudioLogEvent[\\\"RedmicEndLoss\\\"] = 6] = \\\"RedmicEndLoss\\\";\\n})(AudioLogEvent = exports.AudioLogEvent || (exports.AudioLogEvent = {}));\\nexports[\\\"default\\\"] = AudioLogEvent;\\n//# sourceMappingURL=AudioLogEvent.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/statscollector/AudioLogEvent.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/statscollector/DefaultStatsCollector.js\":\n/*!****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/statscollector/DefaultStatsCollector.js ***!\n \\****************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst ClientMetricReportDirection_1 = __webpack_require__(/*! ../clientmetricreport/ClientMetricReportDirection */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportDirection.js\\\");\\nconst ClientMetricReportMediaType_1 = __webpack_require__(/*! ../clientmetricreport/ClientMetricReportMediaType */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportMediaType.js\\\");\\nconst DefaultClientMetricReport_1 = __webpack_require__(/*! ../clientmetricreport/DefaultClientMetricReport */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/DefaultClientMetricReport.js\\\");\\nconst StreamMetricReport_1 = __webpack_require__(/*! ../clientmetricreport/StreamMetricReport */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/StreamMetricReport.js\\\");\\nconst Maybe_1 = __webpack_require__(/*! ../maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nconst MeetingSessionLifecycleEvent_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionLifecycleEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEvent.js\\\");\\nconst MeetingSessionLifecycleEventCondition_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionLifecycleEventCondition */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEventCondition.js\\\");\\nconst IntervalScheduler_1 = __webpack_require__(/*! ../scheduler/IntervalScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js\\\");\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst AudioLogEvent_1 = __webpack_require__(/*! ./AudioLogEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/statscollector/AudioLogEvent.js\\\");\\nconst VideoLogEvent_1 = __webpack_require__(/*! ./VideoLogEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/statscollector/VideoLogEvent.js\\\");\\nclass DefaultStatsCollector {\\n constructor(audioVideoController, logger, browserBehavior, interval = DefaultStatsCollector.INTERVAL_MS) {\\n this.audioVideoController = audioVideoController;\\n this.logger = logger;\\n this.browserBehavior = browserBehavior;\\n this.interval = interval;\\n this.intervalScheduler = null;\\n // TODO: Implement metricsAddTime() and metricsLogEvent().\\n this.metricsAddTime = (_name, _duration, _attributes) => { };\\n this.metricsLogEvent = (_name, _attributes) => { };\\n }\\n // TODO: Update toAttribute() and toSuffix() methods to convert raw data to a required type.\\n toAttribute(str) {\\n return this.toSuffix(str).substring(1);\\n }\\n toSuffix(str) {\\n if (str.toLowerCase() === str) {\\n // e.g. lower_case -> _lower_case\\n return `_${str}`;\\n }\\n else if (str.toUpperCase() === str) {\\n // e.g. UPPER_CASE -> _upper_case\\n return `_${str.toLowerCase()}`;\\n }\\n else {\\n // e.g. CamelCaseWithCAPS -> _camel_case_with_caps\\n return str\\n .replace(/([A-Z][a-z]+)/g, function ($1) {\\n return `_${$1}`;\\n })\\n .replace(/([A-Z][A-Z]+)/g, function ($1) {\\n return `_${$1}`;\\n })\\n .toLowerCase();\\n }\\n }\\n logLatency(eventName, timeMs, attributes) {\\n const event = this.toSuffix(eventName);\\n this.logEventTime('meeting' + event, timeMs, attributes);\\n }\\n logStateTimeout(stateName, attributes) {\\n const state = this.toSuffix(stateName);\\n this.logEvent('meeting_session_state_timeout', Object.assign(Object.assign({}, attributes), { state: `state${state}` }));\\n }\\n logAudioEvent(eventName, attributes) {\\n const event = 'audio' + this.toSuffix(AudioLogEvent_1.default[eventName]);\\n this.logEvent(event, attributes);\\n }\\n logVideoEvent(eventName, attributes) {\\n const event = 'video' + this.toSuffix(VideoLogEvent_1.default[eventName]);\\n this.logEvent(event, attributes);\\n }\\n logEventTime(eventName, timeMs, attributes = {}) {\\n const finalAttributes = Object.assign(Object.assign({}, attributes), { call_id: this.audioVideoController.configuration.meetingId, client_type: DefaultStatsCollector.CLIENT_TYPE, metric_type: 'latency' });\\n this.logger.debug(() => {\\n return `[DefaultStatsCollector] ${eventName}: ${JSON.stringify(finalAttributes)}`;\\n });\\n this.metricsAddTime(eventName, timeMs, finalAttributes);\\n }\\n logMeetingSessionStatus(status) {\\n // TODO: Generate the status event name given the status code.\\n const statusEventName = `${status.statusCode()}`;\\n this.logEvent(statusEventName);\\n const statusAttribute = {\\n status: statusEventName,\\n status_code: `${status.statusCode()}`,\\n };\\n this.logEvent('meeting_session_status', statusAttribute);\\n if (status.isTerminal()) {\\n this.logEvent('meeting_session_stopped', statusAttribute);\\n }\\n if (status.isAudioConnectionFailure()) {\\n this.logEvent('meeting_session_audio_failed', statusAttribute);\\n }\\n if (status.isFailure()) {\\n this.logEvent('meeting_session_failed', statusAttribute);\\n }\\n }\\n logLifecycleEvent(lifecycleEvent, condition) {\\n const attributes = {\\n lifecycle_event: `lifecycle${this.toSuffix(MeetingSessionLifecycleEvent_1.default[lifecycleEvent])}`,\\n lifecycle_event_code: `${lifecycleEvent}`,\\n lifecycle_event_condition: `condition${this.toSuffix(MeetingSessionLifecycleEventCondition_1.default[condition])}`,\\n lifecycle_event_condition_code: `${condition}`,\\n };\\n this.logEvent('meeting_session_lifecycle', attributes);\\n }\\n logEvent(eventName, attributes = {}) {\\n const finalAttributes = Object.assign(Object.assign({}, attributes), { call_id: this.audioVideoController.configuration.meetingId, client_type: DefaultStatsCollector.CLIENT_TYPE });\\n this.logger.debug(() => {\\n return `[DefaultStatsCollector] ${eventName}: ${JSON.stringify(finalAttributes)}`;\\n });\\n this.metricsLogEvent(eventName, finalAttributes);\\n }\\n /**\\n * WEBRTC METRICS COLLECTION.\\n */\\n start(signalingClient, videoStreamIndex, clientMetricReport) {\\n if (this.intervalScheduler) {\\n return false;\\n }\\n this.logger.info('Starting DefaultStatsCollector');\\n this.signalingClient = signalingClient;\\n this.videoStreamIndex = videoStreamIndex;\\n if (clientMetricReport) {\\n this.clientMetricReport = clientMetricReport;\\n }\\n else {\\n this.clientMetricReport = new DefaultClientMetricReport_1.default(this.logger);\\n }\\n this.intervalScheduler = new IntervalScheduler_1.default(this.interval);\\n this.intervalScheduler.start(() => {\\n this.getStatsWrapper();\\n });\\n return true;\\n }\\n stop() {\\n this.logger.info('Stopping DefaultStatsCollector');\\n if (this.intervalScheduler) {\\n this.intervalScheduler.stop();\\n }\\n this.intervalScheduler = null;\\n }\\n /**\\n * Convert raw metrics to client metric report.\\n */\\n updateMetricValues(rawMetricReport, isStream) {\\n const metricReport = isStream\\n ? this.clientMetricReport.streamMetricReports[Number(rawMetricReport.ssrc)]\\n : this.clientMetricReport.globalMetricReport;\\n let metricMap;\\n if (isStream) {\\n metricMap = this.clientMetricReport.getMetricMap(metricReport.mediaType, metricReport.direction);\\n }\\n else {\\n metricMap = this.clientMetricReport.getMetricMap();\\n }\\n for (const rawMetric in rawMetricReport) {\\n if (rawMetric in metricMap) {\\n metricReport.previousMetrics[rawMetric] = metricReport.currentMetrics[rawMetric];\\n metricReport.currentMetrics[rawMetric] = rawMetricReport[rawMetric];\\n }\\n }\\n }\\n processRawMetricReports(rawMetricReports) {\\n this.clientMetricReport.currentSsrcs = {};\\n const timeStamp = Date.now();\\n for (const rawMetricReport of rawMetricReports) {\\n const isStream = this.isStreamRawMetricReport(rawMetricReport.type);\\n if (isStream) {\\n if (!this.clientMetricReport.streamMetricReports[Number(rawMetricReport.ssrc)]) {\\n const streamMetricReport = new StreamMetricReport_1.default();\\n streamMetricReport.mediaType = this.getMediaType(rawMetricReport);\\n streamMetricReport.direction = this.getDirectionType(rawMetricReport);\\n if (!this.videoStreamIndex.allStreams().empty()) {\\n streamMetricReport.streamId = this.videoStreamIndex.streamIdForSSRC(Number(rawMetricReport.ssrc));\\n }\\n this.clientMetricReport.streamMetricReports[Number(rawMetricReport.ssrc)] = streamMetricReport;\\n }\\n this.clientMetricReport.currentSsrcs[Number(rawMetricReport.ssrc)] = 1;\\n }\\n this.updateMetricValues(rawMetricReport, isStream);\\n }\\n this.clientMetricReport.removeDestroyedSsrcs();\\n this.clientMetricReport.previousTimestampMs = this.clientMetricReport.currentTimestampMs;\\n this.clientMetricReport.currentTimestampMs = timeStamp;\\n this.clientMetricReport.print();\\n }\\n /**\\n * Protobuf packaging.\\n */\\n addMetricFrame(metricName, clientMetricFrame, metricSpec, ssrc) {\\n const type = metricSpec.type;\\n const transform = metricSpec.transform;\\n const sourceMetric = metricSpec.source;\\n const streamMetricFramesLength = clientMetricFrame.streamMetricFrames.length;\\n const latestStreamMetricFrame = clientMetricFrame.streamMetricFrames[streamMetricFramesLength - 1];\\n if (type) {\\n const metricFrame = SignalingProtocol_js_1.SdkMetric.create();\\n metricFrame.type = type;\\n metricFrame.value = sourceMetric\\n ? transform(sourceMetric, ssrc)\\n : transform(metricName, ssrc);\\n ssrc\\n ? latestStreamMetricFrame.metrics.push(metricFrame)\\n : clientMetricFrame.globalMetrics.push(metricFrame);\\n }\\n }\\n addGlobalMetricsToProtobuf(clientMetricFrame) {\\n const metricMap = this.clientMetricReport.getMetricMap();\\n for (const metricName in this.clientMetricReport.globalMetricReport.currentMetrics) {\\n this.addMetricFrame(metricName, clientMetricFrame, metricMap[metricName]);\\n }\\n }\\n addStreamMetricsToProtobuf(clientMetricFrame) {\\n for (const ssrc in this.clientMetricReport.streamMetricReports) {\\n const streamMetricReport = this.clientMetricReport.streamMetricReports[ssrc];\\n const streamMetricFrame = SignalingProtocol_js_1.SdkStreamMetricFrame.create();\\n streamMetricFrame.streamId = streamMetricReport.streamId;\\n streamMetricFrame.metrics = [];\\n clientMetricFrame.streamMetricFrames.push(streamMetricFrame);\\n const metricMap = this.clientMetricReport.getMetricMap(streamMetricReport.mediaType, streamMetricReport.direction);\\n for (const metricName in streamMetricReport.currentMetrics) {\\n this.addMetricFrame(metricName, clientMetricFrame, metricMap[metricName], Number(ssrc));\\n }\\n }\\n }\\n makeClientMetricProtobuf() {\\n const clientMetricFrame = SignalingProtocol_js_1.SdkClientMetricFrame.create();\\n clientMetricFrame.globalMetrics = [];\\n clientMetricFrame.streamMetricFrames = [];\\n this.addGlobalMetricsToProtobuf(clientMetricFrame);\\n this.addStreamMetricsToProtobuf(clientMetricFrame);\\n return clientMetricFrame;\\n }\\n sendClientMetricProtobuf(clientMetricFrame) {\\n this.signalingClient.sendClientMetrics(clientMetricFrame);\\n }\\n /**\\n * Helper functions.\\n */\\n isStreamRawMetricReport(type) {\\n return type === 'ssrc' || type === 'inbound-rtp' || type === 'outbound-rtp';\\n }\\n getMediaType(rawMetricReport) {\\n return rawMetricReport.mediaType === 'audio' ? ClientMetricReportMediaType_1.default.AUDIO : ClientMetricReportMediaType_1.default.VIDEO;\\n }\\n getDirectionType(rawMetricReport) {\\n return rawMetricReport.id.toLowerCase().indexOf('send') !== -1 ||\\n rawMetricReport.id.toLowerCase().indexOf('outbound') !== -1\\n ? ClientMetricReportDirection_1.default.UPSTREAM\\n : ClientMetricReportDirection_1.default.DOWNSTREAM;\\n }\\n /**\\n * Metric report filter.\\n */\\n isValidChromeRawMetric(rawMetricReport) {\\n return (this.browserBehavior.hasChromiumWebRTC() &&\\n (rawMetricReport.type === 'ssrc' ||\\n rawMetricReport.type === 'VideoBwe' ||\\n (rawMetricReport.type === 'googCandidatePair' &&\\n rawMetricReport.googWritable === 'true' &&\\n rawMetricReport.googReadable === 'true')));\\n }\\n isValidStandardRawMetric(rawMetricReport) {\\n const valid = rawMetricReport.type === 'inbound-rtp' ||\\n rawMetricReport.type === 'outbound-rtp' ||\\n (rawMetricReport.type === 'candidate-pair' && rawMetricReport.state === 'succeeded');\\n if (this.browserBehavior.hasFirefoxWebRTC()) {\\n if (this.compareMajorVersion(DefaultStatsCollector.FIREFOX_UPDATED_GET_STATS_VERSION) === -1) {\\n return valid;\\n }\\n else {\\n return valid && rawMetricReport.isRemote === false;\\n }\\n }\\n return valid;\\n }\\n isValidSsrc(rawMetricReport) {\\n let validSsrc = true;\\n if (this.isStreamRawMetricReport(rawMetricReport.type) &&\\n this.getDirectionType(rawMetricReport) === ClientMetricReportDirection_1.default.DOWNSTREAM &&\\n this.getMediaType(rawMetricReport) === ClientMetricReportMediaType_1.default.VIDEO) {\\n validSsrc = this.videoStreamIndex.streamIdForSSRC(Number(rawMetricReport.ssrc)) > 0;\\n }\\n return validSsrc;\\n }\\n isValidRawMetricReport(rawMetricReport) {\\n return ((this.isValidChromeRawMetric(rawMetricReport) ||\\n this.isValidStandardRawMetric(rawMetricReport)) &&\\n this.isValidSsrc(rawMetricReport));\\n }\\n filterRawMetricReports(rawMetricReports) {\\n const filteredRawMetricReports = [];\\n for (const rawMetricReport of rawMetricReports) {\\n if (this.isValidRawMetricReport(rawMetricReport)) {\\n filteredRawMetricReports.push(rawMetricReport);\\n }\\n }\\n return filteredRawMetricReports;\\n }\\n handleRawMetricReports(rawMetricReports) {\\n const filteredRawMetricReports = this.filterRawMetricReports(rawMetricReports);\\n this.logger.debug(() => {\\n return `Filtered raw metrics : ${JSON.stringify(filteredRawMetricReports)}`;\\n });\\n this.processRawMetricReports(filteredRawMetricReports);\\n const clientMetricFrame = this.makeClientMetricProtobuf();\\n this.sendClientMetricProtobuf(clientMetricFrame);\\n this.audioVideoController.forEachObserver(observer => {\\n Maybe_1.default.of(observer.metricsDidReceive).map(f => f.bind(observer)(this.clientMetricReport.clone()));\\n });\\n }\\n /**\\n * Get raw webrtc metrics.\\n */\\n getStatsWrapper() {\\n if (!this.audioVideoController.rtcPeerConnection) {\\n return;\\n }\\n const rawMetricReports = [];\\n if (!this.browserBehavior.requiresPromiseBasedWebRTCGetStats()) {\\n // @ts-ignore\\n this.audioVideoController.rtcPeerConnection.getStats(\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n (res) => {\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n res.result().forEach((report) => {\\n const item = {};\\n report.names().forEach((name) => {\\n item[name] = report.stat(name);\\n });\\n item.id = report.id;\\n item.type = report.type;\\n item.timestamp = report.timestamp;\\n rawMetricReports.push(item);\\n });\\n this.handleRawMetricReports(rawMetricReports);\\n }, \\n // @ts-ignore\\n (error) => {\\n this.logger.error(error.message);\\n });\\n }\\n else {\\n // @ts-ignore\\n this.audioVideoController.rtcPeerConnection\\n .getStats()\\n .then((report) => {\\n report.forEach((item) => {\\n rawMetricReports.push(item);\\n });\\n this.handleRawMetricReports(rawMetricReports);\\n })\\n .catch((error) => {\\n this.logger.error(error.message);\\n });\\n }\\n }\\n compareMajorVersion(version) {\\n const currentMajorVersion = parseInt(this.browserBehavior.version().split('.')[0]);\\n const expectedMajorVersion = parseInt(version.split('.')[0]);\\n if (expectedMajorVersion === currentMajorVersion) {\\n return 0;\\n }\\n if (expectedMajorVersion > currentMajorVersion) {\\n return 1;\\n }\\n return -1;\\n }\\n}\\nexports[\\\"default\\\"] = DefaultStatsCollector;\\nDefaultStatsCollector.INTERVAL_MS = 1000;\\nDefaultStatsCollector.FIREFOX_UPDATED_GET_STATS_VERSION = '66.0.0';\\nDefaultStatsCollector.CLIENT_TYPE = 'amazon-chime-sdk-js';\\n//# sourceMappingURL=DefaultStatsCollector.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/statscollector/DefaultStatsCollector.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/statscollector/VideoLogEvent.js\":\n/*!********************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/statscollector/VideoLogEvent.js ***!\n \\********************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.VideoLogEvent = void 0;\\nvar VideoLogEvent;\\n(function (VideoLogEvent) {\\n VideoLogEvent[VideoLogEvent[\\\"InputAttached\\\"] = 0] = \\\"InputAttached\\\";\\n VideoLogEvent[VideoLogEvent[\\\"SendingFailed\\\"] = 1] = \\\"SendingFailed\\\";\\n VideoLogEvent[VideoLogEvent[\\\"SendingSuccess\\\"] = 2] = \\\"SendingSuccess\\\";\\n})(VideoLogEvent = exports.VideoLogEvent || (exports.VideoLogEvent = {}));\\nexports[\\\"default\\\"] = VideoLogEvent;\\n//# sourceMappingURL=VideoLogEvent.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/statscollector/VideoLogEvent.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/AttachMediaInputTask.js\":\n/*!*****************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/AttachMediaInputTask.js ***!\n \\*****************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst VideoLogEvent_1 = __webpack_require__(/*! ../statscollector/VideoLogEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/statscollector/VideoLogEvent.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/*\\n * [[AttachMediaInputTask]] adds audio and video input to peer connection.\\n */\\nclass AttachMediaInputTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'AttachMediaInputTask';\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const transceiverController = this.context.transceiverController;\\n transceiverController.setPeer(this.context.peer);\\n transceiverController.setupLocalTransceivers();\\n const audioInput = this.context.activeAudioInput;\\n if (audioInput) {\\n const audioTracks = audioInput.getAudioTracks();\\n if (this.context.browserBehavior.requiresUnifiedPlan()) {\\n this.context.logger.info('attaching audio track to peer connection (unified-plan)');\\n yield transceiverController.setAudioInput(audioTracks.length ? audioTracks[0] : null);\\n }\\n else {\\n this.context.logger.info('attaching audio track to peer connection (plan-b)');\\n // @ts-ignore\\n const senders = this.context.peer.getSenders();\\n audioInput.getAudioTracks().forEach((track) => {\\n if (!senders.find((sender) => {\\n return sender.track.id === track.id;\\n })) {\\n // unclear why this does not deal with the case of removing\\n // an existing track as we do in attachVideoInput\\n // @ts-ignore\\n this.context.localAudioSender = this.context.peer.addTrack(track, audioInput);\\n }\\n });\\n }\\n }\\n else {\\n yield transceiverController.setAudioInput(null);\\n this.context.logger.warn('no audio track');\\n }\\n const videoInput = this.context.activeVideoInput;\\n if (videoInput) {\\n const videoTracks = videoInput.getVideoTracks();\\n const videoTrack = videoTracks.length ? videoTracks[0] : null;\\n if (this.context.browserBehavior.requiresUnifiedPlan()) {\\n this.context.logger.info('attaching video track to peer connection (unified-plan)');\\n yield transceiverController.setVideoInput(videoTrack);\\n if (this.context.enableSimulcast && this.context.videoUplinkBandwidthPolicy) {\\n const encodingParam = this.context.videoUplinkBandwidthPolicy.chooseEncodingParameters();\\n transceiverController.setEncodingParameters(encodingParam);\\n }\\n }\\n else {\\n this.context.logger.info('attaching video track to peer connection (plan-b)');\\n // @ts-ignore\\n const senders = this.context.peer.getSenders();\\n if (!senders.find((sender) => {\\n return sender.track && sender.track.id === videoTracks[0].id;\\n })) {\\n if (this.context.localVideoSender) {\\n // @ts-ignore\\n this.context.peer.removeTrack(this.context.localVideoSender);\\n this.context.localVideoSender = null;\\n }\\n this.context.localVideoSender = this.context.peer.addTrack(videoTracks[0], videoInput);\\n }\\n }\\n if (videoTrack) {\\n this.context.statsCollector.logVideoEvent(VideoLogEvent_1.default.InputAttached, this.context.videoDeviceInformation);\\n this.context.videoInputAttachedTimestampMs = Date.now();\\n }\\n }\\n else {\\n yield transceiverController.setVideoInput(null);\\n this.context.logger.info('no video track');\\n if (this.context.localVideoSender) {\\n this.context.logger.info('removing track from peer');\\n // @ts-ignore\\n this.context.peer.removeTrack(this.context.localVideoSender);\\n this.context.localVideoSender = null;\\n }\\n }\\n this.context.videoSubscriptions = transceiverController.updateVideoTransceivers(this.context.videoStreamIndex, this.context.videosToReceive);\\n });\\n }\\n}\\nexports[\\\"default\\\"] = AttachMediaInputTask;\\n//# sourceMappingURL=AttachMediaInputTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/AttachMediaInputTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\":\n/*!*****************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js ***!\n \\*****************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst TaskStatus_1 = __webpack_require__(/*! ./TaskStatus */ \\\"./node_modules/amazon-chime-sdk-js/build/task/TaskStatus.js\\\");\\n/*\\n * [[BaseTask]] provides common utilities for task implementations.\\n */\\nclass BaseTask {\\n constructor(logger) {\\n this.logger = logger;\\n this.taskName = 'BaseTask';\\n this.parentTask = null;\\n this.status = TaskStatus_1.default.IDLE;\\n this.run = this.baseRun.bind(this, this.run);\\n this.cancel = this.baseCancel.bind(this, this.cancel);\\n }\\n cancel() { }\\n name() {\\n return this.parentTask ? `${this.parentTask.name()}/${this.taskName}` : this.taskName;\\n }\\n setParent(parentTask) {\\n this.parentTask = parentTask;\\n }\\n getStatus() {\\n return this.status;\\n }\\n logAndThrow(message) {\\n this.logger.info(message);\\n throw new Error(message);\\n }\\n baseRun(originalRun) {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n const startTime = Date.now();\\n this.logger.info(`running task ${this.name()}`);\\n switch (this.status) {\\n case TaskStatus_1.default.RUNNING:\\n this.logAndThrow(`${this.name()} is already running`);\\n case TaskStatus_1.default.CANCELED:\\n this.logAndThrow(`${this.name()} was canceled before running`);\\n case TaskStatus_1.default.FINISHED:\\n this.logAndThrow(`${this.name()} was already finished`);\\n }\\n this.status = TaskStatus_1.default.RUNNING;\\n yield originalRun.call(this);\\n this.logger.info(`${this.name()} took ${Math.round(Date.now() - startTime)} ms`);\\n }\\n catch (err) {\\n throw err;\\n }\\n finally {\\n if (this.status !== TaskStatus_1.default.CANCELED) {\\n this.status = TaskStatus_1.default.FINISHED;\\n }\\n }\\n });\\n }\\n baseCancel(originalCancel) {\\n if (this.status === TaskStatus_1.default.CANCELED || this.status === TaskStatus_1.default.FINISHED) {\\n return;\\n }\\n this.logger.info(`canceling task ${this.name()}`);\\n this.status = TaskStatus_1.default.CANCELED;\\n originalCancel.call(this);\\n }\\n}\\nexports[\\\"default\\\"] = BaseTask;\\n//# sourceMappingURL=BaseTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/CleanRestartedSessionTask.js\":\n/*!**********************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/CleanRestartedSessionTask.js ***!\n \\**********************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\nclass CleanRestartedSessionTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'CleanRestartedSessionTask';\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.context.peer) {\\n this.context.peer.close();\\n }\\n this.context.transceiverController.reset();\\n this.context.localVideoSender = null;\\n this.context.peer = null;\\n this.context.videoDownlinkBandwidthPolicy.reset();\\n this.context.iceCandidateHandler = null;\\n this.context.iceCandidates = [];\\n this.context.previousSdpOffer = null;\\n });\\n }\\n}\\nexports[\\\"default\\\"] = CleanRestartedSessionTask;\\n//# sourceMappingURL=CleanRestartedSessionTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/CleanRestartedSessionTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/CleanStoppedSessionTask.js\":\n/*!********************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/CleanStoppedSessionTask.js ***!\n \\********************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ../signalingclient/SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\nclass CleanStoppedSessionTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'CleanStoppedSessionTask';\\n this.taskCanceler = null;\\n }\\n cancel() {\\n if (this.taskCanceler) {\\n this.taskCanceler.cancel();\\n this.taskCanceler = null;\\n }\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n if (this.context.signalingClient.ready()) {\\n this.context.signalingClient.closeConnection();\\n yield this.receiveWebSocketClosedEvent();\\n }\\n }\\n catch (error) {\\n throw error;\\n }\\n finally {\\n for (const observer of this.context.removableObservers) {\\n observer.removeObserver();\\n }\\n this.context.statsCollector.stop();\\n this.context.statsCollector = null;\\n this.context.connectionMonitor.stop();\\n this.context.connectionMonitor = null;\\n if (this.context.peer) {\\n this.context.peer.close();\\n }\\n this.context.peer = null;\\n this.context.localVideoSender = null;\\n this.context.sdpAnswer = null;\\n this.context.sdpOfferInit = null;\\n this.context.indexFrame = null;\\n this.context.videoDownlinkBandwidthPolicy.reset();\\n this.context.iceCandidateHandler = null;\\n this.context.iceCandidates = [];\\n this.context.turnCredentials = null;\\n this.context.videoSubscriptions = null;\\n this.context.transceiverController.reset();\\n // This should really be a _device deselection_ operation,\\n // allowing the device controller to clean up any selected transform\\n // device or other resources.\\n //\\n // We can't fix it within the current API because CSST only knows about\\n // `MediaStreamBroker`, not about `DeviceController` — it only knows how\\n // to // release media streams that are tracked in the\\n // `AudioVideoControllerState`, not how to unselect a device.\\n //\\n // The issue here is that we now work with much more than streams, and\\n // this API hasn't kept pace with the complexity of the rest of the SDK.\\n //\\n // It's currently up to the developer's application to manage which device\\n // is currently selected and `DDC` has to figure out from the stream\\n // passed here which device to clean up.\\n //\\n // This can be addressed in a future v3.0.\\n this.context.mediaStreamBroker.releaseMediaStream(this.context.activeAudioInput);\\n this.context.activeAudioInput = null;\\n this.context.mediaStreamBroker.releaseMediaStream(this.context.activeVideoInput);\\n this.context.activeVideoInput = null;\\n this.context.realtimeController.realtimeSetLocalAudioInput(null);\\n const tile = this.context.videoTileController.getLocalVideoTile();\\n if (tile) {\\n tile.bindVideoStream('', true, null, null, null, null);\\n }\\n this.context.videoTileController.removeAllVideoTiles();\\n }\\n });\\n }\\n receiveWebSocketClosedEvent() {\\n return new Promise((resolve, reject) => {\\n class Interceptor {\\n constructor(signalingClient) {\\n this.signalingClient = signalingClient;\\n }\\n cancel() {\\n this.signalingClient.removeObserver(this);\\n reject(new Error(`CleanStoppedSessionTask got canceled while waiting for the WebSocket closed event`));\\n }\\n handleSignalingClientEvent(event) {\\n if (event.type === SignalingClientEventType_1.default.WebSocketClosed) {\\n this.signalingClient.removeObserver(this);\\n resolve();\\n }\\n }\\n }\\n const interceptor = new Interceptor(this.context.signalingClient);\\n this.taskCanceler = interceptor;\\n this.context.signalingClient.registerObserver(interceptor);\\n });\\n }\\n}\\nexports[\\\"default\\\"] = CleanStoppedSessionTask;\\n//# sourceMappingURL=CleanStoppedSessionTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/CleanStoppedSessionTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/CreatePeerConnectionTask.js\":\n/*!*********************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/CreatePeerConnectionTask.js ***!\n \\*********************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/*\\n * [[CreatePeerConnectionTask]] sets up the peer connection object.\\n */\\nclass CreatePeerConnectionTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'CreatePeerConnectionTask';\\n this.removeTrackAddedEventListener = null;\\n this.removeTrackRemovedEventListeners = {};\\n this.trackEvents = [\\n 'ended',\\n 'mute',\\n 'unmute',\\n 'isolationchange',\\n 'overconstrained',\\n ];\\n this.removeVideoTrackEventListeners = {};\\n this.trackAddedHandler = (event) => {\\n const track = event.track;\\n this.context.logger.info(`received track event: kind=${track.kind} id=${track.id} label=${track.label}`);\\n if (event.transceiver && event.transceiver.currentDirection === 'inactive') {\\n return;\\n }\\n if (event.streams.length === 0) {\\n this.context.logger.warn(`Track event but no stream`);\\n return;\\n }\\n const stream = event.streams[0];\\n if (track.kind === 'audio') {\\n this.context.audioMixController.bindAudioStream(stream);\\n }\\n else if (track.kind === 'video' && !this.trackIsVideoInput(track)) {\\n this.addRemoteVideoTrack(track, stream);\\n }\\n };\\n }\\n removeObserver() {\\n this.removeTrackAddedEventListener && this.removeTrackAddedEventListener();\\n for (const trackId in this.removeTrackRemovedEventListeners) {\\n this.removeTrackRemovedEventListeners[trackId]();\\n }\\n }\\n addPeerConnectionEventLogger() {\\n const peer = this.context.peer;\\n peer.addEventListener('connectionstatechange', () => {\\n this.context.logger.info(`peer connection state changed: ${peer.connectionState}`);\\n });\\n peer.addEventListener('negotiationneeded', () => {\\n this.context.logger.info('peer connection negotiation is needed');\\n });\\n peer.addEventListener('icegatheringstatechange', () => {\\n this.context.logger.info(`peer connection ice gathering state changed: ${peer.iceGatheringState}`);\\n });\\n peer.addEventListener('icecandidate', (event) => {\\n this.context.logger.info(`peer connection ice candidate: ${event.candidate ? event.candidate.candidate : '(null)'}`);\\n });\\n peer.addEventListener('iceconnectionstatechange', () => {\\n this.context.logger.info(`peer connection ice connection state changed: ${peer.iceConnectionState}`);\\n });\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.context.removableObservers.push(this);\\n const hasTurnCredentials = this.context.turnCredentials && this.context.turnCredentials.uris.length > 0;\\n const configuration = hasTurnCredentials\\n ? {\\n iceServers: [\\n {\\n urls: this.context.turnCredentials.uris,\\n username: this.context.turnCredentials.username,\\n credential: this.context.turnCredentials.password,\\n credentialType: 'password',\\n },\\n ],\\n iceTransportPolicy: 'relay',\\n }\\n : {};\\n configuration.bundlePolicy = this.context.browserBehavior.requiresBundlePolicy();\\n // @ts-ignore\\n configuration.sdpSemantics = this.context.browserBehavior.requiresUnifiedPlan()\\n ? 'unified-plan'\\n : 'plan-b';\\n // @ts-ignore\\n this.logger.info(`SDP semantics are ${configuration.sdpSemantics}`);\\n const connectionConstraints = {\\n optional: [\\n { googHighStartBitrate: 0 },\\n { googCpuOveruseDetection: false },\\n { googCpuOveruseEncodeUsage: false },\\n { googCpuUnderuseThreshold: 55 },\\n { googCpuOveruseThreshold: 150 },\\n { googCombinedAudioVideoBwe: true },\\n ],\\n };\\n if (this.context.peer) {\\n this.context.logger.info('reusing peer connection');\\n }\\n else {\\n this.context.logger.info('creating new peer connection');\\n // @ts-ignore\\n this.context.peer = new RTCPeerConnection(configuration, connectionConstraints);\\n this.addPeerConnectionEventLogger();\\n }\\n this.removeTrackAddedEventListener = () => {\\n if (this.context.peer) {\\n this.context.peer.removeEventListener('track', this.trackAddedHandler);\\n }\\n this.removeTrackAddedEventListener = null;\\n };\\n this.context.peer.addEventListener('track', this.trackAddedHandler);\\n });\\n }\\n trackIsVideoInput(track) {\\n if (this.context.transceiverController.useTransceivers()) {\\n this.logger.debug(() => {\\n return `getting video track type (unified-plan)`;\\n });\\n return this.context.transceiverController.trackIsVideoInput(track);\\n }\\n this.logger.debug(() => {\\n return `getting video track type (plan-b)`;\\n });\\n if (this.context.activeVideoInput) {\\n const tracks = this.context.activeVideoInput.getVideoTracks();\\n if (tracks && tracks.length > 0 && tracks[0].id === track.id) {\\n return true;\\n }\\n }\\n return false;\\n }\\n addRemoteVideoTrack(track, stream) {\\n let trackId = stream.id;\\n if (!this.context.browserBehavior.requiresUnifiedPlan()) {\\n stream = new MediaStream([track]);\\n trackId = track.id;\\n }\\n const attendeeId = this.context.videoStreamIndex.attendeeIdForTrack(trackId);\\n if (this.context.videoTileController.haveVideoTileForAttendeeId(attendeeId)) {\\n this.context.logger.info(`Not adding remote track. Already have tile for attendeeId: ${attendeeId}`);\\n return;\\n }\\n const tile = this.context.videoTileController.addVideoTile();\\n let streamId = this.context.videoStreamIndex.streamIdForTrack(trackId);\\n if (typeof streamId === 'undefined') {\\n this.logger.warn(`stream not found for tile=${tile.id()} track=${trackId}`);\\n streamId = null;\\n }\\n for (let i = 0; i < this.trackEvents.length; i++) {\\n const trackEvent = this.trackEvents[i];\\n const videoTracks = stream.getVideoTracks();\\n if (videoTracks && videoTracks.length) {\\n const videoTrack = videoTracks[0];\\n const callback = () => {\\n this.context.logger.info(`received the ${trackEvent} event for tile=${tile.id()} id=${track.id} streamId=${streamId}`);\\n if (trackEvent === 'ended' && this.context.browserBehavior.requiresUnifiedPlan()) {\\n this.removeRemoteVideoTrack(track, tile.state());\\n }\\n };\\n videoTrack.addEventListener(trackEvent, callback);\\n if (!this.removeVideoTrackEventListeners[track.id]) {\\n this.removeVideoTrackEventListeners[track.id] = [];\\n }\\n this.removeVideoTrackEventListeners[track.id].push(() => {\\n videoTrack.removeEventListener(trackEvent, callback);\\n });\\n }\\n }\\n let width;\\n let height;\\n if (track.getSettings) {\\n const cap = track.getSettings();\\n width = cap.width;\\n height = cap.height;\\n }\\n else {\\n const cap = track.getCapabilities();\\n width = cap.width;\\n height = cap.height;\\n }\\n const externalUserId = this.context.videoStreamIndex.externalUserIdForTrack(trackId);\\n tile.bindVideoStream(attendeeId, false, stream, width, height, streamId, externalUserId);\\n this.logger.info(`video track added, created tile=${tile.id()} track=${trackId} streamId=${streamId}`);\\n let endEvent = 'removetrack';\\n let target = stream;\\n if (!this.context.browserBehavior.requiresUnifiedPlan()) {\\n this.logger.debug(() => {\\n return 'updating end event and target track (plan-b)';\\n });\\n endEvent = 'ended';\\n // @ts-ignore\\n target = track;\\n }\\n const trackRemovedHandler = () => this.removeRemoteVideoTrack(track, tile.state());\\n this.removeTrackRemovedEventListeners[track.id] = () => {\\n target.removeEventListener(endEvent, trackRemovedHandler);\\n delete this.removeTrackRemovedEventListeners[track.id];\\n };\\n target.addEventListener(endEvent, trackRemovedHandler);\\n }\\n removeRemoteVideoTrack(track, tileState) {\\n if (this.removeTrackRemovedEventListeners.hasOwnProperty(track.id)) {\\n this.removeTrackRemovedEventListeners[track.id]();\\n for (const removeVideoTrackEventListener of this.removeVideoTrackEventListeners[track.id]) {\\n removeVideoTrackEventListener();\\n }\\n delete this.removeVideoTrackEventListeners[track.id];\\n }\\n this.logger.info(`video track ended, removing tile=${tileState.tileId} id=${track.id} stream=${tileState.streamId}`);\\n if (tileState.streamId) {\\n this.context.videosPaused.remove(tileState.streamId);\\n }\\n else {\\n this.logger.warn(`no stream found for tile=${tileState.tileId}`);\\n }\\n this.context.videoTileController.removeVideoTile(tileState.tileId);\\n }\\n}\\nexports[\\\"default\\\"] = CreatePeerConnectionTask;\\nCreatePeerConnectionTask.REMOVE_HANDLER_INTERVAL_MS = 10000;\\n//# sourceMappingURL=CreatePeerConnectionTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/CreatePeerConnectionTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/CreateSDPTask.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/CreateSDPTask.js ***!\n \\**********************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst MeetingSessionStatusCode_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionStatusCode */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js\\\");\\nconst DefaultSDP_1 = __webpack_require__(/*! ../sdp/DefaultSDP */ \\\"./node_modules/amazon-chime-sdk-js/build/sdp/DefaultSDP.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/*\\n * [[CreateSDPTask]] asynchronously calls [[createOffer]] on peer connection.\\n */\\nclass CreateSDPTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'CreateSDPTask';\\n }\\n cancel() {\\n // Just in case. The baseCancel behavior should prevent this.\\n /* istanbul ignore else */\\n if (this.cancelPromise) {\\n const error = new Error(`canceling ${this.name()}`);\\n this.cancelPromise(error);\\n delete this.cancelPromise;\\n }\\n }\\n sessionUsesAudio() {\\n return true;\\n }\\n sessionUsesVideo() {\\n const enabled = true;\\n let sending;\\n if (this.context.transceiverController.useTransceivers()) {\\n sending = this.context.transceiverController.hasVideoInput();\\n }\\n else {\\n sending = this.context.videoTileController.hasStartedLocalVideoTile();\\n }\\n const receiving = !!this.context.videosToReceive && !this.context.videosToReceive.empty();\\n const usesVideo = enabled && (sending || receiving);\\n this.context.logger.info(`uses video: ${usesVideo} (enabled: ${enabled}, sending: ${sending}, receiving: ${receiving})`);\\n return usesVideo;\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const offerOptions = {\\n offerToReceiveAudio: this.sessionUsesAudio(),\\n offerToReceiveVideo: this.sessionUsesVideo(),\\n };\\n this.logger.info(`peer connection offerOptions: ${JSON.stringify(offerOptions)}`);\\n yield new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\\n this.cancelPromise = (error) => {\\n reject(error);\\n };\\n try {\\n this.context.sdpOfferInit = yield this.context.peer.createOffer(offerOptions);\\n this.context.logger.info('peer connection created offer');\\n if (this.context.previousSdpOffer) {\\n if (new DefaultSDP_1.default(this.context.sdpOfferInit.sdp).videoSendSectionHasDifferentSSRC(this.context.previousSdpOffer)) {\\n const error = new Error(`canceling ${this.name()} due to the meeting status code: ${MeetingSessionStatusCode_1.default.IncompatibleSDP}`);\\n this.context.previousSdpOffer = null;\\n reject(error);\\n return;\\n }\\n }\\n resolve();\\n }\\n catch (error) {\\n reject(error);\\n }\\n finally {\\n delete this.cancelPromise;\\n }\\n }));\\n });\\n }\\n}\\nexports[\\\"default\\\"] = CreateSDPTask;\\n//# sourceMappingURL=CreateSDPTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/CreateSDPTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/FinishGatheringICECandidatesTask.js\":\n/*!*****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/FinishGatheringICECandidatesTask.js ***!\n \\*****************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst MeetingSessionStatusCode_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionStatusCode */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js\\\");\\nconst DefaultSDP_1 = __webpack_require__(/*! ../sdp/DefaultSDP */ \\\"./node_modules/amazon-chime-sdk-js/build/sdp/DefaultSDP.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/*\\n * [[FinishGatheringICECandidatesTask]] add ice-candidate event handler on peer connection to\\n * collect ice candidates and wait for peer connection ice gathering state to complete\\n */\\nclass FinishGatheringICECandidatesTask extends BaseTask_1.default {\\n constructor(context, chromeVpnTimeoutMs = FinishGatheringICECandidatesTask.CHROME_VPN_TIMEOUT_MS) {\\n super(context.logger);\\n this.context = context;\\n this.chromeVpnTimeoutMs = chromeVpnTimeoutMs;\\n this.taskName = 'FinishGatheringICECandidatesTask';\\n }\\n removeEventListener() {\\n if (this.context.peer) {\\n this.context.peer.removeEventListener('icecandidate', this.context.iceCandidateHandler);\\n if (!this.context.turnCredentials) {\\n this.context.peer.removeEventListener('icegatheringstatechange', this.context.iceGatheringStateEventHandler);\\n }\\n }\\n }\\n cancel() {\\n let error;\\n // TODO: Remove when the Chrome VPN reconnect bug is fixed.\\n // In Chrome, SDK may fail to establish TURN session after VPN reconnect.\\n // https://bugs.chromium.org/p/webrtc/issues/detail?id=9097\\n if (this.context.browserBehavior.requiresIceCandidateGatheringTimeoutWorkaround()) {\\n if (this.chromeVpnTimeoutMs < this.context.meetingSessionConfiguration.connectionTimeoutMs) {\\n const duration = Date.now() - this.startTimestampMs;\\n if (duration > this.chromeVpnTimeoutMs) {\\n error = new Error(`canceling ${this.name()} due to the meeting status code: ${MeetingSessionStatusCode_1.default.ICEGatheringTimeoutWorkaround}`);\\n }\\n }\\n }\\n // Just in case. The baseCancel behavior should prevent this.\\n /* istanbul ignore else */\\n if (this.cancelPromise) {\\n error = error || new Error(`canceling ${this.name()}`);\\n this.cancelPromise(error);\\n delete this.cancelPromise;\\n }\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!this.context.peer) {\\n this.logAndThrow(`session does not have peer connection; bypass ice gathering`);\\n }\\n if (this.context.browserBehavior.requiresCheckForSdpConnectionAttributes()) {\\n if (new DefaultSDP_1.default(this.context.peer.localDescription.sdp).hasCandidatesForAllMLines()) {\\n this.context.logger.info(`ice gathering already complete; bypass gathering, current local description ${this.context.peer.localDescription.sdp}`);\\n return;\\n }\\n }\\n else {\\n this.context.logger.info(`iOS device does not require checking for connection attributes in SDP, current local description ${this.context.peer.localDescription.sdp}`);\\n }\\n /*\\n * To bypass waiting for events, it is required that \\\"icegatheringstate\\\" to be complete and sdp to have candidate\\n * For Firefox, it takes long for iceGatheringState === 'complete'\\n * Ref: https://github.com/aws/amazon-chime-sdk-js/issues/609\\n */\\n if ((this.context.browserBehavior.hasFirefoxWebRTC() ||\\n this.context.peer.iceGatheringState === 'complete') &&\\n new DefaultSDP_1.default(this.context.peer.localDescription.sdp).hasCandidates()) {\\n this.context.logger.info('ice gathering state is complete and candidates are in SDP; bypass gathering');\\n return;\\n }\\n try {\\n yield new Promise((resolve, reject) => {\\n this.cancelPromise = (error) => {\\n this.removeEventListener();\\n reject(error);\\n };\\n if (!this.context.turnCredentials) {\\n // if one day, we found a case where a FinishGatheringICECandidate did not resolve but ice gathering state is complete and SDP answer has ice candidates\\n // we may need to enable this\\n this.context.iceGatheringStateEventHandler = () => {\\n if (this.context.peer.iceGatheringState === 'complete') {\\n this.removeEventListener();\\n resolve();\\n delete this.cancelPromise;\\n return;\\n }\\n };\\n this.context.peer.addEventListener('icegatheringstatechange', this.context.iceGatheringStateEventHandler);\\n }\\n this.context.iceCandidateHandler = (event) => {\\n this.context.logger.info(`ice candidate: ${event.candidate ? event.candidate.candidate : '(null)'} state: ${this.context.peer.iceGatheringState}`);\\n // Ice candidate arrives, do not need to wait anymore.\\n // https://webrtcglossary.com/trickle-ice/\\n if (event.candidate) {\\n if (DefaultSDP_1.default.isRTPCandidate(event.candidate.candidate)) {\\n this.context.iceCandidates.push(event.candidate);\\n }\\n // Could there be a case the candidate is not written to SDP ?\\n if (this.context.turnCredentials && this.context.iceCandidates.length >= 1) {\\n this.context.logger.info('gathered at least one relay candidate');\\n this.removeEventListener();\\n resolve();\\n delete this.cancelPromise;\\n return;\\n }\\n }\\n // Ice candidate gathering is complete, additional barrier to make sure sdp contain an ice candidate.\\n // TODO: Could there be a race where iceGatheringState is flipped after this task is run ? This could only be handled if ice state is monitored persistently.\\n if (this.context.peer.iceGatheringState === 'complete') {\\n this.context.logger.info('done gathering ice candidates');\\n this.removeEventListener();\\n if (!new DefaultSDP_1.default(this.context.peer.localDescription.sdp).hasCandidates() ||\\n this.context.iceCandidates.length === 0) {\\n reject(new Error('no ice candidates were gathered'));\\n delete this.cancelPromise;\\n }\\n else {\\n resolve();\\n delete this.cancelPromise;\\n }\\n }\\n };\\n // SDK does not catch candidate itself and send to sever. Rather, WebRTC handles candidate events and writes candidate to SDP.\\n this.context.peer.addEventListener('icecandidate', this.context.iceCandidateHandler);\\n this.startTimestampMs = Date.now();\\n });\\n }\\n catch (error) {\\n throw error;\\n }\\n finally {\\n /* istanbul ignore else */\\n if (this.startTimestampMs) {\\n this.context.iceGatheringDurationMs = Math.round(Date.now() - this.startTimestampMs);\\n }\\n }\\n });\\n }\\n}\\nexports[\\\"default\\\"] = FinishGatheringICECandidatesTask;\\nFinishGatheringICECandidatesTask.CHROME_VPN_TIMEOUT_MS = 5000;\\n//# sourceMappingURL=FinishGatheringICECandidatesTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/FinishGatheringICECandidatesTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/JoinAndReceiveIndexTask.js\":\n/*!********************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/JoinAndReceiveIndexTask.js ***!\n \\********************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst MeetingSessionStatus_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionStatus */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatus.js\\\");\\nconst MeetingSessionStatusCode_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionStatusCode */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js\\\");\\nconst MeetingSessionTURNCredentials_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionTURNCredentials */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionTURNCredentials.js\\\");\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ../signalingclient/SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\nconst SignalingClientJoin_1 = __webpack_require__(/*! ../signalingclient/SignalingClientJoin */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientJoin.js\\\");\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/*\\n * [[JoinAndReceiveIndexTask]] sends the JoinFrame and asynchronously waits for the server to send the [[SdkIndexFrame]].\\n * It should run with the [[TimeoutTask]] as the subtask so it can get canceled after timeout.\\n */\\nclass JoinAndReceiveIndexTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'JoinAndReceiveIndexTask';\\n this.taskCanceler = null;\\n this.maxVideos = 16;\\n }\\n cancel() {\\n if (this.taskCanceler) {\\n this.taskCanceler.cancel();\\n this.taskCanceler = null;\\n }\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const indexFrame = yield new Promise((resolve, reject) => {\\n const context = this.context;\\n context.turnCredentials = null;\\n class IndexFrameInterceptor {\\n constructor(signalingClient) {\\n this.signalingClient = signalingClient;\\n }\\n cancel() {\\n this.signalingClient.removeObserver(this);\\n reject(new Error(`JoinAndReceiveIndexTask got canceled while waiting for SdkIndexFrame`));\\n }\\n handleSignalingClientEvent(event) {\\n if (event.type === SignalingClientEventType_1.default.WebSocketClosed) {\\n context.logger.warn(`signaling connection closed by server with code ${event.closeCode} and reason: ${event.closeReason}`);\\n let statusCode = MeetingSessionStatusCode_1.default.SignalingBadRequest;\\n if (event.closeCode === 4410) {\\n context.logger.warn(`the meeting cannot be joined because it is has been ended`);\\n statusCode = MeetingSessionStatusCode_1.default.MeetingEnded;\\n }\\n else if (event.closeCode >= 4500 && event.closeCode < 4600) {\\n statusCode = MeetingSessionStatusCode_1.default.SignalingInternalServerError;\\n }\\n context.audioVideoController.handleMeetingSessionStatus(new MeetingSessionStatus_1.default(statusCode), null);\\n return;\\n }\\n if (event.type !== SignalingClientEventType_1.default.ReceivedSignalFrame) {\\n return;\\n }\\n if (event.message.type === SignalingProtocol_js_1.SdkSignalFrame.Type.JOIN_ACK) {\\n // @ts-ignore: force cast to SdkJoinAckFrame\\n const joinAckFrame = event.message.joinack;\\n if (joinAckFrame && joinAckFrame.turnCredentials) {\\n context.turnCredentials = new MeetingSessionTURNCredentials_1.default();\\n context.turnCredentials.username = joinAckFrame.turnCredentials.username;\\n context.turnCredentials.password = joinAckFrame.turnCredentials.password;\\n context.turnCredentials.ttl = joinAckFrame.turnCredentials.ttl;\\n context.turnCredentials.uris = joinAckFrame.turnCredentials.uris\\n .map((uri) => {\\n return context.meetingSessionConfiguration.urls.urlRewriter(uri);\\n })\\n .filter((uri) => {\\n return !!uri;\\n });\\n }\\n else {\\n context.logger.error('missing TURN credentials in JoinAckFrame');\\n }\\n return;\\n }\\n if (event.message.type !== SignalingProtocol_js_1.SdkSignalFrame.Type.INDEX) {\\n return;\\n }\\n this.signalingClient.removeObserver(this);\\n // @ts-ignore: force cast to SdkIndexFrame\\n const indexFrame = event.message.index;\\n resolve(indexFrame);\\n }\\n }\\n const interceptor = new IndexFrameInterceptor(this.context.signalingClient);\\n this.context.signalingClient.registerObserver(interceptor);\\n this.taskCanceler = interceptor;\\n this.context.signalingClient.join(new SignalingClientJoin_1.default(this.maxVideos, true));\\n });\\n this.context.logger.info(`received first index ${JSON.stringify(indexFrame)}`);\\n this.context.indexFrame = indexFrame;\\n });\\n }\\n}\\nexports[\\\"default\\\"] = JoinAndReceiveIndexTask;\\n//# sourceMappingURL=JoinAndReceiveIndexTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/JoinAndReceiveIndexTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/LeaveAndReceiveLeaveAckTask.js\":\n/*!************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/LeaveAndReceiveLeaveAckTask.js ***!\n \\************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ../signalingclient/SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/**\\n * [[LeaveAndReceiveLeaveAckTask]] sends a Leave frame and waits for a LeaveAck.\\n */\\nclass LeaveAndReceiveLeaveAckTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'LeaveAndReceiveLeaveAckTask';\\n this.taskCanceler = null;\\n }\\n cancel() {\\n if (this.taskCanceler) {\\n this.taskCanceler.cancel();\\n this.taskCanceler = null;\\n }\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.context.signalingClient.ready()) {\\n this.context.signalingClient.leave();\\n this.context.logger.info('sent leave');\\n yield this.receiveLeaveAck();\\n }\\n });\\n }\\n receiveLeaveAck() {\\n return new Promise((resolve, reject) => {\\n class Interceptor {\\n constructor(signalingClient, logger) {\\n this.signalingClient = signalingClient;\\n this.logger = logger;\\n }\\n cancel() {\\n this.signalingClient.removeObserver(this);\\n reject(new Error(`LeaveAndReceiveLeaveAckTask got canceled while waiting for IndexFrame`));\\n }\\n handleSignalingClientEvent(event) {\\n if (event.isConnectionTerminated()) {\\n this.signalingClient.removeObserver(this);\\n this.logger.info('LeaveAndReceiveLeaveAckTask connection terminated');\\n // don't treat this as an error\\n resolve();\\n return;\\n }\\n if (event.type === SignalingClientEventType_1.default.ReceivedSignalFrame &&\\n event.message.type === SignalingProtocol_js_1.SdkSignalFrame.Type.LEAVE_ACK) {\\n this.signalingClient.removeObserver(this);\\n this.logger.info('got leave ack');\\n resolve();\\n }\\n }\\n }\\n const interceptor = new Interceptor(this.context.signalingClient, this.context.logger);\\n this.taskCanceler = interceptor;\\n this.context.signalingClient.registerObserver(interceptor);\\n });\\n }\\n}\\nexports[\\\"default\\\"] = LeaveAndReceiveLeaveAckTask;\\n//# sourceMappingURL=LeaveAndReceiveLeaveAckTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/LeaveAndReceiveLeaveAckTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/ListenForVolumeIndicatorsTask.js\":\n/*!**************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/ListenForVolumeIndicatorsTask.js ***!\n \\**************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ../signalingclient/SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\nclass ListenForVolumeIndicatorsTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'ListenForVolumeIndicatorsTask';\\n this.realtimeMuteAndUnmuteHandler = (muted) => {\\n this.context.signalingClient.mute(muted);\\n };\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.context.removableObservers.push(this);\\n this.context.signalingClient.registerObserver(this);\\n this.context.realtimeController.realtimeSubscribeToMuteAndUnmuteLocalAudio(this.realtimeMuteAndUnmuteHandler);\\n });\\n }\\n removeObserver() {\\n this.context.realtimeController.realtimeUnsubscribeToMuteAndUnmuteLocalAudio(this.realtimeMuteAndUnmuteHandler);\\n this.context.signalingClient.removeObserver(this);\\n }\\n handleSignalingClientEvent(event) {\\n if (event.type !== SignalingClientEventType_1.default.ReceivedSignalFrame) {\\n return;\\n }\\n if (event.message.type === SignalingProtocol_js_1.SdkSignalFrame.Type.AUDIO_STREAM_ID_INFO) {\\n // @ts-ignore\\n const audioStreamIdInfo = event.message.audioStreamIdInfo;\\n this.context.volumeIndicatorAdapter.sendRealtimeUpdatesForAudioStreamIdInfo(audioStreamIdInfo);\\n }\\n else if (event.message.type === SignalingProtocol_js_1.SdkSignalFrame.Type.AUDIO_METADATA) {\\n // @ts-ignore\\n const audioMetadata = event.message.audioMetadata;\\n this.context.volumeIndicatorAdapter.sendRealtimeUpdatesForAudioMetadata(audioMetadata);\\n }\\n }\\n}\\nexports[\\\"default\\\"] = ListenForVolumeIndicatorsTask;\\n//# sourceMappingURL=ListenForVolumeIndicatorsTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/ListenForVolumeIndicatorsTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/MonitorTask.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/MonitorTask.js ***!\n \\********************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst ClientMetricReportDirection_1 = __webpack_require__(/*! ../clientmetricreport/ClientMetricReportDirection */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportDirection.js\\\");\\nconst ClientMetricReportMediaType_1 = __webpack_require__(/*! ../clientmetricreport/ClientMetricReportMediaType */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportMediaType.js\\\");\\nconst ClientVideoStreamReceivingReport_1 = __webpack_require__(/*! ../clientmetricreport/ClientVideoStreamReceivingReport */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientVideoStreamReceivingReport.js\\\");\\nconst ReconnectionHealthPolicy_1 = __webpack_require__(/*! ../connectionhealthpolicy/ReconnectionHealthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ReconnectionHealthPolicy.js\\\");\\nconst UnusableAudioWarningConnectionHealthPolicy_1 = __webpack_require__(/*! ../connectionhealthpolicy/UnusableAudioWarningConnectionHealthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/UnusableAudioWarningConnectionHealthPolicy.js\\\");\\nconst Maybe_1 = __webpack_require__(/*! ../maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nconst MeetingSessionStatus_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionStatus */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatus.js\\\");\\nconst MeetingSessionStatusCode_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionStatusCode */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js\\\");\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ../signalingclient/SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\nconst AudioLogEvent_1 = __webpack_require__(/*! ../statscollector/AudioLogEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/statscollector/AudioLogEvent.js\\\");\\nconst VideoLogEvent_1 = __webpack_require__(/*! ../statscollector/VideoLogEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/statscollector/VideoLogEvent.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/*\\n * [[MonitorTask]] monitors connections using SignalingAndMetricsConnectionMonitor.\\n */\\nclass MonitorTask extends BaseTask_1.default {\\n constructor(context, connectionHealthPolicyConfiguration, initialConnectionHealthData) {\\n super(context.logger);\\n this.context = context;\\n this.initialConnectionHealthData = initialConnectionHealthData;\\n this.taskName = 'MonitorTask';\\n this.prevSignalStrength = 1;\\n this.currentVideoDownlinkBandwidthEstimationKbps = 10000;\\n this.currentAvailableStreamAvgBitrates = null;\\n this.hasSignalingError = false;\\n this.presenceHandlerCalled = false;\\n this.checkAndSendWeakSignalEvent = (signalStrength) => {\\n const isCurrentSignalBad = signalStrength < 1;\\n const isPrevSignalBad = this.prevSignalStrength < 1;\\n const signalStrengthEventType = isCurrentSignalBad\\n ? !isPrevSignalBad\\n ? AudioLogEvent_1.default.RedmicStartLoss\\n : null\\n : isPrevSignalBad\\n ? AudioLogEvent_1.default.RedmicEndLoss\\n : null;\\n if (signalStrengthEventType) {\\n this.context.statsCollector.logAudioEvent(signalStrengthEventType);\\n }\\n this.prevSignalStrength = signalStrength;\\n };\\n this.realtimeFatalErrorCallback = (error) => {\\n this.logger.error(`realtime error: ${error}: ${error.stack}`);\\n this.context.audioVideoController.handleMeetingSessionStatus(new MeetingSessionStatus_1.default(MeetingSessionStatusCode_1.default.RealtimeApiFailed), error);\\n };\\n this.realtimeAttendeeIdPresenceHandler = (presentAttendeeId, present) => {\\n const attendeeId = this.context.meetingSessionConfiguration.credentials.attendeeId;\\n if (attendeeId === presentAttendeeId && present && !this.presenceHandlerCalled) {\\n this.presenceHandlerCalled = true;\\n this.context.attendeePresenceDurationMs = Date.now() - this.context.startAudioVideoTimestamp;\\n /* istanbul ignore else */\\n if (this.context.eventController) {\\n this.context.eventController.publishEvent('attendeePresenceReceived', {\\n attendeePresenceDurationMs: this.context.attendeePresenceDurationMs,\\n });\\n }\\n }\\n };\\n this.reconnectionHealthPolicy = new ReconnectionHealthPolicy_1.default(context.logger, Object.assign({}, connectionHealthPolicyConfiguration), this.initialConnectionHealthData.clone());\\n this.unusableAudioWarningHealthPolicy = new UnusableAudioWarningConnectionHealthPolicy_1.default(Object.assign({}, connectionHealthPolicyConfiguration), this.initialConnectionHealthData.clone());\\n }\\n removeObserver() {\\n this.context.audioVideoController.removeObserver(this);\\n this.context.realtimeController.realtimeUnsubscribeToFatalError(this.realtimeFatalErrorCallback);\\n this.context.realtimeController.realtimeUnsubscribeToLocalSignalStrengthChange(this.checkAndSendWeakSignalEvent);\\n this.context.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(this.realtimeAttendeeIdPresenceHandler);\\n this.context.signalingClient.removeObserver(this);\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.context.removableObservers.push(this);\\n this.context.audioVideoController.addObserver(this);\\n this.context.realtimeController.realtimeSubscribeToFatalError(this.realtimeFatalErrorCallback);\\n this.context.realtimeController.realtimeSubscribeToLocalSignalStrengthChange(this.checkAndSendWeakSignalEvent);\\n this.context.realtimeController.realtimeSubscribeToAttendeeIdPresence(this.realtimeAttendeeIdPresenceHandler);\\n this.context.connectionMonitor.start();\\n this.context.statsCollector.start(this.context.signalingClient, this.context.videoStreamIndex);\\n this.context.signalingClient.registerObserver(this);\\n });\\n }\\n videoTileDidUpdate(_tileState) {\\n this.context.maxVideoTileCount = Math.max(this.context.maxVideoTileCount, this.context.videoTileController.getAllVideoTiles().length);\\n }\\n videoSendHealthDidChange(bitrateKbps, packetsPerSecond) {\\n if (this.context.videoInputAttachedTimestampMs === 0 ||\\n !this.context.videoTileController.hasStartedLocalVideoTile() ||\\n !this.context.lastKnownVideoAvailability.canStartLocalVideo) {\\n return;\\n }\\n const tracks = this.context.activeVideoInput !== null ? this.context.activeVideoInput.getTracks() : null;\\n if (!tracks || !tracks[0]) {\\n return;\\n }\\n const durationMs = Date.now() - this.context.videoInputAttachedTimestampMs;\\n if (packetsPerSecond > 0 || bitrateKbps > 0) {\\n this.context.statsCollector.logVideoEvent(VideoLogEvent_1.default.SendingSuccess, this.context.videoDeviceInformation);\\n this.context.statsCollector.logLatency('video_start_sending', durationMs, this.context.videoDeviceInformation);\\n this.context.videoInputAttachedTimestampMs = 0;\\n }\\n else if (durationMs > MonitorTask.DEFAULT_TIMEOUT_FOR_START_SENDING_VIDEO_MS) {\\n this.context.statsCollector.logVideoEvent(VideoLogEvent_1.default.SendingFailed, this.context.videoDeviceInformation);\\n this.context.videoInputAttachedTimestampMs = 0;\\n }\\n }\\n videoReceiveBandwidthDidChange(newBandwidthKbps, oldBandwidthKbps) {\\n this.logger.debug(() => {\\n return `receiving bandwidth changed from prev=${oldBandwidthKbps} Kbps to curr=${newBandwidthKbps} Kbps`;\\n });\\n this.currentVideoDownlinkBandwidthEstimationKbps = newBandwidthKbps;\\n }\\n checkResubscribe(clientMetricReport) {\\n const metricReport = clientMetricReport.getObservableMetrics();\\n if (!metricReport) {\\n return false;\\n }\\n const availableSendBandwidth = metricReport.availableSendBandwidth || metricReport.availableOutgoingBitrate;\\n const nackCountPerSecond = metricReport.nackCountReceivedPerSecond || metricReport.googNackCountReceivedPerSecond;\\n let needResubscribe = false;\\n this.context.videoDownlinkBandwidthPolicy.updateMetrics(clientMetricReport);\\n const resubscribeForDownlink = this.context.videoDownlinkBandwidthPolicy.wantsResubscribe();\\n needResubscribe = needResubscribe || resubscribeForDownlink;\\n if (resubscribeForDownlink) {\\n this.context.videosToReceive = this.context.videoDownlinkBandwidthPolicy.chooseSubscriptions();\\n this.logger.info(`trigger resubscribe for down=${resubscribeForDownlink}; videosToReceive=[${this.context.videosToReceive.array()}]`);\\n }\\n if (this.context.videoTileController.hasStartedLocalVideoTile()) {\\n this.context.videoUplinkBandwidthPolicy.updateConnectionMetric({\\n uplinkKbps: availableSendBandwidth / 1000,\\n nackCountPerSecond: nackCountPerSecond,\\n });\\n const resubscribeForUplink = this.context.videoUplinkBandwidthPolicy.wantsResubscribe();\\n needResubscribe = needResubscribe || resubscribeForUplink;\\n if (resubscribeForUplink) {\\n this.logger.info(`trigger resubscribe for up=${resubscribeForUplink}; videosToReceive=[${this.context.videosToReceive.array()}]`);\\n this.context.videoUplinkBandwidthPolicy.chooseEncodingParameters();\\n this.context.videoUplinkBandwidthPolicy.chooseMediaTrackConstraints();\\n }\\n }\\n return needResubscribe;\\n }\\n metricsDidReceive(clientMetricReport) {\\n const defaultClientMetricReport = clientMetricReport;\\n if (!defaultClientMetricReport) {\\n return;\\n }\\n if (this.checkResubscribe(clientMetricReport)) {\\n this.context.audioVideoController.update();\\n }\\n if (!this.currentAvailableStreamAvgBitrates) {\\n return;\\n }\\n const streamMetricReport = defaultClientMetricReport.streamMetricReports;\\n if (!streamMetricReport) {\\n return;\\n }\\n const downlinkVideoStream = new Map();\\n const videoReceivingBitrateMap = new Map();\\n // TODO: move those logic to stats collector.\\n for (const ssrc in streamMetricReport) {\\n if (streamMetricReport[ssrc].mediaType === ClientMetricReportMediaType_1.default.VIDEO &&\\n streamMetricReport[ssrc].direction === ClientMetricReportDirection_1.default.DOWNSTREAM) {\\n downlinkVideoStream.set(streamMetricReport[ssrc].streamId, streamMetricReport[ssrc]);\\n }\\n }\\n let fireCallback = false;\\n for (const bitrate of this.currentAvailableStreamAvgBitrates.bitrates) {\\n if (downlinkVideoStream.has(bitrate.sourceStreamId)) {\\n const report = downlinkVideoStream.get(bitrate.sourceStreamId);\\n const attendeeId = this.context.videoStreamIndex.attendeeIdForStreamId(bitrate.sourceStreamId);\\n if (!attendeeId) {\\n continue;\\n }\\n const newReport = new ClientVideoStreamReceivingReport_1.default();\\n const prevBytesReceived = report.previousMetrics['bytesReceived'];\\n const currBytesReceived = report.currentMetrics['bytesReceived'];\\n if (!prevBytesReceived || !currBytesReceived) {\\n continue;\\n }\\n const receivedBitrate = ((currBytesReceived - prevBytesReceived) * 8) / 1000;\\n newReport.expectedAverageBitrateKbps = bitrate.avgBitrateBps / 1000;\\n newReport.receivedAverageBitrateKbps = receivedBitrate;\\n newReport.attendeeId = attendeeId;\\n if (receivedBitrate <\\n (bitrate.avgBitrateBps / 1000) * MonitorTask.DEFAULT_DOWNLINK_CALLRATE_UNDERSHOOT_FACTOR) {\\n fireCallback = true;\\n }\\n videoReceivingBitrateMap.set(attendeeId, newReport);\\n }\\n }\\n if (fireCallback) {\\n this.logger.debug(() => {\\n return `Downlink video streams are not receiving enough data`;\\n });\\n this.context.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.videoNotReceivingEnoughData).map(f => f.bind(observer)(Array.from(videoReceivingBitrateMap.values())));\\n });\\n }\\n }\\n connectionHealthDidChange(connectionHealthData) {\\n var _a;\\n if (connectionHealthData.consecutiveMissedPongs === 0) {\\n if (this.context.reconnectController) {\\n this.context.reconnectController.setLastActiveTimestampMs(Date.now());\\n }\\n }\\n this.reconnectionHealthPolicy.update(connectionHealthData);\\n const reconnectionValue = this.reconnectionHealthPolicy.healthIfChanged();\\n if (reconnectionValue !== null) {\\n this.logger.info(`reconnection health is now: ${reconnectionValue}`);\\n if (reconnectionValue === 0) {\\n this.context.audioVideoController.handleMeetingSessionStatus(new MeetingSessionStatus_1.default(MeetingSessionStatusCode_1.default.ConnectionHealthReconnect), null);\\n }\\n }\\n this.unusableAudioWarningHealthPolicy.update(connectionHealthData);\\n const unusableAudioWarningValue = this.unusableAudioWarningHealthPolicy.healthIfChanged();\\n if (unusableAudioWarningValue !== null) {\\n this.logger.info(`unusable audio warning is now: ${unusableAudioWarningValue}`);\\n if (unusableAudioWarningValue === 0) {\\n this.context.poorConnectionCount += 1;\\n (_a = this.context.eventController) === null || _a === void 0 ? void 0 : _a.pushMeetingState('receivingAudioDropped');\\n if (this.context.videoTileController.haveVideoTilesWithStreams()) {\\n this.context.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.connectionDidSuggestStopVideo).map(f => f.bind(observer)());\\n });\\n }\\n else {\\n this.context.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.connectionDidBecomePoor).map(f => f.bind(observer)());\\n });\\n }\\n }\\n else {\\n this.context.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.connectionDidBecomeGood).map(f => f.bind(observer)());\\n });\\n }\\n }\\n }\\n handleBitrateFrame(bitrates) {\\n const videoSubscription = this.context.videoSubscriptions || [];\\n let requiredBandwidthKbps = 0;\\n this.currentAvailableStreamAvgBitrates = bitrates;\\n this.logger.debug(() => {\\n return `simulcast: bitrates from server ${JSON.stringify(bitrates)}`;\\n });\\n for (const bitrate of bitrates.bitrates) {\\n if (videoSubscription.indexOf(bitrate.sourceStreamId) !== -1) {\\n requiredBandwidthKbps += bitrate.avgBitrateBps;\\n }\\n }\\n requiredBandwidthKbps /= 1000;\\n if (this.currentVideoDownlinkBandwidthEstimationKbps *\\n MonitorTask.DEFAULT_DOWNLINK_CALLRATE_OVERSHOOT_FACTOR <\\n requiredBandwidthKbps) {\\n this.logger.info(`Downlink bandwidth pressure is high: estimated bandwidth ${this.currentVideoDownlinkBandwidthEstimationKbps}Kbps, required bandwidth ${requiredBandwidthKbps}Kbps`);\\n this.context.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.estimatedDownlinkBandwidthLessThanRequired).map(f => f.bind(observer)(this.currentVideoDownlinkBandwidthEstimationKbps, requiredBandwidthKbps));\\n });\\n }\\n }\\n handleSignalingClientEvent(event) {\\n var _a;\\n // Don't add two or more consecutive \\\"signalingDropped\\\" states.\\n if ((event.type === SignalingClientEventType_1.default.WebSocketClosed &&\\n (event.closeCode === 4410 || (event.closeCode >= 4500 && event.closeCode < 4600))) ||\\n event.type === SignalingClientEventType_1.default.WebSocketError ||\\n event.type === SignalingClientEventType_1.default.WebSocketFailed) {\\n if (!this.hasSignalingError) {\\n (_a = this.context.eventController) === null || _a === void 0 ? void 0 : _a.pushMeetingState('signalingDropped');\\n this.hasSignalingError = true;\\n }\\n }\\n else if (event.type === SignalingClientEventType_1.default.WebSocketOpen) {\\n this.hasSignalingError = false;\\n }\\n if (event.type === SignalingClientEventType_1.default.ReceivedSignalFrame) {\\n if (!!event.message.bitrates) {\\n const bitrateFrame = event.message.bitrates;\\n this.context.videoStreamIndex.integrateBitratesFrame(bitrateFrame);\\n this.context.videoDownlinkBandwidthPolicy.updateIndex(this.context.videoStreamIndex);\\n this.handleBitrateFrame(event.message.bitrates);\\n }\\n const status = MeetingSessionStatus_1.default.fromSignalFrame(event.message);\\n if (status.statusCode() !== MeetingSessionStatusCode_1.default.OK) {\\n this.context.audioVideoController.handleMeetingSessionStatus(status, null);\\n }\\n }\\n }\\n}\\nexports[\\\"default\\\"] = MonitorTask;\\nMonitorTask.DEFAULT_TIMEOUT_FOR_START_SENDING_VIDEO_MS = 30000;\\nMonitorTask.DEFAULT_DOWNLINK_CALLRATE_OVERSHOOT_FACTOR = 1.5;\\nMonitorTask.DEFAULT_DOWNLINK_CALLRATE_UNDERSHOOT_FACTOR = 0.5;\\n//# sourceMappingURL=MonitorTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/MonitorTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/NoOpTask.js\":\n/*!*****************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/NoOpTask.js ***!\n \\*****************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass NoOpTask {\\n cancel() { }\\n name() {\\n return 'NoOpTask';\\n }\\n run() {\\n return;\\n }\\n setParent(_parentTask) { }\\n}\\nexports[\\\"default\\\"] = NoOpTask;\\n//# sourceMappingURL=NoOpTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/NoOpTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/OpenSignalingConnectionTask.js\":\n/*!************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/OpenSignalingConnectionTask.js ***!\n \\************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SignalingClientConnectionRequest_1 = __webpack_require__(/*! ../signalingclient/SignalingClientConnectionRequest */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientConnectionRequest.js\\\");\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ../signalingclient/SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\nclass OpenSignalingConnectionTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'OpenSignalingConnectionTask';\\n this.taskCanceler = null;\\n }\\n cancel() {\\n if (this.taskCanceler) {\\n this.taskCanceler.cancel();\\n this.taskCanceler = null;\\n }\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const configuration = this.context.meetingSessionConfiguration;\\n this.context.signalingClient.openConnection(new SignalingClientConnectionRequest_1.default(configuration.urls.signalingURL, configuration.credentials.joinToken));\\n const startTimeMs = Date.now();\\n try {\\n yield new Promise((resolve, reject) => {\\n class WebSocketOpenInterceptor {\\n constructor(signalingClient) {\\n this.signalingClient = signalingClient;\\n }\\n cancel() {\\n this.signalingClient.removeObserver(this);\\n reject(new Error(`OpenSignalingConnectionTask got canceled while waiting to open signaling connection`));\\n }\\n handleSignalingClientEvent(event) {\\n switch (event.type) {\\n case SignalingClientEventType_1.default.WebSocketOpen:\\n this.signalingClient.removeObserver(this);\\n resolve();\\n break;\\n case SignalingClientEventType_1.default.WebSocketFailed:\\n this.signalingClient.removeObserver(this);\\n reject(new Error('WebSocket connection failed'));\\n break;\\n }\\n }\\n }\\n const interceptor = new WebSocketOpenInterceptor(this.context.signalingClient);\\n this.context.signalingClient.registerObserver(interceptor);\\n this.taskCanceler = interceptor;\\n });\\n }\\n catch (error) {\\n throw error;\\n }\\n finally {\\n this.context.signalingOpenDurationMs = Math.round(Date.now() - startTimeMs);\\n }\\n });\\n }\\n}\\nexports[\\\"default\\\"] = OpenSignalingConnectionTask;\\n//# sourceMappingURL=OpenSignalingConnectionTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/OpenSignalingConnectionTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/ParallelGroupTask.js\":\n/*!**************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/ParallelGroupTask.js ***!\n \\**************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/**\\n * [[ParallelGroupTask]] runs a set of tasks in parallel. When canceled, it\\n * stops any currently running tasks.\\n */\\nclass ParallelGroupTask extends BaseTask_1.default {\\n constructor(logger, taskName, tasksToRunParallel) {\\n super(logger);\\n this.taskName = taskName;\\n this.tasksToRunParallel = tasksToRunParallel;\\n for (const task of tasksToRunParallel) {\\n task.setParent(this);\\n }\\n }\\n cancel() {\\n for (const task of this.tasksToRunParallel) {\\n this.logger.info(`canceling parallel group task ${this.name()} subtask ${task.name()}`);\\n task.cancel();\\n }\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const taskResults = [];\\n for (const task of this.tasksToRunParallel) {\\n this.logger.info(`parallel group task ${this.name()} running subtask ${task.name()}`);\\n taskResults.push(task.run());\\n }\\n const failures = [];\\n for (let i = 0; i < taskResults.length; i++) {\\n try {\\n yield taskResults[i];\\n }\\n catch (err) {\\n failures.push(`task ${this.tasksToRunParallel[i].name()} failed: ${err.message}`);\\n }\\n this.logger.info(`parallel group task ${this.name()} completed subtask ${this.tasksToRunParallel[i].name()}`);\\n }\\n if (failures.length > 0) {\\n const failureMessage = failures.join(', ');\\n this.logAndThrow(`parallel group task ${this.name()} failed for tasks: ${failureMessage}`);\\n }\\n this.logger.info(`parallel group task ${this.name()} completed`);\\n });\\n }\\n}\\nexports[\\\"default\\\"] = ParallelGroupTask;\\n//# sourceMappingURL=ParallelGroupTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/ParallelGroupTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/ReceiveAudioInputTask.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/ReceiveAudioInputTask.js ***!\n \\******************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/**\\n * [[ReceiveAudioInputTask]] acquires an audio input.\\n */\\nclass ReceiveAudioInputTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'ReceiveAudioInputTask';\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.context.activeAudioInput) {\\n this.context.logger.info(`an active audio input exists`);\\n return;\\n }\\n let audioInput = null;\\n try {\\n audioInput = yield this.context.mediaStreamBroker.acquireAudioInputStream();\\n }\\n catch (error) {\\n this.context.logger.warn('could not acquire audio input from current device');\\n }\\n if (audioInput) {\\n this.context.activeAudioInput = audioInput;\\n this.context.realtimeController.realtimeSetLocalAudioInput(audioInput);\\n }\\n else {\\n this.context.logger.warn('an audio input is not available');\\n }\\n });\\n }\\n}\\nexports[\\\"default\\\"] = ReceiveAudioInputTask;\\n//# sourceMappingURL=ReceiveAudioInputTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/ReceiveAudioInputTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/ReceiveTURNCredentialsTask.js\":\n/*!***********************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/ReceiveTURNCredentialsTask.js ***!\n \\***********************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst MeetingSessionStatusCode_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionStatusCode */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js\\\");\\nconst MeetingSessionTURNCredentials_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionTURNCredentials */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionTURNCredentials.js\\\");\\nconst DefaultModality_1 = __webpack_require__(/*! ../modality/DefaultModality */ \\\"./node_modules/amazon-chime-sdk-js/build/modality/DefaultModality.js\\\");\\nconst Versioning_1 = __webpack_require__(/*! ../versioning/Versioning */ \\\"./node_modules/amazon-chime-sdk-js/build/versioning/Versioning.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/*\\n * [[ReceiveTURNCredentialsTask]] asynchronously retrieves TURN credentials.\\n */\\nclass ReceiveTURNCredentialsTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'ReceiveTURNCredentialsTask';\\n this.url = context.meetingSessionConfiguration.urls.turnControlURL;\\n this.meetingId = context.meetingSessionConfiguration.meetingId;\\n this.joinToken = context.meetingSessionConfiguration.credentials.joinToken;\\n }\\n cancel() {\\n // Just in case. The baseCancel behavior should prevent this.\\n /* istanbul ignore else */\\n if (this.cancelPromise) {\\n const error = new Error(`canceling ${this.name()}`);\\n this.cancelPromise(error);\\n delete this.cancelPromise;\\n }\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.context.turnCredentials) {\\n this.context.logger.info('TURN credentials available, skipping credentials fetch');\\n return;\\n }\\n this.context.logger.error('missing TURN credentials - falling back to fetch');\\n if (!this.url) {\\n this.context.logger.info('TURN control url not supplied, skipping credentials fetch');\\n return;\\n }\\n const options = {\\n method: 'POST',\\n mode: 'cors',\\n cache: 'no-cache',\\n credentials: 'omit',\\n headers: {\\n 'Content-Type': 'application/json',\\n 'X-Chime-Auth-Token': '_aws_wt_session=' + new DefaultModality_1.default(this.joinToken).base(),\\n },\\n redirect: 'follow',\\n referrer: 'no-referrer',\\n body: JSON.stringify({ meetingId: this.meetingId }),\\n };\\n this.context.logger.info(`requesting TURN credentials from ${this.url}`);\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n const responseBodyJson = yield new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\\n this.cancelPromise = (error) => {\\n reject(error);\\n };\\n try {\\n const responseBody = yield fetch(Versioning_1.default.urlWithVersion(this.url), options);\\n this.context.logger.info(`received TURN credentials`);\\n if (responseBody.status && responseBody.status === 403) {\\n reject(new Error(`canceling ${this.name()} due to the meeting status code: ${MeetingSessionStatusCode_1.default.TURNCredentialsForbidden}`));\\n return;\\n }\\n if (responseBody.status && responseBody.status === 404) {\\n reject(new Error(`canceling ${this.name()} due to the meeting status code: ${MeetingSessionStatusCode_1.default.MeetingEnded}`));\\n return;\\n }\\n resolve(yield responseBody.json());\\n }\\n catch (error) {\\n reject(error);\\n }\\n finally {\\n delete this.cancelPromise;\\n }\\n }));\\n this.context.turnCredentials = new MeetingSessionTURNCredentials_1.default();\\n this.context.turnCredentials.password = responseBodyJson.password;\\n this.context.turnCredentials.ttl = responseBodyJson.ttl;\\n this.context.turnCredentials.uris = responseBodyJson.uris\\n .map((uri) => {\\n return this.context.meetingSessionConfiguration.urls.urlRewriter(uri);\\n })\\n .filter((uri) => {\\n return !!uri;\\n });\\n this.context.turnCredentials.username = responseBodyJson.username;\\n });\\n }\\n}\\nexports[\\\"default\\\"] = ReceiveTURNCredentialsTask;\\n//# sourceMappingURL=ReceiveTURNCredentialsTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/ReceiveTURNCredentialsTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/ReceiveVideoInputTask.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/ReceiveVideoInputTask.js ***!\n \\******************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/**\\n * [[ReceiveVideoInputTask]] acquires a video input from [[DeviceController]].\\n */\\nclass ReceiveVideoInputTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'ReceiveVideoInputTask';\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n // TODO: move videoDuplexMode and videoCaptureAndEncodeParameters to video tile controller\\n const receiveEnabled = this.context.videoDuplexMode === SignalingProtocol_js_1.SdkStreamServiceType.RX ||\\n this.context.videoDuplexMode === SignalingProtocol_js_1.SdkStreamServiceType.DUPLEX;\\n if (this.context.videoTileController.hasStartedLocalVideoTile()) {\\n this.context.videoDuplexMode = receiveEnabled\\n ? SignalingProtocol_js_1.SdkStreamServiceType.DUPLEX\\n : SignalingProtocol_js_1.SdkStreamServiceType.TX;\\n }\\n else {\\n this.context.videoDuplexMode = receiveEnabled ? SignalingProtocol_js_1.SdkStreamServiceType.RX : 0;\\n }\\n this.context.videoCaptureAndEncodeParameter = this.context.videoUplinkBandwidthPolicy.chooseCaptureAndEncodeParameters();\\n if (!this.context.videoTileController.hasStartedLocalVideoTile()) {\\n this.context.logger.info('has not started local video tile');\\n if (this.context.activeVideoInput) {\\n this.stopVideoInput();\\n }\\n return;\\n }\\n // TODO: bind after ICE connection started in case of a failure to resubscribe\\n // or perform error handling to unbind video stream.\\n const localTile = this.context.videoTileController.getLocalVideoTile();\\n let videoInput = null;\\n try {\\n videoInput = yield this.context.mediaStreamBroker.acquireVideoInputStream();\\n }\\n catch (error) {\\n this.context.logger.warn('could not acquire video input from current device');\\n }\\n if (this.context.enableSimulcast) {\\n const encodingParams = this.context.videoUplinkBandwidthPolicy.chooseEncodingParameters();\\n this.context.videoStreamIndex.integrateUplinkPolicyDecision(Array.from(encodingParams.values()));\\n }\\n this.context.activeVideoInput = videoInput;\\n if (videoInput) {\\n const videoTracks = videoInput.getVideoTracks();\\n const attendeeId = this.context.meetingSessionConfiguration.credentials.attendeeId;\\n const trackSettings = videoTracks[0].getSettings();\\n if (this.context.enableSimulcast) {\\n const constraint = this.context.videoUplinkBandwidthPolicy.chooseMediaTrackConstraints();\\n this.context.logger.info(`simulcast: choose constraint ${JSON.stringify(constraint)}`);\\n try {\\n yield videoTracks[0].applyConstraints(constraint);\\n }\\n catch (error) {\\n this.context.logger.info('simulcast: pass video without more constraint');\\n }\\n }\\n const externalUserId = this.context.audioVideoController.configuration.credentials\\n .externalUserId;\\n localTile.bindVideoStream(attendeeId, true, videoInput, trackSettings.width, trackSettings.height, null, externalUserId);\\n for (let i = 0; i < videoTracks.length; i++) {\\n const track = videoTracks[i];\\n this.logger.info(`using video device label=${track.label} id=${track.id}`);\\n this.context.videoDeviceInformation['current_camera_name'] = track.label;\\n this.context.videoDeviceInformation['current_camera_id'] = track.id;\\n }\\n }\\n });\\n }\\n stopVideoInput() {\\n this.context.mediaStreamBroker.releaseMediaStream(this.context.activeVideoInput);\\n this.context.activeVideoInput = null;\\n }\\n}\\nexports[\\\"default\\\"] = ReceiveVideoInputTask;\\n//# sourceMappingURL=ReceiveVideoInputTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/ReceiveVideoInputTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/ReceiveVideoStreamIndexTask.js\":\n/*!************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/ReceiveVideoStreamIndexTask.js ***!\n \\************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst Maybe_1 = __webpack_require__(/*! ../maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nconst MeetingSessionVideoAvailability_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionVideoAvailability */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionVideoAvailability.js\\\");\\nconst DefaultModality_1 = __webpack_require__(/*! ../modality/DefaultModality */ \\\"./node_modules/amazon-chime-sdk-js/build/modality/DefaultModality.js\\\");\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ../signalingclient/SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/*\\n * [[ReceiveVideoStreamIndexTask]] receives [[SdkIndexFrame]] and updates [[VideoUplinkBandwidthPolicy]] and [[VideoDownlinkBandwidthPolicy]].\\n */\\nclass ReceiveVideoStreamIndexTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'ReceiveVideoStreamIndexTask';\\n }\\n removeObserver() {\\n this.context.signalingClient.removeObserver(this);\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.handleIndexFrame(this.context.indexFrame);\\n this.context.signalingClient.registerObserver(this);\\n this.context.removableObservers.push(this);\\n });\\n }\\n handleSignalingClientEvent(event) {\\n if (event.type !== SignalingClientEventType_1.default.ReceivedSignalFrame ||\\n event.message.type !== SignalingProtocol_js_1.SdkSignalFrame.Type.INDEX) {\\n return;\\n }\\n // @ts-ignore: force cast to SdkIndexFrame\\n const indexFrame = event.message.index;\\n this.context.logger.info(`received new index ${JSON.stringify(indexFrame)}`);\\n this.handleIndexFrame(indexFrame);\\n }\\n handleIndexFrame(indexFrame) {\\n if (!indexFrame) {\\n return;\\n }\\n // Filter out self content share video\\n const selfAttendeeId = this.context.audioVideoController.configuration.credentials.attendeeId;\\n indexFrame.sources = indexFrame.sources.filter(source => {\\n const modality = new DefaultModality_1.default(source.attendeeId);\\n return !(modality.base() === selfAttendeeId && modality.hasModality(DefaultModality_1.default.MODALITY_CONTENT));\\n });\\n const { videoStreamIndex, videoDownlinkBandwidthPolicy, videoUplinkBandwidthPolicy, } = this.context;\\n const oldVideoSources = videoStreamIndex.allVideoSendingSourcesExcludingSelf(selfAttendeeId);\\n videoStreamIndex.integrateIndexFrame(indexFrame);\\n videoDownlinkBandwidthPolicy.updateIndex(videoStreamIndex);\\n videoUplinkBandwidthPolicy.updateIndex(videoStreamIndex);\\n this.resubscribe(videoDownlinkBandwidthPolicy, videoUplinkBandwidthPolicy);\\n this.updateVideoAvailability(indexFrame);\\n this.handleIndexVideosPausedAtSource();\\n const newVideoSources = videoStreamIndex.allVideoSendingSourcesExcludingSelf(selfAttendeeId);\\n if (!this.areVideoSourcesEqual(oldVideoSources, newVideoSources)) {\\n this.context.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.remoteVideoSourcesDidChange).map(f => f.bind(observer)(newVideoSources));\\n });\\n }\\n }\\n areVideoSourcesEqual(oldVideoSources, newVideoSources) {\\n if (oldVideoSources.length !== newVideoSources.length) {\\n return false;\\n }\\n const compare = (videoSourceA, videoSourceB) => videoSourceA.attendee.attendeeId.localeCompare(videoSourceB.attendee.attendeeId);\\n const sortedOldVideoSources = [...oldVideoSources].sort(compare);\\n const sortedNewVideoSources = [...newVideoSources].sort(compare);\\n for (let i = 0; i < sortedOldVideoSources.length; i++) {\\n if (sortedOldVideoSources[i].attendee.attendeeId !==\\n sortedNewVideoSources[i].attendee.attendeeId) {\\n return false;\\n }\\n }\\n return true;\\n }\\n resubscribe(videoDownlinkBandwidthPolicy, videoUplinkBandwidthPolicy) {\\n const resubscribeForDownlink = videoDownlinkBandwidthPolicy.wantsResubscribe();\\n const resubscribeForUplink = (this.context.videoDuplexMode === SignalingProtocol_js_1.SdkStreamServiceType.TX ||\\n this.context.videoDuplexMode === SignalingProtocol_js_1.SdkStreamServiceType.DUPLEX) &&\\n videoUplinkBandwidthPolicy.wantsResubscribe();\\n const shouldResubscribe = resubscribeForDownlink || resubscribeForUplink;\\n this.logger.info(`should resubscribe: ${shouldResubscribe} (downlink: ${resubscribeForDownlink} uplink: ${resubscribeForUplink})`);\\n if (!shouldResubscribe) {\\n return;\\n }\\n this.context.videosToReceive = videoDownlinkBandwidthPolicy.chooseSubscriptions();\\n this.context.videoCaptureAndEncodeParameter = videoUplinkBandwidthPolicy.chooseCaptureAndEncodeParameters();\\n this.logger.info(`trigger resubscribe for up=${resubscribeForUplink} down=${resubscribeForDownlink}; videosToReceive=[${this.context.videosToReceive.array()}] captureParams=${JSON.stringify(this.context.videoCaptureAndEncodeParameter)}`);\\n this.context.audioVideoController.update();\\n }\\n updateVideoAvailability(indexFrame) {\\n if (!this.context.videosToReceive) {\\n this.logger.error('videosToReceive must be set in the meeting context.');\\n return;\\n }\\n const videoAvailability = new MeetingSessionVideoAvailability_1.default();\\n videoAvailability.remoteVideoAvailable = !this.context.videosToReceive.empty();\\n videoAvailability.canStartLocalVideo = !indexFrame.atCapacity;\\n if (!this.context.lastKnownVideoAvailability ||\\n !this.context.lastKnownVideoAvailability.equal(videoAvailability)) {\\n this.context.lastKnownVideoAvailability = videoAvailability.clone();\\n this.context.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.videoAvailabilityDidChange).map(f => f.bind(observer)(videoAvailability.clone()));\\n });\\n }\\n }\\n handleIndexVideosPausedAtSource() {\\n const streamsPausedAtSource = this.context.videoStreamIndex.streamsPausedAtSource();\\n for (const tile of this.context.videoTileController.getAllVideoTiles()) {\\n const tileState = tile.state();\\n if (streamsPausedAtSource.contain(tileState.streamId)) {\\n if (tile.markPoorConnection()) {\\n this.logger.info(`marks the tile ${tileState.tileId} as having a poor connection`);\\n }\\n }\\n else {\\n if (tile.unmarkPoorConnection()) {\\n this.logger.info(`unmarks the tile ${tileState.tileId} as having a poor connection`);\\n }\\n }\\n }\\n }\\n}\\nexports[\\\"default\\\"] = ReceiveVideoStreamIndexTask;\\n//# sourceMappingURL=ReceiveVideoStreamIndexTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/ReceiveVideoStreamIndexTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/RunnableTask.js\":\n/*!*********************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/RunnableTask.js ***!\n \\*********************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/**\\n * [[RunnableTask]] Task wrapper for any Promised-operation\\n */\\nclass RunnableTask extends BaseTask_1.default {\\n constructor(logger, fn, taskName = 'RunnableTask') {\\n super(logger);\\n this.fn = fn;\\n this.taskName = taskName;\\n }\\n run() {\\n return this.fn().then(() => { });\\n }\\n}\\nexports[\\\"default\\\"] = RunnableTask;\\n//# sourceMappingURL=RunnableTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/RunnableTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/SendAndReceiveDataMessagesTask.js\":\n/*!***************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/SendAndReceiveDataMessagesTask.js ***!\n \\***************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DataMessage_1 = __webpack_require__(/*! ../datamessage/DataMessage */ \\\"./node_modules/amazon-chime-sdk-js/build/datamessage/DataMessage.js\\\");\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ../signalingclient/SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\nclass SendAndReceiveDataMessagesTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'SendAndReceiveDataMessagesTask';\\n this.sendDataMessageHandler = (topic, data, // eslint-disable-line @typescript-eslint/no-explicit-any\\n lifetimeMs) => {\\n if (this.context.signalingClient.ready()) {\\n let uint8Data;\\n if (data instanceof Uint8Array) {\\n uint8Data = data;\\n }\\n else if (typeof data === 'string') {\\n uint8Data = new TextEncoder().encode(data);\\n }\\n else {\\n uint8Data = new TextEncoder().encode(JSON.stringify(data));\\n }\\n this.validateDataMessage(topic, uint8Data, lifetimeMs);\\n const message = SignalingProtocol_js_1.SdkDataMessagePayload.create();\\n message.topic = topic;\\n message.lifetimeMs = lifetimeMs;\\n message.data = uint8Data;\\n const messageFrame = SignalingProtocol_js_1.SdkDataMessageFrame.create();\\n messageFrame.messages = [message];\\n this.context.signalingClient.sendDataMessage(messageFrame);\\n }\\n else {\\n throw new Error('Signaling client is not ready');\\n }\\n };\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.context.removableObservers.push(this);\\n this.context.signalingClient.registerObserver(this);\\n this.context.realtimeController.realtimeSubscribeToSendDataMessage(this.sendDataMessageHandler);\\n });\\n }\\n removeObserver() {\\n this.context.realtimeController.realtimeUnsubscribeFromSendDataMessage(this.sendDataMessageHandler);\\n this.context.signalingClient.removeObserver(this);\\n }\\n handleSignalingClientEvent(event) {\\n if (event.type === SignalingClientEventType_1.default.ReceivedSignalFrame &&\\n event.message.type === SignalingProtocol_js_1.SdkSignalFrame.Type.DATA_MESSAGE) {\\n for (const message of event.message.dataMessage.messages) {\\n const dataMessage = new DataMessage_1.default(message.ingestTimeNs / 1000000, message.topic, message.data, message.senderAttendeeId, message.senderExternalUserId, message.ingestTimeNs === 0);\\n this.context.realtimeController.realtimeReceiveDataMessage(dataMessage);\\n }\\n }\\n }\\n validateDataMessage(topic, data, lifetimeMs) {\\n if (!SendAndReceiveDataMessagesTask.TOPIC_REGEX.test(topic)) {\\n throw new Error('Invalid topic');\\n }\\n if (data.length > SendAndReceiveDataMessagesTask.DATA_SIZE) {\\n throw new Error('Data size has to be less than 2048 bytes');\\n }\\n if (lifetimeMs && lifetimeMs < 0) {\\n throw new Error('The life time of the message has to be non negative');\\n }\\n }\\n}\\nexports[\\\"default\\\"] = SendAndReceiveDataMessagesTask;\\nSendAndReceiveDataMessagesTask.TOPIC_REGEX = new RegExp(/^[a-zA-Z0-9_-]{1,36}$/);\\nSendAndReceiveDataMessagesTask.DATA_SIZE = 2048;\\n//# sourceMappingURL=SendAndReceiveDataMessagesTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/SendAndReceiveDataMessagesTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/SerialGroupTask.js\":\n/*!************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/SerialGroupTask.js ***!\n \\************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\nconst TaskStatus_1 = __webpack_require__(/*! ./TaskStatus */ \\\"./node_modules/amazon-chime-sdk-js/build/task/TaskStatus.js\\\");\\n/**\\n * [[SerialGroupTask]] runs a set of tasks in series. When canceled, it stops\\n * any currently running task and runs no further tasks in the group.\\n */\\nclass SerialGroupTask extends BaseTask_1.default {\\n constructor(logger, taskName, tasksToRunSerially) {\\n super(logger);\\n this.taskName = taskName;\\n this.tasksToRunSerially = tasksToRunSerially;\\n this.currentTask = null;\\n for (const task of tasksToRunSerially) {\\n task.setParent(this);\\n }\\n }\\n cancel() {\\n if (this.currentTask) {\\n this.logger.info(`canceling serial group task ${this.name()} subtask ${this.currentTask.name()}`);\\n this.currentTask.cancel();\\n }\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n for (const task of this.tasksToRunSerially) {\\n if (this.getStatus() === TaskStatus_1.default.CANCELED) {\\n this.logAndThrow(`serial group task ${this.name()} was canceled`);\\n }\\n try {\\n this.logger.info(`serial group task ${this.name()} running subtask ${task.name()}`);\\n this.currentTask = task;\\n yield task.run();\\n this.logger.info(`serial group task ${this.name()} completed subtask ${task.name()}`);\\n }\\n catch (err) {\\n this.logAndThrow(`serial group task ${this.name()} was canceled due to subtask ` +\\n `${this.currentTask.name()} error: ${err.message}`);\\n }\\n finally {\\n this.currentTask = null;\\n }\\n }\\n this.logger.info(`serial group task ${this.name()} completed`);\\n });\\n }\\n}\\nexports[\\\"default\\\"] = SerialGroupTask;\\n//# sourceMappingURL=SerialGroupTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/SerialGroupTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/SetLocalDescriptionTask.js\":\n/*!********************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/SetLocalDescriptionTask.js ***!\n \\********************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/*\\n * [[SetLocalDescriptionTask]] asynchronously calls [[setLocalDescription]] on peer connection.\\n */\\nclass SetLocalDescriptionTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'SetLocalDescriptionTask';\\n }\\n cancel() {\\n // Just in case. The baseCancel behavior should prevent this.\\n /* istanbul ignore else */\\n if (this.cancelPromise) {\\n const error = new Error(`canceling ${this.name()}`);\\n this.cancelPromise(error);\\n delete this.cancelPromise;\\n }\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const peer = this.context.peer;\\n const sdpOffer = this.context.sdpOfferInit;\\n this.logger.debug(() => {\\n return `local description is >>>${sdpOffer.sdp}<<<`;\\n });\\n yield new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\\n this.cancelPromise = (error) => {\\n reject(error);\\n };\\n try {\\n yield peer.setLocalDescription(sdpOffer);\\n resolve();\\n }\\n catch (error) {\\n reject(error);\\n }\\n finally {\\n delete this.cancelPromise;\\n }\\n }));\\n this.context.logger.info('set local description');\\n });\\n }\\n}\\nexports[\\\"default\\\"] = SetLocalDescriptionTask;\\n//# sourceMappingURL=SetLocalDescriptionTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/SetLocalDescriptionTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/SetRemoteDescriptionTask.js\":\n/*!*********************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/SetRemoteDescriptionTask.js ***!\n \\*********************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst DefaultSDP_1 = __webpack_require__(/*! ../sdp/DefaultSDP */ \\\"./node_modules/amazon-chime-sdk-js/build/sdp/DefaultSDP.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/*\\n * [[SetRemoteDescriptionTask]] asynchronously calls [[setRemoteDescription]] on the\\n * peer connection and then waits for the tracks to be added and for the ICE connection\\n * to complete.\\n */\\nclass SetRemoteDescriptionTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'SetRemoteDescriptionTask';\\n }\\n cancel() {\\n if (this.cancelICEPromise) {\\n this.cancelICEPromise();\\n }\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const peer = this.context.peer;\\n if (!peer) {\\n this.logAndThrow('session does not have peer connection; bypass set remote description');\\n }\\n let sdp = this.context.sdpAnswer;\\n sdp = new DefaultSDP_1.default(sdp).withoutServerReflexiveCandidates().sdp;\\n if (this.context.audioProfile) {\\n sdp = new DefaultSDP_1.default(sdp).withAudioMaxAverageBitrate(this.context.audioProfile.audioBitrateBps).sdp;\\n }\\n if (!this.context.browserBehavior.requiresUnifiedPlan()) {\\n // Under Plan B if our offer has video, but we're not going to subscribe to\\n // any videos, ensure that the answer has video (marked inactive). If\\n // it doesn't, WebRTC will reject the SDP answer. This happens on Chrome\\n // when going from receiving one video to zero videos. The server does not\\n // provide a video m-line when there are no videos available under Plan B,\\n // thus we need to synthesize a video m-line by copying the one from the offer.\\n this.logger.info('checking for no videos (plan-b)');\\n if (this.context.videosToReceive.empty() && this.context.peer.remoteDescription) {\\n this.logger.info('have no videos and have remote description (plan-b)');\\n const sdpInactiveVideoOffer = this.context.peer.localDescription.sdp;\\n const sdpInactiveVideoAnswer = sdp;\\n let updatedAnswer = sdpInactiveVideoAnswer;\\n const offer = new DefaultSDP_1.default(sdpInactiveVideoOffer);\\n if (offer.hasVideo()) {\\n this.logger.info(`offer has video (plan-b): >>>${offer.sdp}<<<`);\\n const answer = new DefaultSDP_1.default(sdpInactiveVideoAnswer);\\n this.logger.info(`existing answer (plan-b): >>>${answer.sdp}<<<`);\\n if (!answer.hasVideo()) {\\n this.logger.info(`copying inactive video from offer into answer (plan-b); sdp answer before is >>>${sdpInactiveVideoAnswer}<<<`);\\n updatedAnswer = answer.copyVideo(sdpInactiveVideoOffer).sdp;\\n }\\n }\\n sdp = updatedAnswer;\\n }\\n }\\n if (new DefaultBrowserBehavior_1.default().requiresSortCodecPreferencesForSdpAnswer()) {\\n sdp = new DefaultSDP_1.default(sdp).preferH264IfExists().sdp;\\n }\\n this.logger.info(`processed remote description is >>>${sdp}<<<`);\\n const remoteDescription = {\\n type: 'answer',\\n sdp: sdp,\\n toJSON: null,\\n };\\n try {\\n yield this.createICEConnectionCompletedPromise(remoteDescription);\\n }\\n catch (err) {\\n throw err;\\n }\\n });\\n }\\n createICEConnectionCompletedPromise(remoteDescription) {\\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\\n const checkConnectionCompleted = () => {\\n if (this.context.peer.iceConnectionState === 'connected' ||\\n this.context.peer.iceConnectionState === 'completed') {\\n this.context.peer.removeEventListener('iceconnectionstatechange', checkConnectionCompleted);\\n resolve();\\n }\\n };\\n this.cancelICEPromise = () => {\\n if (this.context.peer) {\\n this.context.peer.removeEventListener('iceconnectionstatechange', checkConnectionCompleted);\\n }\\n reject(new Error(`${this.name()} got canceled while waiting for the ICE connection state`));\\n };\\n this.context.peer.addEventListener('iceconnectionstatechange', checkConnectionCompleted);\\n try {\\n yield this.context.peer.setRemoteDescription(remoteDescription);\\n this.logger.info('set remote description, waiting for ICE connection');\\n checkConnectionCompleted();\\n }\\n catch (err) {\\n reject(err);\\n }\\n }));\\n }\\n}\\nexports[\\\"default\\\"] = SetRemoteDescriptionTask;\\n//# sourceMappingURL=SetRemoteDescriptionTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/SetRemoteDescriptionTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/SubscribeAndReceiveSubscribeAckTask.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/SubscribeAndReceiveSubscribeAckTask.js ***!\n \\********************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultSDP_1 = __webpack_require__(/*! ../sdp/DefaultSDP */ \\\"./node_modules/amazon-chime-sdk-js/build/sdp/DefaultSDP.js\\\");\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ../signalingclient/SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\nconst SignalingClientSubscribe_1 = __webpack_require__(/*! ../signalingclient/SignalingClientSubscribe */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientSubscribe.js\\\");\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/**\\n * [[SubscribeAndReceiveSubscribeAckTask]] sends a subscribe frame with the given settings\\n * and receives SdkSubscribeAckFrame.\\n */\\nclass SubscribeAndReceiveSubscribeAckTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'SubscribeAndReceiveSubscribeAckTask';\\n this.taskCanceler = null;\\n }\\n cancel() {\\n if (this.taskCanceler) {\\n this.taskCanceler.cancel();\\n this.taskCanceler = null;\\n }\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n let localSdp = '';\\n if (this.context.peer && this.context.peer.localDescription) {\\n if (this.context.browserBehavior.requiresUnifiedPlanMunging()) {\\n localSdp = new DefaultSDP_1.default(this.context.peer.localDescription.sdp).withUnifiedPlanFormat()\\n .sdp;\\n }\\n else {\\n localSdp = this.context.peer.localDescription.sdp;\\n }\\n }\\n if (!this.context.enableSimulcast) {\\n // backward compatibility\\n let frameRate = 0;\\n let maxEncodeBitrateKbps = 0;\\n if (this.context.videoCaptureAndEncodeParameter) {\\n frameRate = this.context.videoCaptureAndEncodeParameter.captureFrameRate();\\n maxEncodeBitrateKbps = this.context.videoCaptureAndEncodeParameter.encodeBitrates()[0];\\n }\\n const param = {\\n rid: 'hi',\\n maxBitrate: maxEncodeBitrateKbps * 1000,\\n maxFramerate: frameRate,\\n active: true,\\n };\\n this.context.videoStreamIndex.integrateUplinkPolicyDecision([param]);\\n }\\n this.context.videoStreamIndex.subscribeFrameSent();\\n const isSendingStreams = this.context.videoDuplexMode === SignalingProtocol_js_1.SdkStreamServiceType.TX ||\\n this.context.videoDuplexMode === SignalingProtocol_js_1.SdkStreamServiceType.DUPLEX;\\n this.context.previousSdpOffer = new DefaultSDP_1.default(localSdp);\\n const subscribe = new SignalingClientSubscribe_1.default(this.context.meetingSessionConfiguration.credentials.attendeeId, localSdp, this.context.meetingSessionConfiguration.urls.audioHostURL, this.context.realtimeController.realtimeIsLocalAudioMuted(), false, this.context.videoSubscriptions, isSendingStreams, this.context.videoStreamIndex.localStreamDescriptions(), \\n // TODO: handle check-in mode, or remove this param\\n true);\\n this.context.logger.info(`sending subscribe: ${JSON.stringify(subscribe)}`);\\n this.context.signalingClient.subscribe(subscribe);\\n const subscribeAckFrame = yield this.receiveSubscribeAck();\\n this.context.logger.info(`got subscribe ack: ${JSON.stringify(subscribeAckFrame)}`);\\n this.context.sdpAnswer = subscribeAckFrame.sdpAnswer;\\n this.context.videoStreamIndex.integrateSubscribeAckFrame(subscribeAckFrame);\\n });\\n }\\n receiveSubscribeAck() {\\n return new Promise((resolve, reject) => {\\n class Interceptor {\\n constructor(signalingClient) {\\n this.signalingClient = signalingClient;\\n }\\n cancel() {\\n this.signalingClient.removeObserver(this);\\n reject(new Error(`SubscribeAndReceiveSubscribeAckTask got canceled while waiting for SdkSubscribeAckFrame`));\\n }\\n handleSignalingClientEvent(event) {\\n if (event.type !== SignalingClientEventType_1.default.ReceivedSignalFrame ||\\n event.message.type !== SignalingProtocol_js_1.SdkSignalFrame.Type.SUBSCRIBE_ACK) {\\n return;\\n }\\n this.signalingClient.removeObserver(this);\\n // @ts-ignore: force cast to SdkSubscribeAckFrame\\n const subackFrame = event.message.suback;\\n resolve(subackFrame);\\n }\\n }\\n const interceptor = new Interceptor(this.context.signalingClient);\\n this.context.signalingClient.registerObserver(interceptor);\\n this.taskCanceler = interceptor;\\n });\\n }\\n}\\nexports[\\\"default\\\"] = SubscribeAndReceiveSubscribeAckTask;\\n//# sourceMappingURL=SubscribeAndReceiveSubscribeAckTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/SubscribeAndReceiveSubscribeAckTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/TaskStatus.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/TaskStatus.js ***!\n \\*******************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nvar TaskStatus;\\n(function (TaskStatus) {\\n TaskStatus[\\\"IDLE\\\"] = \\\"IDLE\\\";\\n TaskStatus[\\\"RUNNING\\\"] = \\\"RUNNING\\\";\\n TaskStatus[\\\"CANCELED\\\"] = \\\"CANCELED\\\";\\n TaskStatus[\\\"FINISHED\\\"] = \\\"FINISHED\\\";\\n})(TaskStatus || (TaskStatus = {}));\\nexports[\\\"default\\\"] = TaskStatus;\\n//# sourceMappingURL=TaskStatus.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/TaskStatus.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/TimeoutTask.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/TimeoutTask.js ***!\n \\********************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst TimeoutScheduler_1 = __webpack_require__(/*! ../scheduler/TimeoutScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/TimeoutScheduler.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/**\\n * [[TimeoutTask]] runs a subtask until it either succeeds or reaches a\\n * timeout, at which point the subtask is canceled.\\n */\\nclass TimeoutTask extends BaseTask_1.default {\\n constructor(logger, taskToRunBeforeTimeout, timeoutMs) {\\n super(logger);\\n this.taskToRunBeforeTimeout = taskToRunBeforeTimeout;\\n this.timeoutMs = timeoutMs;\\n this.taskName = `Timeout${this.timeoutMs}ms`;\\n taskToRunBeforeTimeout.setParent(this);\\n }\\n cancel() {\\n this.logger.info(`canceling timeout task ${this.name()} subtask ${this.taskToRunBeforeTimeout}`);\\n this.taskToRunBeforeTimeout.cancel();\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const timer = new TimeoutScheduler_1.default(this.timeoutMs);\\n timer.start(() => {\\n this.logger.info(`timeout reached for task ${this.name()}`);\\n this.taskToRunBeforeTimeout.cancel();\\n });\\n try {\\n yield this.taskToRunBeforeTimeout.run();\\n }\\n finally {\\n timer.stop();\\n }\\n this.logger.info(`timeout task ${this.name()} completed`);\\n });\\n }\\n}\\nexports[\\\"default\\\"] = TimeoutTask;\\n//# sourceMappingURL=TimeoutTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/TimeoutTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/task/WaitForAttendeePresenceTask.js\":\n/*!************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/task/WaitForAttendeePresenceTask.js ***!\n \\************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst MeetingSessionStatusCode_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionStatusCode */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ./BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\n/*\\n * [[WaitForAttendeePresenceTask]] waits until an attendee presence event happens.\\n */\\nclass WaitForAttendeePresenceTask extends BaseTask_1.default {\\n constructor(context) {\\n super(context.logger);\\n this.context = context;\\n this.taskName = 'WaitForAttendeePresenceTask';\\n }\\n cancel() {\\n // Just in case. The baseCancel behavior should prevent this.\\n /* istanbul ignore else */\\n if (this.cancelPromise) {\\n const error = new Error(`canceling ${this.name()} due to the meeting status code: ${MeetingSessionStatusCode_1.default.NoAttendeePresent}`);\\n this.cancelPromise(error);\\n delete this.cancelPromise;\\n }\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const attendeeId = this.context.meetingSessionConfiguration.credentials.attendeeId;\\n return new Promise((resolve, reject) => {\\n const handler = (presentAttendeeId, present, _externalUserId, _dropped, _pos) => {\\n if (attendeeId === presentAttendeeId && present) {\\n this.context.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(handler);\\n resolve();\\n delete this.cancelPromise;\\n }\\n };\\n this.cancelPromise = (error) => {\\n this.context.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(handler);\\n reject(error);\\n };\\n this.context.realtimeController.realtimeSubscribeToAttendeeIdPresence(handler);\\n });\\n });\\n }\\n}\\nexports[\\\"default\\\"] = WaitForAttendeePresenceTask;\\n//# sourceMappingURL=WaitForAttendeePresenceTask.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/task/WaitForAttendeePresenceTask.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/transceivercontroller/DefaultTransceiverController.js\":\n/*!******************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/transceivercontroller/DefaultTransceiverController.js ***!\n \\******************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass DefaultTransceiverController {\\n constructor(logger, browserBehavior) {\\n this.logger = logger;\\n this.browserBehavior = browserBehavior;\\n this._localCameraTransceiver = null;\\n this._localAudioTransceiver = null;\\n this.videoSubscriptions = [];\\n this.defaultMediaStream = null;\\n this.peer = null;\\n }\\n setEncodingParameters(_params) {\\n return;\\n }\\n static setVideoSendingBitrateKbpsForSender(sender, bitrateKbps, _logger) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!sender || bitrateKbps <= 0) {\\n return;\\n }\\n const param = sender.getParameters();\\n if (!param.encodings) {\\n param.encodings = [{}];\\n }\\n for (const encodeParam of param.encodings) {\\n encodeParam.maxBitrate = bitrateKbps * 1000;\\n }\\n yield sender.setParameters(param);\\n });\\n }\\n static replaceAudioTrackForSender(sender, track) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!sender) {\\n return false;\\n }\\n yield sender.replaceTrack(track);\\n return true;\\n });\\n }\\n localAudioTransceiver() {\\n return this._localAudioTransceiver;\\n }\\n localVideoTransceiver() {\\n return this._localCameraTransceiver;\\n }\\n setVideoSendingBitrateKbps(bitrateKbps) {\\n return __awaiter(this, void 0, void 0, function* () {\\n // this won't set bandwidth limitation for video in Chrome\\n if (!this._localCameraTransceiver || this._localCameraTransceiver.direction !== 'sendrecv') {\\n return;\\n }\\n const sender = this._localCameraTransceiver.sender;\\n yield DefaultTransceiverController.setVideoSendingBitrateKbpsForSender(sender, bitrateKbps, this.logger);\\n });\\n }\\n setPeer(peer) {\\n this.peer = peer;\\n }\\n reset() {\\n this._localCameraTransceiver = null;\\n this._localAudioTransceiver = null;\\n this.videoSubscriptions = [];\\n this.defaultMediaStream = null;\\n this.peer = null;\\n }\\n useTransceivers() {\\n if (!this.peer || !this.browserBehavior.requiresUnifiedPlan()) {\\n return false;\\n }\\n return typeof this.peer.getTransceivers !== 'undefined';\\n }\\n hasVideoInput() {\\n if (!this._localCameraTransceiver || this._localCameraTransceiver.direction !== 'sendrecv')\\n return false;\\n return true;\\n }\\n trackIsVideoInput(track) {\\n if (!this._localCameraTransceiver) {\\n return false;\\n }\\n return (track === this._localCameraTransceiver.sender.track ||\\n track === this._localCameraTransceiver.receiver.track);\\n }\\n setupLocalTransceivers() {\\n if (!this.useTransceivers()) {\\n return;\\n }\\n if (!this.defaultMediaStream && typeof MediaStream !== 'undefined') {\\n this.defaultMediaStream = new MediaStream();\\n }\\n if (!this._localAudioTransceiver) {\\n this._localAudioTransceiver = this.peer.addTransceiver('audio', {\\n direction: 'inactive',\\n streams: [this.defaultMediaStream],\\n });\\n }\\n if (!this._localCameraTransceiver) {\\n this._localCameraTransceiver = this.peer.addTransceiver('video', {\\n direction: 'inactive',\\n streams: [this.defaultMediaStream],\\n });\\n }\\n }\\n replaceAudioTrack(track) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!this._localAudioTransceiver || this._localAudioTransceiver.direction !== 'sendrecv') {\\n this.logger.info(`audio transceiver direction is not set up or not activated`);\\n return false;\\n }\\n yield this._localAudioTransceiver.sender.replaceTrack(track);\\n return true;\\n });\\n }\\n setAudioInput(track) {\\n return __awaiter(this, void 0, void 0, function* () {\\n yield this.setTransceiverInput(this._localAudioTransceiver, track);\\n return;\\n });\\n }\\n setVideoInput(track) {\\n return __awaiter(this, void 0, void 0, function* () {\\n yield this.setTransceiverInput(this._localCameraTransceiver, track);\\n return;\\n });\\n }\\n updateVideoTransceivers(videoStreamIndex, videosToReceive) {\\n if (!this.useTransceivers()) {\\n return videosToReceive.array();\\n }\\n // See https://blog.mozilla.org/webrtc/rtcrtptransceiver-explored/ for details on transceivers\\n const transceivers = this.peer.getTransceivers();\\n // Subscription index 0 is reserved for transmitting camera.\\n // We mark inactive slots with 0 in the subscription array.\\n this.videoSubscriptions = [0];\\n videosToReceive = videosToReceive.clone();\\n this.updateTransceivers(transceivers, videoStreamIndex, videosToReceive);\\n this.logger.debug(() => {\\n return this.debugDumpTransceivers();\\n });\\n return this.videoSubscriptions;\\n }\\n updateTransceivers(transceivers, videoStreamIndex, videosToReceive) {\\n const videosRemaining = videosToReceive.array();\\n // Start by handling existing videos\\n // Begin counting out index in the the subscription array at 1 since the camera.\\n // Always occupies position 0 (whether active or not).\\n let n = 1;\\n for (const transceiver of transceivers) {\\n if (transceiver === this._localCameraTransceiver || !this.transceiverIsVideo(transceiver)) {\\n continue;\\n }\\n this.videoSubscriptions[n] = 0;\\n if (transceiver.direction !== 'inactive') {\\n // See if we want this existing transceiver\\n // by convention with the video host, msid is equal to the media section mid, prefixed with the string \\\"v_\\\"\\n // we use this to get the streamId for the track\\n const streamId = videoStreamIndex.streamIdForTrack('v_' + transceiver.mid);\\n if (streamId !== undefined) {\\n for (const [index, recvStreamId] of videosRemaining.entries()) {\\n if (videoStreamIndex.StreamIdsInSameGroup(streamId, recvStreamId)) {\\n transceiver.direction = 'recvonly';\\n this.videoSubscriptions[n] = recvStreamId;\\n videosRemaining.splice(index, 1);\\n break;\\n }\\n }\\n }\\n }\\n n += 1;\\n }\\n // Next fill in open slots and remove unused\\n n = 1;\\n for (const transceiver of transceivers) {\\n if (transceiver === this._localCameraTransceiver || !this.transceiverIsVideo(transceiver)) {\\n continue;\\n }\\n if (transceiver.direction === 'inactive' && videosRemaining.length > 0) {\\n // Fill available slot\\n transceiver.direction = 'recvonly';\\n const streamId = videosRemaining.shift();\\n this.videoSubscriptions[n] = streamId;\\n }\\n else {\\n // Remove if no longer subscribed\\n if (this.videoSubscriptions[n] === 0) {\\n transceiver.direction = 'inactive';\\n }\\n }\\n n += 1;\\n }\\n // add transceivers for the remaining subscriptions\\n for (const index of videosRemaining) {\\n // @ts-ignore\\n const transceiver = this.peer.addTransceiver('video', {\\n direction: 'recvonly',\\n streams: [this.defaultMediaStream],\\n });\\n this.videoSubscriptions.push(index);\\n this.logger.info(`adding transceiver mid: ${transceiver.mid} subscription: ${index} direction: recvonly`);\\n }\\n }\\n transceiverIsVideo(transceiver) {\\n return ((transceiver.receiver &&\\n transceiver.receiver.track &&\\n transceiver.receiver.track.kind === 'video') ||\\n (transceiver.sender && transceiver.sender.track && transceiver.sender.track.kind === 'video'));\\n }\\n debugDumpTransceivers() {\\n let msg = '';\\n let n = 0;\\n for (const transceiver of this.peer.getTransceivers()) {\\n if (!this.transceiverIsVideo(transceiver)) {\\n continue;\\n }\\n msg += `transceiver index=${n} mid=${transceiver.mid} subscription=${this.videoSubscriptions[n]} direction=${transceiver.direction}\\\\n`;\\n n += 1;\\n }\\n return msg;\\n }\\n setTransceiverInput(transceiver, track) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!transceiver) {\\n return;\\n }\\n if (track) {\\n transceiver.direction = 'sendrecv';\\n }\\n else {\\n transceiver.direction = 'inactive';\\n }\\n yield transceiver.sender.replaceTrack(track);\\n });\\n }\\n}\\nexports[\\\"default\\\"] = DefaultTransceiverController;\\n//# sourceMappingURL=DefaultTransceiverController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/transceivercontroller/DefaultTransceiverController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/transceivercontroller/SimulcastTransceiverController.js\":\n/*!********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/transceivercontroller/SimulcastTransceiverController.js ***!\n \\********************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultTransceiverController_1 = __webpack_require__(/*! ./DefaultTransceiverController */ \\\"./node_modules/amazon-chime-sdk-js/build/transceivercontroller/DefaultTransceiverController.js\\\");\\nclass SimulcastTransceiverController extends DefaultTransceiverController_1.default {\\n constructor(logger, browserBehavior) {\\n super(logger, browserBehavior);\\n this.videoQualityControlParameterMap = new Map();\\n let scale = 4;\\n for (let i = 0; i < SimulcastTransceiverController.NAME_ARR_ASCENDING.length; i++) {\\n const ridName = SimulcastTransceiverController.NAME_ARR_ASCENDING[i];\\n this.videoQualityControlParameterMap.set(ridName, {\\n rid: ridName,\\n scaleResolutionDownBy: scale,\\n maxBitrate: SimulcastTransceiverController.BITRATE_ARR_ASCENDING[i] * 1000,\\n });\\n scale = scale / 2;\\n }\\n }\\n setEncodingParameters(encodingParamMap) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!this._localCameraTransceiver || this._localCameraTransceiver.direction !== 'sendrecv') {\\n return;\\n }\\n const sender = this._localCameraTransceiver.sender;\\n const newEncodingParams = Array.from(encodingParamMap.values());\\n if (newEncodingParams.length <= 0) {\\n return;\\n }\\n const oldParam = sender.getParameters();\\n if (!oldParam.encodings) {\\n oldParam.encodings = newEncodingParams;\\n }\\n else {\\n for (let i = 0; i < oldParam.encodings.length; i++) {\\n if (oldParam.encodings[i].rid === SimulcastTransceiverController.LOW_LEVEL_NAME) {\\n oldParam.encodings[i].maxBitrate = encodingParamMap.get(SimulcastTransceiverController.LOW_LEVEL_NAME).maxBitrate;\\n oldParam.encodings[i].active = encodingParamMap.get(SimulcastTransceiverController.LOW_LEVEL_NAME).active;\\n }\\n if (oldParam.encodings[i].rid === SimulcastTransceiverController.MID_LEVEL_NAME) {\\n oldParam.encodings[i].maxBitrate = encodingParamMap.get(SimulcastTransceiverController.MID_LEVEL_NAME).maxBitrate;\\n oldParam.encodings[i].active = encodingParamMap.get(SimulcastTransceiverController.MID_LEVEL_NAME).active;\\n }\\n if (oldParam.encodings[i].rid === SimulcastTransceiverController.HIGH_LEVEL_NAME) {\\n oldParam.encodings[i].maxBitrate = encodingParamMap.get(SimulcastTransceiverController.HIGH_LEVEL_NAME).maxBitrate;\\n oldParam.encodings[i].active = encodingParamMap.get(SimulcastTransceiverController.HIGH_LEVEL_NAME).active;\\n }\\n }\\n }\\n yield sender.setParameters(oldParam);\\n this.logVideoTransceiverParameters();\\n });\\n }\\n static replaceAudioTrackForSender(sender, track) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!sender) {\\n return false;\\n }\\n yield sender.replaceTrack(track);\\n return true;\\n });\\n }\\n setVideoSendingBitrateKbps(_bitrateKbps) {\\n return __awaiter(this, void 0, void 0, function* () {\\n return;\\n });\\n }\\n setupLocalTransceivers() {\\n if (!this.useTransceivers()) {\\n return;\\n }\\n if (!this.defaultMediaStream && typeof MediaStream !== 'undefined') {\\n this.defaultMediaStream = new MediaStream();\\n }\\n if (!this._localAudioTransceiver) {\\n this._localAudioTransceiver = this.peer.addTransceiver('audio', {\\n direction: 'inactive',\\n streams: [this.defaultMediaStream],\\n });\\n }\\n if (!this._localCameraTransceiver) {\\n const encodingParams = Array.from(this.videoQualityControlParameterMap.values());\\n this._localCameraTransceiver = this.peer.addTransceiver('video', {\\n direction: 'inactive',\\n streams: [this.defaultMediaStream],\\n sendEncodings: encodingParams,\\n });\\n }\\n }\\n logVideoTransceiverParameters() {\\n const params = this._localCameraTransceiver.sender.getParameters();\\n const encodings = params.encodings;\\n let msg = 'simulcast: current encoding parameters \\\\n';\\n for (const encodingParam of encodings) {\\n msg += `rid=${encodingParam.rid} maxBitrate=${encodingParam.maxBitrate} active=${encodingParam.active} \\\\n`;\\n }\\n this.logger.info(msg);\\n }\\n}\\nexports[\\\"default\\\"] = SimulcastTransceiverController;\\nSimulcastTransceiverController.LOW_LEVEL_NAME = 'low';\\nSimulcastTransceiverController.MID_LEVEL_NAME = 'mid';\\nSimulcastTransceiverController.HIGH_LEVEL_NAME = 'hi';\\nSimulcastTransceiverController.NAME_ARR_ASCENDING = ['low', 'mid', 'hi'];\\nSimulcastTransceiverController.BITRATE_ARR_ASCENDING = [200, 400, 1100];\\n//# sourceMappingURL=SimulcastTransceiverController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/transceivercontroller/SimulcastTransceiverController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/versioning/Versioning.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/versioning/Versioning.js ***!\n \\*************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst version_1 = __webpack_require__(/*! ./version */ \\\"./node_modules/amazon-chime-sdk-js/build/versioning/version.js\\\");\\nclass Versioning {\\n /**\\n * Return string representation of SDK name\\n */\\n static get sdkName() {\\n return 'amazon-chime-sdk-js';\\n }\\n /**\\n * Return string representation of SDK version\\n */\\n static get sdkVersion() {\\n return version_1.default.semverString;\\n }\\n /**\\n * Return the SHA-1 of the Git commit from which this build was created.\\n */\\n static get buildSHA() {\\n // Skip the leading 'g'.\\n return version_1.default.hash.substr(1);\\n }\\n /**\\n * Return low-resolution string representation of SDK user agent (e.g. `chrome-78`)\\n */\\n static get sdkUserAgentLowResolution() {\\n const browserBehavior = new DefaultBrowserBehavior_1.default();\\n return `${browserBehavior.name()}-${browserBehavior.majorVersion()}`;\\n }\\n /**\\n * Return URL with versioning information appended\\n */\\n static urlWithVersion(url) {\\n const urlWithVersion = new URL(url);\\n urlWithVersion.searchParams.append(Versioning.X_AMZN_VERSION, Versioning.sdkVersion);\\n urlWithVersion.searchParams.append(Versioning.X_AMZN_USER_AGENT, Versioning.sdkUserAgentLowResolution);\\n return urlWithVersion.toString();\\n }\\n}\\nexports[\\\"default\\\"] = Versioning;\\nVersioning.X_AMZN_VERSION = 'X-Amzn-Version';\\nVersioning.X_AMZN_USER_AGENT = 'X-Amzn-User-Agent';\\n//# sourceMappingURL=Versioning.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/versioning/Versioning.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/versioning/version.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/versioning/version.js ***!\n \\**********************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports[\\\"default\\\"] = {\\n \\\"hash\\\": \\\"13ff6f2\\\",\\n \\\"raw\\\": \\\"v2.7.0\\\",\\n \\\"semverString\\\": \\\"2.7.0\\\"\\n};\\n//# sourceMappingURL=version.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/versioning/version.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter.js\":\n/*!************************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter.js ***!\n \\************************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass DefaultVideoCaptureAndEncodeParameter {\\n constructor(cameraWidth, cameraHeight, cameraFrameRate, maxEncodeBitrateKbps, isSimulcast) {\\n this.cameraWidth = cameraWidth;\\n this.cameraHeight = cameraHeight;\\n this.cameraFrameRate = cameraFrameRate;\\n this.maxEncodeBitrateKbps = maxEncodeBitrateKbps;\\n this.isSimulcast = isSimulcast;\\n }\\n equal(other) {\\n let checkForEqual = other.captureWidth() === this.cameraWidth &&\\n other.captureHeight() === this.cameraHeight &&\\n other.captureFrameRate() === this.cameraFrameRate &&\\n other.encodeBitrates().length === this.encodeBitrates().length &&\\n other.encodeWidths().length === this.encodeWidths().length &&\\n other.encodeHeights().length === this.encodeHeights().length;\\n if (checkForEqual) {\\n for (let i = 0; i < other.encodeWidths().length; i++) {\\n if (other.encodeWidths()[i] !== this.encodeWidths()[i] ||\\n other.encodeHeights()[i] !== this.encodeHeights()[i] ||\\n other.encodeBitrates()[i] !== this.encodeBitrates()[i]) {\\n checkForEqual = false;\\n return checkForEqual;\\n }\\n }\\n }\\n return checkForEqual;\\n }\\n clone() {\\n return new DefaultVideoCaptureAndEncodeParameter(this.cameraWidth, this.cameraHeight, this.cameraFrameRate, this.maxEncodeBitrateKbps, this.isSimulcast);\\n }\\n captureWidth() {\\n return this.cameraWidth;\\n }\\n captureHeight() {\\n return this.cameraHeight;\\n }\\n captureFrameRate() {\\n return this.cameraFrameRate;\\n }\\n encodeBitrates() {\\n // TODO: add simulcast layer\\n return [this.maxEncodeBitrateKbps];\\n }\\n encodeWidths() {\\n return [this.cameraWidth];\\n }\\n encodeHeights() {\\n return [this.cameraHeight];\\n }\\n}\\nexports[\\\"default\\\"] = DefaultVideoCaptureAndEncodeParameter;\\n//# sourceMappingURL=DefaultVideoCaptureAndEncodeParameter.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy.js\":\n/*!***************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy.js ***!\n \\***************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultVideoStreamIdSet_1 = __webpack_require__(/*! ../videostreamidset/DefaultVideoStreamIdSet */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamidset/DefaultVideoStreamIdSet.js\\\");\\n/**\\n * [[AllHighestVideoBandwidthPolicy]] implements is a rudimentary policy that simply\\n * always subscribes to the highest quality video stream available\\n * for all non-self participants.\\n */\\nclass AllHighestVideoBandwidthPolicy {\\n constructor(selfAttendeeId) {\\n this.selfAttendeeId = selfAttendeeId;\\n this.reset();\\n }\\n reset() {\\n this.optimalReceiveSet = new DefaultVideoStreamIdSet_1.default();\\n this.subscribedReceiveSet = new DefaultVideoStreamIdSet_1.default();\\n }\\n updateIndex(videoIndex) {\\n this.optimalReceiveSet = this.calculateOptimalReceiveSet(videoIndex);\\n }\\n updateMetrics(_clientMetricReport) { }\\n wantsResubscribe() {\\n return !this.subscribedReceiveSet.equal(this.optimalReceiveSet);\\n }\\n chooseSubscriptions() {\\n this.subscribedReceiveSet = this.optimalReceiveSet.clone();\\n return this.subscribedReceiveSet.clone();\\n }\\n calculateOptimalReceiveSet(videoIndex) {\\n return videoIndex.highestQualityStreamFromEachGroupExcludingSelf(this.selfAttendeeId);\\n }\\n}\\nexports[\\\"default\\\"] = AllHighestVideoBandwidthPolicy;\\n//# sourceMappingURL=AllHighestVideoBandwidthPolicy.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/NoVideoDownlinkBandwidthPolicy.js\":\n/*!***************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/NoVideoDownlinkBandwidthPolicy.js ***!\n \\***************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultVideoStreamIdSet_1 = __webpack_require__(/*! ../videostreamidset/DefaultVideoStreamIdSet */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamidset/DefaultVideoStreamIdSet.js\\\");\\nclass NoVideoDownlinkBandwidthPolicy {\\n reset() { }\\n updateIndex(_videoIndex) { }\\n updateMetrics(_clientMetricReport) { }\\n wantsResubscribe() {\\n return false;\\n }\\n chooseSubscriptions() {\\n return new DefaultVideoStreamIdSet_1.default();\\n }\\n}\\nexports[\\\"default\\\"] = NoVideoDownlinkBandwidthPolicy;\\n//# sourceMappingURL=NoVideoDownlinkBandwidthPolicy.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/NoVideoDownlinkBandwidthPolicy.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/VideoAdaptiveProbePolicy.js\":\n/*!*********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/VideoAdaptiveProbePolicy.js ***!\n \\*********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst ClientMetricReportDirection_1 = __webpack_require__(/*! ../clientmetricreport/ClientMetricReportDirection */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportDirection.js\\\");\\nconst ContentShareConstants_1 = __webpack_require__(/*! ../contentsharecontroller/ContentShareConstants */ \\\"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareConstants.js\\\");\\nconst DefaultVideoStreamIdSet_1 = __webpack_require__(/*! ../videostreamidset/DefaultVideoStreamIdSet */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamidset/DefaultVideoStreamIdSet.js\\\");\\nclass LinkMediaStats {\\n constructor() {\\n this.bandwidthEstimateKbps = 0;\\n this.usedBandwidthKbps = 0;\\n this.packetsLost = 0;\\n this.nackCount = 0;\\n this.rttMs = 0;\\n }\\n}\\nclass VideoAdaptiveProbePolicy {\\n constructor(logger, tileController) {\\n this.logger = logger;\\n this.tileController = tileController;\\n this.reset();\\n }\\n reset() {\\n this.optimalReceiveSet = new DefaultVideoStreamIdSet_1.default();\\n this.subscribedReceiveSet = new DefaultVideoStreamIdSet_1.default();\\n this.logCount = 0;\\n this.startupPeriod = true;\\n this.usingPrevTargetRate = false;\\n this.rateProbeState = \\\"Not Probing\\\" /* kNotProbing */;\\n this.timeFirstEstimate = 0;\\n this.lastUpgradeRateKbps = 0;\\n this.timeBeforeAllowSubscribeMs = VideoAdaptiveProbePolicy.MIN_TIME_BETWEEN_SUBSCRIBE;\\n this.timeLastProbe = Date.now();\\n this.timeBeforeAllowProbeMs = VideoAdaptiveProbePolicy.MIN_TIME_BETWEEN_PROBE;\\n this.downlinkStats = new LinkMediaStats();\\n this.prevDownlinkStats = new LinkMediaStats();\\n }\\n updateIndex(videoIndex) {\\n this.videoIndex = videoIndex;\\n }\\n updateMetrics(clientMetricReport) {\\n if (this.videoIndex.allStreams().empty()) {\\n return;\\n }\\n this.prevDownlinkStats = this.downlinkStats;\\n this.downlinkStats = new LinkMediaStats();\\n const metricReport = clientMetricReport.getObservableMetrics();\\n this.downlinkStats.bandwidthEstimateKbps = metricReport.availableReceiveBandwidth / 1000;\\n for (const ssrcStr in clientMetricReport.streamMetricReports) {\\n const ssrc = Number(ssrcStr);\\n if (clientMetricReport.streamMetricReports[ssrc].direction === ClientMetricReportDirection_1.default.DOWNSTREAM) {\\n // Only use video stream metrics\\n if (clientMetricReport.streamMetricReports[ssrc].currentMetrics.hasOwnProperty('googNacksSent') &&\\n clientMetricReport.streamMetricReports[ssrc].currentMetrics.hasOwnProperty('googFrameRateReceived')) {\\n this.downlinkStats.nackCount += clientMetricReport.countPerSecond('googNacksSent', ssrc);\\n }\\n if (clientMetricReport.streamMetricReports[ssrc].currentMetrics.hasOwnProperty('packetsLost') &&\\n clientMetricReport.streamMetricReports[ssrc].currentMetrics.hasOwnProperty('googFrameRateReceived')) {\\n this.downlinkStats.packetsLost += clientMetricReport.countPerSecond('packetsLost', ssrc);\\n }\\n if (clientMetricReport.streamMetricReports[ssrc].currentMetrics.hasOwnProperty('bytesReceived')) {\\n this.downlinkStats.usedBandwidthKbps +=\\n clientMetricReport.bitsPerSecond('bytesReceived', ssrc) / 1000;\\n }\\n }\\n }\\n }\\n wantsResubscribe() {\\n this.optimalReceiveSet = this.calculateOptimalReceiveSet();\\n return !this.subscribedReceiveSet.equal(this.optimalReceiveSet);\\n }\\n chooseSubscriptions() {\\n if (!this.subscribedReceiveSet.equal(this.optimalReceiveSet)) {\\n this.timeLastSubscribe = Date.now();\\n }\\n this.subscribedReceiveSet = this.optimalReceiveSet.clone();\\n this.logger.info('bwe: chooseSubscriptions ' + JSON.stringify(this.subscribedReceiveSet));\\n return this.subscribedReceiveSet.clone();\\n }\\n calculateOptimalReceiveSet() {\\n const streamSelectionSet = new DefaultVideoStreamIdSet_1.default();\\n const lastProbeState = this.rateProbeState;\\n const remoteInfos = this.videoIndex.remoteStreamDescriptions();\\n if (remoteInfos.length === 0) {\\n return streamSelectionSet;\\n }\\n const pausedStreamIds = new DefaultVideoStreamIdSet_1.default();\\n this.handlePausedStreams(streamSelectionSet, pausedStreamIds, remoteInfos);\\n const sameStreamChoices = this.availStreamsSameAsLast(remoteInfos);\\n // If no major changes then don't allow subscribes for the allowed amount of time\\n if (!this.startupPeriod &&\\n sameStreamChoices &&\\n Date.now() - this.timeLastSubscribe < this.timeBeforeAllowSubscribeMs) {\\n return this.optimalReceiveSet;\\n }\\n // reset time before allow subscribe to default\\n this.timeBeforeAllowSubscribeMs = VideoAdaptiveProbePolicy.MIN_TIME_BETWEEN_SUBSCRIBE;\\n const chosenStreams = [];\\n // Sort streams by bitrate asceending.\\n remoteInfos.sort((a, b) => {\\n if (a.maxBitrateKbps === b.maxBitrateKbps) {\\n return a.streamId - b.streamId;\\n }\\n return a.maxBitrateKbps - b.maxBitrateKbps;\\n });\\n // Convert 0 avg bitrates to max and handle special cases\\n for (const info of remoteInfos) {\\n if (info.avgBitrateKbps === 0 || info.avgBitrateKbps > info.maxBitrateKbps) {\\n // Content can be a special case\\n if (info.attendeeId.endsWith(ContentShareConstants_1.default.Modality) && info.maxBitrateKbps < 100) {\\n info.maxBitrateKbps = info.avgBitrateKbps;\\n }\\n else {\\n info.avgBitrateKbps = info.maxBitrateKbps;\\n }\\n }\\n }\\n const targetDownlinkBitrate = this.determineTargetRate(remoteInfos);\\n let deltaToNextUpgrade = 0;\\n let chosenTotalBitrate = 0;\\n let upgradeStream;\\n // If screen share is available, then subscribe to that first before anything else\\n chosenTotalBitrate += this.chooseContent(chosenStreams, remoteInfos);\\n // Try to have at least one stream from every group first\\n // Since the streams are sorted this will pick the lowest bitrates first\\n for (const info of remoteInfos) {\\n if (info.avgBitrateKbps === 0) {\\n continue;\\n }\\n if (chosenStreams.findIndex(stream => stream.groupId === info.groupId) === -1) {\\n if (chosenTotalBitrate + info.avgBitrateKbps <= targetDownlinkBitrate) {\\n chosenStreams.push(info);\\n chosenTotalBitrate += info.avgBitrateKbps;\\n }\\n else if (deltaToNextUpgrade === 0) {\\n // Keep track of step to next upgrade\\n deltaToNextUpgrade = info.avgBitrateKbps;\\n upgradeStream = info;\\n }\\n }\\n }\\n // Look for upgrades until we run out of bandwidth\\n let lookForUpgrades = true;\\n while (lookForUpgrades) {\\n // We will set this to true if we find any new upgrades during the loop over the\\n // chosen streams (i.e. when we do a full loop without an upgrade we will give up)\\n lookForUpgrades = false;\\n chosenStreams.forEach((chosenStream, index) => {\\n for (const info of remoteInfos) {\\n if (info.groupId === chosenStream.groupId &&\\n info.streamId !== chosenStream.streamId &&\\n info.avgBitrateKbps > chosenStream.avgBitrateKbps) {\\n const increaseKbps = info.avgBitrateKbps - chosenStream.avgBitrateKbps;\\n if (chosenTotalBitrate + increaseKbps <= targetDownlinkBitrate) {\\n chosenTotalBitrate += increaseKbps;\\n chosenStreams[index] = info;\\n lookForUpgrades = true;\\n }\\n else if (deltaToNextUpgrade === 0) {\\n // Keep track of step to next upgrade\\n deltaToNextUpgrade = increaseKbps;\\n upgradeStream = info;\\n }\\n }\\n }\\n });\\n }\\n let subscriptionChoice = 0 /* kNewOptimal */;\\n // Look for probing or override opportunities\\n if (!this.startupPeriod && sameStreamChoices && deltaToNextUpgrade !== 0) {\\n if (this.rateProbeState === \\\"Probing\\\" /* kProbing */) {\\n subscriptionChoice = this.handleProbe(chosenStreams, pausedStreamIds, targetDownlinkBitrate, remoteInfos);\\n }\\n else {\\n subscriptionChoice = this.maybeOverrideOrProbe(chosenStreams, pausedStreamIds, targetDownlinkBitrate, chosenTotalBitrate, deltaToNextUpgrade, upgradeStream);\\n }\\n }\\n else {\\n // If there was a change in streams to choose from, then cancel any probing or upgrades\\n this.setProbeState(\\\"Not Probing\\\" /* kNotProbing */);\\n this.lastUpgradeRateKbps = 0;\\n }\\n let decisionLogStr = this.policyStateLogStr(remoteInfos, targetDownlinkBitrate);\\n if (this.logCount % 15 === 0 || this.rateProbeState !== lastProbeState) {\\n this.logger.info(decisionLogStr);\\n this.logCount = 0;\\n decisionLogStr = '';\\n }\\n this.logCount++;\\n this.prevTargetRateKbps = targetDownlinkBitrate;\\n this.prevRemoteInfos = remoteInfos;\\n if (subscriptionChoice === 1 /* kPreviousOptimal */) {\\n this.logger.info('bwe: keepSameSubscriptions');\\n if (decisionLogStr.length > 0) {\\n this.logger.info(decisionLogStr);\\n }\\n return this.optimalReceiveSet;\\n }\\n else if (subscriptionChoice === 2 /* kPreProbe */) {\\n const subscribedRate = this.calculateSubscribeRate(remoteInfos, this.preProbeReceiveSet);\\n this.logger.info('bwe: Use Pre-Probe subscription subscribedRate:' + subscribedRate);\\n return this.preProbeReceiveSet;\\n }\\n for (const chosenStream of chosenStreams) {\\n streamSelectionSet.add(chosenStream.streamId);\\n }\\n if (!this.optimalReceiveSet.equal(streamSelectionSet)) {\\n if (decisionLogStr.length > 0) {\\n this.logger.info(decisionLogStr);\\n }\\n const subscribedRate = this.calculateSubscribeRate(remoteInfos, streamSelectionSet);\\n this.logger.info(`bwe: new streamSelection: ${JSON.stringify(streamSelectionSet)} subscribedRate:${subscribedRate}`);\\n }\\n return streamSelectionSet;\\n }\\n determineTargetRate(remoteInfos) {\\n let targetBitrate = 0;\\n // Estimated downlink bandwidth from WebRTC is dependent on actually receiving data, so if it ever got driven below the bitrate of the lowest\\n // stream (a simulcast stream), and it stops receiving, it will get stuck never being able to resubscribe (as is implemented).\\n let minTargetDownlinkBitrate = Number.MAX_VALUE;\\n for (const info of remoteInfos) {\\n if (info.avgBitrateKbps !== 0 && info.avgBitrateKbps < minTargetDownlinkBitrate) {\\n minTargetDownlinkBitrate = info.avgBitrateKbps;\\n }\\n }\\n const now = Date.now();\\n // Startup phase handling. During this period the estimate can be 0 or\\n // could still be slowly hunting for a steady state. This startup ramp up\\n // can cause a series of subscribes which can be distracting. During this\\n // time just use our configured default value\\n if (this.downlinkStats.bandwidthEstimateKbps !== 0) {\\n if (this.timeFirstEstimate === 0) {\\n this.timeFirstEstimate = now;\\n }\\n // handle startup state where estimator is still converging.\\n if (this.startupPeriod) {\\n // Drop out of startup period if\\n // - estimate is above default\\n // - get packet loss and have a valid estimate\\n // - startup period has expired and rate is not still increasing\\n if (this.downlinkStats.bandwidthEstimateKbps >\\n VideoAdaptiveProbePolicy.DEFAULT_BANDWIDTH_KBPS ||\\n this.downlinkStats.packetsLost > 0 ||\\n (now - this.timeFirstEstimate > VideoAdaptiveProbePolicy.STARTUP_PERIOD_MS &&\\n this.downlinkStats.bandwidthEstimateKbps <=\\n this.prevDownlinkStats.bandwidthEstimateKbps)) {\\n this.startupPeriod = false;\\n this.prevTargetRateKbps = this.downlinkStats.bandwidthEstimateKbps;\\n }\\n }\\n // If we are in the startup period and we haven't detected any packet loss, then\\n // keep it at the default to let the estimation get to a steady state\\n if (this.startupPeriod) {\\n targetBitrate = VideoAdaptiveProbePolicy.DEFAULT_BANDWIDTH_KBPS;\\n }\\n else {\\n targetBitrate = this.downlinkStats.bandwidthEstimateKbps;\\n }\\n }\\n else {\\n if (this.timeFirstEstimate === 0) {\\n targetBitrate = VideoAdaptiveProbePolicy.DEFAULT_BANDWIDTH_KBPS;\\n }\\n else {\\n targetBitrate = this.prevTargetRateKbps;\\n }\\n }\\n targetBitrate = Math.max(minTargetDownlinkBitrate, targetBitrate);\\n // Estimated downlink rate can follow actual bandwidth or fall for a short period of time\\n // due to the absolute send time estimator incorrectly thinking that a delay in packets is\\n // a precursor to packet loss. We have seen too many false positives on this, so we\\n // will ignore largish drops in the estimate if there is no packet loss\\n if (!this.startupPeriod &&\\n ((this.usingPrevTargetRate &&\\n this.downlinkStats.bandwidthEstimateKbps < this.prevTargetRateKbps) ||\\n this.downlinkStats.bandwidthEstimateKbps <\\n (this.prevTargetRateKbps *\\n (100 - VideoAdaptiveProbePolicy.LARGE_RATE_CHANGE_TRIGGER_PERCENT)) /\\n 100 ||\\n this.downlinkStats.bandwidthEstimateKbps <\\n (this.downlinkStats.usedBandwidthKbps *\\n VideoAdaptiveProbePolicy.LARGE_RATE_CHANGE_TRIGGER_PERCENT) /\\n 100) &&\\n this.downlinkStats.packetsLost === 0) {\\n // Set target to be the same as last\\n this.logger.debug(() => {\\n return 'bwe: ValidateRate: Using Previous rate ' + this.prevTargetRateKbps;\\n });\\n this.usingPrevTargetRate = true;\\n targetBitrate = this.prevTargetRateKbps;\\n }\\n else {\\n this.usingPrevTargetRate = false;\\n }\\n return targetBitrate;\\n }\\n setProbeState(newState) {\\n if (this.rateProbeState === newState)\\n return;\\n const now = Date.now();\\n switch (newState) {\\n case \\\"Not Probing\\\" /* kNotProbing */:\\n this.timeProbePendingStart = 0;\\n break;\\n case \\\"Probe Pending\\\" /* kProbePending */:\\n if (this.timeLastProbe === 0 ||\\n now - this.timeLastProbe > VideoAdaptiveProbePolicy.MIN_TIME_BETWEEN_PROBE) {\\n this.timeProbePendingStart = now;\\n }\\n else {\\n // Too soon to do a probe again\\n return false;\\n }\\n break;\\n case \\\"Probing\\\" /* kProbing */:\\n if (now - this.timeProbePendingStart > this.timeBeforeAllowProbeMs) {\\n this.timeLastProbe = now;\\n this.preProbeReceiveSet = this.subscribedReceiveSet;\\n // Increase the time allowed until the next probe\\n this.timeBeforeAllowProbeMs = Math.min(this.timeBeforeAllowProbeMs * 2, VideoAdaptiveProbePolicy.MAX_HOLD_MS_BEFORE_PROBE);\\n }\\n else {\\n // Too soon to do probe\\n return false;\\n }\\n break;\\n default:\\n break;\\n }\\n this.logger.info('bwe: setProbeState to ' + newState + ' from ' + this.rateProbeState);\\n this.rateProbeState = newState;\\n return true;\\n }\\n // Upgrade the stream id from the appropriate group or add it if it wasn't already in the list.\\n // Return the added amount of bandwidth\\n upgradeToStream(chosenStreams, upgradeStream) {\\n for (let i = 0; i < chosenStreams.length; i++) {\\n if (chosenStreams[i].groupId === upgradeStream.groupId) {\\n const diffRate = upgradeStream.avgBitrateKbps - chosenStreams[i].avgBitrateKbps;\\n this.logger.info('bwe: upgradeStream from ' +\\n JSON.stringify(chosenStreams[i]) +\\n ' to ' +\\n JSON.stringify(upgradeStream));\\n this.lastUpgradeRateKbps = diffRate;\\n chosenStreams[i] = upgradeStream;\\n return diffRate;\\n }\\n }\\n // We are adding a stream and not upgrading.\\n chosenStreams.push(upgradeStream);\\n this.lastUpgradeRateKbps = upgradeStream.avgBitrateKbps;\\n return this.lastUpgradeRateKbps;\\n }\\n // Do specific behavior while we are currently in probing state and metrics\\n // indicate environment is still valid to do probing.\\n // Return true if the caller should not change from the previous subscriptions.\\n handleProbe(chosenStreams, pausedStreamIds, targetDownlinkBitrate, remoteInfos) {\\n if (this.rateProbeState !== \\\"Probing\\\" /* kProbing */) {\\n return 0 /* kNewOptimal */;\\n }\\n // Don't allow probe to happen indefinitely\\n if (Date.now() - this.timeLastProbe > VideoAdaptiveProbePolicy.MAX_ALLOWED_PROBE_TIME_MS) {\\n this.logger.info(`bwe: Canceling probe due to timeout`);\\n this.setProbeState(\\\"Not Probing\\\" /* kNotProbing */);\\n return 0 /* kNewOptimal */;\\n }\\n if (this.downlinkStats.packetsLost > 0) {\\n this.setProbeState(\\\"Not Probing\\\" /* kNotProbing */);\\n this.timeBeforeAllowSubscribeMs = VideoAdaptiveProbePolicy.MIN_TIME_BETWEEN_SUBSCRIBE * 3;\\n return 2 /* kPreProbe */;\\n }\\n const subscribedRate = this.calculateSubscribeRate(remoteInfos, this.optimalReceiveSet);\\n if (this.chosenStreamsSameAsLast(chosenStreams, pausedStreamIds) ||\\n targetDownlinkBitrate > subscribedRate) {\\n let avgRate = 0;\\n for (const chosenStream of chosenStreams) {\\n avgRate += chosenStream.avgBitrateKbps;\\n }\\n if (targetDownlinkBitrate > avgRate) {\\n // If target bitrate can sustain probe rate, then probe was successful.\\n this.setProbeState(\\\"Not Probing\\\" /* kNotProbing */);\\n // Reset the time allowed between probes since this was successful\\n this.timeBeforeAllowProbeMs = VideoAdaptiveProbePolicy.MIN_TIME_BETWEEN_PROBE;\\n return 0 /* kNewOptimal */;\\n }\\n }\\n return 1 /* kPreviousOptimal */;\\n }\\n maybeOverrideOrProbe(chosenStreams, pausedStreamIds, chosenTotalBitrate, targetDownlinkBitrate, deltaToNextUpgrade, upgradeStream) {\\n const sameSubscriptions = this.chosenStreamsSameAsLast(chosenStreams, pausedStreamIds);\\n let useLastSubscriptions = 0 /* kNewOptimal */;\\n const now = Date.now();\\n // We want to minimize thrashing between between low res and high res of different\\n // participants due to avg bitrate fluctuations. If there hasn't been much of a change in estimated bandwidth\\n // and the number of streams and their max rates are the same, then reuse the previous subscription\\n const triggerPercent = targetDownlinkBitrate > VideoAdaptiveProbePolicy.LOW_BITRATE_THRESHOLD_KBPS\\n ? VideoAdaptiveProbePolicy.TARGET_RATE_CHANGE_TRIGGER_PERCENT\\n : VideoAdaptiveProbePolicy.TARGET_RATE_CHANGE_TRIGGER_PERCENT * 2;\\n const minTargetBitrateDelta = (targetDownlinkBitrate * triggerPercent) / 100;\\n if (!sameSubscriptions &&\\n Math.abs(targetDownlinkBitrate - this.prevTargetRateKbps) < minTargetBitrateDelta) {\\n this.logger.info('bwe: MaybeOverrideOrProbe: Reuse last decision based on delta rate. {' +\\n JSON.stringify(this.subscribedReceiveSet) +\\n `}`);\\n useLastSubscriptions = 1 /* kPreviousOptimal */;\\n }\\n // If there has been packet loss, then reset to no probing state\\n if (this.downlinkStats.packetsLost > this.prevDownlinkStats.packetsLost) {\\n this.setProbeState(\\\"Not Probing\\\" /* kNotProbing */);\\n this.lastUpgradeRateKbps = 0;\\n return useLastSubscriptions;\\n }\\n if (sameSubscriptions || useLastSubscriptions) {\\n // If planned subscriptions are same as last, then either move to probe pending state\\n // or move to probing state if enough time has passed.\\n switch (this.rateProbeState) {\\n case \\\"Not Probing\\\" /* kNotProbing */:\\n this.setProbeState(\\\"Probe Pending\\\" /* kProbePending */);\\n break;\\n case \\\"Probe Pending\\\" /* kProbePending */:\\n if (now - this.timeProbePendingStart > this.timeBeforeAllowProbeMs) {\\n if (this.setProbeState(\\\"Probing\\\" /* kProbing */)) {\\n this.timeBeforeAllowSubscribeMs = 800;\\n this.upgradeToStream(chosenStreams, upgradeStream);\\n useLastSubscriptions = 0 /* kNewOptimal */;\\n }\\n }\\n break;\\n default:\\n this.logger.info('bwe: MaybeOverrideOrProbe: Unhandled condition ' + this.rateProbeState);\\n break;\\n }\\n }\\n else {\\n // At this point the current expectation is to subscribe for a new set of\\n // streams, and environment is not right for probing. If target rate is within\\n // the threshold of doing an upgrade, then do it and if we are lucky will be the\\n // same set of streams as last and no new subscription will be done.\\n this.setProbeState(\\\"Not Probing\\\" /* kNotProbing */);\\n if (targetDownlinkBitrate + minTargetBitrateDelta > chosenTotalBitrate + deltaToNextUpgrade) {\\n this.logger.info('bwe: MaybeOverrideOrProbe: Upgrade since we are within threshold');\\n this.upgradeToStream(chosenStreams, upgradeStream);\\n }\\n }\\n return useLastSubscriptions;\\n }\\n // Utility function to find max rate of streams in current decision\\n calculateSubscribeRate(streams, streamSet) {\\n let subscribeRate = 0;\\n for (const index of streamSet.array()) {\\n const streamMatch = streams.find(stream => stream.streamId === index);\\n if (streamMatch !== undefined) {\\n subscribeRate += streamMatch.maxBitrateKbps;\\n }\\n }\\n return subscribeRate;\\n }\\n handlePausedStreams(streamSelectionSet, pausedStreamIds, remoteInfos) {\\n const remoteTiles = this.tileController.getAllRemoteVideoTiles();\\n for (let i = 0; i < remoteTiles.length; i++) {\\n const tile = remoteTiles[i];\\n const state = tile.state();\\n if (state.paused) {\\n let j = remoteInfos.length;\\n while (j--) {\\n if (remoteInfos[j].attendeeId === state.boundAttendeeId) {\\n this.logger.info('bwe: removed paused attendee ' +\\n state.boundAttendeeId +\\n ' streamId: ' +\\n remoteInfos[j].streamId);\\n pausedStreamIds.add(remoteInfos[j].streamId);\\n // Add the stream to the selection set to keep the tile around\\n if (this.subscribedReceiveSet.contain(remoteInfos[j].streamId)) {\\n streamSelectionSet.add(remoteInfos[j].streamId);\\n }\\n remoteInfos.splice(j, 1);\\n }\\n }\\n }\\n }\\n }\\n chooseContent(chosenStreams, remoteInfos) {\\n let contentRate = 0;\\n for (const info of remoteInfos) {\\n // For now always subscribe to content even if higher bandwidth then target\\n if (info.attendeeId.endsWith(ContentShareConstants_1.default.Modality)) {\\n chosenStreams.push(info);\\n contentRate += info.avgBitrateKbps;\\n }\\n }\\n return contentRate;\\n }\\n availStreamsSameAsLast(remoteInfos) {\\n if (this.prevRemoteInfos === undefined || remoteInfos.length !== this.prevRemoteInfos.length) {\\n return false;\\n }\\n for (const info of remoteInfos) {\\n const infoMatch = this.prevRemoteInfos.find(prevInfo => prevInfo.groupId === info.groupId &&\\n prevInfo.streamId === info.streamId &&\\n prevInfo.maxBitrateKbps === info.maxBitrateKbps);\\n if (infoMatch === undefined) {\\n return false;\\n }\\n }\\n return true;\\n }\\n chosenStreamsSameAsLast(chosenStreams, pausedStreamIds) {\\n const lastStreams = this.optimalReceiveSet.array();\\n for (const id of lastStreams) {\\n if (!pausedStreamIds.contain(id) &&\\n chosenStreams.findIndex(chosenStream => chosenStream.streamId === id) === -1) {\\n return false;\\n }\\n }\\n return true;\\n }\\n policyStateLogStr(remoteInfos, targetDownlinkBitrate) {\\n const subscribedRate = this.calculateSubscribeRate(remoteInfos, this.optimalReceiveSet);\\n const optimalReceiveSet = {\\n targetBitrate: targetDownlinkBitrate,\\n subscribedRate: subscribedRate,\\n probeState: this.rateProbeState,\\n startupPeriod: this.startupPeriod,\\n };\\n // Reduced remote info logging:\\n let remoteInfoStr = `remoteInfos: [`;\\n for (const info of remoteInfos) {\\n remoteInfoStr += `{grpId:${info.groupId} strId:${info.streamId} maxBr:${info.maxBitrateKbps} avgBr:${info.avgBitrateKbps}}, `;\\n }\\n remoteInfoStr += `]`;\\n const logString = `bwe: optimalReceiveSet ${JSON.stringify(optimalReceiveSet)}\\\\n` +\\n `bwe: prev ${JSON.stringify(this.prevDownlinkStats)}\\\\n` +\\n `bwe: now ${JSON.stringify(this.downlinkStats)}\\\\n` +\\n `bwe: ${remoteInfoStr}`;\\n return logString;\\n }\\n}\\nexports[\\\"default\\\"] = VideoAdaptiveProbePolicy;\\nVideoAdaptiveProbePolicy.DEFAULT_BANDWIDTH_KBPS = 2800;\\nVideoAdaptiveProbePolicy.STARTUP_PERIOD_MS = 6000;\\nVideoAdaptiveProbePolicy.LARGE_RATE_CHANGE_TRIGGER_PERCENT = 20;\\nVideoAdaptiveProbePolicy.TARGET_RATE_CHANGE_TRIGGER_PERCENT = 15;\\nVideoAdaptiveProbePolicy.LOW_BITRATE_THRESHOLD_KBPS = 300;\\nVideoAdaptiveProbePolicy.MIN_TIME_BETWEEN_PROBE = 5000;\\nVideoAdaptiveProbePolicy.MIN_TIME_BETWEEN_SUBSCRIBE = 2000;\\nVideoAdaptiveProbePolicy.MAX_HOLD_MS_BEFORE_PROBE = 60000;\\nVideoAdaptiveProbePolicy.MAX_ALLOWED_PROBE_TIME_MS = 60000;\\n//# sourceMappingURL=VideoAdaptiveProbePolicy.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/VideoAdaptiveProbePolicy.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videoelementfactory/NoOpVideoElementFactory.js\":\n/*!***********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videoelementfactory/NoOpVideoElementFactory.js ***!\n \\***********************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass NoOpVideoElementFactory {\\n create() {\\n const element = {\\n clientWidth: 400,\\n clientHeight: 300,\\n width: 400,\\n height: 300,\\n videoWidth: 400,\\n videoHeight: 300,\\n style: {\\n transform: '',\\n },\\n hasAttribute: () => {\\n return false;\\n },\\n removeAttribute: () => { },\\n setAttribute: () => { },\\n srcObject: false,\\n pause: () => { },\\n play: () => {\\n return Promise.resolve();\\n },\\n };\\n // @ts-ignore\\n return element;\\n }\\n}\\nexports[\\\"default\\\"] = NoOpVideoElementFactory;\\n//# sourceMappingURL=NoOpVideoElementFactory.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videoelementfactory/NoOpVideoElementFactory.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/CanvasVideoFrameBuffer.js\":\n/*!**********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/CanvasVideoFrameBuffer.js ***!\n \\**********************************************************************************************/\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[CanvasVideoFrameBuffer]] implements [[VideoFrameBuffer]]. It internally holds an `HTMLCanvasElement`.\\n */\\nclass CanvasVideoFrameBuffer {\\n constructor(canvas) {\\n this.canvas = canvas;\\n this.destroyed = false;\\n }\\n destroy() {\\n this.canvas = null;\\n this.destroyed = true;\\n }\\n asCanvasImageSource() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.destroyed) {\\n return Promise.reject('canvas buffer is destroyed');\\n }\\n return Promise.resolve(this.canvas);\\n });\\n }\\n asCanvasElement() {\\n return this.canvas;\\n }\\n}\\nexports[\\\"default\\\"] = CanvasVideoFrameBuffer;\\n//# sourceMappingURL=CanvasVideoFrameBuffer.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/CanvasVideoFrameBuffer.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/DefaultVideoFrameProcessorPipeline.js\":\n/*!**********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/DefaultVideoFrameProcessorPipeline.js ***!\n \\**********************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst CanvasVideoFrameBuffer_1 = __webpack_require__(/*! ./CanvasVideoFrameBuffer */ \\\"./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/CanvasVideoFrameBuffer.js\\\");\\nconst DEFAULT_FRAMERATE = 15;\\n/**\\n * [[DefaultVideoFrameProcessorPipeline]] implements {@link VideoFrameProcessorPipeline}.\\n * It constructs a buffer {@link CanvasVideoFrameBuffer} as source by default and invokes processor based on `framerate`.\\n * The default output type is `MediaStream`.\\n */\\nclass DefaultVideoFrameProcessorPipeline {\\n constructor(logger, stages) {\\n this.logger = logger;\\n this.stages = stages;\\n this.fr = DEFAULT_FRAMERATE;\\n // initialize with dummy inactive MediaStream to keep strict type\\n this.outputMediaStream = new MediaStream();\\n this.videoInput = document.createElement('video');\\n this.canvasOutput = document.createElement('canvas');\\n this.outputCtx = this.canvasOutput.getContext('2d');\\n this.canvasInput = document.createElement('canvas');\\n this.inputCtx = this.canvasInput.getContext('2d');\\n this.inputVideoStream = null;\\n this.sourceBuffers = [];\\n this.destBuffers = [];\\n this.observers = new Set();\\n this.hasStarted = false;\\n this.process = (_event) => __awaiter(this, void 0, void 0, function* () {\\n if (!this.inputVideoStream) {\\n return;\\n }\\n const processVideoStart = performance.now();\\n // videoWidth is intrinsic video width\\n if (this.videoInput.videoWidth) {\\n if (this.canvasInput.width !== this.videoInput.videoWidth) {\\n this.canvasInput.width = this.videoInput.videoWidth;\\n this.canvasInput.height = this.videoInput.videoHeight;\\n this.sourceBuffers[0].height = this.canvasInput.height;\\n this.sourceBuffers[0].width = this.canvasInput.width;\\n this.sourceBuffers[0].framerate = this.framerate;\\n }\\n this.inputCtx.drawImage(this.videoInput, 0, 0);\\n }\\n // processes input buffers\\n let buffers = [];\\n buffers.push(this.sourceBuffers[0]);\\n try {\\n for (const proc of this.processors) {\\n buffers = yield proc.process(buffers);\\n }\\n }\\n catch (_error) {\\n this.forEachObserver(obs => {\\n if (obs.processingDidFailToStart) {\\n obs.processingDidFailToStart();\\n }\\n });\\n return;\\n }\\n this.destBuffers = buffers;\\n let imageSource;\\n try {\\n imageSource = yield this.destBuffers[0].asCanvasImageSource();\\n }\\n catch (error) {\\n if (this.inputVideoStream) {\\n this.logger.info('buffers are destroyed and pipeline could not start');\\n this.forEachObserver(obs => {\\n if (obs.processingDidFailToStart) {\\n obs.processingDidFailToStart();\\n }\\n });\\n }\\n return;\\n }\\n // finally draws the image\\n const frameWidth = imageSource.width;\\n const frameHeight = imageSource.height;\\n if (frameWidth !== 0 && frameHeight !== 0) {\\n if (this.canvasOutput.width !== frameWidth && this.canvasOutput.height !== frameHeight) {\\n this.canvasOutput.width = frameWidth;\\n this.canvasOutput.height = frameHeight;\\n }\\n this.outputCtx.drawImage(imageSource, 0, 0, frameWidth, frameHeight, 0, 0, frameWidth, frameHeight);\\n if (!this.hasStarted) {\\n this.hasStarted = true;\\n this.forEachObserver(observer => {\\n if (observer.processingDidStart) {\\n observer.processingDidStart();\\n }\\n });\\n }\\n }\\n // measures time\\n const processVideoLatency = performance.now() - processVideoStart;\\n const leave = (1000 * 2) / this.framerate - processVideoLatency; // half fps\\n const nextFrameDelay = Math.max(0, 1000 / this.framerate - processVideoLatency);\\n if (leave <= 0) {\\n this.forEachObserver(obs => {\\n if (obs.processingLatencyTooHigh) {\\n obs.processingLatencyTooHigh(processVideoLatency);\\n }\\n });\\n }\\n // TODO: use requestAnimationFrame which is more organic and allows browser to conserve resources by its choices.\\n this.lastTimeOut = setTimeout(this.process, nextFrameDelay);\\n });\\n }\\n destroy() {\\n this.stop();\\n if (this.stages) {\\n for (const stage of this.stages) {\\n stage.destroy();\\n }\\n }\\n }\\n get framerate() {\\n return this.fr;\\n }\\n // A negative framerate will cause `captureStream` to throw `NotSupportedError`.\\n // The setter prevents this by switching to the default framerate if less than 0.\\n set framerate(value) {\\n this.fr = value < 0 ? DEFAULT_FRAMERATE : value;\\n }\\n stop() {\\n // empty stream, stop pipeline\\n // null input media stream stops the pipeline.\\n this.videoInput.removeEventListener('loadedmetadata', this.process);\\n this.videoInput.srcObject = null;\\n // Clean the input stream and buffers.\\n this.destroyInputMediaStreamAndBuffers();\\n // Stop all the output tracks, but don't discard the media stream,\\n // because it's how other parts of the codebase recognize when\\n // a selected stream is part of this transform device.\\n if (this.outputMediaStream) {\\n for (const track of this.outputMediaStream.getVideoTracks()) {\\n track.stop();\\n }\\n }\\n if (this.lastTimeOut) {\\n clearTimeout(this.lastTimeOut);\\n this.lastTimeOut = undefined;\\n }\\n if (this.hasStarted) {\\n this.hasStarted = false;\\n this.forEachObserver(observer => {\\n if (observer.processingDidStop) {\\n observer.processingDidStop();\\n }\\n });\\n }\\n }\\n addObserver(observer) {\\n this.observers.add(observer);\\n }\\n removeObserver(observer) {\\n this.observers.delete(observer);\\n }\\n getInputMediaStream() {\\n return __awaiter(this, void 0, void 0, function* () {\\n return this.inputVideoStream;\\n });\\n }\\n getActiveOutputMediaStream() {\\n if (this.outputMediaStream && this.outputMediaStream.active) {\\n return this.outputMediaStream;\\n }\\n return (this.outputMediaStream = this.canvasOutput.captureStream(this.framerate));\\n }\\n /**\\n * `inputMediaStream` is by default used to construct one {@link CanvasVideoFrameBuffer}\\n * The buffer will be fed into the first {@link VideoFrameProcessor}.\\n */\\n setInputMediaStream(inputMediaStream) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!inputMediaStream) {\\n this.stop();\\n return;\\n }\\n if (inputMediaStream.getVideoTracks().length === 0) {\\n this.logger.error('No video tracks in input media stream, ignoring');\\n return;\\n }\\n this.inputVideoStream = inputMediaStream;\\n const settings = this.inputVideoStream.getVideoTracks()[0].getSettings();\\n this.logger.info(`processing pipeline input stream settings ${settings}`);\\n this.canvasOutput.width = settings.width;\\n this.canvasOutput.height = settings.height;\\n this.videoInput.addEventListener('loadedmetadata', this.process);\\n this.videoInput.srcObject = this.inputVideoStream;\\n // avoid iOS safari full screen video\\n this.videoInput.setAttribute('playsinline', 'true');\\n // create sources\\n const canvasBuffer = new CanvasVideoFrameBuffer_1.default(this.canvasInput);\\n this.sourceBuffers.push(canvasBuffer);\\n this.videoInput.load();\\n yield this.videoInput.play();\\n });\\n }\\n set processors(stages) {\\n this.stages = stages;\\n }\\n get processors() {\\n return this.stages;\\n }\\n forEachObserver(observerFunc) {\\n for (const observer of this.observers) {\\n setTimeout(() => {\\n observerFunc(observer);\\n }, 0);\\n }\\n }\\n destroyInputMediaStreamAndBuffers() {\\n if (this.inputVideoStream) {\\n for (const track of this.inputVideoStream.getTracks()) {\\n track.stop();\\n }\\n }\\n this.inputVideoStream = null;\\n for (const buffer of this.sourceBuffers) {\\n buffer.destroy();\\n }\\n this.sourceBuffers = [];\\n }\\n}\\nexports[\\\"default\\\"] = DefaultVideoFrameProcessorPipeline;\\n//# sourceMappingURL=DefaultVideoFrameProcessorPipeline.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/DefaultVideoFrameProcessorPipeline.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/DefaultVideoTransformDevice.js\":\n/*!***************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/DefaultVideoTransformDevice.js ***!\n \\***************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst DefaultVideoFrameProcessorPipeline_1 = __webpack_require__(/*! ./DefaultVideoFrameProcessorPipeline */ \\\"./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/DefaultVideoFrameProcessorPipeline.js\\\");\\n/**\\n * [[DefaultVideoTransformDevice]] is an augmented [[VideoInputDevice]].\\n * It transform the input {@link Device} with an array of {@link VideoFrameProcessor} to produce a `MediaStream`.\\n */\\nclass DefaultVideoTransformDevice {\\n constructor(logger, device, processors, browserBehavior = new DefaultBrowserBehavior_1.default()) {\\n this.logger = logger;\\n this.device = device;\\n this.processors = processors;\\n this.browserBehavior = browserBehavior;\\n this.observers = new Set();\\n this.pipe = new DefaultVideoFrameProcessorPipeline_1.default(this.logger, this.processors);\\n this.pipe.addObserver(this);\\n }\\n /**\\n * getter for `outputMediaStream`.\\n * `outputMediaStream` is returned by internal {@link VideoFrameProcessorPipeline}.\\n * It is possible, but unlikely, that this accessor will throw.\\n */\\n get outputMediaStream() {\\n return this.pipe.outputMediaStream;\\n }\\n /**\\n * `chooseNewInnerDevice` preserves the inner pipeline and processing state and switches\\n * the inner device. Since the pipeline and processors are shared with the new transform device\\n * only one transform device can be used.\\n */\\n chooseNewInnerDevice(newDevice) {\\n const newTransformDevice = new DefaultVideoTransformDevice(this.logger, newDevice, this.processors, this.browserBehavior);\\n newTransformDevice.pipe = this.pipe;\\n return newTransformDevice;\\n }\\n /**\\n * Return the inner device as provided during construction.\\n */\\n getInnerDevice() {\\n return this.device;\\n }\\n intrinsicDevice() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const trackConstraints = {};\\n // Empty string and null.\\n if (!this.device) {\\n return trackConstraints;\\n }\\n // Device ID.\\n if (typeof this.device === 'string') {\\n if (this.browserBehavior.requiresNoExactMediaStreamConstraints()) {\\n trackConstraints.deviceId = this.device;\\n }\\n else {\\n trackConstraints.deviceId = { exact: this.device };\\n }\\n return trackConstraints;\\n }\\n if (this.device.id) {\\n // Nothing we can do.\\n return this.device;\\n }\\n // It's constraints.\\n return Object.assign(Object.assign({}, this.device), trackConstraints);\\n });\\n }\\n /**\\n * Create {@link VideoFrameProcessorPipeline} if there is not a existing one and start video processors.\\n * Returns output `MediaStream` produced by {@link VideoFrameProcessorPipeline}.\\n */\\n transformStream(mediaStream) {\\n return __awaiter(this, void 0, void 0, function* () {\\n yield this.pipe.setInputMediaStream(mediaStream);\\n this.inputMediaStream = mediaStream;\\n return this.pipe.getActiveOutputMediaStream();\\n });\\n }\\n /**\\n * onOutputStreamDisconnect is called when device controller wants to detach\\n * the transform device. The default behavior is to stop the output\\n * media stream and release the input the media stream. If the input media stream\\n * is the provided device, it will not be released.\\n */\\n onOutputStreamDisconnect() {\\n this.logger.info('DefaultVideoTransformDevice: detach stopping input media stream');\\n const deviceIsMediaStream = this.device && this.device.id;\\n // Stop processing but keep the pipe and processors\\n this.pipe.stop();\\n // Turn off the camera, unless device is a MediaStream\\n if (!deviceIsMediaStream) {\\n if (this.inputMediaStream) {\\n for (const track of this.inputMediaStream.getVideoTracks()) {\\n track.stop();\\n }\\n }\\n }\\n }\\n /**\\n * Dispose of the inner workings of the transform device, including pipeline and processors.\\n * `stop` can only be called when the transform device is not used by device controller anymore.\\n * After `stop` is called, all transform devices which share the pipeline must be discarded.\\n */\\n stop() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.inputMediaStream) {\\n for (const track of this.inputMediaStream.getVideoTracks()) {\\n track.stop();\\n }\\n }\\n this.pipe.destroy();\\n this.inputMediaStream = null;\\n });\\n }\\n /**\\n * Add an observer to receive notifications about lifecycle events.\\n * See {@link DefaultVideoTransformDeviceObserver} for details.\\n * If the observer has already been added, this method call has no effect.\\n */\\n addObserver(observer) {\\n this.observers.add(observer);\\n }\\n /**\\n * Remove an existing observer. If the observer has not been previously. this method call has no effect.\\n */\\n removeObserver(observer) {\\n this.observers.add(observer);\\n }\\n processingDidStart() {\\n this.logger.info('video transform device processing started');\\n this.forEachObserver(observer => {\\n if (observer.processingDidStart) {\\n observer.processingDidStart();\\n }\\n });\\n }\\n processingLatencyTooHigh(latencyMs) {\\n this.forEachObserver(observer => {\\n if (observer.processingLatencyTooHigh) {\\n observer.processingLatencyTooHigh(latencyMs);\\n }\\n });\\n }\\n processingDidFailToStart() {\\n this.logger.info('video transform device processing failed to start');\\n this.forEachObserver(observer => {\\n if (observer.processingDidFailToStart) {\\n observer.processingDidFailToStart();\\n }\\n });\\n }\\n processingDidStop() {\\n this.logger.info('video transform device processing stopped');\\n this.forEachObserver(observer => {\\n if (observer.processingDidStop) {\\n observer.processingDidStop();\\n }\\n });\\n }\\n forEachObserver(observerFunc) {\\n for (const observer of this.observers) {\\n setTimeout(() => {\\n observerFunc(observer);\\n }, 0);\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultVideoTransformDevice;\\n//# sourceMappingURL=DefaultVideoTransformDevice.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/DefaultVideoTransformDevice.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/NoOpVideoFrameProcessor.js\":\n/*!***********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/NoOpVideoFrameProcessor.js ***!\n \\***********************************************************************************************/\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[NoOpVideoFrameProcessor]] implements [[VideoFrameProcessor]].\\n * It's a no-op processor and input is passed to output directly.\\n */\\nclass NoOpVideoFrameProcessor {\\n process(buffers) {\\n return __awaiter(this, void 0, void 0, function* () {\\n return buffers;\\n });\\n }\\n destroy() {\\n return __awaiter(this, void 0, void 0, function* () {\\n return;\\n });\\n }\\n}\\nexports[\\\"default\\\"] = NoOpVideoFrameProcessor;\\n//# sourceMappingURL=NoOpVideoFrameProcessor.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/NoOpVideoFrameProcessor.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videosource/VideoSource.js\":\n/*!***************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videosource/VideoSource.js ***!\n \\***************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[VideoSource]] contains the information of a video source.\\n */\\nclass VideoSource {\\n}\\nexports[\\\"default\\\"] = VideoSource;\\n//# sourceMappingURL=VideoSource.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videosource/VideoSource.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videostreamidset/DefaultVideoStreamIdSet.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videostreamidset/DefaultVideoStreamIdSet.js ***!\n \\********************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[DefaultVideoStreamIdSet]] implements [[VideoStreamIdSet]].\\n */\\nclass DefaultVideoStreamIdSet {\\n constructor(ids) {\\n this.ids = new Set(ids);\\n }\\n add(streamId) {\\n this.ids.add(streamId);\\n }\\n array() {\\n const values = Array.from(this.ids.values());\\n return values.sort((a, b) => a - b);\\n }\\n contain(streamId) {\\n return this.ids.has(streamId);\\n }\\n empty() {\\n return this.ids.size === 0;\\n }\\n size() {\\n return this.ids.size;\\n }\\n equal(other) {\\n if (!other) {\\n return this.ids.size === 0;\\n }\\n const x = this.array();\\n const y = other.array();\\n if (x.length !== y.length) {\\n return false;\\n }\\n for (let i = 0; i < x.length; i++) {\\n if (x[i] !== y[i]) {\\n return false;\\n }\\n }\\n return true;\\n }\\n clone() {\\n return new DefaultVideoStreamIdSet(this.array());\\n }\\n remove(streamId) {\\n this.ids.delete(streamId);\\n }\\n toJSON() {\\n return this.array();\\n }\\n}\\nexports[\\\"default\\\"] = DefaultVideoStreamIdSet;\\n//# sourceMappingURL=DefaultVideoStreamIdSet.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videostreamidset/DefaultVideoStreamIdSet.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videostreamindex/DefaultVideoStreamIndex.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videostreamindex/DefaultVideoStreamIndex.js ***!\n \\********************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst DefaultVideoStreamIdSet_1 = __webpack_require__(/*! ../videostreamidset/DefaultVideoStreamIdSet */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamidset/DefaultVideoStreamIdSet.js\\\");\\nconst VideoStreamDescription_1 = __webpack_require__(/*! ./VideoStreamDescription */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamindex/VideoStreamDescription.js\\\");\\n/**\\n * [[DefaultVideoStreamIndex]] implements [[VideoStreamIndex]] to facilitate video stream subscription\\n * and includes query functions for stream id and attendee id.\\n */\\nclass DefaultVideoStreamIndex {\\n constructor(logger) {\\n this.logger = logger;\\n this.currentIndex = null;\\n this.indexForSubscribe = null;\\n this.currentSubscribeAck = null;\\n // These are based on the index at the time of the last Subscribe Ack\\n this.subscribeTrackToStreamMap = null;\\n this.subscribeStreamToAttendeeMap = null;\\n this.subscribeStreamToExternalUserIdMap = null;\\n this.subscribeSsrcToStreamMap = null;\\n // These are based on the most up to date index\\n this.streamToAttendeeMap = null;\\n this.streamToExternalUserIdMap = null;\\n this.videoStreamDescription = new VideoStreamDescription_1.default();\\n this.videoStreamDescription.trackLabel = 'AmazonChimeExpressVideo';\\n this.videoStreamDescription.streamId = 2;\\n this.videoStreamDescription.groupId = 2;\\n }\\n localStreamDescriptions() {\\n // localStreamDescriptions are used to construct IndexFrame\\n // old behavior for single video is to have streamId and groupId trackLabel fixed as the follows\\n return [this.videoStreamDescription.clone()];\\n }\\n remoteStreamDescriptions() {\\n if (!this.currentIndex || !this.currentIndex.sources) {\\n return [];\\n }\\n const streamInfos = [];\\n this.currentIndex.sources.forEach(source => {\\n const description = new VideoStreamDescription_1.default();\\n description.attendeeId = source.attendeeId;\\n description.groupId = source.groupId;\\n description.streamId = source.streamId;\\n description.maxBitrateKbps = source.maxBitrateKbps;\\n description.avgBitrateKbps = Math.floor(source.avgBitrateBps / 1000);\\n streamInfos.push(description);\\n });\\n return streamInfos;\\n }\\n integrateUplinkPolicyDecision(param) {\\n if (!!param && param.length) {\\n const encodingParam = param[0];\\n this.videoStreamDescription.maxBitrateKbps = encodingParam.maxBitrate / 1000;\\n this.videoStreamDescription.maxFrameRate = encodingParam.maxFramerate;\\n }\\n }\\n integrateIndexFrame(indexFrame) {\\n this.currentIndex = indexFrame;\\n // In the Amazon Chime SDKs, we assume a one to one mapping of group ID to profile ID when creating\\n // video tiles (multiple video sources are supported through applying a `Modality` to a given profile/session token)\\n //\\n // We enforce this here to mitigate any possible duplicate group IDs left from a reconnection where the previous\\n // signal channel hasn't been timed out yet. To guarantee we receive the latest stream we use the highest group ID\\n // since they are monotonically increasing.\\n const attendeeIdToMainGroupIdMap = new Map();\\n // Improve performance by not filtering sources unless\\n // we know the list will actually change\\n let attendeeWithMultipleGroupIdsExists = false;\\n for (const source of indexFrame.sources) {\\n if (!attendeeIdToMainGroupIdMap.has(source.attendeeId)) {\\n // We haven't see this attendee ID so just keep track of it\\n attendeeIdToMainGroupIdMap.set(source.attendeeId, source.groupId);\\n continue;\\n }\\n // Otherwise see if we should use the group ID corresponding to this source (we prefer the highest for each attendee)\\n const currentGroupId = attendeeIdToMainGroupIdMap.get(source.attendeeId);\\n if (currentGroupId < source.groupId) {\\n this.logger.warn(`Old group ID ${currentGroupId} found for attendee ID ${source.attendeeId}, replacing with newer group ID ${source.groupId}`);\\n attendeeIdToMainGroupIdMap.set(source.attendeeId, source.groupId);\\n }\\n attendeeWithMultipleGroupIdsExists = true;\\n }\\n if (attendeeWithMultipleGroupIdsExists) {\\n // Only use the sources corresponding to the main group IDs for the given attendee ID\\n this.currentIndex.sources = this.currentIndex.sources.filter(source => attendeeIdToMainGroupIdMap.get(source.attendeeId) === source.groupId);\\n }\\n this.streamToAttendeeMap = null;\\n this.streamToExternalUserIdMap = null;\\n }\\n subscribeFrameSent() {\\n // This is called just as a Subscribe is being sent. Save corresponding Index\\n this.indexForSubscribe = this.currentIndex;\\n }\\n integrateSubscribeAckFrame(subscribeAck) {\\n this.currentSubscribeAck = subscribeAck;\\n // These are valid until the next Subscribe Ack even if the index is updated\\n this.subscribeTrackToStreamMap = this.buildTrackToStreamMap(this.currentSubscribeAck);\\n this.subscribeSsrcToStreamMap = this.buildSSRCToStreamMap(this.currentSubscribeAck);\\n this.subscribeStreamToAttendeeMap = this.buildStreamToAttendeeMap(this.indexForSubscribe);\\n this.subscribeStreamToExternalUserIdMap = this.buildStreamExternalUserIdMap(this.indexForSubscribe);\\n }\\n integrateBitratesFrame(bitrates) {\\n if (this.currentIndex) {\\n for (const bitrate of bitrates.bitrates) {\\n const source = this.currentIndex.sources.find(source => source.streamId === bitrate.sourceStreamId);\\n if (source !== undefined) {\\n source.avgBitrateBps = bitrate.avgBitrateBps;\\n }\\n }\\n }\\n }\\n allStreams() {\\n const set = new DefaultVideoStreamIdSet_1.default();\\n if (this.currentIndex) {\\n for (const source of this.currentIndex.sources) {\\n set.add(source.streamId);\\n }\\n }\\n return set;\\n }\\n allVideoSendingSourcesExcludingSelf(selfAttendeeId) {\\n const videoSources = [];\\n const attendeeSet = new Set();\\n if (this.currentIndex) {\\n if (this.currentIndex.sources && this.currentIndex.sources.length) {\\n for (const stream of this.currentIndex.sources) {\\n const { attendeeId, externalUserId, mediaType } = stream;\\n if (attendeeId !== selfAttendeeId && mediaType === SignalingProtocol_js_1.SdkStreamMediaType.VIDEO) {\\n if (!attendeeSet.has(attendeeId)) {\\n videoSources.push({ attendee: { attendeeId, externalUserId } });\\n attendeeSet.add(attendeeId);\\n }\\n }\\n }\\n }\\n }\\n return videoSources;\\n }\\n streamSelectionUnderBandwidthConstraint(selfAttendeeId, largeTileAttendeeIds, smallTileAttendeeIds, bandwidthKbps) {\\n const newAttendees = new Set();\\n if (this.currentIndex) {\\n for (const stream of this.currentIndex.sources) {\\n if (stream.attendeeId === selfAttendeeId || stream.mediaType !== SignalingProtocol_js_1.SdkStreamMediaType.VIDEO) {\\n continue;\\n }\\n if (!largeTileAttendeeIds.has(stream.attendeeId) &&\\n !smallTileAttendeeIds.has(stream.attendeeId)) {\\n newAttendees.add(stream.attendeeId);\\n }\\n }\\n }\\n const attendeeToStreamDescriptorMap = this.buildAttendeeToSortedStreamDescriptorMapExcludingSelf(selfAttendeeId);\\n const selectionMap = new Map();\\n let usage = 0;\\n attendeeToStreamDescriptorMap.forEach((streams, attendeeId) => {\\n selectionMap.set(attendeeId, streams[0]);\\n usage += streams[0].maxBitrateKbps;\\n });\\n usage = this.trySelectHighBitrateForAttendees(attendeeToStreamDescriptorMap, largeTileAttendeeIds, usage, bandwidthKbps, selectionMap);\\n this.trySelectHighBitrateForAttendees(attendeeToStreamDescriptorMap, newAttendees, usage, bandwidthKbps, selectionMap);\\n const streamSelectionSet = new DefaultVideoStreamIdSet_1.default();\\n for (const source of selectionMap.values()) {\\n streamSelectionSet.add(source.streamId);\\n }\\n return streamSelectionSet;\\n }\\n highestQualityStreamFromEachGroupExcludingSelf(selfAttendeeId) {\\n const set = new DefaultVideoStreamIdSet_1.default();\\n if (this.currentIndex) {\\n const maxes = new Map();\\n for (const source of this.currentIndex.sources) {\\n if (source.attendeeId === selfAttendeeId || source.mediaType !== SignalingProtocol_js_1.SdkStreamMediaType.VIDEO) {\\n continue;\\n }\\n if (!maxes.has(source.groupId) ||\\n source.maxBitrateKbps > maxes.get(source.groupId).maxBitrateKbps) {\\n maxes.set(source.groupId, source);\\n }\\n }\\n for (const source of maxes.values()) {\\n set.add(source.streamId);\\n }\\n }\\n return set;\\n }\\n numberOfVideoPublishingParticipantsExcludingSelf(selfAttendeeId) {\\n return this.highestQualityStreamFromEachGroupExcludingSelf(selfAttendeeId).array().length;\\n }\\n numberOfParticipants() {\\n if (!!this.currentIndex.numParticipants) {\\n return this.currentIndex.numParticipants;\\n }\\n return -1;\\n }\\n attendeeIdForTrack(trackId) {\\n const streamId = this.streamIdForTrack(trackId);\\n if (streamId === undefined || !this.subscribeStreamToAttendeeMap) {\\n this.logger.warn(`no attendee found for track ${trackId}`);\\n return '';\\n }\\n const attendeeId = this.subscribeStreamToAttendeeMap.get(streamId);\\n if (!attendeeId) {\\n this.logger.info(`track ${trackId} (stream ${streamId}) does not correspond to a known attendee`);\\n return '';\\n }\\n return attendeeId;\\n }\\n externalUserIdForTrack(trackId) {\\n const streamId = this.streamIdForTrack(trackId);\\n if (streamId === undefined || !this.subscribeStreamToExternalUserIdMap) {\\n this.logger.warn(`no external user id found for track ${trackId}`);\\n return '';\\n }\\n const externalUserId = this.subscribeStreamToExternalUserIdMap.get(streamId);\\n if (!externalUserId) {\\n this.logger.info(`track ${trackId} (stream ${streamId}) does not correspond to a known externalUserId`);\\n return '';\\n }\\n return externalUserId;\\n }\\n attendeeIdForStreamId(streamId) {\\n if (!this.streamToAttendeeMap) {\\n if (this.currentIndex) {\\n this.streamToAttendeeMap = this.buildStreamToAttendeeMap(this.currentIndex);\\n }\\n else {\\n return '';\\n }\\n }\\n const attendeeId = this.streamToAttendeeMap.get(streamId);\\n if (!attendeeId) {\\n this.logger.info(`stream ${streamId}) does not correspond to a known attendee`);\\n return '';\\n }\\n return attendeeId;\\n }\\n groupIdForStreamId(streamId) {\\n for (const source of this.currentIndex.sources) {\\n if (source.streamId === streamId) {\\n return source.groupId;\\n }\\n }\\n // If wasn't found in current index, then it could be in index used in last subscribe\\n if (!!this.indexForSubscribe) {\\n for (const source of this.indexForSubscribe.sources) {\\n if (source.streamId === streamId) {\\n return source.groupId;\\n }\\n }\\n }\\n return undefined;\\n }\\n StreamIdsInSameGroup(streamId1, streamId2) {\\n if (this.groupIdForStreamId(streamId1) === this.groupIdForStreamId(streamId2)) {\\n return true;\\n }\\n return false;\\n }\\n streamIdForTrack(trackId) {\\n if (!this.subscribeTrackToStreamMap) {\\n return undefined;\\n }\\n return this.subscribeTrackToStreamMap.get(trackId);\\n }\\n streamIdForSSRC(ssrcId) {\\n if (!this.subscribeSsrcToStreamMap) {\\n return undefined;\\n }\\n return this.subscribeSsrcToStreamMap.get(ssrcId);\\n }\\n streamsPausedAtSource() {\\n const paused = new DefaultVideoStreamIdSet_1.default();\\n if (this.currentIndex) {\\n for (const streamId of this.currentIndex.pausedAtSourceIds) {\\n paused.add(streamId);\\n }\\n }\\n return paused;\\n }\\n buildTrackToStreamMap(subscribeAck) {\\n const map = new Map();\\n this.logger.debug(() => `trackMap ${JSON.stringify(subscribeAck.tracks)}`);\\n for (const trackMapping of subscribeAck.tracks) {\\n if (trackMapping.trackLabel.length > 0 && trackMapping.streamId > 0) {\\n map.set(trackMapping.trackLabel, trackMapping.streamId);\\n }\\n }\\n return map;\\n }\\n buildSSRCToStreamMap(subscribeAck) {\\n const map = new Map();\\n this.logger.debug(() => `ssrcMap ${JSON.stringify(subscribeAck.tracks)}`);\\n for (const trackMapping of subscribeAck.tracks) {\\n if (trackMapping.trackLabel.length > 0 && trackMapping.streamId > 0) {\\n map.set(trackMapping.ssrc, trackMapping.streamId);\\n }\\n }\\n return map;\\n }\\n buildStreamToAttendeeMap(indexFrame) {\\n const map = new Map();\\n if (indexFrame) {\\n for (const source of indexFrame.sources) {\\n map.set(source.streamId, source.attendeeId);\\n }\\n }\\n return map;\\n }\\n buildStreamExternalUserIdMap(indexFrame) {\\n const map = new Map();\\n if (indexFrame) {\\n for (const source of indexFrame.sources) {\\n if (!!source.externalUserId) {\\n map.set(source.streamId, source.externalUserId);\\n }\\n }\\n }\\n return map;\\n }\\n trySelectHighBitrateForAttendees(attendeeToStreamDescriptorMap, highAttendees, currentUsage, bandwidthKbps, currentSelectionRef) {\\n for (const attendeeId of highAttendees) {\\n if (currentUsage >= bandwidthKbps) {\\n break;\\n }\\n if (attendeeToStreamDescriptorMap.has(attendeeId)) {\\n const streams = attendeeToStreamDescriptorMap.get(attendeeId);\\n for (const l of streams.reverse()) {\\n if (currentUsage - currentSelectionRef.get(attendeeId).maxBitrateKbps + l.maxBitrateKbps <\\n bandwidthKbps) {\\n currentUsage =\\n currentUsage - currentSelectionRef.get(attendeeId).maxBitrateKbps + l.maxBitrateKbps;\\n currentSelectionRef.set(attendeeId, l);\\n break;\\n }\\n }\\n }\\n }\\n return currentUsage;\\n }\\n buildAttendeeToSortedStreamDescriptorMapExcludingSelf(selfAttendeeId) {\\n const attendeeToStreamDescriptorMap = new Map();\\n if (this.currentIndex) {\\n for (const source of this.currentIndex.sources) {\\n if (source.attendeeId === selfAttendeeId || source.mediaType !== SignalingProtocol_js_1.SdkStreamMediaType.VIDEO) {\\n continue;\\n }\\n if (attendeeToStreamDescriptorMap.has(source.attendeeId)) {\\n attendeeToStreamDescriptorMap.get(source.attendeeId).push(source);\\n }\\n else {\\n attendeeToStreamDescriptorMap.set(source.attendeeId, [source]);\\n }\\n }\\n }\\n attendeeToStreamDescriptorMap.forEach((streams, _attendeeId) => {\\n streams.sort((stream1, stream2) => {\\n if (stream1.maxBitrateKbps > stream2.maxBitrateKbps) {\\n return 1;\\n }\\n else if (stream1.maxBitrateKbps < stream2.maxBitrateKbps) {\\n return -1;\\n }\\n else {\\n return 0;\\n }\\n });\\n });\\n return attendeeToStreamDescriptorMap;\\n }\\n}\\nexports[\\\"default\\\"] = DefaultVideoStreamIndex;\\n//# sourceMappingURL=DefaultVideoStreamIndex.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videostreamindex/DefaultVideoStreamIndex.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videostreamindex/SimulcastVideoStreamIndex.js\":\n/*!**********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videostreamindex/SimulcastVideoStreamIndex.js ***!\n \\**********************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst DefaultVideoStreamIndex_1 = __webpack_require__(/*! ./DefaultVideoStreamIndex */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamindex/DefaultVideoStreamIndex.js\\\");\\nconst VideoStreamDescription_1 = __webpack_require__(/*! ./VideoStreamDescription */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamindex/VideoStreamDescription.js\\\");\\n/**\\n * [[SimulcastTransceiverController]] implements [[VideoStreamIndex]] to facilitate video stream\\n * subscription and includes query functions for stream id and attendee id.\\n */\\nclass SimulcastVideoStreamIndex extends DefaultVideoStreamIndex_1.default {\\n constructor(logger) {\\n super(logger);\\n this.streamIdToBitrateKbpsMap = new Map();\\n this._localStreamInfos = [];\\n this._lastBitRateMsgTime = Date.now();\\n }\\n localStreamDescriptions() {\\n const clonedDescriptions = [];\\n this._localStreamInfos.forEach(desc => {\\n clonedDescriptions.push(desc.clone());\\n });\\n return clonedDescriptions;\\n }\\n integrateUplinkPolicyDecision(encodingParams) {\\n // Reuse local streams (that might already have stream IDs allocated) until\\n // there are no more and then add as many new local streams as needed\\n let hasStreamsToReuse = true;\\n let localStreamIndex = 0;\\n for (let i = 0; i < encodingParams.length; i++) {\\n const targetMaxBitrateKbps = encodingParams[i].maxBitrate / 1000;\\n const targetMaxFrameRate = encodingParams[i].maxFramerate;\\n if (!hasStreamsToReuse || i === this._localStreamInfos.length) {\\n hasStreamsToReuse = false;\\n const newInfo = new VideoStreamDescription_1.default();\\n newInfo.maxBitrateKbps = targetMaxBitrateKbps;\\n newInfo.maxFrameRate = targetMaxFrameRate;\\n newInfo.disabledByUplinkPolicy = targetMaxBitrateKbps === 0 ? true : false;\\n if (targetMaxBitrateKbps !== 0) {\\n newInfo.timeEnabled = Date.now();\\n }\\n this._localStreamInfos.push(newInfo);\\n localStreamIndex++;\\n continue;\\n }\\n if (this._localStreamInfos[localStreamIndex].maxBitrateKbps === 0 &&\\n targetMaxBitrateKbps > 0) {\\n this._localStreamInfos[localStreamIndex].timeEnabled = Date.now();\\n }\\n this._localStreamInfos[localStreamIndex].maxBitrateKbps = targetMaxBitrateKbps;\\n this._localStreamInfos[localStreamIndex].maxFrameRate = targetMaxFrameRate;\\n this._localStreamInfos[localStreamIndex].disabledByUplinkPolicy =\\n targetMaxBitrateKbps === 0 ? true : false;\\n if (this._localStreamInfos[localStreamIndex].disabledByUplinkPolicy === true) {\\n this._localStreamInfos[localStreamIndex].disabledByWebRTC = false;\\n }\\n localStreamIndex++;\\n }\\n if (hasStreamsToReuse) {\\n // splice is zero-based, remove stream starting from localStreamIndex\\n this._localStreamInfos.splice(localStreamIndex);\\n }\\n }\\n integrateBitratesFrame(bitrateFrame) {\\n super.integrateBitratesFrame(bitrateFrame);\\n const stillSending = new Set();\\n const existingSet = new Set(this.streamIdToBitrateKbpsMap.keys());\\n for (const bitrateMsg of bitrateFrame.bitrates) {\\n stillSending.add(bitrateMsg.sourceStreamId);\\n this.streamIdToBitrateKbpsMap.set(bitrateMsg.sourceStreamId, Math.trunc(bitrateMsg.avgBitrateBps / 1000));\\n }\\n for (const id of existingSet) {\\n if (!stillSending.has(id)) {\\n const avgBitrateBps = this.streamIdToBitrateKbpsMap.get(id);\\n if (avgBitrateBps === SimulcastVideoStreamIndex.UNSEEN_STREAM_BITRATE) {\\n this.streamIdToBitrateKbpsMap.set(id, SimulcastVideoStreamIndex.RECENTLY_INACTIVE_STREAM_BITRATE);\\n }\\n else {\\n this.streamIdToBitrateKbpsMap.set(id, SimulcastVideoStreamIndex.NOT_SENDING_STREAM_BITRATE);\\n }\\n }\\n }\\n for (let i = 0; i < this._localStreamInfos.length; i++) {\\n this._localStreamInfos[i].disabledByWebRTC = false;\\n const streamId = this._localStreamInfos[i].streamId;\\n if (this._localStreamInfos[i].disabledByUplinkPolicy) {\\n continue;\\n }\\n if (this.streamIdToBitrateKbpsMap.has(streamId)) {\\n const avgBitrateKbps = this.streamIdToBitrateKbpsMap.get(streamId);\\n if (avgBitrateKbps === SimulcastVideoStreamIndex.NOT_SENDING_STREAM_BITRATE &&\\n this._lastBitRateMsgTime - this._localStreamInfos[i].timeEnabled >\\n SimulcastVideoStreamIndex.BitratesMsgFrequencyMs) {\\n this._localStreamInfos[i].disabledByWebRTC = true;\\n }\\n }\\n else {\\n // Do not flag as disabled if it was recently enabled\\n if (this._lastBitRateMsgTime - this._localStreamInfos[i].timeEnabled >\\n SimulcastVideoStreamIndex.BitratesMsgFrequencyMs) {\\n this._localStreamInfos[i].disabledByWebRTC = true;\\n }\\n }\\n }\\n this._lastBitRateMsgTime = Date.now();\\n this.logLocalStreamDescriptions();\\n }\\n logLocalStreamDescriptions() {\\n let msg = '';\\n for (const desc of this._localStreamInfos) {\\n msg += `streamId=${desc.streamId} maxBitrate=${desc.maxBitrateKbps} disabledByWebRTC=${desc.disabledByWebRTC} disabledByUplink=${desc.disabledByUplinkPolicy}\\\\n`;\\n }\\n this.logger.debug(() => {\\n return msg;\\n });\\n }\\n integrateIndexFrame(indexFrame) {\\n super.integrateIndexFrame(indexFrame);\\n const newIndexStreamIdSet = new Set();\\n const existingSet = new Set(this.streamIdToBitrateKbpsMap.keys());\\n for (const stream of this.currentIndex.sources) {\\n if (stream.mediaType !== SignalingProtocol_js_1.SdkStreamMediaType.VIDEO) {\\n continue;\\n }\\n newIndexStreamIdSet.add(stream.streamId);\\n if (!this.streamIdToBitrateKbpsMap.has(stream.streamId)) {\\n this.streamIdToBitrateKbpsMap.set(stream.streamId, SimulcastVideoStreamIndex.UNSEEN_STREAM_BITRATE);\\n }\\n }\\n for (const id of existingSet) {\\n if (!newIndexStreamIdSet.has(id)) {\\n this.streamIdToBitrateKbpsMap.delete(id);\\n }\\n }\\n }\\n integrateSubscribeAckFrame(subscribeAck) {\\n super.integrateSubscribeAckFrame(subscribeAck);\\n if (!subscribeAck.allocations || subscribeAck.allocations === undefined) {\\n return;\\n }\\n let localStreamStartIndex = 0;\\n for (const allocation of subscribeAck.allocations) {\\n // track label is what we offered to the server\\n if (this._localStreamInfos.length < localStreamStartIndex + 1) {\\n this.logger.info('simulcast: allocation has more than number of local streams');\\n break;\\n }\\n this._localStreamInfos[localStreamStartIndex].groupId = allocation.groupId;\\n this._localStreamInfos[localStreamStartIndex].streamId = allocation.streamId;\\n if (!this.streamIdToBitrateKbpsMap.has(allocation.streamId)) {\\n this.streamIdToBitrateKbpsMap.set(allocation.streamId, SimulcastVideoStreamIndex.UNSEEN_STREAM_BITRATE);\\n }\\n localStreamStartIndex++;\\n }\\n }\\n}\\nexports[\\\"default\\\"] = SimulcastVideoStreamIndex;\\n// First time when the bitrate of a stream id is missing from bitrate message, mark it as UNSEEN\\nSimulcastVideoStreamIndex.UNSEEN_STREAM_BITRATE = -2;\\n// Second time when the bitrate is missing, mark it as recently inactive\\nSimulcastVideoStreamIndex.RECENTLY_INACTIVE_STREAM_BITRATE = -1;\\n// Third time when bitrate is missing, mark it as not sending\\nSimulcastVideoStreamIndex.NOT_SENDING_STREAM_BITRATE = 0;\\nSimulcastVideoStreamIndex.BitratesMsgFrequencyMs = 4000;\\n//# sourceMappingURL=SimulcastVideoStreamIndex.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videostreamindex/SimulcastVideoStreamIndex.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videostreamindex/VideoStreamDescription.js\":\n/*!*******************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videostreamindex/VideoStreamDescription.js ***!\n \\*******************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nclass VideoStreamDescription {\\n constructor(attendeeId, groupId, streamId, maxBitrateKbps, avgBitrateKbps) {\\n this.attendeeId = '';\\n this.groupId = 0;\\n this.streamId = 0;\\n this.ssrc = 0;\\n this.trackLabel = '';\\n this.maxBitrateKbps = 0;\\n // average bitrate is updated every 2 seconds via bitrates messages\\n this.avgBitrateKbps = 0;\\n this.maxFrameRate = 0;\\n this.timeEnabled = 0;\\n this.disabledByWebRTC = false;\\n this.disabledByUplinkPolicy = false;\\n this.attendeeId = attendeeId;\\n this.groupId = groupId;\\n this.streamId = streamId;\\n this.maxBitrateKbps = maxBitrateKbps;\\n this.avgBitrateKbps = avgBitrateKbps;\\n }\\n clone() {\\n const newInfo = new VideoStreamDescription();\\n newInfo.attendeeId = this.attendeeId;\\n newInfo.groupId = this.groupId;\\n newInfo.streamId = this.streamId;\\n newInfo.ssrc = this.ssrc;\\n newInfo.trackLabel = this.trackLabel;\\n newInfo.maxBitrateKbps = this.maxBitrateKbps;\\n newInfo.avgBitrateKbps = this.avgBitrateKbps;\\n newInfo.maxFrameRate = this.maxFrameRate;\\n newInfo.timeEnabled = this.timeEnabled;\\n newInfo.disabledByWebRTC = this.disabledByWebRTC;\\n newInfo.disabledByUplinkPolicy = this.disabledByUplinkPolicy;\\n return newInfo;\\n }\\n toStreamDescriptor() {\\n const descriptor = SignalingProtocol_js_1.SdkStreamDescriptor.create();\\n descriptor.mediaType = SignalingProtocol_js_1.SdkStreamMediaType.VIDEO;\\n descriptor.trackLabel = this.trackLabel;\\n descriptor.attendeeId = this.attendeeId;\\n descriptor.streamId = this.streamId;\\n descriptor.groupId = this.groupId;\\n descriptor.framerate = this.maxFrameRate;\\n descriptor.maxBitrateKbps =\\n this.disabledByUplinkPolicy || this.disabledByWebRTC ? 0 : this.maxBitrateKbps;\\n descriptor.avgBitrateBps = this.avgBitrateKbps;\\n return descriptor;\\n }\\n}\\nexports[\\\"default\\\"] = VideoStreamDescription;\\n//# sourceMappingURL=VideoStreamDescription.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videostreamindex/VideoStreamDescription.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videotile/DefaultVideoTile.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videotile/DefaultVideoTile.js ***!\n \\******************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst DefaultModality_1 = __webpack_require__(/*! ../modality/DefaultModality */ \\\"./node_modules/amazon-chime-sdk-js/build/modality/DefaultModality.js\\\");\\nconst AsyncScheduler_1 = __webpack_require__(/*! ../scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nconst VideoTileState_1 = __webpack_require__(/*! ./VideoTileState */ \\\"./node_modules/amazon-chime-sdk-js/build/videotile/VideoTileState.js\\\");\\nclass DefaultVideoTile {\\n constructor(tileId, localTile, tileController, devicePixelRatioMonitor) {\\n this.tileController = tileController;\\n this.devicePixelRatioMonitor = devicePixelRatioMonitor;\\n this.tileState = new VideoTileState_1.default();\\n this.tileState.tileId = tileId;\\n this.tileState.localTile = localTile;\\n this.devicePixelRatioMonitor.registerObserver(this);\\n }\\n static connectVideoStreamToVideoElement(videoStream, videoElement, localTile) {\\n const transform = localTile && videoStream.getVideoTracks()[0].getSettings().facingMode !== 'environment'\\n ? 'rotateY(180deg)'\\n : '';\\n DefaultVideoTile.setVideoElementFlag(videoElement, 'disablePictureInPicture', localTile);\\n DefaultVideoTile.setVideoElementFlag(videoElement, 'disableRemotePlayback', localTile);\\n if (videoElement.style.transform !== transform) {\\n videoElement.style.transform = transform;\\n }\\n if (videoElement.hasAttribute('controls')) {\\n videoElement.removeAttribute('controls');\\n }\\n if (!videoElement.hasAttribute('autoplay')) {\\n videoElement.setAttribute('autoplay', 'true');\\n }\\n // playsinline is needed for video to play in iPhone in non-fullscreen mode.\\n // See https://developer.apple.com/documentation/webkit/safari_tools_and_features/delivering_video_content_for_safari#3030250\\n if (!videoElement.hasAttribute('playsinline')) {\\n videoElement.setAttribute('playsinline', 'true');\\n }\\n // Note that setting the *attribute* 'muted' affects whether the element\\n // is muted *by default* (`.defaultMuted`), not whether it is currently muted (`.muted`).\\n // https://html.spec.whatwg.org/#dom-media-defaultmuted\\n if (!videoElement.hasAttribute('muted')) {\\n // The default value…\\n videoElement.setAttribute('muted', 'true');\\n // … and the value right now.\\n videoElement.muted = true;\\n }\\n if (videoElement.srcObject !== videoStream) {\\n videoElement.srcObject = videoStream;\\n }\\n if (new DefaultBrowserBehavior_1.default().requiresVideoElementWorkaround()) {\\n AsyncScheduler_1.default.nextTick(() => __awaiter(this, void 0, void 0, function* () {\\n try {\\n yield videoElement.play();\\n }\\n catch (error) { }\\n }));\\n }\\n }\\n static disconnectVideoStreamFromVideoElement(videoElement, dueToPause) {\\n if (!videoElement) {\\n return;\\n }\\n if (dueToPause) {\\n videoElement.srcObject = null;\\n videoElement.style.transform = '';\\n }\\n else {\\n if (!videoElement.srcObject) {\\n return;\\n }\\n videoElement.pause();\\n videoElement.style.transform = '';\\n DefaultVideoTile.setVideoElementFlag(videoElement, 'disablePictureInPicture', false);\\n DefaultVideoTile.setVideoElementFlag(videoElement, 'disableRemotePlayback', false);\\n // We must remove all the tracks from the MediaStream before\\n // clearing the `srcObject` to prevent Safari from crashing.\\n const mediaStream = videoElement.srcObject;\\n const tracks = mediaStream.getTracks();\\n for (const track of tracks) {\\n track.stop();\\n mediaStream.removeTrack(track);\\n }\\n // Need to yield the message loop before clearing `srcObject` to\\n // prevent Safari from crashing.\\n if (new DefaultBrowserBehavior_1.default().requiresVideoElementWorkaround()) {\\n AsyncScheduler_1.default.nextTick(() => {\\n videoElement.srcObject = null;\\n });\\n }\\n else {\\n videoElement.srcObject = null;\\n }\\n }\\n }\\n destroy() {\\n this.devicePixelRatioMonitor.removeObserver(this);\\n if (this.tileState.boundVideoElement &&\\n this.tileState.boundVideoElement.srcObject === this.tileState.boundVideoStream) {\\n DefaultVideoTile.disconnectVideoStreamFromVideoElement(this.tileState.boundVideoElement, false);\\n }\\n this.tileState = new VideoTileState_1.default();\\n }\\n devicePixelRatioChanged(newDevicePixelRatio) {\\n this.tileState.devicePixelRatio = newDevicePixelRatio;\\n this.sendTileStateUpdate();\\n }\\n id() {\\n return this.tileState.tileId;\\n }\\n state() {\\n return this.tileState.clone();\\n }\\n stateRef() {\\n return this.tileState;\\n }\\n bindVideoStream(attendeeId, localTile, mediaStream, contentWidth, contentHeight, streamId, externalUserId) {\\n let tileUpdated = false;\\n if (this.tileState.boundAttendeeId !== attendeeId) {\\n this.tileState.boundAttendeeId = attendeeId;\\n if (new DefaultModality_1.default(attendeeId).hasModality(DefaultModality_1.default.MODALITY_CONTENT)) {\\n this.tileState.isContent = true;\\n }\\n tileUpdated = true;\\n }\\n if (this.tileState.boundExternalUserId !== externalUserId) {\\n this.tileState.boundExternalUserId = externalUserId;\\n tileUpdated = true;\\n }\\n if (this.tileState.localTile !== localTile) {\\n this.tileState.localTile = localTile;\\n tileUpdated = true;\\n }\\n if (this.tileState.boundVideoStream !== mediaStream) {\\n this.tileState.boundVideoStream = mediaStream;\\n tileUpdated = true;\\n }\\n if (this.tileState.videoStreamContentWidth !== contentWidth) {\\n this.tileState.videoStreamContentWidth = contentWidth;\\n tileUpdated = true;\\n }\\n if (this.tileState.videoStreamContentHeight !== contentHeight) {\\n this.tileState.videoStreamContentHeight = contentHeight;\\n tileUpdated = true;\\n }\\n if (this.tileState.streamId !== streamId) {\\n this.tileState.streamId = streamId;\\n tileUpdated = true;\\n }\\n if (tileUpdated) {\\n this.sendTileStateUpdate();\\n }\\n }\\n bindVideoElement(videoElement) {\\n let tileUpdated = false;\\n if (this.tileState.boundVideoElement !== videoElement) {\\n this.tileState.boundVideoElement = videoElement;\\n tileUpdated = true;\\n }\\n if (this.tileState.boundVideoElement !== null) {\\n if (this.tileState.videoElementCSSWidthPixels !== videoElement.clientWidth) {\\n this.tileState.videoElementCSSWidthPixels = videoElement.clientWidth;\\n tileUpdated = true;\\n }\\n if (this.tileState.videoElementCSSHeightPixels !== videoElement.clientHeight) {\\n this.tileState.videoElementCSSHeightPixels = videoElement.clientHeight;\\n tileUpdated = true;\\n }\\n }\\n else {\\n this.tileState.videoElementCSSWidthPixels = null;\\n this.tileState.videoElementCSSHeightPixels = null;\\n }\\n if (tileUpdated) {\\n this.sendTileStateUpdate();\\n }\\n }\\n pause() {\\n if (!this.tileState.paused) {\\n this.tileState.paused = true;\\n this.sendTileStateUpdate();\\n }\\n }\\n unpause() {\\n if (this.tileState.paused) {\\n this.tileState.paused = false;\\n this.sendTileStateUpdate();\\n }\\n }\\n markPoorConnection() {\\n if (this.tileState.poorConnection) {\\n return false;\\n }\\n this.tileState.poorConnection = true;\\n this.sendTileStateUpdate();\\n return true;\\n }\\n unmarkPoorConnection() {\\n if (!this.tileState.poorConnection) {\\n return false;\\n }\\n this.tileState.poorConnection = false;\\n this.sendTileStateUpdate();\\n return true;\\n }\\n capture() {\\n if (!this.tileState.active) {\\n return null;\\n }\\n const canvas = document.createElement('canvas');\\n const video = this.tileState.boundVideoElement;\\n canvas.width = video.videoWidth || video.width;\\n canvas.height = video.videoHeight || video.height;\\n const ctx = canvas.getContext('2d');\\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\\n return ctx.getImageData(0, 0, canvas.width, canvas.height);\\n }\\n sendTileStateUpdate() {\\n this.updateActiveState();\\n this.updateVideoStreamOnVideoElement();\\n this.updateVideoElementPhysicalPixels();\\n this.tileController.sendTileStateUpdate(this.state());\\n }\\n updateActiveState() {\\n this.tileState.active = !!(!this.tileState.paused &&\\n !this.tileState.poorConnection &&\\n this.tileState.boundAttendeeId &&\\n this.tileState.boundVideoElement &&\\n this.tileState.boundVideoStream);\\n }\\n updateVideoElementPhysicalPixels() {\\n if (typeof this.tileState.videoElementCSSWidthPixels === 'number' &&\\n typeof this.tileState.videoElementCSSHeightPixels === 'number') {\\n this.tileState.videoElementPhysicalWidthPixels =\\n this.tileState.devicePixelRatio * this.tileState.videoElementCSSWidthPixels;\\n this.tileState.videoElementPhysicalHeightPixels =\\n this.tileState.devicePixelRatio * this.tileState.videoElementCSSHeightPixels;\\n }\\n else {\\n this.tileState.videoElementPhysicalWidthPixels = null;\\n this.tileState.videoElementPhysicalHeightPixels = null;\\n }\\n }\\n updateVideoStreamOnVideoElement() {\\n if (this.tileState.active) {\\n DefaultVideoTile.connectVideoStreamToVideoElement(this.tileState.boundVideoStream, this.tileState.boundVideoElement, this.tileState.localTile);\\n }\\n else {\\n DefaultVideoTile.disconnectVideoStreamFromVideoElement(this.tileState.boundVideoElement, this.tileState.paused);\\n }\\n }\\n static setVideoElementFlag(videoElement, flag, value) {\\n if (flag in videoElement) {\\n // @ts-ignore\\n videoElement[flag] = value;\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultVideoTile;\\n//# sourceMappingURL=DefaultVideoTile.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videotile/DefaultVideoTile.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videotile/VideoTileState.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videotile/VideoTileState.js ***!\n \\****************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[VideoTileState]] encapsulates the state of a [[VideoTile]]\\n */\\nclass VideoTileState {\\n constructor() {\\n /**\\n * The unique identifier for the [[VideoTile]] managed by [[VideoTileController]]. Each attendee can have at most one tileId.\\n */\\n this.tileId = null;\\n /**\\n * Indication of whether tile is associated with local video.\\n */\\n this.localTile = false;\\n /**\\n * Indication of whether the tile associated with the local attendee has started to play.\\n */\\n this.localTileStarted = false;\\n /**\\n * Indication of whether the tile has content-sharing video.\\n */\\n this.isContent = false;\\n /**\\n * Indication of whether the tile has active video stream.\\n */\\n this.active = false;\\n /**\\n * Indication of whether the tile has paused video stream.\\n */\\n this.paused = false;\\n /**\\n * Indication of whether the remote video is paused at publishing attendee. This field is not supported.\\n */\\n this.poorConnection = false;\\n /**\\n * The attendee id associated with the [[VideoTile]].\\n */\\n this.boundAttendeeId = null;\\n /**\\n * The user id associated with the [[VideoTile]].\\n */\\n this.boundExternalUserId = null;\\n /**\\n * The video stream bound with the [[VideoTile]].\\n */\\n this.boundVideoStream = null;\\n /**\\n * The HTMLVideoElement bound with the [[VideoTile]].\\n */\\n this.boundVideoElement = null;\\n /**\\n * The nameplate for the [[VideoTile]]. SDK users should use boundExternalUserId for user id instead of this field.\\n */\\n this.nameplate = null;\\n /**\\n * The intrinsic width of the video stream upon binding with the [[VideoTile]].\\n * Video stream intrinsic width could change and developers should use HTMLVideoElement listener for actual intrinsic width.\\n */\\n this.videoStreamContentWidth = null;\\n /**\\n * The intrinsic height of the video stream upon binding with the [[VideoTile]]\\n * Video stream intrinsic height could change and developers should use HTMLVideoElement listener for actual intrinsic height.\\n */\\n this.videoStreamContentHeight = null;\\n /**\\n * The CSS width in pixel of the HTMLVideoElement upon binding with the [[VideoTile]].\\n */\\n this.videoElementCSSWidthPixels = null;\\n /**\\n * The CSS height in pixel of the HTMLVideoElement upon binding with the [[VideoTile]].\\n */\\n this.videoElementCSSHeightPixels = null;\\n /**\\n * The device pixel ratio of the current display monitor.\\n */\\n this.devicePixelRatio = 0;\\n /**\\n * The physical width in pixel of the HTMLVideoElement upon binding with the [[VideoTile]].\\n */\\n this.videoElementPhysicalWidthPixels = null;\\n /**\\n * The physical height in pixel of the HTMLVideoElement upon binding with the [[VideoTile]].\\n */\\n this.videoElementPhysicalHeightPixels = null;\\n /**\\n * The unique identifier published by server to associate with bound video stream. It is defined in [[SignalingProtocol.proto]].\\n * Developers should avoid using this field directly.\\n */\\n this.streamId = null;\\n }\\n clone() {\\n const cloned = new VideoTileState();\\n cloned.tileId = this.tileId;\\n cloned.localTile = this.localTile;\\n cloned.isContent = this.isContent;\\n cloned.active = this.active;\\n cloned.paused = this.paused;\\n cloned.poorConnection = this.poorConnection;\\n cloned.boundAttendeeId = this.boundAttendeeId;\\n cloned.boundExternalUserId = this.boundExternalUserId;\\n cloned.boundVideoStream = this.boundVideoStream;\\n cloned.boundVideoElement = this.boundVideoElement;\\n cloned.nameplate = this.nameplate;\\n cloned.videoStreamContentWidth = this.videoStreamContentWidth;\\n cloned.videoStreamContentHeight = this.videoStreamContentHeight;\\n cloned.videoElementCSSWidthPixels = this.videoElementCSSWidthPixels;\\n cloned.videoElementCSSHeightPixels = this.videoElementCSSHeightPixels;\\n cloned.devicePixelRatio = this.devicePixelRatio;\\n cloned.videoElementPhysicalWidthPixels = this.videoElementPhysicalWidthPixels;\\n cloned.videoElementPhysicalHeightPixels = this.videoElementPhysicalHeightPixels;\\n cloned.streamId = this.streamId;\\n return cloned;\\n }\\n}\\nexports[\\\"default\\\"] = VideoTileState;\\n//# sourceMappingURL=VideoTileState.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videotile/VideoTileState.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videotilecontroller/DefaultVideoTileController.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videotilecontroller/DefaultVideoTileController.js ***!\n \\**************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultDevicePixelRatioMonitor_1 = __webpack_require__(/*! ../devicepixelratiomonitor/DefaultDevicePixelRatioMonitor */ \\\"./node_modules/amazon-chime-sdk-js/build/devicepixelratiomonitor/DefaultDevicePixelRatioMonitor.js\\\");\\nconst DevicePixelRatioWindowSource_1 = __webpack_require__(/*! ../devicepixelratiosource/DevicePixelRatioWindowSource */ \\\"./node_modules/amazon-chime-sdk-js/build/devicepixelratiosource/DevicePixelRatioWindowSource.js\\\");\\nconst Maybe_1 = __webpack_require__(/*! ../maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nclass DefaultVideoTileController {\\n constructor(tileFactory, audioVideoController, logger) {\\n this.tileFactory = tileFactory;\\n this.audioVideoController = audioVideoController;\\n this.logger = logger;\\n this.tileMap = new Map();\\n this.nextTileId = 1;\\n this.currentLocalTile = null;\\n this.currentPausedTilesByIds = new Set();\\n }\\n createDevicePixelRatioMonitorIfNeeded() {\\n if (this.devicePixelRatioMonitor) {\\n return;\\n }\\n this.devicePixelRatioMonitor = new DefaultDevicePixelRatioMonitor_1.default(new DevicePixelRatioWindowSource_1.default(), this.logger);\\n }\\n discardDevicePixelRatioMonitorIfNotNeeded() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.tileMap.size || !this.devicePixelRatioMonitor) {\\n return;\\n }\\n const monitor = this.devicePixelRatioMonitor;\\n this.devicePixelRatioMonitor = undefined;\\n return monitor.destroy();\\n });\\n }\\n bindVideoElement(tileId, videoElement) {\\n const tile = this.getVideoTile(tileId);\\n if (tile === null) {\\n this.logger.warn(`Ignoring video element binding for unknown tile id ${tileId}`);\\n return;\\n }\\n tile.bindVideoElement(videoElement);\\n }\\n unbindVideoElement(tileId) {\\n this.bindVideoElement(tileId, null);\\n }\\n startLocalVideoTile() {\\n const tile = this.findOrCreateLocalVideoTile();\\n this.currentLocalTile.stateRef().localTileStarted = true;\\n this.audioVideoController.update();\\n return tile.id();\\n }\\n stopLocalVideoTile() {\\n if (!this.currentLocalTile) {\\n return;\\n }\\n this.currentLocalTile.stateRef().localTileStarted = false;\\n this.currentLocalTile.bindVideoStream(this.audioVideoController.configuration.credentials.attendeeId, true, null, null, null, null, this.audioVideoController.configuration.credentials.externalUserId);\\n this.audioVideoController.update();\\n }\\n hasStartedLocalVideoTile() {\\n return !!(this.currentLocalTile && this.currentLocalTile.stateRef().localTileStarted);\\n }\\n removeLocalVideoTile() {\\n if (this.currentLocalTile) {\\n this.removeVideoTile(this.currentLocalTile.id());\\n }\\n }\\n getLocalVideoTile() {\\n return this.currentLocalTile;\\n }\\n pauseVideoTile(tileId) {\\n const tile = this.getVideoTile(tileId);\\n if (tile) {\\n if (!this.currentPausedTilesByIds.has(tileId)) {\\n this.audioVideoController.pauseReceivingStream(tile.stateRef().streamId);\\n this.currentPausedTilesByIds.add(tileId);\\n }\\n tile.pause();\\n }\\n }\\n unpauseVideoTile(tileId) {\\n const tile = this.getVideoTile(tileId);\\n if (tile) {\\n if (this.currentPausedTilesByIds.has(tileId)) {\\n this.audioVideoController.resumeReceivingStream(tile.stateRef().streamId);\\n this.currentPausedTilesByIds.delete(tileId);\\n }\\n tile.unpause();\\n }\\n }\\n getVideoTile(tileId) {\\n return this.tileMap.has(tileId) ? this.tileMap.get(tileId) : null;\\n }\\n getVideoTileArea(tile) {\\n const state = tile.state();\\n let tileHeight = 0;\\n let tileWidth = 0;\\n if (state.boundVideoElement) {\\n tileHeight = state.boundVideoElement.clientHeight * state.devicePixelRatio;\\n tileWidth = state.boundVideoElement.clientWidth * state.devicePixelRatio;\\n }\\n return tileHeight * tileWidth;\\n }\\n getAllRemoteVideoTiles() {\\n const result = new Array();\\n this.tileMap.forEach((tile, tileId) => {\\n if (!this.currentLocalTile || tileId !== this.currentLocalTile.id()) {\\n result.push(tile);\\n }\\n });\\n return result;\\n }\\n getAllVideoTiles() {\\n return Array.from(this.tileMap.values());\\n }\\n addVideoTile(localTile = false) {\\n const tileId = this.nextTileId;\\n this.nextTileId += 1;\\n this.createDevicePixelRatioMonitorIfNeeded();\\n const tile = this.tileFactory.makeTile(tileId, localTile, this, this.devicePixelRatioMonitor);\\n this.tileMap.set(tileId, tile);\\n return tile;\\n }\\n removeVideoTile(tileId) {\\n if (!this.tileMap.has(tileId)) {\\n return;\\n }\\n const tile = this.tileMap.get(tileId);\\n if (this.currentLocalTile === tile) {\\n this.currentLocalTile = null;\\n }\\n tile.destroy();\\n this.tileMap.delete(tileId);\\n this.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.videoTileWasRemoved).map(f => f.bind(observer)(tileId));\\n });\\n this.discardDevicePixelRatioMonitorIfNotNeeded();\\n }\\n removeVideoTilesByAttendeeId(attendeeId) {\\n const tilesRemoved = [];\\n for (const tile of this.getAllVideoTiles()) {\\n const state = tile.state();\\n if (state.boundAttendeeId === attendeeId) {\\n this.removeVideoTile(state.tileId);\\n tilesRemoved.push(state.tileId);\\n }\\n }\\n return tilesRemoved;\\n }\\n removeAllVideoTiles() {\\n const tileIds = Array.from(this.tileMap.keys());\\n for (const tileId of tileIds) {\\n this.removeVideoTile(tileId);\\n }\\n }\\n sendTileStateUpdate(tileState) {\\n this.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.videoTileDidUpdate).map(f => f.bind(observer)(tileState));\\n });\\n }\\n haveVideoTilesWithStreams() {\\n for (const tile of this.getAllVideoTiles()) {\\n if (tile.state().boundVideoStream) {\\n return true;\\n }\\n }\\n return false;\\n }\\n haveVideoTileForAttendeeId(attendeeId) {\\n for (const tile of this.getAllVideoTiles()) {\\n const state = tile.state();\\n if (state.boundAttendeeId === attendeeId) {\\n return true;\\n }\\n }\\n return false;\\n }\\n captureVideoTile(tileId) {\\n const tile = this.getVideoTile(tileId);\\n if (!tile) {\\n return null;\\n }\\n return tile.capture();\\n }\\n findOrCreateLocalVideoTile() {\\n if (this.currentLocalTile) {\\n return this.currentLocalTile;\\n }\\n this.currentLocalTile = this.addVideoTile(true);\\n this.currentLocalTile.bindVideoStream(this.audioVideoController.configuration.credentials.attendeeId, true, null, null, null, null, this.audioVideoController.configuration.credentials.externalUserId);\\n return this.currentLocalTile;\\n }\\n}\\nexports[\\\"default\\\"] = DefaultVideoTileController;\\n//# sourceMappingURL=DefaultVideoTileController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videotilecontroller/DefaultVideoTileController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videotilefactory/DefaultVideoTileFactory.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videotilefactory/DefaultVideoTileFactory.js ***!\n \\********************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultVideoTile_1 = __webpack_require__(/*! ../videotile/DefaultVideoTile */ \\\"./node_modules/amazon-chime-sdk-js/build/videotile/DefaultVideoTile.js\\\");\\nclass DefaultVideoTileFactory {\\n makeTile(tileId, localTile, tileController, devicePixelRatioMonitor) {\\n return new DefaultVideoTile_1.default(tileId, localTile, tileController, devicePixelRatioMonitor);\\n }\\n}\\nexports[\\\"default\\\"] = DefaultVideoTileFactory;\\n//# sourceMappingURL=DefaultVideoTileFactory.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videotilefactory/DefaultVideoTileFactory.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/BitrateParameters.js\":\n/*!************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/BitrateParameters.js ***!\n \\************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass BitrateParameters {\\n}\\nexports[\\\"default\\\"] = BitrateParameters;\\n//# sourceMappingURL=BitrateParameters.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/BitrateParameters.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicy.js\":\n/*!***********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicy.js ***!\n \\***********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst Maybe_1 = __webpack_require__(/*! ../maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nconst AsyncScheduler_1 = __webpack_require__(/*! ../scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nconst SimulcastLayers_1 = __webpack_require__(/*! ../simulcastlayers/SimulcastLayers */ \\\"./node_modules/amazon-chime-sdk-js/build/simulcastlayers/SimulcastLayers.js\\\");\\nconst SimulcastTransceiverController_1 = __webpack_require__(/*! ../transceivercontroller/SimulcastTransceiverController */ \\\"./node_modules/amazon-chime-sdk-js/build/transceivercontroller/SimulcastTransceiverController.js\\\");\\nconst DefaultVideoCaptureAndEncodeParameter_1 = __webpack_require__(/*! ../videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter */ \\\"./node_modules/amazon-chime-sdk-js/build/videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter.js\\\");\\nconst BitrateParameters_1 = __webpack_require__(/*! ./BitrateParameters */ \\\"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/BitrateParameters.js\\\");\\n/**\\n * [[DefaultSimulcastUplinkPolicy]] determines capture and encode\\n * parameters that reacts to estimated uplink bandwidth\\n */\\nclass DefaultSimulcastUplinkPolicy {\\n constructor(selfAttendeeId, logger) {\\n this.selfAttendeeId = selfAttendeeId;\\n this.logger = logger;\\n this.numSenders = 0;\\n this.numParticipants = -1;\\n this.newQualityMap = new Map();\\n this.currentQualityMap = new Map();\\n this.newActiveStreams = 1 /* kHiAndLow */;\\n this.currentActiveStreams = 1 /* kHiAndLow */;\\n this.lastUplinkBandwidthKbps = DefaultSimulcastUplinkPolicy.defaultUplinkBandwidthKbps;\\n this.startTimeMs = 0;\\n this.lastUpdatedMs = Date.now();\\n this.videoIndex = null;\\n this.currLocalDescriptions = [];\\n this.nextLocalDescriptions = [];\\n this.observerQueue = new Set();\\n this.optimalParameters = new DefaultVideoCaptureAndEncodeParameter_1.default(0, 0, 0, 0, true);\\n this.parametersInEffect = new DefaultVideoCaptureAndEncodeParameter_1.default(0, 0, 0, 0, true);\\n this.lastUplinkBandwidthKbps = DefaultSimulcastUplinkPolicy.defaultUplinkBandwidthKbps;\\n this.currentQualityMap = this.fillEncodingParamWithBitrates([300, 0, 1200]);\\n this.newQualityMap = this.fillEncodingParamWithBitrates([300, 0, 1200]);\\n }\\n updateConnectionMetric({ uplinkKbps = 0 }) {\\n if (isNaN(uplinkKbps)) {\\n return;\\n }\\n // Check if startup period in order to ignore estimate when video first enabled.\\n // If only audio was active then the estimate will be very low\\n if (this.startTimeMs === 0) {\\n this.startTimeMs = Date.now();\\n }\\n if (Date.now() - this.startTimeMs < DefaultSimulcastUplinkPolicy.startupDurationMs) {\\n this.lastUplinkBandwidthKbps = DefaultSimulcastUplinkPolicy.defaultUplinkBandwidthKbps;\\n }\\n else {\\n this.lastUplinkBandwidthKbps = uplinkKbps;\\n }\\n this.logger.debug(() => {\\n return `simulcast: uplink policy update metrics ${this.lastUplinkBandwidthKbps}`;\\n });\\n let holdTime = DefaultSimulcastUplinkPolicy.holdDownDurationMs;\\n if (this.currentActiveStreams === 3 /* kLow */) {\\n holdTime = DefaultSimulcastUplinkPolicy.holdDownDurationMs * 2;\\n }\\n else if ((this.currentActiveStreams === 2 /* kMidAndLow */ &&\\n uplinkKbps <= DefaultSimulcastUplinkPolicy.kMidDisabledRate) ||\\n (this.currentActiveStreams === 1 /* kHiAndLow */ &&\\n uplinkKbps <= DefaultSimulcastUplinkPolicy.kHiDisabledRate)) {\\n holdTime = DefaultSimulcastUplinkPolicy.holdDownDurationMs / 2;\\n }\\n if (Date.now() < this.lastUpdatedMs + holdTime) {\\n return;\\n }\\n this.newQualityMap = this.calculateEncodingParameters(false);\\n }\\n calculateEncodingParameters(numSendersChanged) {\\n // bitrates parameter min is not used for now\\n const newBitrates = [\\n new BitrateParameters_1.default(),\\n new BitrateParameters_1.default(),\\n new BitrateParameters_1.default(),\\n ];\\n let hysteresisIncrease = 0, hysteresisDecrease = 0;\\n if (this.currentActiveStreams === 0 /* kHi */) {\\n // Don't trigger redetermination based on rate if only one simulcast stream\\n hysteresisIncrease = this.lastUplinkBandwidthKbps + 1;\\n hysteresisDecrease = 0;\\n }\\n else if (this.currentActiveStreams === 1 /* kHiAndLow */) {\\n hysteresisIncrease = 2400;\\n hysteresisDecrease = DefaultSimulcastUplinkPolicy.kHiDisabledRate;\\n }\\n else if (this.currentActiveStreams === 2 /* kMidAndLow */) {\\n hysteresisIncrease = 1000;\\n hysteresisDecrease = DefaultSimulcastUplinkPolicy.kMidDisabledRate;\\n }\\n else {\\n hysteresisIncrease = 300;\\n hysteresisDecrease = 0;\\n }\\n if (numSendersChanged ||\\n this.lastUplinkBandwidthKbps >= hysteresisIncrease ||\\n this.lastUplinkBandwidthKbps <= hysteresisDecrease) {\\n if (this.numParticipants >= 0 && this.numParticipants <= 2) {\\n // Simulcast disabled\\n this.newActiveStreams = 0 /* kHi */;\\n newBitrates[0].maxBitrateKbps = 0;\\n newBitrates[1].maxBitrateKbps = 0;\\n newBitrates[2].maxBitrateKbps = 1200;\\n }\\n else if (this.numSenders <= 4 &&\\n this.lastUplinkBandwidthKbps >= DefaultSimulcastUplinkPolicy.kHiDisabledRate) {\\n // 320x192+ (640x384) + 1280x768\\n this.newActiveStreams = 1 /* kHiAndLow */;\\n newBitrates[0].maxBitrateKbps = 300;\\n newBitrates[1].maxBitrateKbps = 0;\\n newBitrates[2].maxBitrateKbps = 1200;\\n }\\n else if (this.lastUplinkBandwidthKbps >= DefaultSimulcastUplinkPolicy.kMidDisabledRate) {\\n // 320x192 + 640x384 + (1280x768)\\n this.newActiveStreams = 2 /* kMidAndLow */;\\n newBitrates[0].maxBitrateKbps = this.lastUplinkBandwidthKbps >= 350 ? 200 : 150;\\n newBitrates[1].maxBitrateKbps = this.numSenders <= 6 ? 600 : 350;\\n newBitrates[2].maxBitrateKbps = 0;\\n }\\n else {\\n // 320x192 + 640x384 + (1280x768)\\n this.newActiveStreams = 3 /* kLow */;\\n newBitrates[0].maxBitrateKbps = 300;\\n newBitrates[1].maxBitrateKbps = 0;\\n newBitrates[2].maxBitrateKbps = 0;\\n }\\n const bitrates = newBitrates.map((v, _i, _a) => {\\n return v.maxBitrateKbps;\\n });\\n this.newQualityMap = this.fillEncodingParamWithBitrates(bitrates);\\n if (!this.encodingParametersEqual()) {\\n this.logger.info(`simulcast: policy:calculateEncodingParameters bw:${this.lastUplinkBandwidthKbps} numSources:${this.numSenders} numClients:${this.numParticipants} newQualityMap: ${this.getQualityMapString(this.newQualityMap)}`);\\n }\\n }\\n return this.newQualityMap;\\n }\\n chooseMediaTrackConstraints() {\\n // Changing MediaTrackConstraints causes a restart of video input and possible small\\n // scaling changes. Always use 720p for now\\n const trackConstraint = {\\n width: { ideal: 1280 },\\n height: { ideal: 768 },\\n frameRate: { ideal: 15 },\\n };\\n return trackConstraint;\\n }\\n chooseEncodingParameters() {\\n this.currentQualityMap = this.newQualityMap;\\n this.currentActiveStreams = this.newActiveStreams;\\n if (this.activeStreamsToPublish !== this.newActiveStreams) {\\n this.activeStreamsToPublish = this.newActiveStreams;\\n this.publishEncodingSimulcastLayer();\\n }\\n return this.currentQualityMap;\\n }\\n updateIndex(videoIndex) {\\n // the +1 for self is assuming that we intend to send video, since\\n // the context here is VideoUplinkBandwidthPolicy\\n const numSenders = videoIndex.numberOfVideoPublishingParticipantsExcludingSelf(this.selfAttendeeId) + 1;\\n const numParticipants = videoIndex.numberOfParticipants();\\n const numSendersChanged = numSenders !== this.numSenders;\\n const numParticipantsChanged = (numParticipants > 2 && this.numParticipants <= 2) ||\\n (numParticipants <= 2 && this.numParticipants > 2);\\n this.numSenders = numSenders;\\n this.numParticipants = numParticipants;\\n this.optimalParameters = new DefaultVideoCaptureAndEncodeParameter_1.default(this.captureWidth(), this.captureHeight(), this.captureFrameRate(), this.maxBandwidthKbps(), false);\\n this.videoIndex = videoIndex;\\n this.newQualityMap = this.calculateEncodingParameters(numSendersChanged || numParticipantsChanged);\\n }\\n wantsResubscribe() {\\n let constraintDiff = !this.encodingParametersEqual();\\n this.nextLocalDescriptions = this.videoIndex.localStreamDescriptions();\\n for (let i = 0; i < this.nextLocalDescriptions.length; i++) {\\n const streamId = this.nextLocalDescriptions[i].streamId;\\n if (streamId !== 0 && !!streamId) {\\n const prevIndex = this.currLocalDescriptions.findIndex(val => {\\n return val.streamId === streamId;\\n });\\n if (prevIndex !== -1) {\\n if (this.nextLocalDescriptions[i].disabledByWebRTC !==\\n this.currLocalDescriptions[prevIndex].disabledByWebRTC) {\\n constraintDiff = true;\\n }\\n }\\n }\\n }\\n if (constraintDiff) {\\n this.lastUpdatedMs = Date.now();\\n }\\n this.currLocalDescriptions = this.nextLocalDescriptions;\\n return constraintDiff;\\n }\\n compareEncodingParameter(encoding1, encoding2) {\\n return JSON.stringify(encoding1) === JSON.stringify(encoding2);\\n }\\n encodingParametersEqual() {\\n let different = false;\\n for (const ridName of SimulcastTransceiverController_1.default.NAME_ARR_ASCENDING) {\\n different =\\n different ||\\n !this.compareEncodingParameter(this.newQualityMap.get(ridName), this.currentQualityMap.get(ridName));\\n if (different) {\\n break;\\n }\\n }\\n return !different;\\n }\\n chooseCaptureAndEncodeParameters() {\\n // should deprecate in this policy\\n this.parametersInEffect = this.optimalParameters.clone();\\n return this.parametersInEffect.clone();\\n }\\n captureWidth() {\\n // should deprecate in this policy\\n const width = 1280;\\n return width;\\n }\\n captureHeight() {\\n // should deprecate in this policy\\n const height = 768;\\n return height;\\n }\\n captureFrameRate() {\\n // should deprecate in this policy\\n return 15;\\n }\\n maxBandwidthKbps() {\\n // should deprecate in this policy\\n return 1400;\\n }\\n setIdealMaxBandwidthKbps(_idealMaxBandwidthKbps) {\\n // should deprecate in this policy\\n }\\n setHasBandwidthPriority(_hasBandwidthPriority) {\\n // should deprecate in this policy\\n }\\n fillEncodingParamWithBitrates(bitratesKbps) {\\n const newMap = new Map();\\n const toBps = 1000;\\n const nameArr = SimulcastTransceiverController_1.default.NAME_ARR_ASCENDING;\\n const bitrateArr = bitratesKbps;\\n let scale = 4;\\n for (let i = 0; i < nameArr.length; i++) {\\n const ridName = nameArr[i];\\n newMap.set(ridName, {\\n rid: ridName,\\n active: bitrateArr[i] > 0 ? true : false,\\n scaleResolutionDownBy: scale,\\n maxBitrate: bitrateArr[i] * toBps,\\n });\\n scale = scale / 2;\\n }\\n return newMap;\\n }\\n getQualityMapString(params) {\\n let qualityString = '';\\n const localDescriptions = this.videoIndex.localStreamDescriptions();\\n if (localDescriptions.length === 3) {\\n params.forEach((value) => {\\n let disabledByWebRTC = false;\\n if (value.rid === 'low')\\n disabledByWebRTC = localDescriptions[0].disabledByWebRTC;\\n else if (value.rid === 'mid')\\n disabledByWebRTC = localDescriptions[1].disabledByWebRTC;\\n else\\n disabledByWebRTC = localDescriptions[2].disabledByWebRTC;\\n qualityString += `{ rid: ${value.rid} active:${value.active} disabledByWebRTC: ${disabledByWebRTC} maxBitrate:${value.maxBitrate}}`;\\n });\\n }\\n return qualityString;\\n }\\n getEncodingSimulcastLayer(activeStreams) {\\n switch (activeStreams) {\\n case 0 /* kHi */:\\n return SimulcastLayers_1.default.High;\\n case 1 /* kHiAndLow */:\\n return SimulcastLayers_1.default.LowAndHigh;\\n case 2 /* kMidAndLow */:\\n return SimulcastLayers_1.default.LowAndMedium;\\n case 3 /* kLow */:\\n return SimulcastLayers_1.default.Low;\\n }\\n }\\n publishEncodingSimulcastLayer() {\\n const simulcastLayers = this.getEncodingSimulcastLayer(this.activeStreamsToPublish);\\n this.forEachObserver(observer => {\\n Maybe_1.default.of(observer.encodingSimulcastLayersDidChange).map(f => f.bind(observer)(simulcastLayers));\\n });\\n }\\n addObserver(observer) {\\n this.logger.info('adding simulcast uplink observer');\\n this.observerQueue.add(observer);\\n }\\n removeObserver(observer) {\\n this.logger.info('removing simulcast uplink observer');\\n this.observerQueue.delete(observer);\\n }\\n forEachObserver(observerFunc) {\\n for (const observer of this.observerQueue) {\\n AsyncScheduler_1.default.nextTick(() => {\\n if (this.observerQueue.has(observer)) {\\n observerFunc(observer);\\n }\\n });\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultSimulcastUplinkPolicy;\\nDefaultSimulcastUplinkPolicy.defaultUplinkBandwidthKbps = 1200;\\nDefaultSimulcastUplinkPolicy.startupDurationMs = 6000;\\nDefaultSimulcastUplinkPolicy.holdDownDurationMs = 4000;\\nDefaultSimulcastUplinkPolicy.defaultMaxFrameRate = 15;\\n// Current rough estimates where webrtc disables streams\\nDefaultSimulcastUplinkPolicy.kHiDisabledRate = 700;\\nDefaultSimulcastUplinkPolicy.kMidDisabledRate = 240;\\n//# sourceMappingURL=DefaultSimulcastUplinkPolicy.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicy.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.js\":\n/*!***************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.js ***!\n \\***************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultVideoCaptureAndEncodeParameter_1 = __webpack_require__(/*! ../videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter */ \\\"./node_modules/amazon-chime-sdk-js/build/videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter.js\\\");\\n/** NScaleVideoUplinkBandwidthPolicy implements capture and encode\\n * parameters that are nearly equivalent to those chosen by the\\n * traditional native clients, except for a modification to\\n * maxBandwidthKbps described below. */\\nclass NScaleVideoUplinkBandwidthPolicy {\\n constructor(selfAttendeeId) {\\n this.selfAttendeeId = selfAttendeeId;\\n this.numParticipants = 0;\\n this.idealMaxBandwidthKbps = 1400;\\n this.hasBandwidthPriority = false;\\n this.optimalParameters = new DefaultVideoCaptureAndEncodeParameter_1.default(0, 0, 0, 0, false);\\n this.parametersInEffect = new DefaultVideoCaptureAndEncodeParameter_1.default(0, 0, 0, 0, false);\\n }\\n updateConnectionMetric(_metrics) {\\n return;\\n }\\n chooseMediaTrackConstraints() {\\n return {};\\n }\\n chooseEncodingParameters() {\\n return new Map();\\n }\\n updateIndex(videoIndex) {\\n // the +1 for self is assuming that we intend to send video, since\\n // the context here is VideoUplinkBandwidthPolicy\\n this.numParticipants =\\n videoIndex.numberOfVideoPublishingParticipantsExcludingSelf(this.selfAttendeeId) + 1;\\n this.optimalParameters = new DefaultVideoCaptureAndEncodeParameter_1.default(this.captureWidth(), this.captureHeight(), this.captureFrameRate(), this.maxBandwidthKbps(), false);\\n }\\n wantsResubscribe() {\\n return !this.parametersInEffect.equal(this.optimalParameters);\\n }\\n chooseCaptureAndEncodeParameters() {\\n this.parametersInEffect = this.optimalParameters.clone();\\n return this.parametersInEffect.clone();\\n }\\n captureWidth() {\\n let width = 640;\\n if (this.numParticipants > 4) {\\n width = 320;\\n }\\n return width;\\n }\\n captureHeight() {\\n let height = 384;\\n if (this.numParticipants > 4) {\\n height = 192;\\n }\\n return height;\\n }\\n captureFrameRate() {\\n return 15;\\n }\\n maxBandwidthKbps() {\\n if (this.hasBandwidthPriority) {\\n return Math.trunc(this.idealMaxBandwidthKbps);\\n }\\n let rate = 0;\\n if (this.numParticipants <= 2) {\\n rate = this.idealMaxBandwidthKbps;\\n }\\n else if (this.numParticipants <= 4) {\\n rate = (this.idealMaxBandwidthKbps * 2) / 3;\\n }\\n else {\\n rate = ((544 / 11 + 14880 / (11 * this.numParticipants)) / 600) * this.idealMaxBandwidthKbps;\\n }\\n return Math.trunc(rate);\\n }\\n setIdealMaxBandwidthKbps(idealMaxBandwidthKbps) {\\n this.idealMaxBandwidthKbps = idealMaxBandwidthKbps;\\n }\\n setHasBandwidthPriority(hasBandwidthPriority) {\\n this.hasBandwidthPriority = hasBandwidthPriority;\\n }\\n}\\nexports[\\\"default\\\"] = NScaleVideoUplinkBandwidthPolicy;\\n//# sourceMappingURL=NScaleVideoUplinkBandwidthPolicy.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/NoVideoUplinkBandwidthPolicy.js\":\n/*!***********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/NoVideoUplinkBandwidthPolicy.js ***!\n \\***********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultVideoCaptureAndEncodeParameter_1 = __webpack_require__(/*! ../videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter */ \\\"./node_modules/amazon-chime-sdk-js/build/videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter.js\\\");\\nclass NoVideoUplinkBandwidthPolicy {\\n constructor() { }\\n updateConnectionMetric(_metrics) { }\\n chooseMediaTrackConstraints() {\\n return {};\\n }\\n chooseEncodingParameters() {\\n return new Map();\\n }\\n updateIndex(_videoIndex) { }\\n wantsResubscribe() {\\n return false;\\n }\\n chooseCaptureAndEncodeParameters() {\\n return new DefaultVideoCaptureAndEncodeParameter_1.default(0, 0, 0, 0, false);\\n }\\n maxBandwidthKbps() {\\n return 0;\\n }\\n setIdealMaxBandwidthKbps(_idealMaxBandwidthKbps) { }\\n setHasBandwidthPriority(_hasBandwidthPriority) { }\\n}\\nexports[\\\"default\\\"] = NoVideoUplinkBandwidthPolicy;\\n//# sourceMappingURL=NoVideoUplinkBandwidthPolicy.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/NoVideoUplinkBandwidthPolicy.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/voicefocus/LoggerAdapter.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/voicefocus/LoggerAdapter.js ***!\n \\****************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/** @internal */\\nfunction stringify(args) {\\n return args\\n .map((v) => {\\n if (typeof v === 'object') {\\n return JSON.stringify(v);\\n }\\n return `${v}`;\\n })\\n .join(' ');\\n}\\n/** @internal */\\nclass LoggerAdapter {\\n constructor(base) {\\n this.base = base;\\n }\\n debug(...args) {\\n this.base.debug(stringify(args));\\n }\\n info(...args) {\\n this.base.info(stringify(args));\\n }\\n warn(...args) {\\n this.base.warn(stringify(args));\\n }\\n error(...args) {\\n this.base.error(stringify(args));\\n }\\n}\\nexports[\\\"default\\\"] = LoggerAdapter;\\n//# sourceMappingURL=LoggerAdapter.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/voicefocus/LoggerAdapter.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/voicefocus/VoiceFocusDeviceTransformer.js\":\n/*!******************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/voicefocus/VoiceFocusDeviceTransformer.js ***!\n \\******************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.VoiceFocusDeviceTransformer = void 0;\\nconst voicefocus_1 = __webpack_require__(/*! ../../libs/voicefocus/voicefocus */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/voicefocus.js\\\");\\nconst Versioning_1 = __webpack_require__(/*! ../versioning/Versioning */ \\\"./node_modules/amazon-chime-sdk-js/build/versioning/Versioning.js\\\");\\nconst LoggerAdapter_1 = __webpack_require__(/*! ./LoggerAdapter */ \\\"./node_modules/amazon-chime-sdk-js/build/voicefocus/LoggerAdapter.js\\\");\\nconst VoiceFocusTransformDevice_1 = __webpack_require__(/*! ./VoiceFocusTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/voicefocus/VoiceFocusTransformDevice.js\\\");\\nconst VoiceFocusTransformDeviceDelegate_1 = __webpack_require__(/*! ./VoiceFocusTransformDeviceDelegate */ \\\"./node_modules/amazon-chime-sdk-js/build/voicefocus/VoiceFocusTransformDeviceDelegate.js\\\");\\n/**\\n * `VoiceFocusDeviceTransformer` is used to create {@link VoiceFocusTransformDevice|transform devices}\\n * that apply Amazon Voice Focus noise suppression to audio input.\\n *\\n * This transformer captures relevant configuration. You should check for support, initialize,\\n * and then create a device as follows:\\n *\\n * ```\\n * const deviceID = null;\\n *\\n * // This check for support is cheap and quick, and should be used to gate use\\n * // of this feature.\\n * if (!(await VoiceFocusDeviceTransformer.isSupported()) {\\n * console.log('Amazon Voice Focus not supported in this browser.');\\n * return deviceID;\\n * }\\n *\\n * let transformer: VoiceFocusDeviceTransformer;\\n * try {\\n * // This operation can fail in ways that do not indicate no support,\\n * // but do indicate an inability to apply Amazon Voice Focus. Trying again\\n * // might succeed.\\n * transformer = await VoiceFocusDeviceTransformer.create({});\\n * } catch (e) {\\n * // Something went wrong.\\n * console.log('Unable to instantiate Amazon Voice Focus.');\\n * return deviceID;\\n * }\\n *\\n * if (!transformer.isSupported()) {\\n * // The transformer will fall through, but your UI might care.\\n * console.log('Amazon Voice Focus not supported in this browser.');\\n * }\\n *\\n * return await transformer.createTransformDevice(deviceID);\\n * ```\\n */\\nclass VoiceFocusDeviceTransformer {\\n constructor(spec, { preload = true, logger, fetchBehavior = VoiceFocusDeviceTransformer.defaultFetchBehavior(), }, config) {\\n this.spec = spec;\\n this.supported = true;\\n this.logger = logger;\\n this.vfLogger = logger ? new LoggerAdapter_1.default(logger) : undefined;\\n this.preload = preload;\\n this.fetchBehavior = fetchBehavior;\\n // If the user didn't specify one, add the default, which is\\n // identified by the major and minor SDK version.\\n this.spec = VoiceFocusDeviceTransformer.augmentSpec(this.spec);\\n if (config) {\\n this.configuration = Promise.resolve(config);\\n }\\n }\\n /**\\n * Quickly check whether Amazon Voice Focus is supported on this platform.\\n *\\n * This will return `false` if key technologies are absent. A value of `true` does not\\n * necessarily mean that adding Amazon Voice Focus will succeed: it is still possible that the\\n * configuration of the page or the CPU speed of the device are limiting factors.\\n *\\n * `VoiceFocusDeviceTransformer.create` will return an instance whose `isSupported()`\\n * method more accurately reflects whether Amazon Voice Focus is supported in the current environment.\\n *\\n * This method will only reject if you provide invalid inputs.\\n *\\n * @param spec An optional asset group and URL paths to use when fetching. You can pass\\n * a complete `VoiceFocusSpec` here for convenience, matching the signature of `create`.\\n * @param options Additional named arguments, including `logger`.\\n */\\n static isSupported(spec, options) {\\n const fetchBehavior = VoiceFocusDeviceTransformer.defaultFetchBehavior();\\n const logger = (options === null || options === void 0 ? void 0 : options.logger) ? new LoggerAdapter_1.default(options.logger) : undefined;\\n const opts = {\\n fetchBehavior,\\n logger,\\n };\\n return voicefocus_1.VoiceFocus.isSupported(VoiceFocusDeviceTransformer.augmentSpec(spec), opts);\\n }\\n /**\\n * Create a transformer that can apply Amazon Voice Focus noise suppression to a device.\\n *\\n * This method will reject if the provided spec is invalid, or if the process of\\n * checking for support or estimating fails (e.g., because the network is unreachable).\\n *\\n * If Amazon Voice Focus is not supported on this device, this call will not reject and\\n * `isSupported()` will return `false` on the returned instance. That instance will\\n * pass through devices unmodified.\\n *\\n * @param spec A definition of how you want Amazon Voice Focus to behave. See the declaration of\\n * {@link VoiceFocusSpec}` for details.\\n * @param options Additional named arguments, including `logger` and `preload`.\\n */\\n static create(spec = {}, options = {}, config) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const transformer = new VoiceFocusDeviceTransformer(spec, options, config);\\n // This also preps the first `VoiceFocus` instance.\\n yield transformer.init();\\n return transformer;\\n });\\n }\\n /**\\n * Given a spec and options, perform the configuration work that is\\n * ordinarily performed during creation of a transformer.\\n *\\n * The computed configuration is not portable between devices or sessions,\\n * but is useful for 'moving' transformers between windows.\\n *\\n * Pass the returned configuration as the third argument to a call to\\n * {@link VoiceFocusDeviceTransformer.create} with the matching spec.\\n */\\n static configure(spec = {}, options = {}) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const transformer = new VoiceFocusDeviceTransformer(spec, options, undefined);\\n return transformer.configure(true);\\n });\\n }\\n /**\\n * Return the computed configuration for this transformer.\\n */\\n getConfiguration() {\\n return this.configuration;\\n }\\n /**\\n * Return whether this transformer is able to function in this environment.\\n * If not, calls to\\n * {@link VoiceFocusDeviceTransformer.createTransformDevice|createTransformDevice}`\\n * will pass through an unmodified device.\\n */\\n isSupported() {\\n return this.supported;\\n }\\n /**\\n * Apply Amazon Voice Focus to the selected {@link Device}.\\n *\\n * If this is a stream, it should be one that does not include other noise suppression features,\\n * and you should consider whether to disable automatic gain control (AGC) on the stream, because\\n * it can interact with noise suppression.\\n *\\n * @returns a device promise. This will always resolve to either a\\n * {@link VoiceFocusTransformDevice} or undefined; it will never reject.\\n */\\n createTransformDevice(device, nodeOptions) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!this.supported) {\\n // Fall back.\\n return undefined;\\n }\\n try {\\n const preload = true;\\n const [vf, delegate] = yield this.allocateVoiceFocus(preload);\\n return new VoiceFocusTransformDevice_1.default(device, vf, delegate, nodeOptions);\\n }\\n catch (e) {\\n // Fall back.\\n /* istanbul ignore next */\\n return undefined;\\n }\\n });\\n }\\n static augmentSpec(spec) {\\n if (!spec || (!spec.assetGroup && !spec.revisionID)) {\\n return Object.assign(Object.assign({}, spec), { assetGroup: VoiceFocusDeviceTransformer.currentSDKAssetGroup() });\\n }\\n return spec;\\n }\\n configure(preResolve = false) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const options = {\\n fetchBehavior: this.fetchBehavior,\\n preResolve,\\n logger: this.vfLogger,\\n };\\n return voicefocus_1.VoiceFocus.configure(this.spec, options);\\n });\\n }\\n init() {\\n var _a;\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!this.configuration) {\\n this.configuration = this.configure();\\n }\\n const config = yield this.configuration;\\n if (!config.supported) {\\n // No need to init: it won't work.\\n this.supported = false;\\n return;\\n }\\n // We initialize the first one right now, which makes it easier to detect\\n // possible failures.\\n // This can throw for malformed input. Pass that up the chain.\\n this.pendingVoiceFocus = this.createVoiceFocus(config, this.preload);\\n try {\\n yield this.pendingVoiceFocus;\\n }\\n catch (e) {\\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error(`Unable to initialize Amazon Voice Focus: ${e}`);\\n this.supported = false;\\n }\\n });\\n }\\n createVoiceFocus(config, preload) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const delegate = new VoiceFocusTransformDeviceDelegate_1.default();\\n const vf = yield voicefocus_1.VoiceFocus.init(config, { delegate, preload, logger: this.vfLogger });\\n return [vf, delegate];\\n });\\n }\\n allocateVoiceFocus(preload) {\\n return __awaiter(this, void 0, void 0, function* () {\\n // A little safety.\\n /* istanbul ignore next */\\n if (!this.supported) {\\n throw new Error('Not supported.');\\n }\\n if (this.pendingVoiceFocus) {\\n // Use the one we already have, and free the slot for any future execution.\\n const vf = this.pendingVoiceFocus;\\n this.pendingVoiceFocus = undefined;\\n return vf;\\n }\\n return this.createVoiceFocus(yield this.configuration, preload);\\n });\\n }\\n static majorVersion() {\\n return Versioning_1.default.sdkVersion.match(/^[1-9][0-9]*\\\\.(?:0|[1-9][0-9]*)/)[0];\\n }\\n static majorMinorVersion() {\\n return Versioning_1.default.sdkVersion.match(/^[1-9][0-9]*\\\\.(?:0|(?:[1-9][0-9]*))\\\\.(?:0|[1-9][0-9]*)/)[0];\\n }\\n static currentSDKAssetGroup() {\\n // Just on the off chance someone does something silly, handle\\n // malformed version strings here.\\n const v = this.majorVersion();\\n // Just a little safety.\\n /* istanbul ignore next */\\n if (!v) {\\n return `stable-v1`;\\n }\\n return `sdk-${v}`;\\n }\\n // Note that we use query strings here, not headers, in order to make these requests 'simple' and\\n // avoid the need for CORS preflights.\\n // Be very, very careful if you choose to add headers here. You should never need to.\\n static defaultFetchBehavior() {\\n // Just a little safety.\\n /* istanbul ignore next */\\n const version = VoiceFocusDeviceTransformer.majorMinorVersion() || 'unknown';\\n const ua = Versioning_1.default.sdkUserAgentLowResolution;\\n return {\\n escapedQueryString: `sdk=${encodeURIComponent(version)}&ua=${encodeURIComponent(ua)}`,\\n };\\n }\\n}\\nexports.VoiceFocusDeviceTransformer = VoiceFocusDeviceTransformer;\\nexports[\\\"default\\\"] = VoiceFocusDeviceTransformer;\\n//# sourceMappingURL=VoiceFocusDeviceTransformer.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/voicefocus/VoiceFocusDeviceTransformer.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/voicefocus/VoiceFocusTransformDevice.js\":\n/*!****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/voicefocus/VoiceFocusTransformDevice.js ***!\n \\****************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\n/**\\n * A device that augments an {@link Device} to apply Amazon Voice Focus\\n * noise suppression to an audio input.\\n */\\nclass VoiceFocusTransformDevice {\\n /** @internal */\\n constructor(device, voiceFocus, delegate, nodeOptions, failed = false, node = undefined, browserBehavior = new DefaultBrowserBehavior_1.default()) {\\n this.device = device;\\n this.voiceFocus = voiceFocus;\\n this.delegate = delegate;\\n this.nodeOptions = nodeOptions;\\n this.failed = failed;\\n this.node = node;\\n this.browserBehavior = browserBehavior;\\n }\\n /**\\n * Return the inner device as provided during construction, or updated via\\n * {@link chooseNewInnerDevice}. Do not confuse this method with {@link intrinsicDevice}.\\n */\\n getInnerDevice() {\\n return this.device;\\n }\\n /**\\n * Disable the audio node while muted to reduce CPU usage.\\n *\\n * @param muted whether the audio device should be muted.\\n */\\n mute(muted) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!this.node) {\\n return;\\n }\\n if (muted) {\\n yield this.node.disable();\\n }\\n else {\\n yield this.node.enable();\\n }\\n });\\n }\\n /**\\n * Dispose of the inner workings of the transform device. After this method is called\\n * you will need to create a new device to use Amazon Voice Focus again.\\n */\\n stop() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!this.node) {\\n return;\\n }\\n this.node.disconnect();\\n yield this.node.stop();\\n });\\n }\\n /**\\n * If you wish to choose a different inner device, but continue to use Amazon Voice Focus, you\\n * can use this method to efficiently create a new device that will reuse\\n * the same internal state. Only one of the two devices can be used at a time: switch\\n * between them using {@link DeviceController.chooseAudioInputDevice}.\\n *\\n * If the same device is passed as is currently in use, `this` is returned.\\n *\\n * @param inner The new inner device to use.\\n */\\n chooseNewInnerDevice(inner) {\\n return __awaiter(this, void 0, void 0, function* () {\\n // If the new device is 'default', always recreate. Chrome can switch out\\n // the real device underneath us.\\n if (this.device === inner && !isDefaultDevice(inner)) {\\n return this;\\n }\\n return new VoiceFocusTransformDevice(inner, this.voiceFocus, this.delegate, this.nodeOptions, this.failed, this.node, this.browserBehavior);\\n });\\n }\\n intrinsicDevice() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.failed) {\\n return this.device;\\n }\\n // Turn the Device into constraints with appropriate AGC settings.\\n const trackConstraints = {\\n echoCancellation: true,\\n // @ts-ignore\\n googEchoCancellation: true,\\n // @ts-ignore\\n googEchoCancellation2: true,\\n noiseSuppression: false,\\n // @ts-ignore\\n googNoiseSuppression: false,\\n // @ts-ignore\\n googHighpassFilter: false,\\n // @ts-ignore\\n googNoiseSuppression2: false,\\n };\\n let useBuiltInAGC;\\n if (this.nodeOptions && this.nodeOptions.agc !== undefined) {\\n useBuiltInAGC = this.nodeOptions.agc.useBuiltInAGC;\\n }\\n else {\\n useBuiltInAGC = true;\\n }\\n trackConstraints.autoGainControl = useBuiltInAGC;\\n // @ts-ignore\\n trackConstraints.googAutoGainControl = useBuiltInAGC;\\n // @ts-ignore\\n trackConstraints.googAutoGainControl2 = useBuiltInAGC;\\n // Empty string and null.\\n if (!this.device) {\\n return trackConstraints;\\n }\\n // Device ID.\\n if (typeof this.device === 'string') {\\n /* istanbul ignore if */\\n if (this.browserBehavior.requiresNoExactMediaStreamConstraints()) {\\n trackConstraints.deviceId = this.device;\\n }\\n else {\\n trackConstraints.deviceId = { exact: this.device };\\n }\\n return trackConstraints;\\n }\\n // It's a stream.\\n if (this.device.id) {\\n // Nothing we can do.\\n return this.device;\\n }\\n // It's constraints.\\n return Object.assign(Object.assign({}, this.device), trackConstraints);\\n });\\n }\\n createAudioNode(context) {\\n var _a, _b;\\n return __awaiter(this, void 0, void 0, function* () {\\n if (((_a = this.node) === null || _a === void 0 ? void 0 : _a.context) === context) {\\n return {\\n start: this.node,\\n end: this.node,\\n };\\n }\\n const agc = { useVoiceFocusAGC: false };\\n const options = Object.assign({ enabled: true, agc }, this.nodeOptions);\\n try {\\n (_b = this.node) === null || _b === void 0 ? void 0 : _b.disconnect();\\n this.node = yield this.voiceFocus.createNode(context, options);\\n const start = this.node;\\n const end = this.node;\\n return { start, end };\\n }\\n catch (e) {\\n // It's better to return some audio stream than nothing.\\n this.failed = true;\\n this.delegate.onFallback(this, e);\\n throw e;\\n }\\n });\\n }\\n /**\\n * Add an observer to receive notifications about Amazon Voice Focus lifecycle events.\\n * See {@link VoiceFocusTransformDeviceObserver} for details.\\n * If the observer has already been added, this method call has no effect.\\n */\\n addObserver(observer) {\\n this.delegate.addObserver(observer);\\n }\\n /**\\n * Remove an existing observer. If the observer has not been previously {@link\\n * VoiceFocusTransformDevice.addObserver|added}, this method call has no effect.\\n */\\n removeObserver(observer) {\\n this.delegate.removeObserver(observer);\\n }\\n}\\nfunction isDefaultDevice(device) {\\n if (device === 'default') {\\n return true;\\n }\\n if (!device || typeof device !== 'object') {\\n return false;\\n }\\n if ('deviceId' in device && device.deviceId === 'default') {\\n return true;\\n }\\n if ('id' in device && device.id === 'default') {\\n return true;\\n }\\n return false;\\n}\\nexports[\\\"default\\\"] = VoiceFocusTransformDevice;\\n//# sourceMappingURL=VoiceFocusTransformDevice.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/voicefocus/VoiceFocusTransformDevice.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/voicefocus/VoiceFocusTransformDeviceDelegate.js\":\n/*!************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/voicefocus/VoiceFocusTransformDeviceDelegate.js ***!\n \\************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/** @internal */\\nclass VoiceFocusTransformDeviceDelegate {\\n constructor() {\\n this.observers = new Set();\\n }\\n addObserver(observer) {\\n this.observers.add(observer);\\n }\\n removeObserver(observer) {\\n this.observers.delete(observer);\\n }\\n /** @internal */\\n onFallback(device, e) {\\n var _a;\\n for (const observer of this.observers) {\\n (_a = observer.voiceFocusFellBackToInnerStream) === null || _a === void 0 ? void 0 : _a.call(observer, device, e);\\n }\\n }\\n onCPUWarning() {\\n var _a;\\n for (const observer of this.observers) {\\n (_a = observer.voiceFocusInsufficientResources) === null || _a === void 0 ? void 0 : _a.call(observer);\\n }\\n }\\n}\\nexports[\\\"default\\\"] = VoiceFocusTransformDeviceDelegate;\\n//# sourceMappingURL=VoiceFocusTransformDeviceDelegate.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/voicefocus/VoiceFocusTransformDeviceDelegate.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/volumeindicatoradapter/DefaultVolumeIndicatorAdapter.js\":\n/*!********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/volumeindicatoradapter/DefaultVolumeIndicatorAdapter.js ***!\n \\********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass DefaultVolumeIndicatorAdapter {\\n constructor(logger, realtimeController, minVolumeDecibels, maxVolumeDecibels) {\\n this.logger = logger;\\n this.realtimeController = realtimeController;\\n this.minVolumeDecibels = minVolumeDecibels;\\n this.maxVolumeDecibels = maxVolumeDecibels;\\n this.streamIdToAttendeeId = {};\\n this.streamIdToExternalUserId = {};\\n this.warnedAboutMissingStreamIdMapping = {};\\n this.attendeeIdToStreamId = {};\\n this.sessionReconnected = false;\\n }\\n onReconnect() {\\n this.sessionReconnected = true;\\n }\\n sendRealtimeUpdatesForAudioStreamIdInfo(info) {\\n let streamIndex = 0;\\n for (const stream of info.streams) {\\n const hasAttendeeId = !!stream.attendeeId;\\n const hasExternalUserId = !!stream.externalUserId;\\n const hasMuted = stream.hasOwnProperty('muted');\\n const hasDropped = !!stream.dropped;\\n if (hasAttendeeId) {\\n if (!!this.attendeeIdToStreamId[stream.attendeeId] &&\\n this.attendeeIdToStreamId[stream.attendeeId] < stream.audioStreamId) {\\n delete this.attendeeIdToStreamId[stream.attendeeId];\\n }\\n this.streamIdToAttendeeId[stream.audioStreamId] = stream.attendeeId;\\n const externalUserId = hasExternalUserId ? stream.externalUserId : stream.attendeeId;\\n this.streamIdToExternalUserId[stream.audioStreamId] = externalUserId;\\n this.attendeeIdToStreamId[stream.attendeeId] = stream.audioStreamId;\\n this.realtimeController.realtimeSetAttendeeIdPresence(stream.attendeeId, true, externalUserId, false, { attendeeIndex: streamIndex++, attendeesInFrame: info.streams.length });\\n }\\n if (hasMuted) {\\n const attendeeId = this.streamIdToAttendeeId[stream.audioStreamId];\\n const externalUserId = this.streamIdToExternalUserId[stream.audioStreamId];\\n this.realtimeController.realtimeUpdateVolumeIndicator(attendeeId, null, stream.muted, null, externalUserId);\\n }\\n if (!hasAttendeeId && !hasMuted) {\\n const attendeeId = this.streamIdToAttendeeId[stream.audioStreamId];\\n if (attendeeId) {\\n const externalUserId = this.streamIdToExternalUserId[stream.audioStreamId];\\n delete this.streamIdToAttendeeId[stream.audioStreamId];\\n delete this.streamIdToExternalUserId[stream.audioStreamId];\\n delete this.warnedAboutMissingStreamIdMapping[stream.audioStreamId];\\n if (this.attendeeIdToStreamId[attendeeId] === stream.audioStreamId) {\\n delete this.attendeeIdToStreamId[attendeeId];\\n }\\n let attendeeHasNewStreamId = false;\\n for (const otherStreamId of Object.keys(this.streamIdToAttendeeId)) {\\n const otherStreamIdNumber = parseInt(otherStreamId);\\n if (otherStreamIdNumber > stream.audioStreamId &&\\n this.streamIdToAttendeeId[otherStreamIdNumber] === attendeeId) {\\n attendeeHasNewStreamId = true;\\n break;\\n }\\n }\\n if (!attendeeHasNewStreamId) {\\n this.realtimeController.realtimeSetAttendeeIdPresence(attendeeId, false, externalUserId, hasDropped, { attendeeIndex: streamIndex++, attendeesInFrame: info.streams.length });\\n }\\n }\\n }\\n }\\n if (this.sessionReconnected) {\\n this.cleanUpState(info);\\n this.sessionReconnected = false;\\n }\\n }\\n cleanUpState(info) {\\n const localAttendeeIds = Object.values(this.streamIdToAttendeeId);\\n const remoteAttendeeIds = info.streams.map(stream => stream.attendeeId);\\n const deletedAttendeeIds = localAttendeeIds.filter(id => {\\n return !remoteAttendeeIds.includes(id);\\n });\\n for (const [index, deletedAttendeeId] of deletedAttendeeIds.entries()) {\\n const streamId = this.attendeeIdToStreamId[deletedAttendeeId];\\n const externalUserId = this.streamIdToExternalUserId[streamId];\\n delete this.streamIdToAttendeeId[streamId];\\n delete this.streamIdToExternalUserId[streamId];\\n delete this.warnedAboutMissingStreamIdMapping[streamId];\\n delete this.attendeeIdToStreamId[deletedAttendeeId];\\n // The reconnect event does not have information whether the attendee is dropped/left.\\n // Defaulting to attendee leaving the meeting\\n this.realtimeController.realtimeSetAttendeeIdPresence(deletedAttendeeId, false, externalUserId, false, { attendeeIndex: index, attendeesInFrame: deletedAttendeeId.length });\\n }\\n }\\n sendRealtimeUpdatesForAudioMetadata(metadata) {\\n let volumes = null;\\n let signalStrengths = null;\\n for (const state of metadata.attendeeStates) {\\n const attendeeId = this.attendeeIdForStreamId(state.audioStreamId);\\n if (state.hasOwnProperty('volume')) {\\n if (volumes === null) {\\n volumes = {};\\n }\\n if (attendeeId !== null) {\\n // @ts-ignore: TODO fix this protobufjs issue\\n volumes[attendeeId] = this.normalizedVolume(state);\\n }\\n }\\n if (state.hasOwnProperty('signalStrength')) {\\n if (signalStrengths === null) {\\n signalStrengths = {};\\n }\\n if (attendeeId !== null) {\\n // @ts-ignore: TODO fix this protobufjs issue\\n signalStrengths[attendeeId] = this.normalizedSignalStrength(state);\\n }\\n }\\n }\\n this.applyRealtimeUpdatesForAudioMetadata(volumes, signalStrengths);\\n }\\n normalizedVolume(state) {\\n const dBVolume = -state.volume;\\n const normalized = 1.0 - (dBVolume - this.maxVolumeDecibels) / (this.minVolumeDecibels - this.maxVolumeDecibels);\\n const clipped = Math.min(Math.max(normalized, 0.0), 1.0);\\n return clipped;\\n }\\n normalizedSignalStrength(state) {\\n const normalized = state.signalStrength / DefaultVolumeIndicatorAdapter.MAX_SIGNAL_STRENGTH_LEVELS;\\n const clipped = Math.min(Math.max(normalized, 0.0), 1.0);\\n return clipped;\\n }\\n applyRealtimeUpdatesForAudioMetadata(volumes, signalStrengths) {\\n for (const streamId in this.streamIdToAttendeeId) {\\n const attendeeId = this.streamIdToAttendeeId[streamId];\\n const externalUserId = this.streamIdToExternalUserId[streamId];\\n let volumeUpdate = null;\\n let signalStrengthUpdate = null;\\n if (volumes !== null) {\\n if (volumes.hasOwnProperty(attendeeId)) {\\n volumeUpdate = volumes[attendeeId];\\n }\\n else {\\n volumeUpdate = DefaultVolumeIndicatorAdapter.IMPLICIT_VOLUME;\\n }\\n }\\n if (signalStrengths !== null) {\\n if (signalStrengths.hasOwnProperty(attendeeId)) {\\n signalStrengthUpdate = signalStrengths[attendeeId];\\n }\\n else {\\n signalStrengthUpdate = DefaultVolumeIndicatorAdapter.IMPLICIT_SIGNAL_STRENGTH;\\n }\\n }\\n if (volumeUpdate !== null || signalStrengthUpdate !== null) {\\n this.realtimeController.realtimeUpdateVolumeIndicator(attendeeId, volumeUpdate, null, signalStrengthUpdate, externalUserId);\\n }\\n }\\n }\\n attendeeIdForStreamId(streamId) {\\n if (streamId === 0) {\\n return null;\\n }\\n const attendeeId = this.streamIdToAttendeeId[streamId];\\n if (attendeeId) {\\n return attendeeId;\\n }\\n if (!this.warnedAboutMissingStreamIdMapping[streamId]) {\\n this.warnedAboutMissingStreamIdMapping[streamId] = true;\\n this.logger.warn(`volume indicator stream id ${streamId} seen before being defined`);\\n }\\n return null;\\n }\\n}\\nexports[\\\"default\\\"] = DefaultVolumeIndicatorAdapter;\\nDefaultVolumeIndicatorAdapter.MAX_SIGNAL_STRENGTH_LEVELS = 2;\\nDefaultVolumeIndicatorAdapter.IMPLICIT_VOLUME = 0;\\nDefaultVolumeIndicatorAdapter.IMPLICIT_SIGNAL_STRENGTH = 1;\\n//# sourceMappingURL=DefaultVolumeIndicatorAdapter.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/volumeindicatoradapter/DefaultVolumeIndicatorAdapter.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/websocketadapter/DefaultWebSocketAdapter.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/websocketadapter/DefaultWebSocketAdapter.js ***!\n \\********************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst Versioning_1 = __webpack_require__(/*! ../versioning/Versioning */ \\\"./node_modules/amazon-chime-sdk-js/build/versioning/Versioning.js\\\");\\nconst WebSocketReadyState_1 = __webpack_require__(/*! ./WebSocketReadyState */ \\\"./node_modules/amazon-chime-sdk-js/build/websocketadapter/WebSocketReadyState.js\\\");\\nclass DefaultWebSocketAdapter {\\n constructor(logger) {\\n this.logger = logger;\\n }\\n create(url, protocols, isSignedUrl) {\\n this.connection = new WebSocket(isSignedUrl ? url : Versioning_1.default.urlWithVersion(url), protocols);\\n this.connection.binaryType = 'arraybuffer';\\n }\\n send(message) {\\n try {\\n if (message instanceof Uint8Array) {\\n this.connection.send(message.buffer);\\n }\\n else {\\n this.connection.send(message);\\n }\\n return true;\\n }\\n catch (err) {\\n this.logger.debug(() => `send error: ${err.message}, websocket state=${WebSocketReadyState_1.default[this.readyState()]}`);\\n return false;\\n }\\n }\\n close(code, reason) {\\n this.connection.close(code, reason);\\n }\\n destroy() {\\n this.connection = null;\\n }\\n addEventListener(handler, eventListener) {\\n this.connection.addEventListener(handler, eventListener);\\n }\\n readyState() {\\n if (!this.connection) {\\n return WebSocketReadyState_1.default.None;\\n }\\n switch (this.connection.readyState) {\\n case WebSocket.CONNECTING:\\n return WebSocketReadyState_1.default.Connecting;\\n case WebSocket.OPEN:\\n return WebSocketReadyState_1.default.Open;\\n case WebSocket.CLOSING:\\n return WebSocketReadyState_1.default.Closing;\\n case WebSocket.CLOSED:\\n return WebSocketReadyState_1.default.Closed;\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultWebSocketAdapter;\\n//# sourceMappingURL=DefaultWebSocketAdapter.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/websocketadapter/DefaultWebSocketAdapter.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/websocketadapter/WebSocketReadyState.js\":\n/*!****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/websocketadapter/WebSocketReadyState.js ***!\n \\****************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.WebSocketReadyState = void 0;\\nvar WebSocketReadyState;\\n(function (WebSocketReadyState) {\\n WebSocketReadyState[WebSocketReadyState[\\\"None\\\"] = 0] = \\\"None\\\";\\n WebSocketReadyState[WebSocketReadyState[\\\"Connecting\\\"] = 1] = \\\"Connecting\\\";\\n WebSocketReadyState[WebSocketReadyState[\\\"Open\\\"] = 2] = \\\"Open\\\";\\n WebSocketReadyState[WebSocketReadyState[\\\"Closing\\\"] = 3] = \\\"Closing\\\";\\n WebSocketReadyState[WebSocketReadyState[\\\"Closed\\\"] = 4] = \\\"Closed\\\";\\n})(WebSocketReadyState = exports.WebSocketReadyState || (exports.WebSocketReadyState = {}));\\nexports[\\\"default\\\"] = WebSocketReadyState;\\n//# sourceMappingURL=WebSocketReadyState.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/websocketadapter/WebSocketReadyState.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/libs/voicefocus/decider.js\":\n/*!*********************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/libs/voicefocus/decider.js ***!\n \\*********************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.decideModel = exports.measureAndDecideExecutionApproach = void 0;\\nconst loader_js_1 = __webpack_require__(/*! ./loader.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/loader.js\\\");\\nconst support_js_1 = __webpack_require__(/*! ./support.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/support.js\\\");\\nconst DEFAULT_EXECUTION_QUANTA = 3;\\nconst SIMD_SCORE_FIXED_POINT = 2.50;\\nconst WASM_SCORE_FIXED_POINT = 2.63;\\nconst SINGLE_INLINE_SCORE_MULTIPLIER = 0.6;\\nconst QUALITY_MULTIPLE_QUANTA_SCORE_MULTIPLIER = 0.65;\\nconst INTERACTIVITY_MULTIPLE_QUANTA_SCORE_MULTIPLIER = 0.5;\\nconst WORKER_SCORE_MULTIPLIER = 0.7;\\nconst PERFORMANCE_THRESHOLDS = {\\n wasm: {\\n noSupport: 0.07,\\n inline: {\\n c100: 1,\\n c50: 0.36,\\n c20: 0.16,\\n c10: 0.07,\\n },\\n worker: {\\n c100: 0.5,\\n c50: 0.18,\\n c20: 0.08,\\n c10: 0.06,\\n },\\n },\\n simd: {\\n noSupport: 0.10,\\n inline: {\\n c100: 1,\\n c50: 0.43,\\n c20: 0.3,\\n c10: 0.2,\\n },\\n worker: {\\n c100: 0.5,\\n c50: 0.21,\\n c20: 0.15,\\n c10: 0.10,\\n },\\n },\\n};\\nclass Estimator {\\n constructor(fetchConfig, logger) {\\n this.fetchConfig = fetchConfig;\\n this.logger = logger;\\n const workerURL = `${fetchConfig.paths.workers}estimator-v1.js`;\\n this.fetchBehavior = { headers: fetchConfig.headers, escapedQueryString: fetchConfig.escapedQueryString };\\n this.worker = loader_js_1.loadWorker(workerURL, 'VoiceFocusEstimator', this.fetchBehavior, logger);\\n }\\n roundtrip(toSend, receive, expectedKey) {\\n return new Promise((resolve, reject) => {\\n this.worker.then(worker => {\\n let listener;\\n listener = (event) => {\\n const { message, key } = event.data;\\n if (message === receive && key === expectedKey) {\\n worker.removeEventListener('message', listener);\\n resolve(event.data);\\n }\\n };\\n worker.addEventListener('message', listener);\\n worker.postMessage(toSend);\\n }).catch(e => {\\n var _a;\\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error('Failed to load worker.', e);\\n reject(e);\\n });\\n });\\n }\\n supportsSIMD(url) {\\n const key = 'simd';\\n const path = url || `${this.fetchConfig.paths.wasm}simd-v1.wasm`;\\n const toSend = {\\n message: 'supports-simd',\\n fetchBehavior: this.fetchBehavior,\\n path,\\n key,\\n };\\n return this.roundtrip(toSend, 'simd-support', key)\\n .then(data => data.supports);\\n }\\n measure(simd, budget) {\\n const benchWASM = `${this.fetchConfig.paths.wasm}bench-v1.wasm`;\\n const benchSIMD = `${this.fetchConfig.paths.wasm}bench-v1_simd.wasm`;\\n const path = simd ? benchSIMD : benchWASM;\\n const key = `bench:${simd}`;\\n const toSend = {\\n message: 'measure',\\n fetchBehavior: this.fetchBehavior,\\n budget,\\n path,\\n key,\\n };\\n return this.roundtrip(toSend, 'measurement', key)\\n .then(data => {\\n if (data.measurement) {\\n return data.measurement;\\n }\\n throw new Error('Failed to measure.');\\n });\\n }\\n stop() {\\n this.worker.then(worker => {\\n var _a;\\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Stopping estimator worker.');\\n worker.terminate();\\n }).catch(e => {\\n });\\n }\\n}\\nconst inlineScoreMultiplier = (executionQuanta, usagePreference) => {\\n if (executionQuanta === 1) {\\n return SINGLE_INLINE_SCORE_MULTIPLIER;\\n }\\n if (usagePreference === 'quality') {\\n return QUALITY_MULTIPLE_QUANTA_SCORE_MULTIPLIER * executionQuanta;\\n }\\n return INTERACTIVITY_MULTIPLE_QUANTA_SCORE_MULTIPLIER * executionQuanta;\\n};\\nconst decideExecutionApproach = ({ supportsSIMD, supportsSAB, duration, executionPreference = 'auto', simdPreference, variantPreference = 'auto', usagePreference, executionQuantaPreference = DEFAULT_EXECUTION_QUANTA, }, allThresholds = PERFORMANCE_THRESHOLDS, logger) => {\\n const forceSIMD = (simdPreference === 'force');\\n const useSIMD = forceSIMD || (simdPreference !== 'disable' && supportsSIMD);\\n const checkScores = duration !== -1;\\n const baseScore = checkScores ? (useSIMD ? SIMD_SCORE_FIXED_POINT : WASM_SCORE_FIXED_POINT) / duration : 0;\\n const thresholds = useSIMD ? allThresholds.simd : allThresholds.wasm;\\n const inlineScore = checkScores ? inlineScoreMultiplier(executionQuantaPreference, usagePreference) * baseScore : 0;\\n const workerScore = checkScores ? WORKER_SCORE_MULTIPLIER * baseScore : 0;\\n const unsupported = (reason) => {\\n return {\\n supported: false,\\n reason,\\n };\\n };\\n if (checkScores) {\\n if (baseScore < thresholds.noSupport) {\\n return unsupported(`Performance score ${baseScore} worse than threshold ${thresholds.noSupport}.`);\\n }\\n }\\n else {\\n if ((executionPreference === 'auto') ||\\n (variantPreference === 'auto')) {\\n return unsupported(`Missing explicit execution (${executionPreference}) or variant (${variantPreference}) preference, but no scoring performed.`);\\n }\\n }\\n logger === null || logger === void 0 ? void 0 : logger.debug(`Bench duration ${duration} yields inline score ${inlineScore} and worker score ${workerScore}.`);\\n const succeed = (processor, executionApproach, variant) => {\\n return {\\n supported: true,\\n useSIMD,\\n processor,\\n executionApproach,\\n variant,\\n executionQuanta: (executionApproach === 'inline' ? executionQuantaPreference : undefined),\\n };\\n };\\n const resolveVariant = (score, variant, lookup) => {\\n if (variant !== 'auto') {\\n if (!checkScores || score > lookup[variant]) {\\n return variant;\\n }\\n return 'failed';\\n }\\n if (score > lookup.c100) {\\n return 'c100';\\n }\\n if (score > lookup.c50) {\\n return 'c50';\\n }\\n if (score > lookup.c20) {\\n return 'c20';\\n }\\n if (score > lookup.c10) {\\n return 'c10';\\n }\\n return 'failed';\\n };\\n const reducePreference = (preference) => {\\n switch (preference || 'auto') {\\n case 'auto': {\\n let inlineOption = reducePreference('inline');\\n let workerOption = reducePreference('worker');\\n logger === null || logger === void 0 ? void 0 : logger.debug(`Reducing auto preference: ${JSON.stringify(inlineOption)} vs ${JSON.stringify(workerOption)}`);\\n if (inlineOption.supported === false) {\\n return workerOption;\\n }\\n if (workerOption.supported === false) {\\n return workerOption;\\n }\\n if (inlineOption.variant === workerOption.variant || inlineOption.variant === 'c50') {\\n return inlineOption;\\n }\\n return workerOption;\\n }\\n case 'worker': {\\n if (support_js_1.supportsSharedArrayBuffer(globalThis, window, logger)) {\\n return reducePreference('worker-sab');\\n }\\n return reducePreference('worker-postMessage');\\n }\\n case 'inline': {\\n const variant = resolveVariant(inlineScore, variantPreference, thresholds.inline);\\n if (variant === 'failed') {\\n return unsupported(`Performance score ${inlineScore} not sufficient for inline use with variant preference ${variantPreference}.`);\\n }\\n ;\\n return succeed('voicefocus-inline-processor', 'inline', variant);\\n }\\n case 'worker-sab': {\\n if (!supportsSAB) {\\n const reason = 'Requested worker-sab but no SharedArrayBuffer support.';\\n logger === null || logger === void 0 ? void 0 : logger.warn(reason);\\n return { supported: false, reason };\\n }\\n const variant = resolveVariant(workerScore, variantPreference, thresholds.worker);\\n if (variant === 'failed') {\\n return unsupported(`Performance score ${workerScore} not sufficient for worker use with variant preference ${variantPreference}.`);\\n }\\n ;\\n return succeed('voicefocus-worker-sab-processor', 'worker-sab', variant);\\n }\\n case 'worker-postMessage': {\\n const variant = resolveVariant(workerScore, variantPreference, thresholds.worker);\\n if (variant === 'failed') {\\n return unsupported(`Performance score ${workerScore} not sufficient for worker use.`);\\n }\\n ;\\n return succeed('voicefocus-worker-postMessage-processor', 'worker-postMessage', variant);\\n }\\n }\\n };\\n return reducePreference(executionPreference);\\n};\\nconst featureCheck = (forceSIMD, fetchConfig, logger, estimator) => __awaiter(void 0, void 0, void 0, function* () {\\n const supports = {\\n supportsSIMD: forceSIMD,\\n supportsSAB: support_js_1.supportsSharedArrayBuffer(globalThis, window, logger),\\n duration: -1,\\n };\\n if (forceSIMD) {\\n logger === null || logger === void 0 ? void 0 : logger.info('Supports SIMD: true (force)');\\n return supports;\\n }\\n const cleanup = !estimator;\\n const e = estimator || new Estimator(fetchConfig, logger);\\n try {\\n const useSIMD = !support_js_1.isOldChrome(window, logger) && (yield e.supportsSIMD());\\n logger === null || logger === void 0 ? void 0 : logger.info(`Supports SIMD: ${useSIMD} (force: ${forceSIMD})`);\\n supports.supportsSIMD = useSIMD;\\n return supports;\\n }\\n finally {\\n if (cleanup) {\\n e.stop();\\n }\\n }\\n});\\nconst estimateAndFeatureCheck = (forceSIMD, fetchConfig, estimatorBudget, logger) => __awaiter(void 0, void 0, void 0, function* () {\\n const estimator = new Estimator(fetchConfig, logger);\\n try {\\n const supports = yield featureCheck(forceSIMD, fetchConfig, logger, estimator);\\n if (supports.supportsSIMD) {\\n try {\\n supports.duration = yield estimator.measure(true, estimatorBudget);\\n logger === null || logger === void 0 ? void 0 : logger.info('SIMD timing:', supports.duration);\\n return supports;\\n }\\n catch (e) {\\n logger === null || logger === void 0 ? void 0 : logger.warn('Failed SIMD estimation; falling back to non-SIMD.');\\n supports.supportsSIMD = false;\\n }\\n }\\n supports.duration = yield estimator.measure(false, estimatorBudget);\\n logger === null || logger === void 0 ? void 0 : logger.info('No-SIMD timing:', supports.duration);\\n return supports;\\n }\\n catch (e) {\\n logger === null || logger === void 0 ? void 0 : logger.error('Could not feature check.', e);\\n throw e;\\n }\\n finally {\\n estimator.stop();\\n }\\n});\\nconst measureAndDecideExecutionApproach = (spec, fetchConfig, logger, thresholds = PERFORMANCE_THRESHOLDS) => __awaiter(void 0, void 0, void 0, function* () {\\n let executionPreference = spec.executionPreference;\\n const { usagePreference, variantPreference, simdPreference, estimatorBudget, executionQuantaPreference, } = spec;\\n if (usagePreference === 'interactivity' && executionPreference !== 'inline') {\\n logger === null || logger === void 0 ? void 0 : logger.debug(`Overriding execution preference ${executionPreference} to reflect interactivity preference.`);\\n executionPreference = 'inline';\\n }\\n const forceSIMD = simdPreference === 'force';\\n const knownModel = variantPreference !== 'auto';\\n const knownExecution = executionPreference !== 'auto';\\n let supports;\\n try {\\n if (knownModel && knownExecution) {\\n supports = yield featureCheck(forceSIMD, fetchConfig, logger);\\n }\\n else {\\n supports = yield estimateAndFeatureCheck(forceSIMD, fetchConfig, estimatorBudget, logger);\\n }\\n }\\n catch (e) {\\n logger === null || logger === void 0 ? void 0 : logger.error('Could not load estimator.', e);\\n throw new Error('Could not load Voice Focus estimator.');\\n }\\n return decideExecutionApproach(Object.assign(Object.assign({}, supports), { simdPreference,\\n executionPreference,\\n variantPreference,\\n usagePreference,\\n executionQuantaPreference }), thresholds, logger);\\n});\\nexports.measureAndDecideExecutionApproach = measureAndDecideExecutionApproach;\\nconst decideModel = ({ category, name, variant, simd, url }) => {\\n return `${category}-${name}-${variant}-v1${simd ? '_simd' : ''}`;\\n};\\nexports.decideModel = decideModel;\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/libs/voicefocus/decider.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/libs/voicefocus/fetch.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/libs/voicefocus/fetch.js ***!\n \\*******************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.isValidRevisionID = exports.isValidAssetGroup = exports.resolveURL = exports.addQueryParams = exports.withQueryString = exports.withRequestHeaders = exports.fetchWithBehavior = void 0;\\nfunction fetchWithBehavior(url, init, fetchBehavior) {\\n if (!fetchBehavior) {\\n return fetch(url, init);\\n }\\n const withQuery = withQueryString(url, fetchBehavior);\\n const withHeaders = withRequestHeaders(init, fetchBehavior);\\n return fetch(withQuery, withHeaders);\\n}\\nexports.fetchWithBehavior = fetchWithBehavior;\\nfunction withRequestHeaders(init, fetchBehavior) {\\n if (!(fetchBehavior === null || fetchBehavior === void 0 ? void 0 : fetchBehavior.headers)) {\\n return init;\\n }\\n if (!init) {\\n return {\\n headers: fetchBehavior.headers,\\n };\\n }\\n return Object.assign(Object.assign({}, init), { headers: Object.assign(Object.assign({}, init.headers || {}), fetchBehavior.headers) });\\n}\\nexports.withRequestHeaders = withRequestHeaders;\\nfunction withQueryString(url, fetchBehavior) {\\n if (!(fetchBehavior === null || fetchBehavior === void 0 ? void 0 : fetchBehavior.escapedQueryString)) {\\n return url;\\n }\\n const hasQuery = url.lastIndexOf('?') !== -1;\\n return `${url}${hasQuery ? '&' : '?'}${fetchBehavior.escapedQueryString}`;\\n}\\nexports.withQueryString = withQueryString;\\nfunction addQueryParams(fetchBehavior, queryParams) {\\n const keys = Object.keys(queryParams);\\n if (!keys.length) {\\n return fetchBehavior;\\n }\\n const params = new URLSearchParams(fetchBehavior === null || fetchBehavior === void 0 ? void 0 : fetchBehavior.escapedQueryString);\\n for (const key of keys) {\\n params.append(key, queryParams[key]);\\n }\\n return Object.assign(Object.assign({}, fetchBehavior), { escapedQueryString: params.toString() });\\n}\\nexports.addQueryParams = addQueryParams;\\nconst HEAD_OPTIONS = {\\n method: 'HEAD',\\n mode: 'cors',\\n credentials: 'omit',\\n redirect: 'follow',\\n referrerPolicy: 'origin',\\n};\\nfunction resolveURL(url, fetchBehavior) {\\n return fetchWithBehavior(url, HEAD_OPTIONS, fetchBehavior)\\n .then(response => response.redirected ? response.url : url);\\n}\\nexports.resolveURL = resolveURL;\\nfunction isValidAssetGroup(assetGroup) {\\n return !!assetGroup && /^[-.a-zA-Z0-9]+$/.test(assetGroup);\\n}\\nexports.isValidAssetGroup = isValidAssetGroup;\\nfunction isValidRevisionID(revisionID) {\\n return !!revisionID && /^[123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ]{22}$/.test(revisionID);\\n}\\nexports.isValidRevisionID = isValidRevisionID;\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/libs/voicefocus/fetch.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/libs/voicefocus/loader.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/libs/voicefocus/loader.js ***!\n \\********************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.loadWorker = void 0;\\nconst fetch_js_1 = __webpack_require__(/*! ./fetch.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/fetch.js\\\");\\nconst WORKER_FETCH_OPTIONS = {\\n method: 'GET',\\n mode: 'cors',\\n credentials: 'omit',\\n redirect: 'follow',\\n referrerPolicy: 'no-referrer',\\n};\\nconst loadWorker = (workerURL, name, fetchBehavior, logger) => {\\n logger === null || logger === void 0 ? void 0 : logger.debug(`Loading ${name} worker from ${workerURL}.`);\\n let workerURLIsSameOrigin = false;\\n try {\\n workerURLIsSameOrigin = self.origin === (new URL(workerURL)).origin;\\n }\\n catch (e) {\\n logger === null || logger === void 0 ? void 0 : logger.error('Could not compare origins.', e);\\n }\\n if (workerURLIsSameOrigin) {\\n const workerURLWithQuery = fetch_js_1.withQueryString(workerURL, fetchBehavior);\\n return Promise.resolve(new Worker(workerURLWithQuery, { name }));\\n }\\n return fetch_js_1.fetchWithBehavior(workerURL, WORKER_FETCH_OPTIONS, fetchBehavior).then((res) => {\\n if (res.ok) {\\n return res.blob()\\n .then((blob) => new Worker(window.URL.createObjectURL(blob)));\\n }\\n throw new Error('Fetch failed.');\\n });\\n};\\nexports.loadWorker = loadWorker;\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/libs/voicefocus/loader.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/libs/voicefocus/support.js\":\n/*!*********************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/libs/voicefocus/support.js ***!\n \\*********************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.isOldChrome = exports.supportsWASMStreaming = exports.supportsSharedArrayBuffer = exports.supportsWASM = exports.supportsAudioWorklet = exports.supportsWorker = exports.supportsVoiceFocusWorker = exports.supportsWASMPostMessage = exports.isSafari = void 0;\\nconst loader_js_1 = __webpack_require__(/*! ./loader.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/loader.js\\\");\\nconst isSafari = (global = globalThis) => {\\n const ua = global.navigator.userAgent;\\n const hasSafari = ua.match(/Safari\\\\//);\\n const hasChrome = ua.match(/Chrom(?:e|ium)\\\\//);\\n return !!(hasSafari && !hasChrome);\\n};\\nexports.isSafari = isSafari;\\nconst supportsWASMPostMessage = (global = globalThis) => {\\n return !exports.isSafari(global);\\n};\\nexports.supportsWASMPostMessage = supportsWASMPostMessage;\\nconst supportsVoiceFocusWorker = (scope = globalThis, fetchConfig, logger) => __awaiter(void 0, void 0, void 0, function* () {\\n if (!exports.supportsWorker(scope, logger)) {\\n return false;\\n }\\n const workerURL = `${fetchConfig.paths.workers}worker-v1.js`;\\n try {\\n const worker = yield loader_js_1.loadWorker(workerURL, 'VoiceFocusTestWorker', fetchConfig, logger);\\n try {\\n worker.terminate();\\n }\\n catch (e) {\\n logger === null || logger === void 0 ? void 0 : logger.debug('Failed to terminate worker.', e);\\n }\\n return true;\\n }\\n catch (e) {\\n logger === null || logger === void 0 ? void 0 : logger.info('Failed to fetch and instantiate test worker', e);\\n return false;\\n }\\n});\\nexports.supportsVoiceFocusWorker = supportsVoiceFocusWorker;\\nconst supportsWorker = (scope = globalThis, logger) => {\\n try {\\n return !!scope.Worker;\\n }\\n catch (e) {\\n logger === null || logger === void 0 ? void 0 : logger.info('Does not support Worker', e);\\n return false;\\n }\\n};\\nexports.supportsWorker = supportsWorker;\\nconst supportsAudioWorklet = (scope = globalThis, logger) => {\\n try {\\n return !!scope.AudioWorklet && !!scope.AudioWorkletNode;\\n }\\n catch (e) {\\n logger === null || logger === void 0 ? void 0 : logger.info('Does not support Audio Worklet', e);\\n return false;\\n }\\n};\\nexports.supportsAudioWorklet = supportsAudioWorklet;\\nconst supportsWASM = (scope = globalThis, logger) => {\\n try {\\n return !!scope.WebAssembly && (!!scope.WebAssembly.compile || !!scope.WebAssembly.compileStreaming);\\n }\\n catch (e) {\\n logger === null || logger === void 0 ? void 0 : logger.info('Does not support WASM', e);\\n return false;\\n }\\n};\\nexports.supportsWASM = supportsWASM;\\nconst supportsSharedArrayBuffer = (scope = globalThis, window = globalThis, logger) => {\\n try {\\n return !!scope.SharedArrayBuffer && (!!window.chrome || !!scope.crossOriginIsolated);\\n }\\n catch (e) {\\n logger === null || logger === void 0 ? void 0 : logger.info('Does not support SharedArrayBuffer.');\\n return false;\\n }\\n};\\nexports.supportsSharedArrayBuffer = supportsSharedArrayBuffer;\\nconst supportsWASMStreaming = (scope = globalThis, logger) => {\\n var _a;\\n try {\\n return !!((_a = scope.WebAssembly) === null || _a === void 0 ? void 0 : _a.compileStreaming);\\n }\\n catch (e) {\\n logger === null || logger === void 0 ? void 0 : logger.info('Does not support WASM streaming compilation', e);\\n return false;\\n }\\n};\\nexports.supportsWASMStreaming = supportsWASMStreaming;\\nconst SUPPORTED_CHROME_VERSION = 90;\\nconst isOldChrome = (global = globalThis, logger) => {\\n try {\\n if (!global.chrome) {\\n return false;\\n }\\n }\\n catch (e) {\\n }\\n const versionCheck = global.navigator.userAgent.match(/Chrom(?:e|ium)\\\\/([0-9]+)/);\\n if (!versionCheck) {\\n logger === null || logger === void 0 ? void 0 : logger.debug('Unknown Chrome version.');\\n return true;\\n }\\n if (parseInt(versionCheck[1], 10) < SUPPORTED_CHROME_VERSION) {\\n logger === null || logger === void 0 ? void 0 : logger.debug(`Chrome ${versionCheck[1]} has incomplete SIMD support.`);\\n return true;\\n }\\n return false;\\n};\\nexports.isOldChrome = isOldChrome;\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/libs/voicefocus/support.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/libs/voicefocus/types.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/libs/voicefocus/types.js ***!\n \\*******************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.VoiceFocusAudioWorkletNode = void 0;\\nclass VoiceFocusAudioWorkletNode extends ((typeof globalThis !== 'undefined' && globalThis['AudioWorkletNode']) ||\\n class Sadness {\\n }) {\\n}\\nexports.VoiceFocusAudioWorkletNode = VoiceFocusAudioWorkletNode;\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/libs/voicefocus/types.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/libs/voicefocus/voicefocus.js\":\n/*!************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/libs/voicefocus/voicefocus.js ***!\n \\************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.getAudioInput = exports.createAudioContext = exports.VoiceFocus = void 0;\\nconst decider_js_1 = __webpack_require__(/*! ./decider.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/decider.js\\\");\\nconst fetch_js_1 = __webpack_require__(/*! ./fetch.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/fetch.js\\\");\\nconst loader_js_1 = __webpack_require__(/*! ./loader.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/loader.js\\\");\\nconst support_js_1 = __webpack_require__(/*! ./support.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/support.js\\\");\\nconst worklet_inline_node_js_1 = __webpack_require__(/*! ./worklet-inline-node.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/worklet-inline-node.js\\\");\\nconst worklet_worker_sab_node_js_1 = __webpack_require__(/*! ./worklet-worker-sab-node.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/worklet-worker-sab-node.js\\\");\\nconst worklet_worker_postMessage_node_js_1 = __webpack_require__(/*! ./worklet-worker-postMessage-node.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/worklet-worker-postMessage-node.js\\\");\\nconst DEFAULT_AGC_DISABLED_SETTING = {\\n useVoiceFocusAGC: false,\\n useBuiltInAGC: true,\\n};\\nconst DEFAULT_AGC_SETTING = DEFAULT_AGC_DISABLED_SETTING;\\nconst DEFAULT_ASSET_GROUP = 'stable-v1';\\nconst DEFAULT_CDN = 'https://static.sdkassets.chime.aws/';\\nconst DEFAULT_PATHS = {\\n processors: `${DEFAULT_CDN}processors/`,\\n workers: `${DEFAULT_CDN}workers/`,\\n wasm: `${DEFAULT_CDN}wasm/`,\\n models: `${DEFAULT_CDN}wasm/`,\\n};\\nconst DEFAULT_CONTEXT_HINT = {\\n latencyHint: 0,\\n};\\nconst BASE_AUDIO_CONSTRAINTS = {\\n channelCount: 1,\\n echoCancellation: true,\\n googEchoCancellation: true,\\n noiseSuppression: false,\\n googNoiseSuppression: false,\\n googHighpassFilter: false,\\n googTypingNoiseDetection: false,\\n};\\nconst DEFAULT_AUDIO_CONSTRAINTS_WITH_BUILTIN_AGC = Object.assign(Object.assign({}, BASE_AUDIO_CONSTRAINTS), { autoGainControl: true, googAutoGainControl: true, googAutoGainControl2: true });\\nconst DEFAULT_AUDIO_CONSTRAINTS_WITHOUT_BUILTIN_AGC = Object.assign(Object.assign({}, BASE_AUDIO_CONSTRAINTS), { autoGainControl: false, googAutoGainControl: false, googAutoGainControl2: false });\\nconst PROCESSORS = {\\n 'voicefocus-worker-sab-processor': {\\n file: 'worklet-worker-sab-processor-v1.js',\\n node: worklet_worker_sab_node_js_1.default,\\n },\\n 'voicefocus-worker-postMessage-processor': {\\n file: 'worklet-worker-postMessage-processor-v1.js',\\n node: worklet_worker_postMessage_node_js_1.default,\\n },\\n 'voicefocus-inline-processor': {\\n file: 'worklet-inline-processor-v1.js',\\n node: worklet_inline_node_js_1.default,\\n },\\n};\\nconst validateAssetSpec = (assetGroup, revisionID) => {\\n if (assetGroup !== undefined && !fetch_js_1.isValidAssetGroup(assetGroup)) {\\n throw new Error(`Invalid asset group ${assetGroup}`);\\n }\\n if (revisionID !== undefined && !fetch_js_1.isValidRevisionID(revisionID)) {\\n throw new Error(`Invalid revision ID ${revisionID}`);\\n }\\n};\\nconst mungeConstraints = (constraints, agc) => {\\n let defaultConstraints;\\n if (agc.useBuiltInAGC) {\\n defaultConstraints = DEFAULT_AUDIO_CONSTRAINTS_WITH_BUILTIN_AGC;\\n }\\n else {\\n defaultConstraints = DEFAULT_AUDIO_CONSTRAINTS_WITHOUT_BUILTIN_AGC;\\n }\\n if (!constraints) {\\n return { audio: defaultConstraints };\\n }\\n if (!constraints.audio) {\\n return constraints;\\n }\\n if (constraints.video) {\\n throw new Error('Not adding Voice Focus to multi-device getUserMedia call.');\\n }\\n return Object.assign(Object.assign({}, constraints), { audio: constraints.audio === true ? defaultConstraints : Object.assign(Object.assign({}, constraints.audio), defaultConstraints) });\\n};\\nconst urlForModel = (model, paths) => {\\n return `${paths.models}${decider_js_1.decideModel(model)}.wasm`;\\n};\\nclass VoiceFocus {\\n constructor(worker, processorURL, nodeConstructor, nodeOptions, executionQuanta) {\\n this.processorURL = processorURL;\\n this.nodeConstructor = nodeConstructor;\\n this.nodeOptions = nodeOptions;\\n this.executionQuanta = executionQuanta;\\n this.internal = {\\n worker,\\n nodeOptions,\\n };\\n }\\n static isSupported(spec, options) {\\n const { fetchBehavior, logger } = options || {};\\n if (typeof globalThis === 'undefined') {\\n logger === null || logger === void 0 ? void 0 : logger.debug('Browser does not have globalThis.');\\n return Promise.resolve(false);\\n }\\n if (!support_js_1.supportsAudioWorklet(globalThis, logger)) {\\n logger === null || logger === void 0 ? void 0 : logger.debug('Browser does not support Audio Worklet.');\\n return Promise.resolve(false);\\n }\\n if (!support_js_1.supportsWASM(globalThis, logger)) {\\n logger === null || logger === void 0 ? void 0 : logger.debug('Browser does not support WASM.');\\n return Promise.resolve(false);\\n }\\n if (!support_js_1.supportsWASMStreaming(globalThis, logger)) {\\n logger === null || logger === void 0 ? void 0 : logger.debug('Browser does not support streaming WASM compilation.');\\n }\\n const { assetGroup = DEFAULT_ASSET_GROUP, revisionID, paths = DEFAULT_PATHS, } = spec || {};\\n validateAssetSpec(assetGroup, revisionID);\\n const assetConfig = revisionID ? { revisionID } : { assetGroup };\\n const updatedFetchBehavior = fetch_js_1.addQueryParams(fetchBehavior, assetConfig);\\n const fetchConfig = Object.assign(Object.assign({}, updatedFetchBehavior), { paths });\\n return support_js_1.supportsVoiceFocusWorker(globalThis, fetchConfig, logger);\\n }\\n static mungeExecutionPreference(preference, logger) {\\n const isAuto = (preference === undefined || preference === 'auto');\\n if (support_js_1.isSafari(globalThis)) {\\n if (isAuto || preference === 'inline') {\\n return 'inline';\\n }\\n if (!isAuto) {\\n throw new Error(`Unsupported execution preference ${preference}`);\\n }\\n }\\n if (preference === 'worker-sab' && !support_js_1.supportsSharedArrayBuffer(globalThis, globalThis, logger)) {\\n throw new Error(`Unsupported execution preference ${preference}`);\\n }\\n return preference || 'auto';\\n }\\n static configure(spec, options) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const { fetchBehavior, preResolve, logger, } = options || {};\\n const { category = 'voicefocus', name = 'default', variant: variantPreference = 'auto', assetGroup = DEFAULT_ASSET_GROUP, revisionID, simd = 'detect', executionPreference = 'auto', executionQuantaPreference, usagePreference = 'interactivity', estimatorBudget = 100, paths = DEFAULT_PATHS, thresholds, } = spec || {};\\n logger === null || logger === void 0 ? void 0 : logger.debug('Configuring Voice Focus with spec', spec);\\n if (category !== undefined && category !== 'voicefocus') {\\n throw new Error(`Unrecognized category ${category}`);\\n }\\n if (name !== undefined && name !== 'default') {\\n throw new Error(`Unrecognized feature name ${name}`);\\n }\\n if (variantPreference !== undefined && !['auto', 'c100', 'c50', 'c20', 'c10'].includes(variantPreference)) {\\n throw new Error(`Unrecognized feature variant ${variantPreference}`);\\n }\\n if (executionQuantaPreference !== undefined && ![1, 2, 3].includes(executionQuantaPreference)) {\\n throw new Error(`Unrecognized execution quanta preference ${executionQuantaPreference}`);\\n }\\n validateAssetSpec(assetGroup, revisionID);\\n if (simd !== undefined && !['detect', 'force', 'disable'].includes(simd)) {\\n throw new Error(`Unrecognized SIMD option ${simd}`);\\n }\\n if (executionPreference !== undefined && !['auto', 'inline', 'worker', 'worker-sab', 'worker-postMessage'].includes(executionPreference)) {\\n throw new Error(`Unrecognized execution preference ${executionPreference}`);\\n }\\n if (usagePreference !== undefined && !['quality', 'interactivity'].includes(usagePreference)) {\\n throw new Error(`Unrecognized usage preference ${usagePreference}`);\\n }\\n const executionSpec = {\\n executionPreference: this.mungeExecutionPreference(executionPreference, logger),\\n usagePreference,\\n executionQuantaPreference,\\n variantPreference,\\n simdPreference: simd,\\n estimatorBudget,\\n };\\n const assetConfig = revisionID ? { revisionID } : { assetGroup };\\n const updatedFetchBehavior = fetch_js_1.addQueryParams(fetchBehavior, assetConfig);\\n const fetchConfig = Object.assign({ paths }, updatedFetchBehavior);\\n const executionDefinition = yield decider_js_1.measureAndDecideExecutionApproach(executionSpec, fetchConfig, logger, thresholds);\\n if (executionDefinition.supported === false) {\\n return { supported: false, reason: executionDefinition.reason };\\n }\\n logger === null || logger === void 0 ? void 0 : logger.info('Decided execution approach', executionDefinition);\\n const { useSIMD, processor, variant, executionQuanta } = executionDefinition;\\n const model = {\\n category: category || 'voicefocus',\\n name: name || 'default',\\n variant,\\n simd: useSIMD,\\n };\\n if (preResolve) {\\n const startingURL = urlForModel(model, paths);\\n model.url = yield fetch_js_1.resolveURL(startingURL, updatedFetchBehavior);\\n }\\n return {\\n fetchConfig,\\n model,\\n processor,\\n executionQuanta,\\n supported: true,\\n };\\n });\\n }\\n static init(configuration, { delegate, preload = true, logger, }) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (configuration.supported === false) {\\n throw new Error('Voice Focus not supported. Reason: ' + configuration.reason);\\n }\\n const { model, processor, fetchConfig, executionQuanta, } = configuration;\\n const { simd } = model;\\n const { paths } = fetchConfig;\\n if (processor !== 'voicefocus-inline-processor' &&\\n processor !== 'voicefocus-worker-postMessage-processor' &&\\n processor !== 'voicefocus-worker-sab-processor') {\\n throw new Error(`Unknown processor ${processor}`);\\n }\\n const modelURL = model.url || urlForModel(model, paths);\\n logger === null || logger === void 0 ? void 0 : logger.debug(`Using model URL ${modelURL}.`);\\n const audioBufferURL = `${paths.wasm}audio_buffer-v1${simd ? '_simd' : ''}.wasm`;\\n const resamplerURL = `${paths.wasm}resampler-v1${simd ? '_simd' : ''}.wasm`;\\n const workerURL = `${paths.workers}worker-v1.js`;\\n const { file, node } = PROCESSORS[processor];\\n const processorURL = `${paths.processors}${file}`;\\n const worker = yield loader_js_1.loadWorker(workerURL, 'VoiceFocusWorker', fetchConfig, logger);\\n if (preload) {\\n logger === null || logger === void 0 ? void 0 : logger.debug('Preloading', modelURL);\\n let message = support_js_1.supportsWASMPostMessage(globalThis) ? 'get-module' : 'get-module-buffer';\\n worker.postMessage({\\n message,\\n preload: true,\\n key: 'model',\\n fetchBehavior: fetchConfig,\\n path: modelURL,\\n });\\n }\\n const nodeOptions = {\\n processor,\\n worker,\\n audioBufferURL,\\n resamplerURL,\\n fetchBehavior: fetchConfig,\\n modelURL,\\n delegate,\\n };\\n const factory = new VoiceFocus(worker, processorURL, node, nodeOptions, executionQuanta);\\n return Promise.resolve(factory);\\n });\\n }\\n createNode(context, options) {\\n var _a;\\n const { voiceFocusSampleRate = (context.sampleRate === 16000 ? 16000 : 48000), enabled = true, agc = DEFAULT_AGC_SETTING, } = options || {};\\n const processorOptions = {\\n voiceFocusSampleRate,\\n enabled,\\n sendBufferCount: 10,\\n prefill: 6,\\n agc,\\n executionQuanta: this.executionQuanta,\\n };\\n const url = fetch_js_1.withQueryString(this.processorURL, (_a = this.nodeOptions) === null || _a === void 0 ? void 0 : _a.fetchBehavior);\\n return context.audioWorklet\\n .addModule(url)\\n .then(() => new (this.nodeConstructor)(context, Object.assign(Object.assign({}, this.nodeOptions), { processorOptions })));\\n }\\n applyToStream(stream, context, options) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const source = context.createMediaStreamSource(stream);\\n const node = yield this.applyToSourceNode(source, context, options);\\n const destination = context.createMediaStreamDestination();\\n node.connect(destination);\\n return {\\n node,\\n source,\\n destination,\\n stream: destination.stream,\\n };\\n });\\n }\\n applyToSourceNode(source, context, options) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const node = yield this.createNode(context, options);\\n source.connect(node);\\n return node;\\n });\\n }\\n}\\nexports.VoiceFocus = VoiceFocus;\\nconst createAudioContext = (contextHint = DEFAULT_CONTEXT_HINT) => {\\n return new (window.AudioContext || window.webkitAudioContext)(contextHint);\\n};\\nexports.createAudioContext = createAudioContext;\\nconst getAudioInput = (context, inputOptions, voiceFocusOptions) => __awaiter(void 0, void 0, void 0, function* () {\\n var _a, _b;\\n const { constraints, spec, delegate, preload = true, options } = inputOptions;\\n const { logger } = voiceFocusOptions;\\n const config = yield VoiceFocus.configure(spec, voiceFocusOptions);\\n if (!config.supported) {\\n (_a = voiceFocusOptions.logger) === null || _a === void 0 ? void 0 : _a.warn('Voice Focus not supported; returning standard stream.');\\n return window.navigator.mediaDevices.getUserMedia(constraints);\\n }\\n const factory = yield VoiceFocus.init(config, { delegate, preload, logger });\\n const agc = ((_b = inputOptions.options) === null || _b === void 0 ? void 0 : _b.agc) || DEFAULT_AGC_SETTING;\\n const input = yield window.navigator.mediaDevices.getUserMedia(mungeConstraints(constraints, agc));\\n return factory.applyToStream(input, context, options).then(result => result.stream);\\n});\\nexports.getAudioInput = getAudioInput;\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/libs/voicefocus/voicefocus.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/libs/voicefocus/worklet-inline-node.js\":\n/*!*********************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/libs/voicefocus/worklet-inline-node.js ***!\n \\*********************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst support_js_1 = __webpack_require__(/*! ./support.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/support.js\\\");\\nconst types_js_1 = __webpack_require__(/*! ./types.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/types.js\\\");\\nclass VoiceFocusInlineNode extends types_js_1.VoiceFocusAudioWorkletNode {\\n constructor(context, options) {\\n super(context, options.processor, options);\\n const { modelURL, worker, fetchBehavior, logger, } = options;\\n this.logger = logger;\\n this.port.onmessage = this.onProcessorMessage.bind(this);\\n if (logger)\\n logger.debug('VoiceFocusInlineNode:', modelURL);\\n this.worker = worker;\\n this.worker.onmessage = this.onWorkerMessage.bind(this);\\n const message = support_js_1.supportsWASMPostMessage(globalThis) ? 'get-module' : 'get-module-buffer';\\n this.worker.postMessage({\\n message,\\n key: 'model',\\n fetchBehavior,\\n path: modelURL,\\n });\\n }\\n onModuleBufferLoaded(buffer, key) {\\n this.port.postMessage({ message: 'module-buffer', buffer, key });\\n }\\n onModuleLoaded(module, key) {\\n this.port.postMessage({ message: 'module', module, key });\\n }\\n enable() {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.port.postMessage({ message: 'enable' });\\n });\\n }\\n disable() {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.port.postMessage({ message: 'disable' });\\n });\\n }\\n stop() {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.port.postMessage({ message: 'stop' });\\n this.disconnect();\\n });\\n }\\n onProcessorMessage(event) {\\n var _a;\\n const data = event.data;\\n switch (data.message) {\\n case 'cpu':\\n break;\\n default:\\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Ignoring processor message.');\\n }\\n }\\n onWorkerMessage(event) {\\n const data = event.data;\\n switch (data.message) {\\n case 'module-buffer':\\n if (!data.buffer || !data.key) {\\n return;\\n }\\n this.onModuleBufferLoaded(data.buffer, data.key);\\n break;\\n case 'module':\\n if (!data.module || !data.key) {\\n return;\\n }\\n this.onModuleLoaded(data.module, data.key);\\n break;\\n case 'stopped':\\n if (this.worker) {\\n this.worker.terminate();\\n }\\n break;\\n default:\\n return;\\n }\\n }\\n}\\nexports[\\\"default\\\"] = VoiceFocusInlineNode;\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/libs/voicefocus/worklet-inline-node.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/libs/voicefocus/worklet-worker-postMessage-node.js\":\n/*!*********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/libs/voicefocus/worklet-worker-postMessage-node.js ***!\n \\*********************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst support_js_1 = __webpack_require__(/*! ./support.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/support.js\\\");\\nconst types_js_1 = __webpack_require__(/*! ./types.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/types.js\\\");\\nclass VoiceFocusWorkerPostMessageNode extends types_js_1.VoiceFocusAudioWorkletNode {\\n constructor(context, options) {\\n super(context, options.processor, options);\\n const { modelURL, audioBufferURL, worker, fetchBehavior, delegate, } = options;\\n this.delegate = delegate;\\n this.worker = worker;\\n this.worker.onmessage = this.onWorkerMessage.bind(this);\\n this.port.onmessage = this.onProcessorMessage.bind(this);\\n this.worker.postMessage({\\n message: 'init',\\n approach: 'postMessage',\\n frames: context.sampleRate === 16000 ? 160 : 480,\\n enabled: options.processorOptions.enabled,\\n agc: options.processorOptions.agc,\\n fetchBehavior,\\n model: modelURL,\\n });\\n const message = support_js_1.supportsWASMPostMessage(globalThis) ? 'get-module' : 'get-module-buffer';\\n this.worker.postMessage({\\n message,\\n key: 'buffer',\\n fetchBehavior,\\n path: audioBufferURL,\\n });\\n }\\n enable() {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.worker.postMessage({ message: 'enable' });\\n });\\n }\\n disable() {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.worker.postMessage({ message: 'disable' });\\n });\\n }\\n stop() {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n this.worker.postMessage({ message: 'stop' });\\n }\\n catch (e) {\\n }\\n this.disconnect();\\n });\\n }\\n onWorkerMessage(event) {\\n var _a;\\n const data = event.data;\\n switch (data.message) {\\n case 'ready':\\n this.port.postMessage({ message: 'ready', shared: data.shared }, data.shared ? Object.values(data.shared) : []);\\n break;\\n case 'data':\\n if (!data.buffer) {\\n return;\\n }\\n this.port.postMessage({ message: 'data', buffer: data.buffer }, [data.buffer]);\\n break;\\n case 'stopped':\\n this.worker.terminate();\\n break;\\n case 'module-buffer':\\n case 'module':\\n this.port.postMessage(data);\\n break;\\n case 'cpu':\\n (_a = this.delegate) === null || _a === void 0 ? void 0 : _a.onCPUWarning();\\n break;\\n case 'processing':\\n this.port.postMessage(data);\\n break;\\n default:\\n return;\\n }\\n }\\n onProcessorMessage(event) {\\n var _a;\\n const data = event.data;\\n switch (data.message) {\\n case 'data':\\n if (!data.buffer) {\\n return;\\n }\\n this.worker.postMessage({ message: 'data', buffer: data.buffer }, [data.buffer]);\\n break;\\n case 'cpu':\\n (_a = this.delegate) === null || _a === void 0 ? void 0 : _a.onCPUWarning();\\n break;\\n case 'prepare-for-frames':\\n this.worker.postMessage(data);\\n break;\\n default:\\n return;\\n }\\n }\\n}\\nexports[\\\"default\\\"] = VoiceFocusWorkerPostMessageNode;\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/libs/voicefocus/worklet-worker-postMessage-node.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/libs/voicefocus/worklet-worker-sab-node.js\":\n/*!*************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/libs/voicefocus/worklet-worker-sab-node.js ***!\n \\*************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst support_js_1 = __webpack_require__(/*! ./support.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/support.js\\\");\\nconst types_js_1 = __webpack_require__(/*! ./types.js */ \\\"./node_modules/amazon-chime-sdk-js/libs/voicefocus/types.js\\\");\\nconst INDICES = {\\n ready: 0,\\n enabled: 1,\\n};\\nconst STATES = {\\n disabled: 0,\\n enabled: 1,\\n stopped: 2,\\n};\\nclass VoiceFocusWorkerBufferNode extends types_js_1.VoiceFocusAudioWorkletNode {\\n constructor(context, options) {\\n super(context, options.processor, options);\\n const { modelURL, resamplerURL, worker, fetchBehavior, delegate, } = options;\\n this.delegate = delegate;\\n this.worker = worker;\\n this.worker.onmessage = this.onWorkerMessage.bind(this);\\n this.port.onmessage = this.onProcessorMessage.bind(this);\\n this.worker.postMessage({\\n message: 'init',\\n approach: 'sab',\\n frames: context.sampleRate === 16000 ? 160 : 480,\\n enabled: options.processorOptions.enabled,\\n model: modelURL,\\n });\\n const message = support_js_1.supportsWASMPostMessage(globalThis) ? 'get-module' : 'get-module-buffer';\\n this.worker.postMessage({\\n message,\\n key: 'resampler',\\n fetchBehavior,\\n path: resamplerURL,\\n });\\n }\\n enable() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.state) {\\n Atomics.store(this.state, INDICES.enabled, STATES.enabled);\\n Atomics.notify(this.state, INDICES.ready, 1);\\n }\\n else {\\n this.worker.postMessage({ message: 'enable' });\\n }\\n });\\n }\\n disable() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.state) {\\n Atomics.store(this.state, INDICES.enabled, STATES.disabled);\\n Atomics.notify(this.state, INDICES.ready, 1);\\n }\\n else {\\n this.worker.postMessage({ message: 'disable' });\\n }\\n });\\n }\\n stop() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.state) {\\n Atomics.store(this.state, INDICES.enabled, STATES.stopped);\\n Atomics.notify(this.state, INDICES.ready, 1);\\n }\\n else {\\n try {\\n this.worker.postMessage({ message: 'stop' });\\n }\\n catch (e) {\\n }\\n }\\n this.disconnect();\\n });\\n }\\n onWorkerMessage(event) {\\n var _a;\\n const data = event.data;\\n switch (data.message) {\\n case 'ready':\\n if (!data.shared) {\\n throw new Error('No shared state.');\\n }\\n this.state = new Int32Array(data.shared.state);\\n this.port.postMessage(data);\\n break;\\n case 'stopped':\\n this.worker.terminate();\\n break;\\n case 'module-buffer':\\n case 'module':\\n this.port.postMessage(data);\\n break;\\n case 'cpu':\\n (_a = this.delegate) === null || _a === void 0 ? void 0 : _a.onCPUWarning();\\n break;\\n case 'processing':\\n this.port.postMessage(data);\\n break;\\n default:\\n return;\\n }\\n }\\n onProcessorMessage(event) {\\n var _a;\\n const data = event.data;\\n switch (data.message) {\\n case 'cpu':\\n (_a = this.delegate) === null || _a === void 0 ? void 0 : _a.onCPUWarning();\\n break;\\n case 'prepare-for-frames':\\n this.worker.postMessage(data);\\n break;\\n default:\\n }\\n }\\n}\\nexports[\\\"default\\\"] = VoiceFocusWorkerBufferNode;\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/libs/voicefocus/worklet-worker-sab-node.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/base64-js/index.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/base64-js/index.js ***!\n \\*****************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n\\nexports.byteLength = byteLength\\nexports.toByteArray = toByteArray\\nexports.fromByteArray = fromByteArray\\n\\nvar lookup = []\\nvar revLookup = []\\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\\n\\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\\nfor (var i = 0, len = code.length; i < len; ++i) {\\n lookup[i] = code[i]\\n revLookup[code.charCodeAt(i)] = i\\n}\\n\\n// Support decoding URL-safe base64 strings, as Node.js does.\\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\\nrevLookup['-'.charCodeAt(0)] = 62\\nrevLookup['_'.charCodeAt(0)] = 63\\n\\nfunction getLens (b64) {\\n var len = b64.length\\n\\n if (len % 4 > 0) {\\n throw new Error('Invalid string. Length must be a multiple of 4')\\n }\\n\\n // Trim off extra bytes after placeholder bytes are found\\n // See: https://github.com/beatgammit/base64-js/issues/42\\n var validLen = b64.indexOf('=')\\n if (validLen === -1) validLen = len\\n\\n var placeHoldersLen = validLen === len\\n ? 0\\n : 4 - (validLen % 4)\\n\\n return [validLen, placeHoldersLen]\\n}\\n\\n// base64 is 4/3 + up to two characters of the original data\\nfunction byteLength (b64) {\\n var lens = getLens(b64)\\n var validLen = lens[0]\\n var placeHoldersLen = lens[1]\\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\\n}\\n\\nfunction _byteLength (b64, validLen, placeHoldersLen) {\\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\\n}\\n\\nfunction toByteArray (b64) {\\n var tmp\\n var lens = getLens(b64)\\n var validLen = lens[0]\\n var placeHoldersLen = lens[1]\\n\\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\\n\\n var curByte = 0\\n\\n // if there are placeholders, only get up to the last complete 4 chars\\n var len = placeHoldersLen > 0\\n ? validLen - 4\\n : validLen\\n\\n var i\\n for (i = 0; i < len; i += 4) {\\n tmp =\\n (revLookup[b64.charCodeAt(i)] << 18) |\\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\\n revLookup[b64.charCodeAt(i + 3)]\\n arr[curByte++] = (tmp >> 16) & 0xFF\\n arr[curByte++] = (tmp >> 8) & 0xFF\\n arr[curByte++] = tmp & 0xFF\\n }\\n\\n if (placeHoldersLen === 2) {\\n tmp =\\n (revLookup[b64.charCodeAt(i)] << 2) |\\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\\n arr[curByte++] = tmp & 0xFF\\n }\\n\\n if (placeHoldersLen === 1) {\\n tmp =\\n (revLookup[b64.charCodeAt(i)] << 10) |\\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\\n arr[curByte++] = (tmp >> 8) & 0xFF\\n arr[curByte++] = tmp & 0xFF\\n }\\n\\n return arr\\n}\\n\\nfunction tripletToBase64 (num) {\\n return lookup[num >> 18 & 0x3F] +\\n lookup[num >> 12 & 0x3F] +\\n lookup[num >> 6 & 0x3F] +\\n lookup[num & 0x3F]\\n}\\n\\nfunction encodeChunk (uint8, start, end) {\\n var tmp\\n var output = []\\n for (var i = start; i < end; i += 3) {\\n tmp =\\n ((uint8[i] << 16) & 0xFF0000) +\\n ((uint8[i + 1] << 8) & 0xFF00) +\\n (uint8[i + 2] & 0xFF)\\n output.push(tripletToBase64(tmp))\\n }\\n return output.join('')\\n}\\n\\nfunction fromByteArray (uint8) {\\n var tmp\\n var len = uint8.length\\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\\n var parts = []\\n var maxChunkLength = 16383 // must be multiple of 3\\n\\n // go through the array every three bytes, we'll deal with trailing stuff later\\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\\n }\\n\\n // pad the end with zeros, but make sure to not forget the extra bytes\\n if (extraBytes === 1) {\\n tmp = uint8[len - 1]\\n parts.push(\\n lookup[tmp >> 2] +\\n lookup[(tmp << 4) & 0x3F] +\\n '=='\\n )\\n } else if (extraBytes === 2) {\\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\\n parts.push(\\n lookup[tmp >> 10] +\\n lookup[(tmp >> 4) & 0x3F] +\\n lookup[(tmp << 2) & 0x3F] +\\n '='\\n )\\n }\\n\\n return parts.join('')\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/base64-js/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/buffer/index.js\":\n/*!**************************************!*\\\n !*** ./node_modules/buffer/index.js ***!\n \\**************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"/*!\\n * The buffer module from node.js, for the browser.\\n *\\n * @author Feross Aboukhadijeh \\n * @license MIT\\n */\\n/* eslint-disable no-proto */\\n\\n\\n\\nconst base64 = __webpack_require__(/*! base64-js */ \\\"./node_modules/base64-js/index.js\\\")\\nconst ieee754 = __webpack_require__(/*! ieee754 */ \\\"./node_modules/ieee754/index.js\\\")\\nconst customInspectSymbol =\\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\\n : null\\n\\nexports.Buffer = Buffer\\nexports.SlowBuffer = SlowBuffer\\nexports.INSPECT_MAX_BYTES = 50\\n\\nconst K_MAX_LENGTH = 0x7fffffff\\nexports.kMaxLength = K_MAX_LENGTH\\n\\n/**\\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\\n * === true Use Uint8Array implementation (fastest)\\n * === false Print warning and recommend using `buffer` v4.x which has an Object\\n * implementation (most compatible, even IE6)\\n *\\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\\n * Opera 11.6+, iOS 4.2+.\\n *\\n * We report that the browser does not support typed arrays if the are not subclassable\\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\\n * for __proto__ and has a buggy typed array implementation.\\n */\\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\\n\\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\\n typeof console.error === 'function') {\\n console.error(\\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\\n )\\n}\\n\\nfunction typedArraySupport () {\\n // Can typed array instances can be augmented?\\n try {\\n const arr = new Uint8Array(1)\\n const proto = { foo: function () { return 42 } }\\n Object.setPrototypeOf(proto, Uint8Array.prototype)\\n Object.setPrototypeOf(arr, proto)\\n return arr.foo() === 42\\n } catch (e) {\\n return false\\n }\\n}\\n\\nObject.defineProperty(Buffer.prototype, 'parent', {\\n enumerable: true,\\n get: function () {\\n if (!Buffer.isBuffer(this)) return undefined\\n return this.buffer\\n }\\n})\\n\\nObject.defineProperty(Buffer.prototype, 'offset', {\\n enumerable: true,\\n get: function () {\\n if (!Buffer.isBuffer(this)) return undefined\\n return this.byteOffset\\n }\\n})\\n\\nfunction createBuffer (length) {\\n if (length > K_MAX_LENGTH) {\\n throw new RangeError('The value \\\"' + length + '\\\" is invalid for option \\\"size\\\"')\\n }\\n // Return an augmented `Uint8Array` instance\\n const buf = new Uint8Array(length)\\n Object.setPrototypeOf(buf, Buffer.prototype)\\n return buf\\n}\\n\\n/**\\n * The Buffer constructor returns instances of `Uint8Array` that have their\\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\\n * returns a single octet.\\n *\\n * The `Uint8Array` prototype remains unmodified.\\n */\\n\\nfunction Buffer (arg, encodingOrOffset, length) {\\n // Common case.\\n if (typeof arg === 'number') {\\n if (typeof encodingOrOffset === 'string') {\\n throw new TypeError(\\n 'The \\\"string\\\" argument must be of type string. Received type number'\\n )\\n }\\n return allocUnsafe(arg)\\n }\\n return from(arg, encodingOrOffset, length)\\n}\\n\\nBuffer.poolSize = 8192 // not used by this implementation\\n\\nfunction from (value, encodingOrOffset, length) {\\n if (typeof value === 'string') {\\n return fromString(value, encodingOrOffset)\\n }\\n\\n if (ArrayBuffer.isView(value)) {\\n return fromArrayView(value)\\n }\\n\\n if (value == null) {\\n throw new TypeError(\\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\\n 'or Array-like Object. Received type ' + (typeof value)\\n )\\n }\\n\\n if (isInstance(value, ArrayBuffer) ||\\n (value && isInstance(value.buffer, ArrayBuffer))) {\\n return fromArrayBuffer(value, encodingOrOffset, length)\\n }\\n\\n if (typeof SharedArrayBuffer !== 'undefined' &&\\n (isInstance(value, SharedArrayBuffer) ||\\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\\n return fromArrayBuffer(value, encodingOrOffset, length)\\n }\\n\\n if (typeof value === 'number') {\\n throw new TypeError(\\n 'The \\\"value\\\" argument must not be of type number. Received type number'\\n )\\n }\\n\\n const valueOf = value.valueOf && value.valueOf()\\n if (valueOf != null && valueOf !== value) {\\n return Buffer.from(valueOf, encodingOrOffset, length)\\n }\\n\\n const b = fromObject(value)\\n if (b) return b\\n\\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\\n typeof value[Symbol.toPrimitive] === 'function') {\\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\\n }\\n\\n throw new TypeError(\\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\\n 'or Array-like Object. Received type ' + (typeof value)\\n )\\n}\\n\\n/**\\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\\n * if value is a number.\\n * Buffer.from(str[, encoding])\\n * Buffer.from(array)\\n * Buffer.from(buffer)\\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\\n **/\\nBuffer.from = function (value, encodingOrOffset, length) {\\n return from(value, encodingOrOffset, length)\\n}\\n\\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\\n// https://github.com/feross/buffer/pull/148\\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\\nObject.setPrototypeOf(Buffer, Uint8Array)\\n\\nfunction assertSize (size) {\\n if (typeof size !== 'number') {\\n throw new TypeError('\\\"size\\\" argument must be of type number')\\n } else if (size < 0) {\\n throw new RangeError('The value \\\"' + size + '\\\" is invalid for option \\\"size\\\"')\\n }\\n}\\n\\nfunction alloc (size, fill, encoding) {\\n assertSize(size)\\n if (size <= 0) {\\n return createBuffer(size)\\n }\\n if (fill !== undefined) {\\n // Only pay attention to encoding if it's a string. This\\n // prevents accidentally sending in a number that would\\n // be interpreted as a start offset.\\n return typeof encoding === 'string'\\n ? createBuffer(size).fill(fill, encoding)\\n : createBuffer(size).fill(fill)\\n }\\n return createBuffer(size)\\n}\\n\\n/**\\n * Creates a new filled Buffer instance.\\n * alloc(size[, fill[, encoding]])\\n **/\\nBuffer.alloc = function (size, fill, encoding) {\\n return alloc(size, fill, encoding)\\n}\\n\\nfunction allocUnsafe (size) {\\n assertSize(size)\\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\\n}\\n\\n/**\\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\\n * */\\nBuffer.allocUnsafe = function (size) {\\n return allocUnsafe(size)\\n}\\n/**\\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\\n */\\nBuffer.allocUnsafeSlow = function (size) {\\n return allocUnsafe(size)\\n}\\n\\nfunction fromString (string, encoding) {\\n if (typeof encoding !== 'string' || encoding === '') {\\n encoding = 'utf8'\\n }\\n\\n if (!Buffer.isEncoding(encoding)) {\\n throw new TypeError('Unknown encoding: ' + encoding)\\n }\\n\\n const length = byteLength(string, encoding) | 0\\n let buf = createBuffer(length)\\n\\n const actual = buf.write(string, encoding)\\n\\n if (actual !== length) {\\n // Writing a hex string, for example, that contains invalid characters will\\n // cause everything after the first invalid character to be ignored. (e.g.\\n // 'abxxcd' will be treated as 'ab')\\n buf = buf.slice(0, actual)\\n }\\n\\n return buf\\n}\\n\\nfunction fromArrayLike (array) {\\n const length = array.length < 0 ? 0 : checked(array.length) | 0\\n const buf = createBuffer(length)\\n for (let i = 0; i < length; i += 1) {\\n buf[i] = array[i] & 255\\n }\\n return buf\\n}\\n\\nfunction fromArrayView (arrayView) {\\n if (isInstance(arrayView, Uint8Array)) {\\n const copy = new Uint8Array(arrayView)\\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\\n }\\n return fromArrayLike(arrayView)\\n}\\n\\nfunction fromArrayBuffer (array, byteOffset, length) {\\n if (byteOffset < 0 || array.byteLength < byteOffset) {\\n throw new RangeError('\\\"offset\\\" is outside of buffer bounds')\\n }\\n\\n if (array.byteLength < byteOffset + (length || 0)) {\\n throw new RangeError('\\\"length\\\" is outside of buffer bounds')\\n }\\n\\n let buf\\n if (byteOffset === undefined && length === undefined) {\\n buf = new Uint8Array(array)\\n } else if (length === undefined) {\\n buf = new Uint8Array(array, byteOffset)\\n } else {\\n buf = new Uint8Array(array, byteOffset, length)\\n }\\n\\n // Return an augmented `Uint8Array` instance\\n Object.setPrototypeOf(buf, Buffer.prototype)\\n\\n return buf\\n}\\n\\nfunction fromObject (obj) {\\n if (Buffer.isBuffer(obj)) {\\n const len = checked(obj.length) | 0\\n const buf = createBuffer(len)\\n\\n if (buf.length === 0) {\\n return buf\\n }\\n\\n obj.copy(buf, 0, 0, len)\\n return buf\\n }\\n\\n if (obj.length !== undefined) {\\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\\n return createBuffer(0)\\n }\\n return fromArrayLike(obj)\\n }\\n\\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\\n return fromArrayLike(obj.data)\\n }\\n}\\n\\nfunction checked (length) {\\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\\n // length is NaN (which is otherwise coerced to zero.)\\n if (length >= K_MAX_LENGTH) {\\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\\n }\\n return length | 0\\n}\\n\\nfunction SlowBuffer (length) {\\n if (+length != length) { // eslint-disable-line eqeqeq\\n length = 0\\n }\\n return Buffer.alloc(+length)\\n}\\n\\nBuffer.isBuffer = function isBuffer (b) {\\n return b != null && b._isBuffer === true &&\\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\\n}\\n\\nBuffer.compare = function compare (a, b) {\\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\\n throw new TypeError(\\n 'The \\\"buf1\\\", \\\"buf2\\\" arguments must be one of type Buffer or Uint8Array'\\n )\\n }\\n\\n if (a === b) return 0\\n\\n let x = a.length\\n let y = b.length\\n\\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\\n if (a[i] !== b[i]) {\\n x = a[i]\\n y = b[i]\\n break\\n }\\n }\\n\\n if (x < y) return -1\\n if (y < x) return 1\\n return 0\\n}\\n\\nBuffer.isEncoding = function isEncoding (encoding) {\\n switch (String(encoding).toLowerCase()) {\\n case 'hex':\\n case 'utf8':\\n case 'utf-8':\\n case 'ascii':\\n case 'latin1':\\n case 'binary':\\n case 'base64':\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return true\\n default:\\n return false\\n }\\n}\\n\\nBuffer.concat = function concat (list, length) {\\n if (!Array.isArray(list)) {\\n throw new TypeError('\\\"list\\\" argument must be an Array of Buffers')\\n }\\n\\n if (list.length === 0) {\\n return Buffer.alloc(0)\\n }\\n\\n let i\\n if (length === undefined) {\\n length = 0\\n for (i = 0; i < list.length; ++i) {\\n length += list[i].length\\n }\\n }\\n\\n const buffer = Buffer.allocUnsafe(length)\\n let pos = 0\\n for (i = 0; i < list.length; ++i) {\\n let buf = list[i]\\n if (isInstance(buf, Uint8Array)) {\\n if (pos + buf.length > buffer.length) {\\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\\n buf.copy(buffer, pos)\\n } else {\\n Uint8Array.prototype.set.call(\\n buffer,\\n buf,\\n pos\\n )\\n }\\n } else if (!Buffer.isBuffer(buf)) {\\n throw new TypeError('\\\"list\\\" argument must be an Array of Buffers')\\n } else {\\n buf.copy(buffer, pos)\\n }\\n pos += buf.length\\n }\\n return buffer\\n}\\n\\nfunction byteLength (string, encoding) {\\n if (Buffer.isBuffer(string)) {\\n return string.length\\n }\\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\\n return string.byteLength\\n }\\n if (typeof string !== 'string') {\\n throw new TypeError(\\n 'The \\\"string\\\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\\n 'Received type ' + typeof string\\n )\\n }\\n\\n const len = string.length\\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\\n if (!mustMatch && len === 0) return 0\\n\\n // Use a for loop to avoid recursion\\n let loweredCase = false\\n for (;;) {\\n switch (encoding) {\\n case 'ascii':\\n case 'latin1':\\n case 'binary':\\n return len\\n case 'utf8':\\n case 'utf-8':\\n return utf8ToBytes(string).length\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return len * 2\\n case 'hex':\\n return len >>> 1\\n case 'base64':\\n return base64ToBytes(string).length\\n default:\\n if (loweredCase) {\\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\\n }\\n encoding = ('' + encoding).toLowerCase()\\n loweredCase = true\\n }\\n }\\n}\\nBuffer.byteLength = byteLength\\n\\nfunction slowToString (encoding, start, end) {\\n let loweredCase = false\\n\\n // No need to verify that \\\"this.length <= MAX_UINT32\\\" since it's a read-only\\n // property of a typed array.\\n\\n // This behaves neither like String nor Uint8Array in that we set start/end\\n // to their upper/lower bounds if the value passed is out of range.\\n // undefined is handled specially as per ECMA-262 6th Edition,\\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\\n if (start === undefined || start < 0) {\\n start = 0\\n }\\n // Return early if start > this.length. Done here to prevent potential uint32\\n // coercion fail below.\\n if (start > this.length) {\\n return ''\\n }\\n\\n if (end === undefined || end > this.length) {\\n end = this.length\\n }\\n\\n if (end <= 0) {\\n return ''\\n }\\n\\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\\n end >>>= 0\\n start >>>= 0\\n\\n if (end <= start) {\\n return ''\\n }\\n\\n if (!encoding) encoding = 'utf8'\\n\\n while (true) {\\n switch (encoding) {\\n case 'hex':\\n return hexSlice(this, start, end)\\n\\n case 'utf8':\\n case 'utf-8':\\n return utf8Slice(this, start, end)\\n\\n case 'ascii':\\n return asciiSlice(this, start, end)\\n\\n case 'latin1':\\n case 'binary':\\n return latin1Slice(this, start, end)\\n\\n case 'base64':\\n return base64Slice(this, start, end)\\n\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return utf16leSlice(this, start, end)\\n\\n default:\\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\\n encoding = (encoding + '').toLowerCase()\\n loweredCase = true\\n }\\n }\\n}\\n\\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\\n// reliably in a browserify context because there could be multiple different\\n// copies of the 'buffer' package in use. This method works even for Buffer\\n// instances that were created from another copy of the `buffer` package.\\n// See: https://github.com/feross/buffer/issues/154\\nBuffer.prototype._isBuffer = true\\n\\nfunction swap (b, n, m) {\\n const i = b[n]\\n b[n] = b[m]\\n b[m] = i\\n}\\n\\nBuffer.prototype.swap16 = function swap16 () {\\n const len = this.length\\n if (len % 2 !== 0) {\\n throw new RangeError('Buffer size must be a multiple of 16-bits')\\n }\\n for (let i = 0; i < len; i += 2) {\\n swap(this, i, i + 1)\\n }\\n return this\\n}\\n\\nBuffer.prototype.swap32 = function swap32 () {\\n const len = this.length\\n if (len % 4 !== 0) {\\n throw new RangeError('Buffer size must be a multiple of 32-bits')\\n }\\n for (let i = 0; i < len; i += 4) {\\n swap(this, i, i + 3)\\n swap(this, i + 1, i + 2)\\n }\\n return this\\n}\\n\\nBuffer.prototype.swap64 = function swap64 () {\\n const len = this.length\\n if (len % 8 !== 0) {\\n throw new RangeError('Buffer size must be a multiple of 64-bits')\\n }\\n for (let i = 0; i < len; i += 8) {\\n swap(this, i, i + 7)\\n swap(this, i + 1, i + 6)\\n swap(this, i + 2, i + 5)\\n swap(this, i + 3, i + 4)\\n }\\n return this\\n}\\n\\nBuffer.prototype.toString = function toString () {\\n const length = this.length\\n if (length === 0) return ''\\n if (arguments.length === 0) return utf8Slice(this, 0, length)\\n return slowToString.apply(this, arguments)\\n}\\n\\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\\n\\nBuffer.prototype.equals = function equals (b) {\\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\\n if (this === b) return true\\n return Buffer.compare(this, b) === 0\\n}\\n\\nBuffer.prototype.inspect = function inspect () {\\n let str = ''\\n const max = exports.INSPECT_MAX_BYTES\\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\\n if (this.length > max) str += ' ... '\\n return ''\\n}\\nif (customInspectSymbol) {\\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\\n}\\n\\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\\n if (isInstance(target, Uint8Array)) {\\n target = Buffer.from(target, target.offset, target.byteLength)\\n }\\n if (!Buffer.isBuffer(target)) {\\n throw new TypeError(\\n 'The \\\"target\\\" argument must be one of type Buffer or Uint8Array. ' +\\n 'Received type ' + (typeof target)\\n )\\n }\\n\\n if (start === undefined) {\\n start = 0\\n }\\n if (end === undefined) {\\n end = target ? target.length : 0\\n }\\n if (thisStart === undefined) {\\n thisStart = 0\\n }\\n if (thisEnd === undefined) {\\n thisEnd = this.length\\n }\\n\\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\\n throw new RangeError('out of range index')\\n }\\n\\n if (thisStart >= thisEnd && start >= end) {\\n return 0\\n }\\n if (thisStart >= thisEnd) {\\n return -1\\n }\\n if (start >= end) {\\n return 1\\n }\\n\\n start >>>= 0\\n end >>>= 0\\n thisStart >>>= 0\\n thisEnd >>>= 0\\n\\n if (this === target) return 0\\n\\n let x = thisEnd - thisStart\\n let y = end - start\\n const len = Math.min(x, y)\\n\\n const thisCopy = this.slice(thisStart, thisEnd)\\n const targetCopy = target.slice(start, end)\\n\\n for (let i = 0; i < len; ++i) {\\n if (thisCopy[i] !== targetCopy[i]) {\\n x = thisCopy[i]\\n y = targetCopy[i]\\n break\\n }\\n }\\n\\n if (x < y) return -1\\n if (y < x) return 1\\n return 0\\n}\\n\\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\\n//\\n// Arguments:\\n// - buffer - a Buffer to search\\n// - val - a string, Buffer, or number\\n// - byteOffset - an index into `buffer`; will be clamped to an int32\\n// - encoding - an optional encoding, relevant is val is a string\\n// - dir - true for indexOf, false for lastIndexOf\\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\\n // Empty buffer means no match\\n if (buffer.length === 0) return -1\\n\\n // Normalize byteOffset\\n if (typeof byteOffset === 'string') {\\n encoding = byteOffset\\n byteOffset = 0\\n } else if (byteOffset > 0x7fffffff) {\\n byteOffset = 0x7fffffff\\n } else if (byteOffset < -0x80000000) {\\n byteOffset = -0x80000000\\n }\\n byteOffset = +byteOffset // Coerce to Number.\\n if (numberIsNaN(byteOffset)) {\\n // byteOffset: it it's undefined, null, NaN, \\\"foo\\\", etc, search whole buffer\\n byteOffset = dir ? 0 : (buffer.length - 1)\\n }\\n\\n // Normalize byteOffset: negative offsets start from the end of the buffer\\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\\n if (byteOffset >= buffer.length) {\\n if (dir) return -1\\n else byteOffset = buffer.length - 1\\n } else if (byteOffset < 0) {\\n if (dir) byteOffset = 0\\n else return -1\\n }\\n\\n // Normalize val\\n if (typeof val === 'string') {\\n val = Buffer.from(val, encoding)\\n }\\n\\n // Finally, search either indexOf (if dir is true) or lastIndexOf\\n if (Buffer.isBuffer(val)) {\\n // Special case: looking for empty string/buffer always fails\\n if (val.length === 0) {\\n return -1\\n }\\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\\n } else if (typeof val === 'number') {\\n val = val & 0xFF // Search for a byte value [0-255]\\n if (typeof Uint8Array.prototype.indexOf === 'function') {\\n if (dir) {\\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\\n } else {\\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\\n }\\n }\\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\\n }\\n\\n throw new TypeError('val must be string, number or Buffer')\\n}\\n\\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\\n let indexSize = 1\\n let arrLength = arr.length\\n let valLength = val.length\\n\\n if (encoding !== undefined) {\\n encoding = String(encoding).toLowerCase()\\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\\n encoding === 'utf16le' || encoding === 'utf-16le') {\\n if (arr.length < 2 || val.length < 2) {\\n return -1\\n }\\n indexSize = 2\\n arrLength /= 2\\n valLength /= 2\\n byteOffset /= 2\\n }\\n }\\n\\n function read (buf, i) {\\n if (indexSize === 1) {\\n return buf[i]\\n } else {\\n return buf.readUInt16BE(i * indexSize)\\n }\\n }\\n\\n let i\\n if (dir) {\\n let foundIndex = -1\\n for (i = byteOffset; i < arrLength; i++) {\\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\\n if (foundIndex === -1) foundIndex = i\\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\\n } else {\\n if (foundIndex !== -1) i -= i - foundIndex\\n foundIndex = -1\\n }\\n }\\n } else {\\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\\n for (i = byteOffset; i >= 0; i--) {\\n let found = true\\n for (let j = 0; j < valLength; j++) {\\n if (read(arr, i + j) !== read(val, j)) {\\n found = false\\n break\\n }\\n }\\n if (found) return i\\n }\\n }\\n\\n return -1\\n}\\n\\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\\n return this.indexOf(val, byteOffset, encoding) !== -1\\n}\\n\\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\\n}\\n\\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\\n}\\n\\nfunction hexWrite (buf, string, offset, length) {\\n offset = Number(offset) || 0\\n const remaining = buf.length - offset\\n if (!length) {\\n length = remaining\\n } else {\\n length = Number(length)\\n if (length > remaining) {\\n length = remaining\\n }\\n }\\n\\n const strLen = string.length\\n\\n if (length > strLen / 2) {\\n length = strLen / 2\\n }\\n let i\\n for (i = 0; i < length; ++i) {\\n const parsed = parseInt(string.substr(i * 2, 2), 16)\\n if (numberIsNaN(parsed)) return i\\n buf[offset + i] = parsed\\n }\\n return i\\n}\\n\\nfunction utf8Write (buf, string, offset, length) {\\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\\n}\\n\\nfunction asciiWrite (buf, string, offset, length) {\\n return blitBuffer(asciiToBytes(string), buf, offset, length)\\n}\\n\\nfunction base64Write (buf, string, offset, length) {\\n return blitBuffer(base64ToBytes(string), buf, offset, length)\\n}\\n\\nfunction ucs2Write (buf, string, offset, length) {\\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\\n}\\n\\nBuffer.prototype.write = function write (string, offset, length, encoding) {\\n // Buffer#write(string)\\n if (offset === undefined) {\\n encoding = 'utf8'\\n length = this.length\\n offset = 0\\n // Buffer#write(string, encoding)\\n } else if (length === undefined && typeof offset === 'string') {\\n encoding = offset\\n length = this.length\\n offset = 0\\n // Buffer#write(string, offset[, length][, encoding])\\n } else if (isFinite(offset)) {\\n offset = offset >>> 0\\n if (isFinite(length)) {\\n length = length >>> 0\\n if (encoding === undefined) encoding = 'utf8'\\n } else {\\n encoding = length\\n length = undefined\\n }\\n } else {\\n throw new Error(\\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\\n )\\n }\\n\\n const remaining = this.length - offset\\n if (length === undefined || length > remaining) length = remaining\\n\\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\\n throw new RangeError('Attempt to write outside buffer bounds')\\n }\\n\\n if (!encoding) encoding = 'utf8'\\n\\n let loweredCase = false\\n for (;;) {\\n switch (encoding) {\\n case 'hex':\\n return hexWrite(this, string, offset, length)\\n\\n case 'utf8':\\n case 'utf-8':\\n return utf8Write(this, string, offset, length)\\n\\n case 'ascii':\\n case 'latin1':\\n case 'binary':\\n return asciiWrite(this, string, offset, length)\\n\\n case 'base64':\\n // Warning: maxLength not taken into account in base64Write\\n return base64Write(this, string, offset, length)\\n\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return ucs2Write(this, string, offset, length)\\n\\n default:\\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\\n encoding = ('' + encoding).toLowerCase()\\n loweredCase = true\\n }\\n }\\n}\\n\\nBuffer.prototype.toJSON = function toJSON () {\\n return {\\n type: 'Buffer',\\n data: Array.prototype.slice.call(this._arr || this, 0)\\n }\\n}\\n\\nfunction base64Slice (buf, start, end) {\\n if (start === 0 && end === buf.length) {\\n return base64.fromByteArray(buf)\\n } else {\\n return base64.fromByteArray(buf.slice(start, end))\\n }\\n}\\n\\nfunction utf8Slice (buf, start, end) {\\n end = Math.min(buf.length, end)\\n const res = []\\n\\n let i = start\\n while (i < end) {\\n const firstByte = buf[i]\\n let codePoint = null\\n let bytesPerSequence = (firstByte > 0xEF)\\n ? 4\\n : (firstByte > 0xDF)\\n ? 3\\n : (firstByte > 0xBF)\\n ? 2\\n : 1\\n\\n if (i + bytesPerSequence <= end) {\\n let secondByte, thirdByte, fourthByte, tempCodePoint\\n\\n switch (bytesPerSequence) {\\n case 1:\\n if (firstByte < 0x80) {\\n codePoint = firstByte\\n }\\n break\\n case 2:\\n secondByte = buf[i + 1]\\n if ((secondByte & 0xC0) === 0x80) {\\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\\n if (tempCodePoint > 0x7F) {\\n codePoint = tempCodePoint\\n }\\n }\\n break\\n case 3:\\n secondByte = buf[i + 1]\\n thirdByte = buf[i + 2]\\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\\n codePoint = tempCodePoint\\n }\\n }\\n break\\n case 4:\\n secondByte = buf[i + 1]\\n thirdByte = buf[i + 2]\\n fourthByte = buf[i + 3]\\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\\n codePoint = tempCodePoint\\n }\\n }\\n }\\n }\\n\\n if (codePoint === null) {\\n // we did not generate a valid codePoint so insert a\\n // replacement char (U+FFFD) and advance only 1 byte\\n codePoint = 0xFFFD\\n bytesPerSequence = 1\\n } else if (codePoint > 0xFFFF) {\\n // encode to utf16 (surrogate pair dance)\\n codePoint -= 0x10000\\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\\n codePoint = 0xDC00 | codePoint & 0x3FF\\n }\\n\\n res.push(codePoint)\\n i += bytesPerSequence\\n }\\n\\n return decodeCodePointsArray(res)\\n}\\n\\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\\n// the lowest limit is Chrome, with 0x10000 args.\\n// We go 1 magnitude less, for safety\\nconst MAX_ARGUMENTS_LENGTH = 0x1000\\n\\nfunction decodeCodePointsArray (codePoints) {\\n const len = codePoints.length\\n if (len <= MAX_ARGUMENTS_LENGTH) {\\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\\n }\\n\\n // Decode in chunks to avoid \\\"call stack size exceeded\\\".\\n let res = ''\\n let i = 0\\n while (i < len) {\\n res += String.fromCharCode.apply(\\n String,\\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\\n )\\n }\\n return res\\n}\\n\\nfunction asciiSlice (buf, start, end) {\\n let ret = ''\\n end = Math.min(buf.length, end)\\n\\n for (let i = start; i < end; ++i) {\\n ret += String.fromCharCode(buf[i] & 0x7F)\\n }\\n return ret\\n}\\n\\nfunction latin1Slice (buf, start, end) {\\n let ret = ''\\n end = Math.min(buf.length, end)\\n\\n for (let i = start; i < end; ++i) {\\n ret += String.fromCharCode(buf[i])\\n }\\n return ret\\n}\\n\\nfunction hexSlice (buf, start, end) {\\n const len = buf.length\\n\\n if (!start || start < 0) start = 0\\n if (!end || end < 0 || end > len) end = len\\n\\n let out = ''\\n for (let i = start; i < end; ++i) {\\n out += hexSliceLookupTable[buf[i]]\\n }\\n return out\\n}\\n\\nfunction utf16leSlice (buf, start, end) {\\n const bytes = buf.slice(start, end)\\n let res = ''\\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\\n for (let i = 0; i < bytes.length - 1; i += 2) {\\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\\n }\\n return res\\n}\\n\\nBuffer.prototype.slice = function slice (start, end) {\\n const len = this.length\\n start = ~~start\\n end = end === undefined ? len : ~~end\\n\\n if (start < 0) {\\n start += len\\n if (start < 0) start = 0\\n } else if (start > len) {\\n start = len\\n }\\n\\n if (end < 0) {\\n end += len\\n if (end < 0) end = 0\\n } else if (end > len) {\\n end = len\\n }\\n\\n if (end < start) end = start\\n\\n const newBuf = this.subarray(start, end)\\n // Return an augmented `Uint8Array` instance\\n Object.setPrototypeOf(newBuf, Buffer.prototype)\\n\\n return newBuf\\n}\\n\\n/*\\n * Need to make sure that buffer isn't trying to write out of bounds.\\n */\\nfunction checkOffset (offset, ext, length) {\\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\\n}\\n\\nBuffer.prototype.readUintLE =\\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\\n offset = offset >>> 0\\n byteLength = byteLength >>> 0\\n if (!noAssert) checkOffset(offset, byteLength, this.length)\\n\\n let val = this[offset]\\n let mul = 1\\n let i = 0\\n while (++i < byteLength && (mul *= 0x100)) {\\n val += this[offset + i] * mul\\n }\\n\\n return val\\n}\\n\\nBuffer.prototype.readUintBE =\\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\\n offset = offset >>> 0\\n byteLength = byteLength >>> 0\\n if (!noAssert) {\\n checkOffset(offset, byteLength, this.length)\\n }\\n\\n let val = this[offset + --byteLength]\\n let mul = 1\\n while (byteLength > 0 && (mul *= 0x100)) {\\n val += this[offset + --byteLength] * mul\\n }\\n\\n return val\\n}\\n\\nBuffer.prototype.readUint8 =\\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 1, this.length)\\n return this[offset]\\n}\\n\\nBuffer.prototype.readUint16LE =\\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n return this[offset] | (this[offset + 1] << 8)\\n}\\n\\nBuffer.prototype.readUint16BE =\\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n return (this[offset] << 8) | this[offset + 1]\\n}\\n\\nBuffer.prototype.readUint32LE =\\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return ((this[offset]) |\\n (this[offset + 1] << 8) |\\n (this[offset + 2] << 16)) +\\n (this[offset + 3] * 0x1000000)\\n}\\n\\nBuffer.prototype.readUint32BE =\\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return (this[offset] * 0x1000000) +\\n ((this[offset + 1] << 16) |\\n (this[offset + 2] << 8) |\\n this[offset + 3])\\n}\\n\\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\\n offset = offset >>> 0\\n validateNumber(offset, 'offset')\\n const first = this[offset]\\n const last = this[offset + 7]\\n if (first === undefined || last === undefined) {\\n boundsError(offset, this.length - 8)\\n }\\n\\n const lo = first +\\n this[++offset] * 2 ** 8 +\\n this[++offset] * 2 ** 16 +\\n this[++offset] * 2 ** 24\\n\\n const hi = this[++offset] +\\n this[++offset] * 2 ** 8 +\\n this[++offset] * 2 ** 16 +\\n last * 2 ** 24\\n\\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\\n})\\n\\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\\n offset = offset >>> 0\\n validateNumber(offset, 'offset')\\n const first = this[offset]\\n const last = this[offset + 7]\\n if (first === undefined || last === undefined) {\\n boundsError(offset, this.length - 8)\\n }\\n\\n const hi = first * 2 ** 24 +\\n this[++offset] * 2 ** 16 +\\n this[++offset] * 2 ** 8 +\\n this[++offset]\\n\\n const lo = this[++offset] * 2 ** 24 +\\n this[++offset] * 2 ** 16 +\\n this[++offset] * 2 ** 8 +\\n last\\n\\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\\n})\\n\\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\\n offset = offset >>> 0\\n byteLength = byteLength >>> 0\\n if (!noAssert) checkOffset(offset, byteLength, this.length)\\n\\n let val = this[offset]\\n let mul = 1\\n let i = 0\\n while (++i < byteLength && (mul *= 0x100)) {\\n val += this[offset + i] * mul\\n }\\n mul *= 0x80\\n\\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\\n\\n return val\\n}\\n\\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\\n offset = offset >>> 0\\n byteLength = byteLength >>> 0\\n if (!noAssert) checkOffset(offset, byteLength, this.length)\\n\\n let i = byteLength\\n let mul = 1\\n let val = this[offset + --i]\\n while (i > 0 && (mul *= 0x100)) {\\n val += this[offset + --i] * mul\\n }\\n mul *= 0x80\\n\\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\\n\\n return val\\n}\\n\\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 1, this.length)\\n if (!(this[offset] & 0x80)) return (this[offset])\\n return ((0xff - this[offset] + 1) * -1)\\n}\\n\\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n const val = this[offset] | (this[offset + 1] << 8)\\n return (val & 0x8000) ? val | 0xFFFF0000 : val\\n}\\n\\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n const val = this[offset + 1] | (this[offset] << 8)\\n return (val & 0x8000) ? val | 0xFFFF0000 : val\\n}\\n\\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return (this[offset]) |\\n (this[offset + 1] << 8) |\\n (this[offset + 2] << 16) |\\n (this[offset + 3] << 24)\\n}\\n\\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return (this[offset] << 24) |\\n (this[offset + 1] << 16) |\\n (this[offset + 2] << 8) |\\n (this[offset + 3])\\n}\\n\\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\\n offset = offset >>> 0\\n validateNumber(offset, 'offset')\\n const first = this[offset]\\n const last = this[offset + 7]\\n if (first === undefined || last === undefined) {\\n boundsError(offset, this.length - 8)\\n }\\n\\n const val = this[offset + 4] +\\n this[offset + 5] * 2 ** 8 +\\n this[offset + 6] * 2 ** 16 +\\n (last << 24) // Overflow\\n\\n return (BigInt(val) << BigInt(32)) +\\n BigInt(first +\\n this[++offset] * 2 ** 8 +\\n this[++offset] * 2 ** 16 +\\n this[++offset] * 2 ** 24)\\n})\\n\\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\\n offset = offset >>> 0\\n validateNumber(offset, 'offset')\\n const first = this[offset]\\n const last = this[offset + 7]\\n if (first === undefined || last === undefined) {\\n boundsError(offset, this.length - 8)\\n }\\n\\n const val = (first << 24) + // Overflow\\n this[++offset] * 2 ** 16 +\\n this[++offset] * 2 ** 8 +\\n this[++offset]\\n\\n return (BigInt(val) << BigInt(32)) +\\n BigInt(this[++offset] * 2 ** 24 +\\n this[++offset] * 2 ** 16 +\\n this[++offset] * 2 ** 8 +\\n last)\\n})\\n\\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n return ieee754.read(this, offset, true, 23, 4)\\n}\\n\\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n return ieee754.read(this, offset, false, 23, 4)\\n}\\n\\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 8, this.length)\\n return ieee754.read(this, offset, true, 52, 8)\\n}\\n\\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 8, this.length)\\n return ieee754.read(this, offset, false, 52, 8)\\n}\\n\\nfunction checkInt (buf, value, offset, ext, max, min) {\\n if (!Buffer.isBuffer(buf)) throw new TypeError('\\\"buffer\\\" argument must be a Buffer instance')\\n if (value > max || value < min) throw new RangeError('\\\"value\\\" argument is out of bounds')\\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\\n}\\n\\nBuffer.prototype.writeUintLE =\\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n byteLength = byteLength >>> 0\\n if (!noAssert) {\\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\\n checkInt(this, value, offset, byteLength, maxBytes, 0)\\n }\\n\\n let mul = 1\\n let i = 0\\n this[offset] = value & 0xFF\\n while (++i < byteLength && (mul *= 0x100)) {\\n this[offset + i] = (value / mul) & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeUintBE =\\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n byteLength = byteLength >>> 0\\n if (!noAssert) {\\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\\n checkInt(this, value, offset, byteLength, maxBytes, 0)\\n }\\n\\n let i = byteLength - 1\\n let mul = 1\\n this[offset + i] = value & 0xFF\\n while (--i >= 0 && (mul *= 0x100)) {\\n this[offset + i] = (value / mul) & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeUint8 =\\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\\n this[offset] = (value & 0xff)\\n return offset + 1\\n}\\n\\nBuffer.prototype.writeUint16LE =\\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\\n this[offset] = (value & 0xff)\\n this[offset + 1] = (value >>> 8)\\n return offset + 2\\n}\\n\\nBuffer.prototype.writeUint16BE =\\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\\n this[offset] = (value >>> 8)\\n this[offset + 1] = (value & 0xff)\\n return offset + 2\\n}\\n\\nBuffer.prototype.writeUint32LE =\\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\\n this[offset + 3] = (value >>> 24)\\n this[offset + 2] = (value >>> 16)\\n this[offset + 1] = (value >>> 8)\\n this[offset] = (value & 0xff)\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeUint32BE =\\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\\n this[offset] = (value >>> 24)\\n this[offset + 1] = (value >>> 16)\\n this[offset + 2] = (value >>> 8)\\n this[offset + 3] = (value & 0xff)\\n return offset + 4\\n}\\n\\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\\n checkIntBI(value, min, max, buf, offset, 7)\\n\\n let lo = Number(value & BigInt(0xffffffff))\\n buf[offset++] = lo\\n lo = lo >> 8\\n buf[offset++] = lo\\n lo = lo >> 8\\n buf[offset++] = lo\\n lo = lo >> 8\\n buf[offset++] = lo\\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\\n buf[offset++] = hi\\n hi = hi >> 8\\n buf[offset++] = hi\\n hi = hi >> 8\\n buf[offset++] = hi\\n hi = hi >> 8\\n buf[offset++] = hi\\n return offset\\n}\\n\\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\\n checkIntBI(value, min, max, buf, offset, 7)\\n\\n let lo = Number(value & BigInt(0xffffffff))\\n buf[offset + 7] = lo\\n lo = lo >> 8\\n buf[offset + 6] = lo\\n lo = lo >> 8\\n buf[offset + 5] = lo\\n lo = lo >> 8\\n buf[offset + 4] = lo\\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\\n buf[offset + 3] = hi\\n hi = hi >> 8\\n buf[offset + 2] = hi\\n hi = hi >> 8\\n buf[offset + 1] = hi\\n hi = hi >> 8\\n buf[offset] = hi\\n return offset + 8\\n}\\n\\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\\n})\\n\\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\\n})\\n\\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) {\\n const limit = Math.pow(2, (8 * byteLength) - 1)\\n\\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\\n }\\n\\n let i = 0\\n let mul = 1\\n let sub = 0\\n this[offset] = value & 0xFF\\n while (++i < byteLength && (mul *= 0x100)) {\\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\\n sub = 1\\n }\\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) {\\n const limit = Math.pow(2, (8 * byteLength) - 1)\\n\\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\\n }\\n\\n let i = byteLength - 1\\n let mul = 1\\n let sub = 0\\n this[offset + i] = value & 0xFF\\n while (--i >= 0 && (mul *= 0x100)) {\\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\\n sub = 1\\n }\\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\\n if (value < 0) value = 0xff + value + 1\\n this[offset] = (value & 0xff)\\n return offset + 1\\n}\\n\\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\\n this[offset] = (value & 0xff)\\n this[offset + 1] = (value >>> 8)\\n return offset + 2\\n}\\n\\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\\n this[offset] = (value >>> 8)\\n this[offset + 1] = (value & 0xff)\\n return offset + 2\\n}\\n\\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\\n this[offset] = (value & 0xff)\\n this[offset + 1] = (value >>> 8)\\n this[offset + 2] = (value >>> 16)\\n this[offset + 3] = (value >>> 24)\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\\n if (value < 0) value = 0xffffffff + value + 1\\n this[offset] = (value >>> 24)\\n this[offset + 1] = (value >>> 16)\\n this[offset + 2] = (value >>> 8)\\n this[offset + 3] = (value & 0xff)\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\\n})\\n\\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\\n})\\n\\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\\n if (offset < 0) throw new RangeError('Index out of range')\\n}\\n\\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) {\\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\\n }\\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\\n return writeFloat(this, value, offset, true, noAssert)\\n}\\n\\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\\n return writeFloat(this, value, offset, false, noAssert)\\n}\\n\\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) {\\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\\n }\\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\\n return offset + 8\\n}\\n\\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\\n return writeDouble(this, value, offset, true, noAssert)\\n}\\n\\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\\n return writeDouble(this, value, offset, false, noAssert)\\n}\\n\\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\\n if (!start) start = 0\\n if (!end && end !== 0) end = this.length\\n if (targetStart >= target.length) targetStart = target.length\\n if (!targetStart) targetStart = 0\\n if (end > 0 && end < start) end = start\\n\\n // Copy 0 bytes; we're done\\n if (end === start) return 0\\n if (target.length === 0 || this.length === 0) return 0\\n\\n // Fatal error conditions\\n if (targetStart < 0) {\\n throw new RangeError('targetStart out of bounds')\\n }\\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\\n\\n // Are we oob?\\n if (end > this.length) end = this.length\\n if (target.length - targetStart < end - start) {\\n end = target.length - targetStart + start\\n }\\n\\n const len = end - start\\n\\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\\n // Use built-in when available, missing from IE11\\n this.copyWithin(targetStart, start, end)\\n } else {\\n Uint8Array.prototype.set.call(\\n target,\\n this.subarray(start, end),\\n targetStart\\n )\\n }\\n\\n return len\\n}\\n\\n// Usage:\\n// buffer.fill(number[, offset[, end]])\\n// buffer.fill(buffer[, offset[, end]])\\n// buffer.fill(string[, offset[, end]][, encoding])\\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\\n // Handle string cases:\\n if (typeof val === 'string') {\\n if (typeof start === 'string') {\\n encoding = start\\n start = 0\\n end = this.length\\n } else if (typeof end === 'string') {\\n encoding = end\\n end = this.length\\n }\\n if (encoding !== undefined && typeof encoding !== 'string') {\\n throw new TypeError('encoding must be a string')\\n }\\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\\n throw new TypeError('Unknown encoding: ' + encoding)\\n }\\n if (val.length === 1) {\\n const code = val.charCodeAt(0)\\n if ((encoding === 'utf8' && code < 128) ||\\n encoding === 'latin1') {\\n // Fast path: If `val` fits into a single byte, use that numeric value.\\n val = code\\n }\\n }\\n } else if (typeof val === 'number') {\\n val = val & 255\\n } else if (typeof val === 'boolean') {\\n val = Number(val)\\n }\\n\\n // Invalid ranges are not set to a default, so can range check early.\\n if (start < 0 || this.length < start || this.length < end) {\\n throw new RangeError('Out of range index')\\n }\\n\\n if (end <= start) {\\n return this\\n }\\n\\n start = start >>> 0\\n end = end === undefined ? this.length : end >>> 0\\n\\n if (!val) val = 0\\n\\n let i\\n if (typeof val === 'number') {\\n for (i = start; i < end; ++i) {\\n this[i] = val\\n }\\n } else {\\n const bytes = Buffer.isBuffer(val)\\n ? val\\n : Buffer.from(val, encoding)\\n const len = bytes.length\\n if (len === 0) {\\n throw new TypeError('The value \\\"' + val +\\n '\\\" is invalid for argument \\\"value\\\"')\\n }\\n for (i = 0; i < end - start; ++i) {\\n this[i + start] = bytes[i % len]\\n }\\n }\\n\\n return this\\n}\\n\\n// CUSTOM ERRORS\\n// =============\\n\\n// Simplified versions from Node, changed for Buffer-only usage\\nconst errors = {}\\nfunction E (sym, getMessage, Base) {\\n errors[sym] = class NodeError extends Base {\\n constructor () {\\n super()\\n\\n Object.defineProperty(this, 'message', {\\n value: getMessage.apply(this, arguments),\\n writable: true,\\n configurable: true\\n })\\n\\n // Add the error code to the name to include it in the stack trace.\\n this.name = `${this.name} [${sym}]`\\n // Access the stack to generate the error message including the error code\\n // from the name.\\n this.stack // eslint-disable-line no-unused-expressions\\n // Reset the name to the actual name.\\n delete this.name\\n }\\n\\n get code () {\\n return sym\\n }\\n\\n set code (value) {\\n Object.defineProperty(this, 'code', {\\n configurable: true,\\n enumerable: true,\\n value,\\n writable: true\\n })\\n }\\n\\n toString () {\\n return `${this.name} [${sym}]: ${this.message}`\\n }\\n }\\n}\\n\\nE('ERR_BUFFER_OUT_OF_BOUNDS',\\n function (name) {\\n if (name) {\\n return `${name} is outside of buffer bounds`\\n }\\n\\n return 'Attempt to access memory outside buffer bounds'\\n }, RangeError)\\nE('ERR_INVALID_ARG_TYPE',\\n function (name, actual) {\\n return `The \\\"${name}\\\" argument must be of type number. Received type ${typeof actual}`\\n }, TypeError)\\nE('ERR_OUT_OF_RANGE',\\n function (str, range, input) {\\n let msg = `The value of \\\"${str}\\\" is out of range.`\\n let received = input\\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\\n received = addNumericalSeparator(String(input))\\n } else if (typeof input === 'bigint') {\\n received = String(input)\\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\\n received = addNumericalSeparator(received)\\n }\\n received += 'n'\\n }\\n msg += ` It must be ${range}. Received ${received}`\\n return msg\\n }, RangeError)\\n\\nfunction addNumericalSeparator (val) {\\n let res = ''\\n let i = val.length\\n const start = val[0] === '-' ? 1 : 0\\n for (; i >= start + 4; i -= 3) {\\n res = `_${val.slice(i - 3, i)}${res}`\\n }\\n return `${val.slice(0, i)}${res}`\\n}\\n\\n// CHECK FUNCTIONS\\n// ===============\\n\\nfunction checkBounds (buf, offset, byteLength) {\\n validateNumber(offset, 'offset')\\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\\n boundsError(offset, buf.length - (byteLength + 1))\\n }\\n}\\n\\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\\n if (value > max || value < min) {\\n const n = typeof min === 'bigint' ? 'n' : ''\\n let range\\n if (byteLength > 3) {\\n if (min === 0 || min === BigInt(0)) {\\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\\n } else {\\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\\n `${(byteLength + 1) * 8 - 1}${n}`\\n }\\n } else {\\n range = `>= ${min}${n} and <= ${max}${n}`\\n }\\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\\n }\\n checkBounds(buf, offset, byteLength)\\n}\\n\\nfunction validateNumber (value, name) {\\n if (typeof value !== 'number') {\\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\\n }\\n}\\n\\nfunction boundsError (value, length, type) {\\n if (Math.floor(value) !== value) {\\n validateNumber(value, type)\\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\\n }\\n\\n if (length < 0) {\\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\\n }\\n\\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\\n `>= ${type ? 1 : 0} and <= ${length}`,\\n value)\\n}\\n\\n// HELPER FUNCTIONS\\n// ================\\n\\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\\n\\nfunction base64clean (str) {\\n // Node takes equal signs as end of the Base64 encoding\\n str = str.split('=')[0]\\n // Node strips out invalid characters like \\\\n and \\\\t from the string, base64-js does not\\n str = str.trim().replace(INVALID_BASE64_RE, '')\\n // Node converts strings with length < 2 to ''\\n if (str.length < 2) return ''\\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\\n while (str.length % 4 !== 0) {\\n str = str + '='\\n }\\n return str\\n}\\n\\nfunction utf8ToBytes (string, units) {\\n units = units || Infinity\\n let codePoint\\n const length = string.length\\n let leadSurrogate = null\\n const bytes = []\\n\\n for (let i = 0; i < length; ++i) {\\n codePoint = string.charCodeAt(i)\\n\\n // is surrogate component\\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\\n // last char was a lead\\n if (!leadSurrogate) {\\n // no lead yet\\n if (codePoint > 0xDBFF) {\\n // unexpected trail\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n continue\\n } else if (i + 1 === length) {\\n // unpaired lead\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n continue\\n }\\n\\n // valid lead\\n leadSurrogate = codePoint\\n\\n continue\\n }\\n\\n // 2 leads in a row\\n if (codePoint < 0xDC00) {\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n leadSurrogate = codePoint\\n continue\\n }\\n\\n // valid surrogate pair\\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\\n } else if (leadSurrogate) {\\n // valid bmp char, but last char was a lead\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n }\\n\\n leadSurrogate = null\\n\\n // encode utf8\\n if (codePoint < 0x80) {\\n if ((units -= 1) < 0) break\\n bytes.push(codePoint)\\n } else if (codePoint < 0x800) {\\n if ((units -= 2) < 0) break\\n bytes.push(\\n codePoint >> 0x6 | 0xC0,\\n codePoint & 0x3F | 0x80\\n )\\n } else if (codePoint < 0x10000) {\\n if ((units -= 3) < 0) break\\n bytes.push(\\n codePoint >> 0xC | 0xE0,\\n codePoint >> 0x6 & 0x3F | 0x80,\\n codePoint & 0x3F | 0x80\\n )\\n } else if (codePoint < 0x110000) {\\n if ((units -= 4) < 0) break\\n bytes.push(\\n codePoint >> 0x12 | 0xF0,\\n codePoint >> 0xC & 0x3F | 0x80,\\n codePoint >> 0x6 & 0x3F | 0x80,\\n codePoint & 0x3F | 0x80\\n )\\n } else {\\n throw new Error('Invalid code point')\\n }\\n }\\n\\n return bytes\\n}\\n\\nfunction asciiToBytes (str) {\\n const byteArray = []\\n for (let i = 0; i < str.length; ++i) {\\n // Node's code seems to be doing this and not & 0x7F..\\n byteArray.push(str.charCodeAt(i) & 0xFF)\\n }\\n return byteArray\\n}\\n\\nfunction utf16leToBytes (str, units) {\\n let c, hi, lo\\n const byteArray = []\\n for (let i = 0; i < str.length; ++i) {\\n if ((units -= 2) < 0) break\\n\\n c = str.charCodeAt(i)\\n hi = c >> 8\\n lo = c % 256\\n byteArray.push(lo)\\n byteArray.push(hi)\\n }\\n\\n return byteArray\\n}\\n\\nfunction base64ToBytes (str) {\\n return base64.toByteArray(base64clean(str))\\n}\\n\\nfunction blitBuffer (src, dst, offset, length) {\\n let i\\n for (i = 0; i < length; ++i) {\\n if ((i + offset >= dst.length) || (i >= src.length)) break\\n dst[i + offset] = src[i]\\n }\\n return i\\n}\\n\\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\\n// the `instanceof` check but they should be treated as of that type.\\n// See: https://github.com/feross/buffer/issues/166\\nfunction isInstance (obj, type) {\\n return obj instanceof type ||\\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\\n obj.constructor.name === type.name)\\n}\\nfunction numberIsNaN (obj) {\\n // For IE11 support\\n return obj !== obj // eslint-disable-line no-self-compare\\n}\\n\\n// Create lookup table for `toString('hex')`\\n// See: https://github.com/feross/buffer/issues/219\\nconst hexSliceLookupTable = (function () {\\n const alphabet = '0123456789abcdef'\\n const table = new Array(256)\\n for (let i = 0; i < 16; ++i) {\\n const i16 = i * 16\\n for (let j = 0; j < 16; ++j) {\\n table[i16 + j] = alphabet[i] + alphabet[j]\\n }\\n }\\n return table\\n})()\\n\\n// Return not function with Error if BigInt not supported\\nfunction defineBigIntMethod (fn) {\\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\\n}\\n\\nfunction BufferBigIntNotDefined () {\\n throw new Error('BigInt not supported')\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/buffer/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/detect-browser/es/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/detect-browser/es/index.js ***!\n \\*************************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ BotInfo: () => (/* binding */ BotInfo),\\n/* harmony export */ BrowserInfo: () => (/* binding */ BrowserInfo),\\n/* harmony export */ NodeInfo: () => (/* binding */ NodeInfo),\\n/* harmony export */ ReactNativeInfo: () => (/* binding */ ReactNativeInfo),\\n/* harmony export */ SearchBotDeviceInfo: () => (/* binding */ SearchBotDeviceInfo),\\n/* harmony export */ browserName: () => (/* binding */ browserName),\\n/* harmony export */ detect: () => (/* binding */ detect),\\n/* harmony export */ detectOS: () => (/* binding */ detectOS),\\n/* harmony export */ getNodeVersion: () => (/* binding */ getNodeVersion),\\n/* harmony export */ parseUserAgent: () => (/* binding */ parseUserAgent)\\n/* harmony export */ });\\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\\n if (ar || !(i in from)) {\\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\\n ar[i] = from[i];\\n }\\n }\\n return to.concat(ar || Array.prototype.slice.call(from));\\n};\\nvar BrowserInfo = /** @class */ (function () {\\n function BrowserInfo(name, version, os) {\\n this.name = name;\\n this.version = version;\\n this.os = os;\\n this.type = 'browser';\\n }\\n return BrowserInfo;\\n}());\\n\\nvar NodeInfo = /** @class */ (function () {\\n function NodeInfo(version) {\\n this.version = version;\\n this.type = 'node';\\n this.name = 'node';\\n this.os = process.platform;\\n }\\n return NodeInfo;\\n}());\\n\\nvar SearchBotDeviceInfo = /** @class */ (function () {\\n function SearchBotDeviceInfo(name, version, os, bot) {\\n this.name = name;\\n this.version = version;\\n this.os = os;\\n this.bot = bot;\\n this.type = 'bot-device';\\n }\\n return SearchBotDeviceInfo;\\n}());\\n\\nvar BotInfo = /** @class */ (function () {\\n function BotInfo() {\\n this.type = 'bot';\\n this.bot = true; // NOTE: deprecated test name instead\\n this.name = 'bot';\\n this.version = null;\\n this.os = null;\\n }\\n return BotInfo;\\n}());\\n\\nvar ReactNativeInfo = /** @class */ (function () {\\n function ReactNativeInfo() {\\n this.type = 'react-native';\\n this.name = 'react-native';\\n this.version = null;\\n this.os = null;\\n }\\n return ReactNativeInfo;\\n}());\\n\\n// tslint:disable-next-line:max-line-length\\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\\\ Jeeves\\\\/Teoma|ia_archiver)/;\\nvar REQUIRED_VERSION_PARTS = 3;\\nvar userAgentRules = [\\n ['aol', /AOLShield\\\\/([0-9\\\\._]+)/],\\n ['edge', /Edge\\\\/([0-9\\\\._]+)/],\\n ['edge-ios', /EdgiOS\\\\/([0-9\\\\._]+)/],\\n ['yandexbrowser', /YaBrowser\\\\/([0-9\\\\._]+)/],\\n ['kakaotalk', /KAKAOTALK\\\\s([0-9\\\\.]+)/],\\n ['samsung', /SamsungBrowser\\\\/([0-9\\\\.]+)/],\\n ['silk', /\\\\bSilk\\\\/([0-9._-]+)\\\\b/],\\n ['miui', /MiuiBrowser\\\\/([0-9\\\\.]+)$/],\\n ['beaker', /BeakerBrowser\\\\/([0-9\\\\.]+)/],\\n ['edge-chromium', /EdgA?\\\\/([0-9\\\\.]+)/],\\n [\\n 'chromium-webview',\\n /(?!Chrom.*OPR)wv\\\\).*Chrom(?:e|ium)\\\\/([0-9\\\\.]+)(:?\\\\s|$)/,\\n ],\\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\\\/([0-9\\\\.]+)(:?\\\\s|$)/],\\n ['phantomjs', /PhantomJS\\\\/([0-9\\\\.]+)(:?\\\\s|$)/],\\n ['crios', /CriOS\\\\/([0-9\\\\.]+)(:?\\\\s|$)/],\\n ['firefox', /Firefox\\\\/([0-9\\\\.]+)(?:\\\\s|$)/],\\n ['fxios', /FxiOS\\\\/([0-9\\\\.]+)/],\\n ['opera-mini', /Opera Mini.*Version\\\\/([0-9\\\\.]+)/],\\n ['opera', /Opera\\\\/([0-9\\\\.]+)(?:\\\\s|$)/],\\n ['opera', /OPR\\\\/([0-9\\\\.]+)(:?\\\\s|$)/],\\n ['pie', /^Microsoft Pocket Internet Explorer\\\\/(\\\\d+\\\\.\\\\d+)$/],\\n ['pie', /^Mozilla\\\\/\\\\d\\\\.\\\\d+\\\\s\\\\(compatible;\\\\s(?:MSP?IE|MSInternet Explorer) (\\\\d+\\\\.\\\\d+);.*Windows CE.*\\\\)$/],\\n ['netfront', /^Mozilla\\\\/\\\\d\\\\.\\\\d+.*NetFront\\\\/(\\\\d.\\\\d)/],\\n ['ie', /Trident\\\\/7\\\\.0.*rv\\\\:([0-9\\\\.]+).*\\\\).*Gecko$/],\\n ['ie', /MSIE\\\\s([0-9\\\\.]+);.*Trident\\\\/[4-7].0/],\\n ['ie', /MSIE\\\\s(7\\\\.0)/],\\n ['bb10', /BB10;\\\\sTouch.*Version\\\\/([0-9\\\\.]+)/],\\n ['android', /Android\\\\s([0-9\\\\.]+)/],\\n ['ios', /Version\\\\/([0-9\\\\._]+).*Mobile.*Safari.*/],\\n ['safari', /Version\\\\/([0-9\\\\._]+).*Safari/],\\n ['facebook', /FB[AS]V\\\\/([0-9\\\\.]+)/],\\n ['instagram', /Instagram\\\\s([0-9\\\\.]+)/],\\n ['ios-webview', /AppleWebKit\\\\/([0-9\\\\.]+).*Mobile/],\\n ['ios-webview', /AppleWebKit\\\\/([0-9\\\\.]+).*Gecko\\\\)$/],\\n ['curl', /^curl\\\\/([0-9\\\\.]+)$/],\\n ['searchbot', SEARCHBOX_UA_REGEX],\\n];\\nvar operatingSystemRules = [\\n ['iOS', /iP(hone|od|ad)/],\\n ['Android OS', /Android/],\\n ['BlackBerry OS', /BlackBerry|BB10/],\\n ['Windows Mobile', /IEMobile/],\\n ['Amazon OS', /Kindle/],\\n ['Windows 3.11', /Win16/],\\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\\n ['Windows 98', /(Windows 98)|(Win98)/],\\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\\n ['Windows Server 2003', /(Windows NT 5.2)/],\\n ['Windows Vista', /(Windows NT 6.0)/],\\n ['Windows 7', /(Windows NT 6.1)/],\\n ['Windows 8', /(Windows NT 6.2)/],\\n ['Windows 8.1', /(Windows NT 6.3)/],\\n ['Windows 10', /(Windows NT 10.0)/],\\n ['Windows ME', /Windows ME/],\\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\\n ['Open BSD', /OpenBSD/],\\n ['Sun OS', /SunOS/],\\n ['Chrome OS', /CrOS/],\\n ['Linux', /(Linux)|(X11)/],\\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\\n ['QNX', /QNX/],\\n ['BeOS', /BeOS/],\\n ['OS/2', /OS\\\\/2/],\\n];\\nfunction detect(userAgent) {\\n if (!!userAgent) {\\n return parseUserAgent(userAgent);\\n }\\n if (typeof document === 'undefined' &&\\n typeof navigator !== 'undefined' &&\\n navigator.product === 'ReactNative') {\\n return new ReactNativeInfo();\\n }\\n if (typeof navigator !== 'undefined') {\\n return parseUserAgent(navigator.userAgent);\\n }\\n return getNodeVersion();\\n}\\nfunction matchUserAgent(ua) {\\n // opted for using reduce here rather than Array#first with a regex.test call\\n // this is primarily because using the reduce we only perform the regex\\n // execution once rather than once for the test and for the exec again below\\n // probably something that needs to be benchmarked though\\n return (ua !== '' &&\\n userAgentRules.reduce(function (matched, _a) {\\n var browser = _a[0], regex = _a[1];\\n if (matched) {\\n return matched;\\n }\\n var uaMatch = regex.exec(ua);\\n return !!uaMatch && [browser, uaMatch];\\n }, false));\\n}\\nfunction browserName(ua) {\\n var data = matchUserAgent(ua);\\n return data ? data[0] : null;\\n}\\nfunction parseUserAgent(ua) {\\n var matchedRule = matchUserAgent(ua);\\n if (!matchedRule) {\\n return null;\\n }\\n var name = matchedRule[0], match = matchedRule[1];\\n if (name === 'searchbot') {\\n return new BotInfo();\\n }\\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\\n if (versionParts) {\\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\\n }\\n }\\n else {\\n versionParts = [];\\n }\\n var version = versionParts.join('.');\\n var os = detectOS(ua);\\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\\n if (searchBotMatch && searchBotMatch[1]) {\\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\\n }\\n return new BrowserInfo(name, version, os);\\n}\\nfunction detectOS(ua) {\\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\\n var match = regex.exec(ua);\\n if (match) {\\n return os;\\n }\\n }\\n return null;\\n}\\nfunction getNodeVersion() {\\n var isNode = typeof process !== 'undefined' && process.version;\\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\\n}\\nfunction createVersionParts(count) {\\n var output = [];\\n for (var ii = 0; ii < count; ii++) {\\n output.push('0');\\n }\\n return output;\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/detect-browser/es/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/ieee754/index.js\":\n/*!***************************************!*\\\n !*** ./node_modules/ieee754/index.js ***!\n \\***************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\neval(\"/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\\n var e, m\\n var eLen = (nBytes * 8) - mLen - 1\\n var eMax = (1 << eLen) - 1\\n var eBias = eMax >> 1\\n var nBits = -7\\n var i = isLE ? (nBytes - 1) : 0\\n var d = isLE ? -1 : 1\\n var s = buffer[offset + i]\\n\\n i += d\\n\\n e = s & ((1 << (-nBits)) - 1)\\n s >>= (-nBits)\\n nBits += eLen\\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\\n\\n m = e & ((1 << (-nBits)) - 1)\\n e >>= (-nBits)\\n nBits += mLen\\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\\n\\n if (e === 0) {\\n e = 1 - eBias\\n } else if (e === eMax) {\\n return m ? NaN : ((s ? -1 : 1) * Infinity)\\n } else {\\n m = m + Math.pow(2, mLen)\\n e = e - eBias\\n }\\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\\n}\\n\\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\\n var e, m, c\\n var eLen = (nBytes * 8) - mLen - 1\\n var eMax = (1 << eLen) - 1\\n var eBias = eMax >> 1\\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\\n var i = isLE ? 0 : (nBytes - 1)\\n var d = isLE ? 1 : -1\\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\\n\\n value = Math.abs(value)\\n\\n if (isNaN(value) || value === Infinity) {\\n m = isNaN(value) ? 1 : 0\\n e = eMax\\n } else {\\n e = Math.floor(Math.log(value) / Math.LN2)\\n if (value * (c = Math.pow(2, -e)) < 1) {\\n e--\\n c *= 2\\n }\\n if (e + eBias >= 1) {\\n value += rt / c\\n } else {\\n value += rt * Math.pow(2, 1 - eBias)\\n }\\n if (value * c >= 2) {\\n e++\\n c /= 2\\n }\\n\\n if (e + eBias >= eMax) {\\n m = 0\\n e = eMax\\n } else if (e + eBias >= 1) {\\n m = ((value * c) - 1) * Math.pow(2, mLen)\\n e = e + eBias\\n } else {\\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\\n e = 0\\n }\\n }\\n\\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\\n\\n e = (e << mLen) | m\\n eLen += mLen\\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\\n\\n buffer[offset + i - d] |= s * 128\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/ieee754/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/localforage/dist/localforage.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/localforage/dist/localforage.js ***!\n \\******************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\neval(\"/*!\\n localForage -- Offline Storage, Improved\\n Version 1.10.0\\n https://localforage.github.io/localForage\\n (c) 2013-2017 Mozilla, Apache License 2.0\\n*/\\n(function(f){if(true){module.exports=f()}else { var g; }})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=undefined;if(!u&&a)return require(o,!0);if(i)return i(o,!0);var f=new Error(\\\"Cannot find module '\\\"+o+\\\"'\\\");throw (f.code=\\\"MODULE_NOT_FOUND\\\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=undefined;for(var o=0;o element; its readystatechange event will be fired asynchronously once it is inserted\\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\\n var scriptEl = global.document.createElement('script');\\n scriptEl.onreadystatechange = function () {\\n nextTick();\\n\\n scriptEl.onreadystatechange = null;\\n scriptEl.parentNode.removeChild(scriptEl);\\n scriptEl = null;\\n };\\n global.document.documentElement.appendChild(scriptEl);\\n };\\n } else {\\n scheduleDrain = function () {\\n setTimeout(nextTick, 0);\\n };\\n }\\n}\\n\\nvar draining;\\nvar queue = [];\\n//named nextTick for less confusing stack traces\\nfunction nextTick() {\\n draining = true;\\n var i, oldQueue;\\n var len = queue.length;\\n while (len) {\\n oldQueue = queue;\\n queue = [];\\n i = -1;\\n while (++i < len) {\\n oldQueue[i]();\\n }\\n len = queue.length;\\n }\\n draining = false;\\n}\\n\\nmodule.exports = immediate;\\nfunction immediate(task) {\\n if (queue.push(task) === 1 && !draining) {\\n scheduleDrain();\\n }\\n}\\n\\n}).call(this,typeof __webpack_require__.g !== \\\"undefined\\\" ? __webpack_require__.g : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{}],2:[function(_dereq_,module,exports){\\n'use strict';\\nvar immediate = _dereq_(1);\\n\\n/* istanbul ignore next */\\nfunction INTERNAL() {}\\n\\nvar handlers = {};\\n\\nvar REJECTED = ['REJECTED'];\\nvar FULFILLED = ['FULFILLED'];\\nvar PENDING = ['PENDING'];\\n\\nmodule.exports = Promise;\\n\\nfunction Promise(resolver) {\\n if (typeof resolver !== 'function') {\\n throw new TypeError('resolver must be a function');\\n }\\n this.state = PENDING;\\n this.queue = [];\\n this.outcome = void 0;\\n if (resolver !== INTERNAL) {\\n safelyResolveThenable(this, resolver);\\n }\\n}\\n\\nPromise.prototype[\\\"catch\\\"] = function (onRejected) {\\n return this.then(null, onRejected);\\n};\\nPromise.prototype.then = function (onFulfilled, onRejected) {\\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\\n typeof onRejected !== 'function' && this.state === REJECTED) {\\n return this;\\n }\\n var promise = new this.constructor(INTERNAL);\\n if (this.state !== PENDING) {\\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\\n unwrap(promise, resolver, this.outcome);\\n } else {\\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\\n }\\n\\n return promise;\\n};\\nfunction QueueItem(promise, onFulfilled, onRejected) {\\n this.promise = promise;\\n if (typeof onFulfilled === 'function') {\\n this.onFulfilled = onFulfilled;\\n this.callFulfilled = this.otherCallFulfilled;\\n }\\n if (typeof onRejected === 'function') {\\n this.onRejected = onRejected;\\n this.callRejected = this.otherCallRejected;\\n }\\n}\\nQueueItem.prototype.callFulfilled = function (value) {\\n handlers.resolve(this.promise, value);\\n};\\nQueueItem.prototype.otherCallFulfilled = function (value) {\\n unwrap(this.promise, this.onFulfilled, value);\\n};\\nQueueItem.prototype.callRejected = function (value) {\\n handlers.reject(this.promise, value);\\n};\\nQueueItem.prototype.otherCallRejected = function (value) {\\n unwrap(this.promise, this.onRejected, value);\\n};\\n\\nfunction unwrap(promise, func, value) {\\n immediate(function () {\\n var returnValue;\\n try {\\n returnValue = func(value);\\n } catch (e) {\\n return handlers.reject(promise, e);\\n }\\n if (returnValue === promise) {\\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\\n } else {\\n handlers.resolve(promise, returnValue);\\n }\\n });\\n}\\n\\nhandlers.resolve = function (self, value) {\\n var result = tryCatch(getThen, value);\\n if (result.status === 'error') {\\n return handlers.reject(self, result.value);\\n }\\n var thenable = result.value;\\n\\n if (thenable) {\\n safelyResolveThenable(self, thenable);\\n } else {\\n self.state = FULFILLED;\\n self.outcome = value;\\n var i = -1;\\n var len = self.queue.length;\\n while (++i < len) {\\n self.queue[i].callFulfilled(value);\\n }\\n }\\n return self;\\n};\\nhandlers.reject = function (self, error) {\\n self.state = REJECTED;\\n self.outcome = error;\\n var i = -1;\\n var len = self.queue.length;\\n while (++i < len) {\\n self.queue[i].callRejected(error);\\n }\\n return self;\\n};\\n\\nfunction getThen(obj) {\\n // Make sure we only access the accessor once as required by the spec\\n var then = obj && obj.then;\\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\\n return function appyThen() {\\n then.apply(obj, arguments);\\n };\\n }\\n}\\n\\nfunction safelyResolveThenable(self, thenable) {\\n // Either fulfill, reject or reject with error\\n var called = false;\\n function onError(value) {\\n if (called) {\\n return;\\n }\\n called = true;\\n handlers.reject(self, value);\\n }\\n\\n function onSuccess(value) {\\n if (called) {\\n return;\\n }\\n called = true;\\n handlers.resolve(self, value);\\n }\\n\\n function tryToUnwrap() {\\n thenable(onSuccess, onError);\\n }\\n\\n var result = tryCatch(tryToUnwrap);\\n if (result.status === 'error') {\\n onError(result.value);\\n }\\n}\\n\\nfunction tryCatch(func, value) {\\n var out = {};\\n try {\\n out.value = func(value);\\n out.status = 'success';\\n } catch (e) {\\n out.status = 'error';\\n out.value = e;\\n }\\n return out;\\n}\\n\\nPromise.resolve = resolve;\\nfunction resolve(value) {\\n if (value instanceof this) {\\n return value;\\n }\\n return handlers.resolve(new this(INTERNAL), value);\\n}\\n\\nPromise.reject = reject;\\nfunction reject(reason) {\\n var promise = new this(INTERNAL);\\n return handlers.reject(promise, reason);\\n}\\n\\nPromise.all = all;\\nfunction all(iterable) {\\n var self = this;\\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\\n return this.reject(new TypeError('must be an array'));\\n }\\n\\n var len = iterable.length;\\n var called = false;\\n if (!len) {\\n return this.resolve([]);\\n }\\n\\n var values = new Array(len);\\n var resolved = 0;\\n var i = -1;\\n var promise = new this(INTERNAL);\\n\\n while (++i < len) {\\n allResolver(iterable[i], i);\\n }\\n return promise;\\n function allResolver(value, i) {\\n self.resolve(value).then(resolveFromAll, function (error) {\\n if (!called) {\\n called = true;\\n handlers.reject(promise, error);\\n }\\n });\\n function resolveFromAll(outValue) {\\n values[i] = outValue;\\n if (++resolved === len && !called) {\\n called = true;\\n handlers.resolve(promise, values);\\n }\\n }\\n }\\n}\\n\\nPromise.race = race;\\nfunction race(iterable) {\\n var self = this;\\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\\n return this.reject(new TypeError('must be an array'));\\n }\\n\\n var len = iterable.length;\\n var called = false;\\n if (!len) {\\n return this.resolve([]);\\n }\\n\\n var i = -1;\\n var promise = new this(INTERNAL);\\n\\n while (++i < len) {\\n resolver(iterable[i]);\\n }\\n return promise;\\n function resolver(value) {\\n self.resolve(value).then(function (response) {\\n if (!called) {\\n called = true;\\n handlers.resolve(promise, response);\\n }\\n }, function (error) {\\n if (!called) {\\n called = true;\\n handlers.reject(promise, error);\\n }\\n });\\n }\\n}\\n\\n},{\\\"1\\\":1}],3:[function(_dereq_,module,exports){\\n(function (global){\\n'use strict';\\nif (typeof global.Promise !== 'function') {\\n global.Promise = _dereq_(2);\\n}\\n\\n}).call(this,typeof __webpack_require__.g !== \\\"undefined\\\" ? __webpack_require__.g : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{\\\"2\\\":2}],4:[function(_dereq_,module,exports){\\n'use strict';\\n\\nvar _typeof = typeof Symbol === \\\"function\\\" && typeof Symbol.iterator === \\\"symbol\\\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \\\"function\\\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \\\"symbol\\\" : typeof obj; };\\n\\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\\\"Cannot call a class as a function\\\"); } }\\n\\nfunction getIDB() {\\n /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\\n try {\\n if (typeof indexedDB !== 'undefined') {\\n return indexedDB;\\n }\\n if (typeof webkitIndexedDB !== 'undefined') {\\n return webkitIndexedDB;\\n }\\n if (typeof mozIndexedDB !== 'undefined') {\\n return mozIndexedDB;\\n }\\n if (typeof OIndexedDB !== 'undefined') {\\n return OIndexedDB;\\n }\\n if (typeof msIndexedDB !== 'undefined') {\\n return msIndexedDB;\\n }\\n } catch (e) {\\n return;\\n }\\n}\\n\\nvar idb = getIDB();\\n\\nfunction isIndexedDBValid() {\\n try {\\n // Initialize IndexedDB; fall back to vendor-prefixed versions\\n // if needed.\\n if (!idb || !idb.open) {\\n return false;\\n }\\n // We mimic PouchDB here;\\n //\\n // We test for openDatabase because IE Mobile identifies itself\\n // as Safari. Oh the lulz...\\n var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\\n\\n var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\\n\\n // Safari <10.1 does not meet our requirements for IDB support\\n // (see: https://github.com/pouchdb/pouchdb/issues/5572).\\n // Safari 10.1 shipped with fetch, we can use that to detect it.\\n // Note: this creates issues with `window.fetch` polyfills and\\n // overrides; see:\\n // https://github.com/localForage/localForage/issues/856\\n return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\\n // some outdated implementations of IDB that appear on Samsung\\n // and HTC Android devices <4.4 are missing IDBKeyRange\\n // See: https://github.com/mozilla/localForage/issues/128\\n // See: https://github.com/mozilla/localForage/issues/272\\n typeof IDBKeyRange !== 'undefined';\\n } catch (e) {\\n return false;\\n }\\n}\\n\\n// Abstracts constructing a Blob object, so it also works in older\\n// browsers that don't support the native Blob constructor. (i.e.\\n// old QtWebKit versions, at least).\\n// Abstracts constructing a Blob object, so it also works in older\\n// browsers that don't support the native Blob constructor. (i.e.\\n// old QtWebKit versions, at least).\\nfunction createBlob(parts, properties) {\\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\\n parts = parts || [];\\n properties = properties || {};\\n try {\\n return new Blob(parts, properties);\\n } catch (e) {\\n if (e.name !== 'TypeError') {\\n throw e;\\n }\\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\\n var builder = new Builder();\\n for (var i = 0; i < parts.length; i += 1) {\\n builder.append(parts[i]);\\n }\\n return builder.getBlob(properties.type);\\n }\\n}\\n\\n// This is CommonJS because lie is an external dependency, so Rollup\\n// can just ignore it.\\nif (typeof Promise === 'undefined') {\\n // In the \\\"nopromises\\\" build this will just throw if you don't have\\n // a global promise object, but it would throw anyway later.\\n _dereq_(3);\\n}\\nvar Promise$1 = Promise;\\n\\nfunction executeCallback(promise, callback) {\\n if (callback) {\\n promise.then(function (result) {\\n callback(null, result);\\n }, function (error) {\\n callback(error);\\n });\\n }\\n}\\n\\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\\n if (typeof callback === 'function') {\\n promise.then(callback);\\n }\\n\\n if (typeof errorCallback === 'function') {\\n promise[\\\"catch\\\"](errorCallback);\\n }\\n}\\n\\nfunction normalizeKey(key) {\\n // Cast the key to a string, as that's all we can set as a key.\\n if (typeof key !== 'string') {\\n console.warn(key + ' used as a key, but it is not a string.');\\n key = String(key);\\n }\\n\\n return key;\\n}\\n\\nfunction getCallback() {\\n if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\\n return arguments[arguments.length - 1];\\n }\\n}\\n\\n// Some code originally from async_storage.js in\\n// [Gaia](https://github.com/mozilla-b2g/gaia).\\n\\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\\nvar supportsBlobs = void 0;\\nvar dbContexts = {};\\nvar toString = Object.prototype.toString;\\n\\n// Transaction Modes\\nvar READ_ONLY = 'readonly';\\nvar READ_WRITE = 'readwrite';\\n\\n// Transform a binary string to an array buffer, because otherwise\\n// weird stuff happens when you try to work with the binary string directly.\\n// It is known.\\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\\nfunction _binStringToArrayBuffer(bin) {\\n var length = bin.length;\\n var buf = new ArrayBuffer(length);\\n var arr = new Uint8Array(buf);\\n for (var i = 0; i < length; i++) {\\n arr[i] = bin.charCodeAt(i);\\n }\\n return buf;\\n}\\n\\n//\\n// Blobs are not supported in all versions of IndexedDB, notably\\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\\n//\\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\\n// Detecting them is expensive and confusing to users, and Chrome 37-42\\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\\n//\\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\\n//\\n// Code borrowed from PouchDB. See:\\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\\n//\\nfunction _checkBlobSupportWithoutCaching(idb) {\\n return new Promise$1(function (resolve) {\\n var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\\n var blob = createBlob(['']);\\n txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\\n\\n txn.onabort = function (e) {\\n // If the transaction aborts now its due to not being able to\\n // write to the database, likely due to the disk being full\\n e.preventDefault();\\n e.stopPropagation();\\n resolve(false);\\n };\\n\\n txn.oncomplete = function () {\\n var matchedChrome = navigator.userAgent.match(/Chrome\\\\/(\\\\d+)/);\\n var matchedEdge = navigator.userAgent.match(/Edge\\\\//);\\n // MS Edge pretends to be Chrome 42:\\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\\n resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\\n };\\n })[\\\"catch\\\"](function () {\\n return false; // error, so assume unsupported\\n });\\n}\\n\\nfunction _checkBlobSupport(idb) {\\n if (typeof supportsBlobs === 'boolean') {\\n return Promise$1.resolve(supportsBlobs);\\n }\\n return _checkBlobSupportWithoutCaching(idb).then(function (value) {\\n supportsBlobs = value;\\n return supportsBlobs;\\n });\\n}\\n\\nfunction _deferReadiness(dbInfo) {\\n var dbContext = dbContexts[dbInfo.name];\\n\\n // Create a deferred object representing the current database operation.\\n var deferredOperation = {};\\n\\n deferredOperation.promise = new Promise$1(function (resolve, reject) {\\n deferredOperation.resolve = resolve;\\n deferredOperation.reject = reject;\\n });\\n\\n // Enqueue the deferred operation.\\n dbContext.deferredOperations.push(deferredOperation);\\n\\n // Chain its promise to the database readiness.\\n if (!dbContext.dbReady) {\\n dbContext.dbReady = deferredOperation.promise;\\n } else {\\n dbContext.dbReady = dbContext.dbReady.then(function () {\\n return deferredOperation.promise;\\n });\\n }\\n}\\n\\nfunction _advanceReadiness(dbInfo) {\\n var dbContext = dbContexts[dbInfo.name];\\n\\n // Dequeue a deferred operation.\\n var deferredOperation = dbContext.deferredOperations.pop();\\n\\n // Resolve its promise (which is part of the database readiness\\n // chain of promises).\\n if (deferredOperation) {\\n deferredOperation.resolve();\\n return deferredOperation.promise;\\n }\\n}\\n\\nfunction _rejectReadiness(dbInfo, err) {\\n var dbContext = dbContexts[dbInfo.name];\\n\\n // Dequeue a deferred operation.\\n var deferredOperation = dbContext.deferredOperations.pop();\\n\\n // Reject its promise (which is part of the database readiness\\n // chain of promises).\\n if (deferredOperation) {\\n deferredOperation.reject(err);\\n return deferredOperation.promise;\\n }\\n}\\n\\nfunction _getConnection(dbInfo, upgradeNeeded) {\\n return new Promise$1(function (resolve, reject) {\\n dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\\n\\n if (dbInfo.db) {\\n if (upgradeNeeded) {\\n _deferReadiness(dbInfo);\\n dbInfo.db.close();\\n } else {\\n return resolve(dbInfo.db);\\n }\\n }\\n\\n var dbArgs = [dbInfo.name];\\n\\n if (upgradeNeeded) {\\n dbArgs.push(dbInfo.version);\\n }\\n\\n var openreq = idb.open.apply(idb, dbArgs);\\n\\n if (upgradeNeeded) {\\n openreq.onupgradeneeded = function (e) {\\n var db = openreq.result;\\n try {\\n db.createObjectStore(dbInfo.storeName);\\n if (e.oldVersion <= 1) {\\n // Added when support for blob shims was added\\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\\n }\\n } catch (ex) {\\n if (ex.name === 'ConstraintError') {\\n console.warn('The database \\\"' + dbInfo.name + '\\\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \\\"' + dbInfo.storeName + '\\\" already exists.');\\n } else {\\n throw ex;\\n }\\n }\\n };\\n }\\n\\n openreq.onerror = function (e) {\\n e.preventDefault();\\n reject(openreq.error);\\n };\\n\\n openreq.onsuccess = function () {\\n var db = openreq.result;\\n db.onversionchange = function (e) {\\n // Triggered when the database is modified (e.g. adding an objectStore) or\\n // deleted (even when initiated by other sessions in different tabs).\\n // Closing the connection here prevents those operations from being blocked.\\n // If the database is accessed again later by this instance, the connection\\n // will be reopened or the database recreated as needed.\\n e.target.close();\\n };\\n resolve(db);\\n _advanceReadiness(dbInfo);\\n };\\n });\\n}\\n\\nfunction _getOriginalConnection(dbInfo) {\\n return _getConnection(dbInfo, false);\\n}\\n\\nfunction _getUpgradedConnection(dbInfo) {\\n return _getConnection(dbInfo, true);\\n}\\n\\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\\n if (!dbInfo.db) {\\n return true;\\n }\\n\\n var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\\n var isDowngrade = dbInfo.version < dbInfo.db.version;\\n var isUpgrade = dbInfo.version > dbInfo.db.version;\\n\\n if (isDowngrade) {\\n // If the version is not the default one\\n // then warn for impossible downgrade.\\n if (dbInfo.version !== defaultVersion) {\\n console.warn('The database \\\"' + dbInfo.name + '\\\"' + \\\" can't be downgraded from version \\\" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\\n }\\n // Align the versions to prevent errors.\\n dbInfo.version = dbInfo.db.version;\\n }\\n\\n if (isUpgrade || isNewStore) {\\n // If the store is new then increment the version (if needed).\\n // This will trigger an \\\"upgradeneeded\\\" event which is required\\n // for creating a store.\\n if (isNewStore) {\\n var incVersion = dbInfo.db.version + 1;\\n if (incVersion > dbInfo.version) {\\n dbInfo.version = incVersion;\\n }\\n }\\n\\n return true;\\n }\\n\\n return false;\\n}\\n\\n// encode a blob for indexeddb engines that don't support blobs\\nfunction _encodeBlob(blob) {\\n return new Promise$1(function (resolve, reject) {\\n var reader = new FileReader();\\n reader.onerror = reject;\\n reader.onloadend = function (e) {\\n var base64 = btoa(e.target.result || '');\\n resolve({\\n __local_forage_encoded_blob: true,\\n data: base64,\\n type: blob.type\\n });\\n };\\n reader.readAsBinaryString(blob);\\n });\\n}\\n\\n// decode an encoded blob\\nfunction _decodeBlob(encodedBlob) {\\n var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\\n return createBlob([arrayBuff], { type: encodedBlob.type });\\n}\\n\\n// is this one of our fancy encoded blobs?\\nfunction _isEncodedBlob(value) {\\n return value && value.__local_forage_encoded_blob;\\n}\\n\\n// Specialize the default `ready()` function by making it dependent\\n// on the current database operations. Thus, the driver will be actually\\n// ready when it's been initialized (default) *and* there are no pending\\n// operations on the database (initiated by some other instances).\\nfunction _fullyReady(callback) {\\n var self = this;\\n\\n var promise = self._initReady().then(function () {\\n var dbContext = dbContexts[self._dbInfo.name];\\n\\n if (dbContext && dbContext.dbReady) {\\n return dbContext.dbReady;\\n }\\n });\\n\\n executeTwoCallbacks(promise, callback, callback);\\n return promise;\\n}\\n\\n// Try to establish a new db connection to replace the\\n// current one which is broken (i.e. experiencing\\n// InvalidStateError while creating a transaction).\\nfunction _tryReconnect(dbInfo) {\\n _deferReadiness(dbInfo);\\n\\n var dbContext = dbContexts[dbInfo.name];\\n var forages = dbContext.forages;\\n\\n for (var i = 0; i < forages.length; i++) {\\n var forage = forages[i];\\n if (forage._dbInfo.db) {\\n forage._dbInfo.db.close();\\n forage._dbInfo.db = null;\\n }\\n }\\n dbInfo.db = null;\\n\\n return _getOriginalConnection(dbInfo).then(function (db) {\\n dbInfo.db = db;\\n if (_isUpgradeNeeded(dbInfo)) {\\n // Reopen the database for upgrading.\\n return _getUpgradedConnection(dbInfo);\\n }\\n return db;\\n }).then(function (db) {\\n // store the latest db reference\\n // in case the db was upgraded\\n dbInfo.db = dbContext.db = db;\\n for (var i = 0; i < forages.length; i++) {\\n forages[i]._dbInfo.db = db;\\n }\\n })[\\\"catch\\\"](function (err) {\\n _rejectReadiness(dbInfo, err);\\n throw err;\\n });\\n}\\n\\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\\n// so we have to do it with callbacks\\nfunction createTransaction(dbInfo, mode, callback, retries) {\\n if (retries === undefined) {\\n retries = 1;\\n }\\n\\n try {\\n var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\\n callback(null, tx);\\n } catch (err) {\\n if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\\n return Promise$1.resolve().then(function () {\\n if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\\n // increase the db version, to create the new ObjectStore\\n if (dbInfo.db) {\\n dbInfo.version = dbInfo.db.version + 1;\\n }\\n // Reopen the database for upgrading.\\n return _getUpgradedConnection(dbInfo);\\n }\\n }).then(function () {\\n return _tryReconnect(dbInfo).then(function () {\\n createTransaction(dbInfo, mode, callback, retries - 1);\\n });\\n })[\\\"catch\\\"](callback);\\n }\\n\\n callback(err);\\n }\\n}\\n\\nfunction createDbContext() {\\n return {\\n // Running localForages sharing a database.\\n forages: [],\\n // Shared database.\\n db: null,\\n // Database readiness (promise).\\n dbReady: null,\\n // Deferred operations on the database.\\n deferredOperations: []\\n };\\n}\\n\\n// Open the IndexedDB database (automatically creates one if one didn't\\n// previously exist), using any options set in the config.\\nfunction _initStorage(options) {\\n var self = this;\\n var dbInfo = {\\n db: null\\n };\\n\\n if (options) {\\n for (var i in options) {\\n dbInfo[i] = options[i];\\n }\\n }\\n\\n // Get the current context of the database;\\n var dbContext = dbContexts[dbInfo.name];\\n\\n // ...or create a new context.\\n if (!dbContext) {\\n dbContext = createDbContext();\\n // Register the new context in the global container.\\n dbContexts[dbInfo.name] = dbContext;\\n }\\n\\n // Register itself as a running localForage in the current context.\\n dbContext.forages.push(self);\\n\\n // Replace the default `ready()` function with the specialized one.\\n if (!self._initReady) {\\n self._initReady = self.ready;\\n self.ready = _fullyReady;\\n }\\n\\n // Create an array of initialization states of the related localForages.\\n var initPromises = [];\\n\\n function ignoreErrors() {\\n // Don't handle errors here,\\n // just makes sure related localForages aren't pending.\\n return Promise$1.resolve();\\n }\\n\\n for (var j = 0; j < dbContext.forages.length; j++) {\\n var forage = dbContext.forages[j];\\n if (forage !== self) {\\n // Don't wait for itself...\\n initPromises.push(forage._initReady()[\\\"catch\\\"](ignoreErrors));\\n }\\n }\\n\\n // Take a snapshot of the related localForages.\\n var forages = dbContext.forages.slice(0);\\n\\n // Initialize the connection process only when\\n // all the related localForages aren't pending.\\n return Promise$1.all(initPromises).then(function () {\\n dbInfo.db = dbContext.db;\\n // Get the connection or open a new one without upgrade.\\n return _getOriginalConnection(dbInfo);\\n }).then(function (db) {\\n dbInfo.db = db;\\n if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\\n // Reopen the database for upgrading.\\n return _getUpgradedConnection(dbInfo);\\n }\\n return db;\\n }).then(function (db) {\\n dbInfo.db = dbContext.db = db;\\n self._dbInfo = dbInfo;\\n // Share the final connection amongst related localForages.\\n for (var k = 0; k < forages.length; k++) {\\n var forage = forages[k];\\n if (forage !== self) {\\n // Self is already up-to-date.\\n forage._dbInfo.db = dbInfo.db;\\n forage._dbInfo.version = dbInfo.version;\\n }\\n }\\n });\\n}\\n\\nfunction getItem(key, callback) {\\n var self = this;\\n\\n key = normalizeKey(key);\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n self.ready().then(function () {\\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\\n if (err) {\\n return reject(err);\\n }\\n\\n try {\\n var store = transaction.objectStore(self._dbInfo.storeName);\\n var req = store.get(key);\\n\\n req.onsuccess = function () {\\n var value = req.result;\\n if (value === undefined) {\\n value = null;\\n }\\n if (_isEncodedBlob(value)) {\\n value = _decodeBlob(value);\\n }\\n resolve(value);\\n };\\n\\n req.onerror = function () {\\n reject(req.error);\\n };\\n } catch (e) {\\n reject(e);\\n }\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\n// Iterate over all items stored in database.\\nfunction iterate(iterator, callback) {\\n var self = this;\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n self.ready().then(function () {\\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\\n if (err) {\\n return reject(err);\\n }\\n\\n try {\\n var store = transaction.objectStore(self._dbInfo.storeName);\\n var req = store.openCursor();\\n var iterationNumber = 1;\\n\\n req.onsuccess = function () {\\n var cursor = req.result;\\n\\n if (cursor) {\\n var value = cursor.value;\\n if (_isEncodedBlob(value)) {\\n value = _decodeBlob(value);\\n }\\n var result = iterator(value, cursor.key, iterationNumber++);\\n\\n // when the iterator callback returns any\\n // (non-`undefined`) value, then we stop\\n // the iteration immediately\\n if (result !== void 0) {\\n resolve(result);\\n } else {\\n cursor[\\\"continue\\\"]();\\n }\\n } else {\\n resolve();\\n }\\n };\\n\\n req.onerror = function () {\\n reject(req.error);\\n };\\n } catch (e) {\\n reject(e);\\n }\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n\\n return promise;\\n}\\n\\nfunction setItem(key, value, callback) {\\n var self = this;\\n\\n key = normalizeKey(key);\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n var dbInfo;\\n self.ready().then(function () {\\n dbInfo = self._dbInfo;\\n if (toString.call(value) === '[object Blob]') {\\n return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\\n if (blobSupport) {\\n return value;\\n }\\n return _encodeBlob(value);\\n });\\n }\\n return value;\\n }).then(function (value) {\\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\\n if (err) {\\n return reject(err);\\n }\\n\\n try {\\n var store = transaction.objectStore(self._dbInfo.storeName);\\n\\n // The reason we don't _save_ null is because IE 10 does\\n // not support saving the `null` type in IndexedDB. How\\n // ironic, given the bug below!\\n // See: https://github.com/mozilla/localForage/issues/161\\n if (value === null) {\\n value = undefined;\\n }\\n\\n var req = store.put(value, key);\\n\\n transaction.oncomplete = function () {\\n // Cast to undefined so the value passed to\\n // callback/promise is the same as what one would get out\\n // of `getItem()` later. This leads to some weirdness\\n // (setItem('foo', undefined) will return `null`), but\\n // it's not my fault localStorage is our baseline and that\\n // it's weird.\\n if (value === undefined) {\\n value = null;\\n }\\n\\n resolve(value);\\n };\\n transaction.onabort = transaction.onerror = function () {\\n var err = req.error ? req.error : req.transaction.error;\\n reject(err);\\n };\\n } catch (e) {\\n reject(e);\\n }\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\nfunction removeItem(key, callback) {\\n var self = this;\\n\\n key = normalizeKey(key);\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n self.ready().then(function () {\\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\\n if (err) {\\n return reject(err);\\n }\\n\\n try {\\n var store = transaction.objectStore(self._dbInfo.storeName);\\n // We use a Grunt task to make this safe for IE and some\\n // versions of Android (including those used by Cordova).\\n // Normally IE won't like `.delete()` and will insist on\\n // using `['delete']()`, but we have a build step that\\n // fixes this for us now.\\n var req = store[\\\"delete\\\"](key);\\n transaction.oncomplete = function () {\\n resolve();\\n };\\n\\n transaction.onerror = function () {\\n reject(req.error);\\n };\\n\\n // The request will be also be aborted if we've exceeded our storage\\n // space.\\n transaction.onabort = function () {\\n var err = req.error ? req.error : req.transaction.error;\\n reject(err);\\n };\\n } catch (e) {\\n reject(e);\\n }\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\nfunction clear(callback) {\\n var self = this;\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n self.ready().then(function () {\\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\\n if (err) {\\n return reject(err);\\n }\\n\\n try {\\n var store = transaction.objectStore(self._dbInfo.storeName);\\n var req = store.clear();\\n\\n transaction.oncomplete = function () {\\n resolve();\\n };\\n\\n transaction.onabort = transaction.onerror = function () {\\n var err = req.error ? req.error : req.transaction.error;\\n reject(err);\\n };\\n } catch (e) {\\n reject(e);\\n }\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\nfunction length(callback) {\\n var self = this;\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n self.ready().then(function () {\\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\\n if (err) {\\n return reject(err);\\n }\\n\\n try {\\n var store = transaction.objectStore(self._dbInfo.storeName);\\n var req = store.count();\\n\\n req.onsuccess = function () {\\n resolve(req.result);\\n };\\n\\n req.onerror = function () {\\n reject(req.error);\\n };\\n } catch (e) {\\n reject(e);\\n }\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\nfunction key(n, callback) {\\n var self = this;\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n if (n < 0) {\\n resolve(null);\\n\\n return;\\n }\\n\\n self.ready().then(function () {\\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\\n if (err) {\\n return reject(err);\\n }\\n\\n try {\\n var store = transaction.objectStore(self._dbInfo.storeName);\\n var advanced = false;\\n var req = store.openKeyCursor();\\n\\n req.onsuccess = function () {\\n var cursor = req.result;\\n if (!cursor) {\\n // this means there weren't enough keys\\n resolve(null);\\n\\n return;\\n }\\n\\n if (n === 0) {\\n // We have the first key, return it if that's what they\\n // wanted.\\n resolve(cursor.key);\\n } else {\\n if (!advanced) {\\n // Otherwise, ask the cursor to skip ahead n\\n // records.\\n advanced = true;\\n cursor.advance(n);\\n } else {\\n // When we get here, we've got the nth key.\\n resolve(cursor.key);\\n }\\n }\\n };\\n\\n req.onerror = function () {\\n reject(req.error);\\n };\\n } catch (e) {\\n reject(e);\\n }\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\nfunction keys(callback) {\\n var self = this;\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n self.ready().then(function () {\\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\\n if (err) {\\n return reject(err);\\n }\\n\\n try {\\n var store = transaction.objectStore(self._dbInfo.storeName);\\n var req = store.openKeyCursor();\\n var keys = [];\\n\\n req.onsuccess = function () {\\n var cursor = req.result;\\n\\n if (!cursor) {\\n resolve(keys);\\n return;\\n }\\n\\n keys.push(cursor.key);\\n cursor[\\\"continue\\\"]();\\n };\\n\\n req.onerror = function () {\\n reject(req.error);\\n };\\n } catch (e) {\\n reject(e);\\n }\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\nfunction dropInstance(options, callback) {\\n callback = getCallback.apply(this, arguments);\\n\\n var currentConfig = this.config();\\n options = typeof options !== 'function' && options || {};\\n if (!options.name) {\\n options.name = options.name || currentConfig.name;\\n options.storeName = options.storeName || currentConfig.storeName;\\n }\\n\\n var self = this;\\n var promise;\\n if (!options.name) {\\n promise = Promise$1.reject('Invalid arguments');\\n } else {\\n var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\\n\\n var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\\n var dbContext = dbContexts[options.name];\\n var forages = dbContext.forages;\\n dbContext.db = db;\\n for (var i = 0; i < forages.length; i++) {\\n forages[i]._dbInfo.db = db;\\n }\\n return db;\\n });\\n\\n if (!options.storeName) {\\n promise = dbPromise.then(function (db) {\\n _deferReadiness(options);\\n\\n var dbContext = dbContexts[options.name];\\n var forages = dbContext.forages;\\n\\n db.close();\\n for (var i = 0; i < forages.length; i++) {\\n var forage = forages[i];\\n forage._dbInfo.db = null;\\n }\\n\\n var dropDBPromise = new Promise$1(function (resolve, reject) {\\n var req = idb.deleteDatabase(options.name);\\n\\n req.onerror = function () {\\n var db = req.result;\\n if (db) {\\n db.close();\\n }\\n reject(req.error);\\n };\\n\\n req.onblocked = function () {\\n // Closing all open connections in onversionchange handler should prevent this situation, but if\\n // we do get here, it just means the request remains pending - eventually it will succeed or error\\n console.warn('dropInstance blocked for database \\\"' + options.name + '\\\" until all open connections are closed');\\n };\\n\\n req.onsuccess = function () {\\n var db = req.result;\\n if (db) {\\n db.close();\\n }\\n resolve(db);\\n };\\n });\\n\\n return dropDBPromise.then(function (db) {\\n dbContext.db = db;\\n for (var i = 0; i < forages.length; i++) {\\n var _forage = forages[i];\\n _advanceReadiness(_forage._dbInfo);\\n }\\n })[\\\"catch\\\"](function (err) {\\n (_rejectReadiness(options, err) || Promise$1.resolve())[\\\"catch\\\"](function () {});\\n throw err;\\n });\\n });\\n } else {\\n promise = dbPromise.then(function (db) {\\n if (!db.objectStoreNames.contains(options.storeName)) {\\n return;\\n }\\n\\n var newVersion = db.version + 1;\\n\\n _deferReadiness(options);\\n\\n var dbContext = dbContexts[options.name];\\n var forages = dbContext.forages;\\n\\n db.close();\\n for (var i = 0; i < forages.length; i++) {\\n var forage = forages[i];\\n forage._dbInfo.db = null;\\n forage._dbInfo.version = newVersion;\\n }\\n\\n var dropObjectPromise = new Promise$1(function (resolve, reject) {\\n var req = idb.open(options.name, newVersion);\\n\\n req.onerror = function (err) {\\n var db = req.result;\\n db.close();\\n reject(err);\\n };\\n\\n req.onupgradeneeded = function () {\\n var db = req.result;\\n db.deleteObjectStore(options.storeName);\\n };\\n\\n req.onsuccess = function () {\\n var db = req.result;\\n db.close();\\n resolve(db);\\n };\\n });\\n\\n return dropObjectPromise.then(function (db) {\\n dbContext.db = db;\\n for (var j = 0; j < forages.length; j++) {\\n var _forage2 = forages[j];\\n _forage2._dbInfo.db = db;\\n _advanceReadiness(_forage2._dbInfo);\\n }\\n })[\\\"catch\\\"](function (err) {\\n (_rejectReadiness(options, err) || Promise$1.resolve())[\\\"catch\\\"](function () {});\\n throw err;\\n });\\n });\\n }\\n }\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\nvar asyncStorage = {\\n _driver: 'asyncStorage',\\n _initStorage: _initStorage,\\n _support: isIndexedDBValid(),\\n iterate: iterate,\\n getItem: getItem,\\n setItem: setItem,\\n removeItem: removeItem,\\n clear: clear,\\n length: length,\\n key: key,\\n keys: keys,\\n dropInstance: dropInstance\\n};\\n\\nfunction isWebSQLValid() {\\n return typeof openDatabase === 'function';\\n}\\n\\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\\n// it to Base64, so this is how we store it to prevent very strange errors with less\\n// verbose ways of binary <-> string data storage.\\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\\n\\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\\n\\nvar SERIALIZED_MARKER = '__lfsc__:';\\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\\n\\n// OMG the serializations!\\nvar TYPE_ARRAYBUFFER = 'arbf';\\nvar TYPE_BLOB = 'blob';\\nvar TYPE_INT8ARRAY = 'si08';\\nvar TYPE_UINT8ARRAY = 'ui08';\\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\\nvar TYPE_INT16ARRAY = 'si16';\\nvar TYPE_INT32ARRAY = 'si32';\\nvar TYPE_UINT16ARRAY = 'ur16';\\nvar TYPE_UINT32ARRAY = 'ui32';\\nvar TYPE_FLOAT32ARRAY = 'fl32';\\nvar TYPE_FLOAT64ARRAY = 'fl64';\\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\\n\\nvar toString$1 = Object.prototype.toString;\\n\\nfunction stringToBuffer(serializedString) {\\n // Fill the string into a ArrayBuffer.\\n var bufferLength = serializedString.length * 0.75;\\n var len = serializedString.length;\\n var i;\\n var p = 0;\\n var encoded1, encoded2, encoded3, encoded4;\\n\\n if (serializedString[serializedString.length - 1] === '=') {\\n bufferLength--;\\n if (serializedString[serializedString.length - 2] === '=') {\\n bufferLength--;\\n }\\n }\\n\\n var buffer = new ArrayBuffer(bufferLength);\\n var bytes = new Uint8Array(buffer);\\n\\n for (i = 0; i < len; i += 4) {\\n encoded1 = BASE_CHARS.indexOf(serializedString[i]);\\n encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\\n encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\\n encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\\n\\n /*jslint bitwise: true */\\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\\n }\\n return buffer;\\n}\\n\\n// Converts a buffer to a string to store, serialized, in the backend\\n// storage library.\\nfunction bufferToString(buffer) {\\n // base64-arraybuffer\\n var bytes = new Uint8Array(buffer);\\n var base64String = '';\\n var i;\\n\\n for (i = 0; i < bytes.length; i += 3) {\\n /*jslint bitwise: true */\\n base64String += BASE_CHARS[bytes[i] >> 2];\\n base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\\n base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\\n base64String += BASE_CHARS[bytes[i + 2] & 63];\\n }\\n\\n if (bytes.length % 3 === 2) {\\n base64String = base64String.substring(0, base64String.length - 1) + '=';\\n } else if (bytes.length % 3 === 1) {\\n base64String = base64String.substring(0, base64String.length - 2) + '==';\\n }\\n\\n return base64String;\\n}\\n\\n// Serialize a value, afterwards executing a callback (which usually\\n// instructs the `setItem()` callback/promise to be executed). This is how\\n// we store binary data with localStorage.\\nfunction serialize(value, callback) {\\n var valueType = '';\\n if (value) {\\n valueType = toString$1.call(value);\\n }\\n\\n // Cannot use `value instanceof ArrayBuffer` or such here, as these\\n // checks fail when running the tests using casper.js...\\n //\\n // TODO: See why those tests fail and use a better solution.\\n if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\\n // Convert binary arrays to a string and prefix the string with\\n // a special marker.\\n var buffer;\\n var marker = SERIALIZED_MARKER;\\n\\n if (value instanceof ArrayBuffer) {\\n buffer = value;\\n marker += TYPE_ARRAYBUFFER;\\n } else {\\n buffer = value.buffer;\\n\\n if (valueType === '[object Int8Array]') {\\n marker += TYPE_INT8ARRAY;\\n } else if (valueType === '[object Uint8Array]') {\\n marker += TYPE_UINT8ARRAY;\\n } else if (valueType === '[object Uint8ClampedArray]') {\\n marker += TYPE_UINT8CLAMPEDARRAY;\\n } else if (valueType === '[object Int16Array]') {\\n marker += TYPE_INT16ARRAY;\\n } else if (valueType === '[object Uint16Array]') {\\n marker += TYPE_UINT16ARRAY;\\n } else if (valueType === '[object Int32Array]') {\\n marker += TYPE_INT32ARRAY;\\n } else if (valueType === '[object Uint32Array]') {\\n marker += TYPE_UINT32ARRAY;\\n } else if (valueType === '[object Float32Array]') {\\n marker += TYPE_FLOAT32ARRAY;\\n } else if (valueType === '[object Float64Array]') {\\n marker += TYPE_FLOAT64ARRAY;\\n } else {\\n callback(new Error('Failed to get type for BinaryArray'));\\n }\\n }\\n\\n callback(marker + bufferToString(buffer));\\n } else if (valueType === '[object Blob]') {\\n // Conver the blob to a binaryArray and then to a string.\\n var fileReader = new FileReader();\\n\\n fileReader.onload = function () {\\n // Backwards-compatible prefix for the blob type.\\n var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\\n\\n callback(SERIALIZED_MARKER + TYPE_BLOB + str);\\n };\\n\\n fileReader.readAsArrayBuffer(value);\\n } else {\\n try {\\n callback(JSON.stringify(value));\\n } catch (e) {\\n console.error(\\\"Couldn't convert value into a JSON string: \\\", value);\\n\\n callback(null, e);\\n }\\n }\\n}\\n\\n// Deserialize data we've inserted into a value column/field. We place\\n// special markers into our strings to mark them as encoded; this isn't\\n// as nice as a meta field, but it's the only sane thing we can do whilst\\n// keeping localStorage support intact.\\n//\\n// Oftentimes this will just deserialize JSON content, but if we have a\\n// special marker (SERIALIZED_MARKER, defined above), we will extract\\n// some kind of arraybuffer/binary data/typed array out of the string.\\nfunction deserialize(value) {\\n // If we haven't marked this string as being specially serialized (i.e.\\n // something other than serialized JSON), we can just return it and be\\n // done with it.\\n if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\\n return JSON.parse(value);\\n }\\n\\n // The following code deals with deserializing some kind of Blob or\\n // TypedArray. First we separate out the type of data we're dealing\\n // with from the data itself.\\n var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\\n var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\\n\\n var blobType;\\n // Backwards-compatible blob type serialization strategy.\\n // DBs created with older versions of localForage will simply not have the blob type.\\n if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\\n var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\\n blobType = matcher[1];\\n serializedString = serializedString.substring(matcher[0].length);\\n }\\n var buffer = stringToBuffer(serializedString);\\n\\n // Return the right type based on the code/type set during\\n // serialization.\\n switch (type) {\\n case TYPE_ARRAYBUFFER:\\n return buffer;\\n case TYPE_BLOB:\\n return createBlob([buffer], { type: blobType });\\n case TYPE_INT8ARRAY:\\n return new Int8Array(buffer);\\n case TYPE_UINT8ARRAY:\\n return new Uint8Array(buffer);\\n case TYPE_UINT8CLAMPEDARRAY:\\n return new Uint8ClampedArray(buffer);\\n case TYPE_INT16ARRAY:\\n return new Int16Array(buffer);\\n case TYPE_UINT16ARRAY:\\n return new Uint16Array(buffer);\\n case TYPE_INT32ARRAY:\\n return new Int32Array(buffer);\\n case TYPE_UINT32ARRAY:\\n return new Uint32Array(buffer);\\n case TYPE_FLOAT32ARRAY:\\n return new Float32Array(buffer);\\n case TYPE_FLOAT64ARRAY:\\n return new Float64Array(buffer);\\n default:\\n throw new Error('Unkown type: ' + type);\\n }\\n}\\n\\nvar localforageSerializer = {\\n serialize: serialize,\\n deserialize: deserialize,\\n stringToBuffer: stringToBuffer,\\n bufferToString: bufferToString\\n};\\n\\n/*\\n * Includes code from:\\n *\\n * base64-arraybuffer\\n * https://github.com/niklasvh/base64-arraybuffer\\n *\\n * Copyright (c) 2012 Niklas von Hertzen\\n * Licensed under the MIT license.\\n */\\n\\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\\n t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\\n}\\n\\n// Open the WebSQL database (automatically creates one if one didn't\\n// previously exist), using any options set in the config.\\nfunction _initStorage$1(options) {\\n var self = this;\\n var dbInfo = {\\n db: null\\n };\\n\\n if (options) {\\n for (var i in options) {\\n dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\\n }\\n }\\n\\n var dbInfoPromise = new Promise$1(function (resolve, reject) {\\n // Open the database; the openDatabase API will automatically\\n // create it for us if it doesn't exist.\\n try {\\n dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\\n } catch (e) {\\n return reject(e);\\n }\\n\\n // Create our key/value table if it doesn't exist.\\n dbInfo.db.transaction(function (t) {\\n createDbTable(t, dbInfo, function () {\\n self._dbInfo = dbInfo;\\n resolve();\\n }, function (t, error) {\\n reject(error);\\n });\\n }, reject);\\n });\\n\\n dbInfo.serializer = localforageSerializer;\\n return dbInfoPromise;\\n}\\n\\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\\n t.executeSql(sqlStatement, args, callback, function (t, error) {\\n if (error.code === error.SYNTAX_ERR) {\\n t.executeSql('SELECT name FROM sqlite_master ' + \\\"WHERE type='table' AND name = ?\\\", [dbInfo.storeName], function (t, results) {\\n if (!results.rows.length) {\\n // if the table is missing (was deleted)\\n // re-create it table and retry\\n createDbTable(t, dbInfo, function () {\\n t.executeSql(sqlStatement, args, callback, errorCallback);\\n }, errorCallback);\\n } else {\\n errorCallback(t, error);\\n }\\n }, errorCallback);\\n } else {\\n errorCallback(t, error);\\n }\\n }, errorCallback);\\n}\\n\\nfunction getItem$1(key, callback) {\\n var self = this;\\n\\n key = normalizeKey(key);\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n self.ready().then(function () {\\n var dbInfo = self._dbInfo;\\n dbInfo.db.transaction(function (t) {\\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\\n var result = results.rows.length ? results.rows.item(0).value : null;\\n\\n // Check to see if this is serialized content we need to\\n // unpack.\\n if (result) {\\n result = dbInfo.serializer.deserialize(result);\\n }\\n\\n resolve(result);\\n }, function (t, error) {\\n reject(error);\\n });\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\nfunction iterate$1(iterator, callback) {\\n var self = this;\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n self.ready().then(function () {\\n var dbInfo = self._dbInfo;\\n\\n dbInfo.db.transaction(function (t) {\\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\\n var rows = results.rows;\\n var length = rows.length;\\n\\n for (var i = 0; i < length; i++) {\\n var item = rows.item(i);\\n var result = item.value;\\n\\n // Check to see if this is serialized content\\n // we need to unpack.\\n if (result) {\\n result = dbInfo.serializer.deserialize(result);\\n }\\n\\n result = iterator(result, item.key, i + 1);\\n\\n // void(0) prevents problems with redefinition\\n // of `undefined`.\\n if (result !== void 0) {\\n resolve(result);\\n return;\\n }\\n }\\n\\n resolve();\\n }, function (t, error) {\\n reject(error);\\n });\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\nfunction _setItem(key, value, callback, retriesLeft) {\\n var self = this;\\n\\n key = normalizeKey(key);\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n self.ready().then(function () {\\n // The localStorage API doesn't return undefined values in an\\n // \\\"expected\\\" way, so undefined is always cast to null in all\\n // drivers. See: https://github.com/mozilla/localForage/pull/42\\n if (value === undefined) {\\n value = null;\\n }\\n\\n // Save the original value to pass to the callback.\\n var originalValue = value;\\n\\n var dbInfo = self._dbInfo;\\n dbInfo.serializer.serialize(value, function (value, error) {\\n if (error) {\\n reject(error);\\n } else {\\n dbInfo.db.transaction(function (t) {\\n tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\\n resolve(originalValue);\\n }, function (t, error) {\\n reject(error);\\n });\\n }, function (sqlError) {\\n // The transaction failed; check\\n // to see if it's a quota error.\\n if (sqlError.code === sqlError.QUOTA_ERR) {\\n // We reject the callback outright for now, but\\n // it's worth trying to re-run the transaction.\\n // Even if the user accepts the prompt to use\\n // more storage on Safari, this error will\\n // be called.\\n //\\n // Try to re-run the transaction.\\n if (retriesLeft > 0) {\\n resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\\n return;\\n }\\n reject(sqlError);\\n }\\n });\\n }\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\nfunction setItem$1(key, value, callback) {\\n return _setItem.apply(this, [key, value, callback, 1]);\\n}\\n\\nfunction removeItem$1(key, callback) {\\n var self = this;\\n\\n key = normalizeKey(key);\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n self.ready().then(function () {\\n var dbInfo = self._dbInfo;\\n dbInfo.db.transaction(function (t) {\\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\\n resolve();\\n }, function (t, error) {\\n reject(error);\\n });\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\n// Deletes every item in the table.\\n// TODO: Find out if this resets the AUTO_INCREMENT number.\\nfunction clear$1(callback) {\\n var self = this;\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n self.ready().then(function () {\\n var dbInfo = self._dbInfo;\\n dbInfo.db.transaction(function (t) {\\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\\n resolve();\\n }, function (t, error) {\\n reject(error);\\n });\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\n// Does a simple `COUNT(key)` to get the number of items stored in\\n// localForage.\\nfunction length$1(callback) {\\n var self = this;\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n self.ready().then(function () {\\n var dbInfo = self._dbInfo;\\n dbInfo.db.transaction(function (t) {\\n // Ahhh, SQL makes this one soooooo easy.\\n tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\\n var result = results.rows.item(0).c;\\n resolve(result);\\n }, function (t, error) {\\n reject(error);\\n });\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\n// Return the key located at key index X; essentially gets the key from a\\n// `WHERE id = ?`. This is the most efficient way I can think to implement\\n// this rarely-used (in my experience) part of the API, but it can seem\\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\\n// the ID of each key will change every time it's updated. Perhaps a stored\\n// procedure for the `setItem()` SQL would solve this problem?\\n// TODO: Don't change ID on `setItem()`.\\nfunction key$1(n, callback) {\\n var self = this;\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n self.ready().then(function () {\\n var dbInfo = self._dbInfo;\\n dbInfo.db.transaction(function (t) {\\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\\n var result = results.rows.length ? results.rows.item(0).key : null;\\n resolve(result);\\n }, function (t, error) {\\n reject(error);\\n });\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\nfunction keys$1(callback) {\\n var self = this;\\n\\n var promise = new Promise$1(function (resolve, reject) {\\n self.ready().then(function () {\\n var dbInfo = self._dbInfo;\\n dbInfo.db.transaction(function (t) {\\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\\n var keys = [];\\n\\n for (var i = 0; i < results.rows.length; i++) {\\n keys.push(results.rows.item(i).key);\\n }\\n\\n resolve(keys);\\n }, function (t, error) {\\n reject(error);\\n });\\n });\\n })[\\\"catch\\\"](reject);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\n// https://www.w3.org/TR/webdatabase/#databases\\n// > There is no way to enumerate or delete the databases available for an origin from this API.\\nfunction getAllStoreNames(db) {\\n return new Promise$1(function (resolve, reject) {\\n db.transaction(function (t) {\\n t.executeSql('SELECT name FROM sqlite_master ' + \\\"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\\\", [], function (t, results) {\\n var storeNames = [];\\n\\n for (var i = 0; i < results.rows.length; i++) {\\n storeNames.push(results.rows.item(i).name);\\n }\\n\\n resolve({\\n db: db,\\n storeNames: storeNames\\n });\\n }, function (t, error) {\\n reject(error);\\n });\\n }, function (sqlError) {\\n reject(sqlError);\\n });\\n });\\n}\\n\\nfunction dropInstance$1(options, callback) {\\n callback = getCallback.apply(this, arguments);\\n\\n var currentConfig = this.config();\\n options = typeof options !== 'function' && options || {};\\n if (!options.name) {\\n options.name = options.name || currentConfig.name;\\n options.storeName = options.storeName || currentConfig.storeName;\\n }\\n\\n var self = this;\\n var promise;\\n if (!options.name) {\\n promise = Promise$1.reject('Invalid arguments');\\n } else {\\n promise = new Promise$1(function (resolve) {\\n var db;\\n if (options.name === currentConfig.name) {\\n // use the db reference of the current instance\\n db = self._dbInfo.db;\\n } else {\\n db = openDatabase(options.name, '', '', 0);\\n }\\n\\n if (!options.storeName) {\\n // drop all database tables\\n resolve(getAllStoreNames(db));\\n } else {\\n resolve({\\n db: db,\\n storeNames: [options.storeName]\\n });\\n }\\n }).then(function (operationInfo) {\\n return new Promise$1(function (resolve, reject) {\\n operationInfo.db.transaction(function (t) {\\n function dropTable(storeName) {\\n return new Promise$1(function (resolve, reject) {\\n t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\\n resolve();\\n }, function (t, error) {\\n reject(error);\\n });\\n });\\n }\\n\\n var operations = [];\\n for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\\n operations.push(dropTable(operationInfo.storeNames[i]));\\n }\\n\\n Promise$1.all(operations).then(function () {\\n resolve();\\n })[\\\"catch\\\"](function (e) {\\n reject(e);\\n });\\n }, function (sqlError) {\\n reject(sqlError);\\n });\\n });\\n });\\n }\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\nvar webSQLStorage = {\\n _driver: 'webSQLStorage',\\n _initStorage: _initStorage$1,\\n _support: isWebSQLValid(),\\n iterate: iterate$1,\\n getItem: getItem$1,\\n setItem: setItem$1,\\n removeItem: removeItem$1,\\n clear: clear$1,\\n length: length$1,\\n key: key$1,\\n keys: keys$1,\\n dropInstance: dropInstance$1\\n};\\n\\nfunction isLocalStorageValid() {\\n try {\\n return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\\n // in IE8 typeof localStorage.setItem === 'object'\\n !!localStorage.setItem;\\n } catch (e) {\\n return false;\\n }\\n}\\n\\nfunction _getKeyPrefix(options, defaultConfig) {\\n var keyPrefix = options.name + '/';\\n\\n if (options.storeName !== defaultConfig.storeName) {\\n keyPrefix += options.storeName + '/';\\n }\\n return keyPrefix;\\n}\\n\\n// Check if localStorage throws when saving an item\\nfunction checkIfLocalStorageThrows() {\\n var localStorageTestKey = '_localforage_support_test';\\n\\n try {\\n localStorage.setItem(localStorageTestKey, true);\\n localStorage.removeItem(localStorageTestKey);\\n\\n return false;\\n } catch (e) {\\n return true;\\n }\\n}\\n\\n// Check if localStorage is usable and allows to save an item\\n// This method checks if localStorage is usable in Safari Private Browsing\\n// mode, or in any other case where the available quota for localStorage\\n// is 0 and there wasn't any saved items yet.\\nfunction _isLocalStorageUsable() {\\n return !checkIfLocalStorageThrows() || localStorage.length > 0;\\n}\\n\\n// Config the localStorage backend, using options set in the config.\\nfunction _initStorage$2(options) {\\n var self = this;\\n var dbInfo = {};\\n if (options) {\\n for (var i in options) {\\n dbInfo[i] = options[i];\\n }\\n }\\n\\n dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\\n\\n if (!_isLocalStorageUsable()) {\\n return Promise$1.reject();\\n }\\n\\n self._dbInfo = dbInfo;\\n dbInfo.serializer = localforageSerializer;\\n\\n return Promise$1.resolve();\\n}\\n\\n// Remove all keys from the datastore, effectively destroying all data in\\n// the app's key/value store!\\nfunction clear$2(callback) {\\n var self = this;\\n var promise = self.ready().then(function () {\\n var keyPrefix = self._dbInfo.keyPrefix;\\n\\n for (var i = localStorage.length - 1; i >= 0; i--) {\\n var key = localStorage.key(i);\\n\\n if (key.indexOf(keyPrefix) === 0) {\\n localStorage.removeItem(key);\\n }\\n }\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\n// Retrieve an item from the store. Unlike the original async_storage\\n// library in Gaia, we don't modify return values at all. If a key's value\\n// is `undefined`, we pass that value to the callback function.\\nfunction getItem$2(key, callback) {\\n var self = this;\\n\\n key = normalizeKey(key);\\n\\n var promise = self.ready().then(function () {\\n var dbInfo = self._dbInfo;\\n var result = localStorage.getItem(dbInfo.keyPrefix + key);\\n\\n // If a result was found, parse it from the serialized\\n // string into a JS object. If result isn't truthy, the key\\n // is likely undefined and we'll pass it straight to the\\n // callback.\\n if (result) {\\n result = dbInfo.serializer.deserialize(result);\\n }\\n\\n return result;\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\n// Iterate over all items in the store.\\nfunction iterate$2(iterator, callback) {\\n var self = this;\\n\\n var promise = self.ready().then(function () {\\n var dbInfo = self._dbInfo;\\n var keyPrefix = dbInfo.keyPrefix;\\n var keyPrefixLength = keyPrefix.length;\\n var length = localStorage.length;\\n\\n // We use a dedicated iterator instead of the `i` variable below\\n // so other keys we fetch in localStorage aren't counted in\\n // the `iterationNumber` argument passed to the `iterate()`\\n // callback.\\n //\\n // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\\n var iterationNumber = 1;\\n\\n for (var i = 0; i < length; i++) {\\n var key = localStorage.key(i);\\n if (key.indexOf(keyPrefix) !== 0) {\\n continue;\\n }\\n var value = localStorage.getItem(key);\\n\\n // If a result was found, parse it from the serialized\\n // string into a JS object. If result isn't truthy, the\\n // key is likely undefined and we'll pass it straight\\n // to the iterator.\\n if (value) {\\n value = dbInfo.serializer.deserialize(value);\\n }\\n\\n value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\\n\\n if (value !== void 0) {\\n return value;\\n }\\n }\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\n// Same as localStorage's key() method, except takes a callback.\\nfunction key$2(n, callback) {\\n var self = this;\\n var promise = self.ready().then(function () {\\n var dbInfo = self._dbInfo;\\n var result;\\n try {\\n result = localStorage.key(n);\\n } catch (error) {\\n result = null;\\n }\\n\\n // Remove the prefix from the key, if a key is found.\\n if (result) {\\n result = result.substring(dbInfo.keyPrefix.length);\\n }\\n\\n return result;\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\nfunction keys$2(callback) {\\n var self = this;\\n var promise = self.ready().then(function () {\\n var dbInfo = self._dbInfo;\\n var length = localStorage.length;\\n var keys = [];\\n\\n for (var i = 0; i < length; i++) {\\n var itemKey = localStorage.key(i);\\n if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\\n keys.push(itemKey.substring(dbInfo.keyPrefix.length));\\n }\\n }\\n\\n return keys;\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\n// Supply the number of keys in the datastore to the callback function.\\nfunction length$2(callback) {\\n var self = this;\\n var promise = self.keys().then(function (keys) {\\n return keys.length;\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\n// Remove an item from the store, nice and simple.\\nfunction removeItem$2(key, callback) {\\n var self = this;\\n\\n key = normalizeKey(key);\\n\\n var promise = self.ready().then(function () {\\n var dbInfo = self._dbInfo;\\n localStorage.removeItem(dbInfo.keyPrefix + key);\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\n// Set a key's value and run an optional callback once the value is set.\\n// Unlike Gaia's implementation, the callback function is passed the value,\\n// in case you want to operate on that value only after you're sure it\\n// saved, or something like that.\\nfunction setItem$2(key, value, callback) {\\n var self = this;\\n\\n key = normalizeKey(key);\\n\\n var promise = self.ready().then(function () {\\n // Convert undefined values to null.\\n // https://github.com/mozilla/localForage/pull/42\\n if (value === undefined) {\\n value = null;\\n }\\n\\n // Save the original value to pass to the callback.\\n var originalValue = value;\\n\\n return new Promise$1(function (resolve, reject) {\\n var dbInfo = self._dbInfo;\\n dbInfo.serializer.serialize(value, function (value, error) {\\n if (error) {\\n reject(error);\\n } else {\\n try {\\n localStorage.setItem(dbInfo.keyPrefix + key, value);\\n resolve(originalValue);\\n } catch (e) {\\n // localStorage capacity exceeded.\\n // TODO: Make this a specific error/event.\\n if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\\n reject(e);\\n }\\n reject(e);\\n }\\n }\\n });\\n });\\n });\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\nfunction dropInstance$2(options, callback) {\\n callback = getCallback.apply(this, arguments);\\n\\n options = typeof options !== 'function' && options || {};\\n if (!options.name) {\\n var currentConfig = this.config();\\n options.name = options.name || currentConfig.name;\\n options.storeName = options.storeName || currentConfig.storeName;\\n }\\n\\n var self = this;\\n var promise;\\n if (!options.name) {\\n promise = Promise$1.reject('Invalid arguments');\\n } else {\\n promise = new Promise$1(function (resolve) {\\n if (!options.storeName) {\\n resolve(options.name + '/');\\n } else {\\n resolve(_getKeyPrefix(options, self._defaultConfig));\\n }\\n }).then(function (keyPrefix) {\\n for (var i = localStorage.length - 1; i >= 0; i--) {\\n var key = localStorage.key(i);\\n\\n if (key.indexOf(keyPrefix) === 0) {\\n localStorage.removeItem(key);\\n }\\n }\\n });\\n }\\n\\n executeCallback(promise, callback);\\n return promise;\\n}\\n\\nvar localStorageWrapper = {\\n _driver: 'localStorageWrapper',\\n _initStorage: _initStorage$2,\\n _support: isLocalStorageValid(),\\n iterate: iterate$2,\\n getItem: getItem$2,\\n setItem: setItem$2,\\n removeItem: removeItem$2,\\n clear: clear$2,\\n length: length$2,\\n key: key$2,\\n keys: keys$2,\\n dropInstance: dropInstance$2\\n};\\n\\nvar sameValue = function sameValue(x, y) {\\n return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\\n};\\n\\nvar includes = function includes(array, searchElement) {\\n var len = array.length;\\n var i = 0;\\n while (i < len) {\\n if (sameValue(array[i], searchElement)) {\\n return true;\\n }\\n i++;\\n }\\n\\n return false;\\n};\\n\\nvar isArray = Array.isArray || function (arg) {\\n return Object.prototype.toString.call(arg) === '[object Array]';\\n};\\n\\n// Drivers are stored here when `defineDriver()` is called.\\n// They are shared across all instances of localForage.\\nvar DefinedDrivers = {};\\n\\nvar DriverSupport = {};\\n\\nvar DefaultDrivers = {\\n INDEXEDDB: asyncStorage,\\n WEBSQL: webSQLStorage,\\n LOCALSTORAGE: localStorageWrapper\\n};\\n\\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\\n\\nvar OptionalDriverMethods = ['dropInstance'];\\n\\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\\n\\nvar DefaultConfig = {\\n description: '',\\n driver: DefaultDriverOrder.slice(),\\n name: 'localforage',\\n // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\\n // we can use without a prompt.\\n size: 4980736,\\n storeName: 'keyvaluepairs',\\n version: 1.0\\n};\\n\\nfunction callWhenReady(localForageInstance, libraryMethod) {\\n localForageInstance[libraryMethod] = function () {\\n var _args = arguments;\\n return localForageInstance.ready().then(function () {\\n return localForageInstance[libraryMethod].apply(localForageInstance, _args);\\n });\\n };\\n}\\n\\nfunction extend() {\\n for (var i = 1; i < arguments.length; i++) {\\n var arg = arguments[i];\\n\\n if (arg) {\\n for (var _key in arg) {\\n if (arg.hasOwnProperty(_key)) {\\n if (isArray(arg[_key])) {\\n arguments[0][_key] = arg[_key].slice();\\n } else {\\n arguments[0][_key] = arg[_key];\\n }\\n }\\n }\\n }\\n }\\n\\n return arguments[0];\\n}\\n\\nvar LocalForage = function () {\\n function LocalForage(options) {\\n _classCallCheck(this, LocalForage);\\n\\n for (var driverTypeKey in DefaultDrivers) {\\n if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\\n var driver = DefaultDrivers[driverTypeKey];\\n var driverName = driver._driver;\\n this[driverTypeKey] = driverName;\\n\\n if (!DefinedDrivers[driverName]) {\\n // we don't need to wait for the promise,\\n // since the default drivers can be defined\\n // in a blocking manner\\n this.defineDriver(driver);\\n }\\n }\\n }\\n\\n this._defaultConfig = extend({}, DefaultConfig);\\n this._config = extend({}, this._defaultConfig, options);\\n this._driverSet = null;\\n this._initDriver = null;\\n this._ready = false;\\n this._dbInfo = null;\\n\\n this._wrapLibraryMethodsWithReady();\\n this.setDriver(this._config.driver)[\\\"catch\\\"](function () {});\\n }\\n\\n // Set any config values for localForage; can be called anytime before\\n // the first API call (e.g. `getItem`, `setItem`).\\n // We loop through options so we don't overwrite existing config\\n // values.\\n\\n\\n LocalForage.prototype.config = function config(options) {\\n // If the options argument is an object, we use it to set values.\\n // Otherwise, we return either a specified config value or all\\n // config values.\\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\\n // If localforage is ready and fully initialized, we can't set\\n // any new configuration values. Instead, we return an error.\\n if (this._ready) {\\n return new Error(\\\"Can't call config() after localforage \\\" + 'has been used.');\\n }\\n\\n for (var i in options) {\\n if (i === 'storeName') {\\n options[i] = options[i].replace(/\\\\W/g, '_');\\n }\\n\\n if (i === 'version' && typeof options[i] !== 'number') {\\n return new Error('Database version must be a number.');\\n }\\n\\n this._config[i] = options[i];\\n }\\n\\n // after all config options are set and\\n // the driver option is used, try setting it\\n if ('driver' in options && options.driver) {\\n return this.setDriver(this._config.driver);\\n }\\n\\n return true;\\n } else if (typeof options === 'string') {\\n return this._config[options];\\n } else {\\n return this._config;\\n }\\n };\\n\\n // Used to define a custom driver, shared across all instances of\\n // localForage.\\n\\n\\n LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\\n var promise = new Promise$1(function (resolve, reject) {\\n try {\\n var driverName = driverObject._driver;\\n var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\\n\\n // A driver name should be defined and not overlap with the\\n // library-defined, default drivers.\\n if (!driverObject._driver) {\\n reject(complianceError);\\n return;\\n }\\n\\n var driverMethods = LibraryMethods.concat('_initStorage');\\n for (var i = 0, len = driverMethods.length; i < len; i++) {\\n var driverMethodName = driverMethods[i];\\n\\n // when the property is there,\\n // it should be a method even when optional\\n var isRequired = !includes(OptionalDriverMethods, driverMethodName);\\n if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\\n reject(complianceError);\\n return;\\n }\\n }\\n\\n var configureMissingMethods = function configureMissingMethods() {\\n var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\\n return function () {\\n var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\\n var promise = Promise$1.reject(error);\\n executeCallback(promise, arguments[arguments.length - 1]);\\n return promise;\\n };\\n };\\n\\n for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\\n var optionalDriverMethod = OptionalDriverMethods[_i];\\n if (!driverObject[optionalDriverMethod]) {\\n driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\\n }\\n }\\n };\\n\\n configureMissingMethods();\\n\\n var setDriverSupport = function setDriverSupport(support) {\\n if (DefinedDrivers[driverName]) {\\n console.info('Redefining LocalForage driver: ' + driverName);\\n }\\n DefinedDrivers[driverName] = driverObject;\\n DriverSupport[driverName] = support;\\n // don't use a then, so that we can define\\n // drivers that have simple _support methods\\n // in a blocking manner\\n resolve();\\n };\\n\\n if ('_support' in driverObject) {\\n if (driverObject._support && typeof driverObject._support === 'function') {\\n driverObject._support().then(setDriverSupport, reject);\\n } else {\\n setDriverSupport(!!driverObject._support);\\n }\\n } else {\\n setDriverSupport(true);\\n }\\n } catch (e) {\\n reject(e);\\n }\\n });\\n\\n executeTwoCallbacks(promise, callback, errorCallback);\\n return promise;\\n };\\n\\n LocalForage.prototype.driver = function driver() {\\n return this._driver || null;\\n };\\n\\n LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\\n var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\\n\\n executeTwoCallbacks(getDriverPromise, callback, errorCallback);\\n return getDriverPromise;\\n };\\n\\n LocalForage.prototype.getSerializer = function getSerializer(callback) {\\n var serializerPromise = Promise$1.resolve(localforageSerializer);\\n executeTwoCallbacks(serializerPromise, callback);\\n return serializerPromise;\\n };\\n\\n LocalForage.prototype.ready = function ready(callback) {\\n var self = this;\\n\\n var promise = self._driverSet.then(function () {\\n if (self._ready === null) {\\n self._ready = self._initDriver();\\n }\\n\\n return self._ready;\\n });\\n\\n executeTwoCallbacks(promise, callback, callback);\\n return promise;\\n };\\n\\n LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\\n var self = this;\\n\\n if (!isArray(drivers)) {\\n drivers = [drivers];\\n }\\n\\n var supportedDrivers = this._getSupportedDrivers(drivers);\\n\\n function setDriverToConfig() {\\n self._config.driver = self.driver();\\n }\\n\\n function extendSelfWithDriver(driver) {\\n self._extend(driver);\\n setDriverToConfig();\\n\\n self._ready = self._initStorage(self._config);\\n return self._ready;\\n }\\n\\n function initDriver(supportedDrivers) {\\n return function () {\\n var currentDriverIndex = 0;\\n\\n function driverPromiseLoop() {\\n while (currentDriverIndex < supportedDrivers.length) {\\n var driverName = supportedDrivers[currentDriverIndex];\\n currentDriverIndex++;\\n\\n self._dbInfo = null;\\n self._ready = null;\\n\\n return self.getDriver(driverName).then(extendSelfWithDriver)[\\\"catch\\\"](driverPromiseLoop);\\n }\\n\\n setDriverToConfig();\\n var error = new Error('No available storage method found.');\\n self._driverSet = Promise$1.reject(error);\\n return self._driverSet;\\n }\\n\\n return driverPromiseLoop();\\n };\\n }\\n\\n // There might be a driver initialization in progress\\n // so wait for it to finish in order to avoid a possible\\n // race condition to set _dbInfo\\n var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\\\"catch\\\"](function () {\\n return Promise$1.resolve();\\n }) : Promise$1.resolve();\\n\\n this._driverSet = oldDriverSetDone.then(function () {\\n var driverName = supportedDrivers[0];\\n self._dbInfo = null;\\n self._ready = null;\\n\\n return self.getDriver(driverName).then(function (driver) {\\n self._driver = driver._driver;\\n setDriverToConfig();\\n self._wrapLibraryMethodsWithReady();\\n self._initDriver = initDriver(supportedDrivers);\\n });\\n })[\\\"catch\\\"](function () {\\n setDriverToConfig();\\n var error = new Error('No available storage method found.');\\n self._driverSet = Promise$1.reject(error);\\n return self._driverSet;\\n });\\n\\n executeTwoCallbacks(this._driverSet, callback, errorCallback);\\n return this._driverSet;\\n };\\n\\n LocalForage.prototype.supports = function supports(driverName) {\\n return !!DriverSupport[driverName];\\n };\\n\\n LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\\n extend(this, libraryMethodsAndProperties);\\n };\\n\\n LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\\n var supportedDrivers = [];\\n for (var i = 0, len = drivers.length; i < len; i++) {\\n var driverName = drivers[i];\\n if (this.supports(driverName)) {\\n supportedDrivers.push(driverName);\\n }\\n }\\n return supportedDrivers;\\n };\\n\\n LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\\n // Add a stub for each driver API method that delays the call to the\\n // corresponding driver method until localForage is ready. These stubs\\n // will be replaced by the driver methods as soon as the driver is\\n // loaded, so there is no performance impact.\\n for (var i = 0, len = LibraryMethods.length; i < len; i++) {\\n callWhenReady(this, LibraryMethods[i]);\\n }\\n };\\n\\n LocalForage.prototype.createInstance = function createInstance(options) {\\n return new LocalForage(options);\\n };\\n\\n return LocalForage;\\n}();\\n\\n// The actual localForage object that we expose as a module or via a\\n// global. It's extended by pulling in one of our other libraries.\\n\\n\\nvar localforage_js = new LocalForage();\\n\\nmodule.exports = localforage_js;\\n\\n},{\\\"3\\\":3}]},{},[4])(4)\\n});\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/localforage/dist/localforage.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/protobufjs/minimal.js\":\n/*!********************************************!*\\\n !*** ./node_modules/protobufjs/minimal.js ***!\n \\********************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"// minimal library entry point.\\n\\n\\nmodule.exports = __webpack_require__(/*! ./src/index-minimal */ \\\"./node_modules/protobufjs/src/index-minimal.js\\\");\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/protobufjs/minimal.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/protobufjs/src/index-minimal.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/protobufjs/src/index-minimal.js ***!\n \\******************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\nvar protobuf = exports;\\n\\n/**\\n * Build type, one of `\\\"full\\\"`, `\\\"light\\\"` or `\\\"minimal\\\"`.\\n * @name build\\n * @type {string}\\n * @const\\n */\\nprotobuf.build = \\\"minimal\\\";\\n\\n// Serialization\\nprotobuf.Writer = __webpack_require__(/*! ./writer */ \\\"./node_modules/protobufjs/src/writer.js\\\");\\nprotobuf.BufferWriter = __webpack_require__(/*! ./writer_buffer */ \\\"./node_modules/protobufjs/src/writer_buffer.js\\\");\\nprotobuf.Reader = __webpack_require__(/*! ./reader */ \\\"./node_modules/protobufjs/src/reader.js\\\");\\nprotobuf.BufferReader = __webpack_require__(/*! ./reader_buffer */ \\\"./node_modules/protobufjs/src/reader_buffer.js\\\");\\n\\n// Utility\\nprotobuf.util = __webpack_require__(/*! ./util/minimal */ \\\"./node_modules/protobufjs/src/util/minimal.js\\\");\\nprotobuf.rpc = __webpack_require__(/*! ./rpc */ \\\"./node_modules/protobufjs/src/rpc.js\\\");\\nprotobuf.roots = __webpack_require__(/*! ./roots */ \\\"./node_modules/protobufjs/src/roots.js\\\");\\nprotobuf.configure = configure;\\n\\n/* istanbul ignore next */\\n/**\\n * Reconfigures the library according to the environment.\\n * @returns {undefined}\\n */\\nfunction configure() {\\n protobuf.Reader._configure(protobuf.BufferReader);\\n protobuf.util._configure();\\n}\\n\\n// Set up buffer utility according to the environment\\nprotobuf.Writer._configure(protobuf.BufferWriter);\\nconfigure();\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/protobufjs/src/index-minimal.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/protobufjs/src/reader.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/protobufjs/src/reader.js ***!\n \\***********************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\nmodule.exports = Reader;\\n\\nvar util = __webpack_require__(/*! ./util/minimal */ \\\"./node_modules/protobufjs/src/util/minimal.js\\\");\\n\\nvar BufferReader; // cyclic\\n\\nvar LongBits = util.LongBits,\\n utf8 = util.utf8;\\n\\n/* istanbul ignore next */\\nfunction indexOutOfRange(reader, writeLength) {\\n return RangeError(\\\"index out of range: \\\" + reader.pos + \\\" + \\\" + (writeLength || 1) + \\\" > \\\" + reader.len);\\n}\\n\\n/**\\n * Constructs a new reader instance using the specified buffer.\\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\\n * @constructor\\n * @param {Uint8Array} buffer Buffer to read from\\n */\\nfunction Reader(buffer) {\\n\\n /**\\n * Read buffer.\\n * @type {Uint8Array}\\n */\\n this.buf = buffer;\\n\\n /**\\n * Read buffer position.\\n * @type {number}\\n */\\n this.pos = 0;\\n\\n /**\\n * Read buffer length.\\n * @type {number}\\n */\\n this.len = buffer.length;\\n}\\n\\nvar create_array = typeof Uint8Array !== \\\"undefined\\\"\\n ? function create_typed_array(buffer) {\\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\\n return new Reader(buffer);\\n throw Error(\\\"illegal buffer\\\");\\n }\\n /* istanbul ignore next */\\n : function create_array(buffer) {\\n if (Array.isArray(buffer))\\n return new Reader(buffer);\\n throw Error(\\\"illegal buffer\\\");\\n };\\n\\n/**\\n * Creates a new reader using the specified buffer.\\n * @function\\n * @param {Uint8Array|Buffer} buffer Buffer to read from\\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\\n * @throws {Error} If `buffer` is not a valid buffer\\n */\\nReader.create = util.Buffer\\n ? function create_buffer_setup(buffer) {\\n return (Reader.create = function create_buffer(buffer) {\\n return util.Buffer.isBuffer(buffer)\\n ? new BufferReader(buffer)\\n /* istanbul ignore next */\\n : create_array(buffer);\\n })(buffer);\\n }\\n /* istanbul ignore next */\\n : create_array;\\n\\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\\n\\n/**\\n * Reads a varint as an unsigned 32 bit value.\\n * @function\\n * @returns {number} Value read\\n */\\nReader.prototype.uint32 = (function read_uint32_setup() {\\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\\n return function read_uint32() {\\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\\n\\n /* istanbul ignore if */\\n if ((this.pos += 5) > this.len) {\\n this.pos = this.len;\\n throw indexOutOfRange(this, 10);\\n }\\n return value;\\n };\\n})();\\n\\n/**\\n * Reads a varint as a signed 32 bit value.\\n * @returns {number} Value read\\n */\\nReader.prototype.int32 = function read_int32() {\\n return this.uint32() | 0;\\n};\\n\\n/**\\n * Reads a zig-zag encoded varint as a signed 32 bit value.\\n * @returns {number} Value read\\n */\\nReader.prototype.sint32 = function read_sint32() {\\n var value = this.uint32();\\n return value >>> 1 ^ -(value & 1) | 0;\\n};\\n\\n/* eslint-disable no-invalid-this */\\n\\nfunction readLongVarint() {\\n // tends to deopt with local vars for octet etc.\\n var bits = new LongBits(0, 0);\\n var i = 0;\\n if (this.len - this.pos > 4) { // fast route (lo)\\n for (; i < 4; ++i) {\\n // 1st..4th\\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\\n if (this.buf[this.pos++] < 128)\\n return bits;\\n }\\n // 5th\\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\\n if (this.buf[this.pos++] < 128)\\n return bits;\\n i = 0;\\n } else {\\n for (; i < 3; ++i) {\\n /* istanbul ignore if */\\n if (this.pos >= this.len)\\n throw indexOutOfRange(this);\\n // 1st..3th\\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\\n if (this.buf[this.pos++] < 128)\\n return bits;\\n }\\n // 4th\\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\\n return bits;\\n }\\n if (this.len - this.pos > 4) { // fast route (hi)\\n for (; i < 5; ++i) {\\n // 6th..10th\\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\\n if (this.buf[this.pos++] < 128)\\n return bits;\\n }\\n } else {\\n for (; i < 5; ++i) {\\n /* istanbul ignore if */\\n if (this.pos >= this.len)\\n throw indexOutOfRange(this);\\n // 6th..10th\\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\\n if (this.buf[this.pos++] < 128)\\n return bits;\\n }\\n }\\n /* istanbul ignore next */\\n throw Error(\\\"invalid varint encoding\\\");\\n}\\n\\n/* eslint-enable no-invalid-this */\\n\\n/**\\n * Reads a varint as a signed 64 bit value.\\n * @name Reader#int64\\n * @function\\n * @returns {Long} Value read\\n */\\n\\n/**\\n * Reads a varint as an unsigned 64 bit value.\\n * @name Reader#uint64\\n * @function\\n * @returns {Long} Value read\\n */\\n\\n/**\\n * Reads a zig-zag encoded varint as a signed 64 bit value.\\n * @name Reader#sint64\\n * @function\\n * @returns {Long} Value read\\n */\\n\\n/**\\n * Reads a varint as a boolean.\\n * @returns {boolean} Value read\\n */\\nReader.prototype.bool = function read_bool() {\\n return this.uint32() !== 0;\\n};\\n\\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\\n return (buf[end - 4]\\n | buf[end - 3] << 8\\n | buf[end - 2] << 16\\n | buf[end - 1] << 24) >>> 0;\\n}\\n\\n/**\\n * Reads fixed 32 bits as an unsigned 32 bit integer.\\n * @returns {number} Value read\\n */\\nReader.prototype.fixed32 = function read_fixed32() {\\n\\n /* istanbul ignore if */\\n if (this.pos + 4 > this.len)\\n throw indexOutOfRange(this, 4);\\n\\n return readFixed32_end(this.buf, this.pos += 4);\\n};\\n\\n/**\\n * Reads fixed 32 bits as a signed 32 bit integer.\\n * @returns {number} Value read\\n */\\nReader.prototype.sfixed32 = function read_sfixed32() {\\n\\n /* istanbul ignore if */\\n if (this.pos + 4 > this.len)\\n throw indexOutOfRange(this, 4);\\n\\n return readFixed32_end(this.buf, this.pos += 4) | 0;\\n};\\n\\n/* eslint-disable no-invalid-this */\\n\\nfunction readFixed64(/* this: Reader */) {\\n\\n /* istanbul ignore if */\\n if (this.pos + 8 > this.len)\\n throw indexOutOfRange(this, 8);\\n\\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\\n}\\n\\n/* eslint-enable no-invalid-this */\\n\\n/**\\n * Reads fixed 64 bits.\\n * @name Reader#fixed64\\n * @function\\n * @returns {Long} Value read\\n */\\n\\n/**\\n * Reads zig-zag encoded fixed 64 bits.\\n * @name Reader#sfixed64\\n * @function\\n * @returns {Long} Value read\\n */\\n\\n/**\\n * Reads a float (32 bit) as a number.\\n * @function\\n * @returns {number} Value read\\n */\\nReader.prototype.float = function read_float() {\\n\\n /* istanbul ignore if */\\n if (this.pos + 4 > this.len)\\n throw indexOutOfRange(this, 4);\\n\\n var value = util.float.readFloatLE(this.buf, this.pos);\\n this.pos += 4;\\n return value;\\n};\\n\\n/**\\n * Reads a double (64 bit float) as a number.\\n * @function\\n * @returns {number} Value read\\n */\\nReader.prototype.double = function read_double() {\\n\\n /* istanbul ignore if */\\n if (this.pos + 8 > this.len)\\n throw indexOutOfRange(this, 4);\\n\\n var value = util.float.readDoubleLE(this.buf, this.pos);\\n this.pos += 8;\\n return value;\\n};\\n\\n/**\\n * Reads a sequence of bytes preceeded by its length as a varint.\\n * @returns {Uint8Array} Value read\\n */\\nReader.prototype.bytes = function read_bytes() {\\n var length = this.uint32(),\\n start = this.pos,\\n end = this.pos + length;\\n\\n /* istanbul ignore if */\\n if (end > this.len)\\n throw indexOutOfRange(this, length);\\n\\n this.pos += length;\\n if (Array.isArray(this.buf)) // plain array\\n return this.buf.slice(start, end);\\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\\n ? new this.buf.constructor(0)\\n : this._slice.call(this.buf, start, end);\\n};\\n\\n/**\\n * Reads a string preceeded by its byte length as a varint.\\n * @returns {string} Value read\\n */\\nReader.prototype.string = function read_string() {\\n var bytes = this.bytes();\\n return utf8.read(bytes, 0, bytes.length);\\n};\\n\\n/**\\n * Skips the specified number of bytes if specified, otherwise skips a varint.\\n * @param {number} [length] Length if known, otherwise a varint is assumed\\n * @returns {Reader} `this`\\n */\\nReader.prototype.skip = function skip(length) {\\n if (typeof length === \\\"number\\\") {\\n /* istanbul ignore if */\\n if (this.pos + length > this.len)\\n throw indexOutOfRange(this, length);\\n this.pos += length;\\n } else {\\n do {\\n /* istanbul ignore if */\\n if (this.pos >= this.len)\\n throw indexOutOfRange(this);\\n } while (this.buf[this.pos++] & 128);\\n }\\n return this;\\n};\\n\\n/**\\n * Skips the next element of the specified wire type.\\n * @param {number} wireType Wire type received\\n * @returns {Reader} `this`\\n */\\nReader.prototype.skipType = function(wireType) {\\n switch (wireType) {\\n case 0:\\n this.skip();\\n break;\\n case 1:\\n this.skip(8);\\n break;\\n case 2:\\n this.skip(this.uint32());\\n break;\\n case 3:\\n while ((wireType = this.uint32() & 7) !== 4) {\\n this.skipType(wireType);\\n }\\n break;\\n case 5:\\n this.skip(4);\\n break;\\n\\n /* istanbul ignore next */\\n default:\\n throw Error(\\\"invalid wire type \\\" + wireType + \\\" at offset \\\" + this.pos);\\n }\\n return this;\\n};\\n\\nReader._configure = function(BufferReader_) {\\n BufferReader = BufferReader_;\\n\\n var fn = util.Long ? \\\"toLong\\\" : /* istanbul ignore next */ \\\"toNumber\\\";\\n util.merge(Reader.prototype, {\\n\\n int64: function read_int64() {\\n return readLongVarint.call(this)[fn](false);\\n },\\n\\n uint64: function read_uint64() {\\n return readLongVarint.call(this)[fn](true);\\n },\\n\\n sint64: function read_sint64() {\\n return readLongVarint.call(this).zzDecode()[fn](false);\\n },\\n\\n fixed64: function read_fixed64() {\\n return readFixed64.call(this)[fn](true);\\n },\\n\\n sfixed64: function read_sfixed64() {\\n return readFixed64.call(this)[fn](false);\\n }\\n\\n });\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/protobufjs/src/reader.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/protobufjs/src/reader_buffer.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/protobufjs/src/reader_buffer.js ***!\n \\******************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\nmodule.exports = BufferReader;\\n\\n// extends Reader\\nvar Reader = __webpack_require__(/*! ./reader */ \\\"./node_modules/protobufjs/src/reader.js\\\");\\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\\n\\nvar util = __webpack_require__(/*! ./util/minimal */ \\\"./node_modules/protobufjs/src/util/minimal.js\\\");\\n\\n/**\\n * Constructs a new buffer reader instance.\\n * @classdesc Wire format reader using node buffers.\\n * @extends Reader\\n * @constructor\\n * @param {Buffer} buffer Buffer to read from\\n */\\nfunction BufferReader(buffer) {\\n Reader.call(this, buffer);\\n\\n /**\\n * Read buffer.\\n * @name BufferReader#buf\\n * @type {Buffer}\\n */\\n}\\n\\n/* istanbul ignore else */\\nif (util.Buffer)\\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\\n\\n/**\\n * @override\\n */\\nBufferReader.prototype.string = function read_string_buffer() {\\n var len = this.uint32(); // modifies pos\\n return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len));\\n};\\n\\n/**\\n * Reads a sequence of bytes preceeded by its length as a varint.\\n * @name BufferReader#bytes\\n * @function\\n * @returns {Buffer} Value read\\n */\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/protobufjs/src/reader_buffer.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/protobufjs/src/roots.js\":\n/*!**********************************************!*\\\n !*** ./node_modules/protobufjs/src/roots.js ***!\n \\**********************************************/\n/***/ ((module) => {\n\n\"use strict\";\neval(\"\\nmodule.exports = {};\\n\\n/**\\n * Named roots.\\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\\n * Can also be used manually to make roots available accross modules.\\n * @name roots\\n * @type {Object.}\\n * @example\\n * // pbjs -r myroot -o compiled.js ...\\n *\\n * // in another module:\\n * require(\\\"./compiled.js\\\");\\n *\\n * // in any subsequent module:\\n * var root = protobuf.roots[\\\"myroot\\\"];\\n */\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/protobufjs/src/roots.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/protobufjs/src/rpc.js\":\n/*!********************************************!*\\\n !*** ./node_modules/protobufjs/src/rpc.js ***!\n \\********************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n\\n/**\\n * Streaming RPC helpers.\\n * @namespace\\n */\\nvar rpc = exports;\\n\\n/**\\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\\n * @typedef RPCImpl\\n * @type {function}\\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\\n * @param {Uint8Array} requestData Request data\\n * @param {RPCImplCallback} callback Callback function\\n * @returns {undefined}\\n * @example\\n * function rpcImpl(method, requestData, callback) {\\n * if (protobuf.util.lcFirst(method.name) !== \\\"myMethod\\\") // compatible with static code\\n * throw Error(\\\"no such method\\\");\\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\\n * callback(err, responseData);\\n * });\\n * }\\n */\\n\\n/**\\n * Node-style callback as used by {@link RPCImpl}.\\n * @typedef RPCImplCallback\\n * @type {function}\\n * @param {Error|null} error Error, if any, otherwise `null`\\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\\n * @returns {undefined}\\n */\\n\\nrpc.Service = __webpack_require__(/*! ./rpc/service */ \\\"./node_modules/protobufjs/src/rpc/service.js\\\");\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/protobufjs/src/rpc.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/protobufjs/src/rpc/service.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/protobufjs/src/rpc/service.js ***!\n \\****************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\nmodule.exports = Service;\\n\\nvar util = __webpack_require__(/*! ../util/minimal */ \\\"./node_modules/protobufjs/src/util/minimal.js\\\");\\n\\n// Extends EventEmitter\\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\\n\\n/**\\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\\n *\\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\\n * @typedef rpc.ServiceMethodCallback\\n * @template TRes extends Message\\n * @type {function}\\n * @param {Error|null} error Error, if any\\n * @param {TRes} [response] Response message\\n * @returns {undefined}\\n */\\n\\n/**\\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\\n * @typedef rpc.ServiceMethod\\n * @template TReq extends Message\\n * @template TRes extends Message\\n * @type {function}\\n * @param {TReq|Properties} request Request message or plain object\\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\\n */\\n\\n/**\\n * Constructs a new RPC service instance.\\n * @classdesc An RPC service as returned by {@link Service#create}.\\n * @exports rpc.Service\\n * @extends util.EventEmitter\\n * @constructor\\n * @param {RPCImpl} rpcImpl RPC implementation\\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\\n */\\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\\n\\n if (typeof rpcImpl !== \\\"function\\\")\\n throw TypeError(\\\"rpcImpl must be a function\\\");\\n\\n util.EventEmitter.call(this);\\n\\n /**\\n * RPC implementation. Becomes `null` once the service is ended.\\n * @type {RPCImpl|null}\\n */\\n this.rpcImpl = rpcImpl;\\n\\n /**\\n * Whether requests are length-delimited.\\n * @type {boolean}\\n */\\n this.requestDelimited = Boolean(requestDelimited);\\n\\n /**\\n * Whether responses are length-delimited.\\n * @type {boolean}\\n */\\n this.responseDelimited = Boolean(responseDelimited);\\n}\\n\\n/**\\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\\n * @param {Constructor} requestCtor Request constructor\\n * @param {Constructor} responseCtor Response constructor\\n * @param {TReq|Properties} request Request message or plain object\\n * @param {rpc.ServiceMethodCallback} callback Service callback\\n * @returns {undefined}\\n * @template TReq extends Message\\n * @template TRes extends Message\\n */\\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\\n\\n if (!request)\\n throw TypeError(\\\"request must be specified\\\");\\n\\n var self = this;\\n if (!callback)\\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\\n\\n if (!self.rpcImpl) {\\n setTimeout(function() { callback(Error(\\\"already ended\\\")); }, 0);\\n return undefined;\\n }\\n\\n try {\\n return self.rpcImpl(\\n method,\\n requestCtor[self.requestDelimited ? \\\"encodeDelimited\\\" : \\\"encode\\\"](request).finish(),\\n function rpcCallback(err, response) {\\n\\n if (err) {\\n self.emit(\\\"error\\\", err, method);\\n return callback(err);\\n }\\n\\n if (response === null) {\\n self.end(/* endedByRPC */ true);\\n return undefined;\\n }\\n\\n if (!(response instanceof responseCtor)) {\\n try {\\n response = responseCtor[self.responseDelimited ? \\\"decodeDelimited\\\" : \\\"decode\\\"](response);\\n } catch (err) {\\n self.emit(\\\"error\\\", err, method);\\n return callback(err);\\n }\\n }\\n\\n self.emit(\\\"data\\\", response, method);\\n return callback(null, response);\\n }\\n );\\n } catch (err) {\\n self.emit(\\\"error\\\", err, method);\\n setTimeout(function() { callback(err); }, 0);\\n return undefined;\\n }\\n};\\n\\n/**\\n * Ends this service and emits the `end` event.\\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\\n * @returns {rpc.Service} `this`\\n */\\nService.prototype.end = function end(endedByRPC) {\\n if (this.rpcImpl) {\\n if (!endedByRPC) // signal end to rpcImpl\\n this.rpcImpl(null, null, null);\\n this.rpcImpl = null;\\n this.emit(\\\"end\\\").off();\\n }\\n return this;\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/protobufjs/src/rpc/service.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/protobufjs/src/util/longbits.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/protobufjs/src/util/longbits.js ***!\n \\******************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\nmodule.exports = LongBits;\\n\\nvar util = __webpack_require__(/*! ../util/minimal */ \\\"./node_modules/protobufjs/src/util/minimal.js\\\");\\n\\n/**\\n * Constructs new long bits.\\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\\n * @memberof util\\n * @constructor\\n * @param {number} lo Low 32 bits, unsigned\\n * @param {number} hi High 32 bits, unsigned\\n */\\nfunction LongBits(lo, hi) {\\n\\n // note that the casts below are theoretically unnecessary as of today, but older statically\\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\\n\\n /**\\n * Low bits.\\n * @type {number}\\n */\\n this.lo = lo >>> 0;\\n\\n /**\\n * High bits.\\n * @type {number}\\n */\\n this.hi = hi >>> 0;\\n}\\n\\n/**\\n * Zero bits.\\n * @memberof util.LongBits\\n * @type {util.LongBits}\\n */\\nvar zero = LongBits.zero = new LongBits(0, 0);\\n\\nzero.toNumber = function() { return 0; };\\nzero.zzEncode = zero.zzDecode = function() { return this; };\\nzero.length = function() { return 1; };\\n\\n/**\\n * Zero hash.\\n * @memberof util.LongBits\\n * @type {string}\\n */\\nvar zeroHash = LongBits.zeroHash = \\\"\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\";\\n\\n/**\\n * Constructs new long bits from the specified number.\\n * @param {number} value Value\\n * @returns {util.LongBits} Instance\\n */\\nLongBits.fromNumber = function fromNumber(value) {\\n if (value === 0)\\n return zero;\\n var sign = value < 0;\\n if (sign)\\n value = -value;\\n var lo = value >>> 0,\\n hi = (value - lo) / 4294967296 >>> 0;\\n if (sign) {\\n hi = ~hi >>> 0;\\n lo = ~lo >>> 0;\\n if (++lo > 4294967295) {\\n lo = 0;\\n if (++hi > 4294967295)\\n hi = 0;\\n }\\n }\\n return new LongBits(lo, hi);\\n};\\n\\n/**\\n * Constructs new long bits from a number, long or string.\\n * @param {Long|number|string} value Value\\n * @returns {util.LongBits} Instance\\n */\\nLongBits.from = function from(value) {\\n if (typeof value === \\\"number\\\")\\n return LongBits.fromNumber(value);\\n if (util.isString(value)) {\\n /* istanbul ignore else */\\n if (util.Long)\\n value = util.Long.fromString(value);\\n else\\n return LongBits.fromNumber(parseInt(value, 10));\\n }\\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\\n};\\n\\n/**\\n * Converts this long bits to a possibly unsafe JavaScript number.\\n * @param {boolean} [unsigned=false] Whether unsigned or not\\n * @returns {number} Possibly unsafe number\\n */\\nLongBits.prototype.toNumber = function toNumber(unsigned) {\\n if (!unsigned && this.hi >>> 31) {\\n var lo = ~this.lo + 1 >>> 0,\\n hi = ~this.hi >>> 0;\\n if (!lo)\\n hi = hi + 1 >>> 0;\\n return -(lo + hi * 4294967296);\\n }\\n return this.lo + this.hi * 4294967296;\\n};\\n\\n/**\\n * Converts this long bits to a long.\\n * @param {boolean} [unsigned=false] Whether unsigned or not\\n * @returns {Long} Long\\n */\\nLongBits.prototype.toLong = function toLong(unsigned) {\\n return util.Long\\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\\n /* istanbul ignore next */\\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\\n};\\n\\nvar charCodeAt = String.prototype.charCodeAt;\\n\\n/**\\n * Constructs new long bits from the specified 8 characters long hash.\\n * @param {string} hash Hash\\n * @returns {util.LongBits} Bits\\n */\\nLongBits.fromHash = function fromHash(hash) {\\n if (hash === zeroHash)\\n return zero;\\n return new LongBits(\\n ( charCodeAt.call(hash, 0)\\n | charCodeAt.call(hash, 1) << 8\\n | charCodeAt.call(hash, 2) << 16\\n | charCodeAt.call(hash, 3) << 24) >>> 0\\n ,\\n ( charCodeAt.call(hash, 4)\\n | charCodeAt.call(hash, 5) << 8\\n | charCodeAt.call(hash, 6) << 16\\n | charCodeAt.call(hash, 7) << 24) >>> 0\\n );\\n};\\n\\n/**\\n * Converts this long bits to a 8 characters long hash.\\n * @returns {string} Hash\\n */\\nLongBits.prototype.toHash = function toHash() {\\n return String.fromCharCode(\\n this.lo & 255,\\n this.lo >>> 8 & 255,\\n this.lo >>> 16 & 255,\\n this.lo >>> 24 ,\\n this.hi & 255,\\n this.hi >>> 8 & 255,\\n this.hi >>> 16 & 255,\\n this.hi >>> 24\\n );\\n};\\n\\n/**\\n * Zig-zag encodes this long bits.\\n * @returns {util.LongBits} `this`\\n */\\nLongBits.prototype.zzEncode = function zzEncode() {\\n var mask = this.hi >> 31;\\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\\n return this;\\n};\\n\\n/**\\n * Zig-zag decodes this long bits.\\n * @returns {util.LongBits} `this`\\n */\\nLongBits.prototype.zzDecode = function zzDecode() {\\n var mask = -(this.lo & 1);\\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\\n return this;\\n};\\n\\n/**\\n * Calculates the length of this longbits when encoded as a varint.\\n * @returns {number} Length\\n */\\nLongBits.prototype.length = function length() {\\n var part0 = this.lo,\\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\\n part2 = this.hi >>> 24;\\n return part2 === 0\\n ? part1 === 0\\n ? part0 < 16384\\n ? part0 < 128 ? 1 : 2\\n : part0 < 2097152 ? 3 : 4\\n : part1 < 16384\\n ? part1 < 128 ? 5 : 6\\n : part1 < 2097152 ? 7 : 8\\n : part2 < 128 ? 9 : 10;\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/protobufjs/src/util/longbits.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/protobufjs/src/util/minimal.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/protobufjs/src/util/minimal.js ***!\n \\*****************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\nvar util = exports;\\n\\n// used to return a Promise where callback is omitted\\nutil.asPromise = __webpack_require__(/*! @protobufjs/aspromise */ \\\"./node_modules/@protobufjs/aspromise/index.js\\\");\\n\\n// converts to / from base64 encoded strings\\nutil.base64 = __webpack_require__(/*! @protobufjs/base64 */ \\\"./node_modules/@protobufjs/base64/index.js\\\");\\n\\n// base class of rpc.Service\\nutil.EventEmitter = __webpack_require__(/*! @protobufjs/eventemitter */ \\\"./node_modules/@protobufjs/eventemitter/index.js\\\");\\n\\n// float handling accross browsers\\nutil.float = __webpack_require__(/*! @protobufjs/float */ \\\"./node_modules/@protobufjs/float/index.js\\\");\\n\\n// requires modules optionally and hides the call from bundlers\\nutil.inquire = __webpack_require__(/*! @protobufjs/inquire */ \\\"./node_modules/@protobufjs/inquire/index.js\\\");\\n\\n// converts to / from utf8 encoded strings\\nutil.utf8 = __webpack_require__(/*! @protobufjs/utf8 */ \\\"./node_modules/@protobufjs/utf8/index.js\\\");\\n\\n// provides a node-like buffer pool in the browser\\nutil.pool = __webpack_require__(/*! @protobufjs/pool */ \\\"./node_modules/@protobufjs/pool/index.js\\\");\\n\\n// utility to work with the low and high bits of a 64 bit value\\nutil.LongBits = __webpack_require__(/*! ./longbits */ \\\"./node_modules/protobufjs/src/util/longbits.js\\\");\\n\\n// global object reference\\nutil.global = typeof window !== \\\"undefined\\\" && window\\n || typeof __webpack_require__.g !== \\\"undefined\\\" && __webpack_require__.g\\n || typeof self !== \\\"undefined\\\" && self\\n || this; // eslint-disable-line no-invalid-this\\n\\n/**\\n * An immuable empty array.\\n * @memberof util\\n * @type {Array.<*>}\\n * @const\\n */\\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\\n\\n/**\\n * An immutable empty object.\\n * @type {Object}\\n * @const\\n */\\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\\n\\n/**\\n * Whether running within node or not.\\n * @memberof util\\n * @type {boolean}\\n * @const\\n */\\nutil.isNode = Boolean(util.global.process && util.global.process.versions && util.global.process.versions.node);\\n\\n/**\\n * Tests if the specified value is an integer.\\n * @function\\n * @param {*} value Value to test\\n * @returns {boolean} `true` if the value is an integer\\n */\\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\\n return typeof value === \\\"number\\\" && isFinite(value) && Math.floor(value) === value;\\n};\\n\\n/**\\n * Tests if the specified value is a string.\\n * @param {*} value Value to test\\n * @returns {boolean} `true` if the value is a string\\n */\\nutil.isString = function isString(value) {\\n return typeof value === \\\"string\\\" || value instanceof String;\\n};\\n\\n/**\\n * Tests if the specified value is a non-null object.\\n * @param {*} value Value to test\\n * @returns {boolean} `true` if the value is a non-null object\\n */\\nutil.isObject = function isObject(value) {\\n return value && typeof value === \\\"object\\\";\\n};\\n\\n/**\\n * Checks if a property on a message is considered to be present.\\n * This is an alias of {@link util.isSet}.\\n * @function\\n * @param {Object} obj Plain object or message instance\\n * @param {string} prop Property name\\n * @returns {boolean} `true` if considered to be present, otherwise `false`\\n */\\nutil.isset =\\n\\n/**\\n * Checks if a property on a message is considered to be present.\\n * @param {Object} obj Plain object or message instance\\n * @param {string} prop Property name\\n * @returns {boolean} `true` if considered to be present, otherwise `false`\\n */\\nutil.isSet = function isSet(obj, prop) {\\n var value = obj[prop];\\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\\n return typeof value !== \\\"object\\\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\\n return false;\\n};\\n\\n/**\\n * Any compatible Buffer instance.\\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\\n * @interface Buffer\\n * @extends Uint8Array\\n */\\n\\n/**\\n * Node's Buffer class if available.\\n * @type {Constructor}\\n */\\nutil.Buffer = (function() {\\n try {\\n var Buffer = util.inquire(\\\"buffer\\\").Buffer;\\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\\n } catch (e) {\\n /* istanbul ignore next */\\n return null;\\n }\\n})();\\n\\n// Internal alias of or polyfull for Buffer.from.\\nutil._Buffer_from = null;\\n\\n// Internal alias of or polyfill for Buffer.allocUnsafe.\\nutil._Buffer_allocUnsafe = null;\\n\\n/**\\n * Creates a new buffer of whatever type supported by the environment.\\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\\n * @returns {Uint8Array|Buffer} Buffer\\n */\\nutil.newBuffer = function newBuffer(sizeOrArray) {\\n /* istanbul ignore next */\\n return typeof sizeOrArray === \\\"number\\\"\\n ? util.Buffer\\n ? util._Buffer_allocUnsafe(sizeOrArray)\\n : new util.Array(sizeOrArray)\\n : util.Buffer\\n ? util._Buffer_from(sizeOrArray)\\n : typeof Uint8Array === \\\"undefined\\\"\\n ? sizeOrArray\\n : new Uint8Array(sizeOrArray);\\n};\\n\\n/**\\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\\n * @type {Constructor}\\n */\\nutil.Array = typeof Uint8Array !== \\\"undefined\\\" ? Uint8Array /* istanbul ignore next */ : Array;\\n\\n/**\\n * Any compatible Long instance.\\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\\n * @interface Long\\n * @property {number} low Low bits\\n * @property {number} high High bits\\n * @property {boolean} unsigned Whether unsigned or not\\n */\\n\\n/**\\n * Long.js's Long class if available.\\n * @type {Constructor}\\n */\\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\\n || /* istanbul ignore next */ util.global.Long\\n || util.inquire(\\\"long\\\");\\n\\n/**\\n * Regular expression used to verify 2 bit (`bool`) map keys.\\n * @type {RegExp}\\n * @const\\n */\\nutil.key2Re = /^true|false|0|1$/;\\n\\n/**\\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\\n * @type {RegExp}\\n * @const\\n */\\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\\n\\n/**\\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\\n * @type {RegExp}\\n * @const\\n */\\nutil.key64Re = /^(?:[\\\\\\\\x00-\\\\\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\\n\\n/**\\n * Converts a number or long to an 8 characters long hash string.\\n * @param {Long|number} value Value to convert\\n * @returns {string} Hash\\n */\\nutil.longToHash = function longToHash(value) {\\n return value\\n ? util.LongBits.from(value).toHash()\\n : util.LongBits.zeroHash;\\n};\\n\\n/**\\n * Converts an 8 characters long hash string to a long or number.\\n * @param {string} hash Hash\\n * @param {boolean} [unsigned=false] Whether unsigned or not\\n * @returns {Long|number} Original value\\n */\\nutil.longFromHash = function longFromHash(hash, unsigned) {\\n var bits = util.LongBits.fromHash(hash);\\n if (util.Long)\\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\\n return bits.toNumber(Boolean(unsigned));\\n};\\n\\n/**\\n * Merges the properties of the source object into the destination object.\\n * @memberof util\\n * @param {Object.} dst Destination object\\n * @param {Object.} src Source object\\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\\n * @returns {Object.} Destination object\\n */\\nfunction merge(dst, src, ifNotSet) { // used by converters\\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\\n if (dst[keys[i]] === undefined || !ifNotSet)\\n dst[keys[i]] = src[keys[i]];\\n return dst;\\n}\\n\\nutil.merge = merge;\\n\\n/**\\n * Converts the first character of a string to lower case.\\n * @param {string} str String to convert\\n * @returns {string} Converted string\\n */\\nutil.lcFirst = function lcFirst(str) {\\n return str.charAt(0).toLowerCase() + str.substring(1);\\n};\\n\\n/**\\n * Creates a custom error constructor.\\n * @memberof util\\n * @param {string} name Error name\\n * @returns {Constructor} Custom error constructor\\n */\\nfunction newError(name) {\\n\\n function CustomError(message, properties) {\\n\\n if (!(this instanceof CustomError))\\n return new CustomError(message, properties);\\n\\n // Error.call(this, message);\\n // ^ just returns a new error instance because the ctor can be called as a function\\n\\n Object.defineProperty(this, \\\"message\\\", { get: function() { return message; } });\\n\\n /* istanbul ignore next */\\n if (Error.captureStackTrace) // node\\n Error.captureStackTrace(this, CustomError);\\n else\\n Object.defineProperty(this, \\\"stack\\\", { value: (new Error()).stack || \\\"\\\" });\\n\\n if (properties)\\n merge(this, properties);\\n }\\n\\n (CustomError.prototype = Object.create(Error.prototype)).constructor = CustomError;\\n\\n Object.defineProperty(CustomError.prototype, \\\"name\\\", { get: function() { return name; } });\\n\\n CustomError.prototype.toString = function toString() {\\n return this.name + \\\": \\\" + this.message;\\n };\\n\\n return CustomError;\\n}\\n\\nutil.newError = newError;\\n\\n/**\\n * Constructs a new protocol error.\\n * @classdesc Error subclass indicating a protocol specifc error.\\n * @memberof util\\n * @extends Error\\n * @template T extends Message\\n * @constructor\\n * @param {string} message Error message\\n * @param {Object.} [properties] Additional properties\\n * @example\\n * try {\\n * MyMessage.decode(someBuffer); // throws if required fields are missing\\n * } catch (e) {\\n * if (e instanceof ProtocolError && e.instance)\\n * console.log(\\\"decoded so far: \\\" + JSON.stringify(e.instance));\\n * }\\n */\\nutil.ProtocolError = newError(\\\"ProtocolError\\\");\\n\\n/**\\n * So far decoded message instance.\\n * @name util.ProtocolError#instance\\n * @type {Message}\\n */\\n\\n/**\\n * A OneOf getter as returned by {@link util.oneOfGetter}.\\n * @typedef OneOfGetter\\n * @type {function}\\n * @returns {string|undefined} Set field name, if any\\n */\\n\\n/**\\n * Builds a getter for a oneof's present field name.\\n * @param {string[]} fieldNames Field names\\n * @returns {OneOfGetter} Unbound getter\\n */\\nutil.oneOfGetter = function getOneOf(fieldNames) {\\n var fieldMap = {};\\n for (var i = 0; i < fieldNames.length; ++i)\\n fieldMap[fieldNames[i]] = 1;\\n\\n /**\\n * @returns {string|undefined} Set field name, if any\\n * @this Object\\n * @ignore\\n */\\n return function() { // eslint-disable-line consistent-return\\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\\n return keys[i];\\n };\\n};\\n\\n/**\\n * A OneOf setter as returned by {@link util.oneOfSetter}.\\n * @typedef OneOfSetter\\n * @type {function}\\n * @param {string|undefined} value Field name\\n * @returns {undefined}\\n */\\n\\n/**\\n * Builds a setter for a oneof's present field name.\\n * @param {string[]} fieldNames Field names\\n * @returns {OneOfSetter} Unbound setter\\n */\\nutil.oneOfSetter = function setOneOf(fieldNames) {\\n\\n /**\\n * @param {string} name Field name\\n * @returns {undefined}\\n * @this Object\\n * @ignore\\n */\\n return function(name) {\\n for (var i = 0; i < fieldNames.length; ++i)\\n if (fieldNames[i] !== name)\\n delete this[fieldNames[i]];\\n };\\n};\\n\\n/**\\n * Default conversion options used for {@link Message#toJSON} implementations.\\n *\\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\\n *\\n * - Longs become strings\\n * - Enums become string keys\\n * - Bytes become base64 encoded strings\\n * - (Sub-)Messages become plain objects\\n * - Maps become plain objects with all string keys\\n * - Repeated fields become arrays\\n * - NaN and Infinity for float and double fields become strings\\n *\\n * @type {IConversionOptions}\\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\\n */\\nutil.toJSONOptions = {\\n longs: String,\\n enums: String,\\n bytes: String,\\n json: true\\n};\\n\\n// Sets up buffer utility according to the environment (called in index-minimal)\\nutil._configure = function() {\\n var Buffer = util.Buffer;\\n /* istanbul ignore if */\\n if (!Buffer) {\\n util._Buffer_from = util._Buffer_allocUnsafe = null;\\n return;\\n }\\n // because node 4.x buffers are incompatible & immutable\\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\\n /* istanbul ignore next */\\n function Buffer_from(value, encoding) {\\n return new Buffer(value, encoding);\\n };\\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\\n /* istanbul ignore next */\\n function Buffer_allocUnsafe(size) {\\n return new Buffer(size);\\n };\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/protobufjs/src/util/minimal.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/protobufjs/src/writer.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/protobufjs/src/writer.js ***!\n \\***********************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\nmodule.exports = Writer;\\n\\nvar util = __webpack_require__(/*! ./util/minimal */ \\\"./node_modules/protobufjs/src/util/minimal.js\\\");\\n\\nvar BufferWriter; // cyclic\\n\\nvar LongBits = util.LongBits,\\n base64 = util.base64,\\n utf8 = util.utf8;\\n\\n/**\\n * Constructs a new writer operation instance.\\n * @classdesc Scheduled writer operation.\\n * @constructor\\n * @param {function(*, Uint8Array, number)} fn Function to call\\n * @param {number} len Value byte length\\n * @param {*} val Value to write\\n * @ignore\\n */\\nfunction Op(fn, len, val) {\\n\\n /**\\n * Function to call.\\n * @type {function(Uint8Array, number, *)}\\n */\\n this.fn = fn;\\n\\n /**\\n * Value byte length.\\n * @type {number}\\n */\\n this.len = len;\\n\\n /**\\n * Next operation.\\n * @type {Writer.Op|undefined}\\n */\\n this.next = undefined;\\n\\n /**\\n * Value to write.\\n * @type {*}\\n */\\n this.val = val; // type varies\\n}\\n\\n/* istanbul ignore next */\\nfunction noop() {} // eslint-disable-line no-empty-function\\n\\n/**\\n * Constructs a new writer state instance.\\n * @classdesc Copied writer state.\\n * @memberof Writer\\n * @constructor\\n * @param {Writer} writer Writer to copy state from\\n * @ignore\\n */\\nfunction State(writer) {\\n\\n /**\\n * Current head.\\n * @type {Writer.Op}\\n */\\n this.head = writer.head;\\n\\n /**\\n * Current tail.\\n * @type {Writer.Op}\\n */\\n this.tail = writer.tail;\\n\\n /**\\n * Current buffer length.\\n * @type {number}\\n */\\n this.len = writer.len;\\n\\n /**\\n * Next state.\\n * @type {State|null}\\n */\\n this.next = writer.states;\\n}\\n\\n/**\\n * Constructs a new writer instance.\\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\\n * @constructor\\n */\\nfunction Writer() {\\n\\n /**\\n * Current length.\\n * @type {number}\\n */\\n this.len = 0;\\n\\n /**\\n * Operations head.\\n * @type {Object}\\n */\\n this.head = new Op(noop, 0, 0);\\n\\n /**\\n * Operations tail\\n * @type {Object}\\n */\\n this.tail = this.head;\\n\\n /**\\n * Linked forked states.\\n * @type {Object|null}\\n */\\n this.states = null;\\n\\n // When a value is written, the writer calculates its byte length and puts it into a linked\\n // list of operations to perform when finish() is called. This both allows us to allocate\\n // buffers of the exact required size and reduces the amount of work we have to do compared\\n // to first calculating over objects and then encoding over objects. In our case, the encoding\\n // part is just a linked list walk calling operations with already prepared values.\\n}\\n\\n/**\\n * Creates a new writer.\\n * @function\\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\\n */\\nWriter.create = util.Buffer\\n ? function create_buffer_setup() {\\n return (Writer.create = function create_buffer() {\\n return new BufferWriter();\\n })();\\n }\\n /* istanbul ignore next */\\n : function create_array() {\\n return new Writer();\\n };\\n\\n/**\\n * Allocates a buffer of the specified size.\\n * @param {number} size Buffer size\\n * @returns {Uint8Array} Buffer\\n */\\nWriter.alloc = function alloc(size) {\\n return new util.Array(size);\\n};\\n\\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\\n/* istanbul ignore else */\\nif (util.Array !== Array)\\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\\n\\n/**\\n * Pushes a new operation to the queue.\\n * @param {function(Uint8Array, number, *)} fn Function to call\\n * @param {number} len Value byte length\\n * @param {number} val Value to write\\n * @returns {Writer} `this`\\n * @private\\n */\\nWriter.prototype._push = function push(fn, len, val) {\\n this.tail = this.tail.next = new Op(fn, len, val);\\n this.len += len;\\n return this;\\n};\\n\\nfunction writeByte(val, buf, pos) {\\n buf[pos] = val & 255;\\n}\\n\\nfunction writeVarint32(val, buf, pos) {\\n while (val > 127) {\\n buf[pos++] = val & 127 | 128;\\n val >>>= 7;\\n }\\n buf[pos] = val;\\n}\\n\\n/**\\n * Constructs a new varint writer operation instance.\\n * @classdesc Scheduled varint writer operation.\\n * @extends Op\\n * @constructor\\n * @param {number} len Value byte length\\n * @param {number} val Value to write\\n * @ignore\\n */\\nfunction VarintOp(len, val) {\\n this.len = len;\\n this.next = undefined;\\n this.val = val;\\n}\\n\\nVarintOp.prototype = Object.create(Op.prototype);\\nVarintOp.prototype.fn = writeVarint32;\\n\\n/**\\n * Writes an unsigned 32 bit value as a varint.\\n * @param {number} value Value to write\\n * @returns {Writer} `this`\\n */\\nWriter.prototype.uint32 = function write_uint32(value) {\\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\\n // uint32 is by far the most frequently used operation and benefits significantly from this.\\n this.len += (this.tail = this.tail.next = new VarintOp(\\n (value = value >>> 0)\\n < 128 ? 1\\n : value < 16384 ? 2\\n : value < 2097152 ? 3\\n : value < 268435456 ? 4\\n : 5,\\n value)).len;\\n return this;\\n};\\n\\n/**\\n * Writes a signed 32 bit value as a varint.\\n * @function\\n * @param {number} value Value to write\\n * @returns {Writer} `this`\\n */\\nWriter.prototype.int32 = function write_int32(value) {\\n return value < 0\\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\\n : this.uint32(value);\\n};\\n\\n/**\\n * Writes a 32 bit value as a varint, zig-zag encoded.\\n * @param {number} value Value to write\\n * @returns {Writer} `this`\\n */\\nWriter.prototype.sint32 = function write_sint32(value) {\\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\\n};\\n\\nfunction writeVarint64(val, buf, pos) {\\n while (val.hi) {\\n buf[pos++] = val.lo & 127 | 128;\\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\\n val.hi >>>= 7;\\n }\\n while (val.lo > 127) {\\n buf[pos++] = val.lo & 127 | 128;\\n val.lo = val.lo >>> 7;\\n }\\n buf[pos++] = val.lo;\\n}\\n\\n/**\\n * Writes an unsigned 64 bit value as a varint.\\n * @param {Long|number|string} value Value to write\\n * @returns {Writer} `this`\\n * @throws {TypeError} If `value` is a string and no long library is present.\\n */\\nWriter.prototype.uint64 = function write_uint64(value) {\\n var bits = LongBits.from(value);\\n return this._push(writeVarint64, bits.length(), bits);\\n};\\n\\n/**\\n * Writes a signed 64 bit value as a varint.\\n * @function\\n * @param {Long|number|string} value Value to write\\n * @returns {Writer} `this`\\n * @throws {TypeError} If `value` is a string and no long library is present.\\n */\\nWriter.prototype.int64 = Writer.prototype.uint64;\\n\\n/**\\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\\n * @param {Long|number|string} value Value to write\\n * @returns {Writer} `this`\\n * @throws {TypeError} If `value` is a string and no long library is present.\\n */\\nWriter.prototype.sint64 = function write_sint64(value) {\\n var bits = LongBits.from(value).zzEncode();\\n return this._push(writeVarint64, bits.length(), bits);\\n};\\n\\n/**\\n * Writes a boolish value as a varint.\\n * @param {boolean} value Value to write\\n * @returns {Writer} `this`\\n */\\nWriter.prototype.bool = function write_bool(value) {\\n return this._push(writeByte, 1, value ? 1 : 0);\\n};\\n\\nfunction writeFixed32(val, buf, pos) {\\n buf[pos ] = val & 255;\\n buf[pos + 1] = val >>> 8 & 255;\\n buf[pos + 2] = val >>> 16 & 255;\\n buf[pos + 3] = val >>> 24;\\n}\\n\\n/**\\n * Writes an unsigned 32 bit value as fixed 32 bits.\\n * @param {number} value Value to write\\n * @returns {Writer} `this`\\n */\\nWriter.prototype.fixed32 = function write_fixed32(value) {\\n return this._push(writeFixed32, 4, value >>> 0);\\n};\\n\\n/**\\n * Writes a signed 32 bit value as fixed 32 bits.\\n * @function\\n * @param {number} value Value to write\\n * @returns {Writer} `this`\\n */\\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\\n\\n/**\\n * Writes an unsigned 64 bit value as fixed 64 bits.\\n * @param {Long|number|string} value Value to write\\n * @returns {Writer} `this`\\n * @throws {TypeError} If `value` is a string and no long library is present.\\n */\\nWriter.prototype.fixed64 = function write_fixed64(value) {\\n var bits = LongBits.from(value);\\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\\n};\\n\\n/**\\n * Writes a signed 64 bit value as fixed 64 bits.\\n * @function\\n * @param {Long|number|string} value Value to write\\n * @returns {Writer} `this`\\n * @throws {TypeError} If `value` is a string and no long library is present.\\n */\\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\\n\\n/**\\n * Writes a float (32 bit).\\n * @function\\n * @param {number} value Value to write\\n * @returns {Writer} `this`\\n */\\nWriter.prototype.float = function write_float(value) {\\n return this._push(util.float.writeFloatLE, 4, value);\\n};\\n\\n/**\\n * Writes a double (64 bit float).\\n * @function\\n * @param {number} value Value to write\\n * @returns {Writer} `this`\\n */\\nWriter.prototype.double = function write_double(value) {\\n return this._push(util.float.writeDoubleLE, 8, value);\\n};\\n\\nvar writeBytes = util.Array.prototype.set\\n ? function writeBytes_set(val, buf, pos) {\\n buf.set(val, pos); // also works for plain array values\\n }\\n /* istanbul ignore next */\\n : function writeBytes_for(val, buf, pos) {\\n for (var i = 0; i < val.length; ++i)\\n buf[pos + i] = val[i];\\n };\\n\\n/**\\n * Writes a sequence of bytes.\\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\\n * @returns {Writer} `this`\\n */\\nWriter.prototype.bytes = function write_bytes(value) {\\n var len = value.length >>> 0;\\n if (!len)\\n return this._push(writeByte, 1, 0);\\n if (util.isString(value)) {\\n var buf = Writer.alloc(len = base64.length(value));\\n base64.decode(value, buf, 0);\\n value = buf;\\n }\\n return this.uint32(len)._push(writeBytes, len, value);\\n};\\n\\n/**\\n * Writes a string.\\n * @param {string} value Value to write\\n * @returns {Writer} `this`\\n */\\nWriter.prototype.string = function write_string(value) {\\n var len = utf8.length(value);\\n return len\\n ? this.uint32(len)._push(utf8.write, len, value)\\n : this._push(writeByte, 1, 0);\\n};\\n\\n/**\\n * Forks this writer's state by pushing it to a stack.\\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\\n * @returns {Writer} `this`\\n */\\nWriter.prototype.fork = function fork() {\\n this.states = new State(this);\\n this.head = this.tail = new Op(noop, 0, 0);\\n this.len = 0;\\n return this;\\n};\\n\\n/**\\n * Resets this instance to the last state.\\n * @returns {Writer} `this`\\n */\\nWriter.prototype.reset = function reset() {\\n if (this.states) {\\n this.head = this.states.head;\\n this.tail = this.states.tail;\\n this.len = this.states.len;\\n this.states = this.states.next;\\n } else {\\n this.head = this.tail = new Op(noop, 0, 0);\\n this.len = 0;\\n }\\n return this;\\n};\\n\\n/**\\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\\n * @returns {Writer} `this`\\n */\\nWriter.prototype.ldelim = function ldelim() {\\n var head = this.head,\\n tail = this.tail,\\n len = this.len;\\n this.reset().uint32(len);\\n if (len) {\\n this.tail.next = head.next; // skip noop\\n this.tail = tail;\\n this.len += len;\\n }\\n return this;\\n};\\n\\n/**\\n * Finishes the write operation.\\n * @returns {Uint8Array} Finished buffer\\n */\\nWriter.prototype.finish = function finish() {\\n var head = this.head.next, // skip noop\\n buf = this.constructor.alloc(this.len),\\n pos = 0;\\n while (head) {\\n head.fn(head.val, buf, pos);\\n pos += head.len;\\n head = head.next;\\n }\\n // this.head = this.tail = null;\\n return buf;\\n};\\n\\nWriter._configure = function(BufferWriter_) {\\n BufferWriter = BufferWriter_;\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/protobufjs/src/writer.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/protobufjs/src/writer_buffer.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/protobufjs/src/writer_buffer.js ***!\n \\******************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\nmodule.exports = BufferWriter;\\n\\n// extends Writer\\nvar Writer = __webpack_require__(/*! ./writer */ \\\"./node_modules/protobufjs/src/writer.js\\\");\\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\\n\\nvar util = __webpack_require__(/*! ./util/minimal */ \\\"./node_modules/protobufjs/src/util/minimal.js\\\");\\n\\nvar Buffer = util.Buffer;\\n\\n/**\\n * Constructs a new buffer writer instance.\\n * @classdesc Wire format writer using node buffers.\\n * @extends Writer\\n * @constructor\\n */\\nfunction BufferWriter() {\\n Writer.call(this);\\n}\\n\\n/**\\n * Allocates a buffer of the specified size.\\n * @param {number} size Buffer size\\n * @returns {Buffer} Buffer\\n */\\nBufferWriter.alloc = function alloc_buffer(size) {\\n return (BufferWriter.alloc = util._Buffer_allocUnsafe)(size);\\n};\\n\\nvar writeBytesBuffer = Buffer && Buffer.prototype instanceof Uint8Array && Buffer.prototype.set.name === \\\"set\\\"\\n ? function writeBytesBuffer_set(val, buf, pos) {\\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\\n // also works for plain array values\\n }\\n /* istanbul ignore next */\\n : function writeBytesBuffer_copy(val, buf, pos) {\\n if (val.copy) // Buffer values\\n val.copy(buf, pos, 0, val.length);\\n else for (var i = 0; i < val.length;) // plain array values\\n buf[pos++] = val[i++];\\n };\\n\\n/**\\n * @override\\n */\\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\\n if (util.isString(value))\\n value = util._Buffer_from(value, \\\"base64\\\");\\n var len = value.length >>> 0;\\n this.uint32(len);\\n if (len)\\n this._push(writeBytesBuffer, len, value);\\n return this;\\n};\\n\\nfunction writeStringBuffer(val, buf, pos) {\\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\\n util.utf8.write(val, buf, pos);\\n else\\n buf.utf8Write(val, pos);\\n}\\n\\n/**\\n * @override\\n */\\nBufferWriter.prototype.string = function write_string_buffer(value) {\\n var len = Buffer.byteLength(value);\\n this.uint32(len);\\n if (len)\\n this._push(writeStringBuffer, len, value);\\n return this;\\n};\\n\\n\\n/**\\n * Finishes the write operation.\\n * @name BufferWriter#finish\\n * @function\\n * @returns {Buffer} Finished buffer\\n */\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/protobufjs/src/writer_buffer.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/raw-loader/dist/cjs.js!./worklet/dist/index.js\":\n/*!*********************************************************************!*\\\n !*** ./node_modules/raw-loader/dist/cjs.js!./worklet/dist/index.js ***!\n \\*********************************************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"default\\\": () => (__WEBPACK_DEFAULT_EXPORT__)\\n/* harmony export */ });\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\\\"/*\\\\n * ATTENTION: The \\\\\\\"eval\\\\\\\" devtool has been used (maybe by default in mode: \\\\\\\"development\\\\\\\").\\\\n * This devtool is neither made for production nor for readable output files.\\\\n * It uses \\\\\\\"eval()\\\\\\\" calls to create a separate source file in the browser devtools.\\\\n * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)\\\\n * or disable the default devtool with \\\\\\\"devtool: false\\\\\\\".\\\\n * If you are looking for production-ready output files, see mode: \\\\\\\"production\\\\\\\" (https://webpack.js.org/configuration/mode/).\\\\n */\\\\n/******/ (() => { // webpackBootstrap\\\\n/******/ \\\\t\\\\\\\"use strict\\\\\\\";\\\\n/******/ \\\\tvar __webpack_modules__ = ({\\\\n\\\\n/***/ \\\\\\\"./worklet/src/voice-changer-worklet-processor.ts\\\\\\\":\\\\n/*!********************************************************!*\\\\\\\\\\\\n !*** ./worklet/src/voice-changer-worklet-processor.ts ***!\\\\n \\\\\\\\********************************************************/\\\\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\\\\n\\\\neval(\\\\\\\"__webpack_require__.r(__webpack_exports__);\\\\\\\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\\\\\\\n/* harmony export */ RequestType: () => (/* binding */ RequestType),\\\\\\\\n/* harmony export */ ResponseType: () => (/* binding */ ResponseType)\\\\\\\\n/* harmony export */ });\\\\\\\\nconst RequestType = {\\\\\\\\n \\\\\\\\\\\\\\\"voice\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"voice\\\\\\\\\\\\\\\",\\\\\\\\n \\\\\\\\\\\\\\\"config\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"config\\\\\\\\\\\\\\\",\\\\\\\\n \\\\\\\\\\\\\\\"start\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"start\\\\\\\\\\\\\\\",\\\\\\\\n \\\\\\\\\\\\\\\"stop\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"stop\\\\\\\\\\\\\\\",\\\\\\\\n \\\\\\\\\\\\\\\"trancateBuffer\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"trancateBuffer\\\\\\\\\\\\\\\",\\\\\\\\n};\\\\\\\\nconst ResponseType = {\\\\\\\\n \\\\\\\\\\\\\\\"volume\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"volume\\\\\\\\\\\\\\\",\\\\\\\\n \\\\\\\\\\\\\\\"inputData\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"inputData\\\\\\\\\\\\\\\",\\\\\\\\n \\\\\\\\\\\\\\\"start_ok\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"start_ok\\\\\\\\\\\\\\\",\\\\\\\\n \\\\\\\\\\\\\\\"stop_ok\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"stop_ok\\\\\\\\\\\\\\\",\\\\\\\\n};\\\\\\\\nclass VoiceChangerWorkletProcessor extends AudioWorkletProcessor {\\\\\\\\n /**\\\\\\\\n * @constructor\\\\\\\\n */\\\\\\\\n constructor() {\\\\\\\\n super();\\\\\\\\n this.BLOCK_SIZE = 128;\\\\\\\\n this.initialized = false;\\\\\\\\n this.volume = 0;\\\\\\\\n this.numTrancateTreshold = 150;\\\\\\\\n // private volTrancateThreshold = 0.0005\\\\\\\\n // private volTrancateLength = 32\\\\\\\\n // private volTrancateCount = 0\\\\\\\\n this.isRecording = false;\\\\\\\\n this.playBuffer = [];\\\\\\\\n this.calcVol = (data, prevVol) => {\\\\\\\\n const sum = data.reduce((prev, cur) => {\\\\\\\\n return prev + cur * cur;\\\\\\\\n }, 0);\\\\\\\\n const rms = Math.sqrt(sum / data.length);\\\\\\\\n return Math.max(rms, prevVol * 0.95);\\\\\\\\n };\\\\\\\\n this.trancateBuffer = () => {\\\\\\\\n console.log(\\\\\\\\\\\\\\\"[worklet] Buffer truncated\\\\\\\\\\\\\\\");\\\\\\\\n while (this.playBuffer.length > 2) {\\\\\\\\n this.playBuffer.shift();\\\\\\\\n }\\\\\\\\n };\\\\\\\\n this.pushData = (inputData) => {\\\\\\\\n const volumeResponse = {\\\\\\\\n responseType: ResponseType.inputData,\\\\\\\\n inputData: inputData\\\\\\\\n };\\\\\\\\n this.port.postMessage(volumeResponse);\\\\\\\\n };\\\\\\\\n this.initialized = true;\\\\\\\\n this.port.onmessage = this.handleMessage.bind(this);\\\\\\\\n }\\\\\\\\n handleMessage(event) {\\\\\\\\n const request = event.data;\\\\\\\\n if (request.requestType === \\\\\\\\\\\\\\\"config\\\\\\\\\\\\\\\") {\\\\\\\\n this.numTrancateTreshold = request.numTrancateTreshold;\\\\\\\\n // this.volTrancateLength = request.volTrancateLength\\\\\\\\n // this.volTrancateThreshold = request.volTrancateThreshold\\\\\\\\n console.log(\\\\\\\\\\\\\\\"[worklet] worklet configured\\\\\\\\\\\\\\\", request);\\\\\\\\n return;\\\\\\\\n }\\\\\\\\n else if (request.requestType === \\\\\\\\\\\\\\\"start\\\\\\\\\\\\\\\") {\\\\\\\\n if (this.isRecording) {\\\\\\\\n console.warn(\\\\\\\\\\\\\\\"[worklet] recoring is already started\\\\\\\\\\\\\\\");\\\\\\\\n return;\\\\\\\\n }\\\\\\\\n this.isRecording = true;\\\\\\\\n const startResponse = {\\\\\\\\n responseType: \\\\\\\\\\\\\\\"start_ok\\\\\\\\\\\\\\\",\\\\\\\\n };\\\\\\\\n this.port.postMessage(startResponse);\\\\\\\\n return;\\\\\\\\n }\\\\\\\\n else if (request.requestType === \\\\\\\\\\\\\\\"stop\\\\\\\\\\\\\\\") {\\\\\\\\n if (!this.isRecording) {\\\\\\\\n console.warn(\\\\\\\\\\\\\\\"[worklet] recoring is not started\\\\\\\\\\\\\\\");\\\\\\\\n return;\\\\\\\\n }\\\\\\\\n this.isRecording = false;\\\\\\\\n const stopResponse = {\\\\\\\\n responseType: \\\\\\\\\\\\\\\"stop_ok\\\\\\\\\\\\\\\",\\\\\\\\n };\\\\\\\\n this.port.postMessage(stopResponse);\\\\\\\\n return;\\\\\\\\n }\\\\\\\\n else if (request.requestType === \\\\\\\\\\\\\\\"trancateBuffer\\\\\\\\\\\\\\\") {\\\\\\\\n this.trancateBuffer();\\\\\\\\n return;\\\\\\\\n }\\\\\\\\n if (this.playBuffer.length > this.numTrancateTreshold) {\\\\\\\\n this.trancateBuffer();\\\\\\\\n }\\\\\\\\n const f32Data = request.voice;\\\\\\\\n const chunkNum = f32Data.length / this.BLOCK_SIZE;\\\\\\\\n for (let i = 0; i < chunkNum; i++) {\\\\\\\\n const block = f32Data.slice(i * this.BLOCK_SIZE, (i + 1) * this.BLOCK_SIZE);\\\\\\\\n this.playBuffer.push(block);\\\\\\\\n }\\\\\\\\n }\\\\\\\\n process(_inputs, outputs, _parameters) {\\\\\\\\n if (!this.initialized) {\\\\\\\\n console.warn(\\\\\\\\\\\\\\\"[worklet] worklet_process not ready\\\\\\\\\\\\\\\");\\\\\\\\n return true;\\\\\\\\n }\\\\\\\\n if (this.isRecording) {\\\\\\\\n if (_inputs.length > 0 && _inputs[0].length > 0) {\\\\\\\\n this.pushData(_inputs[0][0]);\\\\\\\\n }\\\\\\\\n }\\\\\\\\n if (this.playBuffer.length === 0) {\\\\\\\\n // console.log(\\\\\\\\\\\\\\\"[worklet] no play buffer\\\\\\\\\\\\\\\")\\\\\\\\n return true;\\\\\\\\n }\\\\\\\\n //// 一定期間無音状態が続いている場合はスキップ。\\\\\\\\n // let voice: Float32Array | undefined\\\\\\\\n // while (true) {\\\\\\\\n // voice = this.playBuffer.shift()\\\\\\\\n // if (!voice) {\\\\\\\\n // break\\\\\\\\n // }\\\\\\\\n // this.volume = this.calcVol(voice, this.volume)\\\\\\\\n // if (this.volume < this.volTrancateThreshold) {\\\\\\\\n // this.volTrancateCount += 1\\\\\\\\n // } else {\\\\\\\\n // this.volTrancateCount = 0\\\\\\\\n // }\\\\\\\\n // // V.1.5.0よりsilent skipで音飛びするようになったので無効化\\\\\\\\n // if (this.volTrancateCount < this.volTrancateLength || this.volTrancateLength < 0) {\\\\\\\\n // break\\\\\\\\n // } else {\\\\\\\\n // break\\\\\\\\n // // console.log(\\\\\\\\\\\\\\\"silent...skip\\\\\\\\\\\\\\\")\\\\\\\\n // }\\\\\\\\n // }\\\\\\\\n let voice = this.playBuffer.shift();\\\\\\\\n if (voice) {\\\\\\\\n this.volume = this.calcVol(voice, this.volume);\\\\\\\\n const volumeResponse = {\\\\\\\\n responseType: ResponseType.volume,\\\\\\\\n volume: this.volume\\\\\\\\n };\\\\\\\\n this.port.postMessage(volumeResponse);\\\\\\\\n outputs[0][0].set(voice);\\\\\\\\n if (outputs[0].length == 2) {\\\\\\\\n outputs[0][1].set(voice);\\\\\\\\n }\\\\\\\\n }\\\\\\\\n return true;\\\\\\\\n }\\\\\\\\n}\\\\\\\\nregisterProcessor(\\\\\\\\\\\\\\\"voice-changer-worklet-processor\\\\\\\\\\\\\\\", VoiceChangerWorkletProcessor);\\\\\\\\n\\\\\\\\n\\\\\\\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./worklet/src/voice-changer-worklet-processor.ts?\\\\\\\");\\\\n\\\\n/***/ })\\\\n\\\\n/******/ \\\\t});\\\\n/************************************************************************/\\\\n/******/ \\\\t// The require scope\\\\n/******/ \\\\tvar __webpack_require__ = {};\\\\n/******/ \\\\t\\\\n/************************************************************************/\\\\n/******/ \\\\t/* webpack/runtime/define property getters */\\\\n/******/ \\\\t(() => {\\\\n/******/ \\\\t\\\\t// define getter functions for harmony exports\\\\n/******/ \\\\t\\\\t__webpack_require__.d = (exports, definition) => {\\\\n/******/ \\\\t\\\\t\\\\tfor(var key in definition) {\\\\n/******/ \\\\t\\\\t\\\\t\\\\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\\\\n/******/ \\\\t\\\\t\\\\t\\\\t\\\\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\\\\n/******/ \\\\t\\\\t\\\\t\\\\t}\\\\n/******/ \\\\t\\\\t\\\\t}\\\\n/******/ \\\\t\\\\t};\\\\n/******/ \\\\t})();\\\\n/******/ \\\\t\\\\n/******/ \\\\t/* webpack/runtime/hasOwnProperty shorthand */\\\\n/******/ \\\\t(() => {\\\\n/******/ \\\\t\\\\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\\\\n/******/ \\\\t})();\\\\n/******/ \\\\t\\\\n/******/ \\\\t/* webpack/runtime/make namespace object */\\\\n/******/ \\\\t(() => {\\\\n/******/ \\\\t\\\\t// define __esModule on exports\\\\n/******/ \\\\t\\\\t__webpack_require__.r = (exports) => {\\\\n/******/ \\\\t\\\\t\\\\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\\\\n/******/ \\\\t\\\\t\\\\t\\\\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\\\\n/******/ \\\\t\\\\t\\\\t}\\\\n/******/ \\\\t\\\\t\\\\tObject.defineProperty(exports, '__esModule', { value: true });\\\\n/******/ \\\\t\\\\t};\\\\n/******/ \\\\t})();\\\\n/******/ \\\\t\\\\n/************************************************************************/\\\\n/******/ \\\\t\\\\n/******/ \\\\t// startup\\\\n/******/ \\\\t// Load entry module and return exports\\\\n/******/ \\\\t// This entry module can't be inlined because the eval devtool is used.\\\\n/******/ \\\\tvar __webpack_exports__ = {};\\\\n/******/ \\\\t__webpack_modules__[\\\\\\\"./worklet/src/voice-changer-worklet-processor.ts\\\\\\\"](0, __webpack_exports__, __webpack_require__);\\\\n/******/ \\\\t\\\\n/******/ })()\\\\n;\\\");\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./worklet/dist/index.js?./node_modules/raw-loader/dist/cjs.js\");\n\n/***/ }),\n\n/***/ \"./src/License.ts\":\n/*!************************!*\\\n !*** ./src/License.ts ***!\n \\************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ getLicenceInfo: () => (/* binding */ getLicenceInfo)\\n/* harmony export */ });\\nconst getLicenceInfo = () => {\\n return [\\n {\\n name: \\\"VC Helper\\\",\\n url: \\\"https://github.com/w-okada/voice-changer\\\",\\n license: \\\"MIT\\\",\\n licenseUrl: \\\"https://raw.githubusercontent.com/w-okada/voice-changer/master/LICENSE\\\",\\n description: \\\"\\\"\\n },\\n {\\n name: \\\"MMVC\\\",\\n url: \\\"https://github.com/isletennos/MMVC_Trainer\\\",\\n license: \\\"MIT\\\",\\n licenseUrl: \\\"https://raw.githubusercontent.com/isletennos/MMVC_Trainer/main/LICENSE\\\",\\n description: \\\"\\\"\\n },\\n {\\n name: \\\"so-vits-svc\\\",\\n url: \\\"https://github.com/svc-develop-team/so-vits-svc\\\",\\n license: \\\"MIT\\\",\\n licenseUrl: \\\"https://github.com/svc-develop-team/so-vits-svc/blob/4.0/LICENSE\\\",\\n description: \\\"\\\"\\n },\\n {\\n name: \\\"ContentVec\\\",\\n url: \\\"https://github.com/auspicious3000/contentvec\\\",\\n license: \\\"MIT\\\",\\n licenseUrl: \\\"https://raw.githubusercontent.com/auspicious3000/contentvec/main/LICENSE\\\",\\n description: \\\"\\\"\\n },\\n ];\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./src/License.ts?\");\n\n/***/ }),\n\n/***/ \"./src/ServerConfigurator.ts\":\n/*!***********************************!*\\\n !*** ./src/ServerConfigurator.ts ***!\n \\***********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ ServerConfigurator: () => (/* binding */ ServerConfigurator)\\n/* harmony export */ });\\nclass ServerConfigurator {\\n constructor() {\\n this.serverUrl = \\\"\\\";\\n this.setServerUrl = (serverUrl) => {\\n this.serverUrl = serverUrl;\\n console.log(`[ServerConfigurator] Server URL: ${this.serverUrl}`);\\n };\\n this.getSettings = async () => {\\n const url = this.serverUrl + \\\"/info\\\";\\n const info = await new Promise((resolve) => {\\n const request = new Request(url, {\\n method: 'GET',\\n });\\n fetch(request).then(async (response) => {\\n const json = await response.json();\\n resolve(json);\\n });\\n });\\n return info;\\n };\\n this.getPerformance = async () => {\\n const url = this.serverUrl + \\\"/performance\\\";\\n const info = await new Promise((resolve) => {\\n const request = new Request(url, {\\n method: 'GET',\\n });\\n fetch(request).then(async (response) => {\\n const json = await response.json();\\n resolve(json);\\n });\\n });\\n return info;\\n };\\n this.updateSettings = async (key, val) => {\\n const url = this.serverUrl + \\\"/update_settings\\\";\\n const info = await new Promise(async (resolve) => {\\n const formData = new FormData();\\n formData.append(\\\"key\\\", key);\\n formData.append(\\\"val\\\", val);\\n const request = new Request(url, {\\n method: 'POST',\\n body: formData,\\n });\\n const res = await (await fetch(request)).json();\\n resolve(res);\\n });\\n return info;\\n };\\n this.uploadFile2 = async (file, onprogress) => {\\n const url = this.serverUrl + \\\"/upload_file\\\";\\n onprogress(0, false);\\n const size = 1024 * 1024;\\n let index = 0; // index値\\n const fileLength = file.size;\\n const filename = file.name;\\n const fileChunkNum = Math.ceil(fileLength / size);\\n while (true) {\\n const promises = [];\\n for (let i = 0; i < 10; i++) {\\n if (index * size >= fileLength) {\\n break;\\n }\\n const chunk = file.slice(index * size, (index + 1) * size);\\n const p = new Promise((resolve) => {\\n const formData = new FormData();\\n formData.append(\\\"file\\\", new Blob([chunk]));\\n formData.append(\\\"filename\\\", `${filename}_${index}`);\\n const request = new Request(url, {\\n method: 'POST',\\n body: formData,\\n });\\n fetch(request).then(async (_response) => {\\n // console.log(await response.text())\\n resolve();\\n });\\n });\\n index += 1;\\n promises.push(p);\\n }\\n await Promise.all(promises);\\n if (index * size >= fileLength) {\\n break;\\n }\\n onprogress(Math.floor(((index) / (fileChunkNum + 1)) * 100), false);\\n }\\n return fileChunkNum;\\n };\\n this.uploadFile = async (buf, filename, onprogress) => {\\n const url = this.serverUrl + \\\"/upload_file\\\";\\n onprogress(0, false);\\n const size = 1024 * 1024;\\n const fileChunks = [];\\n let index = 0; // index値\\n for (let cur = 0; cur < buf.byteLength; cur += size) {\\n fileChunks.push({\\n hash: index++,\\n chunk: buf.slice(cur, cur + size),\\n });\\n }\\n const chunkNum = fileChunks.length;\\n // console.log(\\\"FILE_CHUNKS:\\\", chunkNum, fileChunks)\\n while (true) {\\n const promises = [];\\n for (let i = 0; i < 10; i++) {\\n const chunk = fileChunks.shift();\\n if (!chunk) {\\n break;\\n }\\n const p = new Promise((resolve) => {\\n const formData = new FormData();\\n formData.append(\\\"file\\\", new Blob([chunk.chunk]));\\n formData.append(\\\"filename\\\", `${filename}_${chunk.hash}`);\\n const request = new Request(url, {\\n method: 'POST',\\n body: formData,\\n });\\n fetch(request).then(async (_response) => {\\n // console.log(await response.text())\\n resolve();\\n });\\n });\\n promises.push(p);\\n }\\n await Promise.all(promises);\\n if (fileChunks.length == 0) {\\n break;\\n }\\n onprogress(Math.floor(((chunkNum - fileChunks.length) / (chunkNum + 1)) * 100), false);\\n }\\n return chunkNum;\\n };\\n this.concatUploadedFile = async (filename, chunkNum) => {\\n const url = this.serverUrl + \\\"/concat_uploaded_file\\\";\\n await new Promise((resolve) => {\\n const formData = new FormData();\\n formData.append(\\\"filename\\\", filename);\\n formData.append(\\\"filenameChunkNum\\\", \\\"\\\" + chunkNum);\\n const request = new Request(url, {\\n method: 'POST',\\n body: formData,\\n });\\n fetch(request).then(async (response) => {\\n console.log(await response.text());\\n resolve();\\n });\\n });\\n };\\n this.loadModel = async (slot, isHalf, params = \\\"{}\\\") => {\\n if (isHalf == undefined || isHalf == null) {\\n console.warn(\\\"isHalf is invalid value\\\", isHalf);\\n isHalf = false;\\n }\\n const url = this.serverUrl + \\\"/load_model\\\";\\n const info = new Promise(async (resolve) => {\\n const formData = new FormData();\\n formData.append(\\\"slot\\\", \\\"\\\" + slot);\\n formData.append(\\\"isHalf\\\", \\\"\\\" + isHalf);\\n formData.append(\\\"params\\\", params);\\n const request = new Request(url, {\\n method: 'POST',\\n body: formData,\\n });\\n const res = await (await fetch(request)).json();\\n resolve(res);\\n });\\n return await info;\\n };\\n this.uploadAssets = async (params) => {\\n const url = this.serverUrl + \\\"/upload_model_assets\\\";\\n const info = new Promise(async (resolve) => {\\n const formData = new FormData();\\n formData.append(\\\"params\\\", params);\\n const request = new Request(url, {\\n method: 'POST',\\n body: formData,\\n });\\n const res = await (await fetch(request)).json();\\n resolve(res);\\n });\\n return await info;\\n };\\n this.switchModelType = async (clinetType) => {\\n const url = this.serverUrl + \\\"/model_type\\\";\\n const info = new Promise(async (resolve) => {\\n const formData = new FormData();\\n formData.append(\\\"modelType\\\", clinetType);\\n const request = new Request(url, {\\n method: 'POST',\\n body: formData,\\n });\\n const res = await (await fetch(request)).json();\\n resolve(res);\\n });\\n return await info;\\n };\\n this.getModelType = async () => {\\n const url = this.serverUrl + \\\"/model_type\\\";\\n const info = new Promise(async (resolve) => {\\n const request = new Request(url, {\\n method: 'GET',\\n });\\n const res = await (await fetch(request)).json();\\n resolve(res);\\n });\\n return await info;\\n };\\n this.export2onnx = async () => {\\n const url = this.serverUrl + \\\"/onnx\\\";\\n const info = new Promise(async (resolve) => {\\n const request = new Request(url, {\\n method: 'GET',\\n });\\n const res = await (await fetch(request)).json();\\n resolve(res);\\n });\\n return await info;\\n };\\n this.mergeModel = async (req) => {\\n const url = this.serverUrl + \\\"/merge_model\\\";\\n const info = new Promise(async (resolve) => {\\n const formData = new FormData();\\n formData.append(\\\"request\\\", JSON.stringify(req));\\n const request = new Request(url, {\\n method: 'POST',\\n body: formData,\\n });\\n const res = await (await fetch(request)).json();\\n console.log(\\\"RESPONSE\\\", res);\\n resolve(res);\\n });\\n return await info;\\n };\\n this.updateModelDefault = async () => {\\n const url = this.serverUrl + \\\"/update_model_default\\\";\\n const info = new Promise(async (resolve) => {\\n const request = new Request(url, {\\n method: 'POST',\\n });\\n const res = await (await fetch(request)).json();\\n console.log(\\\"RESPONSE\\\", res);\\n resolve(res);\\n });\\n return await info;\\n };\\n this.updateModelInfo = async (slot, key, val) => {\\n const url = this.serverUrl + \\\"/update_model_info\\\";\\n const newData = { slot, key, val };\\n const info = new Promise(async (resolve) => {\\n const formData = new FormData();\\n formData.append(\\\"newData\\\", JSON.stringify(newData));\\n const request = new Request(url, {\\n method: 'POST',\\n body: formData,\\n });\\n const res = await (await fetch(request)).json();\\n console.log(\\\"RESPONSE\\\", res);\\n resolve(res);\\n });\\n return await info;\\n };\\n }\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./src/ServerConfigurator.ts?\");\n\n/***/ }),\n\n/***/ \"./src/VoiceChangerClient.ts\":\n/*!***********************************!*\\\n !*** ./src/VoiceChangerClient.ts ***!\n \\***********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ VoiceChangerClient: () => (/* binding */ VoiceChangerClient)\\n/* harmony export */ });\\n/* harmony import */ var _VoiceChangerWorkletNode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VoiceChangerWorkletNode */ \\\"./src/VoiceChangerWorkletNode.ts\\\");\\n/* harmony import */ var raw_loader_worklet_dist_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! raw-loader!../worklet/dist/index.js */ \\\"./node_modules/raw-loader/dist/cjs.js!./worklet/dist/index.js\\\");\\n/* harmony import */ var amazon_chime_sdk_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! amazon-chime-sdk-js */ \\\"./node_modules/amazon-chime-sdk-js/build/index.js\\\");\\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \\\"./src/util.ts\\\");\\n/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./const */ \\\"./src/const.ts\\\");\\n/* harmony import */ var _ServerConfigurator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ServerConfigurator */ \\\"./src/ServerConfigurator.ts\\\");\\n/* harmony import */ var _utils_BlockingQueue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/BlockingQueue */ \\\"./src/utils/BlockingQueue.ts\\\");\\n\\n// @ts-ignore\\n\\n\\n\\n\\n\\n// オーディオデータの流れ\\n// input node(mic or MediaStream) -> [vf node] -> [vc node] -> \\n// sio/rest server -> [vc node] -> output node\\n\\nclass VoiceChangerClient {\\n constructor(ctx, vfEnable, voiceChangerWorkletListener) {\\n this.vfEnable = false;\\n this.vf = null;\\n this.currentDevice = null;\\n this.currentMediaStream = null;\\n this.currentMediaStreamAudioSourceNode = null;\\n this.inputGainNode = null;\\n this.outputGainNode = null;\\n this._isVoiceChanging = false;\\n this.setting = _const__WEBPACK_IMPORTED_MODULE_4__.DefaultVoiceChangerClientSetting;\\n this.sslCertified = [];\\n this.sem = new _utils_BlockingQueue__WEBPACK_IMPORTED_MODULE_6__.BlockingQueue();\\n this.lock = async () => {\\n const num = await this.sem.dequeue();\\n return num;\\n };\\n this.unlock = (num) => {\\n this.sem.enqueue(num + 1);\\n };\\n this.isInitialized = async () => {\\n if (this.promiseForInitialize) {\\n await this.promiseForInitialize;\\n }\\n return true;\\n };\\n /////////////////////////////////////////////////////\\n // オペレーション\\n /////////////////////////////////////////////////////\\n /// Operations ///\\n this.setup = async () => {\\n const lockNum = await this.lock();\\n console.log(`Input Setup=> echo: ${this.setting.echoCancel}, noise1: ${this.setting.noiseSuppression}, noise2: ${this.setting.noiseSuppression2}`);\\n // condition check\\n if (!this.vcInNode) {\\n console.warn(\\\"vc node is not initialized.\\\");\\n throw \\\"vc node is not initialized.\\\";\\n }\\n // Main Process\\n //// shutdown & re-generate mediastream\\n if (this.currentMediaStream) {\\n this.currentMediaStream.getTracks().forEach(x => { x.stop(); });\\n this.currentMediaStream = null;\\n }\\n //// Input デバイスがnullの時はmicStreamを止めてリターン\\n if (!this.setting.audioInput) {\\n console.log(`Input Setup=> client mic is disabled. ${this.setting.audioInput}`);\\n this.vcInNode.stop();\\n await this.unlock(lockNum);\\n return;\\n }\\n if (typeof this.setting.audioInput == \\\"string\\\") {\\n try {\\n if (this.setting.audioInput == \\\"none\\\") {\\n this.currentMediaStream = (0,_util__WEBPACK_IMPORTED_MODULE_3__.createDummyMediaStream)(this.ctx);\\n }\\n else {\\n this.currentMediaStream = await navigator.mediaDevices.getUserMedia({\\n audio: {\\n deviceId: this.setting.audioInput,\\n channelCount: 1,\\n sampleRate: this.setting.sampleRate,\\n sampleSize: 16,\\n autoGainControl: false,\\n echoCancellation: this.setting.echoCancel,\\n noiseSuppression: this.setting.noiseSuppression\\n }\\n });\\n }\\n }\\n catch (e) {\\n console.warn(e);\\n throw e;\\n }\\n // this.currentMediaStream.getAudioTracks().forEach((x) => {\\n // console.log(\\\"MIC Setting(cap)\\\", x.getCapabilities())\\n // console.log(\\\"MIC Setting(const)\\\", x.getConstraints())\\n // console.log(\\\"MIC Setting(setting)\\\", x.getSettings())\\n // })\\n }\\n else {\\n this.currentMediaStream = this.setting.audioInput;\\n }\\n // connect nodes.\\n this.currentMediaStreamAudioSourceNode = this.ctx.createMediaStreamSource(this.currentMediaStream);\\n this.inputGainNode = this.ctx.createGain();\\n this.inputGainNode.gain.value = this.setting.inputGain;\\n this.currentMediaStreamAudioSourceNode.connect(this.inputGainNode);\\n if (this.currentDevice && this.setting.noiseSuppression2) {\\n this.currentDevice.chooseNewInnerDevice(this.currentMediaStream);\\n const voiceFocusNode = await this.currentDevice.createAudioNode(this.ctx); // vf node\\n this.inputGainNode.connect(voiceFocusNode.start); // input node -> vf node\\n voiceFocusNode.end.connect(this.vcInNode);\\n }\\n else {\\n // console.log(\\\"input___ media stream\\\", this.currentMediaStream)\\n // this.currentMediaStream.getTracks().forEach(x => {\\n // console.log(\\\"input___ media stream set\\\", x.getSettings())\\n // console.log(\\\"input___ media stream con\\\", x.getConstraints())\\n // console.log(\\\"input___ media stream cap\\\", x.getCapabilities())\\n // })\\n // console.log(\\\"input___ media node\\\", this.currentMediaStreamAudioSourceNode)\\n // console.log(\\\"input___ gain node\\\", this.inputGainNode.channelCount, this.inputGainNode)\\n this.inputGainNode.connect(this.vcInNode);\\n }\\n this.vcInNode.setOutputNode(this.vcOutNode);\\n console.log(\\\"Input Setup=> success\\\");\\n await this.unlock(lockNum);\\n };\\n this.start = async () => {\\n await this.vcInNode.start();\\n this._isVoiceChanging = true;\\n };\\n this.stop = async () => {\\n await this.vcInNode.stop();\\n this._isVoiceChanging = false;\\n };\\n ////////////////////////\\n /// 設定\\n //////////////////////////////\\n this.setServerUrl = (serverUrl, openTab = false) => {\\n const url = (0,_util__WEBPACK_IMPORTED_MODULE_3__.validateUrl)(serverUrl);\\n const pageUrl = `${location.protocol}//${location.host}`;\\n if (url != pageUrl && url.length != 0 && location.protocol == \\\"https:\\\" && this.sslCertified.includes(url) == false) {\\n if (openTab) {\\n const value = window.confirm(\\\"MMVC Server is different from this page's origin. Open tab to open ssl connection. OK? (You can close the opened tab after ssl connection succeed.)\\\");\\n if (value) {\\n window.open(url, '_blank');\\n this.sslCertified.push(url);\\n }\\n else {\\n alert(\\\"Your voice conversion may fail...\\\");\\n }\\n }\\n }\\n this.vcInNode.updateSetting({ ...this.vcInNode.getSettings(), serverUrl: url });\\n this.configurator.setServerUrl(url);\\n };\\n this.updateClientSetting = (setting) => {\\n console.log(`[VoiceChangerClient] Updating Client Setting,`, this.setting, setting);\\n let reconstructInputRequired = false;\\n if (this.setting.audioInput != setting.audioInput ||\\n this.setting.echoCancel != setting.echoCancel ||\\n this.setting.noiseSuppression != setting.noiseSuppression ||\\n this.setting.noiseSuppression2 != setting.noiseSuppression2 ||\\n this.setting.sampleRate != setting.sampleRate) {\\n reconstructInputRequired = true;\\n }\\n if (this.setting.inputGain != setting.inputGain) {\\n this.setInputGain(setting.inputGain);\\n }\\n if (this.setting.outputGain != setting.outputGain) {\\n this.setOutputGain(setting.outputGain);\\n }\\n this.setting = setting;\\n if (reconstructInputRequired) {\\n this.setup();\\n }\\n };\\n this.setInputGain = (val) => {\\n this.setting.inputGain = val;\\n if (!this.inputGainNode) {\\n return;\\n }\\n this.inputGainNode.gain.value = val;\\n };\\n this.setOutputGain = (val) => {\\n if (!this.outputGainNode) {\\n return;\\n }\\n this.outputGainNode.gain.value = val;\\n };\\n /////////////////////////////////////////////////////\\n // コンポーネント設定、操作\\n /////////////////////////////////////////////////////\\n //## Server ##//\\n this.switchModelType = (clientType) => {\\n return this.configurator.switchModelType(clientType);\\n };\\n this.getModelType = () => {\\n return this.configurator.getModelType();\\n };\\n this.getOnnx = async () => {\\n return this.configurator.export2onnx();\\n };\\n this.mergeModel = async (req) => {\\n return this.configurator.mergeModel(req);\\n };\\n this.updateModelDefault = async () => {\\n return this.configurator.updateModelDefault();\\n };\\n this.updateModelInfo = async (slot, key, val) => {\\n return this.configurator.updateModelInfo(slot, key, val);\\n };\\n this.updateServerSettings = (key, val) => {\\n return this.configurator.updateSettings(key, val);\\n };\\n this.uploadFile = (buf, filename, onprogress) => {\\n return this.configurator.uploadFile(buf, filename, onprogress);\\n };\\n this.uploadFile2 = (file, onprogress) => {\\n return this.configurator.uploadFile2(file, onprogress);\\n };\\n this.concatUploadedFile = (filename, chunkNum) => {\\n return this.configurator.concatUploadedFile(filename, chunkNum);\\n };\\n this.loadModel = (slot, isHalf, params) => {\\n return this.configurator.loadModel(slot, isHalf, params);\\n };\\n this.uploadAssets = (params) => {\\n return this.configurator.uploadAssets(params);\\n };\\n //## Worklet ##//\\n this.configureWorklet = (setting) => {\\n this.vcInNode.configure(setting);\\n this.vcOutNode.configure(setting);\\n };\\n this.startOutputRecording = () => {\\n this.vcOutNode.startOutputRecording();\\n };\\n this.stopOutputRecording = () => {\\n return this.vcOutNode.stopOutputRecording();\\n };\\n this.trancateBuffer = () => {\\n this.vcOutNode.trancateBuffer();\\n };\\n //## Worklet Node ##//\\n this.updateWorkletNodeSetting = (setting) => {\\n this.vcInNode.updateSetting(setting);\\n this.vcOutNode.updateSetting(setting);\\n };\\n /////////////////////////////////////////////////////\\n // 情報取得\\n /////////////////////////////////////////////////////\\n // Information\\n this.getClientSettings = () => {\\n return this.vcInNode.getSettings();\\n };\\n this.getServerSettings = () => {\\n return this.configurator.getSettings();\\n };\\n this.getPerformance = () => {\\n return this.configurator.getPerformance();\\n };\\n this.getSocketId = () => {\\n return this.vcInNode.getSocketId();\\n };\\n this.sem.enqueue(0);\\n this.configurator = new _ServerConfigurator__WEBPACK_IMPORTED_MODULE_5__.ServerConfigurator();\\n this.ctx = ctx;\\n this.vfEnable = vfEnable;\\n this.promiseForInitialize = new Promise(async (resolve) => {\\n const scriptUrl = URL.createObjectURL(new Blob([raw_loader_worklet_dist_index_js__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"]], { type: \\\"text/javascript\\\" }));\\n // await this.ctx.audioWorklet.addModule(scriptUrl)\\n // this.vcInNode = new VoiceChangerWorkletNode(this.ctx, voiceChangerWorkletListener); // vc node \\n try {\\n this.vcInNode = new _VoiceChangerWorkletNode__WEBPACK_IMPORTED_MODULE_0__.VoiceChangerWorkletNode(this.ctx, voiceChangerWorkletListener); // vc node \\n }\\n catch (err) {\\n await this.ctx.audioWorklet.addModule(scriptUrl);\\n this.vcInNode = new _VoiceChangerWorkletNode__WEBPACK_IMPORTED_MODULE_0__.VoiceChangerWorkletNode(this.ctx, voiceChangerWorkletListener); // vc node \\n }\\n // const ctx44k = new AudioContext({ sampleRate: 44100 }) // これでもプチプチが残る\\n const ctx44k = new AudioContext({ sampleRate: 48000 }); // 結局これが一番まし。\\n console.log(\\\"audio out:\\\", ctx44k);\\n try {\\n this.vcOutNode = new _VoiceChangerWorkletNode__WEBPACK_IMPORTED_MODULE_0__.VoiceChangerWorkletNode(ctx44k, voiceChangerWorkletListener); // vc node \\n }\\n catch (err) {\\n await ctx44k.audioWorklet.addModule(scriptUrl);\\n this.vcOutNode = new _VoiceChangerWorkletNode__WEBPACK_IMPORTED_MODULE_0__.VoiceChangerWorkletNode(ctx44k, voiceChangerWorkletListener); // vc node \\n }\\n this.currentMediaStreamAudioDestinationNode = ctx44k.createMediaStreamDestination(); // output node\\n this.outputGainNode = ctx44k.createGain();\\n this.outputGainNode.gain.value = this.setting.outputGain;\\n this.vcOutNode.connect(this.outputGainNode); // vc node -> output node\\n this.outputGainNode.connect(this.currentMediaStreamAudioDestinationNode);\\n if (this.vfEnable) {\\n this.vf = await amazon_chime_sdk_js__WEBPACK_IMPORTED_MODULE_2__.VoiceFocusDeviceTransformer.create({ variant: 'c20' });\\n const dummyMediaStream = (0,_util__WEBPACK_IMPORTED_MODULE_3__.createDummyMediaStream)(this.ctx);\\n this.currentDevice = (await this.vf.createTransformDevice(dummyMediaStream)) || null;\\n }\\n resolve();\\n });\\n }\\n get stream() {\\n return this.currentMediaStreamAudioDestinationNode.stream;\\n }\\n get isVoiceChanging() {\\n return this._isVoiceChanging;\\n }\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./src/VoiceChangerClient.ts?\");\n\n/***/ }),\n\n/***/ \"./src/VoiceChangerWorkletNode.ts\":\n/*!****************************************!*\\\n !*** ./src/VoiceChangerWorkletNode.ts ***!\n \\****************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ VoiceChangerWorkletNode: () => (/* binding */ VoiceChangerWorkletNode),\\n/* harmony export */ postVoice: () => (/* binding */ postVoice)\\n/* harmony export */ });\\n/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./const */ \\\"./src/const.ts\\\");\\n/* harmony import */ var socket_io_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! socket.io-client */ \\\"./node_modules/socket.io-client/build/esm/index.js\\\");\\n/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ \\\"./node_modules/buffer/index.js\\\")[\\\"Buffer\\\"];\\n\\n\\nclass VoiceChangerWorkletNode extends AudioWorkletNode {\\n constructor(context, listener) {\\n super(context, \\\"voice-changer-worklet-processor\\\");\\n this.setting = _const__WEBPACK_IMPORTED_MODULE_0__.DefaultWorkletNodeSetting;\\n this.requestChunks = [];\\n this.socket = null;\\n // performance monitor\\n this.bufferStart = 0;\\n this.isOutputRecording = false;\\n this.recordingOutputChunk = [];\\n this.outputNode = null;\\n // Promises\\n this.startPromiseResolve = null;\\n this.stopPromiseResolve = null;\\n this.setOutputNode = (outputNode) => {\\n this.outputNode = outputNode;\\n };\\n // 設定\\n this.updateSetting = (setting) => {\\n console.log(`[WorkletNode] Updating WorkletNode Setting,`, this.setting, setting);\\n let recreateSocketIoRequired = false;\\n if (this.setting.serverUrl != setting.serverUrl || this.setting.protocol != setting.protocol) {\\n recreateSocketIoRequired = true;\\n }\\n this.setting = setting;\\n if (recreateSocketIoRequired) {\\n this.createSocketIO();\\n }\\n };\\n this.getSettings = () => {\\n return this.setting;\\n };\\n this.getSocketId = () => {\\n return this.socket?.id;\\n };\\n // 処理\\n this.createSocketIO = () => {\\n if (this.socket) {\\n this.socket.close();\\n }\\n if (this.setting.protocol === \\\"sio\\\") {\\n this.socket = (0,socket_io_client__WEBPACK_IMPORTED_MODULE_1__.io)(this.setting.serverUrl + \\\"/test\\\");\\n this.socket.on('connect_error', (err) => {\\n this.listener.notifyException(_const__WEBPACK_IMPORTED_MODULE_0__.VOICE_CHANGER_CLIENT_EXCEPTION.ERR_SIO_CONNECT_FAILED, `[SIO] rconnection failed ${err}`);\\n });\\n this.socket.on('connect', () => {\\n console.log(`[SIO] connect to ${this.setting.serverUrl}`);\\n console.log(`[SIO] ${this.socket?.id}`);\\n });\\n this.socket.on('close', function (socket) {\\n console.log(`[SIO] close ${socket.id}`);\\n });\\n this.socket.on('message', (response) => {\\n console.log(\\\"message:\\\", response);\\n });\\n this.socket.on('response', (response) => {\\n const cur = Date.now();\\n const responseTime = cur - response[0];\\n const result = response[1];\\n const perf = response[2];\\n // Quick hack for server device mode\\n if (response[0] == 0) {\\n this.listener.notifyResponseTime(Math.round(perf[0] * 1000), perf.slice(1, 4));\\n return;\\n }\\n if (result.byteLength < 128 * 2) {\\n this.listener.notifyException(_const__WEBPACK_IMPORTED_MODULE_0__.VOICE_CHANGER_CLIENT_EXCEPTION.ERR_SIO_INVALID_RESPONSE, `[SIO] recevied data is too short ${result.byteLength}`);\\n }\\n else {\\n if (this.outputNode != null) {\\n this.outputNode.postReceivedVoice(response[1]);\\n }\\n else {\\n this.postReceivedVoice(response[1]);\\n }\\n this.listener.notifyResponseTime(responseTime, perf);\\n }\\n });\\n }\\n };\\n this.postReceivedVoice = (data) => {\\n // Int16 to Float\\n const i16Data = new Int16Array(data);\\n const f32Data = new Float32Array(i16Data.length);\\n // console.log(`[worklet] f32DataLength${f32Data.length} i16DataLength${i16Data.length}`)\\n i16Data.forEach((x, i) => {\\n const float = (x >= 0x8000) ? -(0x10000 - x) / 0x8000 : x / 0x7FFF;\\n f32Data[i] = float;\\n });\\n // アップサンプリング\\n let upSampledBuffer = null;\\n if (this.setting.sendingSampleRate == 48000) {\\n upSampledBuffer = f32Data;\\n }\\n else {\\n upSampledBuffer = new Float32Array(f32Data.length * 2);\\n for (let i = 0; i < f32Data.length; i++) {\\n const currentFrame = f32Data[i];\\n const nextFrame = i + 1 < f32Data.length ? f32Data[i + 1] : f32Data[i];\\n upSampledBuffer[i * 2] = currentFrame;\\n upSampledBuffer[i * 2 + 1] = (currentFrame + nextFrame) / 2;\\n }\\n }\\n const req = {\\n requestType: \\\"voice\\\",\\n voice: upSampledBuffer,\\n numTrancateTreshold: 0,\\n volTrancateThreshold: 0,\\n volTrancateLength: 0\\n };\\n this.port.postMessage(req);\\n if (this.isOutputRecording) {\\n this.recordingOutputChunk.push(upSampledBuffer);\\n }\\n };\\n this.sendBuffer = async (newBuffer) => {\\n const timestamp = Date.now();\\n if (this.setting.protocol === \\\"sio\\\") {\\n if (!this.socket) {\\n console.warn(`sio is not initialized`);\\n return;\\n }\\n // console.log(\\\"emit!\\\")\\n this.socket.emit('request_message', [\\n timestamp,\\n newBuffer.buffer\\n ]);\\n }\\n else {\\n const res = await postVoice(this.setting.serverUrl + \\\"/test\\\", timestamp, newBuffer.buffer);\\n if (res.byteLength < 128 * 2) {\\n this.listener.notifyException(_const__WEBPACK_IMPORTED_MODULE_0__.VOICE_CHANGER_CLIENT_EXCEPTION.ERR_REST_INVALID_RESPONSE, `[REST] recevied data is too short ${res.byteLength}`);\\n }\\n else {\\n if (this.outputNode != null) {\\n this.outputNode.postReceivedVoice(res);\\n }\\n else {\\n this.postReceivedVoice(res);\\n }\\n this.listener.notifyResponseTime(Date.now() - timestamp);\\n }\\n }\\n };\\n this.configure = (setting) => {\\n const req = {\\n requestType: \\\"config\\\",\\n voice: new Float32Array(1),\\n numTrancateTreshold: setting.numTrancateTreshold,\\n volTrancateThreshold: setting.volTrancateThreshold,\\n volTrancateLength: setting.volTrancateLength\\n };\\n this.port.postMessage(req);\\n };\\n this.start = async () => {\\n const p = new Promise((resolve) => {\\n this.startPromiseResolve = resolve;\\n });\\n const req = {\\n requestType: \\\"start\\\",\\n voice: new Float32Array(1),\\n numTrancateTreshold: 0,\\n volTrancateThreshold: 0,\\n volTrancateLength: 0\\n };\\n this.port.postMessage(req);\\n await p;\\n };\\n this.stop = async () => {\\n const p = new Promise((resolve) => {\\n this.stopPromiseResolve = resolve;\\n });\\n const req = {\\n requestType: \\\"stop\\\",\\n voice: new Float32Array(1),\\n numTrancateTreshold: 0,\\n volTrancateThreshold: 0,\\n volTrancateLength: 0\\n };\\n this.port.postMessage(req);\\n await p;\\n };\\n this.trancateBuffer = () => {\\n const req = {\\n requestType: \\\"trancateBuffer\\\",\\n voice: new Float32Array(1),\\n numTrancateTreshold: 0,\\n volTrancateThreshold: 0,\\n volTrancateLength: 0\\n };\\n this.port.postMessage(req);\\n };\\n this.startOutputRecording = () => {\\n this.recordingOutputChunk = [];\\n this.isOutputRecording = true;\\n };\\n this.stopOutputRecording = () => {\\n this.isOutputRecording = false;\\n const dataSize = this.recordingOutputChunk.reduce((prev, cur) => {\\n return prev + cur.length;\\n }, 0);\\n const samples = new Float32Array(dataSize);\\n let sampleIndex = 0;\\n for (let i = 0; i < this.recordingOutputChunk.length; i++) {\\n for (let j = 0; j < this.recordingOutputChunk[i].length; j++) {\\n samples[sampleIndex] = this.recordingOutputChunk[i][j];\\n sampleIndex++;\\n }\\n }\\n return samples;\\n };\\n this.port.onmessage = this.handleMessage.bind(this);\\n this.listener = listener;\\n this.createSocketIO();\\n console.log(`[worklet_node][voice-changer-worklet-processor] created.`);\\n }\\n _averageDownsampleBuffer(buffer, originalSampleRate, destinationSamplerate) {\\n if (originalSampleRate == destinationSamplerate) {\\n return buffer;\\n }\\n if (destinationSamplerate > originalSampleRate) {\\n throw \\\"downsampling rate show be smaller than original sample rate\\\";\\n }\\n const sampleRateRatio = originalSampleRate / destinationSamplerate;\\n const newLength = Math.round(buffer.length / sampleRateRatio);\\n const result = new Float32Array(newLength);\\n let offsetResult = 0;\\n let offsetBuffer = 0;\\n while (offsetResult < result.length) {\\n var nextOffsetBuffer = Math.round((offsetResult + 1) * sampleRateRatio);\\n // Use average value of skipped samples\\n var accum = 0, count = 0;\\n for (var i = offsetBuffer; i < nextOffsetBuffer && i < buffer.length; i++) {\\n accum += buffer[i];\\n count++;\\n }\\n result[offsetResult] = accum / count;\\n // Or you can simply get rid of the skipped samples:\\n // result[offsetResult] = buffer[nextOffsetBuffer];\\n offsetResult++;\\n offsetBuffer = nextOffsetBuffer;\\n }\\n return result;\\n }\\n handleMessage(event) {\\n // console.log(`[Node:handleMessage_] `, event.data.volume);\\n if (event.data.responseType === \\\"start_ok\\\") {\\n if (this.startPromiseResolve) {\\n this.startPromiseResolve();\\n this.startPromiseResolve = null;\\n }\\n }\\n else if (event.data.responseType === \\\"stop_ok\\\") {\\n if (this.stopPromiseResolve) {\\n this.stopPromiseResolve();\\n this.stopPromiseResolve = null;\\n }\\n }\\n else if (event.data.responseType === \\\"volume\\\") {\\n this.listener.notifyVolume(event.data.volume);\\n }\\n else if (event.data.responseType === \\\"inputData\\\") {\\n const inputData = event.data.inputData;\\n // console.log(\\\"receive input data\\\", inputData)\\n // ダウンサンプリング\\n let downsampledBuffer = null;\\n if (this.setting.sendingSampleRate == 48000) {\\n downsampledBuffer = inputData;\\n }\\n else if (this.setting.downSamplingMode == _const__WEBPACK_IMPORTED_MODULE_0__.DownSamplingMode.decimate) {\\n //////// (Kind 1) 間引き //////////\\n //// 48000Hz で入ってくるので間引いて24000Hzに変換する。\\n downsampledBuffer = new Float32Array(inputData.length / 2);\\n for (let i = 0; i < inputData.length; i++) {\\n if (i % 2 == 0) {\\n downsampledBuffer[i / 2] = inputData[i];\\n }\\n }\\n }\\n else {\\n //////// (Kind 2) 平均 //////////\\n // downsampledBuffer = this._averageDownsampleBuffer(buffer, 48000, 24000)\\n downsampledBuffer = this._averageDownsampleBuffer(inputData, 48000, this.setting.sendingSampleRate);\\n }\\n // Float to Int16\\n const arrayBuffer = new ArrayBuffer(downsampledBuffer.length * 2);\\n const dataView = new DataView(arrayBuffer);\\n for (let i = 0; i < downsampledBuffer.length; i++) {\\n let s = Math.max(-1, Math.min(1, downsampledBuffer[i]));\\n s = s < 0 ? s * 0x8000 : s * 0x7FFF;\\n dataView.setInt16(i * 2, s, true);\\n }\\n // バッファリング\\n this.requestChunks.push(arrayBuffer);\\n //// リクエストバッファの中身が、リクエスト送信数と違う場合は処理終了。\\n if (this.requestChunks.length < this.setting.inputChunkNum) {\\n return;\\n }\\n // リクエスト用の入れ物を作成\\n const windowByteLength = this.requestChunks.reduce((prev, cur) => {\\n return prev + cur.byteLength;\\n }, 0);\\n const newBuffer = new Uint8Array(windowByteLength);\\n // リクエストのデータをセット\\n this.requestChunks.reduce((prev, cur) => {\\n newBuffer.set(new Uint8Array(cur), prev);\\n return prev + cur.byteLength;\\n }, 0);\\n this.sendBuffer(newBuffer);\\n this.requestChunks = [];\\n this.listener.notifySendBufferingTime(Date.now() - this.bufferStart);\\n this.bufferStart = Date.now();\\n }\\n else {\\n console.warn(`[worklet_node][voice-changer-worklet-processor] unknown response ${event.data.responseType}`, event.data);\\n }\\n }\\n}\\nconst postVoice = async (url, timestamp, buffer) => {\\n const obj = {\\n timestamp,\\n buffer: Buffer.from(buffer).toString('base64')\\n };\\n const body = JSON.stringify(obj);\\n const res = await fetch(`${url}`, {\\n method: \\\"POST\\\",\\n headers: {\\n 'Accept': 'application/json',\\n 'Content-Type': 'application/json'\\n },\\n body: body\\n });\\n try {\\n const receivedJson = await res.json();\\n const changedVoiceBase64 = receivedJson[\\\"changedVoiceBase64\\\"];\\n const buf = Buffer.from(changedVoiceBase64, \\\"base64\\\");\\n const ab = new ArrayBuffer(buf.length);\\n const view = new Uint8Array(ab);\\n for (let i = 0; i < buf.length; ++i) {\\n view[i] = buf[i];\\n }\\n return ab;\\n }\\n catch (e) {\\n console.log(\\\"Exception:\\\", e);\\n return new ArrayBuffer(10);\\n }\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./src/VoiceChangerWorkletNode.ts?\");\n\n/***/ }),\n\n/***/ \"./src/const.ts\":\n/*!**********************!*\\\n !*** ./src/const.ts ***!\n \\**********************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ ClientType: () => (/* binding */ ClientType),\\n/* harmony export */ CrossFadeOverlapSize: () => (/* binding */ CrossFadeOverlapSize),\\n/* harmony export */ DefaultServerSetting: () => (/* binding */ DefaultServerSetting),\\n/* harmony export */ DefaultServerSetting_DDSP_SVC: () => (/* binding */ DefaultServerSetting_DDSP_SVC),\\n/* harmony export */ DefaultServerSetting_MMVCv13: () => (/* binding */ DefaultServerSetting_MMVCv13),\\n/* harmony export */ DefaultServerSetting_MMVCv15: () => (/* binding */ DefaultServerSetting_MMVCv15),\\n/* harmony export */ DefaultServerSetting_RVC: () => (/* binding */ DefaultServerSetting_RVC),\\n/* harmony export */ DefaultServerSetting_so_vits_svc_40: () => (/* binding */ DefaultServerSetting_so_vits_svc_40),\\n/* harmony export */ DefaultServerSetting_so_vits_svc_40_c: () => (/* binding */ DefaultServerSetting_so_vits_svc_40_c),\\n/* harmony export */ DefaultServerSetting_so_vits_svc_40v2: () => (/* binding */ DefaultServerSetting_so_vits_svc_40v2),\\n/* harmony export */ DefaultVoiceChangerClientSetting: () => (/* binding */ DefaultVoiceChangerClientSetting),\\n/* harmony export */ DefaultWorkletNodeSetting: () => (/* binding */ DefaultWorkletNodeSetting),\\n/* harmony export */ DefaultWorkletNodeSetting_DDSP_SVC: () => (/* binding */ DefaultWorkletNodeSetting_DDSP_SVC),\\n/* harmony export */ DefaultWorkletNodeSetting_RVC: () => (/* binding */ DefaultWorkletNodeSetting_RVC),\\n/* harmony export */ DefaultWorkletNodeSetting_so_vits_svc_40: () => (/* binding */ DefaultWorkletNodeSetting_so_vits_svc_40),\\n/* harmony export */ DefaultWorkletNodeSetting_so_vits_svc_40v2: () => (/* binding */ DefaultWorkletNodeSetting_so_vits_svc_40v2),\\n/* harmony export */ DefaultWorkletSetting: () => (/* binding */ DefaultWorkletSetting),\\n/* harmony export */ DiffMethod: () => (/* binding */ DiffMethod),\\n/* harmony export */ DownSamplingMode: () => (/* binding */ DownSamplingMode),\\n/* harmony export */ F0Detector: () => (/* binding */ F0Detector),\\n/* harmony export */ Framework: () => (/* binding */ Framework),\\n/* harmony export */ INDEXEDDB_DB_APP_NAME: () => (/* binding */ INDEXEDDB_DB_APP_NAME),\\n/* harmony export */ INDEXEDDB_DB_NAME: () => (/* binding */ INDEXEDDB_DB_NAME),\\n/* harmony export */ INDEXEDDB_KEY_CLIENT: () => (/* binding */ INDEXEDDB_KEY_CLIENT),\\n/* harmony export */ INDEXEDDB_KEY_MODEL_DATA: () => (/* binding */ INDEXEDDB_KEY_MODEL_DATA),\\n/* harmony export */ INDEXEDDB_KEY_SERVER: () => (/* binding */ INDEXEDDB_KEY_SERVER),\\n/* harmony export */ INDEXEDDB_KEY_WORKLET: () => (/* binding */ INDEXEDDB_KEY_WORKLET),\\n/* harmony export */ INDEXEDDB_KEY_WORKLETNODE: () => (/* binding */ INDEXEDDB_KEY_WORKLETNODE),\\n/* harmony export */ InputSampleRate: () => (/* binding */ InputSampleRate),\\n/* harmony export */ MAX_MODEL_SLOT_NUM: () => (/* binding */ MAX_MODEL_SLOT_NUM),\\n/* harmony export */ ModelSamplingRate: () => (/* binding */ ModelSamplingRate),\\n/* harmony export */ ModelType: () => (/* binding */ ModelType),\\n/* harmony export */ OnnxExecutionProvider: () => (/* binding */ OnnxExecutionProvider),\\n/* harmony export */ Protocol: () => (/* binding */ Protocol),\\n/* harmony export */ SampleRate: () => (/* binding */ SampleRate),\\n/* harmony export */ SendingSampleRate: () => (/* binding */ SendingSampleRate),\\n/* harmony export */ ServerSettingKey: () => (/* binding */ ServerSettingKey),\\n/* harmony export */ VOICE_CHANGER_CLIENT_EXCEPTION: () => (/* binding */ VOICE_CHANGER_CLIENT_EXCEPTION)\\n/* harmony export */ });\\n// (★1) chunk sizeは 128サンプル, 256byte(int16)と定義。\\n// (★2) 256byte(最低バッファサイズ256から間引いた個数x2byte)をchunkとして管理。\\n// 24000sample -> 1sec, 128sample(1chunk) -> 5.333msec\\n// 187.5chunk -> 1sec\\nconst ClientType = {\\n \\\"MMVCv15\\\": \\\"MMVCv15\\\",\\n \\\"MMVCv13\\\": \\\"MMVCv13\\\",\\n \\\"so-vits-svc-40\\\": \\\"so-vits-svc-40\\\",\\n \\\"so-vits-svc-40_c\\\": \\\"so-vits-svc-40_c\\\",\\n \\\"so-vits-svc-40v2\\\": \\\"so-vits-svc-40v2\\\",\\n \\\"DDSP-SVC\\\": \\\"DDSP-SVC\\\",\\n \\\"RVC\\\": \\\"RVC\\\"\\n};\\n///////////////////////\\n// サーバセッティング\\n///////////////////////\\nconst InputSampleRate = {\\n \\\"48000\\\": 48000,\\n \\\"44100\\\": 44100,\\n \\\"24000\\\": 24000\\n};\\nconst ModelSamplingRate = {\\n \\\"48000\\\": 48000,\\n \\\"40000\\\": 40000,\\n \\\"32000\\\": 32000\\n};\\nconst CrossFadeOverlapSize = {\\n \\\"1024\\\": 1024,\\n \\\"2048\\\": 2048,\\n \\\"4096\\\": 4096,\\n};\\nconst OnnxExecutionProvider = {\\n \\\"CPUExecutionProvider\\\": \\\"CPUExecutionProvider\\\",\\n \\\"CUDAExecutionProvider\\\": \\\"CUDAExecutionProvider\\\",\\n \\\"DmlExecutionProvider\\\": \\\"DmlExecutionProvider\\\",\\n \\\"OpenVINOExecutionProvider\\\": \\\"OpenVINOExecutionProvider\\\",\\n};\\nconst Framework = {\\n \\\"PyTorch\\\": \\\"PyTorch\\\",\\n \\\"ONNX\\\": \\\"ONNX\\\",\\n};\\nconst F0Detector = {\\n \\\"dio\\\": \\\"dio\\\",\\n \\\"harvest\\\": \\\"harvest\\\",\\n // \\\"parselmouth\\\": \\\"parselmouth\\\",\\n \\\"crepe\\\": \\\"crepe\\\",\\n};\\nconst DiffMethod = {\\n \\\"pndm\\\": \\\"pndm\\\",\\n \\\"dpm-solver\\\": \\\"dpm-solver\\\",\\n};\\nconst ModelType = {\\n \\\"pyTorchRVC\\\": \\\"pyTorchRVC\\\",\\n \\\"pyTorchRVCNono\\\": \\\"pyTorchRVCNono\\\",\\n \\\"pyTorchRVCv2\\\": \\\"pyTorchRVCv2\\\",\\n \\\"pyTorchRVCv2Nono\\\": \\\"pyTorchRVCv2Nono\\\",\\n \\\"pyTorchWebUI\\\": \\\"pyTorchWebUI\\\",\\n \\\"pyTorchWebUINono\\\": \\\"pyTorchWebUINono\\\",\\n \\\"onnxRVC\\\": \\\"onnxRVC\\\",\\n \\\"onnxRVCNono\\\": \\\"onnxRVCNono\\\",\\n};\\nconst ServerSettingKey = {\\n \\\"srcId\\\": \\\"srcId\\\",\\n \\\"dstId\\\": \\\"dstId\\\",\\n \\\"gpu\\\": \\\"gpu\\\",\\n \\\"crossFadeOffsetRate\\\": \\\"crossFadeOffsetRate\\\",\\n \\\"crossFadeEndRate\\\": \\\"crossFadeEndRate\\\",\\n \\\"crossFadeOverlapSize\\\": \\\"crossFadeOverlapSize\\\",\\n \\\"framework\\\": \\\"framework\\\",\\n \\\"onnxExecutionProvider\\\": \\\"onnxExecutionProvider\\\",\\n \\\"f0Factor\\\": \\\"f0Factor\\\",\\n \\\"f0Detector\\\": \\\"f0Detector\\\",\\n \\\"recordIO\\\": \\\"recordIO\\\",\\n \\\"enableServerAudio\\\": \\\"enableServerAudio\\\",\\n \\\"serverAudioStated\\\": \\\"serverAudioStated\\\",\\n \\\"serverInputAudioSampleRate\\\": \\\"serverInputAudioSampleRate\\\",\\n \\\"serverOutputAudioSampleRate\\\": \\\"serverOutputAudioSampleRate\\\",\\n \\\"serverInputAudioBufferSize\\\": \\\"serverInputAudioBufferSize\\\",\\n \\\"serverOutputAudioBufferSize\\\": \\\"serverOutputAudioBufferSize\\\",\\n \\\"serverInputDeviceId\\\": \\\"serverInputDeviceId\\\",\\n \\\"serverOutputDeviceId\\\": \\\"serverOutputDeviceId\\\",\\n \\\"serverReadChunkSize\\\": \\\"serverReadChunkSize\\\",\\n \\\"serverInputAudioGain\\\": \\\"serverInputAudioGain\\\",\\n \\\"serverOutputAudioGain\\\": \\\"serverOutputAudioGain\\\",\\n \\\"tran\\\": \\\"tran\\\",\\n \\\"noiseScale\\\": \\\"noiseScale\\\",\\n \\\"predictF0\\\": \\\"predictF0\\\",\\n \\\"silentThreshold\\\": \\\"silentThreshold\\\",\\n \\\"extraConvertSize\\\": \\\"extraConvertSize\\\",\\n \\\"clusterInferRatio\\\": \\\"clusterInferRatio\\\",\\n \\\"indexRatio\\\": \\\"indexRatio\\\",\\n \\\"protect\\\": \\\"protect\\\",\\n \\\"rvcQuality\\\": \\\"rvcQuality\\\",\\n \\\"modelSamplingRate\\\": \\\"modelSamplingRate\\\",\\n \\\"silenceFront\\\": \\\"silenceFront\\\",\\n \\\"modelSlotIndex\\\": \\\"modelSlotIndex\\\",\\n \\\"useEnhancer\\\": \\\"useEnhancer\\\",\\n \\\"useDiff\\\": \\\"useDiff\\\",\\n // \\\"useDiffDpm\\\": \\\"useDiffDpm\\\",\\n \\\"diffMethod\\\": \\\"diffMethod\\\",\\n \\\"useDiffSilence\\\": \\\"useDiffSilence\\\",\\n \\\"diffAcc\\\": \\\"diffAcc\\\",\\n \\\"diffSpkId\\\": \\\"diffSpkId\\\",\\n \\\"kStep\\\": \\\"kStep\\\",\\n \\\"threshold\\\": \\\"threshold\\\",\\n \\\"inputSampleRate\\\": \\\"inputSampleRate\\\",\\n \\\"enableDirectML\\\": \\\"enableDirectML\\\",\\n};\\nconst DefaultServerSetting = {\\n // VC Common \\n inputSampleRate: 48000,\\n crossFadeOffsetRate: 0.0,\\n crossFadeEndRate: 1.0,\\n crossFadeOverlapSize: CrossFadeOverlapSize[1024],\\n recordIO: 0,\\n enableServerAudio: 0,\\n serverAudioStated: 0,\\n serverInputAudioSampleRate: 48000,\\n serverOutputAudioSampleRate: 48000,\\n serverInputAudioBufferSize: 1024 * 24,\\n serverOutputAudioBufferSize: 1024 * 24,\\n serverInputDeviceId: -1,\\n serverOutputDeviceId: -1,\\n serverReadChunkSize: 256,\\n serverInputAudioGain: 1.0,\\n serverOutputAudioGain: 1.0,\\n // VC Specific\\n srcId: 0,\\n dstId: 1,\\n gpu: 0,\\n framework: Framework.PyTorch,\\n f0Factor: 1.0,\\n onnxExecutionProvider: OnnxExecutionProvider.CPUExecutionProvider,\\n f0Detector: F0Detector.dio,\\n tran: 0,\\n noiseScale: 0,\\n predictF0: 0,\\n silentThreshold: 0,\\n extraConvertSize: 0,\\n clusterInferRatio: 0,\\n indexRatio: 0,\\n protect: 0.5,\\n rvcQuality: 0,\\n modelSamplingRate: 48000,\\n silenceFront: 1,\\n modelSlotIndex: 0,\\n sampleModels: [],\\n useEnhancer: 0,\\n useDiff: 1,\\n diffMethod: \\\"dpm-solver\\\",\\n useDiffSilence: 0,\\n diffAcc: 20,\\n diffSpkId: 1,\\n kStep: 120,\\n threshold: -45,\\n enableDirectML: 0,\\n // \\n status: \\\"ok\\\",\\n configFile: \\\"\\\",\\n pyTorchModelFile: \\\"\\\",\\n onnxModelFile: \\\"\\\",\\n onnxExecutionProviders: [],\\n modelSlots: [],\\n serverAudioInputDevices: [],\\n serverAudioOutputDevices: []\\n};\\nconst DefaultServerSetting_MMVCv15 = {\\n ...DefaultServerSetting, dstId: 101,\\n};\\nconst DefaultServerSetting_MMVCv13 = {\\n ...DefaultServerSetting, srcId: 107, dstId: 100,\\n};\\nconst DefaultServerSetting_so_vits_svc_40 = {\\n ...DefaultServerSetting, tran: 10, noiseScale: 0.3, extraConvertSize: 1024 * 8, clusterInferRatio: 0.1,\\n};\\nconst DefaultServerSetting_so_vits_svc_40_c = {\\n ...DefaultServerSetting, tran: 10, noiseScale: 0.3, extraConvertSize: 1024 * 8, clusterInferRatio: 0.1,\\n};\\nconst DefaultServerSetting_so_vits_svc_40v2 = {\\n ...DefaultServerSetting, tran: 10, noiseScale: 0.3, extraConvertSize: 1024 * 8, clusterInferRatio: 0.1,\\n};\\nconst DefaultServerSetting_DDSP_SVC = {\\n ...DefaultServerSetting, dstId: 1, tran: 10, extraConvertSize: 1024 * 8\\n};\\nconst DefaultServerSetting_RVC = {\\n ...DefaultServerSetting, tran: 10, extraConvertSize: 1024 * 4, f0Detector: F0Detector.harvest\\n};\\nconst DefaultWorkletSetting = {\\n numTrancateTreshold: 100,\\n volTrancateThreshold: 0.0005,\\n volTrancateLength: 32\\n};\\n///////////////////////\\n// Worklet Nodeセッティング\\n///////////////////////\\nconst Protocol = {\\n \\\"sio\\\": \\\"sio\\\",\\n \\\"rest\\\": \\\"rest\\\",\\n};\\nconst SendingSampleRate = {\\n \\\"48000\\\": 48000,\\n \\\"44100\\\": 44100,\\n \\\"24000\\\": 24000\\n};\\nconst DownSamplingMode = {\\n \\\"decimate\\\": \\\"decimate\\\",\\n \\\"average\\\": \\\"average\\\"\\n};\\nconst DefaultWorkletNodeSetting = {\\n serverUrl: \\\"\\\",\\n protocol: \\\"sio\\\",\\n sendingSampleRate: 48000,\\n inputChunkNum: 48,\\n downSamplingMode: \\\"average\\\"\\n};\\nconst DefaultWorkletNodeSetting_so_vits_svc_40 = {\\n ...DefaultWorkletNodeSetting, inputChunkNum: 128,\\n};\\nconst DefaultWorkletNodeSetting_so_vits_svc_40v2 = {\\n ...DefaultWorkletNodeSetting, inputChunkNum: 128,\\n};\\nconst DefaultWorkletNodeSetting_DDSP_SVC = {\\n ...DefaultWorkletNodeSetting, inputChunkNum: 256,\\n};\\nconst DefaultWorkletNodeSetting_RVC = {\\n ...DefaultWorkletNodeSetting, inputChunkNum: 256,\\n};\\n///////////////////////\\n// クライアントセッティング\\n///////////////////////\\nconst SampleRate = {\\n \\\"48000\\\": 48000,\\n};\\nconst DefaultVoiceChangerClientSetting = {\\n audioInput: null,\\n sampleRate: 48000,\\n speakers: [\\n {\\n \\\"id\\\": 0,\\n \\\"name\\\": \\\"user\\\"\\n },\\n {\\n \\\"id\\\": 101,\\n \\\"name\\\": \\\"ずんだもん\\\"\\n },\\n {\\n \\\"id\\\": 102,\\n \\\"name\\\": \\\"そら\\\"\\n },\\n {\\n \\\"id\\\": 103,\\n \\\"name\\\": \\\"めたん\\\"\\n },\\n {\\n \\\"id\\\": 104,\\n \\\"name\\\": \\\"つむぎ\\\"\\n }\\n ],\\n correspondences: [],\\n echoCancel: false,\\n noiseSuppression: false,\\n noiseSuppression2: false,\\n inputGain: 1.0,\\n outputGain: 1.0\\n};\\n////////////////////////////////////\\n// Exceptions\\n////////////////////////////////////\\nconst VOICE_CHANGER_CLIENT_EXCEPTION = {\\n ERR_SIO_CONNECT_FAILED: \\\"ERR_SIO_CONNECT_FAILED\\\",\\n ERR_SIO_INVALID_RESPONSE: \\\"ERR_SIO_INVALID_RESPONSE\\\",\\n ERR_REST_INVALID_RESPONSE: \\\"ERR_REST_INVALID_RESPONSE\\\",\\n ERR_MIC_STREAM_NOT_INITIALIZED: \\\"ERR_MIC_STREAM_NOT_INITIALIZED\\\"\\n};\\n////////////////////////////////////\\n// indexedDB\\n////////////////////////////////////\\nconst INDEXEDDB_DB_APP_NAME = \\\"INDEXEDDB_KEY_VOICE_CHANGER\\\";\\nconst INDEXEDDB_DB_NAME = \\\"INDEXEDDB_KEY_VOICE_CHANGER_DB\\\";\\nconst INDEXEDDB_KEY_CLIENT = \\\"INDEXEDDB_KEY_VOICE_CHANGER_LIB_CLIENT\\\";\\nconst INDEXEDDB_KEY_SERVER = \\\"INDEXEDDB_KEY_VOICE_CHANGER_LIB_SERVER\\\";\\nconst INDEXEDDB_KEY_WORKLETNODE = \\\"INDEXEDDB_KEY_VOICE_CHANGER_LIB_WORKLETNODE\\\";\\nconst INDEXEDDB_KEY_MODEL_DATA = \\\"INDEXEDDB_KEY_VOICE_CHANGER_LIB_MODEL_DATA\\\";\\nconst INDEXEDDB_KEY_WORKLET = \\\"INDEXEDDB_KEY_VOICE_CHANGER_LIB_WORKLET\\\";\\nconst MAX_MODEL_SLOT_NUM = 4;\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./src/const.ts?\");\n\n/***/ }),\n\n/***/ \"./src/hooks/useClient.ts\":\n/*!********************************!*\\\n !*** ./src/hooks/useClient.ts ***!\n \\********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ useClient: () => (/* binding */ useClient)\\n/* harmony export */ });\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \\\"react\\\");\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _VoiceChangerClient__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../VoiceChangerClient */ \\\"./src/VoiceChangerClient.ts\\\");\\n/* harmony import */ var _useClientSetting__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./useClientSetting */ \\\"./src/hooks/useClientSetting.ts\\\");\\n/* harmony import */ var _useIndexedDB__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./useIndexedDB */ \\\"./src/hooks/useIndexedDB.ts\\\");\\n/* harmony import */ var _useServerSetting__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./useServerSetting */ \\\"./src/hooks/useServerSetting.ts\\\");\\n/* harmony import */ var _useWorkletNodeSetting__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./useWorkletNodeSetting */ \\\"./src/hooks/useWorkletNodeSetting.ts\\\");\\n/* harmony import */ var _useWorkletSetting__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./useWorkletSetting */ \\\"./src/hooks/useWorkletSetting.ts\\\");\\n\\n\\n\\n\\n\\n\\n\\nconst InitialPerformanceData = {\\n responseTime: 0,\\n preprocessTime: 0,\\n mainprocessTime: 0,\\n postprocessTime: 0\\n};\\nconst useClient = (props) => {\\n const [initialized, setInitialized] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\\n // const [clientType, setClientType] = useState(null)\\n // (1-1) クライアント \\n const voiceChangerClientRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\\n const [voiceChangerClient, setVoiceChangerClient] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(voiceChangerClientRef.current);\\n //// クライアント初期化待ち用フラグ\\n const initializedResolveRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\\n const initializedPromise = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return new Promise((resolve) => {\\n initializedResolveRef.current = resolve;\\n });\\n }, []);\\n // (1-2) 各種設定I/F\\n const clientSetting = (0,_useClientSetting__WEBPACK_IMPORTED_MODULE_2__.useClientSetting)({ clientType: props.clientType, voiceChangerClient, audioContext: props.audioContext });\\n const workletNodeSetting = (0,_useWorkletNodeSetting__WEBPACK_IMPORTED_MODULE_5__.useWorkletNodeSetting)({ clientType: props.clientType, voiceChangerClient });\\n const workletSetting = (0,_useWorkletSetting__WEBPACK_IMPORTED_MODULE_6__.useWorkletSetting)({ clientType: props.clientType, voiceChangerClient });\\n const serverSetting = (0,_useServerSetting__WEBPACK_IMPORTED_MODULE_4__.useServerSetting)({ clientType: props.clientType, voiceChangerClient });\\n const indexedDBState = (0,_useIndexedDB__WEBPACK_IMPORTED_MODULE_3__.useIndexedDB)({ clientType: props.clientType });\\n // (1-3) モニタリングデータ\\n const [bufferingTime, setBufferingTime] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);\\n const [performance, setPerformance] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(InitialPerformanceData);\\n const [volume, setVolume] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);\\n //// Server Audio Deviceを使うとき、モニタリングデータはpolling\\n const updatePerformance = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n if (!voiceChangerClientRef.current) {\\n return null;\\n }\\n return async () => {\\n if (voiceChangerClientRef.current) {\\n const performance = await voiceChangerClientRef.current.getPerformance();\\n const responseTime = performance[0];\\n const preprocessTime = performance[1];\\n const mainprocessTime = performance[2];\\n const postprocessTime = performance[3];\\n setPerformance({ responseTime, preprocessTime, mainprocessTime, postprocessTime });\\n }\\n else {\\n const responseTime = 0;\\n const preprocessTime = 0;\\n const mainprocessTime = 0;\\n const postprocessTime = 0;\\n setPerformance({ responseTime, preprocessTime, mainprocessTime, postprocessTime });\\n }\\n };\\n }, [voiceChangerClientRef.current]);\\n // (1-4) エラーステータス\\n const errorCountRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(0);\\n // (2-1) 初期化処理\\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\\n const initialized = async () => {\\n if (!props.audioContext) {\\n return;\\n }\\n const voiceChangerClient = new _VoiceChangerClient__WEBPACK_IMPORTED_MODULE_1__.VoiceChangerClient(props.audioContext, true, {\\n notifySendBufferingTime: (val) => {\\n setBufferingTime(val);\\n },\\n notifyResponseTime: (val, perf) => {\\n const responseTime = val;\\n const preprocessTime = perf ? Math.ceil(perf[0] * 1000) : 0;\\n const mainprocessTime = perf ? Math.ceil(perf[1] * 1000) : 0;\\n const postprocessTime = perf ? Math.ceil(perf[2] * 1000) : 0;\\n setPerformance({ responseTime, preprocessTime, mainprocessTime, postprocessTime });\\n },\\n notifyException: (mes) => {\\n if (mes.length > 0) {\\n console.log(`error:${mes}`);\\n errorCountRef.current += 1;\\n if (errorCountRef.current > 100) {\\n alert(\\\"エラーが頻発しています。対象としているフレームワークのモデルがロードされているか確認してください。\\\");\\n errorCountRef.current = 0;\\n }\\n }\\n },\\n notifyVolume: (vol) => {\\n setVolume(vol);\\n }\\n });\\n await voiceChangerClient.isInitialized();\\n voiceChangerClientRef.current = voiceChangerClient;\\n setVoiceChangerClient(voiceChangerClientRef.current);\\n console.log(\\\"[useClient] client initialized\\\");\\n // const audio = document.getElementById(props.audioOutputElementId) as HTMLAudioElement\\n // audio.srcObject = voiceChangerClientRef.current.stream\\n // audio.play()\\n initializedResolveRef.current();\\n setInitialized(true);\\n };\\n initialized();\\n }, [props.audioContext]);\\n const setAudioOutputElementId = (elemId) => {\\n if (!voiceChangerClientRef.current) {\\n console.warn(\\\"[voiceChangerClient] is not ready for set audio output.\\\");\\n return;\\n }\\n const audio = document.getElementById(elemId);\\n audio.srcObject = voiceChangerClientRef.current.stream;\\n audio.play();\\n };\\n // (2-2) 情報リロード\\n const getInfo = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return async () => {\\n await initializedPromise;\\n await clientSetting.reloadClientSetting(); // 実質的な処理の意味はない\\n await serverSetting.reloadServerInfo();\\n };\\n }, [clientSetting.reloadClientSetting, serverSetting.reloadServerInfo]);\\n const clearSetting = async () => {\\n await clientSetting.clearSetting();\\n await workletNodeSetting.clearSetting();\\n await workletSetting.clearSetting();\\n await serverSetting.clearSetting();\\n };\\n return {\\n initialized,\\n // 各種設定I/Fへの参照\\n clientSetting,\\n workletNodeSetting,\\n workletSetting,\\n serverSetting,\\n indexedDBState,\\n // モニタリングデータ\\n bufferingTime,\\n volume,\\n performance,\\n updatePerformance,\\n // setClientType,\\n // 情報取得\\n getInfo,\\n // 設定クリア\\n clearSetting,\\n // AudioOutputElement 設定\\n setAudioOutputElementId,\\n };\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./src/hooks/useClient.ts?\");\n\n/***/ }),\n\n/***/ \"./src/hooks/useClientSetting.ts\":\n/*!***************************************!*\\\n !*** ./src/hooks/useClientSetting.ts ***!\n \\***************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ useClientSetting: () => (/* binding */ useClientSetting)\\n/* harmony export */ });\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \\\"react\\\");\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../const */ \\\"./src/const.ts\\\");\\n/* harmony import */ var _useIndexedDB__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./useIndexedDB */ \\\"./src/hooks/useIndexedDB.ts\\\");\\n\\n\\n\\nconst useClientSetting = (props) => {\\n const [clientSetting, setClientSetting] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(_const__WEBPACK_IMPORTED_MODULE_1__.DefaultVoiceChangerClientSetting);\\n const { setItem, getItem, removeItem } = (0,_useIndexedDB__WEBPACK_IMPORTED_MODULE_2__.useIndexedDB)({ clientType: props.clientType });\\n // 初期化 その1 DBから取得\\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\\n const loadCache = async () => {\\n const setting = await getItem(_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_CLIENT);\\n if (!setting) {\\n return;\\n }\\n console.log(\\\"[ClientSetting] Load Setting from db\\\", setting);\\n if (setting.audioInput == \\\"null\\\") {\\n setting.audioInput = null;\\n }\\n if (setting) {\\n setClientSetting({ ...setting });\\n }\\n };\\n loadCache();\\n }, []);\\n // 初期化 その2 クライアントに設定\\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\\n if (!props.voiceChangerClient)\\n return;\\n props.voiceChangerClient.updateClientSetting(clientSetting);\\n }, [props.voiceChangerClient]);\\n const storeSetting = async (setting) => {\\n const storeData = { ...setting };\\n if (typeof storeData.audioInput != \\\"string\\\") {\\n storeData.audioInput = null;\\n }\\n setItem(_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_CLIENT, storeData);\\n setClientSetting(setting);\\n };\\n const clearSetting = async () => {\\n await removeItem(_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_CLIENT);\\n };\\n //////////////\\n // 設定\\n /////////////\\n const updateClientSetting = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return (_clientSetting) => {\\n if (!props.voiceChangerClient)\\n return;\\n for (let k in _clientSetting) {\\n const cur_v = clientSetting[k];\\n const new_v = _clientSetting[k];\\n if (cur_v != new_v) {\\n storeSetting(_clientSetting);\\n props.voiceChangerClient.updateClientSetting(_clientSetting);\\n break;\\n }\\n }\\n };\\n }, [props.voiceChangerClient, clientSetting]);\\n const setServerUrl = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return (url) => {\\n if (!props.voiceChangerClient)\\n return;\\n props.voiceChangerClient.setServerUrl(url, true);\\n };\\n }, [props.voiceChangerClient]);\\n //////////////\\n // 操作\\n /////////////\\n // (1) start\\n const start = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return async () => {\\n if (!props.voiceChangerClient)\\n return;\\n // props.voiceChangerClient.setServerUrl(setting.mmvcServerUrl, true)\\n await props.voiceChangerClient.start();\\n };\\n }, [props.voiceChangerClient]);\\n // (2) stop\\n const stop = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return async () => {\\n if (!props.voiceChangerClient)\\n return;\\n await props.voiceChangerClient.stop();\\n };\\n }, [props.voiceChangerClient]);\\n const reloadClientSetting = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return async () => {\\n if (!props.voiceChangerClient)\\n return;\\n await props.voiceChangerClient.getClientSettings();\\n };\\n }, [props.voiceChangerClient]);\\n return {\\n clientSetting,\\n clearSetting,\\n setServerUrl,\\n updateClientSetting,\\n start,\\n stop,\\n reloadClientSetting\\n };\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./src/hooks/useClientSetting.ts?\");\n\n/***/ }),\n\n/***/ \"./src/hooks/useIndexedDB.ts\":\n/*!***********************************!*\\\n !*** ./src/hooks/useIndexedDB.ts ***!\n \\***********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ useIndexedDB: () => (/* binding */ useIndexedDB)\\n/* harmony export */ });\\n/* harmony import */ var localforage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! localforage */ \\\"./node_modules/localforage/dist/localforage.js\\\");\\n/* harmony import */ var localforage__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(localforage__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \\\"react\\\");\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../const */ \\\"./src/const.ts\\\");\\n\\n\\n\\nconst useIndexedDB = (props) => {\\n const clientType = props.clientType || \\\"default\\\";\\n localforage__WEBPACK_IMPORTED_MODULE_0___default().config({\\n driver: (localforage__WEBPACK_IMPORTED_MODULE_0___default().INDEXEDDB),\\n name: _const__WEBPACK_IMPORTED_MODULE_2__.INDEXEDDB_DB_APP_NAME,\\n version: 1.0,\\n storeName: `${_const__WEBPACK_IMPORTED_MODULE_2__.INDEXEDDB_DB_NAME}`,\\n description: 'appStorage'\\n });\\n const setItem = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(() => {\\n return async (key, value) => {\\n const clientKey = `${clientType}_${key}`;\\n await localforage__WEBPACK_IMPORTED_MODULE_0___default().setItem(clientKey, value);\\n };\\n }, [props.clientType]);\\n const getItem = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(() => {\\n return async (key) => {\\n const clientKey = `${clientType}_${key}`;\\n return await localforage__WEBPACK_IMPORTED_MODULE_0___default().getItem(clientKey);\\n };\\n }, [props.clientType]);\\n const removeItem = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(() => {\\n return async (key) => {\\n const clientKey = `${clientType}_${key}`;\\n console.log(\\\"remove key:\\\", clientKey);\\n return await localforage__WEBPACK_IMPORTED_MODULE_0___default().removeItem(clientKey);\\n };\\n }, [props.clientType]);\\n const removeDB = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(() => {\\n return async () => {\\n const keys = await localforage__WEBPACK_IMPORTED_MODULE_0___default().keys();\\n for (const key of keys) {\\n console.log(\\\"remove key:\\\", key);\\n await localforage__WEBPACK_IMPORTED_MODULE_0___default().removeItem(key);\\n }\\n };\\n }, [props.clientType]);\\n return {\\n dummy: \\\"\\\",\\n setItem,\\n getItem,\\n removeItem,\\n removeDB\\n };\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./src/hooks/useIndexedDB.ts?\");\n\n/***/ }),\n\n/***/ \"./src/hooks/useServerSetting.ts\":\n/*!***************************************!*\\\n !*** ./src/hooks/useServerSetting.ts ***!\n \\***************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ InitialFileUploadSetting: () => (/* binding */ InitialFileUploadSetting),\\n/* harmony export */ ModelAssetName: () => (/* binding */ ModelAssetName),\\n/* harmony export */ useServerSetting: () => (/* binding */ useServerSetting)\\n/* harmony export */ });\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \\\"react\\\");\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../const */ \\\"./src/const.ts\\\");\\n/* harmony import */ var _useIndexedDB__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./useIndexedDB */ \\\"./src/hooks/useIndexedDB.ts\\\");\\n\\n\\n\\nconst ModelAssetName = {\\n iconFile: \\\"iconFile\\\"\\n};\\nconst InitialFileUploadSetting = {\\n isHalf: true,\\n uploaded: false,\\n defaultTune: 0,\\n defaultIndexRatio: 1,\\n defaultProtect: 0.5,\\n framework: _const__WEBPACK_IMPORTED_MODULE_1__.Framework.PyTorch,\\n params: \\\"{}\\\",\\n mmvcv13Config: null,\\n mmvcv13Model: null,\\n mmvcv15Config: null,\\n mmvcv15Model: null,\\n soVitsSvc40Config: null,\\n soVitsSvc40Model: null,\\n soVitsSvc40Cluster: null,\\n soVitsSvc40v2Config: null,\\n soVitsSvc40v2Model: null,\\n soVitsSvc40v2Cluster: null,\\n rvcModel: null,\\n rvcFeature: null,\\n rvcIndex: null,\\n isSampleMode: false,\\n sampleId: null,\\n rvcIndexDownload: true,\\n ddspSvcModel: null,\\n ddspSvcModelConfig: null,\\n ddspSvcDiffusion: null,\\n ddspSvcDiffusionConfig: null,\\n};\\nconst useServerSetting = (props) => {\\n // const settingRef = useRef(DefaultVoiceChangerServerSetting)\\n const getDefaultServerSetting = () => {\\n if (props.clientType == \\\"MMVCv13\\\") {\\n return _const__WEBPACK_IMPORTED_MODULE_1__.DefaultServerSetting_MMVCv13;\\n }\\n else if (props.clientType == \\\"MMVCv15\\\") {\\n return _const__WEBPACK_IMPORTED_MODULE_1__.DefaultServerSetting_MMVCv15;\\n }\\n else if (props.clientType == \\\"so-vits-svc-40\\\") {\\n return _const__WEBPACK_IMPORTED_MODULE_1__.DefaultServerSetting_so_vits_svc_40;\\n }\\n else if (props.clientType == \\\"so-vits-svc-40_c\\\") {\\n console.log(\\\"default so_vits_svc_40_c\\\");\\n return _const__WEBPACK_IMPORTED_MODULE_1__.DefaultServerSetting_so_vits_svc_40_c;\\n }\\n else if (props.clientType == \\\"so-vits-svc-40v2\\\") {\\n return _const__WEBPACK_IMPORTED_MODULE_1__.DefaultServerSetting_so_vits_svc_40v2;\\n }\\n else if (props.clientType == \\\"DDSP-SVC\\\") {\\n return _const__WEBPACK_IMPORTED_MODULE_1__.DefaultServerSetting_DDSP_SVC;\\n }\\n else if (props.clientType == \\\"RVC\\\") {\\n return _const__WEBPACK_IMPORTED_MODULE_1__.DefaultServerSetting_RVC;\\n }\\n else {\\n return _const__WEBPACK_IMPORTED_MODULE_1__.DefaultServerSetting_MMVCv15;\\n }\\n };\\n const [serverSetting, setServerSetting] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(getDefaultServerSetting());\\n const [fileUploadSettings, setFileUploadSettings] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\\n const { setItem, getItem, removeItem } = (0,_useIndexedDB__WEBPACK_IMPORTED_MODULE_2__.useIndexedDB)({ clientType: props.clientType });\\n // clientTypeが新しく設定されたときに、serverのmodelType動作を変更+設定反映\\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\\n if (!props.voiceChangerClient)\\n return;\\n if (!props.clientType)\\n return;\\n const setInitialSetting = async () => {\\n // Set Model Type\\n await props.voiceChangerClient.switchModelType(props.clientType);\\n // Load Default (and Cache) and set\\n const defaultServerSetting = getDefaultServerSetting();\\n const cachedServerSetting = await getItem(_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_SERVER);\\n let initialSetting;\\n if (cachedServerSetting) {\\n initialSetting = {\\n ...defaultServerSetting, ...cachedServerSetting,\\n serverAudioStated: 0,\\n inputSampleRate: 48000\\n }; // sample rateは時限措置\\n }\\n else {\\n initialSetting = { ...defaultServerSetting };\\n }\\n setServerSetting(initialSetting);\\n // upload setting\\n for (let i = 0; i < Object.values(_const__WEBPACK_IMPORTED_MODULE_1__.ServerSettingKey).length; i++) {\\n const k = Object.values(_const__WEBPACK_IMPORTED_MODULE_1__.ServerSettingKey)[i];\\n const v = initialSetting[k];\\n if (v) {\\n props.voiceChangerClient.updateServerSettings(k, \\\"\\\" + v);\\n }\\n }\\n // Load file upload cache\\n const loadedFileUploadSettings = [];\\n for (let i = 0; i < _const__WEBPACK_IMPORTED_MODULE_1__.MAX_MODEL_SLOT_NUM; i++) {\\n const modleKey = `${_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_MODEL_DATA}_${i}`;\\n const fileuploadSetting = await getItem(modleKey);\\n if (!fileuploadSetting) {\\n loadedFileUploadSettings.push(InitialFileUploadSetting);\\n }\\n else {\\n loadedFileUploadSettings.push(fileuploadSetting);\\n }\\n }\\n setFileUploadSettings(loadedFileUploadSettings);\\n reloadServerInfo();\\n };\\n setInitialSetting();\\n }, [props.voiceChangerClient, props.clientType]);\\n //////////////\\n // 設定\\n /////////////\\n const updateServerSettings = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return async (setting) => {\\n if (!props.voiceChangerClient)\\n return;\\n for (let i = 0; i < Object.values(_const__WEBPACK_IMPORTED_MODULE_1__.ServerSettingKey).length; i++) {\\n const k = Object.values(_const__WEBPACK_IMPORTED_MODULE_1__.ServerSettingKey)[i];\\n const cur_v = serverSetting[k];\\n const new_v = setting[k];\\n if (cur_v != new_v) {\\n const res = await props.voiceChangerClient.updateServerSettings(k, \\\"\\\" + new_v);\\n if (res.onnxExecutionProviders && res.onnxExecutionProviders.length > 0) {\\n res.onnxExecutionProvider = res.onnxExecutionProviders[0];\\n }\\n else {\\n res.onnxExecutionProvider = \\\"CPUExecutionProvider\\\";\\n }\\n setServerSetting(res);\\n const storeData = { ...res };\\n storeData.recordIO = 0;\\n setItem(_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_SERVER, storeData);\\n }\\n }\\n };\\n }, [props.voiceChangerClient, serverSetting]);\\n const setFileUploadSetting = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return async (slot, fileUploadSetting) => {\\n fileUploadSetting.uploaded = false;\\n fileUploadSettings[slot] = fileUploadSetting;\\n setFileUploadSettings([...fileUploadSettings]);\\n };\\n }, [fileUploadSettings]);\\n //////////////\\n // 操作\\n /////////////\\n const [uploadProgress, setUploadProgress] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);\\n const [isUploading, setIsUploading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\\n // (e) モデルアップロード\\n const _uploadFile = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return async (modelData, onprogress, dir = \\\"\\\") => {\\n if (!props.voiceChangerClient)\\n return;\\n const num = await props.voiceChangerClient.uploadFile(modelData.data, dir + modelData.filename, onprogress);\\n const res = await props.voiceChangerClient.concatUploadedFile(dir + modelData.filename, num);\\n console.log(\\\"uploaded\\\", num, res);\\n };\\n }, [props.voiceChangerClient]);\\n const _uploadFile2 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return async (file, onprogress, dir = \\\"\\\") => {\\n if (!props.voiceChangerClient)\\n return;\\n console.log(\\\"uploading...\\\", file.name);\\n const num = await props.voiceChangerClient.uploadFile2(file, onprogress);\\n const res = await props.voiceChangerClient.concatUploadedFile(dir + file.name, num);\\n console.log(\\\"uploaded\\\", num, res);\\n };\\n }, [props.voiceChangerClient]);\\n const loadModel = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return async (slot) => {\\n const fileUploadSetting = fileUploadSettings[slot];\\n if (fileUploadSetting.isSampleMode == false) {\\n if (props.clientType == \\\"MMVCv13\\\") {\\n if (!fileUploadSetting.mmvcv13Config) {\\n alert(\\\"Configファイルを指定する必要があります。\\\");\\n return;\\n }\\n if (!fileUploadSetting.mmvcv13Model) {\\n alert(\\\"モデルファイルを指定する必要があります。\\\");\\n return;\\n }\\n }\\n else if (props.clientType == \\\"MMVCv15\\\") {\\n if (!fileUploadSetting.mmvcv15Config) {\\n alert(\\\"Configファイルを指定する必要があります。\\\");\\n return;\\n }\\n if (!fileUploadSetting.mmvcv15Model) {\\n alert(\\\"モデルファイルを指定する必要があります。\\\");\\n return;\\n }\\n }\\n else if (props.clientType == \\\"so-vits-svc-40\\\") {\\n if (!fileUploadSetting.soVitsSvc40Config) {\\n alert(\\\"Configファイルを指定する必要があります。\\\");\\n return;\\n }\\n if (!fileUploadSetting.soVitsSvc40Model) {\\n alert(\\\"モデルファイルを指定する必要があります。\\\");\\n return;\\n }\\n }\\n else if (props.clientType == \\\"so-vits-svc-40v2\\\") {\\n if (!fileUploadSetting.soVitsSvc40v2Config) {\\n alert(\\\"Configファイルを指定する必要があります。\\\");\\n return;\\n }\\n if (!fileUploadSetting.soVitsSvc40v2Model) {\\n alert(\\\"モデルファイルを指定する必要があります。\\\");\\n return;\\n }\\n }\\n else if (props.clientType == \\\"RVC\\\") {\\n if (!fileUploadSetting.rvcModel) {\\n alert(\\\"モデルファイルを指定する必要があります。\\\");\\n return;\\n }\\n }\\n else if (props.clientType == \\\"DDSP-SVC\\\") {\\n if (!fileUploadSetting.ddspSvcModel) {\\n alert(\\\"DDSPモデルを指定する必要があります。\\\");\\n return;\\n }\\n if (!fileUploadSetting.ddspSvcModelConfig) {\\n alert(\\\"DDSP Configファイルを指定する必要があります。\\\");\\n return;\\n }\\n if (!fileUploadSetting.ddspSvcDiffusion) {\\n alert(\\\"Diffusionモデルを指定する必要があります。\\\");\\n return;\\n }\\n if (!fileUploadSetting.ddspSvcDiffusionConfig) {\\n alert(\\\"Diffusion Configファイルを指定する必要があります。\\\");\\n return;\\n }\\n }\\n else {\\n }\\n }\\n else { //Sampleモード\\n if (!fileUploadSetting.sampleId) {\\n alert(\\\"Sample IDを指定する必要があります。\\\");\\n return;\\n }\\n }\\n if (!props.voiceChangerClient)\\n return;\\n setUploadProgress(0);\\n setIsUploading(true);\\n // normal models(MMVC13,15, so-vits-svc, RVC)\\n const normalModels = [\\n fileUploadSetting.mmvcv13Config,\\n fileUploadSetting.mmvcv13Model,\\n fileUploadSetting.mmvcv15Config,\\n fileUploadSetting.mmvcv15Model,\\n fileUploadSetting.soVitsSvc40Config,\\n fileUploadSetting.soVitsSvc40Model,\\n fileUploadSetting.soVitsSvc40Cluster,\\n fileUploadSetting.soVitsSvc40v2Config,\\n fileUploadSetting.soVitsSvc40v2Model,\\n fileUploadSetting.soVitsSvc40v2Cluster,\\n ].filter(x => { return x != null; });\\n for (let i = 0; i < normalModels.length; i++) {\\n if (!normalModels[i].data) {\\n // const fileSize = normalModels[i].file!.size / 1024 / 1024\\n normalModels[i].data = await normalModels[i].file.arrayBuffer();\\n normalModels[i].filename = await normalModels[i].file.name;\\n }\\n }\\n if (fileUploadSetting.isSampleMode == false) {\\n for (let i = 0; i < normalModels.length; i++) {\\n const progRate = 1 / normalModels.length;\\n const progOffset = 100 * i * progRate;\\n // await _uploadFile(normalModels[i], (progress: number, _end: boolean) => {\\n // setUploadProgress(progress * progRate + progOffset)\\n // })\\n await _uploadFile2(normalModels[i].file, (progress, _end) => {\\n setUploadProgress(progress * progRate + progOffset);\\n });\\n }\\n }\\n // slotModel ローカルキャッシュ無効(RVC)\\n const slotModels = [\\n fileUploadSetting.rvcModel,\\n fileUploadSetting.rvcIndex,\\n ].filter(x => { return x != null; });\\n for (let i = 0; i < slotModels.length; i++) {\\n if (!slotModels[i].data) {\\n slotModels[i].filename = await slotModels[i].file.name;\\n }\\n }\\n if (fileUploadSetting.isSampleMode == false) {\\n for (let i = 0; i < slotModels.length; i++) {\\n const progRate = 1 / slotModels.length;\\n const progOffset = 100 * i * progRate;\\n await _uploadFile2(slotModels[i].file, (progress, _end) => {\\n setUploadProgress(progress * progRate + progOffset);\\n });\\n }\\n }\\n // DDSP-SVC (ファイル名(config)が被る可能性があるため、アップロードフォルダを分ける必要がある)\\n const ddspSvcModels = [fileUploadSetting.ddspSvcModel, fileUploadSetting.ddspSvcModelConfig, fileUploadSetting.ddspSvcDiffusion, fileUploadSetting.ddspSvcDiffusionConfig].filter(x => { return x != null; });\\n for (let i = 0; i < ddspSvcModels.length; i++) {\\n if (!ddspSvcModels[i].data) {\\n ddspSvcModels[i].data = await ddspSvcModels[i].file.arrayBuffer();\\n ddspSvcModels[i].filename = await ddspSvcModels[i].file.name;\\n }\\n }\\n if (fileUploadSetting.isSampleMode == false) {\\n for (let i = 0; i < ddspSvcModels.length; i++) {\\n const progRate = 1 / ddspSvcModels.length;\\n const progOffset = 100 * i * progRate;\\n const dir = i == 0 || i == 1 ? \\\"ddsp_mod/\\\" : \\\"ddsp_diff/\\\";\\n await _uploadFile(ddspSvcModels[i], (progress, _end) => {\\n setUploadProgress(progress * progRate + progOffset);\\n }, dir);\\n }\\n }\\n // const configFileName = fileUploadSetting.configFile?.filename || \\\"-\\\"\\n const params = JSON.stringify({\\n defaultTune: fileUploadSetting.defaultTune || 0,\\n defaultIndexRatio: fileUploadSetting.defaultIndexRatio || 1,\\n defaultProtect: fileUploadSetting.defaultProtect || 0.5,\\n sampleId: fileUploadSetting.isSampleMode ? fileUploadSetting.sampleId || \\\"\\\" : \\\"\\\",\\n rvcIndexDownload: fileUploadSetting.rvcIndexDownload || false,\\n files: fileUploadSetting.isSampleMode ? {} : {\\n mmvcv13Config: fileUploadSetting.mmvcv13Config?.filename || \\\"\\\",\\n mmvcv13Model: fileUploadSetting.mmvcv13Model?.filename || \\\"\\\",\\n mmvcv15Config: fileUploadSetting.mmvcv15Config?.filename || \\\"\\\",\\n mmvcv15Model: fileUploadSetting.mmvcv15Model?.filename || \\\"\\\",\\n soVitsSvc40Config: fileUploadSetting.soVitsSvc40Config?.filename || \\\"\\\",\\n soVitsSvc40Model: fileUploadSetting.soVitsSvc40Model?.filename || \\\"\\\",\\n soVitsSvc40Cluster: fileUploadSetting.soVitsSvc40Cluster?.filename || \\\"\\\",\\n soVitsSvc40v2Config: fileUploadSetting.soVitsSvc40v2Config?.filename || \\\"\\\",\\n soVitsSvc40v2Model: fileUploadSetting.soVitsSvc40v2Model?.filename || \\\"\\\",\\n soVitsSvc40v2Cluster: fileUploadSetting.soVitsSvc40v2Cluster?.filename || \\\"\\\",\\n rvcModel: fileUploadSetting.rvcModel?.filename || \\\"\\\",\\n rvcIndex: fileUploadSetting.rvcIndex?.filename || \\\"\\\",\\n rvcFeature: fileUploadSetting.rvcFeature?.filename || \\\"\\\",\\n ddspSvcModel: fileUploadSetting.ddspSvcModel?.filename ? \\\"ddsp_mod/\\\" + fileUploadSetting.ddspSvcModel?.filename : \\\"\\\",\\n ddspSvcModelConfig: fileUploadSetting.ddspSvcModelConfig?.filename ? \\\"ddsp_mod/\\\" + fileUploadSetting.ddspSvcModelConfig?.filename : \\\"\\\",\\n ddspSvcDiffusion: fileUploadSetting.ddspSvcDiffusion?.filename ? \\\"ddsp_diff/\\\" + fileUploadSetting.ddspSvcDiffusion?.filename : \\\"\\\",\\n ddspSvcDiffusionConfig: fileUploadSetting.ddspSvcDiffusionConfig?.filename ? \\\"ddsp_diff/\\\" + fileUploadSetting.ddspSvcDiffusionConfig.filename : \\\"\\\",\\n }\\n });\\n if (fileUploadSetting.isHalf == undefined) {\\n fileUploadSetting.isHalf = false;\\n }\\n console.log(\\\"PARAMS:\\\", params);\\n const loadPromise = props.voiceChangerClient.loadModel(slot, fileUploadSetting.isHalf, params);\\n // サーバでロード中にキャッシュにセーブ\\n storeToCache(slot, fileUploadSetting);\\n await loadPromise;\\n fileUploadSetting.uploaded = true;\\n fileUploadSettings[slot] = fileUploadSetting;\\n setFileUploadSettings([...fileUploadSettings]);\\n setUploadProgress(0);\\n setIsUploading(false);\\n reloadServerInfo();\\n };\\n }, [fileUploadSettings, props.voiceChangerClient, props.clientType]);\\n const storeToCache = (slot, fileUploadSetting) => {\\n try {\\n const saveData = {\\n isHalf: fileUploadSetting.isHalf,\\n uploaded: false,\\n defaultTune: fileUploadSetting.defaultTune,\\n defaultIndexRatio: fileUploadSetting.defaultIndexRatio,\\n defaultProtect: fileUploadSetting.defaultProtect,\\n framework: fileUploadSetting.framework,\\n params: fileUploadSetting.params,\\n mmvcv13Config: fileUploadSetting.mmvcv13Config ? { data: fileUploadSetting.mmvcv13Config.data, filename: fileUploadSetting.mmvcv13Config.filename } : null,\\n mmvcv13Model: fileUploadSetting.mmvcv13Model ? { data: fileUploadSetting.mmvcv13Model.data, filename: fileUploadSetting.mmvcv13Model.filename } : null,\\n mmvcv15Config: fileUploadSetting.mmvcv15Config ? { data: fileUploadSetting.mmvcv15Config.data, filename: fileUploadSetting.mmvcv15Config.filename } : null,\\n mmvcv15Model: fileUploadSetting.mmvcv15Model ? { data: fileUploadSetting.mmvcv15Model.data, filename: fileUploadSetting.mmvcv15Model.filename } : null,\\n soVitsSvc40Config: fileUploadSetting.soVitsSvc40Config ? { data: fileUploadSetting.soVitsSvc40Config.data, filename: fileUploadSetting.soVitsSvc40Config.filename } : null,\\n soVitsSvc40Model: fileUploadSetting.soVitsSvc40Model ? { data: fileUploadSetting.soVitsSvc40Model.data, filename: fileUploadSetting.soVitsSvc40Model.filename } : null,\\n soVitsSvc40Cluster: fileUploadSetting.soVitsSvc40Cluster ? { data: fileUploadSetting.soVitsSvc40Cluster.data, filename: fileUploadSetting.soVitsSvc40Cluster.filename } : null,\\n soVitsSvc40v2Config: fileUploadSetting.soVitsSvc40v2Config ? { data: fileUploadSetting.soVitsSvc40v2Config.data, filename: fileUploadSetting.soVitsSvc40v2Config.filename } : null,\\n soVitsSvc40v2Model: fileUploadSetting.soVitsSvc40v2Model ? { data: fileUploadSetting.soVitsSvc40v2Model.data, filename: fileUploadSetting.soVitsSvc40v2Model.filename } : null,\\n soVitsSvc40v2Cluster: fileUploadSetting.soVitsSvc40v2Cluster ? { data: fileUploadSetting.soVitsSvc40v2Cluster.data, filename: fileUploadSetting.soVitsSvc40v2Cluster.filename } : null,\\n rvcModel: fileUploadSetting.rvcModel ? { data: fileUploadSetting.rvcModel.data, filename: fileUploadSetting.rvcModel.filename } : null,\\n rvcIndex: fileUploadSetting.rvcIndex ? { data: fileUploadSetting.rvcIndex.data, filename: fileUploadSetting.rvcIndex.filename } : null,\\n rvcFeature: fileUploadSetting.rvcFeature ? { data: fileUploadSetting.rvcFeature.data, filename: fileUploadSetting.rvcFeature.filename } : null,\\n ddspSvcModel: fileUploadSetting.ddspSvcModel ? { data: fileUploadSetting.ddspSvcModel.data, filename: fileUploadSetting.ddspSvcModel.filename } : null,\\n ddspSvcModelConfig: fileUploadSetting.ddspSvcModelConfig ? { data: fileUploadSetting.ddspSvcModelConfig.data, filename: fileUploadSetting.ddspSvcModelConfig.filename } : null,\\n ddspSvcDiffusion: fileUploadSetting.ddspSvcDiffusion ? { data: fileUploadSetting.ddspSvcDiffusion.data, filename: fileUploadSetting.ddspSvcDiffusion.filename } : null,\\n ddspSvcDiffusionConfig: fileUploadSetting.ddspSvcDiffusionConfig ? { data: fileUploadSetting.ddspSvcDiffusionConfig.data, filename: fileUploadSetting.ddspSvcDiffusionConfig.filename } : null,\\n isSampleMode: fileUploadSetting.isSampleMode,\\n sampleId: fileUploadSetting.sampleId,\\n rvcIndexDownload: fileUploadSetting.rvcIndexDownload,\\n };\\n setItem(`${_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_MODEL_DATA}_${slot}`, saveData);\\n }\\n catch (e) {\\n console.log(\\\"Excpetion:::::::::\\\", e);\\n }\\n };\\n const uploadAssets = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return async (slot, name, file) => {\\n if (!props.voiceChangerClient)\\n return;\\n await _uploadFile2(file, (progress, _end) => {\\n console.log(progress, _end);\\n });\\n const assetUploadSetting = {\\n slot,\\n name,\\n file: file.name\\n };\\n await props.voiceChangerClient.uploadAssets(JSON.stringify(assetUploadSetting));\\n reloadServerInfo();\\n };\\n }, [fileUploadSettings, props.voiceChangerClient, props.clientType]);\\n const reloadServerInfo = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return async () => {\\n if (!props.voiceChangerClient)\\n return;\\n const res = await props.voiceChangerClient.getServerSettings();\\n setServerSetting(res);\\n const storeData = { ...res };\\n storeData.recordIO = 0;\\n setItem(_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_SERVER, storeData);\\n };\\n }, [props.voiceChangerClient]);\\n const clearSetting = async () => {\\n await removeItem(_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_SERVER);\\n await removeItem(_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_MODEL_DATA);\\n for (let i = 0; i < _const__WEBPACK_IMPORTED_MODULE_1__.MAX_MODEL_SLOT_NUM; i++) {\\n const modleKey = `${_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_MODEL_DATA}_${i}`;\\n await removeItem(modleKey);\\n }\\n };\\n const getOnnx = async () => {\\n return props.voiceChangerClient.getOnnx();\\n };\\n const mergeModel = async (request) => {\\n const serverInfo = await props.voiceChangerClient.mergeModel(request);\\n setServerSetting(serverInfo);\\n return serverInfo;\\n };\\n const updateModelDefault = async () => {\\n const serverInfo = await props.voiceChangerClient.updateModelDefault();\\n setServerSetting(serverInfo);\\n return serverInfo;\\n };\\n const updateModelInfo = async (slot, key, val) => {\\n const serverInfo = await props.voiceChangerClient.updateModelInfo(slot, key, val);\\n setServerSetting(serverInfo);\\n return serverInfo;\\n };\\n return {\\n serverSetting,\\n updateServerSettings,\\n clearSetting,\\n reloadServerInfo,\\n fileUploadSettings,\\n setFileUploadSetting,\\n loadModel,\\n uploadProgress,\\n isUploading,\\n getOnnx,\\n mergeModel,\\n updateModelDefault,\\n updateModelInfo,\\n uploadAssets\\n };\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./src/hooks/useServerSetting.ts?\");\n\n/***/ }),\n\n/***/ \"./src/hooks/useWorkletNodeSetting.ts\":\n/*!********************************************!*\\\n !*** ./src/hooks/useWorkletNodeSetting.ts ***!\n \\********************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ useWorkletNodeSetting: () => (/* binding */ useWorkletNodeSetting)\\n/* harmony export */ });\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \\\"react\\\");\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../const */ \\\"./src/const.ts\\\");\\n/* harmony import */ var _useIndexedDB__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./useIndexedDB */ \\\"./src/hooks/useIndexedDB.ts\\\");\\n\\n\\n\\nconst useWorkletNodeSetting = (props) => {\\n const defaultWorkletNodeSetting = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n if (props.clientType == \\\"MMVCv13\\\") {\\n return _const__WEBPACK_IMPORTED_MODULE_1__.DefaultWorkletNodeSetting;\\n }\\n else if (props.clientType == \\\"MMVCv15\\\") {\\n return _const__WEBPACK_IMPORTED_MODULE_1__.DefaultWorkletNodeSetting;\\n }\\n else if (props.clientType == \\\"so-vits-svc-40\\\" || props.clientType == \\\"so-vits-svc-40_c\\\") {\\n return _const__WEBPACK_IMPORTED_MODULE_1__.DefaultWorkletNodeSetting_so_vits_svc_40;\\n }\\n else if (props.clientType == \\\"so-vits-svc-40v2\\\") {\\n return _const__WEBPACK_IMPORTED_MODULE_1__.DefaultWorkletNodeSetting_so_vits_svc_40v2;\\n }\\n else if (props.clientType == \\\"DDSP-SVC\\\") {\\n return _const__WEBPACK_IMPORTED_MODULE_1__.DefaultWorkletNodeSetting_DDSP_SVC;\\n }\\n else if (props.clientType == \\\"RVC\\\") {\\n return _const__WEBPACK_IMPORTED_MODULE_1__.DefaultWorkletNodeSetting_RVC;\\n }\\n else {\\n return _const__WEBPACK_IMPORTED_MODULE_1__.DefaultWorkletNodeSetting;\\n }\\n }, []);\\n const [workletNodeSetting, _setWorkletNodeSetting] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(defaultWorkletNodeSetting);\\n const { setItem, getItem, removeItem } = (0,_useIndexedDB__WEBPACK_IMPORTED_MODULE_2__.useIndexedDB)({ clientType: props.clientType });\\n // 初期化 その1 DBから取得\\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\\n const loadCache = async () => {\\n const setting = await getItem(_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_WORKLETNODE);\\n if (setting) {\\n _setWorkletNodeSetting({ ...setting, sendingSampleRate: 48000 }); // sample rateは時限措置\\n }\\n };\\n loadCache();\\n }, []);\\n // 初期化 その2 クライアントに設定\\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\\n if (!props.voiceChangerClient)\\n return;\\n props.voiceChangerClient.setServerUrl(workletNodeSetting.serverUrl);\\n props.voiceChangerClient.updateWorkletNodeSetting(workletNodeSetting);\\n }, [props.voiceChangerClient]);\\n const clearSetting = async () => {\\n await removeItem(_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_WORKLETNODE);\\n };\\n //////////////\\n // 設定\\n /////////////\\n const updateWorkletNodeSetting = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return (_workletNodeSetting) => {\\n if (!props.voiceChangerClient)\\n return;\\n for (let k in _workletNodeSetting) {\\n const cur_v = workletNodeSetting[k];\\n const new_v = _workletNodeSetting[k];\\n if (cur_v != new_v) {\\n _setWorkletNodeSetting(_workletNodeSetting);\\n setItem(_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_WORKLETNODE, _workletNodeSetting);\\n props.voiceChangerClient.updateWorkletNodeSetting(_workletNodeSetting);\\n break;\\n }\\n }\\n };\\n }, [props.voiceChangerClient, workletNodeSetting]);\\n const startOutputRecording = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return () => {\\n if (!props.voiceChangerClient)\\n return;\\n props.voiceChangerClient.startOutputRecording();\\n };\\n }, [props.voiceChangerClient]);\\n const stopOutputRecording = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return async () => {\\n if (!props.voiceChangerClient)\\n return new Float32Array();\\n return props.voiceChangerClient.stopOutputRecording();\\n };\\n }, [props.voiceChangerClient]);\\n const trancateBuffer = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return async () => {\\n if (!props.voiceChangerClient)\\n return;\\n props.voiceChangerClient.trancateBuffer();\\n };\\n }, [props.voiceChangerClient]);\\n return {\\n workletNodeSetting,\\n clearSetting,\\n updateWorkletNodeSetting,\\n startOutputRecording,\\n stopOutputRecording,\\n trancateBuffer\\n };\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./src/hooks/useWorkletNodeSetting.ts?\");\n\n/***/ }),\n\n/***/ \"./src/hooks/useWorkletSetting.ts\":\n/*!****************************************!*\\\n !*** ./src/hooks/useWorkletSetting.ts ***!\n \\****************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ useWorkletSetting: () => (/* binding */ useWorkletSetting)\\n/* harmony export */ });\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \\\"react\\\");\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../const */ \\\"./src/const.ts\\\");\\n/* harmony import */ var _useIndexedDB__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./useIndexedDB */ \\\"./src/hooks/useIndexedDB.ts\\\");\\n\\n\\n\\nconst useWorkletSetting = (props) => {\\n const [setting, _setSetting] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(_const__WEBPACK_IMPORTED_MODULE_1__.DefaultWorkletSetting);\\n const { setItem, getItem, removeItem } = (0,_useIndexedDB__WEBPACK_IMPORTED_MODULE_2__.useIndexedDB)({ clientType: props.clientType });\\n // DBから設定取得(キャッシュによる初期化)\\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\\n const loadCache = async () => {\\n const setting = await getItem(_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_WORKLET);\\n if (!setting) {\\n // デフォルト設定\\n const params = new URLSearchParams(location.search);\\n const colab = params.get(\\\"colab\\\");\\n if (colab == \\\"true\\\") {\\n _setSetting({\\n numTrancateTreshold: 300,\\n volTrancateThreshold: 0.0005,\\n volTrancateLength: 32,\\n });\\n }\\n else {\\n _setSetting({\\n numTrancateTreshold: 100,\\n volTrancateThreshold: 0.0005,\\n volTrancateLength: 32,\\n });\\n }\\n }\\n else {\\n _setSetting({\\n ...setting\\n });\\n }\\n };\\n loadCache();\\n }, []);\\n // クライアントへ設定反映 初期化, 設定変更\\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\\n if (!props.voiceChangerClient)\\n return;\\n props.voiceChangerClient.configureWorklet(setting);\\n }, [props.voiceChangerClient, setting]);\\n // 設定 _setSettingがトリガでuseEffectが呼ばれて、workletに設定が飛ぶ\\n const setSetting = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\\n return (setting) => {\\n if (!props.voiceChangerClient)\\n return;\\n _setSetting(setting);\\n setItem(_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_WORKLET, setting);\\n };\\n }, [props.voiceChangerClient]);\\n // その他 オペレーション\\n const clearSetting = async () => {\\n await removeItem(_const__WEBPACK_IMPORTED_MODULE_1__.INDEXEDDB_KEY_WORKLET);\\n };\\n return {\\n setting,\\n clearSetting,\\n setSetting,\\n };\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./src/hooks/useWorkletSetting.ts?\");\n\n/***/ }),\n\n/***/ \"./src/index.ts\":\n/*!**********************!*\\\n !*** ./src/index.ts ***!\n \\**********************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ ClientType: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.ClientType),\\n/* harmony export */ CrossFadeOverlapSize: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.CrossFadeOverlapSize),\\n/* harmony export */ DefaultServerSetting: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DefaultServerSetting),\\n/* harmony export */ DefaultServerSetting_DDSP_SVC: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DefaultServerSetting_DDSP_SVC),\\n/* harmony export */ DefaultServerSetting_MMVCv13: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DefaultServerSetting_MMVCv13),\\n/* harmony export */ DefaultServerSetting_MMVCv15: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DefaultServerSetting_MMVCv15),\\n/* harmony export */ DefaultServerSetting_RVC: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DefaultServerSetting_RVC),\\n/* harmony export */ DefaultServerSetting_so_vits_svc_40: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DefaultServerSetting_so_vits_svc_40),\\n/* harmony export */ DefaultServerSetting_so_vits_svc_40_c: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DefaultServerSetting_so_vits_svc_40_c),\\n/* harmony export */ DefaultServerSetting_so_vits_svc_40v2: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DefaultServerSetting_so_vits_svc_40v2),\\n/* harmony export */ DefaultVoiceChangerClientSetting: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DefaultVoiceChangerClientSetting),\\n/* harmony export */ DefaultWorkletNodeSetting: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DefaultWorkletNodeSetting),\\n/* harmony export */ DefaultWorkletNodeSetting_DDSP_SVC: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DefaultWorkletNodeSetting_DDSP_SVC),\\n/* harmony export */ DefaultWorkletNodeSetting_RVC: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DefaultWorkletNodeSetting_RVC),\\n/* harmony export */ DefaultWorkletNodeSetting_so_vits_svc_40: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DefaultWorkletNodeSetting_so_vits_svc_40),\\n/* harmony export */ DefaultWorkletNodeSetting_so_vits_svc_40v2: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DefaultWorkletNodeSetting_so_vits_svc_40v2),\\n/* harmony export */ DefaultWorkletSetting: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DefaultWorkletSetting),\\n/* harmony export */ DiffMethod: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DiffMethod),\\n/* harmony export */ DownSamplingMode: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.DownSamplingMode),\\n/* harmony export */ F0Detector: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.F0Detector),\\n/* harmony export */ Framework: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.Framework),\\n/* harmony export */ INDEXEDDB_DB_APP_NAME: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.INDEXEDDB_DB_APP_NAME),\\n/* harmony export */ INDEXEDDB_DB_NAME: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.INDEXEDDB_DB_NAME),\\n/* harmony export */ INDEXEDDB_KEY_CLIENT: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.INDEXEDDB_KEY_CLIENT),\\n/* harmony export */ INDEXEDDB_KEY_MODEL_DATA: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.INDEXEDDB_KEY_MODEL_DATA),\\n/* harmony export */ INDEXEDDB_KEY_SERVER: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.INDEXEDDB_KEY_SERVER),\\n/* harmony export */ INDEXEDDB_KEY_WORKLET: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.INDEXEDDB_KEY_WORKLET),\\n/* harmony export */ INDEXEDDB_KEY_WORKLETNODE: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.INDEXEDDB_KEY_WORKLETNODE),\\n/* harmony export */ InitialFileUploadSetting: () => (/* reexport safe */ _hooks_useServerSetting__WEBPACK_IMPORTED_MODULE_6__.InitialFileUploadSetting),\\n/* harmony export */ InputSampleRate: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.InputSampleRate),\\n/* harmony export */ MAX_MODEL_SLOT_NUM: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.MAX_MODEL_SLOT_NUM),\\n/* harmony export */ ModelAssetName: () => (/* reexport safe */ _hooks_useServerSetting__WEBPACK_IMPORTED_MODULE_6__.ModelAssetName),\\n/* harmony export */ ModelSamplingRate: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.ModelSamplingRate),\\n/* harmony export */ ModelType: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.ModelType),\\n/* harmony export */ OnnxExecutionProvider: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.OnnxExecutionProvider),\\n/* harmony export */ Protocol: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.Protocol),\\n/* harmony export */ SampleRate: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.SampleRate),\\n/* harmony export */ SendingSampleRate: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.SendingSampleRate),\\n/* harmony export */ ServerSettingKey: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.ServerSettingKey),\\n/* harmony export */ VOICE_CHANGER_CLIENT_EXCEPTION: () => (/* reexport safe */ _const__WEBPACK_IMPORTED_MODULE_0__.VOICE_CHANGER_CLIENT_EXCEPTION),\\n/* harmony export */ VoiceChangerClient: () => (/* reexport safe */ _VoiceChangerClient__WEBPACK_IMPORTED_MODULE_1__.VoiceChangerClient),\\n/* harmony export */ createDummyMediaStream: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_2__.createDummyMediaStream),\\n/* harmony export */ fileSelector: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_2__.fileSelector),\\n/* harmony export */ fileSelectorAsDataURL: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_2__.fileSelectorAsDataURL),\\n/* harmony export */ getLicenceInfo: () => (/* reexport safe */ _License__WEBPACK_IMPORTED_MODULE_5__.getLicenceInfo),\\n/* harmony export */ useClient: () => (/* reexport safe */ _hooks_useClient__WEBPACK_IMPORTED_MODULE_3__.useClient),\\n/* harmony export */ useIndexedDB: () => (/* reexport safe */ _hooks_useIndexedDB__WEBPACK_IMPORTED_MODULE_4__.useIndexedDB),\\n/* harmony export */ useServerSetting: () => (/* reexport safe */ _hooks_useServerSetting__WEBPACK_IMPORTED_MODULE_6__.useServerSetting),\\n/* harmony export */ validateUrl: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_2__.validateUrl)\\n/* harmony export */ });\\n/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./const */ \\\"./src/const.ts\\\");\\n/* harmony import */ var _VoiceChangerClient__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VoiceChangerClient */ \\\"./src/VoiceChangerClient.ts\\\");\\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \\\"./src/util.ts\\\");\\n/* harmony import */ var _hooks_useClient__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hooks/useClient */ \\\"./src/hooks/useClient.ts\\\");\\n/* harmony import */ var _hooks_useIndexedDB__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks/useIndexedDB */ \\\"./src/hooks/useIndexedDB.ts\\\");\\n/* harmony import */ var _License__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./License */ \\\"./src/License.ts\\\");\\n/* harmony import */ var _hooks_useServerSetting__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hooks/useServerSetting */ \\\"./src/hooks/useServerSetting.ts\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./src/index.ts?\");\n\n/***/ }),\n\n/***/ \"./src/util.ts\":\n/*!*********************!*\\\n !*** ./src/util.ts ***!\n \\*********************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ createDummyMediaStream: () => (/* binding */ createDummyMediaStream),\\n/* harmony export */ fileSelector: () => (/* binding */ fileSelector),\\n/* harmony export */ fileSelectorAsDataURL: () => (/* binding */ fileSelectorAsDataURL),\\n/* harmony export */ validateUrl: () => (/* binding */ validateUrl)\\n/* harmony export */ });\\nconst createDummyMediaStream = (audioContext) => {\\n const dummyOutputNode = audioContext.createMediaStreamDestination();\\n const gainNode = audioContext.createGain();\\n gainNode.gain.value = 0.0;\\n gainNode.connect(dummyOutputNode);\\n const oscillatorNode = audioContext.createOscillator();\\n oscillatorNode.frequency.value = 440;\\n oscillatorNode.connect(gainNode);\\n oscillatorNode.start();\\n return dummyOutputNode.stream;\\n};\\nconst fileSelector = async (regex) => {\\n const fileInput = document.createElement(\\\"input\\\");\\n fileInput.type = \\\"file\\\";\\n const p = new Promise((resolve, reject) => {\\n fileInput.onchange = (e) => {\\n if (e.target instanceof HTMLInputElement == false) {\\n console.log(\\\"invalid target!\\\", e.target);\\n reject(\\\"invalid target\\\");\\n return null;\\n }\\n const target = e.target;\\n if (!target.files || target.files.length == 0) {\\n reject(\\\"no file selected\\\");\\n return null;\\n }\\n if (regex != \\\"\\\" && target.files[0].type.match(regex)) {\\n reject(`not target file type ${target.files[0].type}`);\\n return null;\\n }\\n resolve(target.files[0]);\\n return null;\\n };\\n fileInput.click();\\n });\\n return await p;\\n};\\nconst fileSelectorAsDataURL = async (regex) => {\\n const f = await fileSelector(regex);\\n if (!f) {\\n return f;\\n }\\n const url = await new Promise((resolve) => {\\n const reader = new FileReader();\\n reader.onload = () => {\\n console.log(\\\"load data\\\", reader.result);\\n resolve(reader.result);\\n };\\n reader.readAsDataURL(f);\\n });\\n return url;\\n};\\nconst validateUrl = (url) => {\\n if (url?.endsWith(\\\"/\\\")) {\\n return url.substring(0, url.length - 1);\\n }\\n return url;\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./src/util.ts?\");\n\n/***/ }),\n\n/***/ \"./src/utils/BlockingQueue.ts\":\n/*!************************************!*\\\n !*** ./src/utils/BlockingQueue.ts ***!\n \\************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ BlockingQueue: () => (/* binding */ BlockingQueue)\\n/* harmony export */ });\\nclass BlockingQueue {\\n constructor() {\\n this._resolvers = [];\\n this._promises = [];\\n }\\n _add() {\\n this._promises.push(new Promise((resolve) => {\\n this._resolvers.push(resolve);\\n }));\\n }\\n enqueue(t) {\\n if (this._resolvers.length == 0)\\n this._add();\\n const resolve = this._resolvers.shift();\\n resolve(t);\\n }\\n dequeue() {\\n if (this._promises.length == 0)\\n this._add();\\n const promise = this._promises.shift();\\n return promise;\\n }\\n isEmpty() {\\n return this._promises.length == 0;\\n }\\n isBlocked() {\\n return this._resolvers.length != 0;\\n }\\n get length() {\\n return this._promises.length - this._resolvers.length;\\n }\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./src/utils/BlockingQueue.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/ua-parser-js/src/ua-parser.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/ua-parser-js/src/ua-parser.js ***!\n \\****************************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var __WEBPACK_AMD_DEFINE_RESULT__;/////////////////////////////////////////////////////////////////////////////////\\n/* UAParser.js v0.7.35\\n Copyright © 2012-2021 Faisal Salman \\n MIT License *//*\\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\\n Supports browser & node.js environment. \\n Demo : https://faisalman.github.io/ua-parser-js\\n Source : https://github.com/faisalman/ua-parser-js */\\n/////////////////////////////////////////////////////////////////////////////////\\n\\n(function (window, undefined) {\\n\\n 'use strict';\\n\\n //////////////\\n // Constants\\n /////////////\\n\\n\\n var LIBVERSION = '0.7.35',\\n EMPTY = '',\\n UNKNOWN = '?',\\n FUNC_TYPE = 'function',\\n UNDEF_TYPE = 'undefined',\\n OBJ_TYPE = 'object',\\n STR_TYPE = 'string',\\n MAJOR = 'major',\\n MODEL = 'model',\\n NAME = 'name',\\n TYPE = 'type',\\n VENDOR = 'vendor',\\n VERSION = 'version',\\n ARCHITECTURE= 'architecture',\\n CONSOLE = 'console',\\n MOBILE = 'mobile',\\n TABLET = 'tablet',\\n SMARTTV = 'smarttv',\\n WEARABLE = 'wearable',\\n EMBEDDED = 'embedded',\\n UA_MAX_LENGTH = 350;\\n\\n var AMAZON = 'Amazon',\\n APPLE = 'Apple',\\n ASUS = 'ASUS',\\n BLACKBERRY = 'BlackBerry',\\n BROWSER = 'Browser',\\n CHROME = 'Chrome',\\n EDGE = 'Edge',\\n FIREFOX = 'Firefox',\\n GOOGLE = 'Google',\\n HUAWEI = 'Huawei',\\n LG = 'LG',\\n MICROSOFT = 'Microsoft',\\n MOTOROLA = 'Motorola',\\n OPERA = 'Opera',\\n SAMSUNG = 'Samsung',\\n SHARP = 'Sharp',\\n SONY = 'Sony',\\n VIERA = 'Viera',\\n XIAOMI = 'Xiaomi',\\n ZEBRA = 'Zebra',\\n FACEBOOK = 'Facebook',\\n CHROMIUM_OS = 'Chromium OS',\\n MAC_OS = 'Mac OS';\\n\\n ///////////\\n // Helper\\n //////////\\n\\n var extend = function (regexes, extensions) {\\n var mergedRegexes = {};\\n for (var i in regexes) {\\n if (extensions[i] && extensions[i].length % 2 === 0) {\\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\\n } else {\\n mergedRegexes[i] = regexes[i];\\n }\\n }\\n return mergedRegexes;\\n },\\n enumerize = function (arr) {\\n var enums = {};\\n for (var i=0; i 0) {\\n if (q.length === 2) {\\n if (typeof q[1] == FUNC_TYPE) {\\n // assign modified match\\n this[q[0]] = q[1].call(this, match);\\n } else {\\n // assign given value, ignore regex match\\n this[q[0]] = q[1];\\n }\\n } else if (q.length === 3) {\\n // check whether function or regex\\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\\n // call function (usually string mapper)\\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\\n } else {\\n // sanitize match using given regex\\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\\n }\\n } else if (q.length === 4) {\\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\\n }\\n } else {\\n this[q] = match ? match : undefined;\\n }\\n }\\n }\\n }\\n i += 2;\\n }\\n },\\n\\n strMapper = function (str, map) {\\n\\n for (var i in map) {\\n // check if current value is array\\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\\n for (var j = 0; j < map[i].length; j++) {\\n if (has(map[i][j], str)) {\\n return (i === UNKNOWN) ? undefined : i;\\n }\\n }\\n } else if (has(map[i], str)) {\\n return (i === UNKNOWN) ? undefined : i;\\n }\\n }\\n return str;\\n };\\n\\n ///////////////\\n // String map\\n //////////////\\n\\n // Safari < 3.0\\n var oldSafariMap = {\\n '1.0' : '/8',\\n '1.2' : '/1',\\n '1.3' : '/3',\\n '2.0' : '/412',\\n '2.0.2' : '/416',\\n '2.0.3' : '/417',\\n '2.0.4' : '/419',\\n '?' : '/'\\n },\\n windowsVersionMap = {\\n 'ME' : '4.90',\\n 'NT 3.11' : 'NT3.51',\\n 'NT 4.0' : 'NT4.0',\\n '2000' : 'NT 5.0',\\n 'XP' : ['NT 5.1', 'NT 5.2'],\\n 'Vista' : 'NT 6.0',\\n '7' : 'NT 6.1',\\n '8' : 'NT 6.2',\\n '8.1' : 'NT 6.3',\\n '10' : ['NT 6.4', 'NT 10.0'],\\n 'RT' : 'ARM'\\n };\\n\\n //////////////\\n // Regex map\\n /////////////\\n\\n var regexes = {\\n\\n browser : [[\\n\\n /\\\\b(?:crmo|crios)\\\\/([\\\\w\\\\.]+)/i // Chrome for Android/iOS\\n ], [VERSION, [NAME, 'Chrome']], [\\n /edg(?:e|ios|a)?\\\\/([\\\\w\\\\.]+)/i // Microsoft Edge\\n ], [VERSION, [NAME, 'Edge']], [\\n\\n // Presto based\\n /(opera mini)\\\\/([-\\\\w\\\\.]+)/i, // Opera Mini\\n /(opera [mobiletab]{3,6})\\\\b.+version\\\\/([-\\\\w\\\\.]+)/i, // Opera Mobi/Tablet\\n /(opera)(?:.+version\\\\/|[\\\\/ ]+)([\\\\w\\\\.]+)/i // Opera\\n ], [NAME, VERSION], [\\n /opios[\\\\/ ]+([\\\\w\\\\.]+)/i // Opera mini on iphone >= 8.0\\n ], [VERSION, [NAME, OPERA+' Mini']], [\\n /\\\\bopr\\\\/([\\\\w\\\\.]+)/i // Opera Webkit\\n ], [VERSION, [NAME, OPERA]], [\\n\\n // Mixed\\n /(kindle)\\\\/([\\\\w\\\\.]+)/i, // Kindle\\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\\\/ ]?([\\\\w\\\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\\n // Trident based\\n /(avant |iemobile|slim)(?:browser)?[\\\\/ ]?([\\\\w\\\\.]*)/i, // Avant/IEMobile/SlimBrowser\\n /(ba?idubrowser)[\\\\/ ]?([\\\\w\\\\.]+)/i, // Baidu Browser\\n /(?:ms|\\\\()(ie) ([\\\\w\\\\.]+)/i, // Internet Explorer\\n\\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\\n /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\\\\/([-\\\\w\\\\.]+)/i,\\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\\n /(heytap|ovi)browser\\\\/([\\\\d\\\\.]+)/i, // Heytap/Ovi\\n /(weibo)__([\\\\d\\\\.]+)/i // Weibo\\n ], [NAME, VERSION], [\\n /(?:\\\\buc? ?browser|(?:juc.+)ucweb)[\\\\/ ]?([\\\\w\\\\.]+)/i // UCBrowser\\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\\n /microm.+\\\\bqbcore\\\\/([\\\\w\\\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\\n /\\\\bqbcore\\\\/([\\\\w\\\\.]+).+microm/i\\n ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [\\n /micromessenger\\\\/([\\\\w\\\\.]+)/i // WeChat\\n ], [VERSION, [NAME, 'WeChat']], [\\n /konqueror\\\\/([\\\\w\\\\.]+)/i // Konqueror\\n ], [VERSION, [NAME, 'Konqueror']], [\\n /trident.+rv[: ]([\\\\w\\\\.]{1,9})\\\\b.+like gecko/i // IE11\\n ], [VERSION, [NAME, 'IE']], [\\n /ya(?:search)?browser\\\\/([\\\\w\\\\.]+)/i // Yandex\\n ], [VERSION, [NAME, 'Yandex']], [\\n /(avast|avg)\\\\/([\\\\w\\\\.]+)/i // Avast/AVG Secure Browser\\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\\n /\\\\bfocus\\\\/([\\\\w\\\\.]+)/i // Firefox Focus\\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\\n /\\\\bopt\\\\/([\\\\w\\\\.]+)/i // Opera Touch\\n ], [VERSION, [NAME, OPERA+' Touch']], [\\n /coc_coc\\\\w+\\\\/([\\\\w\\\\.]+)/i // Coc Coc Browser\\n ], [VERSION, [NAME, 'Coc Coc']], [\\n /dolfin\\\\/([\\\\w\\\\.]+)/i // Dolphin\\n ], [VERSION, [NAME, 'Dolphin']], [\\n /coast\\\\/([\\\\w\\\\.]+)/i // Opera Coast\\n ], [VERSION, [NAME, OPERA+' Coast']], [\\n /miuibrowser\\\\/([\\\\w\\\\.]+)/i // MIUI Browser\\n ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\\n /fxios\\\\/([-\\\\w\\\\.]+)/i // Firefox for iOS\\n ], [VERSION, [NAME, FIREFOX]], [\\n /\\\\bqihu|(qi?ho?o?|360)browser/i // 360\\n ], [[NAME, '360 '+BROWSER]], [\\n /(oculus|samsung|sailfish|huawei)browser\\\\/([\\\\w\\\\.]+)/i\\n ], [[NAME, /(.+)/, '$1 '+BROWSER], VERSION], [ // Oculus/Samsung/Sailfish/Huawei Browser\\n /(comodo_dragon)\\\\/([\\\\w\\\\.]+)/i // Comodo Dragon\\n ], [[NAME, /_/g, ' '], VERSION], [\\n /(electron)\\\\/([\\\\w\\\\.]+) safari/i, // Electron-based App\\n /(tesla)(?: qtcarbrowser|\\\\/(20\\\\d\\\\d\\\\.[-\\\\w\\\\.]+))/i, // Tesla\\n /m?(qqbrowser|baiduboxapp|2345Explorer)[\\\\/ ]?([\\\\w\\\\.]+)/i // QQBrowser/Baidu App/2345 Browser\\n ], [NAME, VERSION], [\\n /(metasr)[\\\\/ ]?([\\\\w\\\\.]+)/i, // SouGouBrowser\\n /(lbbrowser)/i, // LieBao Browser\\n /\\\\[(linkedin)app\\\\]/i // LinkedIn App for iOS & Android\\n ], [NAME], [\\n\\n // WebView\\n /((?:fban\\\\/fbios|fb_iab\\\\/fb4a)(?!.+fbav)|;fbav\\\\/([\\\\w\\\\.]+);)/i // Facebook App for iOS & Android\\n ], [[NAME, FACEBOOK], VERSION], [\\n /(kakao(?:talk|story))[\\\\/ ]([\\\\w\\\\.]+)/i, // Kakao App\\n /(naver)\\\\(.*?(\\\\d+\\\\.[\\\\w\\\\.]+).*\\\\)/i, // Naver InApp\\n /safari (line)\\\\/([\\\\w\\\\.]+)/i, // Line App for iOS\\n /\\\\b(line)\\\\/([\\\\w\\\\.]+)\\\\/iab/i, // Line App for Android\\n /(chromium|instagram)[\\\\/ ]([-\\\\w\\\\.]+)/i // Chromium/Instagram\\n ], [NAME, VERSION], [\\n /\\\\bgsa\\\\/([\\\\w\\\\.]+) .*safari\\\\//i // Google Search Appliance on iOS\\n ], [VERSION, [NAME, 'GSA']], [\\n /musical_ly(?:.+app_?version\\\\/|_)([\\\\w\\\\.]+)/i // TikTok\\n ], [VERSION, [NAME, 'TikTok']], [\\n\\n /headlesschrome(?:\\\\/([\\\\w\\\\.]+)| )/i // Chrome Headless\\n ], [VERSION, [NAME, CHROME+' Headless']], [\\n\\n / wv\\\\).+(chrome)\\\\/([\\\\w\\\\.]+)/i // Chrome WebView\\n ], [[NAME, CHROME+' WebView'], VERSION], [\\n\\n /droid.+ version\\\\/([\\\\w\\\\.]+)\\\\b.+(?:mobile safari|safari)/i // Android Browser\\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\\n\\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\\\/v?([\\\\w\\\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\\n ], [NAME, VERSION], [\\n\\n /version\\\\/([\\\\w\\\\.\\\\,]+) .*mobile\\\\/\\\\w+ (safari)/i // Mobile Safari\\n ], [VERSION, [NAME, 'Mobile Safari']], [\\n /version\\\\/([\\\\w(\\\\.|\\\\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\\n ], [VERSION, NAME], [\\n /webkit.+?(mobile ?safari|safari)(\\\\/[\\\\w\\\\.]+)/i // Safari < 3.0\\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\\n\\n /(webkit|khtml)\\\\/([\\\\w\\\\.]+)/i\\n ], [NAME, VERSION], [\\n\\n // Gecko based\\n /(navigator|netscape\\\\d?)\\\\/([-\\\\w\\\\.]+)/i // Netscape\\n ], [[NAME, 'Netscape'], VERSION], [\\n /mobile vr; rv:([\\\\w\\\\.]+)\\\\).+firefox/i // Firefox Reality\\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\\n /ekiohf.+(flow)\\\\/([\\\\w\\\\.]+)/i, // Flow\\n /(swiftfox)/i, // Swiftfox\\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\\\/ ]?([\\\\w\\\\.\\\\+]+)/i,\\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\\\/([-\\\\w\\\\.]+)$/i,\\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\\n /(firefox)\\\\/([\\\\w\\\\.]+)/i, // Other Firefox-based\\n /(mozilla)\\\\/([\\\\w\\\\.]+) .+rv\\\\:.+gecko\\\\/\\\\d+/i, // Mozilla\\n\\n // Other\\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\\\. ]?browser)[-\\\\/ ]?v?([\\\\w\\\\.]+)/i,\\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\\n /(links) \\\\(([\\\\w\\\\.]+)/i, // Links\\n /panasonic;(viera)/i // Panasonic Viera\\n ], [NAME, VERSION], [\\n \\n /(cobalt)\\\\/([\\\\w\\\\.]+)/i // Cobalt\\n ], [NAME, [VERSION, /master.|lts./, \\\"\\\"]]\\n ],\\n\\n cpu : [[\\n\\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\\\)]/i // AMD64 (x64)\\n ], [[ARCHITECTURE, 'amd64']], [\\n\\n /(ia32(?=;))/i // IA32 (quicktime)\\n ], [[ARCHITECTURE, lowerize]], [\\n\\n /((?:i[346]|x)86)[;\\\\)]/i // IA32 (x86)\\n ], [[ARCHITECTURE, 'ia32']], [\\n\\n /\\\\b(aarch64|arm(v?8e?l?|_?64))\\\\b/i // ARM64\\n ], [[ARCHITECTURE, 'arm64']], [\\n\\n /\\\\b(arm(?:v[67])?ht?n?[fl]p?)\\\\b/i // ARMHF\\n ], [[ARCHITECTURE, 'armhf']], [\\n\\n // PocketPC mistakenly identified as PowerPC\\n /windows (ce|mobile); ppc;/i\\n ], [[ARCHITECTURE, 'arm']], [\\n\\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\\\))/i // PowerPC\\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\\n\\n /(sun4\\\\w)[;\\\\)]/i // SPARC\\n ], [[ARCHITECTURE, 'sparc']], [\\n\\n /((?:avr32|ia64(?=;))|68k(?=\\\\))|\\\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\\\b|pa-risc)/i\\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\\n ], [[ARCHITECTURE, lowerize]]\\n ],\\n\\n device : [[\\n\\n //////////////////////////\\n // MOBILES & TABLETS\\n /////////////////////////\\n\\n // Samsung\\n /\\\\b(sch-i[89]0\\\\d|shw-m380s|sm-[ptx]\\\\w{2,4}|gt-[pn]\\\\d{2,4}|sgh-t8[56]9|nexus 10)/i\\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\\n /\\\\b((?:s[cgp]h|gt|sm)-\\\\w+|sc[g-]?[\\\\d]+a?|galaxy nexus)/i,\\n /samsung[- ]([-\\\\w]+)/i,\\n /sec-(sgh\\\\w+)/i\\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\\n\\n // Apple\\n /(?:\\\\/|\\\\()(ip(?:hone|od)[\\\\w, ]*)(?:\\\\/|;)/i // iPod/iPhone\\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\\n /\\\\((ipad);[-\\\\w\\\\),; ]+apple/i, // iPad\\n /applecoremedia\\\\/[\\\\w\\\\.]+ \\\\((ipad)/i,\\n /\\\\b(ipad)\\\\d\\\\d?,\\\\d\\\\d?[;\\\\]].+ios/i\\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\\n /(macintosh);/i\\n ], [MODEL, [VENDOR, APPLE]], [\\n\\n // Sharp\\n /\\\\b(sh-?[altvz]?\\\\d\\\\d[a-ekm]?)/i\\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\\n\\n // Huawei\\n /\\\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\\\d{2})\\\\b(?!.+d\\\\/s)/i\\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\\n /(?:huawei|honor)([-\\\\w ]+)[;\\\\)]/i,\\n /\\\\b(nexus 6p|\\\\w{2,4}e?-[atu]?[ln][\\\\dx][012359c][adn]?)\\\\b(?!.+d\\\\/s)/i\\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\\n\\n // Xiaomi\\n /\\\\b(poco[\\\\w ]+)(?: bui|\\\\))/i, // Xiaomi POCO\\n /\\\\b; (\\\\w+) build\\\\/hm\\\\1/i, // Xiaomi Hongmi 'numeric' models\\n /\\\\b(hm[-_ ]?note?[_ ]?(?:\\\\d\\\\w)?) bui/i, // Xiaomi Hongmi\\n /\\\\b(redmi[\\\\-_ ]?(?:note|k)?[\\\\w_ ]+)(?: bui|\\\\))/i, // Xiaomi Redmi\\n /\\\\b(mi[-_ ]?(?:a\\\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\\\d?\\\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\\\))/i // Xiaomi Mi\\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\\n /\\\\b(mi[-_ ]?(?:pad)(?:[\\\\w_ ]+))(?: bui|\\\\))/i // Mi Pad tablets\\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\\n\\n // OPPO\\n /; (\\\\w+) bui.+ oppo/i,\\n /\\\\b(cph[12]\\\\d{3}|p(?:af|c[al]|d\\\\w|e[ar])[mt]\\\\d0|x9007|a101op)\\\\b/i\\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\\n\\n // Vivo\\n /vivo (\\\\w+)(?: bui|\\\\))/i,\\n /\\\\b(v[12]\\\\d{3}\\\\w?[at])(?: bui|;)/i\\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\\n\\n // Realme\\n /\\\\b(rmx[12]\\\\d{3})(?: bui|;|\\\\))/i\\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\\n\\n // Motorola\\n /\\\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\\\b[\\\\w ]+build\\\\//i,\\n /\\\\bmot(?:orola)?[- ](\\\\w*)/i,\\n /((?:moto[\\\\w\\\\(\\\\) ]+|xt\\\\d{3,4}|nexus 6)(?= bui|\\\\)))/i\\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\\n /\\\\b(mz60\\\\d|xoom[2 ]{0,2}) build\\\\//i\\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\\n\\n // LG\\n /((?=lg)?[vl]k\\\\-?\\\\d{3}) bui| 3\\\\.[-\\\\w; ]{10}lg?-([06cv9]{3,4})/i\\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\\n /(lm(?:-?f100[nv]?|-[\\\\w\\\\.]+)(?= bui|\\\\))|nexus [45])/i,\\n /\\\\blg[-e;\\\\/ ]+((?!browser|netcast|android tv)\\\\w+)/i,\\n /\\\\blg-?([\\\\d\\\\w]+) bui/i\\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\\n\\n // Lenovo\\n /(ideatab[-\\\\w ]+)/i,\\n /lenovo ?(s[56]000[-\\\\w]+|tab(?:[\\\\w ]+)|yt[-\\\\d\\\\w]{6}|tb[-\\\\d\\\\w]{6})/i\\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\\n\\n // Nokia\\n /(?:maemo|nokia).*(n900|lumia \\\\d+)/i,\\n /nokia[-_ ]?([-\\\\w\\\\.]*)/i\\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\\n\\n // Google\\n /(pixel c)\\\\b/i // Google Pixel C\\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\\n /droid.+; (pixel[\\\\daxl ]{0,6})(?: bui|\\\\))/i // Google Pixel\\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\\n\\n // Sony\\n /droid.+ (a?\\\\d[0-2]{2}so|[c-g]\\\\d{4}|so[-gl]\\\\w+|xq-a\\\\w[4-7][12])(?= bui|\\\\).+chrome\\\\/(?![1-6]{0,1}\\\\d\\\\.))/i\\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\\n /sony tablet [ps]/i,\\n /\\\\b(?:sony)?sgp\\\\w+(?: bui|\\\\))/i\\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\\n\\n // OnePlus\\n / (kb2005|in20[12]5|be20[12][59])\\\\b/i,\\n /(?:one)?(?:plus)? (a\\\\d0\\\\d\\\\d)(?: b|\\\\))/i\\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\\n\\n // Amazon\\n /(alexa)webm/i,\\n /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\\\))/i, // Kindle Fire without Silk / Echo Show\\n /(kf[a-z]+)( bui|\\\\)).+silk\\\\//i // Kindle Fire HD\\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\\\)).+silk\\\\//i // Fire Phone\\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\\n\\n // BlackBerry\\n /(playbook);[-\\\\w\\\\),; ]+(rim)/i // BlackBerry PlayBook\\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\\n /\\\\b((?:bb[a-f]|st[hv])100-\\\\d)/i,\\n /\\\\(bb10; (\\\\w+)/i // BlackBerry 10\\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\\n\\n // Asus\\n /(?:\\\\b|asus_)(transfo[prime ]{4,10} \\\\w+|eeepc|slider \\\\w+|nexus 7|padfone|p00[cj])/i\\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\\n / (z[bes]6[027][012][km][ls]|zenfone \\\\d\\\\w?)\\\\b/i\\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\\n\\n // HTC\\n /(nexus 9)/i // HTC Nexus 9\\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\\n /(htc)[-;_ ]{1,2}([\\\\w ]+(?=\\\\)| bui)|\\\\w+)/i, // HTC\\n\\n // ZTE\\n /(zte)[- ]([\\\\w ]+?)(?: bui|\\\\/|\\\\))/i,\\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\\\.))|sony(?!-bra))[-_ ]?([-\\\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\\n\\n // Acer\\n /droid.+; ([ab][1-7]-?[0178a]\\\\d\\\\d?)/i\\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\\n\\n // Meizu\\n /droid.+; (m[1-5] note) bui/i,\\n /\\\\bmz-([-\\\\w]{2,})/i\\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\\n\\n // MIXED\\n /(blackberry|benq|palm(?=\\\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\\\w]*)/i,\\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\\n /(hp) ([\\\\w ]+\\\\w)/i, // HP iPAQ\\n /(asus)-?(\\\\w+)/i, // Asus\\n /(microsoft); (lumia[\\\\w ]+)/i, // Microsoft Lumia\\n /(lenovo)[-_ ]?([-\\\\w]+)/i, // Lenovo\\n /(jolla)/i, // Jolla\\n /(oppo) ?([\\\\w ]+) bui/i // OPPO\\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\\n\\n /(kobo)\\\\s(ereader|touch)/i, // Kobo\\n /(archos) (gamepad2?)/i, // Archos\\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\\n /(kindle)\\\\/([\\\\w\\\\.]+)/i, // Kindle\\n /(nook)[\\\\w ]+build\\\\/(\\\\w+)/i, // Nook\\n /(dell) (strea[kpr\\\\d ]*[\\\\dko])/i, // Dell Streak\\n /(le[- ]+pan)[- ]+(\\\\w{1,9}) bui/i, // Le Pan Tablets\\n /(trinity)[- ]*(t\\\\d{3}) bui/i, // Trinity Tablets\\n /(gigaset)[- ]+(q\\\\w{1,9}) bui/i, // Gigaset Tablets\\n /(vodafone) ([\\\\w ]+)(?:\\\\)| bui)/i // Vodafone\\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\\n\\n /(surface duo)/i // Surface Duo\\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\\n /droid [\\\\d\\\\.]+; (fp\\\\du?)(?: b|\\\\))/i // Fairphone\\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\\n /(u304aa)/i // AT&T\\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\\n /\\\\bsie-(\\\\w*)/i // Siemens\\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\\n /\\\\b(rct\\\\w+) b/i // RCA Tablets\\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\\n /\\\\b(venue[\\\\d ]{2,7}) b/i // Dell Venue Tablets\\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\\n /\\\\b(q(?:mv|ta)\\\\w+) b/i // Verizon Tablet\\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\\n /\\\\b(?:barnes[& ]+noble |bn[rt])([\\\\w\\\\+ ]*) b/i // Barnes & Noble Tablet\\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\\n /\\\\b(tm\\\\d{3}\\\\w+) b/i\\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\\n /\\\\b(k88) b/i // ZTE K Series Tablet\\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\\n /\\\\b(nx\\\\d{3}j) b/i // ZTE Nubia\\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\\n /\\\\b(gen\\\\d{3}) b.+49h/i // Swiss GEN Mobile\\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\\n /\\\\b(zur\\\\d{3}) b/i // Swiss ZUR Tablet\\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\\n /\\\\b((zeki)?tb.*\\\\b) b/i // Zeki Tablets\\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\\n /\\\\b([yr]\\\\d{2}) b/i,\\n /\\\\b(dragon[- ]+touch |dt)(\\\\w{5}) b/i // Dragon Touch Tablet\\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\\n /\\\\b(ns-?\\\\w{0,9}) b/i // Insignia Tablets\\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\\n /\\\\b((nxa|next)-?\\\\w{0,9}) b/i // NextBook Tablets\\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\\n /\\\\b(xtreme\\\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\\n /\\\\b(lvtel\\\\-)?(v1[12]) b/i // LvTel Phones\\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\\n /\\\\b(ph-1) /i // Essential PH-1\\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\\n /\\\\b(v(100md|700na|7011|917g).*\\\\b) b/i // Envizen Tablets\\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\\n /\\\\b(trio[-\\\\w\\\\. ]+) b/i // MachSpeed Tablets\\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\\n /\\\\btu_(1491) b/i // Rotor Tablets\\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\\n /(shield[\\\\w ]+) b/i // Nvidia Shield Tablets\\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\\n /(sprint) (\\\\w+)/i // Sprint Phones\\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\\n /(kin\\\\.[onetw]{3})/i // Microsoft Kin\\n ], [[MODEL, /\\\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\\\)/i // Zebra\\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\\n /droid.+; (ec30|ps20|tc[2-8]\\\\d[kx])\\\\)/i\\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\\n\\n ///////////////////\\n // SMARTTVS\\n ///////////////////\\n\\n /smart-tv.+(samsung)/i // Samsung\\n ], [VENDOR, [TYPE, SMARTTV]], [\\n /hbbtv.+maple;(\\\\d+)/i\\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\\n /(nux; netcast.+smarttv|lg (netcast\\\\.tv-201\\\\d|android tv))/i // LG SmartTV\\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\\n /(apple) ?tv/i // Apple TV\\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\\n /crkey/i // Google Chromecast\\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\\n /droid.+aft(\\\\w)( bui|\\\\))/i // Fire TV\\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\\n /\\\\(dtv[\\\\);].+(aquos)/i,\\n /(aquos-tv[\\\\w ]+)\\\\)/i // Sharp\\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\\n /(bravia[\\\\w ]+)( bui|\\\\))/i // Sony\\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\\n /(mitv-\\\\w{5}) bui/i // Xiaomi\\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\\n /\\\\b(roku)[\\\\dx]*[\\\\)\\\\/]((?:dvp-)?[\\\\d\\\\.]*)/i, // Roku\\n /hbbtv\\\\/\\\\d+\\\\.\\\\d+\\\\.\\\\d+ +\\\\([\\\\w\\\\+ ]*; *([\\\\w\\\\d][^;]*);([^;]*)/i // HbbTV devices\\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\\n /\\\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\\\b/i // SmartTV from Unidentified Vendors\\n ], [[TYPE, SMARTTV]], [\\n\\n ///////////////////\\n // CONSOLES\\n ///////////////////\\n\\n /(ouya)/i, // Ouya\\n /(nintendo) ([wids3utch]+)/i // Nintendo\\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\\n /droid.+; (shield) bui/i // Nvidia\\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\\n /(playstation [345portablevi]+)/i // Playstation\\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\\n /\\\\b(xbox(?: one)?(?!; xbox))[\\\\); ]/i // Microsoft Xbox\\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\\n\\n ///////////////////\\n // WEARABLES\\n ///////////////////\\n\\n /((pebble))app/i // Pebble\\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\\n /(watch)(?: ?os[,\\\\/]|\\\\d,\\\\d\\\\/)[\\\\d\\\\.]+/i // Apple Watch\\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\\n /droid.+; (glass) \\\\d/i // Google Glass\\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\\n /droid.+; (wt63?0{2,3})\\\\)/i\\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\\n /(quest( 2| pro)?)/i // Oculus Quest\\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\\n\\n ///////////////////\\n // EMBEDDED\\n ///////////////////\\n\\n /(tesla)(?: qtcarbrowser|\\\\/[-\\\\w\\\\.]+)/i // Tesla\\n ], [VENDOR, [TYPE, EMBEDDED]], [\\n /(aeobc)\\\\b/i // Echo Dot\\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\\n\\n ////////////////////\\n // MIXED (GENERIC)\\n ///////////////////\\n\\n /droid .+?; ([^;]+?)(?: bui|\\\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\\n ], [MODEL, [TYPE, MOBILE]], [\\n /droid .+?; ([^;]+?)(?: bui|\\\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\\n ], [MODEL, [TYPE, TABLET]], [\\n /\\\\b((tablet|tab)[;\\\\/]|focus\\\\/\\\\d(?!.+mobile))/i // Unidentifiable Tablet\\n ], [[TYPE, TABLET]], [\\n /(phone|mobile(?:[;\\\\/]| [ \\\\w\\\\/\\\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\\n ], [[TYPE, MOBILE]], [\\n /(android[-\\\\w\\\\. ]{0,9});.+buil/i // Generic Android Device\\n ], [MODEL, [VENDOR, 'Generic']]\\n ],\\n\\n engine : [[\\n\\n /windows.+ edge\\\\/([\\\\w\\\\.]+)/i // EdgeHTML\\n ], [VERSION, [NAME, EDGE+'HTML']], [\\n\\n /webkit\\\\/537\\\\.36.+chrome\\\\/(?!27)([\\\\w\\\\.]+)/i // Blink\\n ], [VERSION, [NAME, 'Blink']], [\\n\\n /(presto)\\\\/([\\\\w\\\\.]+)/i, // Presto\\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\\\/([\\\\w\\\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\\n /ekioh(flow)\\\\/([\\\\w\\\\.]+)/i, // Flow\\n /(khtml|tasman|links)[\\\\/ ]\\\\(?([\\\\w\\\\.]+)/i, // KHTML/Tasman/Links\\n /(icab)[\\\\/ ]([23]\\\\.[\\\\d\\\\.]+)/i, // iCab\\n /\\\\b(libweb)/i\\n ], [NAME, VERSION], [\\n\\n /rv\\\\:([\\\\w\\\\.]{1,9})\\\\b.+(gecko)/i // Gecko\\n ], [VERSION, NAME]\\n ],\\n\\n os : [[\\n\\n // Windows\\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\\n ], [NAME, VERSION], [\\n /(windows) nt 6\\\\.2; (arm)/i, // Windows RT\\n /(windows (?:phone(?: os)?|mobile))[\\\\/ ]?([\\\\d\\\\.\\\\w ]*)/i, // Windows Phone\\n /(windows)[\\\\/ ]?([ntce\\\\d\\\\. ]+\\\\w)(?!.+xbox)/i\\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\\n /(win(?=3|9|n)|win 9x )([nt\\\\d\\\\.]+)/i\\n ], [[NAME, 'Windows'], [VERSION, strMapper, windowsVersionMap]], [\\n\\n // iOS/macOS\\n /ip[honead]{2,4}\\\\b(?:.*os ([\\\\w]+) like mac|; opera)/i, // iOS\\n /ios;fbsv\\\\/([\\\\d\\\\.]+)/i,\\n /cfnetwork\\\\/.+darwin/i\\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\\n /(mac os x) ?([\\\\w\\\\. ]*)/i,\\n /(macintosh|mac_powerpc\\\\b)(?!.+haiku)/i // Mac OS\\n ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\\n\\n // Mobile OSes\\n /droid ([\\\\w\\\\.]+)\\\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\\\/ ]?([\\\\w\\\\.]*)/i,\\n /(blackberry)\\\\w*\\\\/([\\\\w\\\\.]*)/i, // Blackberry\\n /(tizen|kaios)[\\\\/ ]([\\\\w\\\\.]+)/i, // Tizen/KaiOS\\n /\\\\((series40);/i // Series 40\\n ], [NAME, VERSION], [\\n /\\\\(bb(10);/i // BlackBerry 10\\n ], [VERSION, [NAME, BLACKBERRY]], [\\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\\\/ ]?([\\\\w\\\\.]*)/i // Symbian\\n ], [VERSION, [NAME, 'Symbian']], [\\n /mozilla\\\\/[\\\\d\\\\.]+ \\\\((?:mobile|tablet|tv|mobile; [\\\\w ]+); rv:.+ gecko\\\\/([\\\\w\\\\.]+)/i // Firefox OS\\n ], [VERSION, [NAME, FIREFOX+' OS']], [\\n /web0s;.+rt(tv)/i,\\n /\\\\b(?:hp)?wos(?:browser)?\\\\/([\\\\w\\\\.]+)/i // WebOS\\n ], [VERSION, [NAME, 'webOS']], [\\n /watch(?: ?os[,\\\\/]|\\\\d,\\\\d\\\\/)([\\\\d\\\\.]+)/i // watchOS\\n ], [VERSION, [NAME, 'watchOS']], [\\n\\n // Google Chromecast\\n /crkey\\\\/([\\\\d\\\\.]+)/i // Google Chromecast\\n ], [VERSION, [NAME, CHROME+'cast']], [\\n /(cros) [\\\\w]+(?:\\\\)| ([\\\\w\\\\.]+)\\\\b)/i // Chromium OS\\n ], [[NAME, CHROMIUM_OS], VERSION],[\\n\\n // Smart TVs\\n /panasonic;(viera)/i, // Panasonic Viera\\n /(netrange)mmh/i, // Netrange\\n /(nettv)\\\\/(\\\\d+\\\\.[\\\\w\\\\.]+)/i, // NetTV\\n\\n // Console\\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\\n /(xbox); +xbox ([^\\\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\\n\\n // Other\\n /\\\\b(joli|palm)\\\\b ?(?:os)?\\\\/?([\\\\w\\\\.]*)/i, // Joli/Palm\\n /(mint)[\\\\/\\\\(\\\\) ]?(\\\\w*)/i, // Mint\\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\\\/ ]?(?!chrom|package)([-\\\\w\\\\.]*)/i,\\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\\n /(hurd|linux) ?([\\\\w\\\\.]*)/i, // Hurd/Linux\\n /(gnu) ?([\\\\w\\\\.]*)/i, // GNU\\n /\\\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\\\/ ]?(?!amd|[ix346]{1,2}86)([\\\\w\\\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\\n /(haiku) (\\\\w+)/i // Haiku\\n ], [NAME, VERSION], [\\n /(sunos) ?([\\\\w\\\\.\\\\d]*)/i // Solaris\\n ], [[NAME, 'Solaris'], VERSION], [\\n /((?:open)?solaris)[-\\\\/ ]?([\\\\w\\\\.]*)/i, // Solaris\\n /(aix) ((\\\\d)(?=\\\\.|\\\\)| )[\\\\w\\\\.])*/i, // AIX\\n /\\\\b(beos|os\\\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\\n /(unix) ?([\\\\w\\\\.]*)/i // UNIX\\n ], [NAME, VERSION]\\n ]\\n };\\n\\n /////////////////\\n // Constructor\\n ////////////////\\n\\n var UAParser = function (ua, extensions) {\\n\\n if (typeof ua === OBJ_TYPE) {\\n extensions = ua;\\n ua = undefined;\\n }\\n\\n if (!(this instanceof UAParser)) {\\n return new UAParser(ua, extensions).getResult();\\n }\\n\\n var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\\n var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\\n var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\\n var _isSelfNav = _navigator && _navigator.userAgent == _ua;\\n\\n this.getBrowser = function () {\\n var _browser = {};\\n _browser[NAME] = undefined;\\n _browser[VERSION] = undefined;\\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\\n _browser[MAJOR] = majorize(_browser[VERSION]);\\n // Brave-specific detection\\n if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\\n _browser[NAME] = 'Brave';\\n }\\n return _browser;\\n };\\n this.getCPU = function () {\\n var _cpu = {};\\n _cpu[ARCHITECTURE] = undefined;\\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\\n return _cpu;\\n };\\n this.getDevice = function () {\\n var _device = {};\\n _device[VENDOR] = undefined;\\n _device[MODEL] = undefined;\\n _device[TYPE] = undefined;\\n rgxMapper.call(_device, _ua, _rgxmap.device);\\n if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\\n _device[TYPE] = MOBILE;\\n }\\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\\n if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\\n _device[MODEL] = 'iPad';\\n _device[TYPE] = TABLET;\\n }\\n return _device;\\n };\\n this.getEngine = function () {\\n var _engine = {};\\n _engine[NAME] = undefined;\\n _engine[VERSION] = undefined;\\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\\n return _engine;\\n };\\n this.getOS = function () {\\n var _os = {};\\n _os[NAME] = undefined;\\n _os[VERSION] = undefined;\\n rgxMapper.call(_os, _ua, _rgxmap.os);\\n if (_isSelfNav && !_os[NAME] && _uach && _uach.platform != 'Unknown') {\\n _os[NAME] = _uach.platform \\n .replace(/chrome os/i, CHROMIUM_OS)\\n .replace(/macos/i, MAC_OS); // backward compatibility\\n }\\n return _os;\\n };\\n this.getResult = function () {\\n return {\\n ua : this.getUA(),\\n browser : this.getBrowser(),\\n engine : this.getEngine(),\\n os : this.getOS(),\\n device : this.getDevice(),\\n cpu : this.getCPU()\\n };\\n };\\n this.getUA = function () {\\n return _ua;\\n };\\n this.setUA = function (ua) {\\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\\n return this;\\n };\\n this.setUA(_ua);\\n return this;\\n };\\n\\n UAParser.VERSION = LIBVERSION;\\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\\n UAParser.CPU = enumerize([ARCHITECTURE]);\\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\\n\\n ///////////\\n // Export\\n //////////\\n\\n // check js environment\\n if (typeof(exports) !== UNDEF_TYPE) {\\n // nodejs env\\n if (\\\"object\\\" !== UNDEF_TYPE && module.exports) {\\n exports = module.exports = UAParser;\\n }\\n exports.UAParser = UAParser;\\n } else {\\n // requirejs env (optional)\\n if (\\\"function\\\" === FUNC_TYPE && __webpack_require__.amdO) {\\n !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {\\n return UAParser;\\n }).call(exports, __webpack_require__, exports, module),\\n\\t\\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\\n } else if (typeof window !== UNDEF_TYPE) {\\n // browser env\\n window.UAParser = UAParser;\\n }\\n }\\n\\n // jQuery/Zepto specific (optional)\\n // Note:\\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\\n // and we should catch that.\\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\\n if ($ && !$.ua) {\\n var parser = new UAParser();\\n $.ua = parser.getResult();\\n $.ua.get = function () {\\n return parser.getUA();\\n };\\n $.ua.set = function (ua) {\\n parser.setUA(ua);\\n var result = parser.getResult();\\n for (var prop in result) {\\n $.ua[prop] = result[prop];\\n }\\n };\\n }\\n\\n})(typeof window === 'object' ? window : this);\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/ua-parser-js/src/ua-parser.js?\");\n\n/***/ }),\n\n/***/ \"react\":\n/*!************************!*\\\n !*** external \"react\" ***!\n \\************************/\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_react__;\n\n/***/ }),\n\n/***/ \"./node_modules/@socket.io/component-emitter/index.mjs\":\n/*!*************************************************************!*\\\n !*** ./node_modules/@socket.io/component-emitter/index.mjs ***!\n \\*************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ Emitter: () => (/* binding */ Emitter)\\n/* harmony export */ });\\n/**\\n * Initialize a new `Emitter`.\\n *\\n * @api public\\n */\\n\\nfunction Emitter(obj) {\\n if (obj) return mixin(obj);\\n}\\n\\n/**\\n * Mixin the emitter properties.\\n *\\n * @param {Object} obj\\n * @return {Object}\\n * @api private\\n */\\n\\nfunction mixin(obj) {\\n for (var key in Emitter.prototype) {\\n obj[key] = Emitter.prototype[key];\\n }\\n return obj;\\n}\\n\\n/**\\n * Listen on the given `event` with `fn`.\\n *\\n * @param {String} event\\n * @param {Function} fn\\n * @return {Emitter}\\n * @api public\\n */\\n\\nEmitter.prototype.on =\\nEmitter.prototype.addEventListener = function(event, fn){\\n this._callbacks = this._callbacks || {};\\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\\n .push(fn);\\n return this;\\n};\\n\\n/**\\n * Adds an `event` listener that will be invoked a single\\n * time then automatically removed.\\n *\\n * @param {String} event\\n * @param {Function} fn\\n * @return {Emitter}\\n * @api public\\n */\\n\\nEmitter.prototype.once = function(event, fn){\\n function on() {\\n this.off(event, on);\\n fn.apply(this, arguments);\\n }\\n\\n on.fn = fn;\\n this.on(event, on);\\n return this;\\n};\\n\\n/**\\n * Remove the given callback for `event` or all\\n * registered callbacks.\\n *\\n * @param {String} event\\n * @param {Function} fn\\n * @return {Emitter}\\n * @api public\\n */\\n\\nEmitter.prototype.off =\\nEmitter.prototype.removeListener =\\nEmitter.prototype.removeAllListeners =\\nEmitter.prototype.removeEventListener = function(event, fn){\\n this._callbacks = this._callbacks || {};\\n\\n // all\\n if (0 == arguments.length) {\\n this._callbacks = {};\\n return this;\\n }\\n\\n // specific event\\n var callbacks = this._callbacks['$' + event];\\n if (!callbacks) return this;\\n\\n // remove all handlers\\n if (1 == arguments.length) {\\n delete this._callbacks['$' + event];\\n return this;\\n }\\n\\n // remove specific handler\\n var cb;\\n for (var i = 0; i < callbacks.length; i++) {\\n cb = callbacks[i];\\n if (cb === fn || cb.fn === fn) {\\n callbacks.splice(i, 1);\\n break;\\n }\\n }\\n\\n // Remove event specific arrays for event types that no\\n // one is subscribed for to avoid memory leak.\\n if (callbacks.length === 0) {\\n delete this._callbacks['$' + event];\\n }\\n\\n return this;\\n};\\n\\n/**\\n * Emit `event` with the given args.\\n *\\n * @param {String} event\\n * @param {Mixed} ...\\n * @return {Emitter}\\n */\\n\\nEmitter.prototype.emit = function(event){\\n this._callbacks = this._callbacks || {};\\n\\n var args = new Array(arguments.length - 1)\\n , callbacks = this._callbacks['$' + event];\\n\\n for (var i = 1; i < arguments.length; i++) {\\n args[i - 1] = arguments[i];\\n }\\n\\n if (callbacks) {\\n callbacks = callbacks.slice(0);\\n for (var i = 0, len = callbacks.length; i < len; ++i) {\\n callbacks[i].apply(this, args);\\n }\\n }\\n\\n return this;\\n};\\n\\n// alias used for reserved events (protected method)\\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\\n\\n/**\\n * Return array of callbacks for `event`.\\n *\\n * @param {String} event\\n * @return {Array}\\n * @api public\\n */\\n\\nEmitter.prototype.listeners = function(event){\\n this._callbacks = this._callbacks || {};\\n return this._callbacks['$' + event] || [];\\n};\\n\\n/**\\n * Check if this emitter has `event` handlers.\\n *\\n * @param {String} event\\n * @return {Boolean}\\n * @api public\\n */\\n\\nEmitter.prototype.hasListeners = function(event){\\n return !! this.listeners(event).length;\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/@socket.io/component-emitter/index.mjs?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/build/esm/contrib/has-cors.js\":\n/*!*********************************************************************!*\\\n !*** ./node_modules/engine.io-client/build/esm/contrib/has-cors.js ***!\n \\*********************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ hasCORS: () => (/* binding */ hasCORS)\\n/* harmony export */ });\\n// imported from https://github.com/component/has-cors\\nlet value = false;\\ntry {\\n value = typeof XMLHttpRequest !== 'undefined' &&\\n 'withCredentials' in new XMLHttpRequest();\\n}\\ncatch (err) {\\n // if XMLHttp support is disabled in IE then it will throw\\n // when trying to create\\n}\\nconst hasCORS = value;\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-client/build/esm/contrib/has-cors.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/build/esm/contrib/parseqs.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/engine.io-client/build/esm/contrib/parseqs.js ***!\n \\********************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ decode: () => (/* binding */ decode),\\n/* harmony export */ encode: () => (/* binding */ encode)\\n/* harmony export */ });\\n// imported from https://github.com/galkn/querystring\\n/**\\n * Compiles a querystring\\n * Returns string representation of the object\\n *\\n * @param {Object}\\n * @api private\\n */\\nfunction encode(obj) {\\n let str = '';\\n for (let i in obj) {\\n if (obj.hasOwnProperty(i)) {\\n if (str.length)\\n str += '&';\\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\\n }\\n }\\n return str;\\n}\\n/**\\n * Parses a simple querystring into an object\\n *\\n * @param {String} qs\\n * @api private\\n */\\nfunction decode(qs) {\\n let qry = {};\\n let pairs = qs.split('&');\\n for (let i = 0, l = pairs.length; i < l; i++) {\\n let pair = pairs[i].split('=');\\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\\n }\\n return qry;\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-client/build/esm/contrib/parseqs.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/build/esm/contrib/parseuri.js\":\n/*!*********************************************************************!*\\\n !*** ./node_modules/engine.io-client/build/esm/contrib/parseuri.js ***!\n \\*********************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ parse: () => (/* binding */ parse)\\n/* harmony export */ });\\n// imported from https://github.com/galkn/parseuri\\n/**\\n * Parses a URI\\n *\\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\\n *\\n * See:\\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\\n * - https://caniuse.com/url\\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\\n *\\n * History of the parse() method:\\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\\n *\\n * @author Steven Levithan (MIT license)\\n * @api private\\n */\\nconst re = /^(?:(?![^:@\\\\/?#]+:[^:@\\\\/]*@)(http|https|ws|wss):\\\\/\\\\/)?((?:(([^:@\\\\/?#]*)(?::([^:@\\\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\\\/?#]*)(?::(\\\\d*))?)(((\\\\/(?:[^?#](?![^?#\\\\/]*\\\\.[^?#\\\\/.]+(?:[?#]|$)))*\\\\/?)?([^?#\\\\/]*))(?:\\\\?([^#]*))?(?:#(.*))?)/;\\nconst parts = [\\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\\n];\\nfunction parse(str) {\\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\\n if (b != -1 && e != -1) {\\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\\n }\\n let m = re.exec(str || ''), uri = {}, i = 14;\\n while (i--) {\\n uri[parts[i]] = m[i] || '';\\n }\\n if (b != -1 && e != -1) {\\n uri.source = src;\\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\\n uri.ipv6uri = true;\\n }\\n uri.pathNames = pathNames(uri, uri['path']);\\n uri.queryKey = queryKey(uri, uri['query']);\\n return uri;\\n}\\nfunction pathNames(obj, path) {\\n const regx = /\\\\/{2,9}/g, names = path.replace(regx, \\\"/\\\").split(\\\"/\\\");\\n if (path.slice(0, 1) == '/' || path.length === 0) {\\n names.splice(0, 1);\\n }\\n if (path.slice(-1) == '/') {\\n names.splice(names.length - 1, 1);\\n }\\n return names;\\n}\\nfunction queryKey(uri, query) {\\n const data = {};\\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\\n if ($1) {\\n data[$1] = $2;\\n }\\n });\\n return data;\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-client/build/esm/contrib/parseuri.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/build/esm/contrib/yeast.js\":\n/*!******************************************************************!*\\\n !*** ./node_modules/engine.io-client/build/esm/contrib/yeast.js ***!\n \\******************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ decode: () => (/* binding */ decode),\\n/* harmony export */ encode: () => (/* binding */ encode),\\n/* harmony export */ yeast: () => (/* binding */ yeast)\\n/* harmony export */ });\\n// imported from https://github.com/unshiftio/yeast\\n\\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\\nlet seed = 0, i = 0, prev;\\n/**\\n * Return a string representing the specified number.\\n *\\n * @param {Number} num The number to convert.\\n * @returns {String} The string representation of the number.\\n * @api public\\n */\\nfunction encode(num) {\\n let encoded = '';\\n do {\\n encoded = alphabet[num % length] + encoded;\\n num = Math.floor(num / length);\\n } while (num > 0);\\n return encoded;\\n}\\n/**\\n * Return the integer value specified by the given string.\\n *\\n * @param {String} str The string to convert.\\n * @returns {Number} The integer value represented by the string.\\n * @api public\\n */\\nfunction decode(str) {\\n let decoded = 0;\\n for (i = 0; i < str.length; i++) {\\n decoded = decoded * length + map[str.charAt(i)];\\n }\\n return decoded;\\n}\\n/**\\n * Yeast: A tiny growing id generator.\\n *\\n * @returns {String} A unique id.\\n * @api public\\n */\\nfunction yeast() {\\n const now = encode(+new Date());\\n if (now !== prev)\\n return seed = 0, prev = now;\\n return now + '.' + encode(seed++);\\n}\\n//\\n// Map each character to its index.\\n//\\nfor (; i < length; i++)\\n map[alphabet[i]] = i;\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-client/build/esm/contrib/yeast.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/build/esm/globalThis.browser.js\":\n/*!***********************************************************************!*\\\n !*** ./node_modules/engine.io-client/build/esm/globalThis.browser.js ***!\n \\***********************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ globalThisShim: () => (/* binding */ globalThisShim)\\n/* harmony export */ });\\nconst globalThisShim = (() => {\\n if (typeof self !== \\\"undefined\\\") {\\n return self;\\n }\\n else if (typeof window !== \\\"undefined\\\") {\\n return window;\\n }\\n else {\\n return Function(\\\"return this\\\")();\\n }\\n})();\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-client/build/esm/globalThis.browser.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/build/esm/index.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/engine.io-client/build/esm/index.js ***!\n \\**********************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ Socket: () => (/* reexport safe */ _socket_js__WEBPACK_IMPORTED_MODULE_0__.Socket),\\n/* harmony export */ Transport: () => (/* reexport safe */ _transport_js__WEBPACK_IMPORTED_MODULE_1__.Transport),\\n/* harmony export */ installTimerFunctions: () => (/* reexport safe */ _util_js__WEBPACK_IMPORTED_MODULE_3__.installTimerFunctions),\\n/* harmony export */ nextTick: () => (/* reexport safe */ _transports_websocket_constructor_js__WEBPACK_IMPORTED_MODULE_5__.nextTick),\\n/* harmony export */ parse: () => (/* reexport safe */ _contrib_parseuri_js__WEBPACK_IMPORTED_MODULE_4__.parse),\\n/* harmony export */ protocol: () => (/* binding */ protocol),\\n/* harmony export */ transports: () => (/* reexport safe */ _transports_index_js__WEBPACK_IMPORTED_MODULE_2__.transports)\\n/* harmony export */ });\\n/* harmony import */ var _socket_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./socket.js */ \\\"./node_modules/engine.io-client/build/esm/socket.js\\\");\\n/* harmony import */ var _transport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transport.js */ \\\"./node_modules/engine.io-client/build/esm/transport.js\\\");\\n/* harmony import */ var _transports_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transports/index.js */ \\\"./node_modules/engine.io-client/build/esm/transports/index.js\\\");\\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util.js */ \\\"./node_modules/engine.io-client/build/esm/util.js\\\");\\n/* harmony import */ var _contrib_parseuri_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./contrib/parseuri.js */ \\\"./node_modules/engine.io-client/build/esm/contrib/parseuri.js\\\");\\n/* harmony import */ var _transports_websocket_constructor_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./transports/websocket-constructor.js */ \\\"./node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js\\\");\\n\\n\\nconst protocol = _socket_js__WEBPACK_IMPORTED_MODULE_0__.Socket.protocol;\\n\\n\\n\\n\\n\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-client/build/esm/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/build/esm/socket.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/engine.io-client/build/esm/socket.js ***!\n \\***********************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ Socket: () => (/* binding */ Socket)\\n/* harmony export */ });\\n/* harmony import */ var _transports_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transports/index.js */ \\\"./node_modules/engine.io-client/build/esm/transports/index.js\\\");\\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util.js */ \\\"./node_modules/engine.io-client/build/esm/util.js\\\");\\n/* harmony import */ var _contrib_parseqs_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./contrib/parseqs.js */ \\\"./node_modules/engine.io-client/build/esm/contrib/parseqs.js\\\");\\n/* harmony import */ var _contrib_parseuri_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./contrib/parseuri.js */ \\\"./node_modules/engine.io-client/build/esm/contrib/parseuri.js\\\");\\n/* harmony import */ var _socket_io_component_emitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @socket.io/component-emitter */ \\\"./node_modules/@socket.io/component-emitter/index.mjs\\\");\\n/* harmony import */ var engine_io_parser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! engine.io-parser */ \\\"./node_modules/engine.io-parser/build/esm/index.js\\\");\\n\\n\\n\\n\\n\\n\\nclass Socket extends _socket_io_component_emitter__WEBPACK_IMPORTED_MODULE_4__.Emitter {\\n /**\\n * Socket constructor.\\n *\\n * @param {String|Object} uri - uri or options\\n * @param {Object} opts - options\\n */\\n constructor(uri, opts = {}) {\\n super();\\n this.writeBuffer = [];\\n if (uri && \\\"object\\\" === typeof uri) {\\n opts = uri;\\n uri = null;\\n }\\n if (uri) {\\n uri = (0,_contrib_parseuri_js__WEBPACK_IMPORTED_MODULE_3__.parse)(uri);\\n opts.hostname = uri.host;\\n opts.secure = uri.protocol === \\\"https\\\" || uri.protocol === \\\"wss\\\";\\n opts.port = uri.port;\\n if (uri.query)\\n opts.query = uri.query;\\n }\\n else if (opts.host) {\\n opts.hostname = (0,_contrib_parseuri_js__WEBPACK_IMPORTED_MODULE_3__.parse)(opts.host).host;\\n }\\n (0,_util_js__WEBPACK_IMPORTED_MODULE_1__.installTimerFunctions)(this, opts);\\n this.secure =\\n null != opts.secure\\n ? opts.secure\\n : typeof location !== \\\"undefined\\\" && \\\"https:\\\" === location.protocol;\\n if (opts.hostname && !opts.port) {\\n // if no port is specified manually, use the protocol default\\n opts.port = this.secure ? \\\"443\\\" : \\\"80\\\";\\n }\\n this.hostname =\\n opts.hostname ||\\n (typeof location !== \\\"undefined\\\" ? location.hostname : \\\"localhost\\\");\\n this.port =\\n opts.port ||\\n (typeof location !== \\\"undefined\\\" && location.port\\n ? location.port\\n : this.secure\\n ? \\\"443\\\"\\n : \\\"80\\\");\\n this.transports = opts.transports || [\\\"polling\\\", \\\"websocket\\\"];\\n this.writeBuffer = [];\\n this.prevBufferLen = 0;\\n this.opts = Object.assign({\\n path: \\\"/engine.io\\\",\\n agent: false,\\n withCredentials: false,\\n upgrade: true,\\n timestampParam: \\\"t\\\",\\n rememberUpgrade: false,\\n addTrailingSlash: true,\\n rejectUnauthorized: true,\\n perMessageDeflate: {\\n threshold: 1024,\\n },\\n transportOptions: {},\\n closeOnBeforeunload: true,\\n }, opts);\\n this.opts.path =\\n this.opts.path.replace(/\\\\/$/, \\\"\\\") +\\n (this.opts.addTrailingSlash ? \\\"/\\\" : \\\"\\\");\\n if (typeof this.opts.query === \\\"string\\\") {\\n this.opts.query = (0,_contrib_parseqs_js__WEBPACK_IMPORTED_MODULE_2__.decode)(this.opts.query);\\n }\\n // set on handshake\\n this.id = null;\\n this.upgrades = null;\\n this.pingInterval = null;\\n this.pingTimeout = null;\\n // set on heartbeat\\n this.pingTimeoutTimer = null;\\n if (typeof addEventListener === \\\"function\\\") {\\n if (this.opts.closeOnBeforeunload) {\\n // Firefox closes the connection when the \\\"beforeunload\\\" event is emitted but not Chrome. This event listener\\n // ensures every browser behaves the same (no \\\"disconnect\\\" event at the Socket.IO level when the page is\\n // closed/reloaded)\\n this.beforeunloadEventListener = () => {\\n if (this.transport) {\\n // silently close the transport\\n this.transport.removeAllListeners();\\n this.transport.close();\\n }\\n };\\n addEventListener(\\\"beforeunload\\\", this.beforeunloadEventListener, false);\\n }\\n if (this.hostname !== \\\"localhost\\\") {\\n this.offlineEventListener = () => {\\n this.onClose(\\\"transport close\\\", {\\n description: \\\"network connection lost\\\",\\n });\\n };\\n addEventListener(\\\"offline\\\", this.offlineEventListener, false);\\n }\\n }\\n this.open();\\n }\\n /**\\n * Creates transport of the given type.\\n *\\n * @param {String} name - transport name\\n * @return {Transport}\\n * @private\\n */\\n createTransport(name) {\\n const query = Object.assign({}, this.opts.query);\\n // append engine.io protocol identifier\\n query.EIO = engine_io_parser__WEBPACK_IMPORTED_MODULE_5__.protocol;\\n // transport name\\n query.transport = name;\\n // session id if we already have one\\n if (this.id)\\n query.sid = this.id;\\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\\n query,\\n socket: this,\\n hostname: this.hostname,\\n secure: this.secure,\\n port: this.port,\\n });\\n return new _transports_index_js__WEBPACK_IMPORTED_MODULE_0__.transports[name](opts);\\n }\\n /**\\n * Initializes transport to use and starts probe.\\n *\\n * @private\\n */\\n open() {\\n let transport;\\n if (this.opts.rememberUpgrade &&\\n Socket.priorWebsocketSuccess &&\\n this.transports.indexOf(\\\"websocket\\\") !== -1) {\\n transport = \\\"websocket\\\";\\n }\\n else if (0 === this.transports.length) {\\n // Emit error on next tick so it can be listened to\\n this.setTimeoutFn(() => {\\n this.emitReserved(\\\"error\\\", \\\"No transports available\\\");\\n }, 0);\\n return;\\n }\\n else {\\n transport = this.transports[0];\\n }\\n this.readyState = \\\"opening\\\";\\n // Retry with the next transport if the transport is disabled (jsonp: false)\\n try {\\n transport = this.createTransport(transport);\\n }\\n catch (e) {\\n this.transports.shift();\\n this.open();\\n return;\\n }\\n transport.open();\\n this.setTransport(transport);\\n }\\n /**\\n * Sets the current transport. Disables the existing one (if any).\\n *\\n * @private\\n */\\n setTransport(transport) {\\n if (this.transport) {\\n this.transport.removeAllListeners();\\n }\\n // set up transport\\n this.transport = transport;\\n // set up transport listeners\\n transport\\n .on(\\\"drain\\\", this.onDrain.bind(this))\\n .on(\\\"packet\\\", this.onPacket.bind(this))\\n .on(\\\"error\\\", this.onError.bind(this))\\n .on(\\\"close\\\", (reason) => this.onClose(\\\"transport close\\\", reason));\\n }\\n /**\\n * Probes a transport.\\n *\\n * @param {String} name - transport name\\n * @private\\n */\\n probe(name) {\\n let transport = this.createTransport(name);\\n let failed = false;\\n Socket.priorWebsocketSuccess = false;\\n const onTransportOpen = () => {\\n if (failed)\\n return;\\n transport.send([{ type: \\\"ping\\\", data: \\\"probe\\\" }]);\\n transport.once(\\\"packet\\\", (msg) => {\\n if (failed)\\n return;\\n if (\\\"pong\\\" === msg.type && \\\"probe\\\" === msg.data) {\\n this.upgrading = true;\\n this.emitReserved(\\\"upgrading\\\", transport);\\n if (!transport)\\n return;\\n Socket.priorWebsocketSuccess = \\\"websocket\\\" === transport.name;\\n this.transport.pause(() => {\\n if (failed)\\n return;\\n if (\\\"closed\\\" === this.readyState)\\n return;\\n cleanup();\\n this.setTransport(transport);\\n transport.send([{ type: \\\"upgrade\\\" }]);\\n this.emitReserved(\\\"upgrade\\\", transport);\\n transport = null;\\n this.upgrading = false;\\n this.flush();\\n });\\n }\\n else {\\n const err = new Error(\\\"probe error\\\");\\n // @ts-ignore\\n err.transport = transport.name;\\n this.emitReserved(\\\"upgradeError\\\", err);\\n }\\n });\\n };\\n function freezeTransport() {\\n if (failed)\\n return;\\n // Any callback called by transport should be ignored since now\\n failed = true;\\n cleanup();\\n transport.close();\\n transport = null;\\n }\\n // Handle any error that happens while probing\\n const onerror = (err) => {\\n const error = new Error(\\\"probe error: \\\" + err);\\n // @ts-ignore\\n error.transport = transport.name;\\n freezeTransport();\\n this.emitReserved(\\\"upgradeError\\\", error);\\n };\\n function onTransportClose() {\\n onerror(\\\"transport closed\\\");\\n }\\n // When the socket is closed while we're probing\\n function onclose() {\\n onerror(\\\"socket closed\\\");\\n }\\n // When the socket is upgraded while we're probing\\n function onupgrade(to) {\\n if (transport && to.name !== transport.name) {\\n freezeTransport();\\n }\\n }\\n // Remove all listeners on the transport and on self\\n const cleanup = () => {\\n transport.removeListener(\\\"open\\\", onTransportOpen);\\n transport.removeListener(\\\"error\\\", onerror);\\n transport.removeListener(\\\"close\\\", onTransportClose);\\n this.off(\\\"close\\\", onclose);\\n this.off(\\\"upgrading\\\", onupgrade);\\n };\\n transport.once(\\\"open\\\", onTransportOpen);\\n transport.once(\\\"error\\\", onerror);\\n transport.once(\\\"close\\\", onTransportClose);\\n this.once(\\\"close\\\", onclose);\\n this.once(\\\"upgrading\\\", onupgrade);\\n transport.open();\\n }\\n /**\\n * Called when connection is deemed open.\\n *\\n * @private\\n */\\n onOpen() {\\n this.readyState = \\\"open\\\";\\n Socket.priorWebsocketSuccess = \\\"websocket\\\" === this.transport.name;\\n this.emitReserved(\\\"open\\\");\\n this.flush();\\n // we check for `readyState` in case an `open`\\n // listener already closed the socket\\n if (\\\"open\\\" === this.readyState && this.opts.upgrade) {\\n let i = 0;\\n const l = this.upgrades.length;\\n for (; i < l; i++) {\\n this.probe(this.upgrades[i]);\\n }\\n }\\n }\\n /**\\n * Handles a packet.\\n *\\n * @private\\n */\\n onPacket(packet) {\\n if (\\\"opening\\\" === this.readyState ||\\n \\\"open\\\" === this.readyState ||\\n \\\"closing\\\" === this.readyState) {\\n this.emitReserved(\\\"packet\\\", packet);\\n // Socket is live - any packet counts\\n this.emitReserved(\\\"heartbeat\\\");\\n switch (packet.type) {\\n case \\\"open\\\":\\n this.onHandshake(JSON.parse(packet.data));\\n break;\\n case \\\"ping\\\":\\n this.resetPingTimeout();\\n this.sendPacket(\\\"pong\\\");\\n this.emitReserved(\\\"ping\\\");\\n this.emitReserved(\\\"pong\\\");\\n break;\\n case \\\"error\\\":\\n const err = new Error(\\\"server error\\\");\\n // @ts-ignore\\n err.code = packet.data;\\n this.onError(err);\\n break;\\n case \\\"message\\\":\\n this.emitReserved(\\\"data\\\", packet.data);\\n this.emitReserved(\\\"message\\\", packet.data);\\n break;\\n }\\n }\\n else {\\n }\\n }\\n /**\\n * Called upon handshake completion.\\n *\\n * @param {Object} data - handshake obj\\n * @private\\n */\\n onHandshake(data) {\\n this.emitReserved(\\\"handshake\\\", data);\\n this.id = data.sid;\\n this.transport.query.sid = data.sid;\\n this.upgrades = this.filterUpgrades(data.upgrades);\\n this.pingInterval = data.pingInterval;\\n this.pingTimeout = data.pingTimeout;\\n this.maxPayload = data.maxPayload;\\n this.onOpen();\\n // In case open handler closes socket\\n if (\\\"closed\\\" === this.readyState)\\n return;\\n this.resetPingTimeout();\\n }\\n /**\\n * Sets and resets ping timeout timer based on server pings.\\n *\\n * @private\\n */\\n resetPingTimeout() {\\n this.clearTimeoutFn(this.pingTimeoutTimer);\\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\\n this.onClose(\\\"ping timeout\\\");\\n }, this.pingInterval + this.pingTimeout);\\n if (this.opts.autoUnref) {\\n this.pingTimeoutTimer.unref();\\n }\\n }\\n /**\\n * Called on `drain` event\\n *\\n * @private\\n */\\n onDrain() {\\n this.writeBuffer.splice(0, this.prevBufferLen);\\n // setting prevBufferLen = 0 is very important\\n // for example, when upgrading, upgrade packet is sent over,\\n // and a nonzero prevBufferLen could cause problems on `drain`\\n this.prevBufferLen = 0;\\n if (0 === this.writeBuffer.length) {\\n this.emitReserved(\\\"drain\\\");\\n }\\n else {\\n this.flush();\\n }\\n }\\n /**\\n * Flush write buffers.\\n *\\n * @private\\n */\\n flush() {\\n if (\\\"closed\\\" !== this.readyState &&\\n this.transport.writable &&\\n !this.upgrading &&\\n this.writeBuffer.length) {\\n const packets = this.getWritablePackets();\\n this.transport.send(packets);\\n // keep track of current length of writeBuffer\\n // splice writeBuffer and callbackBuffer on `drain`\\n this.prevBufferLen = packets.length;\\n this.emitReserved(\\\"flush\\\");\\n }\\n }\\n /**\\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\\n * long-polling)\\n *\\n * @private\\n */\\n getWritablePackets() {\\n const shouldCheckPayloadSize = this.maxPayload &&\\n this.transport.name === \\\"polling\\\" &&\\n this.writeBuffer.length > 1;\\n if (!shouldCheckPayloadSize) {\\n return this.writeBuffer;\\n }\\n let payloadSize = 1; // first packet type\\n for (let i = 0; i < this.writeBuffer.length; i++) {\\n const data = this.writeBuffer[i].data;\\n if (data) {\\n payloadSize += (0,_util_js__WEBPACK_IMPORTED_MODULE_1__.byteLength)(data);\\n }\\n if (i > 0 && payloadSize > this.maxPayload) {\\n return this.writeBuffer.slice(0, i);\\n }\\n payloadSize += 2; // separator + packet type\\n }\\n return this.writeBuffer;\\n }\\n /**\\n * Sends a message.\\n *\\n * @param {String} msg - message.\\n * @param {Object} options.\\n * @param {Function} callback function.\\n * @return {Socket} for chaining.\\n */\\n write(msg, options, fn) {\\n this.sendPacket(\\\"message\\\", msg, options, fn);\\n return this;\\n }\\n send(msg, options, fn) {\\n this.sendPacket(\\\"message\\\", msg, options, fn);\\n return this;\\n }\\n /**\\n * Sends a packet.\\n *\\n * @param {String} type: packet type.\\n * @param {String} data.\\n * @param {Object} options.\\n * @param {Function} fn - callback function.\\n * @private\\n */\\n sendPacket(type, data, options, fn) {\\n if (\\\"function\\\" === typeof data) {\\n fn = data;\\n data = undefined;\\n }\\n if (\\\"function\\\" === typeof options) {\\n fn = options;\\n options = null;\\n }\\n if (\\\"closing\\\" === this.readyState || \\\"closed\\\" === this.readyState) {\\n return;\\n }\\n options = options || {};\\n options.compress = false !== options.compress;\\n const packet = {\\n type: type,\\n data: data,\\n options: options,\\n };\\n this.emitReserved(\\\"packetCreate\\\", packet);\\n this.writeBuffer.push(packet);\\n if (fn)\\n this.once(\\\"flush\\\", fn);\\n this.flush();\\n }\\n /**\\n * Closes the connection.\\n */\\n close() {\\n const close = () => {\\n this.onClose(\\\"forced close\\\");\\n this.transport.close();\\n };\\n const cleanupAndClose = () => {\\n this.off(\\\"upgrade\\\", cleanupAndClose);\\n this.off(\\\"upgradeError\\\", cleanupAndClose);\\n close();\\n };\\n const waitForUpgrade = () => {\\n // wait for upgrade to finish since we can't send packets while pausing a transport\\n this.once(\\\"upgrade\\\", cleanupAndClose);\\n this.once(\\\"upgradeError\\\", cleanupAndClose);\\n };\\n if (\\\"opening\\\" === this.readyState || \\\"open\\\" === this.readyState) {\\n this.readyState = \\\"closing\\\";\\n if (this.writeBuffer.length) {\\n this.once(\\\"drain\\\", () => {\\n if (this.upgrading) {\\n waitForUpgrade();\\n }\\n else {\\n close();\\n }\\n });\\n }\\n else if (this.upgrading) {\\n waitForUpgrade();\\n }\\n else {\\n close();\\n }\\n }\\n return this;\\n }\\n /**\\n * Called upon transport error\\n *\\n * @private\\n */\\n onError(err) {\\n Socket.priorWebsocketSuccess = false;\\n this.emitReserved(\\\"error\\\", err);\\n this.onClose(\\\"transport error\\\", err);\\n }\\n /**\\n * Called upon transport close.\\n *\\n * @private\\n */\\n onClose(reason, description) {\\n if (\\\"opening\\\" === this.readyState ||\\n \\\"open\\\" === this.readyState ||\\n \\\"closing\\\" === this.readyState) {\\n // clear timers\\n this.clearTimeoutFn(this.pingTimeoutTimer);\\n // stop event from firing again for transport\\n this.transport.removeAllListeners(\\\"close\\\");\\n // ensure transport won't stay open\\n this.transport.close();\\n // ignore further transport communication\\n this.transport.removeAllListeners();\\n if (typeof removeEventListener === \\\"function\\\") {\\n removeEventListener(\\\"beforeunload\\\", this.beforeunloadEventListener, false);\\n removeEventListener(\\\"offline\\\", this.offlineEventListener, false);\\n }\\n // set ready state\\n this.readyState = \\\"closed\\\";\\n // clear session id\\n this.id = null;\\n // emit close event\\n this.emitReserved(\\\"close\\\", reason, description);\\n // clean buffers after, so users can still\\n // grab the buffers on `close` event\\n this.writeBuffer = [];\\n this.prevBufferLen = 0;\\n }\\n }\\n /**\\n * Filters upgrades, returning only those matching client transports.\\n *\\n * @param {Array} upgrades - server upgrades\\n * @private\\n */\\n filterUpgrades(upgrades) {\\n const filteredUpgrades = [];\\n let i = 0;\\n const j = upgrades.length;\\n for (; i < j; i++) {\\n if (~this.transports.indexOf(upgrades[i]))\\n filteredUpgrades.push(upgrades[i]);\\n }\\n return filteredUpgrades;\\n }\\n}\\nSocket.protocol = engine_io_parser__WEBPACK_IMPORTED_MODULE_5__.protocol;\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-client/build/esm/socket.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/build/esm/transport.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/engine.io-client/build/esm/transport.js ***!\n \\**************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ Transport: () => (/* binding */ Transport)\\n/* harmony export */ });\\n/* harmony import */ var engine_io_parser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! engine.io-parser */ \\\"./node_modules/engine.io-parser/build/esm/index.js\\\");\\n/* harmony import */ var _socket_io_component_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @socket.io/component-emitter */ \\\"./node_modules/@socket.io/component-emitter/index.mjs\\\");\\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util.js */ \\\"./node_modules/engine.io-client/build/esm/util.js\\\");\\n\\n\\n\\nclass TransportError extends Error {\\n constructor(reason, description, context) {\\n super(reason);\\n this.description = description;\\n this.context = context;\\n this.type = \\\"TransportError\\\";\\n }\\n}\\nclass Transport extends _socket_io_component_emitter__WEBPACK_IMPORTED_MODULE_1__.Emitter {\\n /**\\n * Transport abstract constructor.\\n *\\n * @param {Object} opts - options\\n * @protected\\n */\\n constructor(opts) {\\n super();\\n this.writable = false;\\n (0,_util_js__WEBPACK_IMPORTED_MODULE_2__.installTimerFunctions)(this, opts);\\n this.opts = opts;\\n this.query = opts.query;\\n this.socket = opts.socket;\\n }\\n /**\\n * Emits an error.\\n *\\n * @param {String} reason\\n * @param description\\n * @param context - the error context\\n * @return {Transport} for chaining\\n * @protected\\n */\\n onError(reason, description, context) {\\n super.emitReserved(\\\"error\\\", new TransportError(reason, description, context));\\n return this;\\n }\\n /**\\n * Opens the transport.\\n */\\n open() {\\n this.readyState = \\\"opening\\\";\\n this.doOpen();\\n return this;\\n }\\n /**\\n * Closes the transport.\\n */\\n close() {\\n if (this.readyState === \\\"opening\\\" || this.readyState === \\\"open\\\") {\\n this.doClose();\\n this.onClose();\\n }\\n return this;\\n }\\n /**\\n * Sends multiple packets.\\n *\\n * @param {Array} packets\\n */\\n send(packets) {\\n if (this.readyState === \\\"open\\\") {\\n this.write(packets);\\n }\\n else {\\n // this might happen if the transport was silently closed in the beforeunload event handler\\n }\\n }\\n /**\\n * Called upon open\\n *\\n * @protected\\n */\\n onOpen() {\\n this.readyState = \\\"open\\\";\\n this.writable = true;\\n super.emitReserved(\\\"open\\\");\\n }\\n /**\\n * Called with data.\\n *\\n * @param {String} data\\n * @protected\\n */\\n onData(data) {\\n const packet = (0,engine_io_parser__WEBPACK_IMPORTED_MODULE_0__.decodePacket)(data, this.socket.binaryType);\\n this.onPacket(packet);\\n }\\n /**\\n * Called with a decoded packet.\\n *\\n * @protected\\n */\\n onPacket(packet) {\\n super.emitReserved(\\\"packet\\\", packet);\\n }\\n /**\\n * Called upon close.\\n *\\n * @protected\\n */\\n onClose(details) {\\n this.readyState = \\\"closed\\\";\\n super.emitReserved(\\\"close\\\", details);\\n }\\n /**\\n * Pauses the transport, in order not to lose packets during an upgrade.\\n *\\n * @param onPause\\n */\\n pause(onPause) { }\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-client/build/esm/transport.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/build/esm/transports/index.js\":\n/*!*********************************************************************!*\\\n !*** ./node_modules/engine.io-client/build/esm/transports/index.js ***!\n \\*********************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ transports: () => (/* binding */ transports)\\n/* harmony export */ });\\n/* harmony import */ var _polling_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./polling.js */ \\\"./node_modules/engine.io-client/build/esm/transports/polling.js\\\");\\n/* harmony import */ var _websocket_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./websocket.js */ \\\"./node_modules/engine.io-client/build/esm/transports/websocket.js\\\");\\n\\n\\nconst transports = {\\n websocket: _websocket_js__WEBPACK_IMPORTED_MODULE_1__.WS,\\n polling: _polling_js__WEBPACK_IMPORTED_MODULE_0__.Polling,\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-client/build/esm/transports/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/build/esm/transports/polling.js\":\n/*!***********************************************************************!*\\\n !*** ./node_modules/engine.io-client/build/esm/transports/polling.js ***!\n \\***********************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ Polling: () => (/* binding */ Polling),\\n/* harmony export */ Request: () => (/* binding */ Request)\\n/* harmony export */ });\\n/* harmony import */ var _transport_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../transport.js */ \\\"./node_modules/engine.io-client/build/esm/transport.js\\\");\\n/* harmony import */ var _contrib_yeast_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../contrib/yeast.js */ \\\"./node_modules/engine.io-client/build/esm/contrib/yeast.js\\\");\\n/* harmony import */ var _contrib_parseqs_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../contrib/parseqs.js */ \\\"./node_modules/engine.io-client/build/esm/contrib/parseqs.js\\\");\\n/* harmony import */ var engine_io_parser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! engine.io-parser */ \\\"./node_modules/engine.io-parser/build/esm/index.js\\\");\\n/* harmony import */ var _xmlhttprequest_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./xmlhttprequest.js */ \\\"./node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js\\\");\\n/* harmony import */ var _socket_io_component_emitter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @socket.io/component-emitter */ \\\"./node_modules/@socket.io/component-emitter/index.mjs\\\");\\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util.js */ \\\"./node_modules/engine.io-client/build/esm/util.js\\\");\\n/* harmony import */ var _globalThis_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../globalThis.js */ \\\"./node_modules/engine.io-client/build/esm/globalThis.browser.js\\\");\\n\\n\\n\\n\\n\\n\\n\\n\\nfunction empty() { }\\nconst hasXHR2 = (function () {\\n const xhr = new _xmlhttprequest_js__WEBPACK_IMPORTED_MODULE_4__.XHR({\\n xdomain: false,\\n });\\n return null != xhr.responseType;\\n})();\\nclass Polling extends _transport_js__WEBPACK_IMPORTED_MODULE_0__.Transport {\\n /**\\n * XHR Polling constructor.\\n *\\n * @param {Object} opts\\n * @package\\n */\\n constructor(opts) {\\n super(opts);\\n this.polling = false;\\n if (typeof location !== \\\"undefined\\\") {\\n const isSSL = \\\"https:\\\" === location.protocol;\\n let port = location.port;\\n // some user agents have empty `location.port`\\n if (!port) {\\n port = isSSL ? \\\"443\\\" : \\\"80\\\";\\n }\\n this.xd =\\n (typeof location !== \\\"undefined\\\" &&\\n opts.hostname !== location.hostname) ||\\n port !== opts.port;\\n this.xs = opts.secure !== isSSL;\\n }\\n /**\\n * XHR supports binary\\n */\\n const forceBase64 = opts && opts.forceBase64;\\n this.supportsBinary = hasXHR2 && !forceBase64;\\n }\\n get name() {\\n return \\\"polling\\\";\\n }\\n /**\\n * Opens the socket (triggers polling). We write a PING message to determine\\n * when the transport is open.\\n *\\n * @protected\\n */\\n doOpen() {\\n this.poll();\\n }\\n /**\\n * Pauses polling.\\n *\\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\\n * @package\\n */\\n pause(onPause) {\\n this.readyState = \\\"pausing\\\";\\n const pause = () => {\\n this.readyState = \\\"paused\\\";\\n onPause();\\n };\\n if (this.polling || !this.writable) {\\n let total = 0;\\n if (this.polling) {\\n total++;\\n this.once(\\\"pollComplete\\\", function () {\\n --total || pause();\\n });\\n }\\n if (!this.writable) {\\n total++;\\n this.once(\\\"drain\\\", function () {\\n --total || pause();\\n });\\n }\\n }\\n else {\\n pause();\\n }\\n }\\n /**\\n * Starts polling cycle.\\n *\\n * @private\\n */\\n poll() {\\n this.polling = true;\\n this.doPoll();\\n this.emitReserved(\\\"poll\\\");\\n }\\n /**\\n * Overloads onData to detect payloads.\\n *\\n * @protected\\n */\\n onData(data) {\\n const callback = (packet) => {\\n // if its the first message we consider the transport open\\n if (\\\"opening\\\" === this.readyState && packet.type === \\\"open\\\") {\\n this.onOpen();\\n }\\n // if its a close packet, we close the ongoing requests\\n if (\\\"close\\\" === packet.type) {\\n this.onClose({ description: \\\"transport closed by the server\\\" });\\n return false;\\n }\\n // otherwise bypass onData and handle the message\\n this.onPacket(packet);\\n };\\n // decode payload\\n (0,engine_io_parser__WEBPACK_IMPORTED_MODULE_3__.decodePayload)(data, this.socket.binaryType).forEach(callback);\\n // if an event did not trigger closing\\n if (\\\"closed\\\" !== this.readyState) {\\n // if we got data we're not polling\\n this.polling = false;\\n this.emitReserved(\\\"pollComplete\\\");\\n if (\\\"open\\\" === this.readyState) {\\n this.poll();\\n }\\n else {\\n }\\n }\\n }\\n /**\\n * For polling, send a close packet.\\n *\\n * @protected\\n */\\n doClose() {\\n const close = () => {\\n this.write([{ type: \\\"close\\\" }]);\\n };\\n if (\\\"open\\\" === this.readyState) {\\n close();\\n }\\n else {\\n // in case we're trying to close while\\n // handshaking is in progress (GH-164)\\n this.once(\\\"open\\\", close);\\n }\\n }\\n /**\\n * Writes a packets payload.\\n *\\n * @param {Array} packets - data packets\\n * @protected\\n */\\n write(packets) {\\n this.writable = false;\\n (0,engine_io_parser__WEBPACK_IMPORTED_MODULE_3__.encodePayload)(packets, (data) => {\\n this.doWrite(data, () => {\\n this.writable = true;\\n this.emitReserved(\\\"drain\\\");\\n });\\n });\\n }\\n /**\\n * Generates uri for connection.\\n *\\n * @private\\n */\\n uri() {\\n let query = this.query || {};\\n const schema = this.opts.secure ? \\\"https\\\" : \\\"http\\\";\\n let port = \\\"\\\";\\n // cache busting is forced\\n if (false !== this.opts.timestampRequests) {\\n query[this.opts.timestampParam] = (0,_contrib_yeast_js__WEBPACK_IMPORTED_MODULE_1__.yeast)();\\n }\\n if (!this.supportsBinary && !query.sid) {\\n query.b64 = 1;\\n }\\n // avoid port if default for schema\\n if (this.opts.port &&\\n ((\\\"https\\\" === schema && Number(this.opts.port) !== 443) ||\\n (\\\"http\\\" === schema && Number(this.opts.port) !== 80))) {\\n port = \\\":\\\" + this.opts.port;\\n }\\n const encodedQuery = (0,_contrib_parseqs_js__WEBPACK_IMPORTED_MODULE_2__.encode)(query);\\n const ipv6 = this.opts.hostname.indexOf(\\\":\\\") !== -1;\\n return (schema +\\n \\\"://\\\" +\\n (ipv6 ? \\\"[\\\" + this.opts.hostname + \\\"]\\\" : this.opts.hostname) +\\n port +\\n this.opts.path +\\n (encodedQuery.length ? \\\"?\\\" + encodedQuery : \\\"\\\"));\\n }\\n /**\\n * Creates a request.\\n *\\n * @param {String} method\\n * @private\\n */\\n request(opts = {}) {\\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\\n return new Request(this.uri(), opts);\\n }\\n /**\\n * Sends data.\\n *\\n * @param {String} data to send.\\n * @param {Function} called upon flush.\\n * @private\\n */\\n doWrite(data, fn) {\\n const req = this.request({\\n method: \\\"POST\\\",\\n data: data,\\n });\\n req.on(\\\"success\\\", fn);\\n req.on(\\\"error\\\", (xhrStatus, context) => {\\n this.onError(\\\"xhr post error\\\", xhrStatus, context);\\n });\\n }\\n /**\\n * Starts a poll cycle.\\n *\\n * @private\\n */\\n doPoll() {\\n const req = this.request();\\n req.on(\\\"data\\\", this.onData.bind(this));\\n req.on(\\\"error\\\", (xhrStatus, context) => {\\n this.onError(\\\"xhr poll error\\\", xhrStatus, context);\\n });\\n this.pollXhr = req;\\n }\\n}\\nclass Request extends _socket_io_component_emitter__WEBPACK_IMPORTED_MODULE_5__.Emitter {\\n /**\\n * Request constructor\\n *\\n * @param {Object} options\\n * @package\\n */\\n constructor(uri, opts) {\\n super();\\n (0,_util_js__WEBPACK_IMPORTED_MODULE_6__.installTimerFunctions)(this, opts);\\n this.opts = opts;\\n this.method = opts.method || \\\"GET\\\";\\n this.uri = uri;\\n this.async = false !== opts.async;\\n this.data = undefined !== opts.data ? opts.data : null;\\n this.create();\\n }\\n /**\\n * Creates the XHR object and sends the request.\\n *\\n * @private\\n */\\n create() {\\n const opts = (0,_util_js__WEBPACK_IMPORTED_MODULE_6__.pick)(this.opts, \\\"agent\\\", \\\"pfx\\\", \\\"key\\\", \\\"passphrase\\\", \\\"cert\\\", \\\"ca\\\", \\\"ciphers\\\", \\\"rejectUnauthorized\\\", \\\"autoUnref\\\");\\n opts.xdomain = !!this.opts.xd;\\n opts.xscheme = !!this.opts.xs;\\n const xhr = (this.xhr = new _xmlhttprequest_js__WEBPACK_IMPORTED_MODULE_4__.XHR(opts));\\n try {\\n xhr.open(this.method, this.uri, this.async);\\n try {\\n if (this.opts.extraHeaders) {\\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\\n for (let i in this.opts.extraHeaders) {\\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\\n }\\n }\\n }\\n }\\n catch (e) { }\\n if (\\\"POST\\\" === this.method) {\\n try {\\n xhr.setRequestHeader(\\\"Content-type\\\", \\\"text/plain;charset=UTF-8\\\");\\n }\\n catch (e) { }\\n }\\n try {\\n xhr.setRequestHeader(\\\"Accept\\\", \\\"*/*\\\");\\n }\\n catch (e) { }\\n // ie6 check\\n if (\\\"withCredentials\\\" in xhr) {\\n xhr.withCredentials = this.opts.withCredentials;\\n }\\n if (this.opts.requestTimeout) {\\n xhr.timeout = this.opts.requestTimeout;\\n }\\n xhr.onreadystatechange = () => {\\n if (4 !== xhr.readyState)\\n return;\\n if (200 === xhr.status || 1223 === xhr.status) {\\n this.onLoad();\\n }\\n else {\\n // make sure the `error` event handler that's user-set\\n // does not throw in the same tick and gets caught here\\n this.setTimeoutFn(() => {\\n this.onError(typeof xhr.status === \\\"number\\\" ? xhr.status : 0);\\n }, 0);\\n }\\n };\\n xhr.send(this.data);\\n }\\n catch (e) {\\n // Need to defer since .create() is called directly from the constructor\\n // and thus the 'error' event can only be only bound *after* this exception\\n // occurs. Therefore, also, we cannot throw here at all.\\n this.setTimeoutFn(() => {\\n this.onError(e);\\n }, 0);\\n return;\\n }\\n if (typeof document !== \\\"undefined\\\") {\\n this.index = Request.requestsCount++;\\n Request.requests[this.index] = this;\\n }\\n }\\n /**\\n * Called upon error.\\n *\\n * @private\\n */\\n onError(err) {\\n this.emitReserved(\\\"error\\\", err, this.xhr);\\n this.cleanup(true);\\n }\\n /**\\n * Cleans up house.\\n *\\n * @private\\n */\\n cleanup(fromError) {\\n if (\\\"undefined\\\" === typeof this.xhr || null === this.xhr) {\\n return;\\n }\\n this.xhr.onreadystatechange = empty;\\n if (fromError) {\\n try {\\n this.xhr.abort();\\n }\\n catch (e) { }\\n }\\n if (typeof document !== \\\"undefined\\\") {\\n delete Request.requests[this.index];\\n }\\n this.xhr = null;\\n }\\n /**\\n * Called upon load.\\n *\\n * @private\\n */\\n onLoad() {\\n const data = this.xhr.responseText;\\n if (data !== null) {\\n this.emitReserved(\\\"data\\\", data);\\n this.emitReserved(\\\"success\\\");\\n this.cleanup();\\n }\\n }\\n /**\\n * Aborts the request.\\n *\\n * @package\\n */\\n abort() {\\n this.cleanup();\\n }\\n}\\nRequest.requestsCount = 0;\\nRequest.requests = {};\\n/**\\n * Aborts pending requests when unloading the window. This is needed to prevent\\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\\n * emitted.\\n */\\nif (typeof document !== \\\"undefined\\\") {\\n // @ts-ignore\\n if (typeof attachEvent === \\\"function\\\") {\\n // @ts-ignore\\n attachEvent(\\\"onunload\\\", unloadHandler);\\n }\\n else if (typeof addEventListener === \\\"function\\\") {\\n const terminationEvent = \\\"onpagehide\\\" in _globalThis_js__WEBPACK_IMPORTED_MODULE_7__.globalThisShim ? \\\"pagehide\\\" : \\\"unload\\\";\\n addEventListener(terminationEvent, unloadHandler, false);\\n }\\n}\\nfunction unloadHandler() {\\n for (let i in Request.requests) {\\n if (Request.requests.hasOwnProperty(i)) {\\n Request.requests[i].abort();\\n }\\n }\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-client/build/esm/transports/polling.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js\":\n/*!*********************************************************************************************!*\\\n !*** ./node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js ***!\n \\*********************************************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ WebSocket: () => (/* binding */ WebSocket),\\n/* harmony export */ defaultBinaryType: () => (/* binding */ defaultBinaryType),\\n/* harmony export */ nextTick: () => (/* binding */ nextTick),\\n/* harmony export */ usingBrowserWebSocket: () => (/* binding */ usingBrowserWebSocket)\\n/* harmony export */ });\\n/* harmony import */ var _globalThis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../globalThis.js */ \\\"./node_modules/engine.io-client/build/esm/globalThis.browser.js\\\");\\n\\nconst nextTick = (() => {\\n const isPromiseAvailable = typeof Promise === \\\"function\\\" && typeof Promise.resolve === \\\"function\\\";\\n if (isPromiseAvailable) {\\n return (cb) => Promise.resolve().then(cb);\\n }\\n else {\\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\\n }\\n})();\\nconst WebSocket = _globalThis_js__WEBPACK_IMPORTED_MODULE_0__.globalThisShim.WebSocket || _globalThis_js__WEBPACK_IMPORTED_MODULE_0__.globalThisShim.MozWebSocket;\\nconst usingBrowserWebSocket = true;\\nconst defaultBinaryType = \\\"arraybuffer\\\";\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/build/esm/transports/websocket.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/engine.io-client/build/esm/transports/websocket.js ***!\n \\*************************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ WS: () => (/* binding */ WS)\\n/* harmony export */ });\\n/* harmony import */ var _transport_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../transport.js */ \\\"./node_modules/engine.io-client/build/esm/transport.js\\\");\\n/* harmony import */ var _contrib_parseqs_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../contrib/parseqs.js */ \\\"./node_modules/engine.io-client/build/esm/contrib/parseqs.js\\\");\\n/* harmony import */ var _contrib_yeast_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../contrib/yeast.js */ \\\"./node_modules/engine.io-client/build/esm/contrib/yeast.js\\\");\\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util.js */ \\\"./node_modules/engine.io-client/build/esm/util.js\\\");\\n/* harmony import */ var _websocket_constructor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./websocket-constructor.js */ \\\"./node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js\\\");\\n/* harmony import */ var engine_io_parser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! engine.io-parser */ \\\"./node_modules/engine.io-parser/build/esm/index.js\\\");\\n/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ \\\"./node_modules/buffer/index.js\\\")[\\\"Buffer\\\"];\\n\\n\\n\\n\\n\\n\\n// detect ReactNative environment\\nconst isReactNative = typeof navigator !== \\\"undefined\\\" &&\\n typeof navigator.product === \\\"string\\\" &&\\n navigator.product.toLowerCase() === \\\"reactnative\\\";\\nclass WS extends _transport_js__WEBPACK_IMPORTED_MODULE_0__.Transport {\\n /**\\n * WebSocket transport constructor.\\n *\\n * @param {Object} opts - connection options\\n * @protected\\n */\\n constructor(opts) {\\n super(opts);\\n this.supportsBinary = !opts.forceBase64;\\n }\\n get name() {\\n return \\\"websocket\\\";\\n }\\n doOpen() {\\n if (!this.check()) {\\n // let probe timeout\\n return;\\n }\\n const uri = this.uri();\\n const protocols = this.opts.protocols;\\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\\n const opts = isReactNative\\n ? {}\\n : (0,_util_js__WEBPACK_IMPORTED_MODULE_3__.pick)(this.opts, \\\"agent\\\", \\\"perMessageDeflate\\\", \\\"pfx\\\", \\\"key\\\", \\\"passphrase\\\", \\\"cert\\\", \\\"ca\\\", \\\"ciphers\\\", \\\"rejectUnauthorized\\\", \\\"localAddress\\\", \\\"protocolVersion\\\", \\\"origin\\\", \\\"maxPayload\\\", \\\"family\\\", \\\"checkServerIdentity\\\");\\n if (this.opts.extraHeaders) {\\n opts.headers = this.opts.extraHeaders;\\n }\\n try {\\n this.ws =\\n _websocket_constructor_js__WEBPACK_IMPORTED_MODULE_4__.usingBrowserWebSocket && !isReactNative\\n ? protocols\\n ? new _websocket_constructor_js__WEBPACK_IMPORTED_MODULE_4__.WebSocket(uri, protocols)\\n : new _websocket_constructor_js__WEBPACK_IMPORTED_MODULE_4__.WebSocket(uri)\\n : new _websocket_constructor_js__WEBPACK_IMPORTED_MODULE_4__.WebSocket(uri, protocols, opts);\\n }\\n catch (err) {\\n return this.emitReserved(\\\"error\\\", err);\\n }\\n this.ws.binaryType = this.socket.binaryType || _websocket_constructor_js__WEBPACK_IMPORTED_MODULE_4__.defaultBinaryType;\\n this.addEventListeners();\\n }\\n /**\\n * Adds event listeners to the socket\\n *\\n * @private\\n */\\n addEventListeners() {\\n this.ws.onopen = () => {\\n if (this.opts.autoUnref) {\\n this.ws._socket.unref();\\n }\\n this.onOpen();\\n };\\n this.ws.onclose = (closeEvent) => this.onClose({\\n description: \\\"websocket connection closed\\\",\\n context: closeEvent,\\n });\\n this.ws.onmessage = (ev) => this.onData(ev.data);\\n this.ws.onerror = (e) => this.onError(\\\"websocket error\\\", e);\\n }\\n write(packets) {\\n this.writable = false;\\n // encodePacket efficient as it uses WS framing\\n // no need for encodePayload\\n for (let i = 0; i < packets.length; i++) {\\n const packet = packets[i];\\n const lastPacket = i === packets.length - 1;\\n (0,engine_io_parser__WEBPACK_IMPORTED_MODULE_5__.encodePacket)(packet, this.supportsBinary, (data) => {\\n // always create a new object (GH-437)\\n const opts = {};\\n if (!_websocket_constructor_js__WEBPACK_IMPORTED_MODULE_4__.usingBrowserWebSocket) {\\n if (packet.options) {\\n opts.compress = packet.options.compress;\\n }\\n if (this.opts.perMessageDeflate) {\\n const len = \\n // @ts-ignore\\n \\\"string\\\" === typeof data ? Buffer.byteLength(data) : data.length;\\n if (len < this.opts.perMessageDeflate.threshold) {\\n opts.compress = false;\\n }\\n }\\n }\\n // Sometimes the websocket has already been closed but the browser didn't\\n // have a chance of informing us about it yet, in that case send will\\n // throw an error\\n try {\\n if (_websocket_constructor_js__WEBPACK_IMPORTED_MODULE_4__.usingBrowserWebSocket) {\\n // TypeError is thrown when passing the second argument on Safari\\n this.ws.send(data);\\n }\\n else {\\n this.ws.send(data, opts);\\n }\\n }\\n catch (e) {\\n }\\n if (lastPacket) {\\n // fake drain\\n // defer to next tick to allow Socket to clear writeBuffer\\n (0,_websocket_constructor_js__WEBPACK_IMPORTED_MODULE_4__.nextTick)(() => {\\n this.writable = true;\\n this.emitReserved(\\\"drain\\\");\\n }, this.setTimeoutFn);\\n }\\n });\\n }\\n }\\n doClose() {\\n if (typeof this.ws !== \\\"undefined\\\") {\\n this.ws.close();\\n this.ws = null;\\n }\\n }\\n /**\\n * Generates uri for connection.\\n *\\n * @private\\n */\\n uri() {\\n let query = this.query || {};\\n const schema = this.opts.secure ? \\\"wss\\\" : \\\"ws\\\";\\n let port = \\\"\\\";\\n // avoid port if default for schema\\n if (this.opts.port &&\\n ((\\\"wss\\\" === schema && Number(this.opts.port) !== 443) ||\\n (\\\"ws\\\" === schema && Number(this.opts.port) !== 80))) {\\n port = \\\":\\\" + this.opts.port;\\n }\\n // append timestamp to URI\\n if (this.opts.timestampRequests) {\\n query[this.opts.timestampParam] = (0,_contrib_yeast_js__WEBPACK_IMPORTED_MODULE_2__.yeast)();\\n }\\n // communicate binary support capabilities\\n if (!this.supportsBinary) {\\n query.b64 = 1;\\n }\\n const encodedQuery = (0,_contrib_parseqs_js__WEBPACK_IMPORTED_MODULE_1__.encode)(query);\\n const ipv6 = this.opts.hostname.indexOf(\\\":\\\") !== -1;\\n return (schema +\\n \\\"://\\\" +\\n (ipv6 ? \\\"[\\\" + this.opts.hostname + \\\"]\\\" : this.opts.hostname) +\\n port +\\n this.opts.path +\\n (encodedQuery.length ? \\\"?\\\" + encodedQuery : \\\"\\\"));\\n }\\n /**\\n * Feature detection for WebSocket.\\n *\\n * @return {Boolean} whether this transport is available.\\n * @private\\n */\\n check() {\\n return !!_websocket_constructor_js__WEBPACK_IMPORTED_MODULE_4__.WebSocket;\\n }\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-client/build/esm/transports/websocket.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js\":\n/*!**************************************************************************************!*\\\n !*** ./node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js ***!\n \\**************************************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ XHR: () => (/* binding */ XHR)\\n/* harmony export */ });\\n/* harmony import */ var _contrib_has_cors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../contrib/has-cors.js */ \\\"./node_modules/engine.io-client/build/esm/contrib/has-cors.js\\\");\\n/* harmony import */ var _globalThis_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../globalThis.js */ \\\"./node_modules/engine.io-client/build/esm/globalThis.browser.js\\\");\\n// browser shim for xmlhttprequest module\\n\\n\\nfunction XHR(opts) {\\n const xdomain = opts.xdomain;\\n // XMLHttpRequest can be disabled on IE\\n try {\\n if (\\\"undefined\\\" !== typeof XMLHttpRequest && (!xdomain || _contrib_has_cors_js__WEBPACK_IMPORTED_MODULE_0__.hasCORS)) {\\n return new XMLHttpRequest();\\n }\\n }\\n catch (e) { }\\n if (!xdomain) {\\n try {\\n return new _globalThis_js__WEBPACK_IMPORTED_MODULE_1__.globalThisShim[[\\\"Active\\\"].concat(\\\"Object\\\").join(\\\"X\\\")](\\\"Microsoft.XMLHTTP\\\");\\n }\\n catch (e) { }\\n }\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-client/build/esm/util.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/engine.io-client/build/esm/util.js ***!\n \\*********************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ byteLength: () => (/* binding */ byteLength),\\n/* harmony export */ installTimerFunctions: () => (/* binding */ installTimerFunctions),\\n/* harmony export */ pick: () => (/* binding */ pick)\\n/* harmony export */ });\\n/* harmony import */ var _globalThis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./globalThis.js */ \\\"./node_modules/engine.io-client/build/esm/globalThis.browser.js\\\");\\n\\nfunction pick(obj, ...attr) {\\n return attr.reduce((acc, k) => {\\n if (obj.hasOwnProperty(k)) {\\n acc[k] = obj[k];\\n }\\n return acc;\\n }, {});\\n}\\n// Keep a reference to the real timeout functions so they can be used when overridden\\nconst NATIVE_SET_TIMEOUT = _globalThis_js__WEBPACK_IMPORTED_MODULE_0__.globalThisShim.setTimeout;\\nconst NATIVE_CLEAR_TIMEOUT = _globalThis_js__WEBPACK_IMPORTED_MODULE_0__.globalThisShim.clearTimeout;\\nfunction installTimerFunctions(obj, opts) {\\n if (opts.useNativeTimers) {\\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(_globalThis_js__WEBPACK_IMPORTED_MODULE_0__.globalThisShim);\\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(_globalThis_js__WEBPACK_IMPORTED_MODULE_0__.globalThisShim);\\n }\\n else {\\n obj.setTimeoutFn = _globalThis_js__WEBPACK_IMPORTED_MODULE_0__.globalThisShim.setTimeout.bind(_globalThis_js__WEBPACK_IMPORTED_MODULE_0__.globalThisShim);\\n obj.clearTimeoutFn = _globalThis_js__WEBPACK_IMPORTED_MODULE_0__.globalThisShim.clearTimeout.bind(_globalThis_js__WEBPACK_IMPORTED_MODULE_0__.globalThisShim);\\n }\\n}\\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\\nconst BASE64_OVERHEAD = 1.33;\\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\\nfunction byteLength(obj) {\\n if (typeof obj === \\\"string\\\") {\\n return utf8Length(obj);\\n }\\n // arraybuffer or blob\\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\\n}\\nfunction utf8Length(str) {\\n let c = 0, length = 0;\\n for (let i = 0, l = str.length; i < l; i++) {\\n c = str.charCodeAt(i);\\n if (c < 0x80) {\\n length += 1;\\n }\\n else if (c < 0x800) {\\n length += 2;\\n }\\n else if (c < 0xd800 || c >= 0xe000) {\\n length += 3;\\n }\\n else {\\n i++;\\n length += 4;\\n }\\n }\\n return length;\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-client/build/esm/util.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-parser/build/esm/commons.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/engine.io-parser/build/esm/commons.js ***!\n \\************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ ERROR_PACKET: () => (/* binding */ ERROR_PACKET),\\n/* harmony export */ PACKET_TYPES: () => (/* binding */ PACKET_TYPES),\\n/* harmony export */ PACKET_TYPES_REVERSE: () => (/* binding */ PACKET_TYPES_REVERSE)\\n/* harmony export */ });\\nconst PACKET_TYPES = Object.create(null); // no Map = no polyfill\\nPACKET_TYPES[\\\"open\\\"] = \\\"0\\\";\\nPACKET_TYPES[\\\"close\\\"] = \\\"1\\\";\\nPACKET_TYPES[\\\"ping\\\"] = \\\"2\\\";\\nPACKET_TYPES[\\\"pong\\\"] = \\\"3\\\";\\nPACKET_TYPES[\\\"message\\\"] = \\\"4\\\";\\nPACKET_TYPES[\\\"upgrade\\\"] = \\\"5\\\";\\nPACKET_TYPES[\\\"noop\\\"] = \\\"6\\\";\\nconst PACKET_TYPES_REVERSE = Object.create(null);\\nObject.keys(PACKET_TYPES).forEach(key => {\\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\\n});\\nconst ERROR_PACKET = { type: \\\"error\\\", data: \\\"parser error\\\" };\\n\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-parser/build/esm/commons.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js\":\n/*!*******************************************************************************!*\\\n !*** ./node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js ***!\n \\*******************************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ decode: () => (/* binding */ decode),\\n/* harmony export */ encode: () => (/* binding */ encode)\\n/* harmony export */ });\\n// imported from https://github.com/socketio/base64-arraybuffer\\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\\n// Use a lookup table to find the index.\\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\\nfor (let i = 0; i < chars.length; i++) {\\n lookup[chars.charCodeAt(i)] = i;\\n}\\nconst encode = (arraybuffer) => {\\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\\n for (i = 0; i < len; i += 3) {\\n base64 += chars[bytes[i] >> 2];\\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\\n base64 += chars[bytes[i + 2] & 63];\\n }\\n if (len % 3 === 2) {\\n base64 = base64.substring(0, base64.length - 1) + '=';\\n }\\n else if (len % 3 === 1) {\\n base64 = base64.substring(0, base64.length - 2) + '==';\\n }\\n return base64;\\n};\\nconst decode = (base64) => {\\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\\n if (base64[base64.length - 1] === '=') {\\n bufferLength--;\\n if (base64[base64.length - 2] === '=') {\\n bufferLength--;\\n }\\n }\\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\\n for (i = 0; i < len; i += 4) {\\n encoded1 = lookup[base64.charCodeAt(i)];\\n encoded2 = lookup[base64.charCodeAt(i + 1)];\\n encoded3 = lookup[base64.charCodeAt(i + 2)];\\n encoded4 = lookup[base64.charCodeAt(i + 3)];\\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\\n }\\n return arraybuffer;\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-parser/build/esm/decodePacket.browser.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/engine.io-parser/build/esm/decodePacket.browser.js ***!\n \\*************************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"default\\\": () => (__WEBPACK_DEFAULT_EXPORT__)\\n/* harmony export */ });\\n/* harmony import */ var _commons_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./commons.js */ \\\"./node_modules/engine.io-parser/build/esm/commons.js\\\");\\n/* harmony import */ var _contrib_base64_arraybuffer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./contrib/base64-arraybuffer.js */ \\\"./node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js\\\");\\n\\n\\nconst withNativeArrayBuffer = typeof ArrayBuffer === \\\"function\\\";\\nconst decodePacket = (encodedPacket, binaryType) => {\\n if (typeof encodedPacket !== \\\"string\\\") {\\n return {\\n type: \\\"message\\\",\\n data: mapBinary(encodedPacket, binaryType)\\n };\\n }\\n const type = encodedPacket.charAt(0);\\n if (type === \\\"b\\\") {\\n return {\\n type: \\\"message\\\",\\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\\n };\\n }\\n const packetType = _commons_js__WEBPACK_IMPORTED_MODULE_0__.PACKET_TYPES_REVERSE[type];\\n if (!packetType) {\\n return _commons_js__WEBPACK_IMPORTED_MODULE_0__.ERROR_PACKET;\\n }\\n return encodedPacket.length > 1\\n ? {\\n type: _commons_js__WEBPACK_IMPORTED_MODULE_0__.PACKET_TYPES_REVERSE[type],\\n data: encodedPacket.substring(1)\\n }\\n : {\\n type: _commons_js__WEBPACK_IMPORTED_MODULE_0__.PACKET_TYPES_REVERSE[type]\\n };\\n};\\nconst decodeBase64Packet = (data, binaryType) => {\\n if (withNativeArrayBuffer) {\\n const decoded = (0,_contrib_base64_arraybuffer_js__WEBPACK_IMPORTED_MODULE_1__.decode)(data);\\n return mapBinary(decoded, binaryType);\\n }\\n else {\\n return { base64: true, data }; // fallback for old browsers\\n }\\n};\\nconst mapBinary = (data, binaryType) => {\\n switch (binaryType) {\\n case \\\"blob\\\":\\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\\n case \\\"arraybuffer\\\":\\n default:\\n return data; // assuming the data is already an ArrayBuffer\\n }\\n};\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (decodePacket);\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-parser/build/esm/decodePacket.browser.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-parser/build/esm/encodePacket.browser.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/engine.io-parser/build/esm/encodePacket.browser.js ***!\n \\*************************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"default\\\": () => (__WEBPACK_DEFAULT_EXPORT__)\\n/* harmony export */ });\\n/* harmony import */ var _commons_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./commons.js */ \\\"./node_modules/engine.io-parser/build/esm/commons.js\\\");\\n\\nconst withNativeBlob = typeof Blob === \\\"function\\\" ||\\n (typeof Blob !== \\\"undefined\\\" &&\\n Object.prototype.toString.call(Blob) === \\\"[object BlobConstructor]\\\");\\nconst withNativeArrayBuffer = typeof ArrayBuffer === \\\"function\\\";\\n// ArrayBuffer.isView method is not defined in IE10\\nconst isView = obj => {\\n return typeof ArrayBuffer.isView === \\\"function\\\"\\n ? ArrayBuffer.isView(obj)\\n : obj && obj.buffer instanceof ArrayBuffer;\\n};\\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\\n if (withNativeBlob && data instanceof Blob) {\\n if (supportsBinary) {\\n return callback(data);\\n }\\n else {\\n return encodeBlobAsBase64(data, callback);\\n }\\n }\\n else if (withNativeArrayBuffer &&\\n (data instanceof ArrayBuffer || isView(data))) {\\n if (supportsBinary) {\\n return callback(data);\\n }\\n else {\\n return encodeBlobAsBase64(new Blob([data]), callback);\\n }\\n }\\n // plain string\\n return callback(_commons_js__WEBPACK_IMPORTED_MODULE_0__.PACKET_TYPES[type] + (data || \\\"\\\"));\\n};\\nconst encodeBlobAsBase64 = (data, callback) => {\\n const fileReader = new FileReader();\\n fileReader.onload = function () {\\n const content = fileReader.result.split(\\\",\\\")[1];\\n callback(\\\"b\\\" + (content || \\\"\\\"));\\n };\\n return fileReader.readAsDataURL(data);\\n};\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (encodePacket);\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-parser/build/esm/encodePacket.browser.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/engine.io-parser/build/esm/index.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/engine.io-parser/build/esm/index.js ***!\n \\**********************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ decodePacket: () => (/* reexport safe */ _decodePacket_js__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"]),\\n/* harmony export */ decodePayload: () => (/* binding */ decodePayload),\\n/* harmony export */ encodePacket: () => (/* reexport safe */ _encodePacket_js__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]),\\n/* harmony export */ encodePayload: () => (/* binding */ encodePayload),\\n/* harmony export */ protocol: () => (/* binding */ protocol)\\n/* harmony export */ });\\n/* harmony import */ var _encodePacket_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./encodePacket.js */ \\\"./node_modules/engine.io-parser/build/esm/encodePacket.browser.js\\\");\\n/* harmony import */ var _decodePacket_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./decodePacket.js */ \\\"./node_modules/engine.io-parser/build/esm/decodePacket.browser.js\\\");\\n\\n\\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\\nconst encodePayload = (packets, callback) => {\\n // some packets may be added to the array while encoding, so the initial length must be saved\\n const length = packets.length;\\n const encodedPackets = new Array(length);\\n let count = 0;\\n packets.forEach((packet, i) => {\\n // force base64 encoding for binary packets\\n (0,_encodePacket_js__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(packet, false, encodedPacket => {\\n encodedPackets[i] = encodedPacket;\\n if (++count === length) {\\n callback(encodedPackets.join(SEPARATOR));\\n }\\n });\\n });\\n};\\nconst decodePayload = (encodedPayload, binaryType) => {\\n const encodedPackets = encodedPayload.split(SEPARATOR);\\n const packets = [];\\n for (let i = 0; i < encodedPackets.length; i++) {\\n const decodedPacket = (0,_decodePacket_js__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"])(encodedPackets[i], binaryType);\\n packets.push(decodedPacket);\\n if (decodedPacket.type === \\\"error\\\") {\\n break;\\n }\\n }\\n return packets;\\n};\\nconst protocol = 4;\\n\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/engine.io-parser/build/esm/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/socket.io-client/build/esm/contrib/backo2.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/socket.io-client/build/esm/contrib/backo2.js ***!\n \\*******************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ Backoff: () => (/* binding */ Backoff)\\n/* harmony export */ });\\n/**\\n * Initialize backoff timer with `opts`.\\n *\\n * - `min` initial timeout in milliseconds [100]\\n * - `max` max timeout [10000]\\n * - `jitter` [0]\\n * - `factor` [2]\\n *\\n * @param {Object} opts\\n * @api public\\n */\\nfunction Backoff(opts) {\\n opts = opts || {};\\n this.ms = opts.min || 100;\\n this.max = opts.max || 10000;\\n this.factor = opts.factor || 2;\\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\\n this.attempts = 0;\\n}\\n/**\\n * Return the backoff duration.\\n *\\n * @return {Number}\\n * @api public\\n */\\nBackoff.prototype.duration = function () {\\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\\n if (this.jitter) {\\n var rand = Math.random();\\n var deviation = Math.floor(rand * this.jitter * ms);\\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\\n }\\n return Math.min(ms, this.max) | 0;\\n};\\n/**\\n * Reset the number of attempts.\\n *\\n * @api public\\n */\\nBackoff.prototype.reset = function () {\\n this.attempts = 0;\\n};\\n/**\\n * Set the minimum duration\\n *\\n * @api public\\n */\\nBackoff.prototype.setMin = function (min) {\\n this.ms = min;\\n};\\n/**\\n * Set the maximum duration\\n *\\n * @api public\\n */\\nBackoff.prototype.setMax = function (max) {\\n this.max = max;\\n};\\n/**\\n * Set the jitter\\n *\\n * @api public\\n */\\nBackoff.prototype.setJitter = function (jitter) {\\n this.jitter = jitter;\\n};\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/socket.io-client/build/esm/contrib/backo2.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/socket.io-client/build/esm/index.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/socket.io-client/build/esm/index.js ***!\n \\**********************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ Manager: () => (/* reexport safe */ _manager_js__WEBPACK_IMPORTED_MODULE_1__.Manager),\\n/* harmony export */ Socket: () => (/* reexport safe */ _socket_js__WEBPACK_IMPORTED_MODULE_2__.Socket),\\n/* harmony export */ connect: () => (/* binding */ lookup),\\n/* harmony export */ \\\"default\\\": () => (/* binding */ lookup),\\n/* harmony export */ io: () => (/* binding */ lookup),\\n/* harmony export */ protocol: () => (/* reexport safe */ socket_io_parser__WEBPACK_IMPORTED_MODULE_3__.protocol)\\n/* harmony export */ });\\n/* harmony import */ var _url_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./url.js */ \\\"./node_modules/socket.io-client/build/esm/url.js\\\");\\n/* harmony import */ var _manager_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./manager.js */ \\\"./node_modules/socket.io-client/build/esm/manager.js\\\");\\n/* harmony import */ var _socket_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./socket.js */ \\\"./node_modules/socket.io-client/build/esm/socket.js\\\");\\n/* harmony import */ var socket_io_parser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! socket.io-parser */ \\\"./node_modules/socket.io-parser/build/esm/index.js\\\");\\n\\n\\n\\n/**\\n * Managers cache.\\n */\\nconst cache = {};\\nfunction lookup(uri, opts) {\\n if (typeof uri === \\\"object\\\") {\\n opts = uri;\\n uri = undefined;\\n }\\n opts = opts || {};\\n const parsed = (0,_url_js__WEBPACK_IMPORTED_MODULE_0__.url)(uri, opts.path || \\\"/socket.io\\\");\\n const source = parsed.source;\\n const id = parsed.id;\\n const path = parsed.path;\\n const sameNamespace = cache[id] && path in cache[id][\\\"nsps\\\"];\\n const newConnection = opts.forceNew ||\\n opts[\\\"force new connection\\\"] ||\\n false === opts.multiplex ||\\n sameNamespace;\\n let io;\\n if (newConnection) {\\n io = new _manager_js__WEBPACK_IMPORTED_MODULE_1__.Manager(source, opts);\\n }\\n else {\\n if (!cache[id]) {\\n cache[id] = new _manager_js__WEBPACK_IMPORTED_MODULE_1__.Manager(source, opts);\\n }\\n io = cache[id];\\n }\\n if (parsed.query && !opts.query) {\\n opts.query = parsed.queryKey;\\n }\\n return io.socket(parsed.path, opts);\\n}\\n// so that \\\"lookup\\\" can be used both as a function (e.g. `io(...)`) and as a\\n// namespace (e.g. `io.connect(...)`), for backward compatibility\\nObject.assign(lookup, {\\n Manager: _manager_js__WEBPACK_IMPORTED_MODULE_1__.Manager,\\n Socket: _socket_js__WEBPACK_IMPORTED_MODULE_2__.Socket,\\n io: lookup,\\n connect: lookup,\\n});\\n/**\\n * Protocol version.\\n *\\n * @public\\n */\\n\\n/**\\n * Expose constructors for standalone build.\\n *\\n * @public\\n */\\n\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/socket.io-client/build/esm/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/socket.io-client/build/esm/manager.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/socket.io-client/build/esm/manager.js ***!\n \\************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ Manager: () => (/* binding */ Manager)\\n/* harmony export */ });\\n/* harmony import */ var engine_io_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! engine.io-client */ \\\"./node_modules/engine.io-client/build/esm/index.js\\\");\\n/* harmony import */ var _socket_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./socket.js */ \\\"./node_modules/socket.io-client/build/esm/socket.js\\\");\\n/* harmony import */ var socket_io_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! socket.io-parser */ \\\"./node_modules/socket.io-parser/build/esm/index.js\\\");\\n/* harmony import */ var _on_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./on.js */ \\\"./node_modules/socket.io-client/build/esm/on.js\\\");\\n/* harmony import */ var _contrib_backo2_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./contrib/backo2.js */ \\\"./node_modules/socket.io-client/build/esm/contrib/backo2.js\\\");\\n/* harmony import */ var _socket_io_component_emitter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @socket.io/component-emitter */ \\\"./node_modules/@socket.io/component-emitter/index.mjs\\\");\\n\\n\\n\\n\\n\\n\\nclass Manager extends _socket_io_component_emitter__WEBPACK_IMPORTED_MODULE_5__.Emitter {\\n constructor(uri, opts) {\\n var _a;\\n super();\\n this.nsps = {};\\n this.subs = [];\\n if (uri && \\\"object\\\" === typeof uri) {\\n opts = uri;\\n uri = undefined;\\n }\\n opts = opts || {};\\n opts.path = opts.path || \\\"/socket.io\\\";\\n this.opts = opts;\\n (0,engine_io_client__WEBPACK_IMPORTED_MODULE_0__.installTimerFunctions)(this, opts);\\n this.reconnection(opts.reconnection !== false);\\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\\n this.backoff = new _contrib_backo2_js__WEBPACK_IMPORTED_MODULE_4__.Backoff({\\n min: this.reconnectionDelay(),\\n max: this.reconnectionDelayMax(),\\n jitter: this.randomizationFactor(),\\n });\\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\\n this._readyState = \\\"closed\\\";\\n this.uri = uri;\\n const _parser = opts.parser || socket_io_parser__WEBPACK_IMPORTED_MODULE_2__;\\n this.encoder = new _parser.Encoder();\\n this.decoder = new _parser.Decoder();\\n this._autoConnect = opts.autoConnect !== false;\\n if (this._autoConnect)\\n this.open();\\n }\\n reconnection(v) {\\n if (!arguments.length)\\n return this._reconnection;\\n this._reconnection = !!v;\\n return this;\\n }\\n reconnectionAttempts(v) {\\n if (v === undefined)\\n return this._reconnectionAttempts;\\n this._reconnectionAttempts = v;\\n return this;\\n }\\n reconnectionDelay(v) {\\n var _a;\\n if (v === undefined)\\n return this._reconnectionDelay;\\n this._reconnectionDelay = v;\\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\\n return this;\\n }\\n randomizationFactor(v) {\\n var _a;\\n if (v === undefined)\\n return this._randomizationFactor;\\n this._randomizationFactor = v;\\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\\n return this;\\n }\\n reconnectionDelayMax(v) {\\n var _a;\\n if (v === undefined)\\n return this._reconnectionDelayMax;\\n this._reconnectionDelayMax = v;\\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\\n return this;\\n }\\n timeout(v) {\\n if (!arguments.length)\\n return this._timeout;\\n this._timeout = v;\\n return this;\\n }\\n /**\\n * Starts trying to reconnect if reconnection is enabled and we have not\\n * started reconnecting yet\\n *\\n * @private\\n */\\n maybeReconnectOnOpen() {\\n // Only try to reconnect if it's the first time we're connecting\\n if (!this._reconnecting &&\\n this._reconnection &&\\n this.backoff.attempts === 0) {\\n // keeps reconnection from firing twice for the same reconnection loop\\n this.reconnect();\\n }\\n }\\n /**\\n * Sets the current transport `socket`.\\n *\\n * @param {Function} fn - optional, callback\\n * @return self\\n * @public\\n */\\n open(fn) {\\n if (~this._readyState.indexOf(\\\"open\\\"))\\n return this;\\n this.engine = new engine_io_client__WEBPACK_IMPORTED_MODULE_0__.Socket(this.uri, this.opts);\\n const socket = this.engine;\\n const self = this;\\n this._readyState = \\\"opening\\\";\\n this.skipReconnect = false;\\n // emit `open`\\n const openSubDestroy = (0,_on_js__WEBPACK_IMPORTED_MODULE_3__.on)(socket, \\\"open\\\", function () {\\n self.onopen();\\n fn && fn();\\n });\\n // emit `error`\\n const errorSub = (0,_on_js__WEBPACK_IMPORTED_MODULE_3__.on)(socket, \\\"error\\\", (err) => {\\n self.cleanup();\\n self._readyState = \\\"closed\\\";\\n this.emitReserved(\\\"error\\\", err);\\n if (fn) {\\n fn(err);\\n }\\n else {\\n // Only do this if there is no fn to handle the error\\n self.maybeReconnectOnOpen();\\n }\\n });\\n if (false !== this._timeout) {\\n const timeout = this._timeout;\\n if (timeout === 0) {\\n openSubDestroy(); // prevents a race condition with the 'open' event\\n }\\n // set timer\\n const timer = this.setTimeoutFn(() => {\\n openSubDestroy();\\n socket.close();\\n // @ts-ignore\\n socket.emit(\\\"error\\\", new Error(\\\"timeout\\\"));\\n }, timeout);\\n if (this.opts.autoUnref) {\\n timer.unref();\\n }\\n this.subs.push(function subDestroy() {\\n clearTimeout(timer);\\n });\\n }\\n this.subs.push(openSubDestroy);\\n this.subs.push(errorSub);\\n return this;\\n }\\n /**\\n * Alias for open()\\n *\\n * @return self\\n * @public\\n */\\n connect(fn) {\\n return this.open(fn);\\n }\\n /**\\n * Called upon transport open.\\n *\\n * @private\\n */\\n onopen() {\\n // clear old subs\\n this.cleanup();\\n // mark as open\\n this._readyState = \\\"open\\\";\\n this.emitReserved(\\\"open\\\");\\n // add new subs\\n const socket = this.engine;\\n this.subs.push((0,_on_js__WEBPACK_IMPORTED_MODULE_3__.on)(socket, \\\"ping\\\", this.onping.bind(this)), (0,_on_js__WEBPACK_IMPORTED_MODULE_3__.on)(socket, \\\"data\\\", this.ondata.bind(this)), (0,_on_js__WEBPACK_IMPORTED_MODULE_3__.on)(socket, \\\"error\\\", this.onerror.bind(this)), (0,_on_js__WEBPACK_IMPORTED_MODULE_3__.on)(socket, \\\"close\\\", this.onclose.bind(this)), (0,_on_js__WEBPACK_IMPORTED_MODULE_3__.on)(this.decoder, \\\"decoded\\\", this.ondecoded.bind(this)));\\n }\\n /**\\n * Called upon a ping.\\n *\\n * @private\\n */\\n onping() {\\n this.emitReserved(\\\"ping\\\");\\n }\\n /**\\n * Called with data.\\n *\\n * @private\\n */\\n ondata(data) {\\n try {\\n this.decoder.add(data);\\n }\\n catch (e) {\\n this.onclose(\\\"parse error\\\", e);\\n }\\n }\\n /**\\n * Called when parser fully decodes a packet.\\n *\\n * @private\\n */\\n ondecoded(packet) {\\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \\\"parse error\\\"\\n (0,engine_io_client__WEBPACK_IMPORTED_MODULE_0__.nextTick)(() => {\\n this.emitReserved(\\\"packet\\\", packet);\\n }, this.setTimeoutFn);\\n }\\n /**\\n * Called upon socket error.\\n *\\n * @private\\n */\\n onerror(err) {\\n this.emitReserved(\\\"error\\\", err);\\n }\\n /**\\n * Creates a new socket for the given `nsp`.\\n *\\n * @return {Socket}\\n * @public\\n */\\n socket(nsp, opts) {\\n let socket = this.nsps[nsp];\\n if (!socket) {\\n socket = new _socket_js__WEBPACK_IMPORTED_MODULE_1__.Socket(this, nsp, opts);\\n this.nsps[nsp] = socket;\\n }\\n else if (this._autoConnect && !socket.active) {\\n socket.connect();\\n }\\n return socket;\\n }\\n /**\\n * Called upon a socket close.\\n *\\n * @param socket\\n * @private\\n */\\n _destroy(socket) {\\n const nsps = Object.keys(this.nsps);\\n for (const nsp of nsps) {\\n const socket = this.nsps[nsp];\\n if (socket.active) {\\n return;\\n }\\n }\\n this._close();\\n }\\n /**\\n * Writes a packet.\\n *\\n * @param packet\\n * @private\\n */\\n _packet(packet) {\\n const encodedPackets = this.encoder.encode(packet);\\n for (let i = 0; i < encodedPackets.length; i++) {\\n this.engine.write(encodedPackets[i], packet.options);\\n }\\n }\\n /**\\n * Clean up transport subscriptions and packet buffer.\\n *\\n * @private\\n */\\n cleanup() {\\n this.subs.forEach((subDestroy) => subDestroy());\\n this.subs.length = 0;\\n this.decoder.destroy();\\n }\\n /**\\n * Close the current socket.\\n *\\n * @private\\n */\\n _close() {\\n this.skipReconnect = true;\\n this._reconnecting = false;\\n this.onclose(\\\"forced close\\\");\\n if (this.engine)\\n this.engine.close();\\n }\\n /**\\n * Alias for close()\\n *\\n * @private\\n */\\n disconnect() {\\n return this._close();\\n }\\n /**\\n * Called upon engine close.\\n *\\n * @private\\n */\\n onclose(reason, description) {\\n this.cleanup();\\n this.backoff.reset();\\n this._readyState = \\\"closed\\\";\\n this.emitReserved(\\\"close\\\", reason, description);\\n if (this._reconnection && !this.skipReconnect) {\\n this.reconnect();\\n }\\n }\\n /**\\n * Attempt a reconnection.\\n *\\n * @private\\n */\\n reconnect() {\\n if (this._reconnecting || this.skipReconnect)\\n return this;\\n const self = this;\\n if (this.backoff.attempts >= this._reconnectionAttempts) {\\n this.backoff.reset();\\n this.emitReserved(\\\"reconnect_failed\\\");\\n this._reconnecting = false;\\n }\\n else {\\n const delay = this.backoff.duration();\\n this._reconnecting = true;\\n const timer = this.setTimeoutFn(() => {\\n if (self.skipReconnect)\\n return;\\n this.emitReserved(\\\"reconnect_attempt\\\", self.backoff.attempts);\\n // check again for the case socket closed in above events\\n if (self.skipReconnect)\\n return;\\n self.open((err) => {\\n if (err) {\\n self._reconnecting = false;\\n self.reconnect();\\n this.emitReserved(\\\"reconnect_error\\\", err);\\n }\\n else {\\n self.onreconnect();\\n }\\n });\\n }, delay);\\n if (this.opts.autoUnref) {\\n timer.unref();\\n }\\n this.subs.push(function subDestroy() {\\n clearTimeout(timer);\\n });\\n }\\n }\\n /**\\n * Called upon successful reconnect.\\n *\\n * @private\\n */\\n onreconnect() {\\n const attempt = this.backoff.attempts;\\n this._reconnecting = false;\\n this.backoff.reset();\\n this.emitReserved(\\\"reconnect\\\", attempt);\\n }\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/socket.io-client/build/esm/manager.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/socket.io-client/build/esm/on.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/socket.io-client/build/esm/on.js ***!\n \\*******************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ on: () => (/* binding */ on)\\n/* harmony export */ });\\nfunction on(obj, ev, fn) {\\n obj.on(ev, fn);\\n return function subDestroy() {\\n obj.off(ev, fn);\\n };\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/socket.io-client/build/esm/on.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/socket.io-client/build/esm/socket.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/socket.io-client/build/esm/socket.js ***!\n \\***********************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ Socket: () => (/* binding */ Socket)\\n/* harmony export */ });\\n/* harmony import */ var socket_io_parser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! socket.io-parser */ \\\"./node_modules/socket.io-parser/build/esm/index.js\\\");\\n/* harmony import */ var _on_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./on.js */ \\\"./node_modules/socket.io-client/build/esm/on.js\\\");\\n/* harmony import */ var _socket_io_component_emitter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @socket.io/component-emitter */ \\\"./node_modules/@socket.io/component-emitter/index.mjs\\\");\\n\\n\\n\\n/**\\n * Internal events.\\n * These events can't be emitted by the user.\\n */\\nconst RESERVED_EVENTS = Object.freeze({\\n connect: 1,\\n connect_error: 1,\\n disconnect: 1,\\n disconnecting: 1,\\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\\n newListener: 1,\\n removeListener: 1,\\n});\\n/**\\n * A Socket is the fundamental class for interacting with the server.\\n *\\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\\n *\\n * @example\\n * const socket = io();\\n *\\n * socket.on(\\\"connect\\\", () => {\\n * console.log(\\\"connected\\\");\\n * });\\n *\\n * // send an event to the server\\n * socket.emit(\\\"foo\\\", \\\"bar\\\");\\n *\\n * socket.on(\\\"foobar\\\", () => {\\n * // an event was received from the server\\n * });\\n *\\n * // upon disconnection\\n * socket.on(\\\"disconnect\\\", (reason) => {\\n * console.log(`disconnected due to ${reason}`);\\n * });\\n */\\nclass Socket extends _socket_io_component_emitter__WEBPACK_IMPORTED_MODULE_2__.Emitter {\\n /**\\n * `Socket` constructor.\\n */\\n constructor(io, nsp, opts) {\\n super();\\n /**\\n * Whether the socket is currently connected to the server.\\n *\\n * @example\\n * const socket = io();\\n *\\n * socket.on(\\\"connect\\\", () => {\\n * console.log(socket.connected); // true\\n * });\\n *\\n * socket.on(\\\"disconnect\\\", () => {\\n * console.log(socket.connected); // false\\n * });\\n */\\n this.connected = false;\\n /**\\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\\n * be transmitted by the server.\\n */\\n this.recovered = false;\\n /**\\n * Buffer for packets received before the CONNECT packet\\n */\\n this.receiveBuffer = [];\\n /**\\n * Buffer for packets that will be sent once the socket is connected\\n */\\n this.sendBuffer = [];\\n /**\\n * The queue of packets to be sent with retry in case of failure.\\n *\\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\\n * @private\\n */\\n this._queue = [];\\n /**\\n * A sequence to generate the ID of the {@link QueuedPacket}.\\n * @private\\n */\\n this._queueSeq = 0;\\n this.ids = 0;\\n this.acks = {};\\n this.flags = {};\\n this.io = io;\\n this.nsp = nsp;\\n if (opts && opts.auth) {\\n this.auth = opts.auth;\\n }\\n this._opts = Object.assign({}, opts);\\n if (this.io._autoConnect)\\n this.open();\\n }\\n /**\\n * Whether the socket is currently disconnected\\n *\\n * @example\\n * const socket = io();\\n *\\n * socket.on(\\\"connect\\\", () => {\\n * console.log(socket.disconnected); // false\\n * });\\n *\\n * socket.on(\\\"disconnect\\\", () => {\\n * console.log(socket.disconnected); // true\\n * });\\n */\\n get disconnected() {\\n return !this.connected;\\n }\\n /**\\n * Subscribe to open, close and packet events\\n *\\n * @private\\n */\\n subEvents() {\\n if (this.subs)\\n return;\\n const io = this.io;\\n this.subs = [\\n (0,_on_js__WEBPACK_IMPORTED_MODULE_1__.on)(io, \\\"open\\\", this.onopen.bind(this)),\\n (0,_on_js__WEBPACK_IMPORTED_MODULE_1__.on)(io, \\\"packet\\\", this.onpacket.bind(this)),\\n (0,_on_js__WEBPACK_IMPORTED_MODULE_1__.on)(io, \\\"error\\\", this.onerror.bind(this)),\\n (0,_on_js__WEBPACK_IMPORTED_MODULE_1__.on)(io, \\\"close\\\", this.onclose.bind(this)),\\n ];\\n }\\n /**\\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\\n *\\n * @example\\n * const socket = io();\\n *\\n * console.log(socket.active); // true\\n *\\n * socket.on(\\\"disconnect\\\", (reason) => {\\n * if (reason === \\\"io server disconnect\\\") {\\n * // the disconnection was initiated by the server, you need to manually reconnect\\n * console.log(socket.active); // false\\n * }\\n * // else the socket will automatically try to reconnect\\n * console.log(socket.active); // true\\n * });\\n */\\n get active() {\\n return !!this.subs;\\n }\\n /**\\n * \\\"Opens\\\" the socket.\\n *\\n * @example\\n * const socket = io({\\n * autoConnect: false\\n * });\\n *\\n * socket.connect();\\n */\\n connect() {\\n if (this.connected)\\n return this;\\n this.subEvents();\\n if (!this.io[\\\"_reconnecting\\\"])\\n this.io.open(); // ensure open\\n if (\\\"open\\\" === this.io._readyState)\\n this.onopen();\\n return this;\\n }\\n /**\\n * Alias for {@link connect()}.\\n */\\n open() {\\n return this.connect();\\n }\\n /**\\n * Sends a `message` event.\\n *\\n * This method mimics the WebSocket.send() method.\\n *\\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\\n *\\n * @example\\n * socket.send(\\\"hello\\\");\\n *\\n * // this is equivalent to\\n * socket.emit(\\\"message\\\", \\\"hello\\\");\\n *\\n * @return self\\n */\\n send(...args) {\\n args.unshift(\\\"message\\\");\\n this.emit.apply(this, args);\\n return this;\\n }\\n /**\\n * Override `emit`.\\n * If the event is in `events`, it's emitted normally.\\n *\\n * @example\\n * socket.emit(\\\"hello\\\", \\\"world\\\");\\n *\\n * // all serializable datastructures are supported (no need to call JSON.stringify)\\n * socket.emit(\\\"hello\\\", 1, \\\"2\\\", { 3: [\\\"4\\\"], 5: Uint8Array.from([6]) });\\n *\\n * // with an acknowledgement from the server\\n * socket.emit(\\\"hello\\\", \\\"world\\\", (val) => {\\n * // ...\\n * });\\n *\\n * @return self\\n */\\n emit(ev, ...args) {\\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\\n throw new Error('\\\"' + ev.toString() + '\\\" is a reserved event name');\\n }\\n args.unshift(ev);\\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\\n this._addToQueue(args);\\n return this;\\n }\\n const packet = {\\n type: socket_io_parser__WEBPACK_IMPORTED_MODULE_0__.PacketType.EVENT,\\n data: args,\\n };\\n packet.options = {};\\n packet.options.compress = this.flags.compress !== false;\\n // event ack callback\\n if (\\\"function\\\" === typeof args[args.length - 1]) {\\n const id = this.ids++;\\n const ack = args.pop();\\n this._registerAckCallback(id, ack);\\n packet.id = id;\\n }\\n const isTransportWritable = this.io.engine &&\\n this.io.engine.transport &&\\n this.io.engine.transport.writable;\\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\\n if (discardPacket) {\\n }\\n else if (this.connected) {\\n this.notifyOutgoingListeners(packet);\\n this.packet(packet);\\n }\\n else {\\n this.sendBuffer.push(packet);\\n }\\n this.flags = {};\\n return this;\\n }\\n /**\\n * @private\\n */\\n _registerAckCallback(id, ack) {\\n var _a;\\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\\n if (timeout === undefined) {\\n this.acks[id] = ack;\\n return;\\n }\\n // @ts-ignore\\n const timer = this.io.setTimeoutFn(() => {\\n delete this.acks[id];\\n for (let i = 0; i < this.sendBuffer.length; i++) {\\n if (this.sendBuffer[i].id === id) {\\n this.sendBuffer.splice(i, 1);\\n }\\n }\\n ack.call(this, new Error(\\\"operation has timed out\\\"));\\n }, timeout);\\n this.acks[id] = (...args) => {\\n // @ts-ignore\\n this.io.clearTimeoutFn(timer);\\n ack.apply(this, [null, ...args]);\\n };\\n }\\n /**\\n * Emits an event and waits for an acknowledgement\\n *\\n * @example\\n * // without timeout\\n * const response = await socket.emitWithAck(\\\"hello\\\", \\\"world\\\");\\n *\\n * // with a specific timeout\\n * try {\\n * const response = await socket.timeout(1000).emitWithAck(\\\"hello\\\", \\\"world\\\");\\n * } catch (err) {\\n * // the server did not acknowledge the event in the given delay\\n * }\\n *\\n * @return a Promise that will be fulfilled when the server acknowledges the event\\n */\\n emitWithAck(ev, ...args) {\\n // the timeout flag is optional\\n const withErr = this.flags.timeout !== undefined || this._opts.ackTimeout !== undefined;\\n return new Promise((resolve, reject) => {\\n args.push((arg1, arg2) => {\\n if (withErr) {\\n return arg1 ? reject(arg1) : resolve(arg2);\\n }\\n else {\\n return resolve(arg1);\\n }\\n });\\n this.emit(ev, ...args);\\n });\\n }\\n /**\\n * Add the packet to the queue.\\n * @param args\\n * @private\\n */\\n _addToQueue(args) {\\n let ack;\\n if (typeof args[args.length - 1] === \\\"function\\\") {\\n ack = args.pop();\\n }\\n const packet = {\\n id: this._queueSeq++,\\n tryCount: 0,\\n pending: false,\\n args,\\n flags: Object.assign({ fromQueue: true }, this.flags),\\n };\\n args.push((err, ...responseArgs) => {\\n if (packet !== this._queue[0]) {\\n // the packet has already been acknowledged\\n return;\\n }\\n const hasError = err !== null;\\n if (hasError) {\\n if (packet.tryCount > this._opts.retries) {\\n this._queue.shift();\\n if (ack) {\\n ack(err);\\n }\\n }\\n }\\n else {\\n this._queue.shift();\\n if (ack) {\\n ack(null, ...responseArgs);\\n }\\n }\\n packet.pending = false;\\n return this._drainQueue();\\n });\\n this._queue.push(packet);\\n this._drainQueue();\\n }\\n /**\\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\\n * @param force - whether to resend a packet that has not been acknowledged yet\\n *\\n * @private\\n */\\n _drainQueue(force = false) {\\n if (!this.connected || this._queue.length === 0) {\\n return;\\n }\\n const packet = this._queue[0];\\n if (packet.pending && !force) {\\n return;\\n }\\n packet.pending = true;\\n packet.tryCount++;\\n this.flags = packet.flags;\\n this.emit.apply(this, packet.args);\\n }\\n /**\\n * Sends a packet.\\n *\\n * @param packet\\n * @private\\n */\\n packet(packet) {\\n packet.nsp = this.nsp;\\n this.io._packet(packet);\\n }\\n /**\\n * Called upon engine `open`.\\n *\\n * @private\\n */\\n onopen() {\\n if (typeof this.auth == \\\"function\\\") {\\n this.auth((data) => {\\n this._sendConnectPacket(data);\\n });\\n }\\n else {\\n this._sendConnectPacket(this.auth);\\n }\\n }\\n /**\\n * Sends a CONNECT packet to initiate the Socket.IO session.\\n *\\n * @param data\\n * @private\\n */\\n _sendConnectPacket(data) {\\n this.packet({\\n type: socket_io_parser__WEBPACK_IMPORTED_MODULE_0__.PacketType.CONNECT,\\n data: this._pid\\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\\n : data,\\n });\\n }\\n /**\\n * Called upon engine or manager `error`.\\n *\\n * @param err\\n * @private\\n */\\n onerror(err) {\\n if (!this.connected) {\\n this.emitReserved(\\\"connect_error\\\", err);\\n }\\n }\\n /**\\n * Called upon engine `close`.\\n *\\n * @param reason\\n * @param description\\n * @private\\n */\\n onclose(reason, description) {\\n this.connected = false;\\n delete this.id;\\n this.emitReserved(\\\"disconnect\\\", reason, description);\\n }\\n /**\\n * Called with socket packet.\\n *\\n * @param packet\\n * @private\\n */\\n onpacket(packet) {\\n const sameNamespace = packet.nsp === this.nsp;\\n if (!sameNamespace)\\n return;\\n switch (packet.type) {\\n case socket_io_parser__WEBPACK_IMPORTED_MODULE_0__.PacketType.CONNECT:\\n if (packet.data && packet.data.sid) {\\n this.onconnect(packet.data.sid, packet.data.pid);\\n }\\n else {\\n this.emitReserved(\\\"connect_error\\\", new Error(\\\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\\\"));\\n }\\n break;\\n case socket_io_parser__WEBPACK_IMPORTED_MODULE_0__.PacketType.EVENT:\\n case socket_io_parser__WEBPACK_IMPORTED_MODULE_0__.PacketType.BINARY_EVENT:\\n this.onevent(packet);\\n break;\\n case socket_io_parser__WEBPACK_IMPORTED_MODULE_0__.PacketType.ACK:\\n case socket_io_parser__WEBPACK_IMPORTED_MODULE_0__.PacketType.BINARY_ACK:\\n this.onack(packet);\\n break;\\n case socket_io_parser__WEBPACK_IMPORTED_MODULE_0__.PacketType.DISCONNECT:\\n this.ondisconnect();\\n break;\\n case socket_io_parser__WEBPACK_IMPORTED_MODULE_0__.PacketType.CONNECT_ERROR:\\n this.destroy();\\n const err = new Error(packet.data.message);\\n // @ts-ignore\\n err.data = packet.data.data;\\n this.emitReserved(\\\"connect_error\\\", err);\\n break;\\n }\\n }\\n /**\\n * Called upon a server event.\\n *\\n * @param packet\\n * @private\\n */\\n onevent(packet) {\\n const args = packet.data || [];\\n if (null != packet.id) {\\n args.push(this.ack(packet.id));\\n }\\n if (this.connected) {\\n this.emitEvent(args);\\n }\\n else {\\n this.receiveBuffer.push(Object.freeze(args));\\n }\\n }\\n emitEvent(args) {\\n if (this._anyListeners && this._anyListeners.length) {\\n const listeners = this._anyListeners.slice();\\n for (const listener of listeners) {\\n listener.apply(this, args);\\n }\\n }\\n super.emit.apply(this, args);\\n if (this._pid && args.length && typeof args[args.length - 1] === \\\"string\\\") {\\n this._lastOffset = args[args.length - 1];\\n }\\n }\\n /**\\n * Produces an ack callback to emit with an event.\\n *\\n * @private\\n */\\n ack(id) {\\n const self = this;\\n let sent = false;\\n return function (...args) {\\n // prevent double callbacks\\n if (sent)\\n return;\\n sent = true;\\n self.packet({\\n type: socket_io_parser__WEBPACK_IMPORTED_MODULE_0__.PacketType.ACK,\\n id: id,\\n data: args,\\n });\\n };\\n }\\n /**\\n * Called upon a server acknowlegement.\\n *\\n * @param packet\\n * @private\\n */\\n onack(packet) {\\n const ack = this.acks[packet.id];\\n if (\\\"function\\\" === typeof ack) {\\n ack.apply(this, packet.data);\\n delete this.acks[packet.id];\\n }\\n else {\\n }\\n }\\n /**\\n * Called upon server connect.\\n *\\n * @private\\n */\\n onconnect(id, pid) {\\n this.id = id;\\n this.recovered = pid && this._pid === pid;\\n this._pid = pid; // defined only if connection state recovery is enabled\\n this.connected = true;\\n this.emitBuffered();\\n this.emitReserved(\\\"connect\\\");\\n this._drainQueue(true);\\n }\\n /**\\n * Emit buffered events (received and emitted).\\n *\\n * @private\\n */\\n emitBuffered() {\\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\\n this.receiveBuffer = [];\\n this.sendBuffer.forEach((packet) => {\\n this.notifyOutgoingListeners(packet);\\n this.packet(packet);\\n });\\n this.sendBuffer = [];\\n }\\n /**\\n * Called upon server disconnect.\\n *\\n * @private\\n */\\n ondisconnect() {\\n this.destroy();\\n this.onclose(\\\"io server disconnect\\\");\\n }\\n /**\\n * Called upon forced client/server side disconnections,\\n * this method ensures the manager stops tracking us and\\n * that reconnections don't get triggered for this.\\n *\\n * @private\\n */\\n destroy() {\\n if (this.subs) {\\n // clean subscriptions to avoid reconnections\\n this.subs.forEach((subDestroy) => subDestroy());\\n this.subs = undefined;\\n }\\n this.io[\\\"_destroy\\\"](this);\\n }\\n /**\\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\\n *\\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\\n *\\n * @example\\n * const socket = io();\\n *\\n * socket.on(\\\"disconnect\\\", (reason) => {\\n * // console.log(reason); prints \\\"io client disconnect\\\"\\n * });\\n *\\n * socket.disconnect();\\n *\\n * @return self\\n */\\n disconnect() {\\n if (this.connected) {\\n this.packet({ type: socket_io_parser__WEBPACK_IMPORTED_MODULE_0__.PacketType.DISCONNECT });\\n }\\n // remove socket from pool\\n this.destroy();\\n if (this.connected) {\\n // fire events\\n this.onclose(\\\"io client disconnect\\\");\\n }\\n return this;\\n }\\n /**\\n * Alias for {@link disconnect()}.\\n *\\n * @return self\\n */\\n close() {\\n return this.disconnect();\\n }\\n /**\\n * Sets the compress flag.\\n *\\n * @example\\n * socket.compress(false).emit(\\\"hello\\\");\\n *\\n * @param compress - if `true`, compresses the sending data\\n * @return self\\n */\\n compress(compress) {\\n this.flags.compress = compress;\\n return this;\\n }\\n /**\\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\\n * ready to send messages.\\n *\\n * @example\\n * socket.volatile.emit(\\\"hello\\\"); // the server may or may not receive it\\n *\\n * @returns self\\n */\\n get volatile() {\\n this.flags.volatile = true;\\n return this;\\n }\\n /**\\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\\n * given number of milliseconds have elapsed without an acknowledgement from the server:\\n *\\n * @example\\n * socket.timeout(5000).emit(\\\"my-event\\\", (err) => {\\n * if (err) {\\n * // the server did not acknowledge the event in the given delay\\n * }\\n * });\\n *\\n * @returns self\\n */\\n timeout(timeout) {\\n this.flags.timeout = timeout;\\n return this;\\n }\\n /**\\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\\n * callback.\\n *\\n * @example\\n * socket.onAny((event, ...args) => {\\n * console.log(`got ${event}`);\\n * });\\n *\\n * @param listener\\n */\\n onAny(listener) {\\n this._anyListeners = this._anyListeners || [];\\n this._anyListeners.push(listener);\\n return this;\\n }\\n /**\\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\\n * callback. The listener is added to the beginning of the listeners array.\\n *\\n * @example\\n * socket.prependAny((event, ...args) => {\\n * console.log(`got event ${event}`);\\n * });\\n *\\n * @param listener\\n */\\n prependAny(listener) {\\n this._anyListeners = this._anyListeners || [];\\n this._anyListeners.unshift(listener);\\n return this;\\n }\\n /**\\n * Removes the listener that will be fired when any event is emitted.\\n *\\n * @example\\n * const catchAllListener = (event, ...args) => {\\n * console.log(`got event ${event}`);\\n * }\\n *\\n * socket.onAny(catchAllListener);\\n *\\n * // remove a specific listener\\n * socket.offAny(catchAllListener);\\n *\\n * // or remove all listeners\\n * socket.offAny();\\n *\\n * @param listener\\n */\\n offAny(listener) {\\n if (!this._anyListeners) {\\n return this;\\n }\\n if (listener) {\\n const listeners = this._anyListeners;\\n for (let i = 0; i < listeners.length; i++) {\\n if (listener === listeners[i]) {\\n listeners.splice(i, 1);\\n return this;\\n }\\n }\\n }\\n else {\\n this._anyListeners = [];\\n }\\n return this;\\n }\\n /**\\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\\n * e.g. to remove listeners.\\n */\\n listenersAny() {\\n return this._anyListeners || [];\\n }\\n /**\\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\\n * callback.\\n *\\n * Note: acknowledgements sent to the server are not included.\\n *\\n * @example\\n * socket.onAnyOutgoing((event, ...args) => {\\n * console.log(`sent event ${event}`);\\n * });\\n *\\n * @param listener\\n */\\n onAnyOutgoing(listener) {\\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\\n this._anyOutgoingListeners.push(listener);\\n return this;\\n }\\n /**\\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\\n * callback. The listener is added to the beginning of the listeners array.\\n *\\n * Note: acknowledgements sent to the server are not included.\\n *\\n * @example\\n * socket.prependAnyOutgoing((event, ...args) => {\\n * console.log(`sent event ${event}`);\\n * });\\n *\\n * @param listener\\n */\\n prependAnyOutgoing(listener) {\\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\\n this._anyOutgoingListeners.unshift(listener);\\n return this;\\n }\\n /**\\n * Removes the listener that will be fired when any event is emitted.\\n *\\n * @example\\n * const catchAllListener = (event, ...args) => {\\n * console.log(`sent event ${event}`);\\n * }\\n *\\n * socket.onAnyOutgoing(catchAllListener);\\n *\\n * // remove a specific listener\\n * socket.offAnyOutgoing(catchAllListener);\\n *\\n * // or remove all listeners\\n * socket.offAnyOutgoing();\\n *\\n * @param [listener] - the catch-all listener (optional)\\n */\\n offAnyOutgoing(listener) {\\n if (!this._anyOutgoingListeners) {\\n return this;\\n }\\n if (listener) {\\n const listeners = this._anyOutgoingListeners;\\n for (let i = 0; i < listeners.length; i++) {\\n if (listener === listeners[i]) {\\n listeners.splice(i, 1);\\n return this;\\n }\\n }\\n }\\n else {\\n this._anyOutgoingListeners = [];\\n }\\n return this;\\n }\\n /**\\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\\n * e.g. to remove listeners.\\n */\\n listenersAnyOutgoing() {\\n return this._anyOutgoingListeners || [];\\n }\\n /**\\n * Notify the listeners for each packet sent\\n *\\n * @param packet\\n *\\n * @private\\n */\\n notifyOutgoingListeners(packet) {\\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\\n const listeners = this._anyOutgoingListeners.slice();\\n for (const listener of listeners) {\\n listener.apply(this, packet.data);\\n }\\n }\\n }\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/socket.io-client/build/esm/socket.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/socket.io-client/build/esm/url.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/socket.io-client/build/esm/url.js ***!\n \\********************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ url: () => (/* binding */ url)\\n/* harmony export */ });\\n/* harmony import */ var engine_io_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! engine.io-client */ \\\"./node_modules/engine.io-client/build/esm/index.js\\\");\\n\\n/**\\n * URL parser.\\n *\\n * @param uri - url\\n * @param path - the request path of the connection\\n * @param loc - An object meant to mimic window.location.\\n * Defaults to window.location.\\n * @public\\n */\\nfunction url(uri, path = \\\"\\\", loc) {\\n let obj = uri;\\n // default to window.location\\n loc = loc || (typeof location !== \\\"undefined\\\" && location);\\n if (null == uri)\\n uri = loc.protocol + \\\"//\\\" + loc.host;\\n // relative path support\\n if (typeof uri === \\\"string\\\") {\\n if (\\\"/\\\" === uri.charAt(0)) {\\n if (\\\"/\\\" === uri.charAt(1)) {\\n uri = loc.protocol + uri;\\n }\\n else {\\n uri = loc.host + uri;\\n }\\n }\\n if (!/^(https?|wss?):\\\\/\\\\//.test(uri)) {\\n if (\\\"undefined\\\" !== typeof loc) {\\n uri = loc.protocol + \\\"//\\\" + uri;\\n }\\n else {\\n uri = \\\"https://\\\" + uri;\\n }\\n }\\n // parse\\n obj = (0,engine_io_client__WEBPACK_IMPORTED_MODULE_0__.parse)(uri);\\n }\\n // make sure we treat `localhost:80` and `localhost` equally\\n if (!obj.port) {\\n if (/^(http|ws)$/.test(obj.protocol)) {\\n obj.port = \\\"80\\\";\\n }\\n else if (/^(http|ws)s$/.test(obj.protocol)) {\\n obj.port = \\\"443\\\";\\n }\\n }\\n obj.path = obj.path || \\\"/\\\";\\n const ipv6 = obj.host.indexOf(\\\":\\\") !== -1;\\n const host = ipv6 ? \\\"[\\\" + obj.host + \\\"]\\\" : obj.host;\\n // define unique id\\n obj.id = obj.protocol + \\\"://\\\" + host + \\\":\\\" + obj.port + path;\\n // define href\\n obj.href =\\n obj.protocol +\\n \\\"://\\\" +\\n host +\\n (loc && loc.port === obj.port ? \\\"\\\" : \\\":\\\" + obj.port);\\n return obj;\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/socket.io-client/build/esm/url.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/socket.io-parser/build/esm/binary.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/socket.io-parser/build/esm/binary.js ***!\n \\***********************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ deconstructPacket: () => (/* binding */ deconstructPacket),\\n/* harmony export */ reconstructPacket: () => (/* binding */ reconstructPacket)\\n/* harmony export */ });\\n/* harmony import */ var _is_binary_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-binary.js */ \\\"./node_modules/socket.io-parser/build/esm/is-binary.js\\\");\\n\\n/**\\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\\n *\\n * @param {Object} packet - socket.io event packet\\n * @return {Object} with deconstructed packet and list of buffers\\n * @public\\n */\\nfunction deconstructPacket(packet) {\\n const buffers = [];\\n const packetData = packet.data;\\n const pack = packet;\\n pack.data = _deconstructPacket(packetData, buffers);\\n pack.attachments = buffers.length; // number of binary 'attachments'\\n return { packet: pack, buffers: buffers };\\n}\\nfunction _deconstructPacket(data, buffers) {\\n if (!data)\\n return data;\\n if ((0,_is_binary_js__WEBPACK_IMPORTED_MODULE_0__.isBinary)(data)) {\\n const placeholder = { _placeholder: true, num: buffers.length };\\n buffers.push(data);\\n return placeholder;\\n }\\n else if (Array.isArray(data)) {\\n const newData = new Array(data.length);\\n for (let i = 0; i < data.length; i++) {\\n newData[i] = _deconstructPacket(data[i], buffers);\\n }\\n return newData;\\n }\\n else if (typeof data === \\\"object\\\" && !(data instanceof Date)) {\\n const newData = {};\\n for (const key in data) {\\n if (Object.prototype.hasOwnProperty.call(data, key)) {\\n newData[key] = _deconstructPacket(data[key], buffers);\\n }\\n }\\n return newData;\\n }\\n return data;\\n}\\n/**\\n * Reconstructs a binary packet from its placeholder packet and buffers\\n *\\n * @param {Object} packet - event packet with placeholders\\n * @param {Array} buffers - binary buffers to put in placeholder positions\\n * @return {Object} reconstructed packet\\n * @public\\n */\\nfunction reconstructPacket(packet, buffers) {\\n packet.data = _reconstructPacket(packet.data, buffers);\\n delete packet.attachments; // no longer useful\\n return packet;\\n}\\nfunction _reconstructPacket(data, buffers) {\\n if (!data)\\n return data;\\n if (data && data._placeholder === true) {\\n const isIndexValid = typeof data.num === \\\"number\\\" &&\\n data.num >= 0 &&\\n data.num < buffers.length;\\n if (isIndexValid) {\\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\\n }\\n else {\\n throw new Error(\\\"illegal attachments\\\");\\n }\\n }\\n else if (Array.isArray(data)) {\\n for (let i = 0; i < data.length; i++) {\\n data[i] = _reconstructPacket(data[i], buffers);\\n }\\n }\\n else if (typeof data === \\\"object\\\") {\\n for (const key in data) {\\n if (Object.prototype.hasOwnProperty.call(data, key)) {\\n data[key] = _reconstructPacket(data[key], buffers);\\n }\\n }\\n }\\n return data;\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/socket.io-parser/build/esm/binary.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/socket.io-parser/build/esm/index.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/socket.io-parser/build/esm/index.js ***!\n \\**********************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ Decoder: () => (/* binding */ Decoder),\\n/* harmony export */ Encoder: () => (/* binding */ Encoder),\\n/* harmony export */ PacketType: () => (/* binding */ PacketType),\\n/* harmony export */ protocol: () => (/* binding */ protocol)\\n/* harmony export */ });\\n/* harmony import */ var _socket_io_component_emitter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @socket.io/component-emitter */ \\\"./node_modules/@socket.io/component-emitter/index.mjs\\\");\\n/* harmony import */ var _binary_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./binary.js */ \\\"./node_modules/socket.io-parser/build/esm/binary.js\\\");\\n/* harmony import */ var _is_binary_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./is-binary.js */ \\\"./node_modules/socket.io-parser/build/esm/is-binary.js\\\");\\n\\n\\n\\n/**\\n * These strings must not be used as event names, as they have a special meaning.\\n */\\nconst RESERVED_EVENTS = [\\n \\\"connect\\\",\\n \\\"connect_error\\\",\\n \\\"disconnect\\\",\\n \\\"disconnecting\\\",\\n \\\"newListener\\\",\\n \\\"removeListener\\\", // used by the Node.js EventEmitter\\n];\\n/**\\n * Protocol version.\\n *\\n * @public\\n */\\nconst protocol = 5;\\nvar PacketType;\\n(function (PacketType) {\\n PacketType[PacketType[\\\"CONNECT\\\"] = 0] = \\\"CONNECT\\\";\\n PacketType[PacketType[\\\"DISCONNECT\\\"] = 1] = \\\"DISCONNECT\\\";\\n PacketType[PacketType[\\\"EVENT\\\"] = 2] = \\\"EVENT\\\";\\n PacketType[PacketType[\\\"ACK\\\"] = 3] = \\\"ACK\\\";\\n PacketType[PacketType[\\\"CONNECT_ERROR\\\"] = 4] = \\\"CONNECT_ERROR\\\";\\n PacketType[PacketType[\\\"BINARY_EVENT\\\"] = 5] = \\\"BINARY_EVENT\\\";\\n PacketType[PacketType[\\\"BINARY_ACK\\\"] = 6] = \\\"BINARY_ACK\\\";\\n})(PacketType || (PacketType = {}));\\n/**\\n * A socket.io Encoder instance\\n */\\nclass Encoder {\\n /**\\n * Encoder constructor\\n *\\n * @param {function} replacer - custom replacer to pass down to JSON.parse\\n */\\n constructor(replacer) {\\n this.replacer = replacer;\\n }\\n /**\\n * Encode a packet as a single string if non-binary, or as a\\n * buffer sequence, depending on packet type.\\n *\\n * @param {Object} obj - packet object\\n */\\n encode(obj) {\\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\\n if ((0,_is_binary_js__WEBPACK_IMPORTED_MODULE_2__.hasBinary)(obj)) {\\n return this.encodeAsBinary({\\n type: obj.type === PacketType.EVENT\\n ? PacketType.BINARY_EVENT\\n : PacketType.BINARY_ACK,\\n nsp: obj.nsp,\\n data: obj.data,\\n id: obj.id,\\n });\\n }\\n }\\n return [this.encodeAsString(obj)];\\n }\\n /**\\n * Encode packet as string.\\n */\\n encodeAsString(obj) {\\n // first is type\\n let str = \\\"\\\" + obj.type;\\n // attachments if we have them\\n if (obj.type === PacketType.BINARY_EVENT ||\\n obj.type === PacketType.BINARY_ACK) {\\n str += obj.attachments + \\\"-\\\";\\n }\\n // if we have a namespace other than `/`\\n // we append it followed by a comma `,`\\n if (obj.nsp && \\\"/\\\" !== obj.nsp) {\\n str += obj.nsp + \\\",\\\";\\n }\\n // immediately followed by the id\\n if (null != obj.id) {\\n str += obj.id;\\n }\\n // json data\\n if (null != obj.data) {\\n str += JSON.stringify(obj.data, this.replacer);\\n }\\n return str;\\n }\\n /**\\n * Encode packet as 'buffer sequence' by removing blobs, and\\n * deconstructing packet into object with placeholders and\\n * a list of buffers.\\n */\\n encodeAsBinary(obj) {\\n const deconstruction = (0,_binary_js__WEBPACK_IMPORTED_MODULE_1__.deconstructPacket)(obj);\\n const pack = this.encodeAsString(deconstruction.packet);\\n const buffers = deconstruction.buffers;\\n buffers.unshift(pack); // add packet info to beginning of data list\\n return buffers; // write all the buffers\\n }\\n}\\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\\nfunction isObject(value) {\\n return Object.prototype.toString.call(value) === \\\"[object Object]\\\";\\n}\\n/**\\n * A socket.io Decoder instance\\n *\\n * @return {Object} decoder\\n */\\nclass Decoder extends _socket_io_component_emitter__WEBPACK_IMPORTED_MODULE_0__.Emitter {\\n /**\\n * Decoder constructor\\n *\\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\\n */\\n constructor(reviver) {\\n super();\\n this.reviver = reviver;\\n }\\n /**\\n * Decodes an encoded packet string into packet JSON.\\n *\\n * @param {String} obj - encoded packet\\n */\\n add(obj) {\\n let packet;\\n if (typeof obj === \\\"string\\\") {\\n if (this.reconstructor) {\\n throw new Error(\\\"got plaintext data when reconstructing a packet\\\");\\n }\\n packet = this.decodeString(obj);\\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\\n // binary packet's json\\n this.reconstructor = new BinaryReconstructor(packet);\\n // no attachments, labeled binary but no binary data to follow\\n if (packet.attachments === 0) {\\n super.emitReserved(\\\"decoded\\\", packet);\\n }\\n }\\n else {\\n // non-binary full packet\\n super.emitReserved(\\\"decoded\\\", packet);\\n }\\n }\\n else if ((0,_is_binary_js__WEBPACK_IMPORTED_MODULE_2__.isBinary)(obj) || obj.base64) {\\n // raw binary data\\n if (!this.reconstructor) {\\n throw new Error(\\\"got binary data when not reconstructing a packet\\\");\\n }\\n else {\\n packet = this.reconstructor.takeBinaryData(obj);\\n if (packet) {\\n // received final buffer\\n this.reconstructor = null;\\n super.emitReserved(\\\"decoded\\\", packet);\\n }\\n }\\n }\\n else {\\n throw new Error(\\\"Unknown type: \\\" + obj);\\n }\\n }\\n /**\\n * Decode a packet String (JSON data)\\n *\\n * @param {String} str\\n * @return {Object} packet\\n */\\n decodeString(str) {\\n let i = 0;\\n // look up type\\n const p = {\\n type: Number(str.charAt(0)),\\n };\\n if (PacketType[p.type] === undefined) {\\n throw new Error(\\\"unknown packet type \\\" + p.type);\\n }\\n // look up attachments if type binary\\n if (p.type === PacketType.BINARY_EVENT ||\\n p.type === PacketType.BINARY_ACK) {\\n const start = i + 1;\\n while (str.charAt(++i) !== \\\"-\\\" && i != str.length) { }\\n const buf = str.substring(start, i);\\n if (buf != Number(buf) || str.charAt(i) !== \\\"-\\\") {\\n throw new Error(\\\"Illegal attachments\\\");\\n }\\n p.attachments = Number(buf);\\n }\\n // look up namespace (if any)\\n if (\\\"/\\\" === str.charAt(i + 1)) {\\n const start = i + 1;\\n while (++i) {\\n const c = str.charAt(i);\\n if (\\\",\\\" === c)\\n break;\\n if (i === str.length)\\n break;\\n }\\n p.nsp = str.substring(start, i);\\n }\\n else {\\n p.nsp = \\\"/\\\";\\n }\\n // look up id\\n const next = str.charAt(i + 1);\\n if (\\\"\\\" !== next && Number(next) == next) {\\n const start = i + 1;\\n while (++i) {\\n const c = str.charAt(i);\\n if (null == c || Number(c) != c) {\\n --i;\\n break;\\n }\\n if (i === str.length)\\n break;\\n }\\n p.id = Number(str.substring(start, i + 1));\\n }\\n // look up json data\\n if (str.charAt(++i)) {\\n const payload = this.tryParse(str.substr(i));\\n if (Decoder.isPayloadValid(p.type, payload)) {\\n p.data = payload;\\n }\\n else {\\n throw new Error(\\\"invalid payload\\\");\\n }\\n }\\n return p;\\n }\\n tryParse(str) {\\n try {\\n return JSON.parse(str, this.reviver);\\n }\\n catch (e) {\\n return false;\\n }\\n }\\n static isPayloadValid(type, payload) {\\n switch (type) {\\n case PacketType.CONNECT:\\n return isObject(payload);\\n case PacketType.DISCONNECT:\\n return payload === undefined;\\n case PacketType.CONNECT_ERROR:\\n return typeof payload === \\\"string\\\" || isObject(payload);\\n case PacketType.EVENT:\\n case PacketType.BINARY_EVENT:\\n return (Array.isArray(payload) &&\\n (typeof payload[0] === \\\"number\\\" ||\\n (typeof payload[0] === \\\"string\\\" &&\\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\\n case PacketType.ACK:\\n case PacketType.BINARY_ACK:\\n return Array.isArray(payload);\\n }\\n }\\n /**\\n * Deallocates a parser's resources\\n */\\n destroy() {\\n if (this.reconstructor) {\\n this.reconstructor.finishedReconstruction();\\n this.reconstructor = null;\\n }\\n }\\n}\\n/**\\n * A manager of a binary event's 'buffer sequence'. Should\\n * be constructed whenever a packet of type BINARY_EVENT is\\n * decoded.\\n *\\n * @param {Object} packet\\n * @return {BinaryReconstructor} initialized reconstructor\\n */\\nclass BinaryReconstructor {\\n constructor(packet) {\\n this.packet = packet;\\n this.buffers = [];\\n this.reconPack = packet;\\n }\\n /**\\n * Method to be called when binary data received from connection\\n * after a BINARY_EVENT packet.\\n *\\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\\n * @return {null | Object} returns null if more binary data is expected or\\n * a reconstructed packet object if all buffers have been received.\\n */\\n takeBinaryData(binData) {\\n this.buffers.push(binData);\\n if (this.buffers.length === this.reconPack.attachments) {\\n // done with buffer list\\n const packet = (0,_binary_js__WEBPACK_IMPORTED_MODULE_1__.reconstructPacket)(this.reconPack, this.buffers);\\n this.finishedReconstruction();\\n return packet;\\n }\\n return null;\\n }\\n /**\\n * Cleans up binary packet reconstruction variables.\\n */\\n finishedReconstruction() {\\n this.reconPack = null;\\n this.buffers = [];\\n }\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/socket.io-parser/build/esm/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/socket.io-parser/build/esm/is-binary.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/socket.io-parser/build/esm/is-binary.js ***!\n \\**************************************************************/\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ hasBinary: () => (/* binding */ hasBinary),\\n/* harmony export */ isBinary: () => (/* binding */ isBinary)\\n/* harmony export */ });\\nconst withNativeArrayBuffer = typeof ArrayBuffer === \\\"function\\\";\\nconst isView = (obj) => {\\n return typeof ArrayBuffer.isView === \\\"function\\\"\\n ? ArrayBuffer.isView(obj)\\n : obj.buffer instanceof ArrayBuffer;\\n};\\nconst toString = Object.prototype.toString;\\nconst withNativeBlob = typeof Blob === \\\"function\\\" ||\\n (typeof Blob !== \\\"undefined\\\" &&\\n toString.call(Blob) === \\\"[object BlobConstructor]\\\");\\nconst withNativeFile = typeof File === \\\"function\\\" ||\\n (typeof File !== \\\"undefined\\\" &&\\n toString.call(File) === \\\"[object FileConstructor]\\\");\\n/**\\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\\n *\\n * @private\\n */\\nfunction isBinary(obj) {\\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\\n (withNativeBlob && obj instanceof Blob) ||\\n (withNativeFile && obj instanceof File));\\n}\\nfunction hasBinary(obj, toJSON) {\\n if (!obj || typeof obj !== \\\"object\\\") {\\n return false;\\n }\\n if (Array.isArray(obj)) {\\n for (let i = 0, l = obj.length; i < l; i++) {\\n if (hasBinary(obj[i])) {\\n return true;\\n }\\n }\\n return false;\\n }\\n if (isBinary(obj)) {\\n return true;\\n }\\n if (obj.toJSON &&\\n typeof obj.toJSON === \\\"function\\\" &&\\n arguments.length === 1) {\\n return hasBinary(obj.toJSON(), true);\\n }\\n for (const key in obj) {\\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\\n return true;\\n }\\n }\\n return false;\\n}\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/socket.io-parser/build/esm/is-binary.js?\");\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_1950667__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_1950667__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/amd options */\n/******/ \t(() => {\n/******/ \t\t__nested_webpack_require_1950667__.amdO = {};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t(() => {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__nested_webpack_require_1950667__.n = (module) => {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\t() => (module['default']) :\n/******/ \t\t\t\t() => (module);\n/******/ \t\t\t__nested_webpack_require_1950667__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__nested_webpack_require_1950667__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__nested_webpack_require_1950667__.o(definition, key) && !__nested_webpack_require_1950667__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/global */\n/******/ \t(() => {\n/******/ \t\t__nested_webpack_require_1950667__.g = (function() {\n/******/ \t\t\tif (typeof globalThis === 'object') return globalThis;\n/******/ \t\t\ttry {\n/******/ \t\t\t\treturn this || new Function('return this')();\n/******/ \t\t\t} catch (e) {\n/******/ \t\t\t\tif (typeof window === 'object') return window;\n/******/ \t\t\t}\n/******/ \t\t})();\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__nested_webpack_require_1950667__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__nested_webpack_require_1950667__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module can't be inlined because the eval devtool is used.\n/******/ \tvar __nested_webpack_exports__ = __nested_webpack_require_1950667__(\"./src/index.ts\");\n/******/ \t\n/******/ \treturn __nested_webpack_exports__;\n/******/ })()\n;\n});\n\n//# sourceURL=webpack://demo/./node_modules/@dannadori/voice-changer-client-js/dist/index.js?");
+eval("/*\n * ATTENTION: The \"eval\" devtool has been used (maybe by default in mode: \"development\").\n * This devtool is neither made for production nor for readable output files.\n * It uses \"eval()\" calls to create a separate source file in the browser devtools.\n * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)\n * or disable the default devtool with \"devtool: false\".\n * If you are looking for production-ready output files, see mode: \"production\" (https://webpack.js.org/configuration/mode/).\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\telse { var i, a; }\n})(typeof self !== 'undefined' ? self : this, (__WEBPACK_EXTERNAL_MODULE_react__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./node_modules/@protobufjs/aspromise/index.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/@protobufjs/aspromise/index.js ***!\n \\*****************************************************/\n/***/ ((module) => {\n\n\"use strict\";\neval(\"\\r\\nmodule.exports = asPromise;\\r\\n\\r\\n/**\\r\\n * Callback as used by {@link util.asPromise}.\\r\\n * @typedef asPromiseCallback\\r\\n * @type {function}\\r\\n * @param {Error|null} error Error, if any\\r\\n * @param {...*} params Additional arguments\\r\\n * @returns {undefined}\\r\\n */\\r\\n\\r\\n/**\\r\\n * Returns a promise from a node-style callback function.\\r\\n * @memberof util\\r\\n * @param {asPromiseCallback} fn Function to call\\r\\n * @param {*} ctx Function context\\r\\n * @param {...*} params Function arguments\\r\\n * @returns {Promise<*>} Promisified function\\r\\n */\\r\\nfunction asPromise(fn, ctx/*, varargs */) {\\r\\n var params = new Array(arguments.length - 1),\\r\\n offset = 0,\\r\\n index = 2,\\r\\n pending = true;\\r\\n while (index < arguments.length)\\r\\n params[offset++] = arguments[index++];\\r\\n return new Promise(function executor(resolve, reject) {\\r\\n params[offset] = function callback(err/*, varargs */) {\\r\\n if (pending) {\\r\\n pending = false;\\r\\n if (err)\\r\\n reject(err);\\r\\n else {\\r\\n var params = new Array(arguments.length - 1),\\r\\n offset = 0;\\r\\n while (offset < params.length)\\r\\n params[offset++] = arguments[offset];\\r\\n resolve.apply(null, params);\\r\\n }\\r\\n }\\r\\n };\\r\\n try {\\r\\n fn.apply(ctx || null, params);\\r\\n } catch (err) {\\r\\n if (pending) {\\r\\n pending = false;\\r\\n reject(err);\\r\\n }\\r\\n }\\r\\n });\\r\\n}\\r\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/@protobufjs/aspromise/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/@protobufjs/base64/index.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/@protobufjs/base64/index.js ***!\n \\**************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\r\\n\\r\\n/**\\r\\n * A minimal base64 implementation for number arrays.\\r\\n * @memberof util\\r\\n * @namespace\\r\\n */\\r\\nvar base64 = exports;\\r\\n\\r\\n/**\\r\\n * Calculates the byte length of a base64 encoded string.\\r\\n * @param {string} string Base64 encoded string\\r\\n * @returns {number} Byte length\\r\\n */\\r\\nbase64.length = function length(string) {\\r\\n var p = string.length;\\r\\n if (!p)\\r\\n return 0;\\r\\n var n = 0;\\r\\n while (--p % 4 > 1 && string.charAt(p) === \\\"=\\\")\\r\\n ++n;\\r\\n return Math.ceil(string.length * 3) / 4 - n;\\r\\n};\\r\\n\\r\\n// Base64 encoding table\\r\\nvar b64 = new Array(64);\\r\\n\\r\\n// Base64 decoding table\\r\\nvar s64 = new Array(123);\\r\\n\\r\\n// 65..90, 97..122, 48..57, 43, 47\\r\\nfor (var i = 0; i < 64;)\\r\\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\\r\\n\\r\\n/**\\r\\n * Encodes a buffer to a base64 encoded string.\\r\\n * @param {Uint8Array} buffer Source buffer\\r\\n * @param {number} start Source start\\r\\n * @param {number} end Source end\\r\\n * @returns {string} Base64 encoded string\\r\\n */\\r\\nbase64.encode = function encode(buffer, start, end) {\\r\\n var parts = null,\\r\\n chunk = [];\\r\\n var i = 0, // output index\\r\\n j = 0, // goto index\\r\\n t; // temporary\\r\\n while (start < end) {\\r\\n var b = buffer[start++];\\r\\n switch (j) {\\r\\n case 0:\\r\\n chunk[i++] = b64[b >> 2];\\r\\n t = (b & 3) << 4;\\r\\n j = 1;\\r\\n break;\\r\\n case 1:\\r\\n chunk[i++] = b64[t | b >> 4];\\r\\n t = (b & 15) << 2;\\r\\n j = 2;\\r\\n break;\\r\\n case 2:\\r\\n chunk[i++] = b64[t | b >> 6];\\r\\n chunk[i++] = b64[b & 63];\\r\\n j = 0;\\r\\n break;\\r\\n }\\r\\n if (i > 8191) {\\r\\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\\r\\n i = 0;\\r\\n }\\r\\n }\\r\\n if (j) {\\r\\n chunk[i++] = b64[t];\\r\\n chunk[i++] = 61;\\r\\n if (j === 1)\\r\\n chunk[i++] = 61;\\r\\n }\\r\\n if (parts) {\\r\\n if (i)\\r\\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\\r\\n return parts.join(\\\"\\\");\\r\\n }\\r\\n return String.fromCharCode.apply(String, chunk.slice(0, i));\\r\\n};\\r\\n\\r\\nvar invalidEncoding = \\\"invalid encoding\\\";\\r\\n\\r\\n/**\\r\\n * Decodes a base64 encoded string to a buffer.\\r\\n * @param {string} string Source string\\r\\n * @param {Uint8Array} buffer Destination buffer\\r\\n * @param {number} offset Destination offset\\r\\n * @returns {number} Number of bytes written\\r\\n * @throws {Error} If encoding is invalid\\r\\n */\\r\\nbase64.decode = function decode(string, buffer, offset) {\\r\\n var start = offset;\\r\\n var j = 0, // goto index\\r\\n t; // temporary\\r\\n for (var i = 0; i < string.length;) {\\r\\n var c = string.charCodeAt(i++);\\r\\n if (c === 61 && j > 1)\\r\\n break;\\r\\n if ((c = s64[c]) === undefined)\\r\\n throw Error(invalidEncoding);\\r\\n switch (j) {\\r\\n case 0:\\r\\n t = c;\\r\\n j = 1;\\r\\n break;\\r\\n case 1:\\r\\n buffer[offset++] = t << 2 | (c & 48) >> 4;\\r\\n t = c;\\r\\n j = 2;\\r\\n break;\\r\\n case 2:\\r\\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\\r\\n t = c;\\r\\n j = 3;\\r\\n break;\\r\\n case 3:\\r\\n buffer[offset++] = (t & 3) << 6 | c;\\r\\n j = 0;\\r\\n break;\\r\\n }\\r\\n }\\r\\n if (j === 1)\\r\\n throw Error(invalidEncoding);\\r\\n return offset - start;\\r\\n};\\r\\n\\r\\n/**\\r\\n * Tests if the specified string appears to be base64 encoded.\\r\\n * @param {string} string String to test\\r\\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\\r\\n */\\r\\nbase64.test = function test(string) {\\r\\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\\r\\n};\\r\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/@protobufjs/base64/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/@protobufjs/eventemitter/index.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/@protobufjs/eventemitter/index.js ***!\n \\********************************************************/\n/***/ ((module) => {\n\n\"use strict\";\neval(\"\\r\\nmodule.exports = EventEmitter;\\r\\n\\r\\n/**\\r\\n * Constructs a new event emitter instance.\\r\\n * @classdesc A minimal event emitter.\\r\\n * @memberof util\\r\\n * @constructor\\r\\n */\\r\\nfunction EventEmitter() {\\r\\n\\r\\n /**\\r\\n * Registered listeners.\\r\\n * @type {Object.}\\r\\n * @private\\r\\n */\\r\\n this._listeners = {};\\r\\n}\\r\\n\\r\\n/**\\r\\n * Registers an event listener.\\r\\n * @param {string} evt Event name\\r\\n * @param {function} fn Listener\\r\\n * @param {*} [ctx] Listener context\\r\\n * @returns {util.EventEmitter} `this`\\r\\n */\\r\\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\\r\\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\\r\\n fn : fn,\\r\\n ctx : ctx || this\\r\\n });\\r\\n return this;\\r\\n};\\r\\n\\r\\n/**\\r\\n * Removes an event listener or any matching listeners if arguments are omitted.\\r\\n * @param {string} [evt] Event name. Removes all listeners if omitted.\\r\\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\\r\\n * @returns {util.EventEmitter} `this`\\r\\n */\\r\\nEventEmitter.prototype.off = function off(evt, fn) {\\r\\n if (evt === undefined)\\r\\n this._listeners = {};\\r\\n else {\\r\\n if (fn === undefined)\\r\\n this._listeners[evt] = [];\\r\\n else {\\r\\n var listeners = this._listeners[evt];\\r\\n for (var i = 0; i < listeners.length;)\\r\\n if (listeners[i].fn === fn)\\r\\n listeners.splice(i, 1);\\r\\n else\\r\\n ++i;\\r\\n }\\r\\n }\\r\\n return this;\\r\\n};\\r\\n\\r\\n/**\\r\\n * Emits an event by calling its listeners with the specified arguments.\\r\\n * @param {string} evt Event name\\r\\n * @param {...*} args Arguments\\r\\n * @returns {util.EventEmitter} `this`\\r\\n */\\r\\nEventEmitter.prototype.emit = function emit(evt) {\\r\\n var listeners = this._listeners[evt];\\r\\n if (listeners) {\\r\\n var args = [],\\r\\n i = 1;\\r\\n for (; i < arguments.length;)\\r\\n args.push(arguments[i++]);\\r\\n for (i = 0; i < listeners.length;)\\r\\n listeners[i].fn.apply(listeners[i++].ctx, args);\\r\\n }\\r\\n return this;\\r\\n};\\r\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/@protobufjs/eventemitter/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/@protobufjs/float/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/@protobufjs/float/index.js ***!\n \\*************************************************/\n/***/ ((module) => {\n\n\"use strict\";\neval(\"\\r\\n\\r\\nmodule.exports = factory(factory);\\r\\n\\r\\n/**\\r\\n * Reads / writes floats / doubles from / to buffers.\\r\\n * @name util.float\\r\\n * @namespace\\r\\n */\\r\\n\\r\\n/**\\r\\n * Writes a 32 bit float to a buffer using little endian byte order.\\r\\n * @name util.float.writeFloatLE\\r\\n * @function\\r\\n * @param {number} val Value to write\\r\\n * @param {Uint8Array} buf Target buffer\\r\\n * @param {number} pos Target buffer offset\\r\\n * @returns {undefined}\\r\\n */\\r\\n\\r\\n/**\\r\\n * Writes a 32 bit float to a buffer using big endian byte order.\\r\\n * @name util.float.writeFloatBE\\r\\n * @function\\r\\n * @param {number} val Value to write\\r\\n * @param {Uint8Array} buf Target buffer\\r\\n * @param {number} pos Target buffer offset\\r\\n * @returns {undefined}\\r\\n */\\r\\n\\r\\n/**\\r\\n * Reads a 32 bit float from a buffer using little endian byte order.\\r\\n * @name util.float.readFloatLE\\r\\n * @function\\r\\n * @param {Uint8Array} buf Source buffer\\r\\n * @param {number} pos Source buffer offset\\r\\n * @returns {number} Value read\\r\\n */\\r\\n\\r\\n/**\\r\\n * Reads a 32 bit float from a buffer using big endian byte order.\\r\\n * @name util.float.readFloatBE\\r\\n * @function\\r\\n * @param {Uint8Array} buf Source buffer\\r\\n * @param {number} pos Source buffer offset\\r\\n * @returns {number} Value read\\r\\n */\\r\\n\\r\\n/**\\r\\n * Writes a 64 bit double to a buffer using little endian byte order.\\r\\n * @name util.float.writeDoubleLE\\r\\n * @function\\r\\n * @param {number} val Value to write\\r\\n * @param {Uint8Array} buf Target buffer\\r\\n * @param {number} pos Target buffer offset\\r\\n * @returns {undefined}\\r\\n */\\r\\n\\r\\n/**\\r\\n * Writes a 64 bit double to a buffer using big endian byte order.\\r\\n * @name util.float.writeDoubleBE\\r\\n * @function\\r\\n * @param {number} val Value to write\\r\\n * @param {Uint8Array} buf Target buffer\\r\\n * @param {number} pos Target buffer offset\\r\\n * @returns {undefined}\\r\\n */\\r\\n\\r\\n/**\\r\\n * Reads a 64 bit double from a buffer using little endian byte order.\\r\\n * @name util.float.readDoubleLE\\r\\n * @function\\r\\n * @param {Uint8Array} buf Source buffer\\r\\n * @param {number} pos Source buffer offset\\r\\n * @returns {number} Value read\\r\\n */\\r\\n\\r\\n/**\\r\\n * Reads a 64 bit double from a buffer using big endian byte order.\\r\\n * @name util.float.readDoubleBE\\r\\n * @function\\r\\n * @param {Uint8Array} buf Source buffer\\r\\n * @param {number} pos Source buffer offset\\r\\n * @returns {number} Value read\\r\\n */\\r\\n\\r\\n// Factory function for the purpose of node-based testing in modified global environments\\r\\nfunction factory(exports) {\\r\\n\\r\\n // float: typed array\\r\\n if (typeof Float32Array !== \\\"undefined\\\") (function() {\\r\\n\\r\\n var f32 = new Float32Array([ -0 ]),\\r\\n f8b = new Uint8Array(f32.buffer),\\r\\n le = f8b[3] === 128;\\r\\n\\r\\n function writeFloat_f32_cpy(val, buf, pos) {\\r\\n f32[0] = val;\\r\\n buf[pos ] = f8b[0];\\r\\n buf[pos + 1] = f8b[1];\\r\\n buf[pos + 2] = f8b[2];\\r\\n buf[pos + 3] = f8b[3];\\r\\n }\\r\\n\\r\\n function writeFloat_f32_rev(val, buf, pos) {\\r\\n f32[0] = val;\\r\\n buf[pos ] = f8b[3];\\r\\n buf[pos + 1] = f8b[2];\\r\\n buf[pos + 2] = f8b[1];\\r\\n buf[pos + 3] = f8b[0];\\r\\n }\\r\\n\\r\\n /* istanbul ignore next */\\r\\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\\r\\n /* istanbul ignore next */\\r\\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\\r\\n\\r\\n function readFloat_f32_cpy(buf, pos) {\\r\\n f8b[0] = buf[pos ];\\r\\n f8b[1] = buf[pos + 1];\\r\\n f8b[2] = buf[pos + 2];\\r\\n f8b[3] = buf[pos + 3];\\r\\n return f32[0];\\r\\n }\\r\\n\\r\\n function readFloat_f32_rev(buf, pos) {\\r\\n f8b[3] = buf[pos ];\\r\\n f8b[2] = buf[pos + 1];\\r\\n f8b[1] = buf[pos + 2];\\r\\n f8b[0] = buf[pos + 3];\\r\\n return f32[0];\\r\\n }\\r\\n\\r\\n /* istanbul ignore next */\\r\\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\\r\\n /* istanbul ignore next */\\r\\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\\r\\n\\r\\n // float: ieee754\\r\\n })(); else (function() {\\r\\n\\r\\n function writeFloat_ieee754(writeUint, val, buf, pos) {\\r\\n var sign = val < 0 ? 1 : 0;\\r\\n if (sign)\\r\\n val = -val;\\r\\n if (val === 0)\\r\\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\\r\\n else if (isNaN(val))\\r\\n writeUint(2143289344, buf, pos);\\r\\n else if (val > 3.4028234663852886e+38) // +-Infinity\\r\\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\\r\\n else if (val < 1.1754943508222875e-38) // denormal\\r\\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\\r\\n else {\\r\\n var exponent = Math.floor(Math.log(val) / Math.LN2),\\r\\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\\r\\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\\r\\n }\\r\\n }\\r\\n\\r\\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\\r\\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\\r\\n\\r\\n function readFloat_ieee754(readUint, buf, pos) {\\r\\n var uint = readUint(buf, pos),\\r\\n sign = (uint >> 31) * 2 + 1,\\r\\n exponent = uint >>> 23 & 255,\\r\\n mantissa = uint & 8388607;\\r\\n return exponent === 255\\r\\n ? mantissa\\r\\n ? NaN\\r\\n : sign * Infinity\\r\\n : exponent === 0 // denormal\\r\\n ? sign * 1.401298464324817e-45 * mantissa\\r\\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\\r\\n }\\r\\n\\r\\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\\r\\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\\r\\n\\r\\n })();\\r\\n\\r\\n // double: typed array\\r\\n if (typeof Float64Array !== \\\"undefined\\\") (function() {\\r\\n\\r\\n var f64 = new Float64Array([-0]),\\r\\n f8b = new Uint8Array(f64.buffer),\\r\\n le = f8b[7] === 128;\\r\\n\\r\\n function writeDouble_f64_cpy(val, buf, pos) {\\r\\n f64[0] = val;\\r\\n buf[pos ] = f8b[0];\\r\\n buf[pos + 1] = f8b[1];\\r\\n buf[pos + 2] = f8b[2];\\r\\n buf[pos + 3] = f8b[3];\\r\\n buf[pos + 4] = f8b[4];\\r\\n buf[pos + 5] = f8b[5];\\r\\n buf[pos + 6] = f8b[6];\\r\\n buf[pos + 7] = f8b[7];\\r\\n }\\r\\n\\r\\n function writeDouble_f64_rev(val, buf, pos) {\\r\\n f64[0] = val;\\r\\n buf[pos ] = f8b[7];\\r\\n buf[pos + 1] = f8b[6];\\r\\n buf[pos + 2] = f8b[5];\\r\\n buf[pos + 3] = f8b[4];\\r\\n buf[pos + 4] = f8b[3];\\r\\n buf[pos + 5] = f8b[2];\\r\\n buf[pos + 6] = f8b[1];\\r\\n buf[pos + 7] = f8b[0];\\r\\n }\\r\\n\\r\\n /* istanbul ignore next */\\r\\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\\r\\n /* istanbul ignore next */\\r\\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\\r\\n\\r\\n function readDouble_f64_cpy(buf, pos) {\\r\\n f8b[0] = buf[pos ];\\r\\n f8b[1] = buf[pos + 1];\\r\\n f8b[2] = buf[pos + 2];\\r\\n f8b[3] = buf[pos + 3];\\r\\n f8b[4] = buf[pos + 4];\\r\\n f8b[5] = buf[pos + 5];\\r\\n f8b[6] = buf[pos + 6];\\r\\n f8b[7] = buf[pos + 7];\\r\\n return f64[0];\\r\\n }\\r\\n\\r\\n function readDouble_f64_rev(buf, pos) {\\r\\n f8b[7] = buf[pos ];\\r\\n f8b[6] = buf[pos + 1];\\r\\n f8b[5] = buf[pos + 2];\\r\\n f8b[4] = buf[pos + 3];\\r\\n f8b[3] = buf[pos + 4];\\r\\n f8b[2] = buf[pos + 5];\\r\\n f8b[1] = buf[pos + 6];\\r\\n f8b[0] = buf[pos + 7];\\r\\n return f64[0];\\r\\n }\\r\\n\\r\\n /* istanbul ignore next */\\r\\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\\r\\n /* istanbul ignore next */\\r\\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\\r\\n\\r\\n // double: ieee754\\r\\n })(); else (function() {\\r\\n\\r\\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\\r\\n var sign = val < 0 ? 1 : 0;\\r\\n if (sign)\\r\\n val = -val;\\r\\n if (val === 0) {\\r\\n writeUint(0, buf, pos + off0);\\r\\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\\r\\n } else if (isNaN(val)) {\\r\\n writeUint(0, buf, pos + off0);\\r\\n writeUint(2146959360, buf, pos + off1);\\r\\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\\r\\n writeUint(0, buf, pos + off0);\\r\\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\\r\\n } else {\\r\\n var mantissa;\\r\\n if (val < 2.2250738585072014e-308) { // denormal\\r\\n mantissa = val / 5e-324;\\r\\n writeUint(mantissa >>> 0, buf, pos + off0);\\r\\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\\r\\n } else {\\r\\n var exponent = Math.floor(Math.log(val) / Math.LN2);\\r\\n if (exponent === 1024)\\r\\n exponent = 1023;\\r\\n mantissa = val * Math.pow(2, -exponent);\\r\\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\\r\\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\\r\\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\\r\\n\\r\\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\\r\\n var lo = readUint(buf, pos + off0),\\r\\n hi = readUint(buf, pos + off1);\\r\\n var sign = (hi >> 31) * 2 + 1,\\r\\n exponent = hi >>> 20 & 2047,\\r\\n mantissa = 4294967296 * (hi & 1048575) + lo;\\r\\n return exponent === 2047\\r\\n ? mantissa\\r\\n ? NaN\\r\\n : sign * Infinity\\r\\n : exponent === 0 // denormal\\r\\n ? sign * 5e-324 * mantissa\\r\\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\\r\\n }\\r\\n\\r\\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\\r\\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\\r\\n\\r\\n })();\\r\\n\\r\\n return exports;\\r\\n}\\r\\n\\r\\n// uint helpers\\r\\n\\r\\nfunction writeUintLE(val, buf, pos) {\\r\\n buf[pos ] = val & 255;\\r\\n buf[pos + 1] = val >>> 8 & 255;\\r\\n buf[pos + 2] = val >>> 16 & 255;\\r\\n buf[pos + 3] = val >>> 24;\\r\\n}\\r\\n\\r\\nfunction writeUintBE(val, buf, pos) {\\r\\n buf[pos ] = val >>> 24;\\r\\n buf[pos + 1] = val >>> 16 & 255;\\r\\n buf[pos + 2] = val >>> 8 & 255;\\r\\n buf[pos + 3] = val & 255;\\r\\n}\\r\\n\\r\\nfunction readUintLE(buf, pos) {\\r\\n return (buf[pos ]\\r\\n | buf[pos + 1] << 8\\r\\n | buf[pos + 2] << 16\\r\\n | buf[pos + 3] << 24) >>> 0;\\r\\n}\\r\\n\\r\\nfunction readUintBE(buf, pos) {\\r\\n return (buf[pos ] << 24\\r\\n | buf[pos + 1] << 16\\r\\n | buf[pos + 2] << 8\\r\\n | buf[pos + 3]) >>> 0;\\r\\n}\\r\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/@protobufjs/float/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/@protobufjs/inquire/index.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/@protobufjs/inquire/index.js ***!\n \\***************************************************/\n/***/ ((module) => {\n\n\"use strict\";\neval(\"\\r\\nmodule.exports = inquire;\\r\\n\\r\\n/**\\r\\n * Requires a module only if available.\\r\\n * @memberof util\\r\\n * @param {string} moduleName Module to require\\r\\n * @returns {?Object} Required module if available and not empty, otherwise `null`\\r\\n */\\r\\nfunction inquire(moduleName) {\\r\\n try {\\r\\n var mod = eval(\\\"quire\\\".replace(/^/,\\\"re\\\"))(moduleName); // eslint-disable-line no-eval\\r\\n if (mod && (mod.length || Object.keys(mod).length))\\r\\n return mod;\\r\\n } catch (e) {} // eslint-disable-line no-empty\\r\\n return null;\\r\\n}\\r\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/@protobufjs/inquire/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/@protobufjs/pool/index.js\":\n/*!************************************************!*\\\n !*** ./node_modules/@protobufjs/pool/index.js ***!\n \\************************************************/\n/***/ ((module) => {\n\n\"use strict\";\neval(\"\\r\\nmodule.exports = pool;\\r\\n\\r\\n/**\\r\\n * An allocator as used by {@link util.pool}.\\r\\n * @typedef PoolAllocator\\r\\n * @type {function}\\r\\n * @param {number} size Buffer size\\r\\n * @returns {Uint8Array} Buffer\\r\\n */\\r\\n\\r\\n/**\\r\\n * A slicer as used by {@link util.pool}.\\r\\n * @typedef PoolSlicer\\r\\n * @type {function}\\r\\n * @param {number} start Start offset\\r\\n * @param {number} end End offset\\r\\n * @returns {Uint8Array} Buffer slice\\r\\n * @this {Uint8Array}\\r\\n */\\r\\n\\r\\n/**\\r\\n * A general purpose buffer pool.\\r\\n * @memberof util\\r\\n * @function\\r\\n * @param {PoolAllocator} alloc Allocator\\r\\n * @param {PoolSlicer} slice Slicer\\r\\n * @param {number} [size=8192] Slab size\\r\\n * @returns {PoolAllocator} Pooled allocator\\r\\n */\\r\\nfunction pool(alloc, slice, size) {\\r\\n var SIZE = size || 8192;\\r\\n var MAX = SIZE >>> 1;\\r\\n var slab = null;\\r\\n var offset = SIZE;\\r\\n return function pool_alloc(size) {\\r\\n if (size < 1 || size > MAX)\\r\\n return alloc(size);\\r\\n if (offset + size > SIZE) {\\r\\n slab = alloc(SIZE);\\r\\n offset = 0;\\r\\n }\\r\\n var buf = slice.call(slab, offset, offset += size);\\r\\n if (offset & 7) // align to 32 bit\\r\\n offset = (offset | 7) + 1;\\r\\n return buf;\\r\\n };\\r\\n}\\r\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/@protobufjs/pool/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/@protobufjs/utf8/index.js\":\n/*!************************************************!*\\\n !*** ./node_modules/@protobufjs/utf8/index.js ***!\n \\************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\r\\n\\r\\n/**\\r\\n * A minimal UTF8 implementation for number arrays.\\r\\n * @memberof util\\r\\n * @namespace\\r\\n */\\r\\nvar utf8 = exports;\\r\\n\\r\\n/**\\r\\n * Calculates the UTF8 byte length of a string.\\r\\n * @param {string} string String\\r\\n * @returns {number} Byte length\\r\\n */\\r\\nutf8.length = function utf8_length(string) {\\r\\n var len = 0,\\r\\n c = 0;\\r\\n for (var i = 0; i < string.length; ++i) {\\r\\n c = string.charCodeAt(i);\\r\\n if (c < 128)\\r\\n len += 1;\\r\\n else if (c < 2048)\\r\\n len += 2;\\r\\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\\r\\n ++i;\\r\\n len += 4;\\r\\n } else\\r\\n len += 3;\\r\\n }\\r\\n return len;\\r\\n};\\r\\n\\r\\n/**\\r\\n * Reads UTF8 bytes as a string.\\r\\n * @param {Uint8Array} buffer Source buffer\\r\\n * @param {number} start Source start\\r\\n * @param {number} end Source end\\r\\n * @returns {string} String read\\r\\n */\\r\\nutf8.read = function utf8_read(buffer, start, end) {\\r\\n var len = end - start;\\r\\n if (len < 1)\\r\\n return \\\"\\\";\\r\\n var parts = null,\\r\\n chunk = [],\\r\\n i = 0, // char offset\\r\\n t; // temporary\\r\\n while (start < end) {\\r\\n t = buffer[start++];\\r\\n if (t < 128)\\r\\n chunk[i++] = t;\\r\\n else if (t > 191 && t < 224)\\r\\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\\r\\n else if (t > 239 && t < 365) {\\r\\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\\r\\n chunk[i++] = 0xD800 + (t >> 10);\\r\\n chunk[i++] = 0xDC00 + (t & 1023);\\r\\n } else\\r\\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\\r\\n if (i > 8191) {\\r\\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\\r\\n i = 0;\\r\\n }\\r\\n }\\r\\n if (parts) {\\r\\n if (i)\\r\\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\\r\\n return parts.join(\\\"\\\");\\r\\n }\\r\\n return String.fromCharCode.apply(String, chunk.slice(0, i));\\r\\n};\\r\\n\\r\\n/**\\r\\n * Writes a string as UTF8 bytes.\\r\\n * @param {string} string Source string\\r\\n * @param {Uint8Array} buffer Destination buffer\\r\\n * @param {number} offset Destination offset\\r\\n * @returns {number} Bytes written\\r\\n */\\r\\nutf8.write = function utf8_write(string, buffer, offset) {\\r\\n var start = offset,\\r\\n c1, // character 1\\r\\n c2; // character 2\\r\\n for (var i = 0; i < string.length; ++i) {\\r\\n c1 = string.charCodeAt(i);\\r\\n if (c1 < 128) {\\r\\n buffer[offset++] = c1;\\r\\n } else if (c1 < 2048) {\\r\\n buffer[offset++] = c1 >> 6 | 192;\\r\\n buffer[offset++] = c1 & 63 | 128;\\r\\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\\r\\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\\r\\n ++i;\\r\\n buffer[offset++] = c1 >> 18 | 240;\\r\\n buffer[offset++] = c1 >> 12 & 63 | 128;\\r\\n buffer[offset++] = c1 >> 6 & 63 | 128;\\r\\n buffer[offset++] = c1 & 63 | 128;\\r\\n } else {\\r\\n buffer[offset++] = c1 >> 12 | 224;\\r\\n buffer[offset++] = c1 >> 6 & 63 | 128;\\r\\n buffer[offset++] = c1 & 63 | 128;\\r\\n }\\r\\n }\\r\\n return offset - start;\\r\\n};\\r\\n\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/@protobufjs/utf8/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/activespeakerdetector/DefaultActiveSpeakerDetector.js\":\n/*!******************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/activespeakerdetector/DefaultActiveSpeakerDetector.js ***!\n \\******************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst IntervalScheduler_1 = __webpack_require__(/*! ../scheduler/IntervalScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js\\\");\\nclass DefaultActiveSpeakerDetector {\\n constructor(realtimeController, selfAttendeeId, hasBandwidthPriorityCallback, waitIntervalMs = 1000, updateIntervalMs = 200) {\\n this.realtimeController = realtimeController;\\n this.selfAttendeeId = selfAttendeeId;\\n this.hasBandwidthPriorityCallback = hasBandwidthPriorityCallback;\\n this.waitIntervalMs = waitIntervalMs;\\n this.updateIntervalMs = updateIntervalMs;\\n this.speakerScores = {};\\n this.speakerMuteState = {};\\n this.detectorCallbackToHandler = new Map();\\n this.detectorCallbackToScoresTimer = new Map();\\n this.detectorCallbackToActivityTimer = new Map();\\n this.hasBandwidthPriority = false;\\n this.mostRecentUpdateTimestamp = {};\\n }\\n needUpdate(attendeeId) {\\n if (!this.activeSpeakers) {\\n return true;\\n }\\n return ((this.speakerScores[attendeeId] === 0 && this.activeSpeakers.includes(attendeeId)) ||\\n (this.speakerScores[attendeeId] > 0 && !this.activeSpeakers.includes(attendeeId)));\\n }\\n updateActiveSpeakers(policy, callback, attendeeId) {\\n if (!this.needUpdate(attendeeId)) {\\n return;\\n }\\n const sortedSpeakers = [];\\n const attendeeIds = Object.keys(this.speakerScores);\\n for (let i = 0; i < attendeeIds.length; i++) {\\n const attendeeId = attendeeIds[i];\\n sortedSpeakers.push({ attendeeId: attendeeId, activeScore: this.speakerScores[attendeeId] });\\n }\\n const sortedAttendeeIds = sortedSpeakers\\n .sort((s1, s2) => s2.activeScore - s1.activeScore)\\n .filter(function (s) {\\n return s.activeScore > 0;\\n })\\n .map(function (s) {\\n return s.attendeeId;\\n });\\n this.activeSpeakers = sortedAttendeeIds;\\n callback(sortedAttendeeIds);\\n const selfIsActive = sortedAttendeeIds.length > 0 && sortedAttendeeIds[0] === this.selfAttendeeId;\\n const hasBandwidthPriority = selfIsActive && policy.prioritizeVideoSendBandwidthForActiveSpeaker();\\n const hasBandwidthPriorityDidChange = this.hasBandwidthPriority !== hasBandwidthPriority;\\n if (hasBandwidthPriorityDidChange) {\\n this.hasBandwidthPriority = hasBandwidthPriority;\\n this.hasBandwidthPriorityCallback(hasBandwidthPriority);\\n }\\n }\\n updateScore(policy, callback, attendeeId, volume, muted) {\\n const activeScore = policy.calculateScore(attendeeId, volume, muted);\\n if (this.speakerScores[attendeeId] !== activeScore) {\\n this.speakerScores[attendeeId] = activeScore;\\n this.mostRecentUpdateTimestamp[attendeeId] = Date.now();\\n this.updateActiveSpeakers(policy, callback, attendeeId);\\n }\\n }\\n subscribe(policy, callback, scoresCallback, scoresCallbackIntervalMs) {\\n const handler = (attendeeId, present) => {\\n if (!present) {\\n this.speakerScores[attendeeId] = 0;\\n this.mostRecentUpdateTimestamp[attendeeId] = Date.now();\\n this.updateActiveSpeakers(policy, callback, attendeeId);\\n return;\\n }\\n this.realtimeController.realtimeSubscribeToVolumeIndicator(attendeeId, (attendeeId, volume, muted, _signalStrength) => {\\n this.mostRecentUpdateTimestamp[attendeeId] = Date.now();\\n if (muted !== null) {\\n this.speakerMuteState[attendeeId] = muted;\\n }\\n this.updateScore(policy, callback, attendeeId, volume, muted);\\n });\\n };\\n this.detectorCallbackToHandler.set(callback, handler);\\n const activityTimer = new IntervalScheduler_1.default(this.updateIntervalMs);\\n activityTimer.start(() => {\\n for (const attendeeId in this.speakerScores) {\\n if (Date.now() - this.mostRecentUpdateTimestamp[attendeeId] > this.waitIntervalMs) {\\n this.updateScore(policy, callback, attendeeId, 0, this.speakerMuteState[attendeeId]);\\n }\\n }\\n });\\n this.detectorCallbackToActivityTimer.set(callback, activityTimer);\\n if (scoresCallback && scoresCallbackIntervalMs) {\\n const scoresTimer = new IntervalScheduler_1.default(scoresCallbackIntervalMs);\\n scoresTimer.start(() => {\\n scoresCallback(this.speakerScores);\\n });\\n this.detectorCallbackToScoresTimer.set(callback, scoresTimer);\\n }\\n this.realtimeController.realtimeSubscribeToAttendeeIdPresence(handler);\\n }\\n unsubscribe(callback) {\\n const handler = this.detectorCallbackToHandler.get(callback);\\n this.detectorCallbackToHandler.delete(callback);\\n if (handler) {\\n this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(handler);\\n }\\n const activityTimer = this.detectorCallbackToActivityTimer.get(callback);\\n if (activityTimer) {\\n activityTimer.stop();\\n this.detectorCallbackToActivityTimer.delete(callback);\\n }\\n const scoresTimer = this.detectorCallbackToScoresTimer.get(callback);\\n if (scoresTimer) {\\n scoresTimer.stop();\\n this.detectorCallbackToHandler.delete(callback);\\n }\\n }\\n destroy() {\\n return __awaiter(this, void 0, void 0, function* () {\\n for (const handler of this.detectorCallbackToHandler.values()) {\\n this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(handler);\\n }\\n for (const activityTimer of this.detectorCallbackToActivityTimer.values()) {\\n activityTimer.stop();\\n }\\n for (const scoresTimer of this.detectorCallbackToScoresTimer.values()) {\\n scoresTimer.stop();\\n }\\n this.detectorCallbackToHandler.clear();\\n this.detectorCallbackToActivityTimer.clear();\\n this.detectorCallbackToScoresTimer.clear();\\n });\\n }\\n}\\nexports[\\\"default\\\"] = DefaultActiveSpeakerDetector;\\n//# sourceMappingURL=DefaultActiveSpeakerDetector.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/activespeakerdetector/DefaultActiveSpeakerDetector.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/activespeakerpolicy/DefaultActiveSpeakerPolicy.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/activespeakerpolicy/DefaultActiveSpeakerPolicy.js ***!\n \\**************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass DefaultActiveSpeakerPolicy {\\n /** Creates active speaker policy with speakerWeight, cutoffThreshold, silenceThreshold, and takeoverRate.\\n *\\n * @param speakerWeight\\n * The number used to calculate new active speaker score for current attendee\\n * ```js\\n * Formula:\\n * updatedCurrentAttendeeScore = currentAttendeeExistingScore * speakerWeight + currentReceivedVolume * (1 - speakerWeight)\\n * ```\\n *\\n * @param cutoffThreshold\\n * The threshold number compared with updated active speaker score.\\n * If the updated active speaker score is less than this threshold value,\\n * the updated score is returned as 0, else the updated score is returned.\\n *\\n * @param silenceThreshold\\n * The threshold number compared with current received volume.\\n * While calculating the new active speaker score, if the current received\\n * volume is less than this threshold value, the current received volume is considered as 0,\\n * else 1.\\n *\\n * @param takeoverRate\\n * The number used to calculate other attendee's active speaker score, other than the current attendee.\\n * ```js\\n * Formula:\\n * updatedOtherAttendeeActiveSpeakerScore = Math.max(\\n * existingOtherAttendeeActiveSpeakerScore - takeoverRate * currentReceivedVolume,\\n * 0\\n * );\\n * ```\\n */\\n constructor(speakerWeight = 0.9, cutoffThreshold = 0.01, silenceThreshold = 0.2, takeoverRate = 0.2) {\\n this.speakerWeight = speakerWeight;\\n this.cutoffThreshold = cutoffThreshold;\\n this.silenceThreshold = silenceThreshold;\\n this.takeoverRate = takeoverRate;\\n /**\\n * The map of attendeeIds to their active speaker score values\\n */\\n this.volumes = {};\\n }\\n calculateScore(attendeeId, volume, muted) {\\n if (muted || volume === null) {\\n volume = 0;\\n }\\n if (!this.volumes.hasOwnProperty(attendeeId)) {\\n this.volumes[attendeeId] = 0;\\n }\\n if (volume > this.silenceThreshold) {\\n volume = 1.0;\\n }\\n else {\\n volume = 0.0;\\n }\\n const score = this.volumes[attendeeId] * this.speakerWeight + volume * (1 - this.speakerWeight);\\n this.volumes[attendeeId] = score;\\n for (const otherAttendeeId in this.volumes) {\\n if (otherAttendeeId !== attendeeId) {\\n this.volumes[otherAttendeeId] = Math.max(this.volumes[otherAttendeeId] - this.takeoverRate * volume, 0);\\n }\\n }\\n if (score < this.cutoffThreshold) {\\n return 0;\\n }\\n return score;\\n }\\n prioritizeVideoSendBandwidthForActiveSpeaker() {\\n return true;\\n }\\n}\\nexports[\\\"default\\\"] = DefaultActiveSpeakerPolicy;\\n//# sourceMappingURL=DefaultActiveSpeakerPolicy.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/activespeakerpolicy/DefaultActiveSpeakerPolicy.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/attendee/Attendee.js\":\n/*!*********************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/attendee/Attendee.js ***!\n \\*********************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[Attendee]] contains the information of an attendee.\\n */\\nclass Attendee {\\n}\\nexports[\\\"default\\\"] = Attendee;\\n//# sourceMappingURL=Attendee.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/attendee/Attendee.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/audiomixcontroller/DefaultAudioMixController.js\":\n/*!************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/audiomixcontroller/DefaultAudioMixController.js ***!\n \\************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nclass DefaultAudioMixController {\\n constructor(logger) {\\n this.logger = logger;\\n this.audioDevice = null;\\n this.audioElement = null;\\n this.audioStream = null;\\n this.browserBehavior = new DefaultBrowserBehavior_1.default();\\n }\\n bindAudioElement(element) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!element) {\\n throw new Error(`Cannot bind audio element: ${element}`);\\n }\\n this.audioElement = element;\\n this.audioElement.autoplay = true;\\n return this.bindAudioMix();\\n });\\n }\\n unbindAudioElement() {\\n if (!this.audioElement) {\\n return;\\n }\\n this.audioElement.srcObject = null;\\n this.audioElement = null;\\n }\\n bindAudioStream(stream) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!stream) {\\n return;\\n }\\n this.audioStream = stream;\\n try {\\n yield this.bindAudioMix();\\n }\\n catch (error) {\\n /* istanbul ignore else */\\n if (this.logger) {\\n this.logger.warn(`Failed to bind audio stream: ${error}`);\\n }\\n }\\n });\\n }\\n bindAudioDevice(device) {\\n return __awaiter(this, void 0, void 0, function* () {\\n /**\\n * Throw error if browser doesn't even support setSinkId\\n * Read more: https://caniuse.com/?search=setSinkId\\n */\\n if (device && !this.browserBehavior.supportsSetSinkId()) {\\n throw new Error('Cannot select audio output device. This browser does not support setSinkId.');\\n }\\n // Always set device -- we might be setting it back to `null` to reselect\\n // the default, and even in that case we need to call `bindAudioMix` in\\n // order to update the sink ID to the empty string.\\n this.audioDevice = device;\\n return this.bindAudioMix();\\n });\\n }\\n bindAudioMix() {\\n var _a, _b;\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!this.audioElement) {\\n return;\\n }\\n if (this.audioStream) {\\n this.audioElement.srcObject = this.audioStream;\\n }\\n // In usual operation, the output device is undefined, and so is the element\\n // sink ID. In this case, don't throw an error -- we're being called as a side\\n // effect of just binding the audio element, not choosing an output device.\\n const shouldSetSinkId = ((_a = this.audioDevice) === null || _a === void 0 ? void 0 : _a.deviceId) !== this.audioElement.sinkId;\\n if (shouldSetSinkId &&\\n typeof this.audioElement.sinkId === 'undefined') {\\n throw new Error('Cannot select audio output device. This browser does not support setSinkId.');\\n }\\n const newSinkId = this.audioDevice ? this.audioDevice.deviceId : '';\\n const oldSinkId = this.audioElement.sinkId;\\n if (newSinkId === oldSinkId) {\\n return;\\n }\\n // Take the existing stream and temporarily unbind it while we change\\n // the sink ID.\\n const existingAudioElement = this\\n .audioElement;\\n const existingStream = this.audioStream;\\n if (this.browserBehavior.hasChromiumWebRTC()) {\\n existingAudioElement.srcObject = null;\\n }\\n if (shouldSetSinkId) {\\n try {\\n yield existingAudioElement.setSinkId(newSinkId);\\n }\\n catch (error) {\\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(`Failed to set sinkId for audio element: ${error}`);\\n throw error;\\n }\\n }\\n if (this.browserBehavior.hasChromiumWebRTC()) {\\n existingAudioElement.srcObject = existingStream;\\n }\\n });\\n }\\n}\\nexports[\\\"default\\\"] = DefaultAudioMixController;\\n//# sourceMappingURL=DefaultAudioMixController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/audiomixcontroller/DefaultAudioMixController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/audioprofile/AudioProfile.js\":\n/*!*****************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/audioprofile/AudioProfile.js ***!\n \\*****************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * AudioProfile defines quality settings of the audio input\\n * device. Use the static methods to create presets optimized\\n * for fullband speech and fullband music with a mono channel.\\n */\\nclass AudioProfile {\\n /**\\n * Constructs an AudioProfile given an audio bitrate. If no\\n * audio bitrate is supplied, then the default AudioProfile\\n * is constructed. The default AudioProfile does not adjust\\n * the browser's internal bitrate setting.\\n */\\n constructor(audioBitrateBps = null) {\\n this.audioBitrateBps = audioBitrateBps;\\n }\\n /**\\n * Creates an AudioProfile optimized for fullband speech (40 kbit/s mono).\\n */\\n static fullbandSpeechMono() {\\n return new AudioProfile(40000);\\n }\\n /**\\n * Creates an AudioProfile optimized for fullband music (64 kbit/s mono).\\n */\\n static fullbandMusicMono() {\\n return new AudioProfile(64000);\\n }\\n}\\nexports[\\\"default\\\"] = AudioProfile;\\n//# sourceMappingURL=AudioProfile.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/audioprofile/AudioProfile.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/AudioVideoControllerState.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/AudioVideoControllerState.js ***!\n \\**************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[AudioVideoControllerState]] includes the compute resources shared by [[Task]].\\n */\\nclass AudioVideoControllerState {\\n constructor() {\\n this.logger = null;\\n this.browserBehavior = null;\\n this.signalingClient = null;\\n this.meetingSessionConfiguration = null;\\n this.peer = null;\\n this.previousSdpOffer = null;\\n this.sdpOfferInit = null;\\n this.audioVideoController = null;\\n this.realtimeController = null;\\n this.videoTileController = null;\\n this.mediaStreamBroker = null;\\n this.audioMixController = null;\\n this.activeAudioInput = null;\\n this.activeVideoInput = null;\\n this.transceiverController = null;\\n this.indexFrame = null;\\n this.iceCandidates = [];\\n this.iceCandidateHandler = null;\\n this.iceGatheringStateEventHandler = null;\\n this.sdpAnswer = null;\\n this.turnCredentials = null;\\n this.reconnectController = null;\\n this.removableObservers = [];\\n this.audioProfile = null;\\n this.videoStreamIndex = null;\\n this.videoDownlinkBandwidthPolicy = null;\\n this.videoUplinkBandwidthPolicy = null;\\n this.lastKnownVideoAvailability = null;\\n this.localVideoSender = null;\\n this.localAudioSender = null;\\n this.videoCaptureAndEncodeParameter = null;\\n this.videosToReceive = null;\\n this.videoSubscriptions = null;\\n this.videosPaused = null;\\n this.videoDuplexMode = null;\\n this.volumeIndicatorAdapter = null;\\n this.statsCollector = null;\\n this.connectionMonitor = null;\\n this.videoInputAttachedTimestampMs = 0;\\n this.audioDeviceInformation = {};\\n this.videoDeviceInformation = {};\\n this.enableSimulcast = false;\\n this.eventController = null;\\n this.signalingOpenDurationMs = null;\\n this.iceGatheringDurationMs = null;\\n this.startAudioVideoTimestamp = null;\\n this.attendeePresenceDurationMs = null;\\n this.meetingStartDurationMs = null;\\n this.poorConnectionCount = 0;\\n this.maxVideoTileCount = 0;\\n this.startTimeMs = null;\\n }\\n}\\nexports[\\\"default\\\"] = AudioVideoControllerState;\\n//# sourceMappingURL=AudioVideoControllerState.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/AudioVideoControllerState.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/DefaultAudioVideoController.js\":\n/*!****************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/DefaultAudioVideoController.js ***!\n \\****************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultActiveSpeakerDetector_1 = __webpack_require__(/*! ../activespeakerdetector/DefaultActiveSpeakerDetector */ \\\"./node_modules/amazon-chime-sdk-js/build/activespeakerdetector/DefaultActiveSpeakerDetector.js\\\");\\nconst DefaultAudioMixController_1 = __webpack_require__(/*! ../audiomixcontroller/DefaultAudioMixController */ \\\"./node_modules/amazon-chime-sdk-js/build/audiomixcontroller/DefaultAudioMixController.js\\\");\\nconst AudioProfile_1 = __webpack_require__(/*! ../audioprofile/AudioProfile */ \\\"./node_modules/amazon-chime-sdk-js/build/audioprofile/AudioProfile.js\\\");\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst ConnectionHealthData_1 = __webpack_require__(/*! ../connectionhealthpolicy/ConnectionHealthData */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthData.js\\\");\\nconst SignalingAndMetricsConnectionMonitor_1 = __webpack_require__(/*! ../connectionmonitor/SignalingAndMetricsConnectionMonitor */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionmonitor/SignalingAndMetricsConnectionMonitor.js\\\");\\nconst DefaultEventController_1 = __webpack_require__(/*! ../eventcontroller/DefaultEventController */ \\\"./node_modules/amazon-chime-sdk-js/build/eventcontroller/DefaultEventController.js\\\");\\nconst Maybe_1 = __webpack_require__(/*! ../maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nconst MeetingSessionStatus_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionStatus */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatus.js\\\");\\nconst MeetingSessionStatusCode_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionStatusCode */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js\\\");\\nconst MeetingSessionVideoAvailability_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionVideoAvailability */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionVideoAvailability.js\\\");\\nconst DefaultPingPong_1 = __webpack_require__(/*! ../pingpong/DefaultPingPong */ \\\"./node_modules/amazon-chime-sdk-js/build/pingpong/DefaultPingPong.js\\\");\\nconst DefaultRealtimeController_1 = __webpack_require__(/*! ../realtimecontroller/DefaultRealtimeController */ \\\"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/DefaultRealtimeController.js\\\");\\nconst AsyncScheduler_1 = __webpack_require__(/*! ../scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nconst DefaultSessionStateController_1 = __webpack_require__(/*! ../sessionstatecontroller/DefaultSessionStateController */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/DefaultSessionStateController.js\\\");\\nconst SessionStateControllerAction_1 = __webpack_require__(/*! ../sessionstatecontroller/SessionStateControllerAction */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerAction.js\\\");\\nconst SessionStateControllerState_1 = __webpack_require__(/*! ../sessionstatecontroller/SessionStateControllerState */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerState.js\\\");\\nconst SessionStateControllerTransitionResult_1 = __webpack_require__(/*! ../sessionstatecontroller/SessionStateControllerTransitionResult */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerTransitionResult.js\\\");\\nconst DefaultSignalingClient_1 = __webpack_require__(/*! ../signalingclient/DefaultSignalingClient */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/DefaultSignalingClient.js\\\");\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst DefaultStatsCollector_1 = __webpack_require__(/*! ../statscollector/DefaultStatsCollector */ \\\"./node_modules/amazon-chime-sdk-js/build/statscollector/DefaultStatsCollector.js\\\");\\nconst AttachMediaInputTask_1 = __webpack_require__(/*! ../task/AttachMediaInputTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/AttachMediaInputTask.js\\\");\\nconst CleanRestartedSessionTask_1 = __webpack_require__(/*! ../task/CleanRestartedSessionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CleanRestartedSessionTask.js\\\");\\nconst CleanStoppedSessionTask_1 = __webpack_require__(/*! ../task/CleanStoppedSessionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CleanStoppedSessionTask.js\\\");\\nconst CreatePeerConnectionTask_1 = __webpack_require__(/*! ../task/CreatePeerConnectionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CreatePeerConnectionTask.js\\\");\\nconst CreateSDPTask_1 = __webpack_require__(/*! ../task/CreateSDPTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CreateSDPTask.js\\\");\\nconst FinishGatheringICECandidatesTask_1 = __webpack_require__(/*! ../task/FinishGatheringICECandidatesTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/FinishGatheringICECandidatesTask.js\\\");\\nconst JoinAndReceiveIndexTask_1 = __webpack_require__(/*! ../task/JoinAndReceiveIndexTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/JoinAndReceiveIndexTask.js\\\");\\nconst LeaveAndReceiveLeaveAckTask_1 = __webpack_require__(/*! ../task/LeaveAndReceiveLeaveAckTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/LeaveAndReceiveLeaveAckTask.js\\\");\\nconst ListenForVolumeIndicatorsTask_1 = __webpack_require__(/*! ../task/ListenForVolumeIndicatorsTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ListenForVolumeIndicatorsTask.js\\\");\\nconst MonitorTask_1 = __webpack_require__(/*! ../task/MonitorTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/MonitorTask.js\\\");\\nconst OpenSignalingConnectionTask_1 = __webpack_require__(/*! ../task/OpenSignalingConnectionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/OpenSignalingConnectionTask.js\\\");\\nconst ParallelGroupTask_1 = __webpack_require__(/*! ../task/ParallelGroupTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ParallelGroupTask.js\\\");\\nconst ReceiveAudioInputTask_1 = __webpack_require__(/*! ../task/ReceiveAudioInputTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveAudioInputTask.js\\\");\\nconst ReceiveTURNCredentialsTask_1 = __webpack_require__(/*! ../task/ReceiveTURNCredentialsTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveTURNCredentialsTask.js\\\");\\nconst ReceiveVideoInputTask_1 = __webpack_require__(/*! ../task/ReceiveVideoInputTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveVideoInputTask.js\\\");\\nconst ReceiveVideoStreamIndexTask_1 = __webpack_require__(/*! ../task/ReceiveVideoStreamIndexTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveVideoStreamIndexTask.js\\\");\\nconst SendAndReceiveDataMessagesTask_1 = __webpack_require__(/*! ../task/SendAndReceiveDataMessagesTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SendAndReceiveDataMessagesTask.js\\\");\\nconst SerialGroupTask_1 = __webpack_require__(/*! ../task/SerialGroupTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SerialGroupTask.js\\\");\\nconst SetLocalDescriptionTask_1 = __webpack_require__(/*! ../task/SetLocalDescriptionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SetLocalDescriptionTask.js\\\");\\nconst SetRemoteDescriptionTask_1 = __webpack_require__(/*! ../task/SetRemoteDescriptionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SetRemoteDescriptionTask.js\\\");\\nconst SubscribeAndReceiveSubscribeAckTask_1 = __webpack_require__(/*! ../task/SubscribeAndReceiveSubscribeAckTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SubscribeAndReceiveSubscribeAckTask.js\\\");\\nconst TimeoutTask_1 = __webpack_require__(/*! ../task/TimeoutTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/TimeoutTask.js\\\");\\nconst WaitForAttendeePresenceTask_1 = __webpack_require__(/*! ../task/WaitForAttendeePresenceTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/WaitForAttendeePresenceTask.js\\\");\\nconst DefaultTransceiverController_1 = __webpack_require__(/*! ../transceivercontroller/DefaultTransceiverController */ \\\"./node_modules/amazon-chime-sdk-js/build/transceivercontroller/DefaultTransceiverController.js\\\");\\nconst SimulcastTransceiverController_1 = __webpack_require__(/*! ../transceivercontroller/SimulcastTransceiverController */ \\\"./node_modules/amazon-chime-sdk-js/build/transceivercontroller/SimulcastTransceiverController.js\\\");\\nconst DefaultVideoCaptureAndEncodeParameter_1 = __webpack_require__(/*! ../videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter */ \\\"./node_modules/amazon-chime-sdk-js/build/videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter.js\\\");\\nconst AllHighestVideoBandwidthPolicy_1 = __webpack_require__(/*! ../videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy.js\\\");\\nconst VideoAdaptiveProbePolicy_1 = __webpack_require__(/*! ../videodownlinkbandwidthpolicy/VideoAdaptiveProbePolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/VideoAdaptiveProbePolicy.js\\\");\\nconst DefaultVideoStreamIdSet_1 = __webpack_require__(/*! ../videostreamidset/DefaultVideoStreamIdSet */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamidset/DefaultVideoStreamIdSet.js\\\");\\nconst DefaultVideoStreamIndex_1 = __webpack_require__(/*! ../videostreamindex/DefaultVideoStreamIndex */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamindex/DefaultVideoStreamIndex.js\\\");\\nconst SimulcastVideoStreamIndex_1 = __webpack_require__(/*! ../videostreamindex/SimulcastVideoStreamIndex */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamindex/SimulcastVideoStreamIndex.js\\\");\\nconst DefaultVideoTileController_1 = __webpack_require__(/*! ../videotilecontroller/DefaultVideoTileController */ \\\"./node_modules/amazon-chime-sdk-js/build/videotilecontroller/DefaultVideoTileController.js\\\");\\nconst DefaultVideoTileFactory_1 = __webpack_require__(/*! ../videotilefactory/DefaultVideoTileFactory */ \\\"./node_modules/amazon-chime-sdk-js/build/videotilefactory/DefaultVideoTileFactory.js\\\");\\nconst DefaultSimulcastUplinkPolicy_1 = __webpack_require__(/*! ../videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicy.js\\\");\\nconst NScaleVideoUplinkBandwidthPolicy_1 = __webpack_require__(/*! ../videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.js\\\");\\nconst DefaultVolumeIndicatorAdapter_1 = __webpack_require__(/*! ../volumeindicatoradapter/DefaultVolumeIndicatorAdapter */ \\\"./node_modules/amazon-chime-sdk-js/build/volumeindicatoradapter/DefaultVolumeIndicatorAdapter.js\\\");\\nconst AudioVideoControllerState_1 = __webpack_require__(/*! ./AudioVideoControllerState */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/AudioVideoControllerState.js\\\");\\nclass DefaultAudioVideoController {\\n constructor(configuration, logger, webSocketAdapter, mediaStreamBroker, reconnectController) {\\n this._audioProfile = new AudioProfile_1.default();\\n this.connectionHealthData = new ConnectionHealthData_1.default();\\n this.observerQueue = new Set();\\n this.meetingSessionContext = new AudioVideoControllerState_1.default();\\n this.enableSimulcast = false;\\n this.totalRetryCount = 0;\\n this.startAudioVideoTimestamp = 0;\\n this.destroyed = false;\\n this._logger = logger;\\n this.sessionStateController = new DefaultSessionStateController_1.default(this._logger);\\n this._configuration = configuration;\\n this.enableSimulcast =\\n configuration.enableUnifiedPlanForChromiumBasedBrowsers &&\\n configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers &&\\n new DefaultBrowserBehavior_1.default().hasChromiumWebRTC();\\n this._webSocketAdapter = webSocketAdapter;\\n this._realtimeController = new DefaultRealtimeController_1.default();\\n this._realtimeController.realtimeSetLocalAttendeeId(configuration.credentials.attendeeId, configuration.credentials.externalUserId);\\n this._mediaStreamBroker = mediaStreamBroker;\\n this._reconnectController = reconnectController;\\n this._videoTileController = new DefaultVideoTileController_1.default(new DefaultVideoTileFactory_1.default(), this, this._logger);\\n this._audioMixController = new DefaultAudioMixController_1.default(this._logger);\\n this.meetingSessionContext.logger = this._logger;\\n this._eventController = new DefaultEventController_1.default(this);\\n }\\n destroy() {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.observerQueue.clear();\\n this.destroyed = true;\\n });\\n }\\n get configuration() {\\n return this._configuration;\\n }\\n get realtimeController() {\\n return this._realtimeController;\\n }\\n get activeSpeakerDetector() {\\n // Lazy init.\\n if (!this._activeSpeakerDetector) {\\n this._activeSpeakerDetector = new DefaultActiveSpeakerDetector_1.default(this._realtimeController, this._configuration.credentials.attendeeId, this.handleHasBandwidthPriority.bind(this));\\n }\\n return this._activeSpeakerDetector;\\n }\\n get videoTileController() {\\n return this._videoTileController;\\n }\\n get audioMixController() {\\n return this._audioMixController;\\n }\\n get eventController() {\\n return this._eventController;\\n }\\n get logger() {\\n return this._logger;\\n }\\n get rtcPeerConnection() {\\n return (this.meetingSessionContext && this.meetingSessionContext.peer) || null;\\n }\\n get mediaStreamBroker() {\\n return this._mediaStreamBroker;\\n }\\n getRTCPeerConnectionStats(selector) {\\n if (!this.rtcPeerConnection) {\\n return null;\\n }\\n return this.rtcPeerConnection.getStats(selector);\\n }\\n setAudioProfile(audioProfile) {\\n this._audioProfile = audioProfile;\\n }\\n addObserver(observer) {\\n this.logger.info('adding meeting observer');\\n this.observerQueue.add(observer);\\n }\\n removeObserver(observer) {\\n this.logger.info('removing meeting observer');\\n this.observerQueue.delete(observer);\\n }\\n forEachObserver(observerFunc) {\\n for (const observer of this.observerQueue) {\\n AsyncScheduler_1.default.nextTick(() => {\\n if (this.observerQueue.has(observer)) {\\n observerFunc(observer);\\n }\\n });\\n }\\n }\\n start() {\\n this.activeSpeakerDetector;\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.Connect, () => {\\n this.actionConnect(false);\\n });\\n }\\n actionConnect(reconnecting) {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.connectionHealthData.reset();\\n this.meetingSessionContext = new AudioVideoControllerState_1.default();\\n this.meetingSessionContext.logger = this.logger;\\n this.meetingSessionContext.eventController = this.eventController;\\n this.meetingSessionContext.browserBehavior = new DefaultBrowserBehavior_1.default({\\n enableUnifiedPlanForChromiumBasedBrowsers: this.configuration\\n .enableUnifiedPlanForChromiumBasedBrowsers,\\n });\\n this.meetingSessionContext.meetingSessionConfiguration = this.configuration;\\n this.meetingSessionContext.signalingClient = new DefaultSignalingClient_1.default(this._webSocketAdapter, this.logger);\\n this.meetingSessionContext.mediaStreamBroker = this._mediaStreamBroker;\\n this.meetingSessionContext.realtimeController = this._realtimeController;\\n this.meetingSessionContext.audioMixController = this._audioMixController;\\n this.meetingSessionContext.audioVideoController = this;\\n if (this.enableSimulcast) {\\n this.meetingSessionContext.transceiverController = new SimulcastTransceiverController_1.default(this.logger, this.meetingSessionContext.browserBehavior);\\n }\\n else {\\n this.meetingSessionContext.transceiverController = new DefaultTransceiverController_1.default(this.logger, this.meetingSessionContext.browserBehavior);\\n }\\n this.meetingSessionContext.volumeIndicatorAdapter = new DefaultVolumeIndicatorAdapter_1.default(this.logger, this._realtimeController, DefaultAudioVideoController.MIN_VOLUME_DECIBELS, DefaultAudioVideoController.MAX_VOLUME_DECIBELS);\\n this.meetingSessionContext.videoTileController = this._videoTileController;\\n this.meetingSessionContext.videoDownlinkBandwidthPolicy = this.configuration.videoDownlinkBandwidthPolicy;\\n this.meetingSessionContext.videoUplinkBandwidthPolicy = this.configuration.videoUplinkBandwidthPolicy;\\n this.meetingSessionContext.enableSimulcast = this.enableSimulcast;\\n if (this.enableSimulcast) {\\n const simulcastPolicy = new DefaultSimulcastUplinkPolicy_1.default(this.configuration.credentials.attendeeId, this.meetingSessionContext.logger);\\n simulcastPolicy.addObserver(this);\\n this.meetingSessionContext.videoUplinkBandwidthPolicy = simulcastPolicy;\\n this.meetingSessionContext.videoDownlinkBandwidthPolicy = new VideoAdaptiveProbePolicy_1.default(this.logger, this.meetingSessionContext.videoTileController);\\n this.meetingSessionContext.videoStreamIndex = new SimulcastVideoStreamIndex_1.default(this.logger);\\n }\\n else {\\n this.meetingSessionContext.enableSimulcast = false;\\n this.meetingSessionContext.videoStreamIndex = new DefaultVideoStreamIndex_1.default(this.logger);\\n if (!this.meetingSessionContext.videoDownlinkBandwidthPolicy) {\\n this.meetingSessionContext.videoDownlinkBandwidthPolicy = new AllHighestVideoBandwidthPolicy_1.default(this.configuration.credentials.attendeeId);\\n }\\n if (!this.meetingSessionContext.videoUplinkBandwidthPolicy) {\\n this.meetingSessionContext.videoUplinkBandwidthPolicy = new NScaleVideoUplinkBandwidthPolicy_1.default(this.configuration.credentials.attendeeId);\\n }\\n this.meetingSessionContext.audioProfile = this._audioProfile;\\n }\\n this.meetingSessionContext.lastKnownVideoAvailability = new MeetingSessionVideoAvailability_1.default();\\n this.meetingSessionContext.videoCaptureAndEncodeParameter = new DefaultVideoCaptureAndEncodeParameter_1.default(0, 0, 0, 0, false);\\n this.meetingSessionContext.videosToReceive = new DefaultVideoStreamIdSet_1.default();\\n this.meetingSessionContext.videosPaused = new DefaultVideoStreamIdSet_1.default();\\n this.meetingSessionContext.statsCollector = new DefaultStatsCollector_1.default(this, this.logger, this.meetingSessionContext.browserBehavior);\\n this.meetingSessionContext.connectionMonitor = new SignalingAndMetricsConnectionMonitor_1.default(this, this._realtimeController, this._videoTileController, this.connectionHealthData, new DefaultPingPong_1.default(this.meetingSessionContext.signalingClient, DefaultAudioVideoController.PING_PONG_INTERVAL_MS, this.logger), this.meetingSessionContext.statsCollector);\\n this.meetingSessionContext.reconnectController = this._reconnectController;\\n this.meetingSessionContext.videoDeviceInformation = {};\\n if (!reconnecting) {\\n this.totalRetryCount = 0;\\n this._reconnectController.reset();\\n this.startAudioVideoTimestamp = Date.now();\\n this.forEachObserver(observer => {\\n Maybe_1.default.of(observer.audioVideoDidStartConnecting).map(f => f.bind(observer)(false));\\n });\\n /* istanbul ignore else */\\n if (this.eventController) {\\n this.eventController.publishEvent('meetingStartRequested');\\n }\\n }\\n this.meetingSessionContext.startAudioVideoTimestamp = this.startAudioVideoTimestamp;\\n if (this._reconnectController.hasStartedConnectionAttempt()) {\\n // This does not reset the reconnect deadline, but declare it's not the first connection.\\n this._reconnectController.startedConnectionAttempt(false);\\n }\\n else {\\n this._reconnectController.startedConnectionAttempt(true);\\n }\\n try {\\n yield new SerialGroupTask_1.default(this.logger, this.wrapTaskName('AudioVideoStart'), [\\n new MonitorTask_1.default(this.meetingSessionContext, this.configuration.connectionHealthPolicyConfiguration, this.connectionHealthData),\\n new ReceiveAudioInputTask_1.default(this.meetingSessionContext),\\n new TimeoutTask_1.default(this.logger, new SerialGroupTask_1.default(this.logger, 'Media', [\\n new SerialGroupTask_1.default(this.logger, 'Signaling', [\\n new OpenSignalingConnectionTask_1.default(this.meetingSessionContext),\\n new ListenForVolumeIndicatorsTask_1.default(this.meetingSessionContext),\\n new SendAndReceiveDataMessagesTask_1.default(this.meetingSessionContext),\\n new JoinAndReceiveIndexTask_1.default(this.meetingSessionContext),\\n new ReceiveTURNCredentialsTask_1.default(this.meetingSessionContext),\\n // TODO: ensure index handler does not race with incoming index update\\n new ReceiveVideoStreamIndexTask_1.default(this.meetingSessionContext),\\n ]),\\n new SerialGroupTask_1.default(this.logger, 'Peer', [\\n new CreatePeerConnectionTask_1.default(this.meetingSessionContext),\\n new AttachMediaInputTask_1.default(this.meetingSessionContext),\\n new CreateSDPTask_1.default(this.meetingSessionContext),\\n new SetLocalDescriptionTask_1.default(this.meetingSessionContext),\\n new FinishGatheringICECandidatesTask_1.default(this.meetingSessionContext),\\n new SubscribeAndReceiveSubscribeAckTask_1.default(this.meetingSessionContext),\\n this.meetingSessionContext.meetingSessionConfiguration.attendeePresenceTimeoutMs > 0\\n ? new TimeoutTask_1.default(this.logger, new ParallelGroupTask_1.default(this.logger, 'FinalizeConnection', [\\n new WaitForAttendeePresenceTask_1.default(this.meetingSessionContext),\\n new SetRemoteDescriptionTask_1.default(this.meetingSessionContext),\\n ]), this.meetingSessionContext.meetingSessionConfiguration.attendeePresenceTimeoutMs)\\n : new SetRemoteDescriptionTask_1.default(this.meetingSessionContext),\\n ]),\\n ]), this.configuration.connectionTimeoutMs),\\n ]).run();\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishConnecting, () => {\\n /* istanbul ignore else */\\n if (this.eventController) {\\n this.meetingSessionContext.meetingStartDurationMs =\\n Date.now() - this.startAudioVideoTimestamp;\\n this.eventController.publishEvent('meetingStartSucceeded', {\\n maxVideoTileCount: this.meetingSessionContext.maxVideoTileCount,\\n poorConnectionCount: this.meetingSessionContext.poorConnectionCount,\\n retryCount: this.totalRetryCount,\\n signalingOpenDurationMs: this.meetingSessionContext.signalingOpenDurationMs,\\n iceGatheringDurationMs: this.meetingSessionContext.iceGatheringDurationMs,\\n meetingStartDurationMs: this.meetingSessionContext.meetingStartDurationMs,\\n });\\n }\\n this.meetingSessionContext.startTimeMs = Date.now();\\n this.actionFinishConnecting();\\n });\\n }\\n catch (error) {\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.Fail, () => __awaiter(this, void 0, void 0, function* () {\\n const status = new MeetingSessionStatus_1.default(this.getMeetingStatusCode(error) || MeetingSessionStatusCode_1.default.TaskFailed);\\n yield this.actionDisconnect(status, true, error);\\n if (!this.handleMeetingSessionStatus(status, error)) {\\n this.notifyStop(status, error);\\n }\\n }));\\n }\\n this.connectionHealthData.setConnectionStartTime();\\n });\\n }\\n actionFinishConnecting() {\\n this.meetingSessionContext.videoDuplexMode = SignalingProtocol_js_1.SdkStreamServiceType.RX;\\n if (!this.meetingSessionContext.enableSimulcast) {\\n this.enforceBandwidthLimitationForSender(this.meetingSessionContext.videoCaptureAndEncodeParameter.encodeBitrates()[0]);\\n }\\n this.forEachObserver(observer => {\\n Maybe_1.default.of(observer.audioVideoDidStart).map(f => f.bind(observer)());\\n });\\n this._reconnectController.reset();\\n }\\n stop() {\\n /*\\n Stops the current audio video meeting session.\\n The stop method execution is deferred and executed after\\n the current reconnection attempt completes.\\n It disables any further reconnection attempts.\\n Upon completion, AudioVideoObserver's `audioVideoDidStop`\\n callback function is called with `MeetingSessionStatusCode.Left`.\\n */\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.Disconnect, () => {\\n this._reconnectController.disableReconnect();\\n this.logger.info('attendee left meeting, session will not be reconnected');\\n this.actionDisconnect(new MeetingSessionStatus_1.default(MeetingSessionStatusCode_1.default.Left), false, null);\\n });\\n }\\n actionDisconnect(status, reconnecting, error) {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n yield new SerialGroupTask_1.default(this.logger, this.wrapTaskName('AudioVideoStop'), [\\n new TimeoutTask_1.default(this.logger, new LeaveAndReceiveLeaveAckTask_1.default(this.meetingSessionContext), this.configuration.connectionTimeoutMs),\\n ]).run();\\n }\\n catch (stopError) {\\n this.logger.info('fail to stop');\\n }\\n try {\\n yield new SerialGroupTask_1.default(this.logger, this.wrapTaskName('AudioVideoClean'), [\\n new TimeoutTask_1.default(this.logger, new CleanStoppedSessionTask_1.default(this.meetingSessionContext), this.configuration.connectionTimeoutMs),\\n ]).run();\\n }\\n catch (cleanError) {\\n this.logger.info('fail to clean');\\n }\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishDisconnecting, () => {\\n if (!reconnecting) {\\n this.notifyStop(status, error);\\n }\\n });\\n });\\n }\\n update() {\\n const result = this.sessionStateController.perform(SessionStateControllerAction_1.default.Update, () => {\\n this.actionUpdate(true);\\n });\\n return (result === SessionStateControllerTransitionResult_1.default.Transitioned ||\\n result === SessionStateControllerTransitionResult_1.default.DeferredTransition);\\n }\\n restartLocalVideo(callback) {\\n const restartVideo = () => __awaiter(this, void 0, void 0, function* () {\\n if (this._videoTileController.hasStartedLocalVideoTile()) {\\n this.logger.info('stopping local video tile prior to local video restart');\\n this._videoTileController.stopLocalVideoTile();\\n this.logger.info('preparing local video restart update');\\n yield this.actionUpdate(false);\\n this.logger.info('starting local video tile for local video restart');\\n this._videoTileController.startLocalVideoTile();\\n }\\n this.logger.info('finalizing local video restart update');\\n yield this.actionUpdate(true);\\n callback();\\n });\\n const result = this.sessionStateController.perform(SessionStateControllerAction_1.default.Update, () => {\\n restartVideo();\\n });\\n return (result === SessionStateControllerTransitionResult_1.default.Transitioned ||\\n result === SessionStateControllerTransitionResult_1.default.DeferredTransition);\\n }\\n replaceLocalVideo() {\\n return __awaiter(this, void 0, void 0, function* () {\\n let videoStream = null;\\n try {\\n videoStream = yield this.mediaStreamBroker.acquireVideoInputStream();\\n }\\n catch (error) {\\n throw new Error(`could not acquire video stream from mediaStreamBroker due to ${error.message}`);\\n }\\n if (!videoStream || videoStream.getVideoTracks().length < 1) {\\n throw new Error('could not acquire video track');\\n }\\n const videoTrack = videoStream.getVideoTracks()[0];\\n if (!this.meetingSessionContext || !this.meetingSessionContext.peer) {\\n throw new Error('no active meeting and peer connection');\\n }\\n if (this.meetingSessionContext.browserBehavior.requiresUnifiedPlan()) {\\n yield this.meetingSessionContext.transceiverController.setVideoInput(videoTrack);\\n }\\n else {\\n throw new Error('cannot replace track on Plan B');\\n }\\n // if there is a local tile, a video tile update event should be fired.\\n const localTile = this.meetingSessionContext.videoTileController.getLocalVideoTile();\\n if (localTile) {\\n const state = localTile.state();\\n const settings = videoStream.getVideoTracks()[0].getSettings();\\n // so tile update wil be fired.\\n localTile.bindVideoStream(state.boundAttendeeId, true, videoStream, settings.width, settings.height, state.streamId, state.boundExternalUserId);\\n }\\n // Update the active video input on subscription context to match what we just changed\\n // so that subsequent meeting actions can reuse and destroy it.\\n this.meetingSessionContext.activeVideoInput = videoStream;\\n });\\n }\\n restartLocalAudio(callback) {\\n return __awaiter(this, void 0, void 0, function* () {\\n let audioStream = null;\\n try {\\n audioStream = yield this.mediaStreamBroker.acquireAudioInputStream();\\n }\\n catch (error) {\\n this.logger.info('could not acquire audio stream from mediaStreamBroker');\\n }\\n if (!audioStream || audioStream.getAudioTracks().length < 1) {\\n throw new Error('could not acquire audio track');\\n }\\n this.connectionHealthData.reset();\\n this.connectionHealthData.setConnectionStartTime();\\n const audioTrack = audioStream.getAudioTracks()[0];\\n if (!this.meetingSessionContext || !this.meetingSessionContext.peer) {\\n throw new Error('no active meeting and peer connection');\\n }\\n let replaceTrackSuccess = false;\\n if (this.meetingSessionContext.browserBehavior.requiresUnifiedPlan()) {\\n replaceTrackSuccess = yield this.meetingSessionContext.transceiverController.replaceAudioTrack(audioTrack);\\n }\\n else {\\n replaceTrackSuccess = yield DefaultTransceiverController_1.default.replaceAudioTrackForSender(this.meetingSessionContext.localAudioSender, audioTrack);\\n }\\n this._realtimeController.realtimeSetLocalAudioInput(audioStream);\\n this.meetingSessionContext.activeAudioInput = audioStream;\\n callback();\\n if (replaceTrackSuccess) {\\n return Promise.resolve();\\n }\\n else {\\n return Promise.reject();\\n }\\n });\\n }\\n actionUpdate(notify) {\\n return __awaiter(this, void 0, void 0, function* () {\\n // TODO: do not block other updates while waiting for video input\\n try {\\n yield new SerialGroupTask_1.default(this.logger, this.wrapTaskName('AudioVideoUpdate'), [\\n new ReceiveVideoInputTask_1.default(this.meetingSessionContext),\\n new TimeoutTask_1.default(this.logger, new SerialGroupTask_1.default(this.logger, 'UpdateSession', [\\n new AttachMediaInputTask_1.default(this.meetingSessionContext),\\n new CreateSDPTask_1.default(this.meetingSessionContext),\\n new SetLocalDescriptionTask_1.default(this.meetingSessionContext),\\n new FinishGatheringICECandidatesTask_1.default(this.meetingSessionContext),\\n new SubscribeAndReceiveSubscribeAckTask_1.default(this.meetingSessionContext),\\n new SetRemoteDescriptionTask_1.default(this.meetingSessionContext),\\n ]), this.configuration.connectionTimeoutMs),\\n ]).run();\\n if (notify) {\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishUpdating, () => {\\n this.actionFinishUpdating();\\n });\\n }\\n }\\n catch (error) {\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishUpdating, () => {\\n const status = new MeetingSessionStatus_1.default(this.getMeetingStatusCode(error) || MeetingSessionStatusCode_1.default.TaskFailed);\\n if (status.statusCode() !== MeetingSessionStatusCode_1.default.IncompatibleSDP) {\\n this.logger.info('failed to update audio-video session');\\n }\\n this.handleMeetingSessionStatus(status, error);\\n });\\n }\\n });\\n }\\n notifyStop(status, error) {\\n this.forEachObserver(observer => {\\n Maybe_1.default.of(observer.audioVideoDidStop).map(f => f.bind(observer)(status));\\n });\\n /* istanbul ignore else */\\n if (this.eventController) {\\n const { signalingOpenDurationMs, poorConnectionCount, startTimeMs, iceGatheringDurationMs, attendeePresenceDurationMs, meetingStartDurationMs, } = this.meetingSessionContext;\\n const attributes = {\\n maxVideoTileCount: this.meetingSessionContext.maxVideoTileCount,\\n meetingDurationMs: startTimeMs === null ? 0 : Math.round(Date.now() - startTimeMs),\\n meetingStatus: MeetingSessionStatusCode_1.default[status.statusCode()],\\n signalingOpenDurationMs,\\n iceGatheringDurationMs,\\n attendeePresenceDurationMs,\\n poorConnectionCount,\\n meetingStartDurationMs,\\n retryCount: this.totalRetryCount,\\n };\\n if (attributes.meetingDurationMs === 0) {\\n attributes.meetingErrorMessage = (error && error.message) || '';\\n delete attributes.meetingDurationMs;\\n delete attributes.attendeePresenceDurationMs;\\n delete attributes.meetingStartDurationMs;\\n this.eventController.publishEvent('meetingStartFailed', attributes);\\n }\\n else if (status.isFailure() || status.isAudioConnectionFailure()) {\\n attributes.meetingErrorMessage = (error && error.message) || '';\\n this.eventController.publishEvent('meetingFailed', attributes);\\n }\\n else {\\n this.eventController.publishEvent('meetingEnded', attributes);\\n }\\n }\\n }\\n actionFinishUpdating() {\\n // we do not update parameter for simulcast since they are updated in AttachMediaInputTask\\n if (!this.meetingSessionContext.enableSimulcast) {\\n const maxBitrateKbps = this.meetingSessionContext.videoCaptureAndEncodeParameter.encodeBitrates()[0];\\n this.enforceBandwidthLimitationForSender(maxBitrateKbps);\\n }\\n this.logger.info('updated audio-video session');\\n }\\n reconnect(status, error) {\\n const willRetry = this._reconnectController.retryWithBackoff(() => __awaiter(this, void 0, void 0, function* () {\\n if (this.sessionStateController.state() === SessionStateControllerState_1.default.NotConnected) {\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.Connect, () => {\\n this.actionConnect(true);\\n });\\n }\\n else {\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.Reconnect, () => {\\n this.actionReconnect();\\n });\\n }\\n this.totalRetryCount += 1;\\n }), () => {\\n this.logger.info('canceled retry');\\n });\\n if (!willRetry) {\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.Fail, () => {\\n this.actionDisconnect(status, false, error);\\n });\\n }\\n return willRetry;\\n }\\n actionReconnect() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!this._reconnectController.hasStartedConnectionAttempt()) {\\n this._reconnectController.startedConnectionAttempt(false);\\n this.forEachObserver(observer => {\\n Maybe_1.default.of(observer.audioVideoDidStartConnecting).map(f => f.bind(observer)(true));\\n });\\n }\\n this.meetingSessionContext.volumeIndicatorAdapter.onReconnect();\\n this.connectionHealthData.reset();\\n try {\\n yield new SerialGroupTask_1.default(this.logger, this.wrapTaskName('AudioVideoReconnect'), [\\n new TimeoutTask_1.default(this.logger, new SerialGroupTask_1.default(this.logger, 'Media', [\\n new CleanRestartedSessionTask_1.default(this.meetingSessionContext),\\n new SerialGroupTask_1.default(this.logger, 'Signaling', [\\n new OpenSignalingConnectionTask_1.default(this.meetingSessionContext),\\n new JoinAndReceiveIndexTask_1.default(this.meetingSessionContext),\\n new ReceiveTURNCredentialsTask_1.default(this.meetingSessionContext),\\n ]),\\n new CreatePeerConnectionTask_1.default(this.meetingSessionContext),\\n ]), this.configuration.connectionTimeoutMs),\\n // TODO: Do we need ReceiveVideoInputTask in the reconnect operation?\\n new ReceiveVideoInputTask_1.default(this.meetingSessionContext),\\n new TimeoutTask_1.default(this.logger, new SerialGroupTask_1.default(this.logger, 'UpdateSession', [\\n new AttachMediaInputTask_1.default(this.meetingSessionContext),\\n new CreateSDPTask_1.default(this.meetingSessionContext),\\n new SetLocalDescriptionTask_1.default(this.meetingSessionContext),\\n new FinishGatheringICECandidatesTask_1.default(this.meetingSessionContext),\\n new SubscribeAndReceiveSubscribeAckTask_1.default(this.meetingSessionContext),\\n new SetRemoteDescriptionTask_1.default(this.meetingSessionContext),\\n ]), this.configuration.connectionTimeoutMs),\\n ]).run();\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishConnecting, () => {\\n /* istanbul ignore else */\\n if (this.eventController) {\\n this.eventController.pushMeetingState('meetingReconnected');\\n }\\n this.actionFinishConnecting();\\n });\\n }\\n catch (error) {\\n // To perform the \\\"Reconnect\\\" action again, the session should be in the \\\"Connected\\\" state.\\n this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishConnecting, () => {\\n this.logger.info('failed to reconnect audio-video session');\\n const status = new MeetingSessionStatus_1.default(this.getMeetingStatusCode(error) || MeetingSessionStatusCode_1.default.TaskFailed);\\n this.handleMeetingSessionStatus(status, error);\\n });\\n }\\n this.connectionHealthData.setConnectionStartTime();\\n });\\n }\\n wrapTaskName(taskName) {\\n return `${taskName}/${this.configuration.meetingId}/${this.configuration.credentials.attendeeId}`;\\n }\\n getMeetingStatusCode(error) {\\n const matched = /the meeting status code: (\\\\d+)/.exec(error && error.message);\\n if (matched && matched.length > 1) {\\n return Number(matched[1]);\\n }\\n else {\\n return null;\\n }\\n }\\n enforceBandwidthLimitationForSender(maxBitrateKbps) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.meetingSessionContext.browserBehavior.requiresUnifiedPlan()) {\\n yield this.meetingSessionContext.transceiverController.setVideoSendingBitrateKbps(maxBitrateKbps);\\n }\\n else {\\n yield DefaultTransceiverController_1.default.setVideoSendingBitrateKbpsForSender(this.meetingSessionContext.localVideoSender, maxBitrateKbps, this.meetingSessionContext.logger);\\n }\\n });\\n }\\n handleMeetingSessionStatus(status, error) {\\n this.logger.info(`handling status: ${MeetingSessionStatusCode_1.default[status.statusCode()]}`);\\n if (!status.isTerminal()) {\\n if (this.meetingSessionContext.statsCollector) {\\n this.meetingSessionContext.statsCollector.logMeetingSessionStatus(status);\\n }\\n }\\n if (status.statusCode() === MeetingSessionStatusCode_1.default.IncompatibleSDP) {\\n this.restartLocalVideo(() => {\\n this.logger.info('handled incompatible SDP by attempting to restart video');\\n });\\n return true;\\n }\\n if (status.statusCode() === MeetingSessionStatusCode_1.default.VideoCallSwitchToViewOnly) {\\n this._videoTileController.removeLocalVideoTile();\\n this.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.videoSendDidBecomeUnavailable).map(f => f.bind(observer)());\\n });\\n return false;\\n }\\n if (status.isTerminal()) {\\n this.logger.error('session will not be reconnected');\\n if (this.meetingSessionContext.reconnectController) {\\n this.meetingSessionContext.reconnectController.disableReconnect();\\n }\\n }\\n if (status.isFailure() || status.isTerminal()) {\\n if (this.meetingSessionContext.reconnectController) {\\n const willRetry = this.reconnect(status, error);\\n if (willRetry) {\\n this.logger.warn(`will retry due to status code ${MeetingSessionStatusCode_1.default[status.statusCode()]}${error ? ` and error: ${error.message}` : ``}`);\\n }\\n else {\\n this.logger.error(`failed with status code ${MeetingSessionStatusCode_1.default[status.statusCode()]}${error ? ` and error: ${error.message}` : ``}`);\\n }\\n return willRetry;\\n }\\n }\\n return false;\\n }\\n setVideoMaxBandwidthKbps(maxBandwidthKbps) {\\n if (this.meetingSessionContext && this.meetingSessionContext.videoUplinkBandwidthPolicy) {\\n this.logger.info(`video send has ideal max bandwidth ${maxBandwidthKbps} kbps`);\\n this.meetingSessionContext.videoUplinkBandwidthPolicy.setIdealMaxBandwidthKbps(maxBandwidthKbps);\\n }\\n }\\n handleHasBandwidthPriority(hasBandwidthPriority) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.meetingSessionContext &&\\n this.meetingSessionContext.videoUplinkBandwidthPolicy &&\\n !this.meetingSessionContext.enableSimulcast) {\\n const oldMaxBandwidth = this.meetingSessionContext.videoUplinkBandwidthPolicy.maxBandwidthKbps();\\n this.meetingSessionContext.videoUplinkBandwidthPolicy.setHasBandwidthPriority(hasBandwidthPriority);\\n const newMaxBandwidth = this.meetingSessionContext.videoUplinkBandwidthPolicy.maxBandwidthKbps();\\n if (oldMaxBandwidth !== newMaxBandwidth) {\\n this.logger.info(`video send bandwidth priority ${hasBandwidthPriority} max has changed from ${oldMaxBandwidth} kbps to ${newMaxBandwidth} kbps`);\\n yield this.enforceBandwidthLimitationForSender(newMaxBandwidth);\\n }\\n }\\n });\\n }\\n pauseReceivingStream(streamId) {\\n if (!!this.meetingSessionContext && this.meetingSessionContext.signalingClient) {\\n this.meetingSessionContext.signalingClient.pause([streamId]);\\n }\\n }\\n resumeReceivingStream(streamId) {\\n if (!!this.meetingSessionContext && this.meetingSessionContext.signalingClient) {\\n this.meetingSessionContext.signalingClient.resume([streamId]);\\n }\\n }\\n getRemoteVideoSources() {\\n const { videoStreamIndex } = this.meetingSessionContext;\\n if (!videoStreamIndex) {\\n this.logger.info('meeting has not started');\\n return [];\\n }\\n const selfAttendeeId = this.configuration.credentials.attendeeId;\\n return videoStreamIndex.allVideoSendingSourcesExcludingSelf(selfAttendeeId);\\n }\\n encodingSimulcastLayersDidChange(simulcastLayers) {\\n this.forEachObserver(observer => {\\n Maybe_1.default.of(observer.encodingSimulcastLayersDidChange).map(f => f.bind(observer)(simulcastLayers));\\n });\\n }\\n}\\nexports[\\\"default\\\"] = DefaultAudioVideoController;\\nDefaultAudioVideoController.MIN_VOLUME_DECIBELS = -42;\\nDefaultAudioVideoController.MAX_VOLUME_DECIBELS = -14;\\nDefaultAudioVideoController.PING_PONG_INTERVAL_MS = 10000;\\n//# sourceMappingURL=DefaultAudioVideoController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/DefaultAudioVideoController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/NoOpAudioVideoController.js\":\n/*!*************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/NoOpAudioVideoController.js ***!\n \\*************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst FullJitterBackoff_1 = __webpack_require__(/*! ../backoff/FullJitterBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js\\\");\\nconst NoOpDebugLogger_1 = __webpack_require__(/*! ../logger/NoOpDebugLogger */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/NoOpDebugLogger.js\\\");\\nconst NoOpMediaStreamBroker_1 = __webpack_require__(/*! ../mediastreambroker/NoOpMediaStreamBroker */ \\\"./node_modules/amazon-chime-sdk-js/build/mediastreambroker/NoOpMediaStreamBroker.js\\\");\\nconst MeetingSessionConfiguration_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionConfiguration.js\\\");\\nconst MeetingSessionCredentials_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionCredentials */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionCredentials.js\\\");\\nconst MeetingSessionURLs_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionURLs */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionURLs.js\\\");\\nconst DefaultReconnectController_1 = __webpack_require__(/*! ../reconnectcontroller/DefaultReconnectController */ \\\"./node_modules/amazon-chime-sdk-js/build/reconnectcontroller/DefaultReconnectController.js\\\");\\nconst DefaultWebSocketAdapter_1 = __webpack_require__(/*! ../websocketadapter/DefaultWebSocketAdapter */ \\\"./node_modules/amazon-chime-sdk-js/build/websocketadapter/DefaultWebSocketAdapter.js\\\");\\nconst DefaultAudioVideoController_1 = __webpack_require__(/*! ./DefaultAudioVideoController */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/DefaultAudioVideoController.js\\\");\\nclass NoOpAudioVideoController extends DefaultAudioVideoController_1.default {\\n constructor(configuration) {\\n const emptyConfiguration = new MeetingSessionConfiguration_1.default();\\n emptyConfiguration.meetingId = '';\\n emptyConfiguration.externalMeetingId = '';\\n emptyConfiguration.credentials = new MeetingSessionCredentials_1.default();\\n emptyConfiguration.credentials.attendeeId = '';\\n emptyConfiguration.credentials.joinToken = '';\\n emptyConfiguration.urls = new MeetingSessionURLs_1.default();\\n emptyConfiguration.urls.turnControlURL = '';\\n emptyConfiguration.urls.audioHostURL = '';\\n emptyConfiguration.urls.screenViewingURL = '';\\n emptyConfiguration.urls.screenDataURL = '';\\n emptyConfiguration.urls.screenSharingURL = 'wss://localhost/';\\n emptyConfiguration.urls.signalingURL = 'wss://localhost/';\\n super(configuration ? configuration : emptyConfiguration, new NoOpDebugLogger_1.default(), new DefaultWebSocketAdapter_1.default(new NoOpDebugLogger_1.default()), new NoOpMediaStreamBroker_1.default(), new DefaultReconnectController_1.default(0, new FullJitterBackoff_1.default(0, 0, 0)));\\n }\\n setAudioProfile(_audioProfile) { }\\n start() { }\\n stop() { }\\n}\\nexports[\\\"default\\\"] = NoOpAudioVideoController;\\n//# sourceMappingURL=NoOpAudioVideoController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/NoOpAudioVideoController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/audiovideofacade/DefaultAudioVideoFacade.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/audiovideofacade/DefaultAudioVideoFacade.js ***!\n \\********************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst VideoTransformDevice_1 = __webpack_require__(/*! ../devicecontroller/VideoTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoTransformDevice.js\\\");\\nclass DefaultAudioVideoFacade {\\n constructor(audioVideoController, videoTileController, realtimeController, audioMixController, deviceController, contentShareController) {\\n this.audioVideoController = audioVideoController;\\n this.videoTileController = videoTileController;\\n this.realtimeController = realtimeController;\\n this.audioMixController = audioMixController;\\n this.deviceController = deviceController;\\n this.contentShareController = contentShareController;\\n }\\n addObserver(observer) {\\n this.audioVideoController.addObserver(observer);\\n this.trace('addObserver');\\n }\\n removeObserver(observer) {\\n this.audioVideoController.removeObserver(observer);\\n this.trace('removeObserver');\\n }\\n setAudioProfile(audioProfile) {\\n this.trace('setAudioProfile', audioProfile);\\n this.audioVideoController.setAudioProfile(audioProfile);\\n }\\n start() {\\n this.audioVideoController.start();\\n this.trace('start');\\n }\\n stop() {\\n this.audioVideoController.stop();\\n this.trace('stop');\\n }\\n getRTCPeerConnectionStats(selector) {\\n this.trace('getRTCPeerConnectionStats', selector ? selector.id : null);\\n return this.audioVideoController.getRTCPeerConnectionStats(selector);\\n }\\n bindAudioElement(element) {\\n const result = this.audioMixController.bindAudioElement(element);\\n this.trace('bindAudioElement', element.id, result);\\n return result;\\n }\\n unbindAudioElement() {\\n this.audioMixController.unbindAudioElement();\\n this.trace('unbindAudioElement');\\n }\\n bindVideoElement(tileId, videoElement) {\\n this.videoTileController.bindVideoElement(tileId, videoElement);\\n this.trace('bindVideoElement', { tileId: tileId, videoElementId: videoElement.id });\\n }\\n unbindVideoElement(tileId) {\\n this.videoTileController.unbindVideoElement(tileId);\\n this.trace('unbindVideoElement', tileId);\\n }\\n startLocalVideoTile() {\\n const result = this.videoTileController.startLocalVideoTile();\\n this.trace('startLocalVideoTile', null, result);\\n return result;\\n }\\n stopLocalVideoTile() {\\n this.videoTileController.stopLocalVideoTile();\\n this.trace('stopLocalVideoTile');\\n }\\n hasStartedLocalVideoTile() {\\n const result = this.videoTileController.hasStartedLocalVideoTile();\\n this.trace('hasStartedLocalVideoTile', null, result);\\n return result;\\n }\\n removeLocalVideoTile() {\\n this.videoTileController.removeLocalVideoTile();\\n this.trace('removeLocalVideoTile');\\n }\\n getLocalVideoTile() {\\n const result = this.videoTileController.getLocalVideoTile();\\n this.trace('getLocalVideoTile');\\n return result;\\n }\\n pauseVideoTile(tileId) {\\n this.videoTileController.pauseVideoTile(tileId);\\n this.trace('pauseVideoTile', tileId);\\n }\\n unpauseVideoTile(tileId) {\\n this.videoTileController.unpauseVideoTile(tileId);\\n this.trace('unpauseVideoTile', tileId);\\n }\\n getVideoTile(tileId) {\\n const result = this.videoTileController.getVideoTile(tileId);\\n this.trace('getVideoTile', tileId);\\n return result;\\n }\\n getAllRemoteVideoTiles() {\\n const result = this.videoTileController.getAllRemoteVideoTiles();\\n this.trace('getAllRemoteVideoTiles');\\n return result;\\n }\\n getAllVideoTiles() {\\n const result = this.videoTileController.getAllVideoTiles();\\n this.trace('getAllVideoTiles');\\n return result;\\n }\\n addVideoTile() {\\n const result = this.videoTileController.addVideoTile();\\n this.trace('addVideoTile', null, result.state());\\n return result;\\n }\\n removeVideoTile(tileId) {\\n this.videoTileController.removeVideoTile(tileId);\\n this.trace('removeVideoTile', tileId);\\n }\\n removeVideoTilesByAttendeeId(attendeeId) {\\n const result = this.videoTileController.removeVideoTilesByAttendeeId(attendeeId);\\n this.trace('removeVideoTilesByAttendeeId', attendeeId, result);\\n return result;\\n }\\n removeAllVideoTiles() {\\n this.videoTileController.removeAllVideoTiles();\\n this.trace('removeAllVideoTiles');\\n }\\n captureVideoTile(tileId) {\\n const result = this.videoTileController.captureVideoTile(tileId);\\n this.trace('captureVideoTile', tileId);\\n return result;\\n }\\n realtimeSubscribeToAttendeeIdPresence(callback) {\\n this.realtimeController.realtimeSubscribeToAttendeeIdPresence(callback);\\n this.trace('realtimeSubscribeToAttendeeIdPresence');\\n }\\n realtimeUnsubscribeToAttendeeIdPresence(callback) {\\n this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(callback);\\n this.trace('realtimeUnsubscribeToAttendeeIdPresence');\\n }\\n realtimeSetCanUnmuteLocalAudio(canUnmute) {\\n this.realtimeController.realtimeSetCanUnmuteLocalAudio(canUnmute);\\n this.trace('realtimeSetCanUnmuteLocalAudio', canUnmute);\\n }\\n realtimeSubscribeToSetCanUnmuteLocalAudio(callback) {\\n this.realtimeController.realtimeSubscribeToSetCanUnmuteLocalAudio(callback);\\n this.trace('realtimeSubscribeToSetCanUnmuteLocalAudio');\\n }\\n realtimeUnsubscribeToSetCanUnmuteLocalAudio(callback) {\\n this.realtimeController.realtimeUnsubscribeToSetCanUnmuteLocalAudio(callback);\\n }\\n realtimeCanUnmuteLocalAudio() {\\n const result = this.realtimeController.realtimeCanUnmuteLocalAudio();\\n this.trace('realtimeCanUnmuteLocalAudio', null, result);\\n return result;\\n }\\n realtimeMuteLocalAudio() {\\n this.realtimeController.realtimeMuteLocalAudio();\\n this.trace('realtimeMuteLocalAudio');\\n }\\n realtimeUnmuteLocalAudio() {\\n const result = this.realtimeController.realtimeUnmuteLocalAudio();\\n this.trace('realtimeUnmuteLocalAudio');\\n return result;\\n }\\n realtimeSubscribeToMuteAndUnmuteLocalAudio(callback) {\\n this.realtimeController.realtimeSubscribeToMuteAndUnmuteLocalAudio(callback);\\n this.trace('realtimeSubscribeToMuteAndUnmuteLocalAudio');\\n }\\n realtimeUnsubscribeToMuteAndUnmuteLocalAudio(callback) {\\n this.realtimeController.realtimeUnsubscribeToMuteAndUnmuteLocalAudio(callback);\\n }\\n realtimeIsLocalAudioMuted() {\\n const result = this.realtimeController.realtimeIsLocalAudioMuted();\\n this.trace('realtimeIsLocalAudioMuted');\\n return result;\\n }\\n realtimeSubscribeToVolumeIndicator(attendeeId, callback) {\\n this.realtimeController.realtimeSubscribeToVolumeIndicator(attendeeId, callback);\\n this.trace('realtimeSubscribeToVolumeIndicator', attendeeId);\\n }\\n realtimeUnsubscribeFromVolumeIndicator(attendeeId, callback) {\\n this.realtimeController.realtimeUnsubscribeFromVolumeIndicator(attendeeId, callback);\\n this.trace('realtimeUnsubscribeFromVolumeIndicator', attendeeId, callback);\\n }\\n realtimeSubscribeToLocalSignalStrengthChange(callback) {\\n this.realtimeController.realtimeSubscribeToLocalSignalStrengthChange(callback);\\n this.trace('realtimeSubscribeToLocalSignalStrengthChange');\\n }\\n realtimeUnsubscribeToLocalSignalStrengthChange(callback) {\\n this.realtimeController.realtimeUnsubscribeToLocalSignalStrengthChange(callback);\\n this.trace('realtimeUnsubscribeToLocalSignalStrengthChange');\\n }\\n realtimeSendDataMessage(topic, // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n data, lifetimeMs) {\\n this.realtimeController.realtimeSendDataMessage(topic, data, lifetimeMs);\\n this.trace('realtimeSendDataMessage');\\n }\\n realtimeSubscribeToReceiveDataMessage(topic, callback) {\\n this.realtimeController.realtimeSubscribeToReceiveDataMessage(topic, callback);\\n this.trace('realtimeSubscribeToReceiveDataMessage');\\n }\\n realtimeUnsubscribeFromReceiveDataMessage(topic) {\\n this.realtimeController.realtimeUnsubscribeFromReceiveDataMessage(topic);\\n this.trace('realtimeUnsubscribeFromReceiveDataMessage');\\n }\\n realtimeSubscribeToFatalError(callback) {\\n this.realtimeController.realtimeSubscribeToFatalError(callback);\\n }\\n realtimeUnsubscribeToFatalError(callback) {\\n this.realtimeController.realtimeUnsubscribeToFatalError(callback);\\n }\\n subscribeToActiveSpeakerDetector(policy, callback, scoresCallback, scoresCallbackIntervalMs) {\\n this.audioVideoController.activeSpeakerDetector.subscribe(policy, callback, scoresCallback, scoresCallbackIntervalMs);\\n this.trace('subscribeToActiveSpeakerDetector');\\n }\\n unsubscribeFromActiveSpeakerDetector(callback) {\\n this.audioVideoController.activeSpeakerDetector.unsubscribe(callback);\\n this.trace('unsubscribeFromActiveSpeakerDetector');\\n }\\n listAudioInputDevices() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const result = yield this.deviceController.listAudioInputDevices();\\n this.trace('listAudioInputDevices', null, result);\\n return result;\\n });\\n }\\n listVideoInputDevices() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const result = yield this.deviceController.listVideoInputDevices();\\n this.trace('listVideoInputDevices', null, result);\\n return result;\\n });\\n }\\n listAudioOutputDevices() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const result = yield this.deviceController.listAudioOutputDevices();\\n this.trace('listAudioOutputDevices', null, result);\\n return result;\\n });\\n }\\n chooseAudioInputDevice(device) {\\n this.trace('chooseAudioInputDevice', device);\\n return this.deviceController.chooseAudioInputDevice(device);\\n }\\n chooseVideoInputDevice(device) {\\n if (VideoTransformDevice_1.isVideoTransformDevice(device)) {\\n // Don't stringify the device to avoid failures when cyclic object references are present.\\n this.trace('chooseVideoInputDevice with transform device');\\n }\\n else {\\n this.trace('chooseVideoInputDevice', device);\\n }\\n return this.deviceController.chooseVideoInputDevice(device);\\n }\\n chooseAudioOutputDevice(deviceId) {\\n const result = this.deviceController.chooseAudioOutputDevice(deviceId);\\n this.trace('chooseAudioOutputDevice', deviceId);\\n return result;\\n }\\n addDeviceChangeObserver(observer) {\\n this.deviceController.addDeviceChangeObserver(observer);\\n this.trace('addDeviceChangeObserver');\\n }\\n removeDeviceChangeObserver(observer) {\\n this.deviceController.removeDeviceChangeObserver(observer);\\n this.trace('removeDeviceChangeObserver');\\n }\\n createAnalyserNodeForAudioInput() {\\n const result = this.deviceController.createAnalyserNodeForAudioInput();\\n this.trace('createAnalyserNodeForAudioInput');\\n return result;\\n }\\n startVideoPreviewForVideoInput(element) {\\n this.deviceController.startVideoPreviewForVideoInput(element);\\n this.trace('startVideoPreviewForVideoInput', element.id);\\n }\\n stopVideoPreviewForVideoInput(element) {\\n this.deviceController.stopVideoPreviewForVideoInput(element);\\n this.trace('stopVideoPreviewForVideoInput', element.id);\\n }\\n setDeviceLabelTrigger(trigger) {\\n this.deviceController.setDeviceLabelTrigger(trigger);\\n this.trace('setDeviceLabelTrigger');\\n }\\n mixIntoAudioInput(stream) {\\n const result = this.deviceController.mixIntoAudioInput(stream);\\n this.trace('mixIntoAudioInput', stream.id);\\n return result;\\n }\\n chooseVideoInputQuality(width, height, frameRate, maxBandwidthKbps) {\\n this.deviceController.chooseVideoInputQuality(width, height, frameRate, maxBandwidthKbps);\\n this.trace('chooseVideoInputQuality', {\\n width: width,\\n height: height,\\n frameRate: frameRate,\\n maxBandwidthKbps: maxBandwidthKbps,\\n });\\n }\\n getVideoInputQualitySettings() {\\n const result = this.deviceController.getVideoInputQualitySettings();\\n this.trace('getVideoInputQualitySettings');\\n return result;\\n }\\n setContentAudioProfile(audioProfile) {\\n this.trace('setContentAudioProfile', audioProfile);\\n this.contentShareController.setContentAudioProfile(audioProfile);\\n }\\n startContentShare(stream) {\\n const result = this.contentShareController.startContentShare(stream);\\n this.trace('startContentShare');\\n return result;\\n }\\n startContentShareFromScreenCapture(sourceId, frameRate) {\\n const result = this.contentShareController.startContentShareFromScreenCapture(sourceId, frameRate);\\n this.trace('startContentShareFromScreenCapture');\\n return result;\\n }\\n pauseContentShare() {\\n this.contentShareController.pauseContentShare();\\n this.trace('pauseContentShare');\\n }\\n unpauseContentShare() {\\n this.contentShareController.unpauseContentShare();\\n this.trace('unpauseContentShare');\\n }\\n stopContentShare() {\\n this.contentShareController.stopContentShare();\\n this.trace('stopContentShare');\\n }\\n addContentShareObserver(observer) {\\n this.contentShareController.addContentShareObserver(observer);\\n this.trace('addContentShareObserver');\\n }\\n removeContentShareObserver(observer) {\\n this.contentShareController.removeContentShareObserver(observer);\\n this.trace('removeContentShareObserver');\\n }\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n trace(name, input, output) {\\n const meetingId = this.audioVideoController.configuration.meetingId;\\n const attendeeId = this.audioVideoController.configuration.credentials.attendeeId;\\n let s = `API/DefaultAudioVideoFacade/${meetingId}/${attendeeId}/${name}`;\\n if (typeof input !== 'undefined') {\\n s += ` ${JSON.stringify(input)}`;\\n }\\n if (typeof output !== 'undefined') {\\n s += ` -> ${JSON.stringify(output)}`;\\n }\\n this.audioVideoController.logger.info(s);\\n }\\n getRemoteVideoSources() {\\n const result = this.audioVideoController.getRemoteVideoSources();\\n this.trace('getRemoteVideoSources', null, result);\\n return result;\\n }\\n}\\nexports[\\\"default\\\"] = DefaultAudioVideoFacade;\\n//# sourceMappingURL=DefaultAudioVideoFacade.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/audiovideofacade/DefaultAudioVideoFacade.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js\":\n/*!*****************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js ***!\n \\*****************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * Implements the [Full Jitter algorithm](\\n * https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/)\\n * and also allows for specifying a fixed wait added to the full jitter backoff\\n * (which can be zero).\\n */\\nclass FullJitterBackoff {\\n constructor(fixedWaitMs, shortBackoffMs, longBackoffMs) {\\n this.fixedWaitMs = fixedWaitMs;\\n this.shortBackoffMs = shortBackoffMs;\\n this.longBackoffMs = longBackoffMs;\\n this.currentRetry = 0;\\n if (this.fixedWaitMs < 0) {\\n this.fixedWaitMs = 0;\\n }\\n if (this.shortBackoffMs < 0) {\\n this.shortBackoffMs = 0;\\n }\\n if (this.longBackoffMs < 0) {\\n this.longBackoffMs = 0;\\n }\\n this.reset();\\n }\\n reset() {\\n this.currentRetry = 0;\\n }\\n nextBackoffAmountMs() {\\n const fullJitterMs = Math.random() *\\n Math.min(this.longBackoffMs, this.shortBackoffMs * Math.pow(2.0, this.currentRetry)) +\\n this.fixedWaitMs;\\n this.currentRetry += 1;\\n return fullJitterMs;\\n }\\n}\\nexports[\\\"default\\\"] = FullJitterBackoff;\\n//# sourceMappingURL=FullJitterBackoff.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoffFactory.js\":\n/*!************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoffFactory.js ***!\n \\************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst FullJitterBackoff_1 = __webpack_require__(/*! ./FullJitterBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js\\\");\\nconst FullJitterLimitedBackoff_1 = __webpack_require__(/*! ./FullJitterLimitedBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterLimitedBackoff.js\\\");\\nclass FullJitterBackoffFactory {\\n constructor(fixedWaitMs, shortBackoffMs, longBackoffMs) {\\n this.fixedWaitMs = fixedWaitMs;\\n this.shortBackoffMs = shortBackoffMs;\\n this.longBackoffMs = longBackoffMs;\\n }\\n create() {\\n return new FullJitterBackoff_1.default(this.fixedWaitMs, this.shortBackoffMs, this.longBackoffMs);\\n }\\n createWithLimit(limit) {\\n return new FullJitterLimitedBackoff_1.default(this.fixedWaitMs, this.shortBackoffMs, this.longBackoffMs, limit);\\n }\\n}\\nexports[\\\"default\\\"] = FullJitterBackoffFactory;\\n//# sourceMappingURL=FullJitterBackoffFactory.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoffFactory.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterLimitedBackoff.js\":\n/*!************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterLimitedBackoff.js ***!\n \\************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst FullJitterBackoff_1 = __webpack_require__(/*! ./FullJitterBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js\\\");\\nclass FullJitterLimitedBackoff extends FullJitterBackoff_1.default {\\n constructor(fixedWaitMs, shortBackoffMs, longBackoffMs, limit) {\\n super(fixedWaitMs, shortBackoffMs, longBackoffMs);\\n this.limit = limit;\\n this.attempts = 0;\\n }\\n nextBackoffAmountMs() {\\n this.attempts++;\\n if (this.attempts > this.limit) {\\n throw new Error('retry limit exceeded');\\n }\\n return super.nextBackoffAmountMs();\\n }\\n}\\nexports[\\\"default\\\"] = FullJitterLimitedBackoff;\\n//# sourceMappingURL=FullJitterLimitedBackoff.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterLimitedBackoff.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\":\n/*!******************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js ***!\n \\******************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst detect_browser_1 = __webpack_require__(/*! detect-browser */ \\\"./node_modules/detect-browser/es/index.js\\\");\\nclass DefaultBrowserBehavior {\\n constructor({ enableUnifiedPlanForChromiumBasedBrowsers = false, } = {}) {\\n this.browser = detect_browser_1.detect();\\n this.browserSupport = {\\n chrome: 78,\\n 'edge-chromium': 79,\\n electron: 7,\\n firefox: 60,\\n ios: 12,\\n safari: 12,\\n opera: 66,\\n samsung: 12,\\n crios: 86,\\n fxios: 23,\\n };\\n this.browserName = {\\n chrome: 'Google Chrome',\\n 'edge-chromium': 'Microsoft Edge',\\n electron: 'Electron',\\n firefox: 'Mozilla Firefox',\\n ios: 'Safari iOS',\\n safari: 'Safari',\\n opera: 'Opera',\\n samsung: 'Samsung Internet',\\n crios: 'Chrome iOS',\\n fxios: 'Firefox iOS',\\n };\\n this.chromeLike = [\\n 'chrome',\\n 'edge-chromium',\\n 'chromium-webview',\\n 'opera',\\n 'samsung',\\n ];\\n this.webkitBrowsers = ['crios', 'fxios', 'safari', 'ios'];\\n this.enableUnifiedPlanForChromiumBasedBrowsers = enableUnifiedPlanForChromiumBasedBrowsers;\\n }\\n version() {\\n return this.browser.version;\\n }\\n majorVersion() {\\n return parseInt(this.version().split('.')[0]);\\n }\\n name() {\\n return this.browser.name;\\n }\\n hasChromiumWebRTC() {\\n for (const browser of this.chromeLike) {\\n if (browser === this.browser.name) {\\n return true;\\n }\\n }\\n return false;\\n }\\n hasWebKitWebRTC() {\\n for (const browser of this.webkitBrowsers) {\\n if (browser === this.browser.name) {\\n return true;\\n }\\n }\\n return false;\\n }\\n hasFirefoxWebRTC() {\\n return this.isFirefox();\\n }\\n supportsCanvasCapturedStreamPlayback() {\\n return !this.isIOSSafari() && !this.isIOSChrome() && !this.isIOSFirefox();\\n }\\n requiresUnifiedPlan() {\\n let shouldEnable = this.isFirefox() || (this.hasWebKitWebRTC() && this.isUnifiedPlanSupported());\\n if (this.enableUnifiedPlanForChromiumBasedBrowsers) {\\n shouldEnable = shouldEnable || this.hasChromiumWebRTC();\\n }\\n return shouldEnable;\\n }\\n requiresResolutionAlignment(width, height) {\\n if (this.isAndroid() && this.isPixel3()) {\\n return [Math.ceil(width / 64) * 64, Math.ceil(height / 64) * 64];\\n }\\n return [width, height];\\n }\\n requiresCheckForSdpConnectionAttributes() {\\n return !this.isIOSSafari() && !this.isIOSChrome() && !this.isIOSFirefox();\\n }\\n requiresIceCandidateGatheringTimeoutWorkaround() {\\n return this.hasChromiumWebRTC();\\n }\\n requiresUnifiedPlanMunging() {\\n let shouldRequire = this.hasWebKitWebRTC() && this.isUnifiedPlanSupported();\\n if (this.enableUnifiedPlanForChromiumBasedBrowsers) {\\n shouldRequire = shouldRequire || this.hasChromiumWebRTC();\\n }\\n return shouldRequire;\\n }\\n requiresSortCodecPreferencesForSdpAnswer() {\\n return this.isFirefox() && this.majorVersion() <= 68;\\n }\\n requiresSimulcastMunging() {\\n return this.isSafari();\\n }\\n requiresBundlePolicy() {\\n return 'max-bundle';\\n }\\n requiresPromiseBasedWebRTCGetStats() {\\n return !this.hasChromiumWebRTC();\\n }\\n requiresVideoElementWorkaround() {\\n return this.isSafari();\\n }\\n requiresNoExactMediaStreamConstraints() {\\n return (this.isSamsungInternet() ||\\n (this.isIOSSafari() && (this.version() === '12.0.0' || this.version() === '12.1.0')));\\n }\\n requiresGroupIdMediaStreamConstraints() {\\n return this.isSamsungInternet();\\n }\\n requiresContextRecreationForAudioWorklet() {\\n // Definitely not Chrome; no worries.\\n if (!('chrome' in __webpack_require__.g)) {\\n return false;\\n }\\n // Everything seems to work fine on platforms other than macOS.\\n if (this.browser.os !== 'Mac OS') {\\n return false;\\n }\\n // Electron or Chromium.\\n if (this.isChrome() || this.isEdge()) {\\n return true;\\n }\\n // All other browsers are fine.\\n return false;\\n }\\n getDisplayMediaAudioCaptureSupport() {\\n return this.isChrome() || this.isEdge();\\n }\\n supportsSenderSideBandwidthEstimation() {\\n return this.hasChromiumWebRTC() || this.isSafari();\\n }\\n // TODO: Deprecated, needs to be removed\\n screenShareUnsupported() {\\n console.warn('This function is no longer supported.');\\n if (this.isSafari()) {\\n return true;\\n }\\n return false;\\n }\\n isSupported() {\\n if (!this.browserSupport[this.browser.name] ||\\n this.majorVersion() < this.browserSupport[this.browser.name]) {\\n return false;\\n }\\n if (this.browser.name === 'firefox' && this.isAndroid()) {\\n return false;\\n }\\n return true;\\n }\\n supportString() {\\n if (this.isAndroid()) {\\n return `${this.browserName['chrome']} ${this.browserSupport['chrome']}+, ${this.browserName['samsung']} ${this.browserSupport['samsung']}+`;\\n }\\n const s = [];\\n for (const k in this.browserSupport) {\\n s.push(`${this.browserName[k]} ${this.browserSupport[k]}+`);\\n }\\n return s.join(', ');\\n }\\n supportedVideoCodecs() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const pc = new RTCPeerConnection();\\n pc.addTransceiver('video', { direction: 'inactive', streams: [] });\\n return (yield pc.createOffer({ offerToReceiveVideo: true })).sdp\\n .split('\\\\r\\\\n')\\n .filter(x => {\\n return x.includes('a=rtpmap:');\\n })\\n .map(x => {\\n return x.replace(/.* /, '').replace(/\\\\/.*/, '');\\n })\\n .filter((v, i, a) => {\\n return a.indexOf(v) === i;\\n })\\n .filter(x => {\\n return x !== 'rtx' && x !== 'red' && x !== 'ulpfec';\\n });\\n });\\n }\\n supportsSetSinkId() {\\n return 'setSinkId' in HTMLAudioElement.prototype;\\n }\\n // These helpers should be kept private to encourage\\n // feature detection instead of browser detection.\\n isIOSSafari() {\\n return this.browser.name === 'ios';\\n }\\n isSafari() {\\n return this.browser.name === 'safari' || this.browser.name === 'ios';\\n }\\n isFirefox() {\\n return this.browser.name === 'firefox';\\n }\\n isIOSFirefox() {\\n return this.browser.name === 'fxios';\\n }\\n isIOSChrome() {\\n return this.browser.name === 'crios';\\n }\\n isChrome() {\\n return this.browser.name === 'chrome';\\n }\\n isEdge() {\\n return this.browser.name === 'edge-chromium';\\n }\\n isSamsungInternet() {\\n return this.browser.name === 'samsung';\\n }\\n isAndroid() {\\n return /(android)/i.test(navigator.userAgent);\\n }\\n isPixel3() {\\n return /( pixel 3)/i.test(navigator.userAgent);\\n }\\n isUnifiedPlanSupported() {\\n return RTCRtpTransceiver.prototype.hasOwnProperty('currentDirection');\\n }\\n}\\nexports[\\\"default\\\"] = DefaultBrowserBehavior;\\n//# sourceMappingURL=DefaultBrowserBehavior.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportDirection.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportDirection.js ***!\n \\**************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.ClientMetricReportDirection = void 0;\\nvar ClientMetricReportDirection;\\n(function (ClientMetricReportDirection) {\\n ClientMetricReportDirection[ClientMetricReportDirection[\\\"UPSTREAM\\\"] = 0] = \\\"UPSTREAM\\\";\\n ClientMetricReportDirection[ClientMetricReportDirection[\\\"DOWNSTREAM\\\"] = 1] = \\\"DOWNSTREAM\\\";\\n})(ClientMetricReportDirection = exports.ClientMetricReportDirection || (exports.ClientMetricReportDirection = {}));\\nexports[\\\"default\\\"] = ClientMetricReportDirection;\\n//# sourceMappingURL=ClientMetricReportDirection.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportDirection.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportMediaType.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportMediaType.js ***!\n \\**************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.ClientMetricReportMediaType = void 0;\\nvar ClientMetricReportMediaType;\\n(function (ClientMetricReportMediaType) {\\n ClientMetricReportMediaType[ClientMetricReportMediaType[\\\"AUDIO\\\"] = 0] = \\\"AUDIO\\\";\\n ClientMetricReportMediaType[ClientMetricReportMediaType[\\\"VIDEO\\\"] = 1] = \\\"VIDEO\\\";\\n})(ClientMetricReportMediaType = exports.ClientMetricReportMediaType || (exports.ClientMetricReportMediaType = {}));\\nexports[\\\"default\\\"] = ClientMetricReportMediaType;\\n//# sourceMappingURL=ClientMetricReportMediaType.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportMediaType.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientVideoStreamReceivingReport.js\":\n/*!*******************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientVideoStreamReceivingReport.js ***!\n \\*******************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass ClientVideoStreamReceivingReport {\\n}\\nexports[\\\"default\\\"] = ClientVideoStreamReceivingReport;\\n//# sourceMappingURL=ClientVideoStreamReceivingReport.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientVideoStreamReceivingReport.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/DefaultClientMetricReport.js\":\n/*!************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/clientmetricreport/DefaultClientMetricReport.js ***!\n \\************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst ClientMetricReportDirection_1 = __webpack_require__(/*! ./ClientMetricReportDirection */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportDirection.js\\\");\\nconst ClientMetricReportMediaType_1 = __webpack_require__(/*! ./ClientMetricReportMediaType */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportMediaType.js\\\");\\nconst GlobalMetricReport_1 = __webpack_require__(/*! ./GlobalMetricReport */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/GlobalMetricReport.js\\\");\\nclass DefaultClientMetricReport {\\n constructor(logger) {\\n this.logger = logger;\\n this.globalMetricReport = new GlobalMetricReport_1.default();\\n this.streamMetricReports = {};\\n this.currentTimestampMs = 0;\\n this.previousTimestampMs = 0;\\n this.currentSsrcs = {};\\n /**\\n * Metric transform functions\\n */\\n this.identityValue = (metricName, ssrc) => {\\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\\n return Number(metricReport.currentMetrics[metricName]);\\n };\\n this.decoderLossPercent = (metricName, ssrc) => {\\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\\n const decoderNormal = metricReport.currentMetrics['googDecodingNormal'] -\\n (metricReport.previousMetrics['googDecodingNormal'] || 0);\\n const decoderCalls = metricReport.currentMetrics['googDecodingCTN'] -\\n (metricReport.previousMetrics['googDecodingCTN'] || 0);\\n if (decoderCalls <= 0) {\\n return 0;\\n }\\n const decoderAbnormal = decoderCalls - decoderNormal;\\n if (decoderAbnormal <= 0) {\\n return 0;\\n }\\n return (decoderAbnormal * 100) / decoderCalls;\\n };\\n this.packetLossPercent = (sourceMetricName, ssrc) => {\\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\\n const sentOrReceived = metricReport.currentMetrics[sourceMetricName] -\\n (metricReport.previousMetrics[sourceMetricName] || 0);\\n const lost = metricReport.currentMetrics['packetsLost'] -\\n (metricReport.previousMetrics['packetsLost'] || 0);\\n const total = sentOrReceived + lost;\\n if (total <= 0 || lost <= 0) {\\n return 0;\\n }\\n return (lost * 100) / total;\\n };\\n this.countPerSecond = (metricName, ssrc) => {\\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\\n let intervalSeconds = (this.currentTimestampMs - this.previousTimestampMs) / 1000;\\n if (intervalSeconds <= 0) {\\n return 0;\\n }\\n if (this.previousTimestampMs <= 0) {\\n intervalSeconds = 1;\\n }\\n const diff = metricReport.currentMetrics[metricName] - (metricReport.previousMetrics[metricName] || 0);\\n if (diff <= 0) {\\n return 0;\\n }\\n return Math.trunc(diff / intervalSeconds);\\n };\\n this.bitsPerSecond = (metricName, ssrc) => {\\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\\n let intervalSeconds = (this.currentTimestampMs - this.previousTimestampMs) / 1000;\\n if (intervalSeconds <= 0) {\\n return 0;\\n }\\n if (this.previousTimestampMs <= 0) {\\n intervalSeconds = 1;\\n }\\n const diff = (metricReport.currentMetrics[metricName] - (metricReport.previousMetrics[metricName] || 0)) *\\n 8;\\n if (diff <= 0) {\\n return 0;\\n }\\n return Math.trunc(diff / intervalSeconds);\\n };\\n this.secondsToMilliseconds = (metricName, ssrc) => {\\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\\n return Number(metricReport.currentMetrics[metricName] * 1000);\\n };\\n /**\\n * Canonical and derived metric maps\\n */\\n this.globalMetricMap = {\\n googActualEncBitrate: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_ACTUAL_ENCODER_BITRATE,\\n },\\n googAvailableSendBandwidth: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_AVAILABLE_SEND_BANDWIDTH,\\n },\\n googRetransmitBitrate: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RETRANSMIT_BITRATE,\\n },\\n googAvailableReceiveBandwidth: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_AVAILABLE_RECEIVE_BANDWIDTH,\\n },\\n googTargetEncBitrate: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_TARGET_ENCODER_BITRATE,\\n },\\n googBucketDelay: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_BUCKET_DELAY_MS },\\n googRtt: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.STUN_RTT_MS },\\n packetsDiscardedOnSend: {\\n transform: this.countPerSecond,\\n type: SignalingProtocol_js_1.SdkMetric.Type.SOCKET_DISCARDED_PPS,\\n },\\n availableIncomingBitrate: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_AVAILABLE_RECEIVE_BANDWIDTH,\\n },\\n availableOutgoingBitrate: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_AVAILABLE_SEND_BANDWIDTH,\\n },\\n currentRoundTripTime: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.STUN_RTT_MS },\\n };\\n this.audioUpstreamMetricMap = {\\n googJitterReceived: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_JITTER_MS },\\n jitter: { transform: this.secondsToMilliseconds, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_JITTER_MS },\\n packetsSent: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_PPS },\\n bytesSent: { transform: this.bitsPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_BITRATE },\\n googRtt: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_RTT_MS },\\n packetsLost: {\\n transform: this.packetLossPercent,\\n type: SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_FRACTION_PACKET_LOST_PERCENT,\\n source: 'packetsSent',\\n },\\n };\\n this.audioDownstreamMetricMap = {\\n packetsReceived: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_PPS },\\n packetsLost: {\\n transform: this.packetLossPercent,\\n type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_FRACTION_PACKET_LOST_PERCENT,\\n source: 'packetsReceived',\\n },\\n googJitterReceived: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_JITTER_MS },\\n jitter: { transform: this.secondsToMilliseconds, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_JITTER_MS },\\n googDecodingCTN: { transform: this.countPerSecond },\\n googDecodingNormal: {\\n transform: this.decoderLossPercent,\\n type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_FRACTION_DECODER_LOSS_PERCENT,\\n source: 'googDecodingCTN',\\n },\\n bytesReceived: { transform: this.bitsPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_BITRATE },\\n googCurrentDelayMs: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_CURRENT_DELAY_MS,\\n },\\n googJitterBufferMs: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_JITTER_BUFFER_MS,\\n },\\n };\\n this.videoUpstreamMetricMap = {\\n googRtt: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_RTT_MS },\\n googEncodeUsagePercent: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_ENCODE_USAGE_PERCENT,\\n },\\n googNacksReceived: {\\n transform: this.countPerSecond,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_NACKS_RECEIVED,\\n },\\n nackCount: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_NACKS_RECEIVED },\\n googPlisReceived: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_PLIS_RECEIVED },\\n pliCount: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_PLIS_RECEIVED },\\n googFirsReceived: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_FIRS_RECEIVED },\\n firCount: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_FIRS_RECEIVED },\\n googAvgEncodeMs: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_AVERAGE_ENCODE_MS,\\n },\\n googFrameRateInput: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_INPUT_FPS },\\n framesEncoded: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_ENCODE_FPS },\\n googFrameRateSent: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_FPS },\\n framerateMean: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_FPS },\\n packetsSent: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_PPS },\\n packetsLost: {\\n transform: this.packetLossPercent,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT,\\n source: 'packetsSent',\\n },\\n bytesSent: { transform: this.bitsPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_BITRATE },\\n droppedFrames: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DROPPED_FPS },\\n qpSum: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_QP_SUM },\\n };\\n this.videoDownstreamMetricMap = {\\n googTargetDelayMs: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_TARGET_DELAY_MS,\\n },\\n googDecodeMs: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DECODE_MS },\\n googFrameRateOutput: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_OUTPUT_FPS },\\n packetsReceived: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_PPS },\\n packetsLost: {\\n transform: this.packetLossPercent,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT,\\n source: 'packetsReceived',\\n },\\n googRenderDelayMs: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RENDER_DELAY_MS,\\n },\\n googFrameRateReceived: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_FPS,\\n },\\n framerateMean: { transform: this.identityValue, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_FPS },\\n framesDecoded: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DECODE_FPS },\\n googNacksSent: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_NACKS_SENT },\\n nackCount: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_NACKS_SENT },\\n googFirsSent: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_FIRS_SENT },\\n firCount: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_FIRS_SENT },\\n googPlisSent: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_PLIS_SENT },\\n pliCount: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_PLIS_SENT },\\n bytesReceived: { transform: this.bitsPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_BITRATE },\\n googCurrentDelayMs: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_CURRENT_DELAY_MS,\\n },\\n googJitterBufferMs: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_JITTER_BUFFER_MS,\\n },\\n discardedPackets: { transform: this.countPerSecond, type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DISCARDED_PPS },\\n googJitterReceived: {\\n transform: this.identityValue,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_JITTER_MS,\\n },\\n jitter: {\\n transform: this.secondsToMilliseconds,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_JITTER_MS,\\n },\\n qpSum: {\\n transform: this.countPerSecond,\\n type: SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_QP_SUM,\\n },\\n };\\n /**\\n * Observable metrics and related APIs\\n */\\n this.observableMetricSpec = {\\n audioPacketsReceived: {\\n source: 'packetsReceived',\\n media: ClientMetricReportMediaType_1.default.AUDIO,\\n dir: ClientMetricReportDirection_1.default.DOWNSTREAM,\\n },\\n audioPacketsReceivedFractionLoss: {\\n source: 'packetsLost',\\n media: ClientMetricReportMediaType_1.default.AUDIO,\\n dir: ClientMetricReportDirection_1.default.DOWNSTREAM,\\n },\\n audioDecoderLoss: {\\n source: 'googDecodingNormal',\\n media: ClientMetricReportMediaType_1.default.AUDIO,\\n dir: ClientMetricReportDirection_1.default.DOWNSTREAM,\\n },\\n videoUpstreamBitrate: { source: 'bytesSent', media: ClientMetricReportMediaType_1.default.VIDEO, dir: ClientMetricReportDirection_1.default.UPSTREAM },\\n videoPacketSentPerSecond: {\\n source: 'packetsSent',\\n media: ClientMetricReportMediaType_1.default.VIDEO,\\n dir: ClientMetricReportDirection_1.default.UPSTREAM,\\n },\\n availableSendBandwidth: { source: 'googAvailableSendBandwidth' },\\n availableReceiveBandwidth: { source: 'googAvailableReceiveBandwidth' },\\n audioSpeakerDelayMs: {\\n source: 'googCurrentDelayMs',\\n media: ClientMetricReportMediaType_1.default.AUDIO,\\n dir: ClientMetricReportDirection_1.default.DOWNSTREAM,\\n },\\n // new getStats() API\\n availableIncomingBitrate: { source: 'availableIncomingBitrate' },\\n availableOutgoingBitrate: { source: 'availableOutgoingBitrate' },\\n nackCountReceivedPerSecond: {\\n source: 'nackCount',\\n media: ClientMetricReportMediaType_1.default.VIDEO,\\n dir: ClientMetricReportDirection_1.default.UPSTREAM,\\n },\\n googNackCountReceivedPerSecond: {\\n source: 'googNacksReceived',\\n media: ClientMetricReportMediaType_1.default.VIDEO,\\n dir: ClientMetricReportDirection_1.default.UPSTREAM,\\n },\\n };\\n }\\n getMetricMap(mediaType, direction) {\\n switch (mediaType) {\\n case ClientMetricReportMediaType_1.default.AUDIO:\\n switch (direction) {\\n case ClientMetricReportDirection_1.default.UPSTREAM:\\n return this.audioUpstreamMetricMap;\\n case ClientMetricReportDirection_1.default.DOWNSTREAM:\\n return this.audioDownstreamMetricMap;\\n }\\n case ClientMetricReportMediaType_1.default.VIDEO:\\n switch (direction) {\\n case ClientMetricReportDirection_1.default.UPSTREAM:\\n return this.videoUpstreamMetricMap;\\n case ClientMetricReportDirection_1.default.DOWNSTREAM:\\n return this.videoDownstreamMetricMap;\\n }\\n default:\\n return this.globalMetricMap;\\n }\\n }\\n getObservableMetricValue(metricName) {\\n const observableMetricSpec = this.observableMetricSpec[metricName];\\n const metricMap = this.getMetricMap(observableMetricSpec.media, observableMetricSpec.dir);\\n const metricSpec = metricMap[observableMetricSpec.source];\\n const transform = metricSpec.transform;\\n const source = metricSpec.source;\\n if (observableMetricSpec.hasOwnProperty('media')) {\\n for (const ssrc in this.streamMetricReports) {\\n const streamMetricReport = this.streamMetricReports[ssrc];\\n if (observableMetricSpec.source in streamMetricReport.currentMetrics &&\\n streamMetricReport.direction === observableMetricSpec.dir &&\\n streamMetricReport.mediaType === observableMetricSpec.media) {\\n return source\\n ? transform(source, Number(ssrc))\\n : transform(observableMetricSpec.source, Number(ssrc));\\n }\\n }\\n }\\n else {\\n return source ? transform(source) : transform(observableMetricSpec.source);\\n }\\n return 0;\\n }\\n getObservableMetrics() {\\n const metric = {};\\n for (const metricName in this.observableMetricSpec) {\\n metric[metricName] = this.getObservableMetricValue(metricName);\\n }\\n return metric;\\n }\\n /**\\n * Utilities\\n */\\n clone() {\\n const cloned = new DefaultClientMetricReport(this.logger);\\n cloned.globalMetricReport = this.globalMetricReport;\\n cloned.streamMetricReports = this.streamMetricReports;\\n cloned.currentTimestampMs = this.currentTimestampMs;\\n cloned.previousTimestampMs = this.previousTimestampMs;\\n return cloned;\\n }\\n print() {\\n const clientMetricReport = {\\n globalMetricReport: this.globalMetricReport,\\n streamMetricReports: this.streamMetricReports,\\n currentTimestampMs: this.currentTimestampMs,\\n previousTimestampMs: this.previousTimestampMs,\\n };\\n this.logger.debug(() => {\\n return `Client Metric Report: ${JSON.stringify(clientMetricReport)}`;\\n });\\n }\\n removeDestroyedSsrcs() {\\n for (const ssrc in this.streamMetricReports) {\\n if (!this.currentSsrcs[ssrc]) {\\n delete this.streamMetricReports[ssrc];\\n }\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultClientMetricReport;\\n//# sourceMappingURL=DefaultClientMetricReport.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/clientmetricreport/DefaultClientMetricReport.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/GlobalMetricReport.js\":\n/*!*****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/clientmetricreport/GlobalMetricReport.js ***!\n \\*****************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass GlobalMetricReport {\\n constructor() {\\n this.previousMetrics = {};\\n this.currentMetrics = {};\\n }\\n}\\nexports[\\\"default\\\"] = GlobalMetricReport;\\n//# sourceMappingURL=GlobalMetricReport.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/clientmetricreport/GlobalMetricReport.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/StreamMetricReport.js\":\n/*!*****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/clientmetricreport/StreamMetricReport.js ***!\n \\*****************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass StreamMetricReport {\\n constructor() {\\n this.previousMetrics = {};\\n this.currentMetrics = {};\\n }\\n}\\nexports[\\\"default\\\"] = StreamMetricReport;\\n//# sourceMappingURL=StreamMetricReport.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/clientmetricreport/StreamMetricReport.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/BaseConnectionHealthPolicy.js\":\n/*!*****************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/BaseConnectionHealthPolicy.js ***!\n \\*****************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass BaseConnectionHealthPolicy {\\n constructor(configuration, data) {\\n this.minHealth = configuration.minHealth;\\n this.maxHealth = configuration.maxHealth;\\n this.currentHealth = configuration.initialHealth;\\n this.currentData = data.clone();\\n }\\n minimumHealth() {\\n return this.minHealth;\\n }\\n maximumHealth() {\\n return this.maxHealth;\\n }\\n health() {\\n return this.maximumHealth();\\n }\\n update(connectionHealthData) {\\n this.currentData = connectionHealthData;\\n }\\n getConnectionHealthData() {\\n return this.currentData.clone();\\n }\\n healthy() {\\n return this.health() > this.minimumHealth();\\n }\\n healthIfChanged() {\\n const newHealth = this.health();\\n if (newHealth !== this.currentHealth) {\\n this.currentHealth = newHealth;\\n return newHealth;\\n }\\n return null;\\n }\\n}\\nexports[\\\"default\\\"] = BaseConnectionHealthPolicy;\\n//# sourceMappingURL=BaseConnectionHealthPolicy.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/BaseConnectionHealthPolicy.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthData.js\":\n/*!***********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthData.js ***!\n \\***********************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass ConnectionHealthData {\\n constructor() {\\n this.connectionStartTimestampMs = 0;\\n this.consecutiveStatsWithNoPackets = 0;\\n this.lastPacketLossInboundTimestampMs = 0;\\n this.lastGoodSignalTimestampMs = 0;\\n this.lastWeakSignalTimestampMs = 0;\\n this.lastNoSignalTimestampMs = 0;\\n this.consecutiveMissedPongs = 0;\\n this.packetsReceivedInLastMinute = [];\\n this.fractionPacketsLostInboundInLastMinute = [];\\n this.audioSpeakerDelayMs = 0;\\n this.connectionStartTimestampMs = Date.now();\\n this.lastGoodSignalTimestampMs = Date.now();\\n }\\n static isTimestampRecent(timestampMs, recentDurationMs) {\\n return Date.now() < timestampMs + recentDurationMs;\\n }\\n setConnectionStartTime() {\\n this.connectionStartTimestampMs = Date.now();\\n this.lastGoodSignalTimestampMs = Date.now();\\n }\\n reset() {\\n this.connectionStartTimestampMs = 0;\\n this.consecutiveStatsWithNoPackets = 0;\\n this.lastPacketLossInboundTimestampMs = 0;\\n this.lastGoodSignalTimestampMs = 0;\\n this.lastWeakSignalTimestampMs = 0;\\n this.lastNoSignalTimestampMs = 0;\\n this.consecutiveMissedPongs = 0;\\n this.packetsReceivedInLastMinute = [];\\n this.fractionPacketsLostInboundInLastMinute = [];\\n this.audioSpeakerDelayMs = 0;\\n this.connectionStartTimestampMs = Date.now();\\n this.lastGoodSignalTimestampMs = Date.now();\\n }\\n isConnectionStartRecent(recentDurationMs) {\\n return ConnectionHealthData.isTimestampRecent(this.connectionStartTimestampMs, recentDurationMs);\\n }\\n isLastPacketLossRecent(recentDurationMs) {\\n return ConnectionHealthData.isTimestampRecent(this.lastPacketLossInboundTimestampMs, recentDurationMs);\\n }\\n isGoodSignalRecent(recentDurationMs) {\\n return ConnectionHealthData.isTimestampRecent(this.lastGoodSignalTimestampMs, recentDurationMs);\\n }\\n isWeakSignalRecent(recentDurationMs) {\\n return ConnectionHealthData.isTimestampRecent(this.lastWeakSignalTimestampMs, recentDurationMs);\\n }\\n isNoSignalRecent(recentDurationMs) {\\n return ConnectionHealthData.isTimestampRecent(this.lastNoSignalTimestampMs, recentDurationMs);\\n }\\n clone() {\\n const cloned = new ConnectionHealthData();\\n cloned.connectionStartTimestampMs = this.connectionStartTimestampMs;\\n cloned.consecutiveStatsWithNoPackets = this.consecutiveStatsWithNoPackets;\\n cloned.lastPacketLossInboundTimestampMs = this.lastPacketLossInboundTimestampMs;\\n cloned.lastGoodSignalTimestampMs = this.lastGoodSignalTimestampMs;\\n cloned.lastWeakSignalTimestampMs = this.lastWeakSignalTimestampMs;\\n cloned.lastNoSignalTimestampMs = this.lastNoSignalTimestampMs;\\n cloned.consecutiveMissedPongs = this.consecutiveMissedPongs;\\n cloned.packetsReceivedInLastMinute = this.packetsReceivedInLastMinute.slice(0);\\n cloned.fractionPacketsLostInboundInLastMinute = this.fractionPacketsLostInboundInLastMinute.slice(0);\\n cloned.audioSpeakerDelayMs = this.audioSpeakerDelayMs;\\n return cloned;\\n }\\n setConsecutiveMissedPongs(pongs) {\\n this.consecutiveMissedPongs = pongs;\\n }\\n setConsecutiveStatsWithNoPackets(stats) {\\n this.consecutiveStatsWithNoPackets = stats;\\n }\\n setLastPacketLossInboundTimestampMs(timeStamp) {\\n this.lastPacketLossInboundTimestampMs = timeStamp;\\n }\\n setLastNoSignalTimestampMs(timeStamp) {\\n this.lastNoSignalTimestampMs = timeStamp;\\n }\\n setLastWeakSignalTimestampMs(timeStamp) {\\n this.lastWeakSignalTimestampMs = timeStamp;\\n }\\n setLastGoodSignalTimestampMs(timeStamp) {\\n this.lastGoodSignalTimestampMs = timeStamp;\\n }\\n setAudioSpeakerDelayMs(delayMs) {\\n this.audioSpeakerDelayMs = delayMs;\\n }\\n}\\nexports[\\\"default\\\"] = ConnectionHealthData;\\n//# sourceMappingURL=ConnectionHealthData.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthData.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthPolicyConfiguration.js\":\n/*!**************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthPolicyConfiguration.js ***!\n \\**************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass ConnectionHealthPolicyConfiguration {\\n constructor() {\\n this.minHealth = 0;\\n this.maxHealth = 1;\\n this.initialHealth = 1;\\n this.connectionUnhealthyThreshold = 25;\\n this.noSignalThresholdTimeMs = 10000;\\n this.connectionWaitTimeMs = 10000;\\n this.zeroBarsNoSignalTimeMs = 5000;\\n this.oneBarWeakSignalTimeMs = 5000;\\n this.twoBarsTimeMs = 5000;\\n this.threeBarsTimeMs = 10000;\\n this.fourBarsTimeMs = 20000;\\n this.fiveBarsTimeMs = 60000;\\n this.cooldownTimeMs = 60000;\\n this.pastSamplesToConsider = 15;\\n this.goodSignalTimeMs = 15000;\\n this.fractionalLoss = 0.5;\\n this.packetsExpected = 50;\\n this.maximumTimesToWarn = 2;\\n this.missedPongsLowerThreshold = 1;\\n this.missedPongsUpperThreshold = 4;\\n this.maximumAudioDelayMs = 60000;\\n this.maximumAudioDelayDataPoints = 10;\\n }\\n}\\nexports[\\\"default\\\"] = ConnectionHealthPolicyConfiguration;\\n//# sourceMappingURL=ConnectionHealthPolicyConfiguration.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthPolicyConfiguration.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ReconnectionHealthPolicy.js\":\n/*!***************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ReconnectionHealthPolicy.js ***!\n \\***************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst BaseConnectionHealthPolicy_1 = __webpack_require__(/*! ./BaseConnectionHealthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/BaseConnectionHealthPolicy.js\\\");\\nclass ReconnectionHealthPolicy extends BaseConnectionHealthPolicy_1.default {\\n constructor(logger, configuration, data) {\\n super(configuration, data);\\n this.logger = logger;\\n this.audioDelayPointsOverMaximum = 0;\\n ReconnectionHealthPolicy.CONNECTION_UNHEALTHY_THRESHOLD =\\n configuration.connectionUnhealthyThreshold;\\n ReconnectionHealthPolicy.CONNECTION_WAIT_TIME_MS = configuration.connectionWaitTimeMs;\\n ReconnectionHealthPolicy.MISSED_PONGS_THRESHOLD = configuration.missedPongsUpperThreshold;\\n ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_MS = configuration.maximumAudioDelayMs;\\n ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_DATA_POINTS =\\n configuration.maximumAudioDelayDataPoints;\\n }\\n health() {\\n const connectionStartedRecently = this.currentData.isConnectionStartRecent(ReconnectionHealthPolicy.CONNECTION_WAIT_TIME_MS);\\n if (connectionStartedRecently) {\\n return 1;\\n }\\n const noPacketsReceivedRecently = this.currentData.consecutiveStatsWithNoPackets >=\\n ReconnectionHealthPolicy.CONNECTION_UNHEALTHY_THRESHOLD;\\n const missedPongsRecently = this.currentData.consecutiveMissedPongs >= ReconnectionHealthPolicy.MISSED_PONGS_THRESHOLD;\\n if (this.currentData.audioSpeakerDelayMs > ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_MS) {\\n this.audioDelayPointsOverMaximum += 1;\\n }\\n else {\\n this.audioDelayPointsOverMaximum = 0;\\n }\\n const hasBadAudioDelay = this.audioDelayPointsOverMaximum > ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_DATA_POINTS;\\n if (hasBadAudioDelay) {\\n this.audioDelayPointsOverMaximum = 0;\\n }\\n const needsReconnect = noPacketsReceivedRecently || missedPongsRecently || hasBadAudioDelay;\\n if (needsReconnect) {\\n this.logger.warn(`reconnection recommended due to: no packets received: ${noPacketsReceivedRecently}, missed pongs: ${missedPongsRecently}, bad audio delay: ${hasBadAudioDelay}`);\\n return 0;\\n }\\n return 1;\\n }\\n}\\nexports[\\\"default\\\"] = ReconnectionHealthPolicy;\\n//# sourceMappingURL=ReconnectionHealthPolicy.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ReconnectionHealthPolicy.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/UnusableAudioWarningConnectionHealthPolicy.js\":\n/*!*********************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/UnusableAudioWarningConnectionHealthPolicy.js ***!\n \\*********************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst BaseConnectionHealthPolicy_1 = __webpack_require__(/*! ./BaseConnectionHealthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/BaseConnectionHealthPolicy.js\\\");\\nclass UnusableAudioWarningConnectionHealthPolicy extends BaseConnectionHealthPolicy_1.default {\\n constructor(configuration, data) {\\n super(configuration, data);\\n this.coolDownTimeMs = configuration.cooldownTimeMs;\\n this.pastSamplesToConsider = configuration.pastSamplesToConsider;\\n this.fractionalLoss = configuration.fractionalLoss;\\n this.packetsExpected = configuration.packetsExpected;\\n this.maximumTimesToWarn = configuration.maximumTimesToWarn;\\n this.lastWarnTimestampMs = 0;\\n this.warnCount = 0;\\n }\\n calculateFractionalLoss() {\\n if (this.currentData.packetsReceivedInLastMinute.length < this.pastSamplesToConsider) {\\n return 0;\\n }\\n const samplesToConsider = this.pastSamplesToConsider;\\n const totalPacketsExpected = samplesToConsider * this.packetsExpected;\\n let totalPacketsReceived = 0;\\n for (let i = 0; i < samplesToConsider; i++) {\\n totalPacketsReceived += this.currentData.packetsReceivedInLastMinute[i];\\n }\\n return Math.min(Math.max(1 - totalPacketsReceived / totalPacketsExpected, 0), 1);\\n }\\n health() {\\n const warnedRecently = Date.now() - this.lastWarnTimestampMs < this.coolDownTimeMs;\\n if (warnedRecently) {\\n return this.currentHealth;\\n }\\n const hasHadHighPacketLoss = this.calculateFractionalLoss() >= this.fractionalLoss;\\n if (hasHadHighPacketLoss) {\\n if (this.currentHealth !== 0) {\\n this.lastWarnTimestampMs = Date.now();\\n this.warnCount++;\\n if (this.warnCount > this.maximumTimesToWarn) {\\n return 1;\\n }\\n }\\n return 0;\\n }\\n return 1;\\n }\\n}\\nexports[\\\"default\\\"] = UnusableAudioWarningConnectionHealthPolicy;\\n//# sourceMappingURL=UnusableAudioWarningConnectionHealthPolicy.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/UnusableAudioWarningConnectionHealthPolicy.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/connectionmonitor/SignalingAndMetricsConnectionMonitor.js\":\n/*!**********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/connectionmonitor/SignalingAndMetricsConnectionMonitor.js ***!\n \\**********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst Maybe_1 = __webpack_require__(/*! ../maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nclass SignalingAndMetricsConnectionMonitor {\\n constructor(audioVideoController, realtimeController, videoTileController, connectionHealthData, pingPong, statsCollector) {\\n this.audioVideoController = audioVideoController;\\n this.realtimeController = realtimeController;\\n this.videoTileController = videoTileController;\\n this.connectionHealthData = connectionHealthData;\\n this.pingPong = pingPong;\\n this.statsCollector = statsCollector;\\n this.isActive = false;\\n this.hasSeenValidPacketMetricsBefore = false;\\n this.lastAvailableSendBandwidthKbps = 0;\\n this.lastAvailableRecvBandwidthKbps = 0;\\n this.realtimeController.realtimeSubscribeToLocalSignalStrengthChange((signalStrength) => {\\n if (this.isActive) {\\n this.receiveSignalStrengthChange(signalStrength);\\n }\\n });\\n }\\n start() {\\n this.isActive = true;\\n this.pingPong.addObserver(this);\\n this.pingPong.start();\\n this.audioVideoController.addObserver(this);\\n }\\n stop() {\\n this.isActive = false;\\n this.pingPong.removeObserver(this);\\n this.pingPong.stop();\\n this.audioVideoController.removeObserver(this);\\n }\\n receiveSignalStrengthChange(signalStrength) {\\n if (signalStrength === 0) {\\n this.connectionHealthData.setLastNoSignalTimestampMs(Date.now());\\n }\\n else if (signalStrength <= 0.5) {\\n this.connectionHealthData.setLastWeakSignalTimestampMs(Date.now());\\n }\\n else {\\n this.connectionHealthData.setLastGoodSignalTimestampMs(Date.now());\\n }\\n this.updateConnectionHealth();\\n }\\n didReceivePong(_id, latencyMs, clockSkewMs) {\\n this.connectionHealthData.setConsecutiveMissedPongs(0);\\n this.statsCollector.logLatency('ping_pong', latencyMs);\\n this.statsCollector.logLatency('ping_pong_clock_skew', clockSkewMs);\\n this.updateConnectionHealth();\\n }\\n didMissPongs() {\\n this.connectionHealthData.setConsecutiveMissedPongs(this.connectionHealthData.consecutiveMissedPongs + 1);\\n this.updateConnectionHealth();\\n }\\n metricsDidReceive(clientMetricReport) {\\n let packetsReceived = 0;\\n let fractionPacketsLostInbound = 0;\\n const metricReport = clientMetricReport.getObservableMetrics();\\n const potentialPacketsReceived = metricReport.audioPacketsReceived;\\n const potentialFractionPacketsLostInbound = metricReport.audioPacketsReceivedFractionLoss;\\n let videoUpstreamBitrateKbps = 0;\\n const videoUpstreamPacketPerSecond = metricReport.videoPacketSentPerSecond;\\n const videoUpstreamBitrate = metricReport.videoUpstreamBitrate;\\n const availableSendBandwidth = metricReport.availableSendBandwidth || metricReport.availableOutgoingBitrate;\\n const availableRecvBandwidth = metricReport.availableReceiveBandwidth || metricReport.availableIncomingBitrate;\\n const audioSpeakerDelayMs = metricReport.audioSpeakerDelayMs;\\n const nackCountPerSecond = metricReport.nackCountReceivedPerSecond || metricReport.googNackCountReceivedPerSecond;\\n // Firefox does not presently have aggregated bandwidth estimation\\n if (typeof availableSendBandwidth === 'number' && !isNaN(availableSendBandwidth)) {\\n this.updateAvailableSendBandwidth(availableSendBandwidth / 1000, nackCountPerSecond);\\n }\\n if (typeof availableRecvBandwidth === 'number' && !isNaN(availableRecvBandwidth)) {\\n this.updateAvailableReceiveBandwidth(availableRecvBandwidth / 1000);\\n }\\n if (typeof videoUpstreamBitrate === 'number' && !isNaN(videoUpstreamBitrate)) {\\n videoUpstreamBitrateKbps = videoUpstreamBitrate / 1000;\\n }\\n if (typeof audioSpeakerDelayMs === 'number' && !isNaN(audioSpeakerDelayMs)) {\\n this.connectionHealthData.setAudioSpeakerDelayMs(audioSpeakerDelayMs);\\n }\\n this.monitorVideoUplinkHealth(videoUpstreamBitrateKbps, videoUpstreamPacketPerSecond);\\n if (typeof potentialPacketsReceived === 'number' &&\\n typeof potentialFractionPacketsLostInbound === 'number') {\\n packetsReceived = potentialPacketsReceived;\\n fractionPacketsLostInbound = potentialFractionPacketsLostInbound;\\n if (packetsReceived < 0 || fractionPacketsLostInbound < 0) {\\n // TODO: getting negative numbers on this metric after reconnect sometimes\\n // For now, just skip the metric if it looks weird.\\n return;\\n }\\n }\\n else {\\n return;\\n }\\n this.addToMinuteWindow(this.connectionHealthData.packetsReceivedInLastMinute, packetsReceived);\\n this.addToMinuteWindow(this.connectionHealthData.fractionPacketsLostInboundInLastMinute, fractionPacketsLostInbound);\\n if (packetsReceived > 0) {\\n this.hasSeenValidPacketMetricsBefore = true;\\n this.connectionHealthData.setConsecutiveStatsWithNoPackets(0);\\n }\\n else if (this.hasSeenValidPacketMetricsBefore) {\\n this.connectionHealthData.setConsecutiveStatsWithNoPackets(this.connectionHealthData.consecutiveStatsWithNoPackets + 1);\\n }\\n if (packetsReceived === 0 || fractionPacketsLostInbound > 0) {\\n this.connectionHealthData.setLastPacketLossInboundTimestampMs(Date.now());\\n }\\n this.updateConnectionHealth();\\n }\\n addToMinuteWindow(array, value) {\\n array.unshift(value);\\n if (array.length > 60) {\\n array.pop();\\n }\\n }\\n updateAvailableSendBandwidth(sendBandwidthKbps, nackCountPerSecond) {\\n if (sendBandwidthKbps !== this.lastAvailableSendBandwidthKbps) {\\n if (this.lastAvailableSendBandwidthKbps === 0) {\\n this.lastAvailableSendBandwidthKbps = sendBandwidthKbps;\\n return;\\n }\\n const prevSendBandwidthKbps = this.lastAvailableSendBandwidthKbps;\\n this.lastAvailableSendBandwidthKbps = sendBandwidthKbps;\\n this.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.videoSendBandwidthDidChange).map(f => f.bind(observer)(sendBandwidthKbps, prevSendBandwidthKbps, nackCountPerSecond));\\n });\\n }\\n }\\n updateAvailableReceiveBandwidth(recvBandwidthKbps) {\\n if (recvBandwidthKbps !== this.lastAvailableRecvBandwidthKbps) {\\n if (this.lastAvailableRecvBandwidthKbps === 0) {\\n this.lastAvailableRecvBandwidthKbps = recvBandwidthKbps;\\n return;\\n }\\n const prevRecvBandwidthKbps = this.lastAvailableRecvBandwidthKbps;\\n this.lastAvailableRecvBandwidthKbps = recvBandwidthKbps;\\n this.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.videoReceiveBandwidthDidChange).map(f => f.bind(observer)(recvBandwidthKbps, prevRecvBandwidthKbps));\\n });\\n }\\n }\\n updateConnectionHealth() {\\n this.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.connectionHealthDidChange).map(f => f.bind(observer)(this.connectionHealthData.clone()));\\n });\\n }\\n monitorVideoUplinkHealth(videoUpstreamBitrateKbps, videoUpstreamPacketsPerSecond) {\\n if (!this.videoTileController.hasStartedLocalVideoTile()) {\\n return;\\n }\\n this.audioVideoController.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.videoSendHealthDidChange).map(f => f.bind(observer)(videoUpstreamBitrateKbps, videoUpstreamPacketsPerSecond));\\n });\\n }\\n}\\nexports[\\\"default\\\"] = SignalingAndMetricsConnectionMonitor;\\n//# sourceMappingURL=SignalingAndMetricsConnectionMonitor.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/connectionmonitor/SignalingAndMetricsConnectionMonitor.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareConstants.js\":\n/*!************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareConstants.js ***!\n \\************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nvar ContentShareConstants;\\n(function (ContentShareConstants) {\\n ContentShareConstants[\\\"Modality\\\"] = \\\"#content\\\";\\n})(ContentShareConstants || (ContentShareConstants = {}));\\nexports[\\\"default\\\"] = ContentShareConstants;\\n//# sourceMappingURL=ContentShareConstants.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareConstants.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareMediaStreamBroker.js\":\n/*!********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareMediaStreamBroker.js ***!\n \\********************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst DefaultDeviceController_1 = __webpack_require__(/*! ../devicecontroller/DefaultDeviceController */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/DefaultDeviceController.js\\\");\\nclass ContentShareMediaStreamBroker {\\n constructor(logger) {\\n this.logger = logger;\\n }\\n get mediaStream() {\\n return this._mediaStream;\\n }\\n set mediaStream(mediaStream) {\\n this._mediaStream = mediaStream;\\n }\\n acquireAudioInputStream() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this._mediaStream.getAudioTracks().length === 0) {\\n return DefaultDeviceController_1.default.synthesizeAudioDevice(0);\\n }\\n return this._mediaStream;\\n });\\n }\\n acquireVideoInputStream() {\\n return __awaiter(this, void 0, void 0, function* () {\\n return this._mediaStream;\\n });\\n }\\n releaseMediaStream(_mediaStreamToRelease) {\\n this.logger.warn('release media stream called');\\n return;\\n }\\n acquireDisplayInputStream(streamConstraints) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (streamConstraints &&\\n streamConstraints.video &&\\n // @ts-ignore\\n streamConstraints.video.mandatory &&\\n // @ts-ignore\\n streamConstraints.video.mandatory.chromeMediaSource &&\\n // @ts-ignore\\n streamConstraints.video.mandatory.chromeMediaSourceId) {\\n return navigator.mediaDevices.getUserMedia(streamConstraints);\\n }\\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/31821\\n return navigator.mediaDevices.getDisplayMedia(streamConstraints);\\n });\\n }\\n bindToAudioVideoController(_audioVideoController) {\\n throw new Error('unsupported');\\n }\\n acquireScreenCaptureDisplayInputStream(sourceId, frameRate) {\\n return __awaiter(this, void 0, void 0, function* () {\\n return this.acquireDisplayInputStream(this.screenCaptureDisplayMediaConstraints(sourceId, frameRate));\\n });\\n }\\n screenCaptureDisplayMediaConstraints(sourceId, frameRate) {\\n return {\\n audio: !sourceId && new DefaultBrowserBehavior_1.default().getDisplayMediaAudioCaptureSupport()\\n ? true\\n : false,\\n video: Object.assign(Object.assign({}, (!sourceId && {\\n frameRate: {\\n max: frameRate ? frameRate : ContentShareMediaStreamBroker.defaultFrameRate,\\n },\\n })), (sourceId && {\\n mandatory: {\\n chromeMediaSource: 'desktop',\\n chromeMediaSourceId: sourceId,\\n maxFrameRate: frameRate ? frameRate : ContentShareMediaStreamBroker.defaultFrameRate,\\n },\\n })),\\n };\\n }\\n toggleMediaStream(enable) {\\n let changed = false;\\n if (this.mediaStream) {\\n for (let i = 0; i < this.mediaStream.getTracks().length; i++) {\\n if (this.mediaStream.getTracks()[i].enabled !== enable) {\\n this.mediaStream.getTracks()[i].enabled = enable;\\n changed = true;\\n }\\n }\\n }\\n return changed;\\n }\\n cleanup() {\\n if (this.mediaStream) {\\n for (let i = 0; i < this.mediaStream.getTracks().length; i++) {\\n const track = this.mediaStream.getTracks()[i];\\n track.stop();\\n }\\n }\\n this.mediaStream = null;\\n }\\n}\\nexports[\\\"default\\\"] = ContentShareMediaStreamBroker;\\nContentShareMediaStreamBroker.defaultFrameRate = 15;\\n//# sourceMappingURL=ContentShareMediaStreamBroker.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareMediaStreamBroker.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/DefaultContentShareController.js\":\n/*!********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/DefaultContentShareController.js ***!\n \\********************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst Maybe_1 = __webpack_require__(/*! ../maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nconst MeetingSessionConfiguration_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionConfiguration.js\\\");\\nconst MeetingSessionCredentials_1 = __webpack_require__(/*! ../meetingsession/MeetingSessionCredentials */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionCredentials.js\\\");\\nconst DefaultModality_1 = __webpack_require__(/*! ../modality/DefaultModality */ \\\"./node_modules/amazon-chime-sdk-js/build/modality/DefaultModality.js\\\");\\nconst AsyncScheduler_1 = __webpack_require__(/*! ../scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nconst ContentShareConstants_1 = __webpack_require__(/*! ./ContentShareConstants */ \\\"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareConstants.js\\\");\\nclass DefaultContentShareController {\\n constructor(mediaStreamBroker, contentAudioVideo, attendeeAudioVideo) {\\n this.mediaStreamBroker = mediaStreamBroker;\\n this.contentAudioVideo = contentAudioVideo;\\n this.attendeeAudioVideo = attendeeAudioVideo;\\n this.observerQueue = new Set();\\n this.destroyed = false;\\n this.contentAudioVideo.addObserver(this);\\n this.setupContentShareEvents();\\n }\\n static createContentShareMeetingSessionConfigure(configuration) {\\n const contentShareConfiguration = new MeetingSessionConfiguration_1.default();\\n contentShareConfiguration.meetingId = configuration.meetingId;\\n contentShareConfiguration.externalMeetingId = configuration.externalMeetingId;\\n contentShareConfiguration.urls = configuration.urls;\\n contentShareConfiguration.credentials = new MeetingSessionCredentials_1.default();\\n contentShareConfiguration.credentials.attendeeId =\\n configuration.credentials.attendeeId + ContentShareConstants_1.default.Modality;\\n contentShareConfiguration.credentials.externalUserId = configuration.credentials.externalUserId;\\n contentShareConfiguration.credentials.joinToken =\\n configuration.credentials.joinToken + ContentShareConstants_1.default.Modality;\\n return contentShareConfiguration;\\n }\\n setContentAudioProfile(audioProfile) {\\n this.contentAudioVideo.setAudioProfile(audioProfile);\\n }\\n startContentShare(stream) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!stream) {\\n return;\\n }\\n this.mediaStreamBroker.mediaStream = stream;\\n for (let i = 0; i < this.mediaStreamBroker.mediaStream.getTracks().length; i++) {\\n this.mediaStreamBroker.mediaStream.getTracks()[i].addEventListener('ended', () => {\\n this.stopContentShare();\\n });\\n }\\n this.contentAudioVideo.start();\\n if (this.mediaStreamBroker.mediaStream.getVideoTracks().length > 0) {\\n this.contentAudioVideo.videoTileController.startLocalVideoTile();\\n }\\n });\\n }\\n startContentShareFromScreenCapture(sourceId, frameRate) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const mediaStream = yield this.mediaStreamBroker.acquireScreenCaptureDisplayInputStream(sourceId, frameRate);\\n yield this.startContentShare(mediaStream);\\n return mediaStream;\\n });\\n }\\n pauseContentShare() {\\n if (this.mediaStreamBroker.toggleMediaStream(false)) {\\n this.forEachContentShareObserver(observer => {\\n Maybe_1.default.of(observer.contentShareDidPause).map(f => f.call(observer));\\n });\\n }\\n }\\n unpauseContentShare() {\\n if (this.mediaStreamBroker.toggleMediaStream(true)) {\\n this.forEachContentShareObserver(observer => {\\n Maybe_1.default.of(observer.contentShareDidUnpause).map(f => f.call(observer));\\n });\\n }\\n }\\n destroy() {\\n return __awaiter(this, void 0, void 0, function* () {\\n // Idempotency.\\n /* istanbul ignore if */\\n if (!this.contentAudioVideo) {\\n return;\\n }\\n this.destroyed = true;\\n this.contentAudioVideo.removeObserver(this);\\n this.stopContentShare();\\n this.observerQueue.clear();\\n this.contentAudioVideo = undefined;\\n this.attendeeAudioVideo = undefined;\\n this.mediaStreamBroker = undefined;\\n });\\n }\\n stopContentShare() {\\n this.contentAudioVideo.stop();\\n this.mediaStreamBroker.cleanup();\\n }\\n addContentShareObserver(observer) {\\n this.observerQueue.add(observer);\\n }\\n removeContentShareObserver(observer) {\\n this.observerQueue.delete(observer);\\n }\\n forEachContentShareObserver(observerFunc) {\\n for (const observer of this.observerQueue) {\\n AsyncScheduler_1.default.nextTick(() => {\\n if (this.observerQueue.has(observer)) {\\n observerFunc(observer);\\n }\\n });\\n }\\n }\\n audioVideoDidStop(_sessionStatus) {\\n // If the content attendee got dropped or could not connect, stopContentShare will not be called\\n // so make sure to clean up the media stream.\\n this.mediaStreamBroker.cleanup();\\n if (this.contentShareTile) {\\n this.attendeeAudioVideo.videoTileController.removeVideoTile(this.contentShareTile.id());\\n this.contentShareTile = null;\\n }\\n this.forEachContentShareObserver(observer => {\\n Maybe_1.default.of(observer.contentShareDidStop).map(f => f.call(observer));\\n });\\n }\\n setupContentShareEvents() {\\n // We use realtimeSubscribeToAttendeeIdPresence instead of audioVideoDidStart because audioVideoDidStart fires\\n // before the capacity check in Tincan while when realtimeSubscribeToAttendeeIdPresence fires, we know the\\n // content attendee has been able to pass the capacity check and join the call so we can start the local\\n // content share video\\n this.attendeeAudioVideo.realtimeController.realtimeSubscribeToAttendeeIdPresence((attendeeId, present, _externalUserId, _dropped) => {\\n const isContentAttendee = new DefaultModality_1.default(attendeeId).hasModality(DefaultModality_1.default.MODALITY_CONTENT);\\n const isSelfAttendee = new DefaultModality_1.default(attendeeId).base() ===\\n this.attendeeAudioVideo.configuration.credentials.attendeeId;\\n if (!isContentAttendee || !isSelfAttendee || !present || this.contentShareTile) {\\n return;\\n }\\n const stream = this.mediaStreamBroker.mediaStream;\\n if (stream.getVideoTracks().length > 0) {\\n this.contentShareTile = this.attendeeAudioVideo.videoTileController.addVideoTile();\\n const track = stream.getVideoTracks()[0];\\n let width, height;\\n if (track.getSettings) {\\n const cap = track.getSettings();\\n width = cap.width;\\n height = cap.height;\\n }\\n else {\\n const cap = track.getCapabilities();\\n width = cap.width;\\n height = cap.height;\\n }\\n this.contentShareTile.bindVideoStream(this.contentAudioVideo.configuration.credentials.attendeeId, false, stream, width, height, null, this.contentAudioVideo.configuration.credentials.externalUserId);\\n }\\n this.forEachContentShareObserver(observer => {\\n Maybe_1.default.of(observer.contentShareDidStart).map(f => f.call(observer));\\n });\\n });\\n }\\n}\\nexports[\\\"default\\\"] = DefaultContentShareController;\\n//# sourceMappingURL=DefaultContentShareController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/DefaultContentShareController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/datamessage/DataMessage.js\":\n/*!***************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/datamessage/DataMessage.js ***!\n \\***************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/* eslint @typescript-eslint/no-explicit-any: 0 */\\nclass DataMessage {\\n constructor(timestampMs, topic, data, senderAttendeeId, senderExternalUserId, throttled) {\\n this.timestampMs = timestampMs;\\n this.topic = topic;\\n this.data = data;\\n this.senderAttendeeId = senderAttendeeId;\\n this.senderExternalUserId = senderExternalUserId;\\n this.throttled = !!throttled;\\n }\\n /**\\n * Helper conversion methods to convert Uint8Array data to string\\n */\\n text() {\\n return new TextDecoder().decode(this.data);\\n }\\n /**\\n * Helper conversion methods to convert Uint8Array data to JSON\\n */\\n json() {\\n return JSON.parse(new TextDecoder().decode(this.data));\\n }\\n}\\nexports[\\\"default\\\"] = DataMessage;\\n//# sourceMappingURL=DataMessage.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/datamessage/DataMessage.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/destroyable/Destroyable.js\":\n/*!***************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/destroyable/Destroyable.js ***!\n \\***************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.isDestroyable = void 0;\\n/**\\n * Type guard for `Destroyable`.\\n *\\n * @param x A value that might implement the `Destroyable` interface.\\n * @returns Whether the value implements `Destroyable`.\\n */\\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\\nfunction isDestroyable(x) {\\n return x && 'destroy' in x;\\n}\\nexports.isDestroyable = isDestroyable;\\n//# sourceMappingURL=Destroyable.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/destroyable/Destroyable.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/AudioTransformDevice.js\":\n/*!*****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/AudioTransformDevice.js ***!\n \\*****************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.isAudioTransformDevice = void 0;\\n/**\\n * `isAudioTransformDevice` is a type guard for {@link AudioTransformDevice}.\\n *\\n * @param device the value to check.\\n */\\n// eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\\nfunction isAudioTransformDevice(device) {\\n return (!!device &&\\n typeof device === 'object' &&\\n 'mute' in device &&\\n 'stop' in device &&\\n 'intrinsicDevice' in device);\\n}\\nexports.isAudioTransformDevice = isAudioTransformDevice;\\n//# sourceMappingURL=AudioTransformDevice.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/AudioTransformDevice.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/DefaultDeviceController.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/DefaultDeviceController.js ***!\n \\********************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst Maybe_1 = __webpack_require__(/*! ../maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nconst DefaultMediaDeviceFactory_1 = __webpack_require__(/*! ../mediadevicefactory/DefaultMediaDeviceFactory */ \\\"./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/DefaultMediaDeviceFactory.js\\\");\\nconst AsyncScheduler_1 = __webpack_require__(/*! ../scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nconst IntervalScheduler_1 = __webpack_require__(/*! ../scheduler/IntervalScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js\\\");\\nconst DefaultVideoTile_1 = __webpack_require__(/*! ../videotile/DefaultVideoTile */ \\\"./node_modules/amazon-chime-sdk-js/build/videotile/DefaultVideoTile.js\\\");\\nconst AudioTransformDevice_1 = __webpack_require__(/*! ./AudioTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/AudioTransformDevice.js\\\");\\nconst DeviceSelection_1 = __webpack_require__(/*! ./DeviceSelection */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/DeviceSelection.js\\\");\\nconst GetUserMediaError_1 = __webpack_require__(/*! ./GetUserMediaError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\\\");\\nconst NotFoundError_1 = __webpack_require__(/*! ./NotFoundError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotFoundError.js\\\");\\nconst NotReadableError_1 = __webpack_require__(/*! ./NotReadableError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotReadableError.js\\\");\\nconst OverconstrainedError_1 = __webpack_require__(/*! ./OverconstrainedError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/OverconstrainedError.js\\\");\\nconst PermissionDeniedError_1 = __webpack_require__(/*! ./PermissionDeniedError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/PermissionDeniedError.js\\\");\\nconst TypeError_1 = __webpack_require__(/*! ./TypeError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/TypeError.js\\\");\\nconst VideoQualitySettings_1 = __webpack_require__(/*! ./VideoQualitySettings */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoQualitySettings.js\\\");\\nconst VideoTransformDevice_1 = __webpack_require__(/*! ./VideoTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoTransformDevice.js\\\");\\nfunction fillSMPTEColorBars(canvas, xShift) {\\n const w = canvas.width;\\n const h = canvas.height;\\n const h1 = (h * 2) / 3;\\n const h2 = (h * 3) / 4;\\n const h3 = h;\\n const top = ['#c0c0c0', '#c0c000', '#00c0c0', '#00c000', '#c000c0', '#c00000', '#0000c0'];\\n const middle = ['#0000c0', '#000000', '#c000c0', '#000000', '#00c0c0', '#000000', '#c0c0c0'];\\n const bottom = [\\n '#00214c',\\n '#ffffff',\\n '#32006a',\\n '#131313',\\n '#090909',\\n '#131313',\\n '#1d1d1d',\\n '#131313',\\n ];\\n const bottomX = [\\n w * 0,\\n ((w * 1) / 4) * (5 / 7),\\n ((w * 2) / 4) * (5 / 7),\\n ((w * 3) / 4) * (5 / 7),\\n w * (5 / 7),\\n w * (5 / 7 + 1 / 21),\\n w * (5 / 7 + 2 / 21),\\n w * (6 / 7),\\n w * 1,\\n ];\\n const segmentWidth = w / top.length;\\n const ctx = canvas.getContext('2d');\\n for (let i = 0; i < top.length; i++) {\\n ctx.fillStyle = top[i];\\n ctx.fillRect(xShift + i * segmentWidth, 0, segmentWidth, h1);\\n ctx.fillStyle = middle[i];\\n ctx.fillRect(xShift + i * segmentWidth, h1, segmentWidth, h2 - h1);\\n }\\n for (let i = 0; i < bottom.length; i++) {\\n ctx.fillStyle = bottom[i];\\n ctx.fillRect(xShift + bottomX[i], h2, bottomX[i + 1] - bottomX[i], h3 - h2);\\n }\\n}\\n// This is a top-level function so that its captured environment is as small as possible,\\n// minimizing leaks -- the interval scheduler will cause everything here to be retained\\n// until it is stopped.\\nfunction makeColorBars(canvas, colorOrPattern) {\\n const scheduler = new IntervalScheduler_1.default(1000);\\n const context = canvas.getContext('2d');\\n // @ts-ignore\\n const stream = canvas.captureStream(5) || null;\\n if (!stream) {\\n return undefined;\\n }\\n const onTick = () => {\\n if (colorOrPattern === 'smpte') {\\n fillSMPTEColorBars(canvas, 0);\\n }\\n else {\\n context.fillStyle = colorOrPattern;\\n context.fillRect(0, 0, canvas.width, canvas.height);\\n }\\n };\\n scheduler.start(onTick);\\n const listener = () => {\\n scheduler.stop();\\n };\\n // This event listener will leak unless you remove it.\\n stream.getVideoTracks()[0].addEventListener('ended', listener);\\n return { listener, scheduler, stream };\\n}\\nclass DefaultDeviceController {\\n constructor(logger, options, browserBehavior = new DefaultBrowserBehavior_1.default()) {\\n this.logger = logger;\\n this.browserBehavior = browserBehavior;\\n this.deviceInfoCache = null;\\n this.activeDevices = { audio: null, video: null };\\n // `chosenVideoTransformDevice` is tracked and owned by device controller.\\n // It is saved when `chooseVideoInputDevice` is called with VideoTransformDevice object.\\n this.chosenVideoTransformDevice = null;\\n this.audioOutputDeviceId = null;\\n this.deviceChangeObservers = new Set();\\n this.deviceLabelTrigger = () => {\\n return navigator.mediaDevices.getUserMedia({ audio: true, video: true });\\n };\\n this.audioInputDestinationNode = null;\\n this.audioInputSourceNode = null;\\n this.videoInputQualitySettings = null;\\n this.useWebAudio = false;\\n this.inputDeviceCount = 0;\\n this.alreadyHandlingDeviceChange = false;\\n const { enableWebAudio = false } = options || {};\\n this.useWebAudio = enableWebAudio;\\n this.muteCallback = (muted) => {\\n var _a;\\n (_a = this.transform) === null || _a === void 0 ? void 0 : _a.device.mute(muted);\\n };\\n this.videoInputQualitySettings = new VideoQualitySettings_1.default(DefaultDeviceController.defaultVideoWidth, DefaultDeviceController.defaultVideoHeight, DefaultDeviceController.defaultVideoFrameRate, DefaultDeviceController.defaultVideoMaxBandwidthKbps);\\n const dimension = this.browserBehavior.requiresResolutionAlignment(this.videoInputQualitySettings.videoWidth, this.videoInputQualitySettings.videoHeight);\\n this.videoInputQualitySettings.videoWidth = dimension[0];\\n this.videoInputQualitySettings.videoHeight = dimension[1];\\n this.logger.info(`DefaultDeviceController video dimension ${this.videoInputQualitySettings.videoWidth} x ${this.videoInputQualitySettings.videoHeight}`);\\n try {\\n this.mediaDeviceWrapper = new DefaultMediaDeviceFactory_1.default().create();\\n const supportedConstraints = navigator.mediaDevices.getSupportedConstraints();\\n this.logger.info(`Supported Constraints in this browser ${JSON.stringify(supportedConstraints)}`);\\n }\\n catch (error) {\\n logger.error(error.message);\\n }\\n }\\n isWatchingForDeviceChanges() {\\n return !!this.onDeviceChangeCallback;\\n }\\n ensureWatchingDeviceChanges() {\\n if (this.isWatchingForDeviceChanges()) {\\n return;\\n }\\n this.logger.info('Starting devicechange listener.');\\n this.onDeviceChangeCallback = () => this.handleDeviceChange();\\n this.mediaDeviceWrapper.addEventListener('devicechange', this.onDeviceChangeCallback);\\n }\\n /**\\n * Unsubscribe from the `devicechange` event, which allows the device controller to\\n * update its device cache.\\n */\\n stopWatchingDeviceChanges() {\\n if (!this.isWatchingForDeviceChanges()) {\\n return;\\n }\\n this.logger.info('Stopping devicechange listener.');\\n this.mediaDeviceWrapper.removeEventListener('devicechange', this.onDeviceChangeCallback);\\n this.onDeviceChangeCallback = undefined;\\n }\\n shouldObserveDeviceChanges() {\\n if (this.deviceChangeObservers.size) {\\n return true;\\n }\\n const hasActiveDevices = (this.activeDevices['audio'] && this.activeDevices['audio'].constraints !== null) ||\\n (this.activeDevices['video'] && this.activeDevices['video'].constraints !== null) ||\\n !!this.audioOutputDeviceId;\\n return hasActiveDevices;\\n }\\n watchForDeviceChangesIfNecessary() {\\n if (this.shouldObserveDeviceChanges()) {\\n this.ensureWatchingDeviceChanges();\\n }\\n else {\\n this.stopWatchingDeviceChanges();\\n }\\n }\\n destroy() {\\n var _a, _b;\\n return __awaiter(this, void 0, void 0, function* () {\\n // Remove device change callbacks.\\n this.stopWatchingDeviceChanges();\\n // Deselect any audio input devices and throw away the streams.\\n // Discard the current video device, if there is one.\\n // Discard any audio or video transforms.\\n yield this.chooseAudioInputDevice(null);\\n yield this.chooseVideoInputDevice(null);\\n // Tear down any Web Audio infrastructure we have hanging around.\\n (_a = this.audioInputSourceNode) === null || _a === void 0 ? void 0 : _a.disconnect();\\n (_b = this.audioInputDestinationNode) === null || _b === void 0 ? void 0 : _b.disconnect();\\n this.audioInputSourceNode = undefined;\\n this.audioInputDestinationNode = undefined;\\n });\\n }\\n listAudioInputDevices() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const result = yield this.listDevicesOfKind('audioinput');\\n this.trace('listAudioInputDevices', null, result);\\n return result;\\n });\\n }\\n listVideoInputDevices() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const result = yield this.listDevicesOfKind('videoinput');\\n this.trace('listVideoInputDevices', null, result);\\n return result;\\n });\\n }\\n listAudioOutputDevices() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const result = yield this.listDevicesOfKind('audiooutput');\\n this.trace('listAudioOutputDevices', null, result);\\n return result;\\n });\\n }\\n pushAudioMeetingStateForPermissions(device) {\\n var _a, _b;\\n (_b = (_a = this.boundAudioVideoController) === null || _a === void 0 ? void 0 : _a.eventController) === null || _b === void 0 ? void 0 : _b.publishEvent(device === null ? 'audioInputUnselected' : 'audioInputSelected');\\n }\\n pushVideoMeetingStateForPermissions(device) {\\n var _a, _b;\\n (_b = (_a = this.boundAudioVideoController) === null || _a === void 0 ? void 0 : _a.eventController) === null || _b === void 0 ? void 0 : _b.publishEvent(device === null ? 'videoInputUnselected' : 'videoInputSelected');\\n }\\n chooseAudioInputDevice(device) {\\n var _a;\\n return __awaiter(this, void 0, void 0, function* () {\\n if (device === undefined) {\\n this.logger.error('Audio input device cannot be undefined');\\n return;\\n }\\n if (AudioTransformDevice_1.isAudioTransformDevice(device)) {\\n // N.B., do not JSON.stringify here — for some kinds of devices this\\n // will cause a cyclic object reference error.\\n this.logger.info(`Choosing transform input device ${device}`);\\n /*\\n * This block of code is a workaround for a Chromium bug:\\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1173656\\n *\\n * In short: if we are about to select an audio device with a transform, which we assume for\\n * safety's sake uses AudioWorklet, we recreate the audio context and the nodes that\\n * are linked to it.\\n *\\n * This causes Chrome to rejig its buffers and the second context works correctly.\\n *\\n * This is theoretically worse for performance, but in practice it is fine.\\n *\\n * This is not safe in the general case: an application that already\\n * retrieved the audio context in order to build an audio graph for some other purpose\\n * will fail at this point as we pull the context out from under it.\\n *\\n * An application that always uses the supplied context in an\\n * `AudioTransformDevice.createAudioNode` call should work correctly.\\n *\\n * If you are confident that your application does not use AudioWorklet, does not run in\\n * an un-fixed Chromium version, or will never be used with sample-rate-switching Bluetooth\\n * devices, you can disable this workaround by suppling a custom {@link ExtendedBrowserBehavior}\\n * when you create your device controller.\\n *\\n * We can't tell in advance whether we need to give the device a different audio context,\\n * because checking whether the resulting node is an AudioWorkletNode needs it to have been\\n * created first.\\n */\\n const recreateAudioContext = this.browserBehavior.requiresContextRecreationForAudioWorklet();\\n if (recreateAudioContext) {\\n this.logger.info('Recreating audio context when selecting transform device.');\\n if (this.transform) {\\n /* istanbul ignore else */\\n if (this.transform.nodes) {\\n this.transform.nodes.end.disconnect();\\n this.transform.nodes = undefined;\\n }\\n this.transform = undefined;\\n }\\n /* istanbul ignore else */\\n if (this.audioInputSourceNode) {\\n this.audioInputSourceNode.disconnect();\\n this.audioInputSourceNode = undefined;\\n }\\n /* istanbul ignore else */\\n if (this.audioInputDestinationNode) {\\n this.audioInputDestinationNode.disconnect();\\n this.audioInputDestinationNode = undefined;\\n }\\n DefaultDeviceController.closeAudioContext();\\n }\\n yield this.chooseAudioTransformInputDevice(device);\\n if (recreateAudioContext && ((_a = this.boundAudioVideoController) === null || _a === void 0 ? void 0 : _a.rtcPeerConnection)) {\\n this.boundAudioVideoController.restartLocalAudio(() => {\\n this.logger.info('Local audio restarted.');\\n });\\n }\\n return this.pushAudioMeetingStateForPermissions(device);\\n }\\n this.removeTransform();\\n yield this.chooseInputIntrinsicDevice('audio', device, false);\\n this.trace('chooseAudioInputDevice', device, `success`);\\n this.pushAudioMeetingStateForPermissions(device);\\n });\\n }\\n chooseAudioTransformInputDevice(device) {\\n var _a;\\n return __awaiter(this, void 0, void 0, function* () {\\n if (((_a = this.transform) === null || _a === void 0 ? void 0 : _a.device) === device) {\\n return;\\n }\\n if (!this.useWebAudio) {\\n throw new Error('Cannot apply transform device without enabling Web Audio.');\\n }\\n const context = DefaultDeviceController.getAudioContext();\\n if (context instanceof OfflineAudioContext) {\\n // Nothing to do.\\n }\\n else {\\n switch (context.state) {\\n case 'running':\\n // Nothing to do.\\n break;\\n case 'closed':\\n // A closed context cannot be used for creating nodes, so the correct\\n // thing to do is to raise a descriptive error sooner.\\n throw new Error('Cannot choose a transform device with a closed audio context.');\\n case 'suspended':\\n // A context might be suspended after page load. We try to resume it\\n // here, otherwise audio won't work.\\n yield context.resume();\\n }\\n }\\n let nodes;\\n try {\\n nodes = yield device.createAudioNode(context);\\n }\\n catch (e) {\\n this.logger.error(`Unable to create transform device node: ${e}.`);\\n throw e;\\n }\\n // Pick the plain ol' inner device as the source. It will be\\n // connected to the node.\\n const inner = yield device.intrinsicDevice();\\n yield this.chooseInputIntrinsicDevice('audio', inner, false);\\n this.logger.debug(`Got inner stream: ${inner}.`);\\n // Otherwise, continue: hook up the new node.\\n this.setTransform(device, nodes);\\n });\\n }\\n chooseVideoTransformInputDevice(device) {\\n var _a, _b;\\n return __awaiter(this, void 0, void 0, function* () {\\n if (device === this.chosenVideoTransformDevice) {\\n this.logger.info('Reselecting same VideoTransformDevice');\\n return;\\n }\\n const prevVideoTransformDevice = this.chosenVideoTransformDevice;\\n if (prevVideoTransformDevice) {\\n this.logger.info('Switched from previous VideoTransformDevice');\\n }\\n const wasUsingTransformDevice = !!prevVideoTransformDevice;\\n const inner = yield device.intrinsicDevice();\\n const canReuseMediaStream = this.isMediaStreamReusableByDeviceId((_a = this.activeDevices['video']) === null || _a === void 0 ? void 0 : _a.stream, inner);\\n if (!canReuseMediaStream) {\\n this.logger.info('video transform device needs new intrinsic device');\\n if (wasUsingTransformDevice) {\\n // detach input media stream - turn off the camera or leave it be if inner is media stream\\n prevVideoTransformDevice.onOutputStreamDisconnect();\\n }\\n this.chosenVideoTransformDevice = device;\\n // VideoTransformDevice owns input MediaStream\\n this.activeDevices['video'] = null;\\n yield this.chooseInputIntrinsicDevice('video', inner, false, true);\\n return;\\n }\\n // When saved stream is reusable, only switch the saved stream to filtered stream for sending\\n // but keep the saved stream intact.\\n // Note: to keep the chosen media stream intact, it is important to avoid a full stop\\n // because videoTileUpdate can be called when video is stopped and user might call `bindVideoElement` to disconnect the element.\\n // In current implementation, disconnecting the element will `hard` stop the media stream.\\n // Update device and stream\\n this.chosenVideoTransformDevice = device;\\n const newMediaStream = this.activeDevices['video'].stream;\\n this.logger.info('video transform device uses previous stream');\\n // Input is not a MediaStream. Update constraints\\n if (!inner.id) {\\n const constraint = inner;\\n constraint.width = constraint.width || this.videoInputQualitySettings.videoWidth;\\n constraint.height = constraint.height || this.videoInputQualitySettings.videoHeight;\\n constraint.frameRate = constraint.frameRate || this.videoInputQualitySettings.videoFrameRate;\\n yield newMediaStream.getVideoTracks()[0].applyConstraints(constraint);\\n }\\n // `transformStream` will start processing.\\n yield device.transformStream(this.activeDevices['video'].stream);\\n // Replace video to send\\n if ((_b = this.boundAudioVideoController) === null || _b === void 0 ? void 0 : _b.videoTileController.hasStartedLocalVideoTile()) {\\n // optimized method exists, a negotiation can be avoided\\n if (this.boundAudioVideoController.replaceLocalVideo) {\\n this.restartLocalVideoAfterSelection(null, false, true);\\n }\\n else {\\n // non-optimized path, a negotiation is coming\\n yield this.boundAudioVideoController.update();\\n }\\n }\\n });\\n }\\n chooseVideoInputDevice(device) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (device === undefined) {\\n this.logger.error('Video input device cannot be undefined');\\n return;\\n }\\n if (VideoTransformDevice_1.isVideoTransformDevice(device)) {\\n this.logger.info(`Choosing video transform device ${device}`);\\n return this.chooseVideoTransformInputDevice(device);\\n }\\n this.updateMaxBandwidthKbps();\\n // handle direct switching from VideoTransformDevice to Device\\n // From WebRTC point, it is a device switching.\\n if (this.chosenVideoInputIsTransformDevice()) {\\n // disconnect old stream\\n this.chosenVideoTransformDevice.onOutputStreamDisconnect();\\n this.chosenVideoTransformDevice = null;\\n }\\n yield this.chooseInputIntrinsicDevice('video', device, false);\\n this.trace('chooseVideoInputDevice', device);\\n this.pushVideoMeetingStateForPermissions(device);\\n });\\n }\\n chooseAudioOutputDevice(deviceId) {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.audioOutputDeviceId = deviceId;\\n this.watchForDeviceChangesIfNecessary();\\n yield this.bindAudioOutput();\\n this.trace('chooseAudioOutputDevice', deviceId, null);\\n return;\\n });\\n }\\n addDeviceChangeObserver(observer) {\\n this.logger.info('adding device change observer');\\n this.deviceChangeObservers.add(observer);\\n this.watchForDeviceChangesIfNecessary();\\n this.trace('addDeviceChangeObserver');\\n }\\n removeDeviceChangeObserver(observer) {\\n this.logger.info('removing device change observer');\\n this.deviceChangeObservers.delete(observer);\\n this.watchForDeviceChangesIfNecessary();\\n this.trace('removeDeviceChangeObserver');\\n }\\n createAnalyserNodeForAudioInput() {\\n var _a, _b;\\n if (!this.activeDevices['audio']) {\\n return null;\\n }\\n // If there is a WebAudio node in the graph, we use that as the source instead of the stream.\\n const node = (_b = (_a = this.transform) === null || _a === void 0 ? void 0 : _a.nodes) === null || _b === void 0 ? void 0 : _b.end;\\n if (node) {\\n const analyser = node.context.createAnalyser();\\n analyser.removeOriginalInputs = () => {\\n try {\\n node.disconnect(analyser);\\n }\\n catch (e) {\\n // This can fail in some unusual cases, but this is best-effort.\\n }\\n };\\n node.connect(analyser);\\n return analyser;\\n }\\n return this.createAnalyserNodeForRawAudioInput();\\n }\\n //\\n // N.B., this bypasses any applied transform node.\\n //\\n createAnalyserNodeForRawAudioInput() {\\n if (!this.activeDevices['audio']) {\\n return null;\\n }\\n return this.createAnalyserNodeForStream(this.activeDevices['audio'].stream);\\n }\\n createAnalyserNodeForStream(stream) {\\n const audioContext = DefaultDeviceController.getAudioContext();\\n const analyser = audioContext.createAnalyser();\\n const source = audioContext.createMediaStreamSource(stream);\\n source.connect(analyser);\\n this.trace('createAnalyserNodeForAudioInput');\\n analyser.removeOriginalInputs = () => {\\n try {\\n source.disconnect(analyser);\\n }\\n catch (e) {\\n // This can fail in some unusual cases, but this is best-effort.\\n }\\n };\\n return analyser;\\n }\\n startVideoPreviewForVideoInput(element) {\\n if (!this.activeDevices['video']) {\\n this.logger.warn('cannot bind video preview since video input device has not been chosen');\\n this.trace('startVideoPreviewForVideoInput', element.id);\\n return;\\n }\\n // TODO: implement MediaDestroyer to provide single release MediaStream function\\n this.releaseMediaStream(element.srcObject);\\n DefaultVideoTile_1.default.disconnectVideoStreamFromVideoElement(element, false);\\n navigator.mediaDevices\\n .getUserMedia(this.activeDevices['video'].constraints)\\n .then(previewStream => {\\n DefaultVideoTile_1.default.connectVideoStreamToVideoElement(previewStream, element, true);\\n })\\n .catch(error => {\\n this.logger.warn(`Unable to reacquire video stream for preview to element ${element.id}: ${error}`);\\n });\\n this.trace('startVideoPreviewForVideoInput', element.id);\\n }\\n stopVideoPreviewForVideoInput(element) {\\n const stream = element.srcObject;\\n const activeVideoDevice = this.activeDevices['video'];\\n // Safety.\\n /* istanbul ignore else */\\n if (activeVideoDevice) {\\n this.releaseActiveDevice(activeVideoDevice);\\n }\\n if (stream) {\\n this.releaseMediaStream(stream);\\n DefaultVideoTile_1.default.disconnectVideoStreamFromVideoElement(element, false);\\n }\\n this.trace('stopVideoPreviewForVideoInput', element.id);\\n }\\n setDeviceLabelTrigger(trigger) {\\n this.deviceLabelTrigger = trigger;\\n this.trace('setDeviceLabelTrigger');\\n }\\n mixIntoAudioInput(stream) {\\n let node = null;\\n if (this.useWebAudio) {\\n node = DefaultDeviceController.getAudioContext().createMediaStreamSource(stream);\\n node.connect(this.getMediaStreamOutputNode());\\n }\\n else {\\n this.logger.warn('WebAudio is not enabled, mixIntoAudioInput will not work');\\n }\\n this.trace('mixIntoAudioInput', stream.id);\\n return node;\\n }\\n chooseVideoInputQuality(width, height, frameRate, maxBandwidthKbps) {\\n const dimension = this.browserBehavior.requiresResolutionAlignment(width, height);\\n this.videoInputQualitySettings = new VideoQualitySettings_1.default(dimension[0], dimension[1], frameRate, maxBandwidthKbps);\\n this.updateMaxBandwidthKbps();\\n }\\n getVideoInputQualitySettings() {\\n return this.videoInputQualitySettings;\\n }\\n acquireAudioInputStream() {\\n return this.acquireInputStream('audio');\\n }\\n acquireVideoInputStream() {\\n return this.acquireInputStream('video');\\n }\\n acquireDisplayInputStream(streamConstraints) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (streamConstraints &&\\n streamConstraints.video &&\\n // @ts-ignore\\n streamConstraints.video.mandatory &&\\n // @ts-ignore\\n streamConstraints.video.mandatory.chromeMediaSource &&\\n // @ts-ignore\\n streamConstraints.video.mandatory.chromeMediaSourceId) {\\n return navigator.mediaDevices.getUserMedia(streamConstraints);\\n }\\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/31821\\n return navigator.mediaDevices.getDisplayMedia(streamConstraints);\\n });\\n }\\n /**\\n * This function helps `releaseMediaStream` do the right thing.\\n *\\n * We need to do three things:\\n *\\n * * Close the tracks of the source stream.\\n * * Remove the transform.\\n * * Clean up the _source_ stream's callback, as if `releaseMediaStream` had\\n * been called with that stream -- that's the stream that's tracked in\\n * `activeDevices` and needs to have its callbacks removed.\\n *\\n * This is a little fiddly because the stream broker interface doesn't\\n * know about the innards of the device controller, and only has the\\n * meeting session state's stream to work with.\\n *\\n */\\n releaseAudioTransformStream() {\\n this.logger.info('Stopping audio track for Web Audio graph');\\n this.stopTracksAndRemoveCallback('audio');\\n this.logger.info('Removing audio transform, if there is one.');\\n this.removeTransform();\\n // Remove the input and output nodes. They will be recreated later if\\n // needed.\\n this.audioInputSourceNode.disconnect();\\n this.audioInputSourceNode = undefined;\\n this.audioInputDestinationNode.disconnect();\\n this.audioInputDestinationNode = undefined;\\n }\\n releaseVideoTransformStream() {\\n this.logger.info('Stopping video track for transform');\\n this.stopTracksAndRemoveCallback('video');\\n this.logger.info('Disconnecting video transform');\\n this.chosenVideoTransformDevice.onOutputStreamDisconnect();\\n this.chosenVideoTransformDevice = null;\\n }\\n stopTracksAndRemoveCallback(kind) {\\n const activeDevice = this.activeDevices[kind];\\n /* istanbul ignore next */\\n const endedCallback = activeDevice === null || activeDevice === void 0 ? void 0 : activeDevice.endedCallback;\\n for (const track of activeDevice.stream.getTracks()) {\\n track.stop();\\n /* istanbul ignore else */\\n if (endedCallback) {\\n track.removeEventListener('ended', endedCallback);\\n delete activeDevice.endedCallback;\\n }\\n delete this.activeDevices[kind];\\n }\\n }\\n releaseOrdinaryStream(mediaStreamToRelease) {\\n var _a;\\n const tracksToStop = mediaStreamToRelease.getTracks();\\n if (!tracksToStop.length) {\\n return;\\n }\\n for (const track of tracksToStop) {\\n track.stop();\\n }\\n // This function is called from `CleanStoppedSessionTask` using the\\n // session state, which does not allow us to clean up any associated 'ended'\\n // callbacks in advance. Look here to see if we have any to clean up.\\n for (const kind in this.activeDevices) {\\n const activeDevice = this.activeDevices[kind];\\n if ((activeDevice === null || activeDevice === void 0 ? void 0 : activeDevice.stream) !== mediaStreamToRelease) {\\n continue;\\n }\\n if (activeDevice.endedCallback) {\\n tracksToStop[0].removeEventListener('ended', activeDevice.endedCallback);\\n delete activeDevice.endedCallback;\\n }\\n delete this.activeDevices[kind];\\n if (kind === 'video' &&\\n ((_a = this.boundAudioVideoController) === null || _a === void 0 ? void 0 : _a.videoTileController.hasStartedLocalVideoTile())) {\\n this.boundAudioVideoController.videoTileController.stopLocalVideoTile();\\n }\\n }\\n }\\n releaseMediaStream(mediaStreamToRelease) {\\n var _a, _b;\\n if (!mediaStreamToRelease) {\\n return;\\n }\\n try {\\n // This method can be called with the output of an audio transform's\\n // Web Audio graph. That graph runs from a `MediaStreamSourceNode`, through\\n // the transform (if present), to a `MediaStreamDestinationNode`, and out to\\n // WebRTC.\\n //\\n // The call teardown task will call `releaseMediaStream` with the stream it\\n // receives — the destination stream.\\n //\\n // This function detects with this comparison:\\n const isReleasingAudioDestinationStream = mediaStreamToRelease === ((_a = this.audioInputDestinationNode) === null || _a === void 0 ? void 0 : _a.stream);\\n if (isReleasingAudioDestinationStream) {\\n this.releaseAudioTransformStream();\\n return;\\n }\\n // Similarly, it can be called with a video transform's output stream.\\n // As with the Web Audio case, we need to release the actual input stream to\\n // really stop it.\\n const isReleasingVideoOutputStream = mediaStreamToRelease === ((_b = this.chosenVideoTransformDevice) === null || _b === void 0 ? void 0 : _b.outputMediaStream);\\n if (isReleasingVideoOutputStream) {\\n this.releaseVideoTransformStream();\\n return;\\n }\\n // Otherwise, this is one of our inputs that was plumbed straight through to\\n // WebRTC. Go ahead and release it track by track.\\n this.releaseOrdinaryStream(mediaStreamToRelease);\\n }\\n finally {\\n this.watchForDeviceChangesIfNecessary();\\n }\\n }\\n chosenVideoInputIsTransformDevice() {\\n return !!this.chosenVideoTransformDevice;\\n }\\n bindToAudioVideoController(audioVideoController) {\\n if (this.boundAudioVideoController) {\\n this.unsubscribeFromMuteAndUnmuteLocalAudio();\\n }\\n this.boundAudioVideoController = audioVideoController;\\n this.subscribeToMuteAndUnmuteLocalAudio();\\n if (this.browserBehavior.supportsSetSinkId()) {\\n AsyncScheduler_1.default.nextTick(() => {\\n this.bindAudioOutput();\\n });\\n }\\n }\\n subscribeToMuteAndUnmuteLocalAudio() {\\n if (!this.boundAudioVideoController) {\\n return;\\n }\\n // Safety that's hard to test.\\n /* istanbul ignore next */\\n if (!this.boundAudioVideoController.realtimeController) {\\n return;\\n }\\n this.boundAudioVideoController.realtimeController.realtimeSubscribeToMuteAndUnmuteLocalAudio(this.muteCallback);\\n }\\n unsubscribeFromMuteAndUnmuteLocalAudio() {\\n // Safety that's hard to test.\\n /* istanbul ignore next */\\n if (!this.boundAudioVideoController.realtimeController) {\\n return;\\n }\\n this.boundAudioVideoController.realtimeController.realtimeUnsubscribeToMuteAndUnmuteLocalAudio(this.muteCallback);\\n }\\n static getIntrinsicDeviceId(device) {\\n if (device === undefined) {\\n return undefined;\\n }\\n if (device === null) {\\n return null;\\n }\\n if (typeof device === 'string') {\\n return device;\\n }\\n if (device.id) {\\n return device.id;\\n }\\n const constraints = device;\\n const deviceIdConstraints = constraints.deviceId;\\n if (deviceIdConstraints === undefined) {\\n return undefined;\\n }\\n if (deviceIdConstraints === null) {\\n return null;\\n }\\n if (typeof deviceIdConstraints === 'string' || Array.isArray(deviceIdConstraints)) {\\n return deviceIdConstraints;\\n }\\n const constraintStringParams = deviceIdConstraints;\\n if (typeof constraintStringParams.exact === 'string' ||\\n Array.isArray(constraintStringParams.exact)) {\\n return constraintStringParams.exact;\\n }\\n return undefined;\\n }\\n static createEmptyAudioDevice() {\\n return DefaultDeviceController.synthesizeAudioDevice(0);\\n }\\n static createEmptyVideoDevice() {\\n return DefaultDeviceController.synthesizeVideoDevice('black');\\n }\\n static synthesizeAudioDevice(toneHz) {\\n const audioContext = DefaultDeviceController.getAudioContext();\\n const outputNode = audioContext.createMediaStreamDestination();\\n if (!toneHz) {\\n const source = audioContext.createBufferSource();\\n // The AudioContext object uses the sample rate of the default output device\\n // if not specified. Creating an AudioBuffer object with the output device's\\n // sample rate fails in some browsers, e.g. Safari with a Bluetooth headphone.\\n try {\\n source.buffer = audioContext.createBuffer(1, audioContext.sampleRate * 5, audioContext.sampleRate);\\n }\\n catch (error) {\\n if (error && error.name === 'NotSupportedError') {\\n source.buffer = audioContext.createBuffer(1, DefaultDeviceController.defaultSampleRate * 5, DefaultDeviceController.defaultSampleRate);\\n }\\n else {\\n throw error;\\n }\\n }\\n // Some browsers will not play audio out the MediaStreamDestination\\n // unless there is actually audio to play, so we add a small amount of\\n // noise here to ensure that audio is played out.\\n source.buffer.getChannelData(0)[0] = 0.0003;\\n source.loop = true;\\n source.connect(outputNode);\\n source.start();\\n }\\n else {\\n const gainNode = audioContext.createGain();\\n gainNode.gain.value = 0.1;\\n gainNode.connect(outputNode);\\n const oscillatorNode = audioContext.createOscillator();\\n oscillatorNode.frequency.value = toneHz;\\n oscillatorNode.connect(gainNode);\\n oscillatorNode.start();\\n }\\n return outputNode.stream;\\n }\\n static synthesizeVideoDevice(colorOrPattern) {\\n const canvas = document.createElement('canvas');\\n canvas.width = 480;\\n canvas.height = (canvas.width / 16) * 9;\\n const colorBars = makeColorBars(canvas, colorOrPattern);\\n if (!colorBars) {\\n return null;\\n }\\n // `scheduler` and `listener` will leak.\\n const { stream } = colorBars;\\n return stream;\\n }\\n updateMaxBandwidthKbps() {\\n if (this.boundAudioVideoController) {\\n this.boundAudioVideoController.setVideoMaxBandwidthKbps(this.videoInputQualitySettings.videoMaxBandwidthKbps);\\n }\\n }\\n listDevicesOfKind(deviceKind) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.deviceInfoCache === null || !this.isWatchingForDeviceChanges()) {\\n yield this.updateDeviceInfoCacheFromBrowser();\\n }\\n return this.listCachedDevicesOfKind(deviceKind);\\n });\\n }\\n updateDeviceInfoCacheFromBrowser() {\\n return __awaiter(this, void 0, void 0, function* () {\\n const doesNotHaveAccessToMediaDevices = typeof MediaDeviceInfo === 'undefined';\\n if (doesNotHaveAccessToMediaDevices) {\\n this.deviceInfoCache = [];\\n return;\\n }\\n let devices = yield navigator.mediaDevices.enumerateDevices();\\n let hasDeviceLabels = true;\\n for (const device of devices) {\\n if (!device.label) {\\n hasDeviceLabels = false;\\n break;\\n }\\n }\\n if (!hasDeviceLabels) {\\n try {\\n this.logger.info('attempting to trigger media device labels since they are hidden');\\n const triggerStream = yield this.deviceLabelTrigger();\\n devices = yield navigator.mediaDevices.enumerateDevices();\\n for (const track of triggerStream.getTracks()) {\\n track.stop();\\n }\\n }\\n catch (err) {\\n this.logger.info('unable to get media device labels');\\n }\\n }\\n this.deviceInfoCache = devices;\\n });\\n }\\n listCachedDevicesOfKind(deviceKind) {\\n const devicesOfKind = [];\\n for (const device of this.deviceInfoCache) {\\n if (device.kind === deviceKind) {\\n devicesOfKind.push(device);\\n }\\n }\\n return devicesOfKind;\\n }\\n handleDeviceChange() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.deviceInfoCache === null) {\\n return;\\n }\\n if (this.alreadyHandlingDeviceChange) {\\n AsyncScheduler_1.default.nextTick(() => {\\n this.handleDeviceChange();\\n });\\n return;\\n }\\n this.alreadyHandlingDeviceChange = true;\\n const oldAudioInputDevices = this.listCachedDevicesOfKind('audioinput');\\n const oldVideoInputDevices = this.listCachedDevicesOfKind('videoinput');\\n const oldAudioOutputDevices = this.listCachedDevicesOfKind('audiooutput');\\n yield this.updateDeviceInfoCacheFromBrowser();\\n const newAudioInputDevices = this.listCachedDevicesOfKind('audioinput');\\n const newVideoInputDevices = this.listCachedDevicesOfKind('videoinput');\\n const newAudioOutputDevices = this.listCachedDevicesOfKind('audiooutput');\\n this.forEachObserver((observer) => {\\n if (!this.areDeviceListsEqual(oldAudioInputDevices, newAudioInputDevices)) {\\n Maybe_1.default.of(observer.audioInputsChanged).map(f => f.bind(observer)(newAudioInputDevices));\\n }\\n if (!this.areDeviceListsEqual(oldVideoInputDevices, newVideoInputDevices)) {\\n Maybe_1.default.of(observer.videoInputsChanged).map(f => f.bind(observer)(newVideoInputDevices));\\n }\\n if (!this.areDeviceListsEqual(oldAudioOutputDevices, newAudioOutputDevices)) {\\n Maybe_1.default.of(observer.audioOutputsChanged).map(f => f.bind(observer)(newAudioOutputDevices));\\n }\\n });\\n this.alreadyHandlingDeviceChange = false;\\n });\\n }\\n handleDeviceStreamEnded(kind, deviceId) {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n yield this.chooseInputIntrinsicDevice(kind, null, false);\\n }\\n catch (e) {\\n /* istanbul ignore next */\\n this.logger.error('Failed to choose null device after stream ended.');\\n }\\n if (kind === 'audio') {\\n this.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.audioInputStreamEnded).map(f => f.bind(observer)(deviceId));\\n });\\n }\\n else {\\n this.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.videoInputStreamEnded).map(f => f.bind(observer)(deviceId));\\n });\\n }\\n });\\n }\\n forEachObserver(observerFunc) {\\n for (const observer of this.deviceChangeObservers) {\\n AsyncScheduler_1.default.nextTick(() => {\\n /* istanbul ignore else */\\n if (this.deviceChangeObservers.has(observer)) {\\n observerFunc(observer);\\n }\\n });\\n }\\n }\\n areDeviceListsEqual(a, b) {\\n return (JSON.stringify(a.map(device => JSON.stringify(device)).sort()) ===\\n JSON.stringify(b.map(device => JSON.stringify(device)).sort()));\\n }\\n intrinsicDeviceAsMediaStream(device) {\\n // @ts-ignore\\n return device && device.id ? device : null;\\n }\\n hasSameGroupId(groupId, kind, device) {\\n if (groupId === '') {\\n return true;\\n }\\n const deviceIds = DefaultDeviceController.getIntrinsicDeviceId(device);\\n if (typeof deviceIds === 'string' && groupId === this.getGroupIdFromDeviceId(kind, deviceIds)) {\\n return true;\\n }\\n return false;\\n }\\n getGroupIdFromDeviceId(kind, deviceId) {\\n if (this.deviceInfoCache !== null) {\\n const cachedDeviceInfo = this.listCachedDevicesOfKind(`${kind}input`).find((cachedDevice) => cachedDevice.deviceId === deviceId);\\n if (cachedDeviceInfo && cachedDeviceInfo.groupId) {\\n return cachedDeviceInfo.groupId;\\n }\\n }\\n return '';\\n }\\n getActiveDeviceId(kind) {\\n /* istanbul ignore else */\\n if (this.activeDevices[kind] && this.activeDevices[kind].constraints) {\\n const activeDeviceMediaTrackConstraints = this.activeDevices[kind].constraints.audio || this.activeDevices[kind].constraints.video;\\n const activeDeviceConstrainDOMStringParameters = activeDeviceMediaTrackConstraints\\n .deviceId;\\n let activeDeviceId;\\n if (typeof activeDeviceConstrainDOMStringParameters === 'string') {\\n activeDeviceId = activeDeviceConstrainDOMStringParameters;\\n }\\n else {\\n activeDeviceId = activeDeviceConstrainDOMStringParameters\\n .exact;\\n }\\n return activeDeviceId;\\n }\\n /* istanbul ignore next */\\n return null;\\n }\\n restartLocalVideoAfterSelection(oldDevice, fromAcquire, fromVideoTransformDevice) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!fromAcquire &&\\n this.boundAudioVideoController &&\\n this.boundAudioVideoController.videoTileController.hasStartedLocalVideoTile()) {\\n if (fromVideoTransformDevice) {\\n // similar to `useWebaudio`, either Device or VideoTransformDevice, `this.activeDevices['video']` tracks the supplied inner Device.\\n // Upon in-meeting switching to VideoTransformDevice, device controller releases old \\\"supplied\\\" stream and\\n // calls replaceLocalVideo to avoid a full stop-start update.\\n yield this.boundAudioVideoController.replaceLocalVideo();\\n this.logger.info('successfully replaced video track');\\n if (oldDevice === null || oldDevice === void 0 ? void 0 : oldDevice.stream.active) {\\n this.logger.warn('previous media stream is not stopped during restart video');\\n this.releaseActiveDevice(oldDevice);\\n }\\n }\\n else {\\n // not from VideoTransformDevice, usual behavior.\\n this.logger.info('restarting local video to switch to new device');\\n this.boundAudioVideoController.restartLocalVideo(() => {\\n // TODO: implement MediaStreamDestroyer\\n // tracks of oldStream should be stopped when video tile is disconnected from MediaStream\\n // otherwise, camera is still being accessed and we need to stop it here.\\n if (oldDevice === null || oldDevice === void 0 ? void 0 : oldDevice.stream.active) {\\n this.logger.warn('previous media stream is not stopped during restart video');\\n this.releaseActiveDevice(oldDevice);\\n }\\n });\\n }\\n }\\n else {\\n this.releaseActiveDevice(oldDevice);\\n }\\n });\\n }\\n handleGetUserMediaError(error, errorTimeMs) {\\n if (!error) {\\n throw new GetUserMediaError_1.default(error);\\n }\\n switch (error.name) {\\n case 'NotReadableError':\\n case 'TrackStartError':\\n throw new NotReadableError_1.default(error);\\n case 'NotFoundError':\\n case 'DevicesNotFoundError':\\n throw new NotFoundError_1.default(error);\\n case 'NotAllowedError':\\n case 'PermissionDeniedError':\\n case 'SecurityError':\\n if (errorTimeMs &&\\n errorTimeMs < DefaultDeviceController.permissionDeniedOriginDetectionThresholdMs) {\\n throw new PermissionDeniedError_1.default(error, 'Permission denied by browser');\\n }\\n else {\\n throw new PermissionDeniedError_1.default(error, 'Permission denied by user');\\n }\\n case 'OverconstrainedError':\\n case 'ConstraintNotSatisfiedError':\\n throw new OverconstrainedError_1.default(error);\\n case 'TypeError':\\n throw new TypeError_1.default(error);\\n case 'AbortError':\\n default:\\n throw new GetUserMediaError_1.default(error);\\n }\\n }\\n releaseActiveDevice(device) {\\n if (!device || !device.stream) {\\n return;\\n }\\n if (device.endedCallback) {\\n const track = device.stream.getTracks()[0];\\n // Safety.\\n /* istanbul ignore else */\\n if (track) {\\n track.removeEventListener('ended', device.endedCallback);\\n }\\n }\\n delete device.endedCallback;\\n this.releaseMediaStream(device.stream);\\n delete device.stream;\\n }\\n chooseInputIntrinsicDevice(kind, device, fromAcquire, fromVideoTransformDevice = false) {\\n var _a, _b, _c, _d, _e;\\n return __awaiter(this, void 0, void 0, function* () {\\n this.inputDeviceCount += 1;\\n const callCount = this.inputDeviceCount;\\n if (device === null && kind === 'video') {\\n this.lastNoVideoInputDeviceCount = this.inputDeviceCount;\\n const active = this.activeDevices[kind];\\n if (active) {\\n this.releaseActiveDevice(active);\\n delete this.activeDevices[kind];\\n this.watchForDeviceChangesIfNecessary();\\n }\\n return;\\n }\\n // N.B.,: the input device might already have augmented constraints supplied\\n // by an `AudioTransformDevice`. `calculateMediaStreamConstraints` will respect\\n // settings supplied by the device.\\n const proposedConstraints = this.calculateMediaStreamConstraints(kind, device);\\n // TODO: `matchesConstraints` should really return compatible/incompatible/exact --\\n // `applyConstraints` can be used to reuse the active device while changing the\\n // requested constraints.\\n if (this.activeDevices[kind] &&\\n this.activeDevices[kind].matchesConstraints(proposedConstraints) &&\\n this.activeDevices[kind].stream.active &&\\n this.activeDevices[kind].groupId !== null &&\\n this.hasSameGroupId(this.activeDevices[kind].groupId, kind, device)) {\\n this.logger.info(`reusing existing ${kind} device`);\\n return;\\n }\\n if (kind === 'audio' && this.activeDevices[kind] && this.activeDevices[kind].stream) {\\n this.releaseActiveDevice(this.activeDevices[kind]);\\n }\\n const startTimeMs = Date.now();\\n const newDevice = new DeviceSelection_1.default();\\n try {\\n this.logger.info(`requesting new ${kind} device with constraint ${JSON.stringify(proposedConstraints)}`);\\n const stream = this.intrinsicDeviceAsMediaStream(device);\\n if (kind === 'audio' && device === null) {\\n newDevice.stream = DefaultDeviceController.createEmptyAudioDevice();\\n newDevice.constraints = null;\\n }\\n else if (stream) {\\n this.logger.info(`using media stream ${stream.id} for ${kind} device`);\\n newDevice.stream = stream;\\n newDevice.constraints = proposedConstraints;\\n }\\n else {\\n newDevice.stream = yield navigator.mediaDevices.getUserMedia(proposedConstraints);\\n newDevice.constraints = proposedConstraints;\\n if (kind === 'video' && this.lastNoVideoInputDeviceCount > callCount) {\\n this.logger.warn(`ignored to get video device for constraints ${JSON.stringify(proposedConstraints)} as no device was requested`);\\n this.releaseMediaStream(newDevice.stream);\\n return;\\n }\\n yield this.handleDeviceChange();\\n const track = newDevice.stream.getTracks()[0];\\n newDevice.endedCallback = () => {\\n // Hard to test, but the safety check is worthwhile.\\n /* istanbul ignore else */\\n if (this.activeDevices[kind] && this.activeDevices[kind].stream === newDevice.stream) {\\n this.logger.warn(`${kind} input device which was active is no longer available, resetting to null device`);\\n this.handleDeviceStreamEnded(kind, this.getActiveDeviceId(kind));\\n delete newDevice.endedCallback;\\n }\\n };\\n track.addEventListener('ended', newDevice.endedCallback, { once: true });\\n }\\n newDevice.groupId = ((_a = this.getMediaTrackSettings(newDevice.stream)) === null || _a === void 0 ? void 0 : _a.groupId) || '';\\n }\\n catch (error) {\\n let errorMessage;\\n if ((error === null || error === void 0 ? void 0 : error.name) && error.message) {\\n errorMessage = `${error.name}: ${error.message}`;\\n }\\n else if (error === null || error === void 0 ? void 0 : error.name) {\\n errorMessage = error.name;\\n }\\n else if (error === null || error === void 0 ? void 0 : error.message) {\\n errorMessage = error.message;\\n }\\n else {\\n errorMessage = 'UnknownError';\\n }\\n if (kind === 'audio') {\\n (_c = (_b = this.boundAudioVideoController) === null || _b === void 0 ? void 0 : _b.eventController) === null || _c === void 0 ? void 0 : _c.publishEvent('audioInputFailed', {\\n audioInputErrorMessage: errorMessage,\\n });\\n }\\n else {\\n (_e = (_d = this.boundAudioVideoController) === null || _d === void 0 ? void 0 : _d.eventController) === null || _e === void 0 ? void 0 : _e.publishEvent('videoInputFailed', {\\n videoInputErrorMessage: errorMessage,\\n });\\n }\\n this.logger.error(`failed to get ${kind} device for constraints ${JSON.stringify(proposedConstraints)}: ${errorMessage}`);\\n // This is effectively `error instanceof OverconstrainedError` but works in Node.\\n if (error && 'constraint' in error) {\\n this.logger.error(`Over-constrained by constraint: ${error.constraint}`);\\n }\\n /*\\n * If there is any error while acquiring the audio device, we fall back to null device.\\n * Reason: If device selection fails (e.g. NotReadableError), the peer connection is left hanging\\n * with no active audio track since we release the previously attached track.\\n * If no audio packet has yet been sent to the server, the server will not emit the joined event.\\n */\\n if (kind === 'audio') {\\n this.logger.info(`choosing null ${kind} device instead`);\\n try {\\n newDevice.stream = DefaultDeviceController.createEmptyAudioDevice();\\n newDevice.constraints = null;\\n yield this.handleNewInputDevice(kind, newDevice, fromAcquire);\\n }\\n catch (error) {\\n this.logger.error(`failed to choose null ${kind} device. ${error.name}: ${error.message}`);\\n }\\n }\\n this.handleGetUserMediaError(error, Date.now() - startTimeMs);\\n }\\n finally {\\n this.watchForDeviceChangesIfNecessary();\\n }\\n this.logger.info(`got ${kind} device for constraints ${JSON.stringify(proposedConstraints)}`);\\n yield this.handleNewInputDevice(kind, newDevice, fromAcquire, fromVideoTransformDevice);\\n return;\\n });\\n }\\n handleNewInputDevice(kind, newDevice, fromAcquire, fromVideoTransformDevice = false) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const oldDevice = this.activeDevices[kind];\\n this.activeDevices[kind] = newDevice;\\n this.watchForDeviceChangesIfNecessary();\\n if (kind === 'video') {\\n // attempts to mirror `this.useWebAudio`. The difference is that audio destination stream stays the same\\n // but video sending needs to switch streams.\\n if (this.chosenVideoInputIsTransformDevice()) {\\n this.logger.info('apply processors to transform');\\n yield this.chosenVideoTransformDevice.transformStream(this.activeDevices['video'].stream);\\n }\\n yield this.restartLocalVideoAfterSelection(oldDevice, fromAcquire, fromVideoTransformDevice);\\n }\\n else {\\n this.releaseActiveDevice(oldDevice);\\n if (this.useWebAudio) {\\n this.attachAudioInputStreamToAudioContext(this.activeDevices[kind].stream);\\n }\\n else if (this.boundAudioVideoController) {\\n try {\\n yield this.boundAudioVideoController.restartLocalAudio(() => { });\\n }\\n catch (error) {\\n this.logger.info(`cannot replace audio track due to: ${error.message}`);\\n }\\n }\\n else {\\n this.logger.info('no audio-video controller is bound to the device controller');\\n }\\n }\\n });\\n }\\n bindAudioOutput() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (!this.boundAudioVideoController) {\\n return;\\n }\\n const deviceInfo = this.deviceInfoFromDeviceId('audiooutput', this.audioOutputDeviceId);\\n yield this.boundAudioVideoController.audioMixController.bindAudioDevice(deviceInfo);\\n });\\n }\\n calculateMediaStreamConstraints(kind, device) {\\n let trackConstraints = {};\\n if (device === '') {\\n device = null;\\n }\\n const stream = this.intrinsicDeviceAsMediaStream(device);\\n if (device === null) {\\n return null;\\n }\\n else if (typeof device === 'string') {\\n if (this.browserBehavior.requiresNoExactMediaStreamConstraints() &&\\n this.browserBehavior.requiresGroupIdMediaStreamConstraints()) {\\n // In Samsung Internet browser, navigator.mediaDevices.enumerateDevices()\\n // returns same deviceId but different groupdId for some audioinput and videoinput devices.\\n // To handle this, we select appropriate device using deviceId + groupId.\\n trackConstraints.deviceId = device;\\n trackConstraints.groupId = this.getGroupIdFromDeviceId(kind, device);\\n }\\n else if (this.browserBehavior.requiresNoExactMediaStreamConstraints()) {\\n trackConstraints.deviceId = device;\\n }\\n else {\\n trackConstraints.deviceId = { exact: device };\\n }\\n }\\n else if (stream) {\\n // @ts-ignore - create a fake track constraint using the stream id\\n trackConstraints.streamId = stream.id;\\n }\\n else if (isMediaDeviceInfo(device)) {\\n trackConstraints.deviceId = device.deviceId;\\n trackConstraints.groupId = device.groupId;\\n }\\n else {\\n // Take the input set of constraints. Note that this allows\\n // the builder to specify overrides for properties like `autoGainControl`.\\n // @ts-ignore - device is a MediaTrackConstraints\\n trackConstraints = device;\\n }\\n if (kind === 'video') {\\n trackConstraints.width = trackConstraints.width || {\\n ideal: this.videoInputQualitySettings.videoWidth,\\n };\\n trackConstraints.height = trackConstraints.height || {\\n ideal: this.videoInputQualitySettings.videoHeight,\\n };\\n trackConstraints.frameRate = trackConstraints.frameRate || {\\n ideal: this.videoInputQualitySettings.videoFrameRate,\\n };\\n // TODO: try to replace hard-code value related to videos into quality-level presets\\n // The following configs relaxes CPU overuse detection threshold to offer better encoding quality\\n // @ts-ignore\\n trackConstraints.googCpuOveruseDetection = true;\\n // @ts-ignore\\n trackConstraints.googCpuOveruseEncodeUsage = true;\\n // @ts-ignore\\n trackConstraints.googCpuOveruseThreshold = 85;\\n // @ts-ignore\\n trackConstraints.googCpuUnderuseThreshold = 55;\\n }\\n if (kind === 'audio' && this.supportSampleRateConstraint()) {\\n trackConstraints.sampleRate = { ideal: DefaultDeviceController.defaultSampleRate };\\n }\\n if (kind === 'audio' && this.supportSampleSizeConstraint()) {\\n trackConstraints.sampleSize = { ideal: DefaultDeviceController.defaultSampleSize };\\n }\\n if (kind === 'audio' && this.supportChannelCountConstraint()) {\\n trackConstraints.channelCount = { ideal: DefaultDeviceController.defaultChannelCount };\\n }\\n if (kind === 'audio') {\\n const augmented = Object.assign({ echoCancellation: true, googEchoCancellation: true, googEchoCancellation2: true, googAutoGainControl: true, googAutoGainControl2: true, googNoiseSuppression: true, googNoiseSuppression2: true, googHighpassFilter: true }, trackConstraints);\\n trackConstraints = augmented;\\n }\\n return kind === 'audio' ? { audio: trackConstraints } : { video: trackConstraints };\\n }\\n deviceInfoFromDeviceId(deviceKind, deviceId) {\\n if (this.deviceInfoCache === null) {\\n return null;\\n }\\n for (const device of this.deviceInfoCache) {\\n if (device.kind === deviceKind && device.deviceId === deviceId) {\\n return device;\\n }\\n }\\n return null;\\n }\\n acquireInputStream(kind) {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (kind === 'audio') {\\n if (this.useWebAudio) {\\n const dest = this.getMediaStreamDestinationNode();\\n return dest.stream;\\n }\\n }\\n // mirrors `this.useWebAudio`\\n if (kind === 'video') {\\n if (this.chosenVideoInputIsTransformDevice()) {\\n return this.chosenVideoTransformDevice.outputMediaStream;\\n }\\n }\\n let existingConstraints = null;\\n if (!this.activeDevices[kind]) {\\n if (kind === 'audio') {\\n this.logger.info(`no ${kind} device chosen, creating empty ${kind} device`);\\n }\\n else {\\n this.logger.error(`no ${kind} device chosen, stopping local video tile`);\\n this.boundAudioVideoController.videoTileController.stopLocalVideoTile();\\n throw new Error(`no ${kind} device chosen, stopping local video tile`);\\n }\\n }\\n else {\\n this.logger.info(`checking whether existing ${kind} device can be reused`);\\n const active = this.activeDevices[kind];\\n // @ts-ignore\\n existingConstraints = active.constraints ? active.constraints[kind] : null;\\n }\\n try {\\n yield this.chooseInputIntrinsicDevice(kind, existingConstraints, true);\\n }\\n catch (e) {\\n this.logger.error(`unable to acquire ${kind} device`);\\n if (e instanceof PermissionDeniedError_1.default) {\\n throw e;\\n }\\n throw new GetUserMediaError_1.default(e, `unable to acquire ${kind} device`);\\n }\\n return this.activeDevices[kind].stream;\\n });\\n }\\n hasAppliedTransform() {\\n return !!this.transform;\\n }\\n isMediaStreamReusableByDeviceId(stream, device) {\\n // for null device, assume the stream is not reusable\\n if (!stream || !stream.active || !device) {\\n return false;\\n }\\n if (device.id) {\\n return stream.id === device.id;\\n }\\n const settings = this.getMediaTrackSettings(stream);\\n // If a device does not specify deviceId, we have to assume the stream is not reusable.\\n if (!settings.deviceId) {\\n return false;\\n }\\n const deviceIds = DefaultDeviceController.getIntrinsicDeviceId(device);\\n if (typeof deviceIds === 'string') {\\n return settings.deviceId === deviceIds;\\n }\\n return false;\\n }\\n getMediaTrackSettings(stream) {\\n var _a;\\n return (_a = stream.getTracks()[0]) === null || _a === void 0 ? void 0 : _a.getSettings();\\n }\\n reconnectAudioInputs() {\\n if (!this.audioInputSourceNode) {\\n return;\\n }\\n this.audioInputSourceNode.disconnect();\\n const output = this.getMediaStreamOutputNode();\\n this.audioInputSourceNode.connect(output);\\n }\\n setTransform(device, nodes) {\\n var _a, _b;\\n (_b = (_a = this.transform) === null || _a === void 0 ? void 0 : _a.nodes) === null || _b === void 0 ? void 0 : _b.end.disconnect();\\n this.transform = { nodes, device };\\n const proc = nodes === null || nodes === void 0 ? void 0 : nodes.end;\\n const dest = this.getMediaStreamDestinationNode();\\n this.logger.debug(`Connecting transform node ${proc} to destination ${dest}.`);\\n proc === null || proc === void 0 ? void 0 : proc.connect(dest);\\n this.reconnectAudioInputs();\\n }\\n removeTransform() {\\n var _a;\\n const previous = this.transform;\\n if (!previous) {\\n return undefined;\\n }\\n (_a = this.transform.nodes) === null || _a === void 0 ? void 0 : _a.end.disconnect();\\n this.transform = undefined;\\n this.reconnectAudioInputs();\\n return previous;\\n }\\n attachAudioInputStreamToAudioContext(stream) {\\n var _a;\\n (_a = this.audioInputSourceNode) === null || _a === void 0 ? void 0 : _a.disconnect();\\n this.audioInputSourceNode = DefaultDeviceController.getAudioContext().createMediaStreamSource(stream);\\n const output = this.getMediaStreamOutputNode();\\n this.audioInputSourceNode.connect(output);\\n }\\n /**\\n * Return the end of the Web Audio graph: post-transform audio.\\n */\\n getMediaStreamDestinationNode() {\\n if (!this.audioInputDestinationNode) {\\n this.audioInputDestinationNode = DefaultDeviceController.getAudioContext().createMediaStreamDestination();\\n }\\n return this.audioInputDestinationNode;\\n }\\n /**\\n * Return the start of the Web Audio graph: pre-transform audio.\\n * If there's no transform node, this is the destination node.\\n */\\n getMediaStreamOutputNode() {\\n var _a, _b;\\n return ((_b = (_a = this.transform) === null || _a === void 0 ? void 0 : _a.nodes) === null || _b === void 0 ? void 0 : _b.start) || this.getMediaStreamDestinationNode();\\n }\\n static getAudioContext() {\\n if (!DefaultDeviceController.audioContext) {\\n const options = {};\\n if (navigator.mediaDevices.getSupportedConstraints().sampleRate) {\\n options.sampleRate = DefaultDeviceController.defaultSampleRate;\\n }\\n // @ts-ignore\\n DefaultDeviceController.audioContext = new (window.AudioContext || window.webkitAudioContext)(options);\\n }\\n return DefaultDeviceController.audioContext;\\n }\\n static closeAudioContext() {\\n if (DefaultDeviceController.audioContext) {\\n try {\\n DefaultDeviceController.audioContext.close();\\n }\\n catch (e) {\\n // Nothing we can do.\\n }\\n }\\n DefaultDeviceController.audioContext = null;\\n }\\n supportSampleRateConstraint() {\\n return this.useWebAudio && !!navigator.mediaDevices.getSupportedConstraints().sampleRate;\\n }\\n supportSampleSizeConstraint() {\\n return this.useWebAudio && !!navigator.mediaDevices.getSupportedConstraints().sampleSize;\\n }\\n supportChannelCountConstraint() {\\n return this.useWebAudio && !!navigator.mediaDevices.getSupportedConstraints().channelCount;\\n }\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n trace(name, input, output) {\\n let s = `API/DefaultDeviceController/${name}`;\\n if (typeof input !== 'undefined') {\\n s += ` ${JSON.stringify(input)}`;\\n }\\n if (typeof output !== 'undefined') {\\n s += ` -> ${JSON.stringify(output)}`;\\n }\\n this.logger.info(s);\\n }\\n}\\nexports[\\\"default\\\"] = DefaultDeviceController;\\nDefaultDeviceController.permissionDeniedOriginDetectionThresholdMs = 500;\\nDefaultDeviceController.defaultVideoWidth = 960;\\nDefaultDeviceController.defaultVideoHeight = 540;\\nDefaultDeviceController.defaultVideoFrameRate = 15;\\nDefaultDeviceController.defaultVideoMaxBandwidthKbps = 1400;\\nDefaultDeviceController.defaultSampleRate = 48000;\\nDefaultDeviceController.defaultSampleSize = 16;\\nDefaultDeviceController.defaultChannelCount = 1;\\nDefaultDeviceController.audioContext = null;\\nfunction isMediaDeviceInfo(device) {\\n return (typeof device === 'object' &&\\n 'deviceId' in device &&\\n 'groupId' in device &&\\n 'kind' in device &&\\n 'label' in device);\\n}\\n//# sourceMappingURL=DefaultDeviceController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/DefaultDeviceController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/DeviceSelection.js\":\n/*!************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/DeviceSelection.js ***!\n \\************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass DeviceSelection {\\n constructor() {\\n this.groupId = '';\\n }\\n matchesConstraints(constraints) {\\n return JSON.stringify(this.constraints) === JSON.stringify(constraints);\\n }\\n}\\nexports[\\\"default\\\"] = DeviceSelection;\\n//# sourceMappingURL=DeviceSelection.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/DeviceSelection.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\":\n/*!**************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js ***!\n \\**************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass GetUserMediaError extends Error {\\n constructor(cause, message) {\\n super(message || 'Error fetching device.');\\n this.cause = cause;\\n }\\n}\\nexports[\\\"default\\\"] = GetUserMediaError;\\n//# sourceMappingURL=GetUserMediaError.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NoOpDeviceController.js\":\n/*!*****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/NoOpDeviceController.js ***!\n \\*****************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.DestroyableNoOpDeviceController = void 0;\\nconst NoOpMediaStreamBroker_1 = __webpack_require__(/*! ../mediastreambroker/NoOpMediaStreamBroker */ \\\"./node_modules/amazon-chime-sdk-js/build/mediastreambroker/NoOpMediaStreamBroker.js\\\");\\nclass NoOpDeviceController extends NoOpMediaStreamBroker_1.default {\\n constructor(_options) {\\n super();\\n }\\n listAudioInputDevices() {\\n return Promise.resolve([]);\\n }\\n listVideoInputDevices() {\\n return Promise.resolve([]);\\n }\\n listAudioOutputDevices() {\\n return Promise.resolve([]);\\n }\\n chooseAudioInputDevice(_device) {\\n return Promise.reject();\\n }\\n chooseVideoInputDevice(_device) {\\n return Promise.reject();\\n }\\n chooseAudioOutputDevice(_deviceId) {\\n return Promise.reject();\\n }\\n addDeviceChangeObserver(_observer) { }\\n removeDeviceChangeObserver(_observer) { }\\n createAnalyserNodeForAudioInput() {\\n return null;\\n }\\n startVideoPreviewForVideoInput(_element) { }\\n stopVideoPreviewForVideoInput(_element) { }\\n setDeviceLabelTrigger(_trigger) { }\\n mixIntoAudioInput(_stream) {\\n return null;\\n }\\n chooseVideoInputQuality(_width, _height, _frameRate, _maxBandwidthKbps) { }\\n getVideoInputQualitySettings() {\\n return null;\\n }\\n}\\nexports[\\\"default\\\"] = NoOpDeviceController;\\nclass DestroyableNoOpDeviceController extends NoOpDeviceController {\\n constructor() {\\n super(...arguments);\\n this.destroyed = false;\\n }\\n destroy() {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.destroyed = true;\\n });\\n }\\n}\\nexports.DestroyableNoOpDeviceController = DestroyableNoOpDeviceController;\\n//# sourceMappingURL=NoOpDeviceController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/NoOpDeviceController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotFoundError.js\":\n/*!**********************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotFoundError.js ***!\n \\**********************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst GetUserMediaError_1 = __webpack_require__(/*! ./GetUserMediaError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\\\");\\nclass NotFoundError extends GetUserMediaError_1.default {\\n constructor(cause) {\\n super(cause);\\n }\\n}\\nexports[\\\"default\\\"] = NotFoundError;\\n//# sourceMappingURL=NotFoundError.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotFoundError.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotReadableError.js\":\n/*!*************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotReadableError.js ***!\n \\*************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst GetUserMediaError_1 = __webpack_require__(/*! ./GetUserMediaError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\\\");\\nclass NotReadableError extends GetUserMediaError_1.default {\\n constructor(cause) {\\n super(cause);\\n }\\n}\\nexports[\\\"default\\\"] = NotReadableError;\\n//# sourceMappingURL=NotReadableError.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotReadableError.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/OverconstrainedError.js\":\n/*!*****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/OverconstrainedError.js ***!\n \\*****************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst GetUserMediaError_1 = __webpack_require__(/*! ./GetUserMediaError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\\\");\\nclass OverconstrainedError extends GetUserMediaError_1.default {\\n constructor(cause, constraint) {\\n super(cause);\\n this.constraint = constraint;\\n }\\n}\\nexports[\\\"default\\\"] = OverconstrainedError;\\n//# sourceMappingURL=OverconstrainedError.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/OverconstrainedError.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/PermissionDeniedError.js\":\n/*!******************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/PermissionDeniedError.js ***!\n \\******************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst GetUserMediaError_1 = __webpack_require__(/*! ./GetUserMediaError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\\\");\\nclass PermissionDeniedError extends GetUserMediaError_1.default {\\n constructor(cause, message) {\\n super(cause, message);\\n }\\n}\\nexports[\\\"default\\\"] = PermissionDeniedError;\\n//# sourceMappingURL=PermissionDeniedError.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/PermissionDeniedError.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/SingleNodeAudioTransformDevice.js\":\n/*!***************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/SingleNodeAudioTransformDevice.js ***!\n \\***************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * This class simplifies the process of defining a transform device that\\n * does not modify its input device constraints, and provides only a single audio node\\n * to apply transforms.\\n *\\n * Subclass `SingleNodeAudioTransformDevice`, implementing `createSingleAudioNode`.\\n */\\nclass SingleNodeAudioTransformDevice {\\n constructor(inner) {\\n this.inner = inner;\\n }\\n mute(_muted) {\\n return __awaiter(this, void 0, void 0, function* () { });\\n }\\n /**\\n * `stop` should be called by the application to free any resources associated\\n * with the device (e.g., workers).\\n *\\n * After this is called, the device should be discarded.\\n */\\n stop() {\\n var _a;\\n return __awaiter(this, void 0, void 0, function* () {\\n (_a = this.node) === null || _a === void 0 ? void 0 : _a.disconnect();\\n });\\n }\\n /**\\n * Return the inner {@link Device} that the device controller should select as part\\n * of the application of this `AudioTransformDevice`.\\n */\\n intrinsicDevice() {\\n return __awaiter(this, void 0, void 0, function* () {\\n return this.inner;\\n });\\n }\\n /**\\n * Optionally return a pair of `AudioNode`s that should be connected to the applied inner\\n * device. The two nodes can be the same, indicating the smallest possible subgraph.\\n *\\n * @param context The `AudioContext` to use when instantiating the nodes.\\n */\\n createAudioNode(context) {\\n var _a;\\n return __awaiter(this, void 0, void 0, function* () {\\n (_a = this.node) === null || _a === void 0 ? void 0 : _a.disconnect();\\n this.node = yield this.createSingleAudioNode(context);\\n return {\\n start: this.node,\\n end: this.node,\\n };\\n });\\n }\\n}\\nexports[\\\"default\\\"] = SingleNodeAudioTransformDevice;\\n//# sourceMappingURL=SingleNodeAudioTransformDevice.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/SingleNodeAudioTransformDevice.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/TypeError.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/TypeError.js ***!\n \\******************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst GetUserMediaError_1 = __webpack_require__(/*! ./GetUserMediaError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\\\");\\nclass TypeError extends GetUserMediaError_1.default {\\n constructor(cause) {\\n super(cause);\\n }\\n}\\nexports[\\\"default\\\"] = TypeError;\\n//# sourceMappingURL=TypeError.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/TypeError.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoQualitySettings.js\":\n/*!*****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoQualitySettings.js ***!\n \\*****************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass VideoQualitySettings {\\n constructor(videoWidth, videoHeight, videoFrameRate, videoMaxBandwidthKbps) {\\n this.videoWidth = videoWidth;\\n this.videoHeight = videoHeight;\\n this.videoFrameRate = videoFrameRate;\\n this.videoMaxBandwidthKbps = videoMaxBandwidthKbps;\\n }\\n}\\nexports[\\\"default\\\"] = VideoQualitySettings;\\n//# sourceMappingURL=VideoQualitySettings.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoQualitySettings.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoTransformDevice.js\":\n/*!*****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoTransformDevice.js ***!\n \\*****************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.isVideoTransformDevice = void 0;\\n/**\\n * `isVideoTransformDevice` is a type guard for {@link VideoTransformDevice}.\\n *\\n * @param device the value to check.\\n */\\nfunction isVideoTransformDevice(device) {\\n return (!!device &&\\n typeof device === 'object' &&\\n 'transformStream' in device &&\\n 'stop' in device &&\\n 'intrinsicDevice' in device);\\n}\\nexports.isVideoTransformDevice = isVideoTransformDevice;\\n//# sourceMappingURL=VideoTransformDevice.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoTransformDevice.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicepixelratiomonitor/DefaultDevicePixelRatioMonitor.js\":\n/*!**********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicepixelratiomonitor/DefaultDevicePixelRatioMonitor.js ***!\n \\**********************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass DefaultDevicePixelRatioMonitor {\\n constructor(devicePixelRatioSource, logger) {\\n this.devicePixelRatioSource = devicePixelRatioSource;\\n this.observerQueue = new Set();\\n this.mediaQueryListener = () => {\\n this.observerQueue.forEach(tileObserver => {\\n tileObserver.devicePixelRatioChanged(this.devicePixelRatioSource.devicePixelRatio());\\n });\\n };\\n if (typeof window === 'undefined') {\\n return;\\n }\\n const mediaQueryList = matchMedia(`(resolution: ${this.devicePixelRatioSource.devicePixelRatio()}dppx)`);\\n if (typeof mediaQueryList.addEventListener === 'function') {\\n mediaQueryList.addEventListener('change', this.mediaQueryListener);\\n this.mediaQueryList = mediaQueryList;\\n }\\n else if (typeof mediaQueryList.addListener === 'function') {\\n mediaQueryList.addListener(this.mediaQueryListener);\\n this.mediaQueryList = mediaQueryList;\\n }\\n else {\\n logger.warn('ignoring DefaultDevicePixelRatioMonitor');\\n }\\n }\\n destroy() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (this.mediaQueryList) {\\n if (typeof this.mediaQueryList.addEventListener === 'function') {\\n this.mediaQueryList.removeEventListener('change', this.mediaQueryListener);\\n }\\n else {\\n this.mediaQueryList.removeListener(this.mediaQueryListener);\\n }\\n }\\n delete this.mediaQueryListener;\\n this.observerQueue.clear();\\n });\\n }\\n registerObserver(observer) {\\n this.observerQueue.add(observer);\\n observer.devicePixelRatioChanged(this.devicePixelRatioSource.devicePixelRatio());\\n }\\n removeObserver(observer) {\\n this.observerQueue.delete(observer);\\n }\\n}\\nexports[\\\"default\\\"] = DefaultDevicePixelRatioMonitor;\\n//# sourceMappingURL=DefaultDevicePixelRatioMonitor.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicepixelratiomonitor/DefaultDevicePixelRatioMonitor.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/devicepixelratiosource/DevicePixelRatioWindowSource.js\":\n/*!*******************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/devicepixelratiosource/DevicePixelRatioWindowSource.js ***!\n \\*******************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass DevicePixelRatioWindowSource {\\n devicePixelRatio() {\\n if (typeof window === 'undefined' || !window || !window.devicePixelRatio) {\\n return 1;\\n }\\n return window.devicePixelRatio;\\n }\\n}\\nexports[\\\"default\\\"] = DevicePixelRatioWindowSource;\\n//# sourceMappingURL=DevicePixelRatioWindowSource.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/devicepixelratiosource/DevicePixelRatioWindowSource.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/eventcontroller/DefaultEventController.js\":\n/*!******************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/eventcontroller/DefaultEventController.js ***!\n \\******************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst ua_parser_js_1 = __webpack_require__(/*! ua-parser-js */ \\\"./node_modules/ua-parser-js/src/ua-parser.js\\\");\\nconst Versioning_1 = __webpack_require__(/*! ../versioning/Versioning */ \\\"./node_modules/amazon-chime-sdk-js/build/versioning/Versioning.js\\\");\\nclass DefaultEventController {\\n constructor(audioVideoController) {\\n var _a, _b, _c, _d, _e, _f, _g;\\n this.audioVideoController = audioVideoController;\\n /** @internal */\\n this.meetingHistoryStates = [];\\n try {\\n this.parserResult =\\n navigator && navigator.userAgent ? new ua_parser_js_1.UAParser(navigator.userAgent).getResult() : null;\\n }\\n catch (error) {\\n audioVideoController.logger.error(error.message);\\n }\\n this.browserMajorVersion =\\n ((_c = (_b = (_a = this.parserResult) === null || _a === void 0 ? void 0 : _a.browser) === null || _b === void 0 ? void 0 : _b.version) === null || _c === void 0 ? void 0 : _c.split('.')[0]) || DefaultEventController.UNAVAILABLE;\\n this.browserName = ((_d = this.parserResult) === null || _d === void 0 ? void 0 : _d.browser.name) || DefaultEventController.UNAVAILABLE;\\n this.browserVersion = ((_e = this.parserResult) === null || _e === void 0 ? void 0 : _e.browser.version) || DefaultEventController.UNAVAILABLE;\\n this.deviceName =\\n [((_f = this.parserResult) === null || _f === void 0 ? void 0 : _f.device.vendor) || '', ((_g = this.parserResult) === null || _g === void 0 ? void 0 : _g.device.model) || '']\\n .join(' ')\\n .trim() || DefaultEventController.UNAVAILABLE;\\n }\\n publishEvent(name, attributes) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const timestampMs = Date.now();\\n yield this.pushMeetingState(name, timestampMs);\\n // Make a single frozen copy of the event, reusing the object returned by\\n // `getAttributes` to avoid copying too much.\\n const eventAttributes = Object.freeze(Object.assign(this.getAttributes(timestampMs), attributes));\\n this.audioVideoController.forEachObserver((observer) => {\\n if (observer.eventDidReceive) {\\n observer.eventDidReceive(name, eventAttributes);\\n }\\n });\\n });\\n }\\n pushMeetingState(state, timestampMs = Date.now()) {\\n return __awaiter(this, void 0, void 0, function* () {\\n this.meetingHistoryStates.push({\\n name: state,\\n timestampMs,\\n });\\n });\\n }\\n getAttributes(timestampMs) {\\n var _a, _b;\\n return {\\n attendeeId: this.audioVideoController.configuration.credentials.attendeeId,\\n browserMajorVersion: this.browserMajorVersion,\\n browserName: this.browserName,\\n browserVersion: this.browserVersion,\\n deviceName: this.deviceName,\\n externalMeetingId: typeof this.audioVideoController.configuration.externalMeetingId === 'string'\\n ? this.audioVideoController.configuration.externalMeetingId\\n : '',\\n externalUserId: this.audioVideoController.configuration.credentials.externalUserId,\\n meetingHistory: this.meetingHistoryStates,\\n meetingId: this.audioVideoController.configuration.meetingId,\\n osName: ((_a = this.parserResult) === null || _a === void 0 ? void 0 : _a.os.name) || DefaultEventController.UNAVAILABLE,\\n osVersion: ((_b = this.parserResult) === null || _b === void 0 ? void 0 : _b.os.version) || DefaultEventController.UNAVAILABLE,\\n sdkVersion: Versioning_1.default.sdkVersion,\\n sdkName: Versioning_1.default.sdkName,\\n timestampMs,\\n };\\n }\\n}\\nexports[\\\"default\\\"] = DefaultEventController;\\n/** @internal */\\nDefaultEventController.UNAVAILABLE = 'Unavailable';\\n//# sourceMappingURL=DefaultEventController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/eventcontroller/DefaultEventController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/index.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/index.js ***!\n \\*********************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.DefaultPingPong = exports.DefaultModality = exports.DefaultMessagingSession = exports.DefaultMeetingSession = exports.DefaultMeetingReadinessChecker = exports.DefaultMediaDeviceFactory = exports.DefaultEventController = exports.DefaultDevicePixelRatioMonitor = exports.DefaultDeviceController = exports.DefaultContentShareController = exports.DefaultClientMetricReport = exports.DefaultBrowserBehavior = exports.DefaultAudioVideoFacade = exports.DefaultAudioVideoController = exports.DefaultAudioMixController = exports.DefaultActiveSpeakerPolicy = exports.DefaultActiveSpeakerDetector = exports.DataMessage = exports.CreateSDPTask = exports.CreatePeerConnectionTask = exports.ContentShareMediaStreamBroker = exports.ContentShareConstants = exports.ConsoleLogger = exports.ConnectionHealthPolicyConfiguration = exports.ConnectionHealthData = exports.ClientVideoStreamReceivingReport = exports.ClientMetricReportMediaType = exports.ClientMetricReportDirection = exports.CleanStoppedSessionTask = exports.CleanRestartedSessionTask = exports.CheckVideoInputFeedback = exports.CheckVideoConnectivityFeedback = exports.CheckNetworkUDPConnectivityFeedback = exports.CheckNetworkTCPConnectivityFeedback = exports.CheckContentShareConnectivityFeedback = exports.CheckCameraResolutionFeedback = exports.CheckAudioOutputFeedback = exports.CheckAudioInputFeedback = exports.CheckAudioConnectivityFeedback = exports.CanvasVideoFrameBuffer = exports.BitrateParameters = exports.BaseTask = exports.BaseConnectionHealthPolicy = exports.AudioVideoControllerState = exports.AudioProfile = exports.AudioLogEvent = exports.Attendee = exports.AttachMediaInputTask = exports.AsyncScheduler = exports.AllHighestVideoBandwidthPolicy = void 0;\\nexports.MultiLogger = exports.MonitorTask = exports.MessagingSessionConfiguration = exports.Message = exports.MeetingSessionVideoAvailability = exports.MeetingSessionURLs = exports.MeetingSessionTURNCredentials = exports.MeetingSessionStatusCode = exports.MeetingSessionStatus = exports.MeetingSessionPOSTLogger = exports.MeetingSessionLifecycleEventCondition = exports.MeetingSessionLifecycleEvent = exports.MeetingSessionCredentials = exports.MeetingSessionConfiguration = exports.MeetingReadinessCheckerConfiguration = exports.MediaDeviceProxyHandler = exports.Maybe = exports.LogLevel = exports.Log = exports.ListenForVolumeIndicatorsTask = exports.LeaveAndReceiveLeaveAckTask = exports.JoinAndReceiveIndexTask = exports.IntervalScheduler = exports.GlobalMetricReport = exports.GetUserMediaError = exports.FullJitterLimitedBackoff = exports.FullJitterBackoffFactory = exports.FullJitterBackoff = exports.FinishGatheringICECandidatesTask = exports.DeviceSelection = exports.DevicePixelRatioWindowSource = exports.DefaultWebSocketAdapter = exports.DefaultVolumeIndicatorAdapter = exports.DefaultVideoTransformDevice = exports.DefaultVideoTileFactory = exports.DefaultVideoTileController = exports.DefaultVideoTile = exports.DefaultVideoStreamIndex = exports.DefaultVideoStreamIdSet = exports.DefaultVideoFrameProcessorPipeline = exports.DefaultVideoCaptureAndEncodeParameter = exports.DefaultTransceiverController = exports.DefaultStatsCollector = exports.DefaultSimulcastUplinkPolicy = exports.DefaultSignalingClient = exports.DefaultSigV4 = exports.DefaultSessionStateController = exports.DefaultSDP = exports.DefaultReconnectController = exports.DefaultRealtimeController = void 0;\\nexports.TaskStatus = exports.SubscribeAndReceiveSubscribeAckTask = exports.StreamMetricReport = exports.Some = exports.SingleNodeAudioTransformDevice = exports.SimulcastVideoStreamIndex = exports.SimulcastTransceiverController = exports.SimulcastLayers = exports.SignalingClientSubscribe = exports.SignalingClientJoin = exports.SignalingClientEventType = exports.SignalingClientEvent = exports.SignalingClientConnectionRequest = exports.SignalingAndMetricsConnectionMonitor = exports.SetRemoteDescriptionTask = exports.SetLocalDescriptionTask = exports.SessionStateControllerTransitionResult = exports.SessionStateControllerState = exports.SessionStateControllerDeferPriority = exports.SessionStateControllerAction = exports.SerialGroupTask = exports.SendAndReceiveDataMessagesTask = exports.SDPCandidateType = exports.RunnableTask = exports.ReconnectionHealthPolicy = exports.ReceiveVideoStreamIndexTask = exports.ReceiveVideoInputTask = exports.ReceiveTURNCredentialsTask = exports.ReceiveAudioInputTask = exports.RealtimeVolumeIndicator = exports.RealtimeState = exports.RealtimeAttendeePositionInFrame = exports.PermissionDeniedError = exports.ParallelGroupTask = exports.OverconstrainedError = exports.OpenSignalingConnectionTask = exports.NotReadableError = exports.NotFoundError = exports.None = exports.NoVideoUplinkBandwidthPolicy = exports.NoVideoDownlinkBandwidthPolicy = exports.NoOpVideoFrameProcessor = exports.NoOpVideoElementFactory = exports.NoOpTask = exports.NoOpMediaStreamBroker = exports.NoOpLogger = exports.NoOpDeviceController = exports.NoOpDebugLogger = exports.NoOpAudioVideoController = exports.NScaleVideoUplinkBandwidthPolicy = void 0;\\nexports.isVideoTransformDevice = exports.isDestroyable = exports.isAudioTransformDevice = exports.WebSocketReadyState = exports.WaitForAttendeePresenceTask = exports.VoiceFocusTransformDevice = exports.VoiceFocusDeviceTransformer = exports.VideoTileState = exports.VideoStreamDescription = exports.VideoSource = exports.VideoQualitySettings = exports.VideoLogEvent = exports.VideoAdaptiveProbePolicy = exports.Versioning = exports.UnusableAudioWarningConnectionHealthPolicy = exports.TypeError = exports.TimeoutTask = exports.TimeoutScheduler = void 0;\\nconst AllHighestVideoBandwidthPolicy_1 = __webpack_require__(/*! ./videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy.js\\\");\\nexports.AllHighestVideoBandwidthPolicy = AllHighestVideoBandwidthPolicy_1.default;\\nconst AsyncScheduler_1 = __webpack_require__(/*! ./scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nexports.AsyncScheduler = AsyncScheduler_1.default;\\nconst AttachMediaInputTask_1 = __webpack_require__(/*! ./task/AttachMediaInputTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/AttachMediaInputTask.js\\\");\\nexports.AttachMediaInputTask = AttachMediaInputTask_1.default;\\nconst Attendee_1 = __webpack_require__(/*! ./attendee/Attendee */ \\\"./node_modules/amazon-chime-sdk-js/build/attendee/Attendee.js\\\");\\nexports.Attendee = Attendee_1.default;\\nconst AudioLogEvent_1 = __webpack_require__(/*! ./statscollector/AudioLogEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/statscollector/AudioLogEvent.js\\\");\\nexports.AudioLogEvent = AudioLogEvent_1.default;\\nconst AudioProfile_1 = __webpack_require__(/*! ./audioprofile/AudioProfile */ \\\"./node_modules/amazon-chime-sdk-js/build/audioprofile/AudioProfile.js\\\");\\nexports.AudioProfile = AudioProfile_1.default;\\nconst AudioVideoControllerState_1 = __webpack_require__(/*! ./audiovideocontroller/AudioVideoControllerState */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/AudioVideoControllerState.js\\\");\\nexports.AudioVideoControllerState = AudioVideoControllerState_1.default;\\nconst BaseConnectionHealthPolicy_1 = __webpack_require__(/*! ./connectionhealthpolicy/BaseConnectionHealthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/BaseConnectionHealthPolicy.js\\\");\\nexports.BaseConnectionHealthPolicy = BaseConnectionHealthPolicy_1.default;\\nconst BaseTask_1 = __webpack_require__(/*! ./task/BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\nexports.BaseTask = BaseTask_1.default;\\nconst BitrateParameters_1 = __webpack_require__(/*! ./videouplinkbandwidthpolicy/BitrateParameters */ \\\"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/BitrateParameters.js\\\");\\nexports.BitrateParameters = BitrateParameters_1.default;\\nconst CanvasVideoFrameBuffer_1 = __webpack_require__(/*! ./videoframeprocessor/CanvasVideoFrameBuffer */ \\\"./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/CanvasVideoFrameBuffer.js\\\");\\nexports.CanvasVideoFrameBuffer = CanvasVideoFrameBuffer_1.default;\\nconst CheckAudioConnectivityFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckAudioConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioConnectivityFeedback.js\\\");\\nexports.CheckAudioConnectivityFeedback = CheckAudioConnectivityFeedback_1.default;\\nconst CheckAudioInputFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckAudioInputFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioInputFeedback.js\\\");\\nexports.CheckAudioInputFeedback = CheckAudioInputFeedback_1.default;\\nconst CheckAudioOutputFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckAudioOutputFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioOutputFeedback.js\\\");\\nexports.CheckAudioOutputFeedback = CheckAudioOutputFeedback_1.default;\\nconst CheckCameraResolutionFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckCameraResolutionFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckCameraResolutionFeedback.js\\\");\\nexports.CheckCameraResolutionFeedback = CheckCameraResolutionFeedback_1.default;\\nconst CheckContentShareConnectivityFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckContentShareConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckContentShareConnectivityFeedback.js\\\");\\nexports.CheckContentShareConnectivityFeedback = CheckContentShareConnectivityFeedback_1.default;\\nconst CheckNetworkTCPConnectivityFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckNetworkTCPConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkTCPConnectivityFeedback.js\\\");\\nexports.CheckNetworkTCPConnectivityFeedback = CheckNetworkTCPConnectivityFeedback_1.default;\\nconst CheckNetworkUDPConnectivityFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckNetworkUDPConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkUDPConnectivityFeedback.js\\\");\\nexports.CheckNetworkUDPConnectivityFeedback = CheckNetworkUDPConnectivityFeedback_1.default;\\nconst CheckVideoConnectivityFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckVideoConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoConnectivityFeedback.js\\\");\\nexports.CheckVideoConnectivityFeedback = CheckVideoConnectivityFeedback_1.default;\\nconst CheckVideoInputFeedback_1 = __webpack_require__(/*! ./meetingreadinesschecker/CheckVideoInputFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoInputFeedback.js\\\");\\nexports.CheckVideoInputFeedback = CheckVideoInputFeedback_1.default;\\nconst CleanRestartedSessionTask_1 = __webpack_require__(/*! ./task/CleanRestartedSessionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CleanRestartedSessionTask.js\\\");\\nexports.CleanRestartedSessionTask = CleanRestartedSessionTask_1.default;\\nconst CleanStoppedSessionTask_1 = __webpack_require__(/*! ./task/CleanStoppedSessionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CleanStoppedSessionTask.js\\\");\\nexports.CleanStoppedSessionTask = CleanStoppedSessionTask_1.default;\\nconst ClientMetricReportDirection_1 = __webpack_require__(/*! ./clientmetricreport/ClientMetricReportDirection */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportDirection.js\\\");\\nexports.ClientMetricReportDirection = ClientMetricReportDirection_1.default;\\nconst ClientMetricReportMediaType_1 = __webpack_require__(/*! ./clientmetricreport/ClientMetricReportMediaType */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientMetricReportMediaType.js\\\");\\nexports.ClientMetricReportMediaType = ClientMetricReportMediaType_1.default;\\nconst ClientVideoStreamReceivingReport_1 = __webpack_require__(/*! ./clientmetricreport/ClientVideoStreamReceivingReport */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/ClientVideoStreamReceivingReport.js\\\");\\nexports.ClientVideoStreamReceivingReport = ClientVideoStreamReceivingReport_1.default;\\nconst ConnectionHealthData_1 = __webpack_require__(/*! ./connectionhealthpolicy/ConnectionHealthData */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthData.js\\\");\\nexports.ConnectionHealthData = ConnectionHealthData_1.default;\\nconst ConnectionHealthPolicyConfiguration_1 = __webpack_require__(/*! ./connectionhealthpolicy/ConnectionHealthPolicyConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthPolicyConfiguration.js\\\");\\nexports.ConnectionHealthPolicyConfiguration = ConnectionHealthPolicyConfiguration_1.default;\\nconst ConsoleLogger_1 = __webpack_require__(/*! ./logger/ConsoleLogger */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/ConsoleLogger.js\\\");\\nexports.ConsoleLogger = ConsoleLogger_1.default;\\nconst ContentShareConstants_1 = __webpack_require__(/*! ./contentsharecontroller/ContentShareConstants */ \\\"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareConstants.js\\\");\\nexports.ContentShareConstants = ContentShareConstants_1.default;\\nconst ContentShareMediaStreamBroker_1 = __webpack_require__(/*! ./contentsharecontroller/ContentShareMediaStreamBroker */ \\\"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareMediaStreamBroker.js\\\");\\nexports.ContentShareMediaStreamBroker = ContentShareMediaStreamBroker_1.default;\\nconst CreatePeerConnectionTask_1 = __webpack_require__(/*! ./task/CreatePeerConnectionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CreatePeerConnectionTask.js\\\");\\nexports.CreatePeerConnectionTask = CreatePeerConnectionTask_1.default;\\nconst CreateSDPTask_1 = __webpack_require__(/*! ./task/CreateSDPTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/CreateSDPTask.js\\\");\\nexports.CreateSDPTask = CreateSDPTask_1.default;\\nconst DataMessage_1 = __webpack_require__(/*! ./datamessage/DataMessage */ \\\"./node_modules/amazon-chime-sdk-js/build/datamessage/DataMessage.js\\\");\\nexports.DataMessage = DataMessage_1.default;\\nconst DefaultActiveSpeakerDetector_1 = __webpack_require__(/*! ./activespeakerdetector/DefaultActiveSpeakerDetector */ \\\"./node_modules/amazon-chime-sdk-js/build/activespeakerdetector/DefaultActiveSpeakerDetector.js\\\");\\nexports.DefaultActiveSpeakerDetector = DefaultActiveSpeakerDetector_1.default;\\nconst DefaultActiveSpeakerPolicy_1 = __webpack_require__(/*! ./activespeakerpolicy/DefaultActiveSpeakerPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/activespeakerpolicy/DefaultActiveSpeakerPolicy.js\\\");\\nexports.DefaultActiveSpeakerPolicy = DefaultActiveSpeakerPolicy_1.default;\\nconst DefaultAudioMixController_1 = __webpack_require__(/*! ./audiomixcontroller/DefaultAudioMixController */ \\\"./node_modules/amazon-chime-sdk-js/build/audiomixcontroller/DefaultAudioMixController.js\\\");\\nexports.DefaultAudioMixController = DefaultAudioMixController_1.default;\\nconst DefaultAudioVideoController_1 = __webpack_require__(/*! ./audiovideocontroller/DefaultAudioVideoController */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/DefaultAudioVideoController.js\\\");\\nexports.DefaultAudioVideoController = DefaultAudioVideoController_1.default;\\nconst DefaultAudioVideoFacade_1 = __webpack_require__(/*! ./audiovideofacade/DefaultAudioVideoFacade */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideofacade/DefaultAudioVideoFacade.js\\\");\\nexports.DefaultAudioVideoFacade = DefaultAudioVideoFacade_1.default;\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ./browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nexports.DefaultBrowserBehavior = DefaultBrowserBehavior_1.default;\\nconst DefaultClientMetricReport_1 = __webpack_require__(/*! ./clientmetricreport/DefaultClientMetricReport */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/DefaultClientMetricReport.js\\\");\\nexports.DefaultClientMetricReport = DefaultClientMetricReport_1.default;\\nconst DefaultContentShareController_1 = __webpack_require__(/*! ./contentsharecontroller/DefaultContentShareController */ \\\"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/DefaultContentShareController.js\\\");\\nexports.DefaultContentShareController = DefaultContentShareController_1.default;\\nconst DefaultDeviceController_1 = __webpack_require__(/*! ./devicecontroller/DefaultDeviceController */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/DefaultDeviceController.js\\\");\\nexports.DefaultDeviceController = DefaultDeviceController_1.default;\\nconst DefaultDevicePixelRatioMonitor_1 = __webpack_require__(/*! ./devicepixelratiomonitor/DefaultDevicePixelRatioMonitor */ \\\"./node_modules/amazon-chime-sdk-js/build/devicepixelratiomonitor/DefaultDevicePixelRatioMonitor.js\\\");\\nexports.DefaultDevicePixelRatioMonitor = DefaultDevicePixelRatioMonitor_1.default;\\nconst DefaultEventController_1 = __webpack_require__(/*! ./eventcontroller/DefaultEventController */ \\\"./node_modules/amazon-chime-sdk-js/build/eventcontroller/DefaultEventController.js\\\");\\nexports.DefaultEventController = DefaultEventController_1.default;\\nconst DefaultMediaDeviceFactory_1 = __webpack_require__(/*! ./mediadevicefactory/DefaultMediaDeviceFactory */ \\\"./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/DefaultMediaDeviceFactory.js\\\");\\nexports.DefaultMediaDeviceFactory = DefaultMediaDeviceFactory_1.default;\\nconst DefaultMeetingReadinessChecker_1 = __webpack_require__(/*! ./meetingreadinesschecker/DefaultMeetingReadinessChecker */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/DefaultMeetingReadinessChecker.js\\\");\\nexports.DefaultMeetingReadinessChecker = DefaultMeetingReadinessChecker_1.default;\\nconst DefaultMeetingSession_1 = __webpack_require__(/*! ./meetingsession/DefaultMeetingSession */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/DefaultMeetingSession.js\\\");\\nexports.DefaultMeetingSession = DefaultMeetingSession_1.default;\\nconst DefaultMessagingSession_1 = __webpack_require__(/*! ./messagingsession/DefaultMessagingSession */ \\\"./node_modules/amazon-chime-sdk-js/build/messagingsession/DefaultMessagingSession.js\\\");\\nexports.DefaultMessagingSession = DefaultMessagingSession_1.default;\\nconst DefaultModality_1 = __webpack_require__(/*! ./modality/DefaultModality */ \\\"./node_modules/amazon-chime-sdk-js/build/modality/DefaultModality.js\\\");\\nexports.DefaultModality = DefaultModality_1.default;\\nconst DefaultPingPong_1 = __webpack_require__(/*! ./pingpong/DefaultPingPong */ \\\"./node_modules/amazon-chime-sdk-js/build/pingpong/DefaultPingPong.js\\\");\\nexports.DefaultPingPong = DefaultPingPong_1.default;\\nconst DefaultRealtimeController_1 = __webpack_require__(/*! ./realtimecontroller/DefaultRealtimeController */ \\\"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/DefaultRealtimeController.js\\\");\\nexports.DefaultRealtimeController = DefaultRealtimeController_1.default;\\nconst DefaultReconnectController_1 = __webpack_require__(/*! ./reconnectcontroller/DefaultReconnectController */ \\\"./node_modules/amazon-chime-sdk-js/build/reconnectcontroller/DefaultReconnectController.js\\\");\\nexports.DefaultReconnectController = DefaultReconnectController_1.default;\\nconst DefaultSDP_1 = __webpack_require__(/*! ./sdp/DefaultSDP */ \\\"./node_modules/amazon-chime-sdk-js/build/sdp/DefaultSDP.js\\\");\\nexports.DefaultSDP = DefaultSDP_1.default;\\nconst DefaultSessionStateController_1 = __webpack_require__(/*! ./sessionstatecontroller/DefaultSessionStateController */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/DefaultSessionStateController.js\\\");\\nexports.DefaultSessionStateController = DefaultSessionStateController_1.default;\\nconst DefaultSigV4_1 = __webpack_require__(/*! ./sigv4/DefaultSigV4 */ \\\"./node_modules/amazon-chime-sdk-js/build/sigv4/DefaultSigV4.js\\\");\\nexports.DefaultSigV4 = DefaultSigV4_1.default;\\nconst DefaultSignalingClient_1 = __webpack_require__(/*! ./signalingclient/DefaultSignalingClient */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/DefaultSignalingClient.js\\\");\\nexports.DefaultSignalingClient = DefaultSignalingClient_1.default;\\nconst DefaultSimulcastUplinkPolicy_1 = __webpack_require__(/*! ./videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicy.js\\\");\\nexports.DefaultSimulcastUplinkPolicy = DefaultSimulcastUplinkPolicy_1.default;\\nconst DefaultStatsCollector_1 = __webpack_require__(/*! ./statscollector/DefaultStatsCollector */ \\\"./node_modules/amazon-chime-sdk-js/build/statscollector/DefaultStatsCollector.js\\\");\\nexports.DefaultStatsCollector = DefaultStatsCollector_1.default;\\nconst DefaultTransceiverController_1 = __webpack_require__(/*! ./transceivercontroller/DefaultTransceiverController */ \\\"./node_modules/amazon-chime-sdk-js/build/transceivercontroller/DefaultTransceiverController.js\\\");\\nexports.DefaultTransceiverController = DefaultTransceiverController_1.default;\\nconst DefaultVideoCaptureAndEncodeParameter_1 = __webpack_require__(/*! ./videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter */ \\\"./node_modules/amazon-chime-sdk-js/build/videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter.js\\\");\\nexports.DefaultVideoCaptureAndEncodeParameter = DefaultVideoCaptureAndEncodeParameter_1.default;\\nconst DefaultVideoFrameProcessorPipeline_1 = __webpack_require__(/*! ./videoframeprocessor/DefaultVideoFrameProcessorPipeline */ \\\"./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/DefaultVideoFrameProcessorPipeline.js\\\");\\nexports.DefaultVideoFrameProcessorPipeline = DefaultVideoFrameProcessorPipeline_1.default;\\nconst DefaultVideoStreamIdSet_1 = __webpack_require__(/*! ./videostreamidset/DefaultVideoStreamIdSet */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamidset/DefaultVideoStreamIdSet.js\\\");\\nexports.DefaultVideoStreamIdSet = DefaultVideoStreamIdSet_1.default;\\nconst DefaultVideoStreamIndex_1 = __webpack_require__(/*! ./videostreamindex/DefaultVideoStreamIndex */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamindex/DefaultVideoStreamIndex.js\\\");\\nexports.DefaultVideoStreamIndex = DefaultVideoStreamIndex_1.default;\\nconst DefaultVideoTile_1 = __webpack_require__(/*! ./videotile/DefaultVideoTile */ \\\"./node_modules/amazon-chime-sdk-js/build/videotile/DefaultVideoTile.js\\\");\\nexports.DefaultVideoTile = DefaultVideoTile_1.default;\\nconst DefaultVideoTileController_1 = __webpack_require__(/*! ./videotilecontroller/DefaultVideoTileController */ \\\"./node_modules/amazon-chime-sdk-js/build/videotilecontroller/DefaultVideoTileController.js\\\");\\nexports.DefaultVideoTileController = DefaultVideoTileController_1.default;\\nconst DefaultVideoTileFactory_1 = __webpack_require__(/*! ./videotilefactory/DefaultVideoTileFactory */ \\\"./node_modules/amazon-chime-sdk-js/build/videotilefactory/DefaultVideoTileFactory.js\\\");\\nexports.DefaultVideoTileFactory = DefaultVideoTileFactory_1.default;\\nconst DefaultVideoTransformDevice_1 = __webpack_require__(/*! ./videoframeprocessor/DefaultVideoTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/DefaultVideoTransformDevice.js\\\");\\nexports.DefaultVideoTransformDevice = DefaultVideoTransformDevice_1.default;\\nconst DefaultVolumeIndicatorAdapter_1 = __webpack_require__(/*! ./volumeindicatoradapter/DefaultVolumeIndicatorAdapter */ \\\"./node_modules/amazon-chime-sdk-js/build/volumeindicatoradapter/DefaultVolumeIndicatorAdapter.js\\\");\\nexports.DefaultVolumeIndicatorAdapter = DefaultVolumeIndicatorAdapter_1.default;\\nconst DefaultWebSocketAdapter_1 = __webpack_require__(/*! ./websocketadapter/DefaultWebSocketAdapter */ \\\"./node_modules/amazon-chime-sdk-js/build/websocketadapter/DefaultWebSocketAdapter.js\\\");\\nexports.DefaultWebSocketAdapter = DefaultWebSocketAdapter_1.default;\\nconst DevicePixelRatioWindowSource_1 = __webpack_require__(/*! ./devicepixelratiosource/DevicePixelRatioWindowSource */ \\\"./node_modules/amazon-chime-sdk-js/build/devicepixelratiosource/DevicePixelRatioWindowSource.js\\\");\\nexports.DevicePixelRatioWindowSource = DevicePixelRatioWindowSource_1.default;\\nconst DeviceSelection_1 = __webpack_require__(/*! ./devicecontroller/DeviceSelection */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/DeviceSelection.js\\\");\\nexports.DeviceSelection = DeviceSelection_1.default;\\nconst FinishGatheringICECandidatesTask_1 = __webpack_require__(/*! ./task/FinishGatheringICECandidatesTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/FinishGatheringICECandidatesTask.js\\\");\\nexports.FinishGatheringICECandidatesTask = FinishGatheringICECandidatesTask_1.default;\\nconst FullJitterBackoff_1 = __webpack_require__(/*! ./backoff/FullJitterBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js\\\");\\nexports.FullJitterBackoff = FullJitterBackoff_1.default;\\nconst FullJitterBackoffFactory_1 = __webpack_require__(/*! ./backoff/FullJitterBackoffFactory */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoffFactory.js\\\");\\nexports.FullJitterBackoffFactory = FullJitterBackoffFactory_1.default;\\nconst FullJitterLimitedBackoff_1 = __webpack_require__(/*! ./backoff/FullJitterLimitedBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterLimitedBackoff.js\\\");\\nexports.FullJitterLimitedBackoff = FullJitterLimitedBackoff_1.default;\\nconst GetUserMediaError_1 = __webpack_require__(/*! ./devicecontroller/GetUserMediaError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/GetUserMediaError.js\\\");\\nexports.GetUserMediaError = GetUserMediaError_1.default;\\nconst GlobalMetricReport_1 = __webpack_require__(/*! ./clientmetricreport/GlobalMetricReport */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/GlobalMetricReport.js\\\");\\nexports.GlobalMetricReport = GlobalMetricReport_1.default;\\nconst IntervalScheduler_1 = __webpack_require__(/*! ./scheduler/IntervalScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js\\\");\\nexports.IntervalScheduler = IntervalScheduler_1.default;\\nconst JoinAndReceiveIndexTask_1 = __webpack_require__(/*! ./task/JoinAndReceiveIndexTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/JoinAndReceiveIndexTask.js\\\");\\nexports.JoinAndReceiveIndexTask = JoinAndReceiveIndexTask_1.default;\\nconst LeaveAndReceiveLeaveAckTask_1 = __webpack_require__(/*! ./task/LeaveAndReceiveLeaveAckTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/LeaveAndReceiveLeaveAckTask.js\\\");\\nexports.LeaveAndReceiveLeaveAckTask = LeaveAndReceiveLeaveAckTask_1.default;\\nconst ListenForVolumeIndicatorsTask_1 = __webpack_require__(/*! ./task/ListenForVolumeIndicatorsTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ListenForVolumeIndicatorsTask.js\\\");\\nexports.ListenForVolumeIndicatorsTask = ListenForVolumeIndicatorsTask_1.default;\\nconst Log_1 = __webpack_require__(/*! ./logger/Log */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/Log.js\\\");\\nexports.Log = Log_1.default;\\nconst LogLevel_1 = __webpack_require__(/*! ./logger/LogLevel */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js\\\");\\nexports.LogLevel = LogLevel_1.default;\\nconst Maybe_1 = __webpack_require__(/*! ./maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nexports.Maybe = Maybe_1.default;\\nconst MediaDeviceProxyHandler_1 = __webpack_require__(/*! ./mediadevicefactory/MediaDeviceProxyHandler */ \\\"./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/MediaDeviceProxyHandler.js\\\");\\nexports.MediaDeviceProxyHandler = MediaDeviceProxyHandler_1.default;\\nconst MeetingReadinessCheckerConfiguration_1 = __webpack_require__(/*! ./meetingreadinesschecker/MeetingReadinessCheckerConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/MeetingReadinessCheckerConfiguration.js\\\");\\nexports.MeetingReadinessCheckerConfiguration = MeetingReadinessCheckerConfiguration_1.default;\\nconst MeetingSessionConfiguration_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionConfiguration.js\\\");\\nexports.MeetingSessionConfiguration = MeetingSessionConfiguration_1.default;\\nconst MeetingSessionCredentials_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionCredentials */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionCredentials.js\\\");\\nexports.MeetingSessionCredentials = MeetingSessionCredentials_1.default;\\nconst MeetingSessionLifecycleEvent_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionLifecycleEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEvent.js\\\");\\nexports.MeetingSessionLifecycleEvent = MeetingSessionLifecycleEvent_1.default;\\nconst MeetingSessionLifecycleEventCondition_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionLifecycleEventCondition */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEventCondition.js\\\");\\nexports.MeetingSessionLifecycleEventCondition = MeetingSessionLifecycleEventCondition_1.default;\\nconst MeetingSessionPOSTLogger_1 = __webpack_require__(/*! ./logger/MeetingSessionPOSTLogger */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/MeetingSessionPOSTLogger.js\\\");\\nexports.MeetingSessionPOSTLogger = MeetingSessionPOSTLogger_1.default;\\nconst MeetingSessionStatus_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionStatus */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatus.js\\\");\\nexports.MeetingSessionStatus = MeetingSessionStatus_1.default;\\nconst MeetingSessionStatusCode_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionStatusCode */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js\\\");\\nexports.MeetingSessionStatusCode = MeetingSessionStatusCode_1.default;\\nconst MeetingSessionTURNCredentials_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionTURNCredentials */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionTURNCredentials.js\\\");\\nexports.MeetingSessionTURNCredentials = MeetingSessionTURNCredentials_1.default;\\nconst MeetingSessionURLs_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionURLs */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionURLs.js\\\");\\nexports.MeetingSessionURLs = MeetingSessionURLs_1.default;\\nconst MeetingSessionVideoAvailability_1 = __webpack_require__(/*! ./meetingsession/MeetingSessionVideoAvailability */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionVideoAvailability.js\\\");\\nexports.MeetingSessionVideoAvailability = MeetingSessionVideoAvailability_1.default;\\nconst Message_1 = __webpack_require__(/*! ./message/Message */ \\\"./node_modules/amazon-chime-sdk-js/build/message/Message.js\\\");\\nexports.Message = Message_1.default;\\nconst MessagingSessionConfiguration_1 = __webpack_require__(/*! ./messagingsession/MessagingSessionConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/messagingsession/MessagingSessionConfiguration.js\\\");\\nexports.MessagingSessionConfiguration = MessagingSessionConfiguration_1.default;\\nconst MonitorTask_1 = __webpack_require__(/*! ./task/MonitorTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/MonitorTask.js\\\");\\nexports.MonitorTask = MonitorTask_1.default;\\nconst MultiLogger_1 = __webpack_require__(/*! ./logger/MultiLogger */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/MultiLogger.js\\\");\\nexports.MultiLogger = MultiLogger_1.default;\\nconst NScaleVideoUplinkBandwidthPolicy_1 = __webpack_require__(/*! ./videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.js\\\");\\nexports.NScaleVideoUplinkBandwidthPolicy = NScaleVideoUplinkBandwidthPolicy_1.default;\\nconst NoOpAudioVideoController_1 = __webpack_require__(/*! ./audiovideocontroller/NoOpAudioVideoController */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/NoOpAudioVideoController.js\\\");\\nexports.NoOpAudioVideoController = NoOpAudioVideoController_1.default;\\nconst NoOpDebugLogger_1 = __webpack_require__(/*! ./logger/NoOpDebugLogger */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/NoOpDebugLogger.js\\\");\\nexports.NoOpDebugLogger = NoOpDebugLogger_1.default;\\nconst NoOpDeviceController_1 = __webpack_require__(/*! ./devicecontroller/NoOpDeviceController */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NoOpDeviceController.js\\\");\\nexports.NoOpDeviceController = NoOpDeviceController_1.default;\\nconst NoOpLogger_1 = __webpack_require__(/*! ./logger/NoOpLogger */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/NoOpLogger.js\\\");\\nexports.NoOpLogger = NoOpLogger_1.default;\\nconst NoOpMediaStreamBroker_1 = __webpack_require__(/*! ./mediastreambroker/NoOpMediaStreamBroker */ \\\"./node_modules/amazon-chime-sdk-js/build/mediastreambroker/NoOpMediaStreamBroker.js\\\");\\nexports.NoOpMediaStreamBroker = NoOpMediaStreamBroker_1.default;\\nconst NoOpTask_1 = __webpack_require__(/*! ./task/NoOpTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/NoOpTask.js\\\");\\nexports.NoOpTask = NoOpTask_1.default;\\nconst NoOpVideoElementFactory_1 = __webpack_require__(/*! ./videoelementfactory/NoOpVideoElementFactory */ \\\"./node_modules/amazon-chime-sdk-js/build/videoelementfactory/NoOpVideoElementFactory.js\\\");\\nexports.NoOpVideoElementFactory = NoOpVideoElementFactory_1.default;\\nconst NoOpVideoFrameProcessor_1 = __webpack_require__(/*! ./videoframeprocessor/NoOpVideoFrameProcessor */ \\\"./node_modules/amazon-chime-sdk-js/build/videoframeprocessor/NoOpVideoFrameProcessor.js\\\");\\nexports.NoOpVideoFrameProcessor = NoOpVideoFrameProcessor_1.default;\\nconst NoVideoDownlinkBandwidthPolicy_1 = __webpack_require__(/*! ./videodownlinkbandwidthpolicy/NoVideoDownlinkBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/NoVideoDownlinkBandwidthPolicy.js\\\");\\nexports.NoVideoDownlinkBandwidthPolicy = NoVideoDownlinkBandwidthPolicy_1.default;\\nconst NoVideoUplinkBandwidthPolicy_1 = __webpack_require__(/*! ./videouplinkbandwidthpolicy/NoVideoUplinkBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/NoVideoUplinkBandwidthPolicy.js\\\");\\nexports.NoVideoUplinkBandwidthPolicy = NoVideoUplinkBandwidthPolicy_1.default;\\nconst None_1 = __webpack_require__(/*! ./maybe/None */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/None.js\\\");\\nexports.None = None_1.default;\\nconst NotFoundError_1 = __webpack_require__(/*! ./devicecontroller/NotFoundError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotFoundError.js\\\");\\nexports.NotFoundError = NotFoundError_1.default;\\nconst NotReadableError_1 = __webpack_require__(/*! ./devicecontroller/NotReadableError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/NotReadableError.js\\\");\\nexports.NotReadableError = NotReadableError_1.default;\\nconst OpenSignalingConnectionTask_1 = __webpack_require__(/*! ./task/OpenSignalingConnectionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/OpenSignalingConnectionTask.js\\\");\\nexports.OpenSignalingConnectionTask = OpenSignalingConnectionTask_1.default;\\nconst OverconstrainedError_1 = __webpack_require__(/*! ./devicecontroller/OverconstrainedError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/OverconstrainedError.js\\\");\\nexports.OverconstrainedError = OverconstrainedError_1.default;\\nconst ParallelGroupTask_1 = __webpack_require__(/*! ./task/ParallelGroupTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ParallelGroupTask.js\\\");\\nexports.ParallelGroupTask = ParallelGroupTask_1.default;\\nconst PermissionDeniedError_1 = __webpack_require__(/*! ./devicecontroller/PermissionDeniedError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/PermissionDeniedError.js\\\");\\nexports.PermissionDeniedError = PermissionDeniedError_1.default;\\nconst RealtimeAttendeePositionInFrame_1 = __webpack_require__(/*! ./realtimecontroller/RealtimeAttendeePositionInFrame */ \\\"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeAttendeePositionInFrame.js\\\");\\nexports.RealtimeAttendeePositionInFrame = RealtimeAttendeePositionInFrame_1.default;\\nconst RealtimeState_1 = __webpack_require__(/*! ./realtimecontroller/RealtimeState */ \\\"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeState.js\\\");\\nexports.RealtimeState = RealtimeState_1.default;\\nconst RealtimeVolumeIndicator_1 = __webpack_require__(/*! ./realtimecontroller/RealtimeVolumeIndicator */ \\\"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeVolumeIndicator.js\\\");\\nexports.RealtimeVolumeIndicator = RealtimeVolumeIndicator_1.default;\\nconst ReceiveAudioInputTask_1 = __webpack_require__(/*! ./task/ReceiveAudioInputTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveAudioInputTask.js\\\");\\nexports.ReceiveAudioInputTask = ReceiveAudioInputTask_1.default;\\nconst ReceiveTURNCredentialsTask_1 = __webpack_require__(/*! ./task/ReceiveTURNCredentialsTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveTURNCredentialsTask.js\\\");\\nexports.ReceiveTURNCredentialsTask = ReceiveTURNCredentialsTask_1.default;\\nconst ReceiveVideoInputTask_1 = __webpack_require__(/*! ./task/ReceiveVideoInputTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveVideoInputTask.js\\\");\\nexports.ReceiveVideoInputTask = ReceiveVideoInputTask_1.default;\\nconst ReceiveVideoStreamIndexTask_1 = __webpack_require__(/*! ./task/ReceiveVideoStreamIndexTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/ReceiveVideoStreamIndexTask.js\\\");\\nexports.ReceiveVideoStreamIndexTask = ReceiveVideoStreamIndexTask_1.default;\\nconst ReconnectionHealthPolicy_1 = __webpack_require__(/*! ./connectionhealthpolicy/ReconnectionHealthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ReconnectionHealthPolicy.js\\\");\\nexports.ReconnectionHealthPolicy = ReconnectionHealthPolicy_1.default;\\nconst RunnableTask_1 = __webpack_require__(/*! ./task/RunnableTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/RunnableTask.js\\\");\\nexports.RunnableTask = RunnableTask_1.default;\\nconst SDPCandidateType_1 = __webpack_require__(/*! ./sdp/SDPCandidateType */ \\\"./node_modules/amazon-chime-sdk-js/build/sdp/SDPCandidateType.js\\\");\\nexports.SDPCandidateType = SDPCandidateType_1.default;\\nconst SendAndReceiveDataMessagesTask_1 = __webpack_require__(/*! ./task/SendAndReceiveDataMessagesTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SendAndReceiveDataMessagesTask.js\\\");\\nexports.SendAndReceiveDataMessagesTask = SendAndReceiveDataMessagesTask_1.default;\\nconst SerialGroupTask_1 = __webpack_require__(/*! ./task/SerialGroupTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SerialGroupTask.js\\\");\\nexports.SerialGroupTask = SerialGroupTask_1.default;\\nconst SessionStateControllerAction_1 = __webpack_require__(/*! ./sessionstatecontroller/SessionStateControllerAction */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerAction.js\\\");\\nexports.SessionStateControllerAction = SessionStateControllerAction_1.default;\\nconst SessionStateControllerDeferPriority_1 = __webpack_require__(/*! ./sessionstatecontroller/SessionStateControllerDeferPriority */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerDeferPriority.js\\\");\\nexports.SessionStateControllerDeferPriority = SessionStateControllerDeferPriority_1.default;\\nconst SessionStateControllerState_1 = __webpack_require__(/*! ./sessionstatecontroller/SessionStateControllerState */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerState.js\\\");\\nexports.SessionStateControllerState = SessionStateControllerState_1.default;\\nconst SessionStateControllerTransitionResult_1 = __webpack_require__(/*! ./sessionstatecontroller/SessionStateControllerTransitionResult */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerTransitionResult.js\\\");\\nexports.SessionStateControllerTransitionResult = SessionStateControllerTransitionResult_1.default;\\nconst SetLocalDescriptionTask_1 = __webpack_require__(/*! ./task/SetLocalDescriptionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SetLocalDescriptionTask.js\\\");\\nexports.SetLocalDescriptionTask = SetLocalDescriptionTask_1.default;\\nconst SetRemoteDescriptionTask_1 = __webpack_require__(/*! ./task/SetRemoteDescriptionTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SetRemoteDescriptionTask.js\\\");\\nexports.SetRemoteDescriptionTask = SetRemoteDescriptionTask_1.default;\\nconst SignalingAndMetricsConnectionMonitor_1 = __webpack_require__(/*! ./connectionmonitor/SignalingAndMetricsConnectionMonitor */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionmonitor/SignalingAndMetricsConnectionMonitor.js\\\");\\nexports.SignalingAndMetricsConnectionMonitor = SignalingAndMetricsConnectionMonitor_1.default;\\nconst SignalingClientConnectionRequest_1 = __webpack_require__(/*! ./signalingclient/SignalingClientConnectionRequest */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientConnectionRequest.js\\\");\\nexports.SignalingClientConnectionRequest = SignalingClientConnectionRequest_1.default;\\nconst SignalingClientEvent_1 = __webpack_require__(/*! ./signalingclient/SignalingClientEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEvent.js\\\");\\nexports.SignalingClientEvent = SignalingClientEvent_1.default;\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ./signalingclient/SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\nexports.SignalingClientEventType = SignalingClientEventType_1.default;\\nconst SignalingClientJoin_1 = __webpack_require__(/*! ./signalingclient/SignalingClientJoin */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientJoin.js\\\");\\nexports.SignalingClientJoin = SignalingClientJoin_1.default;\\nconst SignalingClientSubscribe_1 = __webpack_require__(/*! ./signalingclient/SignalingClientSubscribe */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientSubscribe.js\\\");\\nexports.SignalingClientSubscribe = SignalingClientSubscribe_1.default;\\nconst SimulcastLayers_1 = __webpack_require__(/*! ./simulcastlayers/SimulcastLayers */ \\\"./node_modules/amazon-chime-sdk-js/build/simulcastlayers/SimulcastLayers.js\\\");\\nexports.SimulcastLayers = SimulcastLayers_1.default;\\nconst SimulcastTransceiverController_1 = __webpack_require__(/*! ./transceivercontroller/SimulcastTransceiverController */ \\\"./node_modules/amazon-chime-sdk-js/build/transceivercontroller/SimulcastTransceiverController.js\\\");\\nexports.SimulcastTransceiverController = SimulcastTransceiverController_1.default;\\nconst SimulcastVideoStreamIndex_1 = __webpack_require__(/*! ./videostreamindex/SimulcastVideoStreamIndex */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamindex/SimulcastVideoStreamIndex.js\\\");\\nexports.SimulcastVideoStreamIndex = SimulcastVideoStreamIndex_1.default;\\nconst SingleNodeAudioTransformDevice_1 = __webpack_require__(/*! ./devicecontroller/SingleNodeAudioTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/SingleNodeAudioTransformDevice.js\\\");\\nexports.SingleNodeAudioTransformDevice = SingleNodeAudioTransformDevice_1.default;\\nconst Some_1 = __webpack_require__(/*! ./maybe/Some */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Some.js\\\");\\nexports.Some = Some_1.default;\\nconst StreamMetricReport_1 = __webpack_require__(/*! ./clientmetricreport/StreamMetricReport */ \\\"./node_modules/amazon-chime-sdk-js/build/clientmetricreport/StreamMetricReport.js\\\");\\nexports.StreamMetricReport = StreamMetricReport_1.default;\\nconst SubscribeAndReceiveSubscribeAckTask_1 = __webpack_require__(/*! ./task/SubscribeAndReceiveSubscribeAckTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/SubscribeAndReceiveSubscribeAckTask.js\\\");\\nexports.SubscribeAndReceiveSubscribeAckTask = SubscribeAndReceiveSubscribeAckTask_1.default;\\nconst TaskStatus_1 = __webpack_require__(/*! ./task/TaskStatus */ \\\"./node_modules/amazon-chime-sdk-js/build/task/TaskStatus.js\\\");\\nexports.TaskStatus = TaskStatus_1.default;\\nconst TimeoutScheduler_1 = __webpack_require__(/*! ./scheduler/TimeoutScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/TimeoutScheduler.js\\\");\\nexports.TimeoutScheduler = TimeoutScheduler_1.default;\\nconst TimeoutTask_1 = __webpack_require__(/*! ./task/TimeoutTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/TimeoutTask.js\\\");\\nexports.TimeoutTask = TimeoutTask_1.default;\\nconst TypeError_1 = __webpack_require__(/*! ./devicecontroller/TypeError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/TypeError.js\\\");\\nexports.TypeError = TypeError_1.default;\\nconst UnusableAudioWarningConnectionHealthPolicy_1 = __webpack_require__(/*! ./connectionhealthpolicy/UnusableAudioWarningConnectionHealthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/UnusableAudioWarningConnectionHealthPolicy.js\\\");\\nexports.UnusableAudioWarningConnectionHealthPolicy = UnusableAudioWarningConnectionHealthPolicy_1.default;\\nconst Versioning_1 = __webpack_require__(/*! ./versioning/Versioning */ \\\"./node_modules/amazon-chime-sdk-js/build/versioning/Versioning.js\\\");\\nexports.Versioning = Versioning_1.default;\\nconst VideoAdaptiveProbePolicy_1 = __webpack_require__(/*! ./videodownlinkbandwidthpolicy/VideoAdaptiveProbePolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/VideoAdaptiveProbePolicy.js\\\");\\nexports.VideoAdaptiveProbePolicy = VideoAdaptiveProbePolicy_1.default;\\nconst VideoLogEvent_1 = __webpack_require__(/*! ./statscollector/VideoLogEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/statscollector/VideoLogEvent.js\\\");\\nexports.VideoLogEvent = VideoLogEvent_1.default;\\nconst VideoQualitySettings_1 = __webpack_require__(/*! ./devicecontroller/VideoQualitySettings */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoQualitySettings.js\\\");\\nexports.VideoQualitySettings = VideoQualitySettings_1.default;\\nconst VideoSource_1 = __webpack_require__(/*! ./videosource/VideoSource */ \\\"./node_modules/amazon-chime-sdk-js/build/videosource/VideoSource.js\\\");\\nexports.VideoSource = VideoSource_1.default;\\nconst VideoStreamDescription_1 = __webpack_require__(/*! ./videostreamindex/VideoStreamDescription */ \\\"./node_modules/amazon-chime-sdk-js/build/videostreamindex/VideoStreamDescription.js\\\");\\nexports.VideoStreamDescription = VideoStreamDescription_1.default;\\nconst VideoTileState_1 = __webpack_require__(/*! ./videotile/VideoTileState */ \\\"./node_modules/amazon-chime-sdk-js/build/videotile/VideoTileState.js\\\");\\nexports.VideoTileState = VideoTileState_1.default;\\nconst VoiceFocusDeviceTransformer_1 = __webpack_require__(/*! ./voicefocus/VoiceFocusDeviceTransformer */ \\\"./node_modules/amazon-chime-sdk-js/build/voicefocus/VoiceFocusDeviceTransformer.js\\\");\\nexports.VoiceFocusDeviceTransformer = VoiceFocusDeviceTransformer_1.default;\\nconst VoiceFocusTransformDevice_1 = __webpack_require__(/*! ./voicefocus/VoiceFocusTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/voicefocus/VoiceFocusTransformDevice.js\\\");\\nexports.VoiceFocusTransformDevice = VoiceFocusTransformDevice_1.default;\\nconst WaitForAttendeePresenceTask_1 = __webpack_require__(/*! ./task/WaitForAttendeePresenceTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/WaitForAttendeePresenceTask.js\\\");\\nexports.WaitForAttendeePresenceTask = WaitForAttendeePresenceTask_1.default;\\nconst WebSocketReadyState_1 = __webpack_require__(/*! ./websocketadapter/WebSocketReadyState */ \\\"./node_modules/amazon-chime-sdk-js/build/websocketadapter/WebSocketReadyState.js\\\");\\nexports.WebSocketReadyState = WebSocketReadyState_1.default;\\nconst AudioTransformDevice_1 = __webpack_require__(/*! ./devicecontroller/AudioTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/AudioTransformDevice.js\\\");\\nObject.defineProperty(exports, \\\"isAudioTransformDevice\\\", ({ enumerable: true, get: function () { return AudioTransformDevice_1.isAudioTransformDevice; } }));\\nconst Destroyable_1 = __webpack_require__(/*! ./destroyable/Destroyable */ \\\"./node_modules/amazon-chime-sdk-js/build/destroyable/Destroyable.js\\\");\\nObject.defineProperty(exports, \\\"isDestroyable\\\", ({ enumerable: true, get: function () { return Destroyable_1.isDestroyable; } }));\\nconst VideoTransformDevice_1 = __webpack_require__(/*! ./devicecontroller/VideoTransformDevice */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/VideoTransformDevice.js\\\");\\nObject.defineProperty(exports, \\\"isVideoTransformDevice\\\", ({ enumerable: true, get: function () { return VideoTransformDevice_1.isVideoTransformDevice; } }));\\n//# sourceMappingURL=index.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/logger/ConsoleLogger.js\":\n/*!************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/logger/ConsoleLogger.js ***!\n \\************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst LogLevel_1 = __webpack_require__(/*! ./LogLevel */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js\\\");\\n/**\\n * ConsoleLogger writes logs with console\\n *\\n * ```typescript\\n * // working with the ConsoleLogger\\n * const logger = new ConsoleLogger('demo'); //default level is LogLevel.WARN\\n * logger.info('info');\\n * logger.debug('debug');\\n * logger.warn('warn');\\n * logger.error('error');\\n *\\n * // setting logging levels\\n * const logger = new ConsoleLogger('demo', LogLevel.INFO)\\n * logger.debug(debugFunc()); // this will not show up\\n * logger.setLogLevel(LogLevel.DEBUG)\\n * logger.debug(debugFunc()); // this will show up\\n *\\n * ```\\n */\\nclass ConsoleLogger {\\n constructor(name, level = LogLevel_1.default.WARN) {\\n this.name = name;\\n this.level = level;\\n }\\n info(msg) {\\n this.log(LogLevel_1.default.INFO, msg);\\n }\\n warn(msg) {\\n this.log(LogLevel_1.default.WARN, msg);\\n }\\n error(msg) {\\n this.log(LogLevel_1.default.ERROR, msg);\\n }\\n debug(debugFunction) {\\n if (LogLevel_1.default.DEBUG < this.level) {\\n return;\\n }\\n if (typeof debugFunction === 'string') {\\n this.log(LogLevel_1.default.DEBUG, debugFunction);\\n }\\n else if (debugFunction) {\\n this.log(LogLevel_1.default.DEBUG, debugFunction());\\n }\\n else {\\n this.log(LogLevel_1.default.DEBUG, '' + debugFunction);\\n }\\n }\\n setLogLevel(level) {\\n this.level = level;\\n }\\n getLogLevel() {\\n return this.level;\\n }\\n log(type, msg) {\\n if (type < this.level) {\\n return;\\n }\\n const timestamp = new Date().toISOString();\\n const logMessage = `${timestamp} [${LogLevel_1.default[type]}] ${this.name} - ${msg}`;\\n switch (type) {\\n case LogLevel_1.default.ERROR:\\n console.error(logMessage);\\n break;\\n case LogLevel_1.default.WARN:\\n console.warn(logMessage);\\n break;\\n case LogLevel_1.default.DEBUG:\\n console.debug(logMessage.replace(/\\\\\\\\r\\\\\\\\n/g, '\\\\n'));\\n break;\\n case LogLevel_1.default.INFO:\\n console.info(logMessage);\\n break;\\n }\\n }\\n}\\nexports[\\\"default\\\"] = ConsoleLogger;\\n//# sourceMappingURL=ConsoleLogger.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/logger/ConsoleLogger.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/logger/Log.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/logger/Log.js ***!\n \\**************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass Log {\\n constructor(sequenceNumber, message, timestampMs, logLevel) {\\n this.sequenceNumber = sequenceNumber;\\n this.message = message;\\n this.timestampMs = timestampMs;\\n this.logLevel = logLevel;\\n }\\n}\\nexports[\\\"default\\\"] = Log;\\n//# sourceMappingURL=Log.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/logger/Log.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js ***!\n \\*******************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.LogLevel = void 0;\\nvar LogLevel;\\n(function (LogLevel) {\\n LogLevel[LogLevel[\\\"DEBUG\\\"] = 0] = \\\"DEBUG\\\";\\n LogLevel[LogLevel[\\\"INFO\\\"] = 1] = \\\"INFO\\\";\\n LogLevel[LogLevel[\\\"WARN\\\"] = 2] = \\\"WARN\\\";\\n LogLevel[LogLevel[\\\"ERROR\\\"] = 3] = \\\"ERROR\\\";\\n LogLevel[LogLevel[\\\"OFF\\\"] = 4] = \\\"OFF\\\";\\n})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));\\nexports[\\\"default\\\"] = LogLevel;\\n//# sourceMappingURL=LogLevel.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/logger/MeetingSessionPOSTLogger.js\":\n/*!***********************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/logger/MeetingSessionPOSTLogger.js ***!\n \\***********************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst LogLevel_1 = __webpack_require__(/*! ../logger/LogLevel */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js\\\");\\nconst IntervalScheduler_1 = __webpack_require__(/*! ../scheduler/IntervalScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js\\\");\\nconst Log_1 = __webpack_require__(/*! ./Log */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/Log.js\\\");\\n/**\\n * `MeetingSessionPOSTLogger` publishes log messages in batches to a URL\\n * supplied during its construction.\\n *\\n * Be sure to call {@link MeetingSessionPOSTLogger.dispose} when you're done\\n * with the logger in order to avoid leaks.\\n */\\nclass MeetingSessionPOSTLogger {\\n constructor(name, configuration, batchSize, intervalMs, url, level = LogLevel_1.default.WARN) {\\n this.name = name;\\n this.configuration = configuration;\\n this.batchSize = batchSize;\\n this.intervalMs = intervalMs;\\n this.url = url;\\n this.level = level;\\n this.logCapture = [];\\n this.sequenceNumber = 0;\\n this.lock = false;\\n this.startLogPublishScheduler(this.batchSize);\\n this.eventListener = () => {\\n this.stop();\\n };\\n this.addEventListener();\\n }\\n addEventListener() {\\n if (!this.eventListener || !('window' in __webpack_require__.g) || !window.addEventListener) {\\n return;\\n }\\n window.addEventListener('unload', this.eventListener);\\n }\\n removeEventListener() {\\n if (!this.eventListener || !('window' in __webpack_require__.g) || !window.removeEventListener) {\\n return;\\n }\\n window.removeEventListener('unload', this.eventListener);\\n }\\n debug(debugFunction) {\\n if (LogLevel_1.default.DEBUG < this.level) {\\n return;\\n }\\n if (typeof debugFunction === 'string') {\\n this.log(LogLevel_1.default.DEBUG, debugFunction);\\n }\\n else if (debugFunction) {\\n this.log(LogLevel_1.default.DEBUG, debugFunction());\\n }\\n else {\\n this.log(LogLevel_1.default.DEBUG, '' + debugFunction);\\n }\\n }\\n info(msg) {\\n this.log(LogLevel_1.default.INFO, msg);\\n }\\n warn(msg) {\\n this.log(LogLevel_1.default.WARN, msg);\\n }\\n error(msg) {\\n this.log(LogLevel_1.default.ERROR, msg);\\n }\\n setLogLevel(level) {\\n this.level = level;\\n }\\n getLogLevel() {\\n return this.level;\\n }\\n getLogCaptureSize() {\\n return this.logCapture.length;\\n }\\n startLogPublishScheduler(batchSize) {\\n var _a;\\n this.addEventListener();\\n (_a = this.intervalScheduler) === null || _a === void 0 ? void 0 : _a.stop();\\n this.intervalScheduler = new IntervalScheduler_1.default(this.intervalMs);\\n this.intervalScheduler.start(() => __awaiter(this, void 0, void 0, function* () {\\n if (this.lock === true || this.getLogCaptureSize() === 0) {\\n return;\\n }\\n this.lock = true;\\n const batch = this.logCapture.slice(0, batchSize);\\n const body = this.makeRequestBody(batch);\\n try {\\n const response = yield fetch(this.url, {\\n method: 'POST',\\n body,\\n });\\n if (response.status === 200) {\\n this.logCapture = this.logCapture.slice(batch.length);\\n }\\n }\\n catch (error) {\\n console.warn('[MeetingSessionPOSTLogger] ' + error.message);\\n }\\n finally {\\n this.lock = false;\\n }\\n }));\\n }\\n stop() {\\n var _a;\\n // Clean up to avoid resource leaks.\\n (_a = this.intervalScheduler) === null || _a === void 0 ? void 0 : _a.stop();\\n this.intervalScheduler = undefined;\\n this.removeEventListener();\\n const body = this.makeRequestBody(this.logCapture);\\n navigator.sendBeacon(this.url, body);\\n }\\n /**\\n * Permanently clean up the logger. A new logger must be created to\\n * resume logging.\\n */\\n destroy() {\\n var _a;\\n return __awaiter(this, void 0, void 0, function* () {\\n (_a = this.intervalScheduler) === null || _a === void 0 ? void 0 : _a.stop();\\n this.intervalScheduler = undefined;\\n this.removeEventListener();\\n this.configuration = undefined;\\n this.logCapture = [];\\n });\\n }\\n makeRequestBody(batch) {\\n return JSON.stringify({\\n meetingId: this.configuration.meetingId,\\n attendeeId: this.configuration.credentials.attendeeId,\\n appName: this.name,\\n logs: batch,\\n });\\n }\\n log(type, msg) {\\n if (type < this.level) {\\n return;\\n }\\n const now = Date.now();\\n // Handle undefined.\\n this.logCapture.push(new Log_1.default(this.sequenceNumber, msg, now, LogLevel_1.default[type]));\\n this.sequenceNumber += 1;\\n }\\n}\\nexports[\\\"default\\\"] = MeetingSessionPOSTLogger;\\n//# sourceMappingURL=MeetingSessionPOSTLogger.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/logger/MeetingSessionPOSTLogger.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/logger/MultiLogger.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/logger/MultiLogger.js ***!\n \\**********************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst LogLevel_1 = __webpack_require__(/*! ./LogLevel */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js\\\");\\n/**\\n * MultiLogger writes logs to multiple other loggers\\n */\\nclass MultiLogger {\\n constructor(...loggers) {\\n this._loggers = loggers;\\n }\\n info(msg) {\\n for (const logger of this._loggers) {\\n logger.info(msg);\\n }\\n }\\n warn(msg) {\\n for (const logger of this._loggers) {\\n logger.warn(msg);\\n }\\n }\\n error(msg) {\\n for (const logger of this._loggers) {\\n logger.error(msg);\\n }\\n }\\n debug(debugFunction) {\\n let message;\\n let memoized;\\n if (typeof debugFunction === 'string') {\\n memoized = debugFunction;\\n }\\n else if (debugFunction) {\\n memoized = () => {\\n if (!message) {\\n message = debugFunction();\\n }\\n return message;\\n };\\n }\\n else {\\n memoized = '' + debugFunction;\\n }\\n for (const logger of this._loggers) {\\n logger.debug(memoized);\\n }\\n }\\n setLogLevel(level) {\\n for (const logger of this._loggers) {\\n logger.setLogLevel(level);\\n }\\n }\\n getLogLevel() {\\n for (const logger of this._loggers) {\\n return logger.getLogLevel();\\n }\\n return LogLevel_1.default.OFF;\\n }\\n}\\nexports[\\\"default\\\"] = MultiLogger;\\n//# sourceMappingURL=MultiLogger.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/logger/MultiLogger.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/logger/NoOpDebugLogger.js\":\n/*!**************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/logger/NoOpDebugLogger.js ***!\n \\**************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst LogLevel_1 = __webpack_require__(/*! ./LogLevel */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js\\\");\\nconst NoOpLogger_1 = __webpack_require__(/*! ./NoOpLogger */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/NoOpLogger.js\\\");\\n/**\\n * [[NoOpDebugLogger]] does not log any message but does call\\n * debug functions by default.\\n */\\nclass NoOpDebugLogger extends NoOpLogger_1.default {\\n constructor() {\\n super(LogLevel_1.default.DEBUG);\\n }\\n}\\nexports[\\\"default\\\"] = NoOpDebugLogger;\\n//# sourceMappingURL=NoOpDebugLogger.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/logger/NoOpDebugLogger.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/logger/NoOpLogger.js\":\n/*!*********************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/logger/NoOpLogger.js ***!\n \\*********************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst LogLevel_1 = __webpack_require__(/*! ./LogLevel */ \\\"./node_modules/amazon-chime-sdk-js/build/logger/LogLevel.js\\\");\\n/**\\n * [[NoOpLogger]] does not log any message.\\n */\\nclass NoOpLogger {\\n constructor(level = LogLevel_1.default.OFF) {\\n this.level = level;\\n }\\n info(_msg) { }\\n warn(_msg) { }\\n error(_msg) { }\\n debug(debugFunction) {\\n if (LogLevel_1.default.DEBUG < this.level) {\\n return;\\n }\\n if (typeof debugFunction !== 'string') {\\n debugFunction();\\n }\\n }\\n setLogLevel(level) {\\n this.level = level;\\n }\\n getLogLevel() {\\n return this.level;\\n }\\n}\\nexports[\\\"default\\\"] = NoOpLogger;\\n//# sourceMappingURL=NoOpLogger.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/logger/NoOpLogger.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js ***!\n \\***************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst None_1 = __webpack_require__(/*! ./None */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/None.js\\\");\\nconst Some_1 = __webpack_require__(/*! ./Some */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Some.js\\\");\\nclass Maybe {\\n static of(value) {\\n return value === undefined || value === null ? None_1.default.of() : Some_1.default.of(value);\\n }\\n}\\nexports[\\\"default\\\"] = Maybe;\\n//# sourceMappingURL=Maybe.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/maybe/None.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/maybe/None.js ***!\n \\**************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst Maybe_1 = __webpack_require__(/*! ./Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nclass None {\\n constructor() {\\n this.isSome = false;\\n this.isNone = true;\\n }\\n get() {\\n throw new Error('value is null');\\n }\\n getOrElse(value) {\\n return value;\\n }\\n map(_f) {\\n return new None();\\n }\\n flatMap(_f) {\\n return new None();\\n }\\n defaulting(value) {\\n return Maybe_1.default.of(this.getOrElse(value));\\n }\\n static of() {\\n return new None();\\n }\\n}\\nexports[\\\"default\\\"] = None;\\n//# sourceMappingURL=None.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/maybe/None.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/maybe/Some.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/maybe/Some.js ***!\n \\**************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst Maybe_1 = __webpack_require__(/*! ./Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nclass Some {\\n constructor(value) {\\n this.value = value;\\n this.isSome = true;\\n this.isNone = false;\\n }\\n map(f) {\\n return Maybe_1.default.of(f(this.value));\\n }\\n flatMap(f) {\\n return f(this.value);\\n }\\n get() {\\n return this.value;\\n }\\n getOrElse(_value) {\\n return this.value;\\n }\\n defaulting(value) {\\n return Maybe_1.default.of(this.getOrElse(value));\\n }\\n static of(value) {\\n if (value === null || value === undefined) {\\n throw new Error('value is ${value}');\\n }\\n return new Some(value);\\n }\\n}\\nexports[\\\"default\\\"] = Some;\\n//# sourceMappingURL=Some.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/maybe/Some.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/DefaultMediaDeviceFactory.js\":\n/*!************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/DefaultMediaDeviceFactory.js ***!\n \\************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst MediaDeviceProxyHandler_1 = __webpack_require__(/*! ./MediaDeviceProxyHandler */ \\\"./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/MediaDeviceProxyHandler.js\\\");\\nclass DefaultMediaDeviceFactory {\\n constructor() {\\n this.isMediaDevicesSupported = typeof navigator !== 'undefined' && !!navigator.mediaDevices;\\n }\\n create() {\\n if (!this.isMediaDevicesSupported) {\\n throw new Error(`navigator.mediaDevices is not supported`);\\n }\\n else {\\n return new Proxy(navigator.mediaDevices, new MediaDeviceProxyHandler_1.default());\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultMediaDeviceFactory;\\n//# sourceMappingURL=DefaultMediaDeviceFactory.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/DefaultMediaDeviceFactory.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/MediaDeviceProxyHandler.js\":\n/*!**********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/MediaDeviceProxyHandler.js ***!\n \\**********************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst AsyncScheduler_1 = __webpack_require__(/*! ../scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nconst IntervalScheduler_1 = __webpack_require__(/*! ../scheduler/IntervalScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js\\\");\\nclass MediaDeviceProxyHandler {\\n constructor() {\\n this.scheduler = null;\\n this.devices = null;\\n this.deviceChangeListeners = new Set();\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\\n this.get = (target, property, receiver) => {\\n if (!Reflect.has(target, property)) {\\n return undefined;\\n }\\n if (!('ondevicechange' in navigator.mediaDevices)) {\\n if (property === 'addEventListener') {\\n return this.patchAddEventListener(target, property, receiver);\\n }\\n else if (property === 'removeEventListener') {\\n return this.patchRemoveEventListener(target, property, receiver);\\n }\\n }\\n const value = Reflect.get(target, property, receiver);\\n return typeof value === 'function' ? value.bind(target) : value;\\n };\\n this.patchAddEventListener = (target, property, \\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n receiver) => {\\n const value = Reflect.get(target, property, receiver);\\n return (type, listener, options) => {\\n if (type === 'devicechange') {\\n this.deviceChangeListeners.add(listener);\\n if (!this.scheduler) {\\n this.scheduler = new IntervalScheduler_1.default(MediaDeviceProxyHandler.INTERVAL_MS);\\n this.scheduler.start(this.pollDeviceLists);\\n }\\n }\\n else {\\n return Reflect.apply(value, target, [type, listener, options]);\\n }\\n };\\n };\\n this.patchRemoveEventListener = (target, property, \\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n receiver) => {\\n const value = Reflect.get(target, property, receiver);\\n return (type, listener, options) => {\\n if (type === 'devicechange') {\\n this.deviceChangeListeners.delete(listener);\\n if (this.deviceChangeListeners.size === 0 && this.scheduler) {\\n this.scheduler.stop();\\n this.scheduler = null;\\n }\\n }\\n else {\\n return Reflect.apply(value, target, [type, listener, options]);\\n }\\n };\\n };\\n this.pollDeviceLists = () => __awaiter(this, void 0, void 0, function* () {\\n const newDevices = yield this.sortedDeviceList();\\n if (this.devices) {\\n const changed = newDevices.length !== this.devices.length ||\\n newDevices.some((device, index) => {\\n return device.deviceId !== this.devices[index].deviceId;\\n });\\n if (changed) {\\n this.handleDeviceChangeEvent();\\n }\\n }\\n this.devices = newDevices;\\n });\\n }\\n sortedDeviceList() {\\n return __awaiter(this, void 0, void 0, function* () {\\n // @ts-ignore\\n const newDevices = yield navigator.mediaDevices.enumerateDevices();\\n return newDevices.sort((device1, device2) => {\\n if (device1.deviceId < device2.deviceId) {\\n return 1;\\n }\\n if (device1.deviceId > device2.deviceId) {\\n return -1;\\n }\\n return 0;\\n });\\n });\\n }\\n handleDeviceChangeEvent() {\\n for (const listener of this.deviceChangeListeners) {\\n AsyncScheduler_1.default.nextTick(() => {\\n /* istanbul ignore else */\\n if (this.deviceChangeListeners.has(listener)) {\\n const event = new Event('devicechange');\\n if (typeof listener === 'function') {\\n listener(event);\\n }\\n else {\\n listener.handleEvent(event);\\n }\\n }\\n });\\n }\\n }\\n}\\nexports[\\\"default\\\"] = MediaDeviceProxyHandler;\\nMediaDeviceProxyHandler.INTERVAL_MS = 1000;\\n//# sourceMappingURL=MediaDeviceProxyHandler.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/mediadevicefactory/MediaDeviceProxyHandler.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/mediastreambroker/NoOpMediaStreamBroker.js\":\n/*!*******************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/mediastreambroker/NoOpMediaStreamBroker.js ***!\n \\*******************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[NoOpDeviceBroker]] rejects requests to acquire a [[MediaStream]].\\n */\\nclass NoOpMediaStreamBroker {\\n acquireAudioInputStream() {\\n return Promise.reject();\\n }\\n acquireVideoInputStream() {\\n return Promise.reject();\\n }\\n acquireDisplayInputStream(_streamConstraints) {\\n return Promise.reject();\\n }\\n releaseMediaStream(_mediaStreamToRelease) { }\\n bindToAudioVideoController(_audioVideoController) { }\\n}\\nexports[\\\"default\\\"] = NoOpMediaStreamBroker;\\n//# sourceMappingURL=NoOpMediaStreamBroker.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/mediastreambroker/NoOpMediaStreamBroker.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioConnectivityFeedback.js\":\n/*!**********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioConnectivityFeedback.js ***!\n \\**********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckAudioConnectivityFeedback = void 0;\\nvar CheckAudioConnectivityFeedback;\\n(function (CheckAudioConnectivityFeedback) {\\n CheckAudioConnectivityFeedback[CheckAudioConnectivityFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckAudioConnectivityFeedback[CheckAudioConnectivityFeedback[\\\"AudioInputRequestFailed\\\"] = 1] = \\\"AudioInputRequestFailed\\\";\\n CheckAudioConnectivityFeedback[CheckAudioConnectivityFeedback[\\\"AudioInputPermissionDenied\\\"] = 2] = \\\"AudioInputPermissionDenied\\\";\\n CheckAudioConnectivityFeedback[CheckAudioConnectivityFeedback[\\\"ConnectionFailed\\\"] = 3] = \\\"ConnectionFailed\\\";\\n CheckAudioConnectivityFeedback[CheckAudioConnectivityFeedback[\\\"AudioNotReceived\\\"] = 4] = \\\"AudioNotReceived\\\";\\n})(CheckAudioConnectivityFeedback = exports.CheckAudioConnectivityFeedback || (exports.CheckAudioConnectivityFeedback = {}));\\nexports[\\\"default\\\"] = CheckAudioConnectivityFeedback;\\n//# sourceMappingURL=CheckAudioConnectivityFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioConnectivityFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioInputFeedback.js\":\n/*!***************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioInputFeedback.js ***!\n \\***************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckAudioInputFeedback = void 0;\\nvar CheckAudioInputFeedback;\\n(function (CheckAudioInputFeedback) {\\n CheckAudioInputFeedback[CheckAudioInputFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckAudioInputFeedback[CheckAudioInputFeedback[\\\"Failed\\\"] = 1] = \\\"Failed\\\";\\n CheckAudioInputFeedback[CheckAudioInputFeedback[\\\"PermissionDenied\\\"] = 2] = \\\"PermissionDenied\\\";\\n})(CheckAudioInputFeedback = exports.CheckAudioInputFeedback || (exports.CheckAudioInputFeedback = {}));\\nexports[\\\"default\\\"] = CheckAudioInputFeedback;\\n//# sourceMappingURL=CheckAudioInputFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioInputFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioOutputFeedback.js\":\n/*!****************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioOutputFeedback.js ***!\n \\****************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckAudioOutputFeedback = void 0;\\nvar CheckAudioOutputFeedback;\\n(function (CheckAudioOutputFeedback) {\\n CheckAudioOutputFeedback[CheckAudioOutputFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckAudioOutputFeedback[CheckAudioOutputFeedback[\\\"Failed\\\"] = 1] = \\\"Failed\\\";\\n})(CheckAudioOutputFeedback = exports.CheckAudioOutputFeedback || (exports.CheckAudioOutputFeedback = {}));\\nexports[\\\"default\\\"] = CheckAudioOutputFeedback;\\n//# sourceMappingURL=CheckAudioOutputFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioOutputFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckCameraResolutionFeedback.js\":\n/*!*********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckCameraResolutionFeedback.js ***!\n \\*********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckCameraResolutionFeedback = void 0;\\nvar CheckCameraResolutionFeedback;\\n(function (CheckCameraResolutionFeedback) {\\n CheckCameraResolutionFeedback[CheckCameraResolutionFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckCameraResolutionFeedback[CheckCameraResolutionFeedback[\\\"Failed\\\"] = 1] = \\\"Failed\\\";\\n CheckCameraResolutionFeedback[CheckCameraResolutionFeedback[\\\"ResolutionNotSupported\\\"] = 2] = \\\"ResolutionNotSupported\\\";\\n CheckCameraResolutionFeedback[CheckCameraResolutionFeedback[\\\"PermissionDenied\\\"] = 3] = \\\"PermissionDenied\\\";\\n})(CheckCameraResolutionFeedback = exports.CheckCameraResolutionFeedback || (exports.CheckCameraResolutionFeedback = {}));\\nexports[\\\"default\\\"] = CheckCameraResolutionFeedback;\\n//# sourceMappingURL=CheckCameraResolutionFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckCameraResolutionFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckContentShareConnectivityFeedback.js\":\n/*!*****************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckContentShareConnectivityFeedback.js ***!\n \\*****************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckContentShareConnectivityFeedback = void 0;\\nvar CheckContentShareConnectivityFeedback;\\n(function (CheckContentShareConnectivityFeedback) {\\n CheckContentShareConnectivityFeedback[CheckContentShareConnectivityFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckContentShareConnectivityFeedback[CheckContentShareConnectivityFeedback[\\\"Failed\\\"] = 1] = \\\"Failed\\\";\\n CheckContentShareConnectivityFeedback[CheckContentShareConnectivityFeedback[\\\"PermissionDenied\\\"] = 2] = \\\"PermissionDenied\\\";\\n CheckContentShareConnectivityFeedback[CheckContentShareConnectivityFeedback[\\\"TimedOut\\\"] = 3] = \\\"TimedOut\\\";\\n CheckContentShareConnectivityFeedback[CheckContentShareConnectivityFeedback[\\\"ConnectionFailed\\\"] = 4] = \\\"ConnectionFailed\\\";\\n})(CheckContentShareConnectivityFeedback = exports.CheckContentShareConnectivityFeedback || (exports.CheckContentShareConnectivityFeedback = {}));\\nexports[\\\"default\\\"] = CheckContentShareConnectivityFeedback;\\n//# sourceMappingURL=CheckContentShareConnectivityFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckContentShareConnectivityFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkTCPConnectivityFeedback.js\":\n/*!***************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkTCPConnectivityFeedback.js ***!\n \\***************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckNetworkTCPConnectivityFeedback = void 0;\\nvar CheckNetworkTCPConnectivityFeedback;\\n(function (CheckNetworkTCPConnectivityFeedback) {\\n CheckNetworkTCPConnectivityFeedback[CheckNetworkTCPConnectivityFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckNetworkTCPConnectivityFeedback[CheckNetworkTCPConnectivityFeedback[\\\"MeetingSessionURLsNotInitialized\\\"] = 1] = \\\"MeetingSessionURLsNotInitialized\\\";\\n CheckNetworkTCPConnectivityFeedback[CheckNetworkTCPConnectivityFeedback[\\\"ConnectionFailed\\\"] = 2] = \\\"ConnectionFailed\\\";\\n CheckNetworkTCPConnectivityFeedback[CheckNetworkTCPConnectivityFeedback[\\\"ICENegotiationFailed\\\"] = 3] = \\\"ICENegotiationFailed\\\";\\n})(CheckNetworkTCPConnectivityFeedback = exports.CheckNetworkTCPConnectivityFeedback || (exports.CheckNetworkTCPConnectivityFeedback = {}));\\nexports[\\\"default\\\"] = CheckNetworkTCPConnectivityFeedback;\\n//# sourceMappingURL=CheckNetworkTCPConnectivityFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkTCPConnectivityFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkUDPConnectivityFeedback.js\":\n/*!***************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkUDPConnectivityFeedback.js ***!\n \\***************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckNetworkUDPConnectivityFeedback = void 0;\\nvar CheckNetworkUDPConnectivityFeedback;\\n(function (CheckNetworkUDPConnectivityFeedback) {\\n CheckNetworkUDPConnectivityFeedback[CheckNetworkUDPConnectivityFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckNetworkUDPConnectivityFeedback[CheckNetworkUDPConnectivityFeedback[\\\"MeetingSessionURLsNotInitialized\\\"] = 1] = \\\"MeetingSessionURLsNotInitialized\\\";\\n CheckNetworkUDPConnectivityFeedback[CheckNetworkUDPConnectivityFeedback[\\\"ConnectionFailed\\\"] = 2] = \\\"ConnectionFailed\\\";\\n CheckNetworkUDPConnectivityFeedback[CheckNetworkUDPConnectivityFeedback[\\\"ICENegotiationFailed\\\"] = 3] = \\\"ICENegotiationFailed\\\";\\n})(CheckNetworkUDPConnectivityFeedback = exports.CheckNetworkUDPConnectivityFeedback || (exports.CheckNetworkUDPConnectivityFeedback = {}));\\nexports[\\\"default\\\"] = CheckNetworkUDPConnectivityFeedback;\\n//# sourceMappingURL=CheckNetworkUDPConnectivityFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkUDPConnectivityFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoConnectivityFeedback.js\":\n/*!**********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoConnectivityFeedback.js ***!\n \\**********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckVideoConnectivityFeedback = void 0;\\nvar CheckVideoConnectivityFeedback;\\n(function (CheckVideoConnectivityFeedback) {\\n CheckVideoConnectivityFeedback[CheckVideoConnectivityFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckVideoConnectivityFeedback[CheckVideoConnectivityFeedback[\\\"VideoInputRequestFailed\\\"] = 1] = \\\"VideoInputRequestFailed\\\";\\n CheckVideoConnectivityFeedback[CheckVideoConnectivityFeedback[\\\"VideoInputPermissionDenied\\\"] = 2] = \\\"VideoInputPermissionDenied\\\";\\n CheckVideoConnectivityFeedback[CheckVideoConnectivityFeedback[\\\"ConnectionFailed\\\"] = 3] = \\\"ConnectionFailed\\\";\\n CheckVideoConnectivityFeedback[CheckVideoConnectivityFeedback[\\\"VideoNotSent\\\"] = 4] = \\\"VideoNotSent\\\";\\n})(CheckVideoConnectivityFeedback = exports.CheckVideoConnectivityFeedback || (exports.CheckVideoConnectivityFeedback = {}));\\nexports[\\\"default\\\"] = CheckVideoConnectivityFeedback;\\n//# sourceMappingURL=CheckVideoConnectivityFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoConnectivityFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoInputFeedback.js\":\n/*!***************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoInputFeedback.js ***!\n \\***************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.CheckVideoInputFeedback = void 0;\\nvar CheckVideoInputFeedback;\\n(function (CheckVideoInputFeedback) {\\n CheckVideoInputFeedback[CheckVideoInputFeedback[\\\"Succeeded\\\"] = 0] = \\\"Succeeded\\\";\\n CheckVideoInputFeedback[CheckVideoInputFeedback[\\\"Failed\\\"] = 1] = \\\"Failed\\\";\\n CheckVideoInputFeedback[CheckVideoInputFeedback[\\\"PermissionDenied\\\"] = 2] = \\\"PermissionDenied\\\";\\n})(CheckVideoInputFeedback = exports.CheckVideoInputFeedback || (exports.CheckVideoInputFeedback = {}));\\nexports[\\\"default\\\"] = CheckVideoInputFeedback;\\n//# sourceMappingURL=CheckVideoInputFeedback.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoInputFeedback.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/DefaultMeetingReadinessChecker.js\":\n/*!**********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/DefaultMeetingReadinessChecker.js ***!\n \\**********************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultAudioMixController_1 = __webpack_require__(/*! ../audiomixcontroller/DefaultAudioMixController */ \\\"./node_modules/amazon-chime-sdk-js/build/audiomixcontroller/DefaultAudioMixController.js\\\");\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst DefaultDeviceController_1 = __webpack_require__(/*! ../devicecontroller/DefaultDeviceController */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/DefaultDeviceController.js\\\");\\nconst PermissionDeniedError_1 = __webpack_require__(/*! ../devicecontroller/PermissionDeniedError */ \\\"./node_modules/amazon-chime-sdk-js/build/devicecontroller/PermissionDeniedError.js\\\");\\nconst BaseTask_1 = __webpack_require__(/*! ../task/BaseTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/BaseTask.js\\\");\\nconst TimeoutTask_1 = __webpack_require__(/*! ../task/TimeoutTask */ \\\"./node_modules/amazon-chime-sdk-js/build/task/TimeoutTask.js\\\");\\nconst CheckAudioConnectivityFeedback_1 = __webpack_require__(/*! ./CheckAudioConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioConnectivityFeedback.js\\\");\\nconst CheckAudioInputFeedback_1 = __webpack_require__(/*! ./CheckAudioInputFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioInputFeedback.js\\\");\\nconst CheckAudioOutputFeedback_1 = __webpack_require__(/*! ./CheckAudioOutputFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckAudioOutputFeedback.js\\\");\\nconst CheckCameraResolutionFeedback_1 = __webpack_require__(/*! ./CheckCameraResolutionFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckCameraResolutionFeedback.js\\\");\\nconst CheckContentShareConnectivityFeedback_1 = __webpack_require__(/*! ./CheckContentShareConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckContentShareConnectivityFeedback.js\\\");\\nconst CheckNetworkTCPConnectivityFeedback_1 = __webpack_require__(/*! ./CheckNetworkTCPConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkTCPConnectivityFeedback.js\\\");\\nconst CheckNetworkUDPConnectivityFeedback_1 = __webpack_require__(/*! ./CheckNetworkUDPConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckNetworkUDPConnectivityFeedback.js\\\");\\nconst CheckVideoConnectivityFeedback_1 = __webpack_require__(/*! ./CheckVideoConnectivityFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoConnectivityFeedback.js\\\");\\nconst CheckVideoInputFeedback_1 = __webpack_require__(/*! ./CheckVideoInputFeedback */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/CheckVideoInputFeedback.js\\\");\\nconst MeetingReadinessCheckerConfiguration_1 = __webpack_require__(/*! ./MeetingReadinessCheckerConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/MeetingReadinessCheckerConfiguration.js\\\");\\nclass DefaultMeetingReadinessChecker {\\n constructor(logger, meetingSession, configuration = new MeetingReadinessCheckerConfiguration_1.default()) {\\n this.logger = logger;\\n this.meetingSession = meetingSession;\\n this.configuration = configuration;\\n this.browserBehavior = new DefaultBrowserBehavior_1.default();\\n }\\n static delay(timeoutMs) {\\n return __awaiter(this, void 0, void 0, function* () {\\n return new Promise(resolve => setTimeout(resolve, timeoutMs));\\n });\\n }\\n checkAudioInput(audioInputDevice) {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n yield this.meetingSession.audioVideo.chooseAudioInputDevice(audioInputDevice);\\n yield this.meetingSession.audioVideo.chooseAudioInputDevice(null);\\n return CheckAudioInputFeedback_1.default.Succeeded;\\n }\\n catch (error) {\\n this.logger.error(`MeetingReadinessChecker: Audio input check failed with error ${error}`);\\n if (error instanceof PermissionDeniedError_1.default) {\\n return CheckAudioInputFeedback_1.default.PermissionDenied;\\n }\\n return CheckAudioInputFeedback_1.default.Failed;\\n }\\n });\\n }\\n checkAudioOutput(audioOutputDeviceInfo, audioOutputVerificationCallback, audioElement = null) {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n const audioOutputDeviceId = audioOutputDeviceInfo\\n ? DefaultDeviceController_1.default.getIntrinsicDeviceId(audioOutputDeviceInfo)\\n : '';\\n yield this.playTone(audioOutputDeviceId, 440, audioElement);\\n const userFeedback = yield audioOutputVerificationCallback();\\n if (userFeedback) {\\n return CheckAudioOutputFeedback_1.default.Succeeded;\\n }\\n return CheckAudioOutputFeedback_1.default.Failed;\\n }\\n catch (error) {\\n this.logger.error(`MeetingReadinessChecker: Audio output check failed with error: ${error}`);\\n return CheckAudioOutputFeedback_1.default.Failed;\\n }\\n finally {\\n this.stopTone();\\n }\\n });\\n }\\n playTone(sinkId, frequency, audioElement) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const rampSec = 0.1;\\n const maxGainValue = 0.1;\\n if (this.oscillatorNode) {\\n this.stopTone();\\n }\\n this.audioContext = DefaultDeviceController_1.default.getAudioContext();\\n this.gainNode = this.audioContext.createGain();\\n this.gainNode.gain.value = 0;\\n this.oscillatorNode = this.audioContext.createOscillator();\\n this.oscillatorNode.frequency.value = frequency;\\n this.oscillatorNode.connect(this.gainNode);\\n this.destinationStream = this.audioContext.createMediaStreamDestination();\\n this.gainNode.connect(this.destinationStream);\\n const currentTime = this.audioContext.currentTime;\\n const startTime = currentTime + 0.1;\\n this.gainNode.gain.linearRampToValueAtTime(0, startTime);\\n this.gainNode.gain.linearRampToValueAtTime(maxGainValue, startTime + rampSec);\\n this.oscillatorNode.start();\\n // Because we always use `DefaultAudioMixController`, and both this class\\n // and DAMC use `DefaultBrowserBehavior`, it is not possible for the `bindAudioDevice` call here to throw.\\n // Nevertheless, we `catch` here and disable code coverage.\\n const audioMixController = new DefaultAudioMixController_1.default(this.logger);\\n try {\\n if (this.browserBehavior.supportsSetSinkId()) {\\n yield audioMixController.bindAudioDevice({ deviceId: sinkId });\\n }\\n }\\n catch (e) {\\n /* istanbul ignore next */\\n this.logger.error(`Failed to bind audio device: ${e}`);\\n }\\n try {\\n yield audioMixController.bindAudioElement(audioElement || new Audio());\\n }\\n catch (e) {\\n this.logger.error(`Failed to bind audio element: ${e}`);\\n }\\n yield audioMixController.bindAudioStream(this.destinationStream.stream);\\n });\\n }\\n stopTone() {\\n if (!this.audioContext || !this.gainNode || !this.oscillatorNode || !this.destinationStream) {\\n return;\\n }\\n const durationSec = 1;\\n const rampSec = 0.1;\\n const maxGainValue = 0.1;\\n const currentTime = this.audioContext.currentTime;\\n this.gainNode.gain.linearRampToValueAtTime(maxGainValue, currentTime + rampSec + durationSec);\\n this.gainNode.gain.linearRampToValueAtTime(0, currentTime + rampSec * 2 + durationSec);\\n this.oscillatorNode.stop();\\n this.oscillatorNode.disconnect(this.gainNode);\\n this.gainNode.disconnect(this.destinationStream);\\n this.oscillatorNode = null;\\n this.gainNode = null;\\n this.destinationStream = null;\\n }\\n checkVideoInput(videoInputDevice) {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n yield this.meetingSession.audioVideo.chooseVideoInputDevice(videoInputDevice);\\n yield this.meetingSession.audioVideo.chooseVideoInputDevice(null);\\n return CheckVideoInputFeedback_1.default.Succeeded;\\n }\\n catch (error) {\\n this.logger.error(`MeetingReadinessChecker: Video check failed with error ${error}`);\\n if (error instanceof PermissionDeniedError_1.default) {\\n return CheckVideoInputFeedback_1.default.PermissionDenied;\\n }\\n return CheckVideoInputFeedback_1.default.Failed;\\n }\\n });\\n }\\n checkCameraResolution(videoInputDevice, width, height) {\\n return __awaiter(this, void 0, void 0, function* () {\\n let stream;\\n try {\\n const videoInputDeviceId = DefaultDeviceController_1.default.getIntrinsicDeviceId(videoInputDevice);\\n const videoConstraint = {\\n video: this.calculateVideoConstraint(videoInputDeviceId, width, height),\\n };\\n stream = yield navigator.mediaDevices.getUserMedia(videoConstraint);\\n }\\n catch (error) {\\n this.logger.error(`MeetingReadinessChecker: Camera resolution check with width: ${width} height ${height} failed with error ${error}`);\\n if (error && error.name === 'OverconstrainedError') {\\n return CheckCameraResolutionFeedback_1.default.ResolutionNotSupported;\\n }\\n if (error && error.name === 'NotAllowedError') {\\n return CheckCameraResolutionFeedback_1.default.PermissionDenied;\\n }\\n return CheckCameraResolutionFeedback_1.default.Failed;\\n }\\n finally {\\n if (stream) {\\n stream.getTracks().forEach(function (track) {\\n track.stop();\\n });\\n }\\n }\\n return CheckCameraResolutionFeedback_1.default.Succeeded;\\n });\\n }\\n calculateVideoConstraint(videoInputDeviceId, width, height) {\\n const dimension = this.browserBehavior.requiresResolutionAlignment(width, height);\\n const trackConstraints = {};\\n if (this.browserBehavior.requiresNoExactMediaStreamConstraints()) {\\n trackConstraints.deviceId = videoInputDeviceId;\\n trackConstraints.width = width;\\n trackConstraints.height = height;\\n }\\n else {\\n trackConstraints.deviceId = { exact: videoInputDeviceId };\\n trackConstraints.width = { exact: dimension[0] };\\n trackConstraints.height = { exact: dimension[1] };\\n }\\n return trackConstraints;\\n }\\n checkContentShareConnectivity(sourceId) {\\n return __awaiter(this, void 0, void 0, function* () {\\n let isContentShareStarted = false;\\n let isAudioVideoStarted = false;\\n const contentShareObserver = {\\n contentShareDidStart: () => {\\n isContentShareStarted = true;\\n },\\n };\\n const observer = {\\n audioVideoDidStart: () => {\\n isAudioVideoStarted = true;\\n },\\n };\\n try {\\n this.meetingSession.audioVideo.addObserver(observer);\\n this.meetingSession.audioVideo.start();\\n this.meetingSession.audioVideo.addContentShareObserver(contentShareObserver);\\n yield this.meetingSession.audioVideo.startContentShareFromScreenCapture(sourceId);\\n yield this.executeTimeoutTask(() => __awaiter(this, void 0, void 0, function* () {\\n return isAudioVideoStarted && isContentShareStarted;\\n }));\\n if (!isAudioVideoStarted) {\\n return CheckContentShareConnectivityFeedback_1.default.ConnectionFailed;\\n }\\n yield this.stopMeeting();\\n return isContentShareStarted\\n ? CheckContentShareConnectivityFeedback_1.default.Succeeded\\n : CheckContentShareConnectivityFeedback_1.default.TimedOut;\\n }\\n catch (error) {\\n this.logger.error(`MeetingReadinessChecker: Content share check failed with error ${error}`);\\n if (error.name === 'NotAllowedError') {\\n return CheckContentShareConnectivityFeedback_1.default.PermissionDenied;\\n }\\n else {\\n return CheckContentShareConnectivityFeedback_1.default.Failed;\\n }\\n }\\n finally {\\n this.meetingSession.audioVideo.removeObserver(observer);\\n this.meetingSession.audioVideo.stopContentShare();\\n this.meetingSession.audioVideo.removeContentShareObserver(contentShareObserver);\\n }\\n });\\n }\\n checkAudioConnectivity(audioInputDevice) {\\n return __awaiter(this, void 0, void 0, function* () {\\n let audioPresence = false;\\n const audioVideo = this.meetingSession.audioVideo;\\n const attendeePresenceHandler = (attendeeId, present, _externalUserId, _dropped) => {\\n if (attendeeId === this.meetingSession.configuration.credentials.attendeeId && present) {\\n audioPresence = true;\\n }\\n };\\n try {\\n yield audioVideo.chooseAudioInputDevice(audioInputDevice);\\n }\\n catch (error) {\\n this.logger.error(`MeetingReadinessChecker: Failed to get audio input device with error ${error}`);\\n if (error instanceof PermissionDeniedError_1.default) {\\n return CheckAudioConnectivityFeedback_1.default.AudioInputPermissionDenied;\\n }\\n return CheckAudioConnectivityFeedback_1.default.AudioInputRequestFailed;\\n }\\n audioVideo.realtimeSubscribeToAttendeeIdPresence(attendeePresenceHandler);\\n if (!(yield this.startMeeting())) {\\n audioVideo.realtimeUnsubscribeToAttendeeIdPresence(attendeePresenceHandler);\\n try {\\n yield this.meetingSession.audioVideo.chooseAudioInputDevice(null);\\n }\\n catch (e) {\\n this.logger.error(`MeetingReadinessChecker: Failed to choose null device with error ${e}`);\\n }\\n return CheckAudioConnectivityFeedback_1.default.ConnectionFailed;\\n }\\n yield this.executeTimeoutTask(() => __awaiter(this, void 0, void 0, function* () {\\n return audioPresence;\\n }));\\n audioVideo.realtimeUnsubscribeToAttendeeIdPresence(attendeePresenceHandler);\\n yield this.stopMeeting();\\n try {\\n yield this.meetingSession.audioVideo.chooseAudioInputDevice(null);\\n }\\n catch (e) {\\n this.logger.error(`MeetingReadinessChecker: Failed to choose null device with error ${e}`);\\n }\\n return audioPresence\\n ? CheckAudioConnectivityFeedback_1.default.Succeeded\\n : CheckAudioConnectivityFeedback_1.default.AudioNotReceived;\\n });\\n }\\n checkVideoConnectivity(videoInputDevice) {\\n return __awaiter(this, void 0, void 0, function* () {\\n const audioVideo = this.meetingSession.audioVideo;\\n try {\\n yield audioVideo.chooseVideoInputDevice(videoInputDevice);\\n }\\n catch (error) {\\n this.logger.error(`MeetingReadinessChecker: Failed to get video input device with error ${error}`);\\n if (error instanceof PermissionDeniedError_1.default) {\\n return CheckVideoConnectivityFeedback_1.default.VideoInputPermissionDenied;\\n }\\n return CheckVideoConnectivityFeedback_1.default.VideoInputRequestFailed;\\n }\\n if (!(yield this.startMeeting())) {\\n return CheckVideoConnectivityFeedback_1.default.ConnectionFailed;\\n }\\n let packetsSent = 0;\\n audioVideo.startLocalVideoTile();\\n yield this.executeTimeoutTask(() => __awaiter(this, void 0, void 0, function* () {\\n const rawStats = yield audioVideo.getRTCPeerConnectionStats();\\n if (rawStats) {\\n rawStats.forEach(report => {\\n if (report.type === 'outbound-rtp' && report.mediaType === 'video') {\\n packetsSent = report.packetsSent;\\n }\\n });\\n }\\n return packetsSent > 0;\\n }));\\n audioVideo.stopLocalVideoTile();\\n yield this.stopMeeting();\\n if (packetsSent <= 0) {\\n return CheckVideoConnectivityFeedback_1.default.VideoNotSent;\\n }\\n return CheckVideoConnectivityFeedback_1.default.Succeeded;\\n });\\n }\\n checkNetworkUDPConnectivity() {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n this.originalURLRewriter = this.meetingSession.configuration.urls.urlRewriter;\\n }\\n catch (error) {\\n this.logger.error(`MeetingSessionConfiguration.urls doesn't exist. Error: ${error}`);\\n return CheckNetworkUDPConnectivityFeedback_1.default.MeetingSessionURLsNotInitialized;\\n }\\n this.meetingSession.configuration.urls.urlRewriter = (uri) => {\\n const transformedUri = this.originalURLRewriter(uri);\\n if (transformedUri.includes('transport=tcp')) {\\n return '';\\n }\\n return transformedUri;\\n };\\n const audioVideo = this.meetingSession.audioVideo;\\n if (!(yield this.startMeeting())) {\\n this.meetingSession.configuration.urls.urlRewriter = this.originalURLRewriter;\\n return CheckNetworkUDPConnectivityFeedback_1.default.ConnectionFailed;\\n }\\n let candidatePairSucceed = false;\\n yield this.executeTimeoutTask(() => __awaiter(this, void 0, void 0, function* () {\\n const rawStats = yield audioVideo.getRTCPeerConnectionStats();\\n if (rawStats) {\\n rawStats.forEach(report => {\\n if (report.type === 'candidate-pair' && report.state === 'succeeded') {\\n candidatePairSucceed = true;\\n }\\n });\\n }\\n return candidatePairSucceed;\\n }));\\n this.meetingSession.configuration.urls.urlRewriter = this.originalURLRewriter;\\n yield this.stopMeeting();\\n if (!candidatePairSucceed) {\\n return CheckNetworkUDPConnectivityFeedback_1.default.ICENegotiationFailed;\\n }\\n return CheckNetworkUDPConnectivityFeedback_1.default.Succeeded;\\n });\\n }\\n checkNetworkTCPConnectivity() {\\n return __awaiter(this, void 0, void 0, function* () {\\n try {\\n this.originalURLRewriter = this.meetingSession.configuration.urls.urlRewriter;\\n }\\n catch (error) {\\n this.logger.error(`MeetingSessionConfiguration.urls doesn't exist. Error: ${error}`);\\n return CheckNetworkTCPConnectivityFeedback_1.default.MeetingSessionURLsNotInitialized;\\n }\\n this.meetingSession.configuration.urls.urlRewriter = (uri) => {\\n const transformedUri = this.originalURLRewriter(uri);\\n if (transformedUri.includes('transport=udp')) {\\n return '';\\n }\\n return transformedUri;\\n };\\n const audioVideo = this.meetingSession.audioVideo;\\n if (!(yield this.startMeeting())) {\\n this.meetingSession.configuration.urls.urlRewriter = this.originalURLRewriter;\\n return CheckNetworkTCPConnectivityFeedback_1.default.ConnectionFailed;\\n }\\n let candidatePairSucceed = false;\\n yield this.executeTimeoutTask(() => __awaiter(this, void 0, void 0, function* () {\\n const rawStats = yield audioVideo.getRTCPeerConnectionStats();\\n if (rawStats) {\\n rawStats.forEach(report => {\\n if (report.type === 'candidate-pair' && report.state === 'succeeded') {\\n candidatePairSucceed = true;\\n }\\n });\\n }\\n return candidatePairSucceed;\\n }));\\n this.meetingSession.configuration.urls.urlRewriter = this.originalURLRewriter;\\n yield this.stopMeeting();\\n if (!candidatePairSucceed) {\\n return CheckNetworkTCPConnectivityFeedback_1.default.ICENegotiationFailed;\\n }\\n return CheckNetworkTCPConnectivityFeedback_1.default.Succeeded;\\n });\\n }\\n startMeeting() {\\n return __awaiter(this, void 0, void 0, function* () {\\n let isStarted = false;\\n const observer = {\\n audioVideoDidStart: () => {\\n isStarted = true;\\n },\\n };\\n this.meetingSession.audioVideo.addObserver(observer);\\n this.meetingSession.audioVideo.start();\\n yield this.executeTimeoutTask(() => __awaiter(this, void 0, void 0, function* () {\\n return isStarted;\\n }));\\n this.meetingSession.audioVideo.removeObserver(observer);\\n return isStarted;\\n });\\n }\\n stopMeeting() {\\n return __awaiter(this, void 0, void 0, function* () {\\n let isStopped = false;\\n const observer = {\\n audioVideoDidStop: (_sessionStatus) => {\\n isStopped = true;\\n },\\n };\\n this.meetingSession.audioVideo.addObserver(observer);\\n this.meetingSession.audioVideo.stop();\\n yield this.executeTimeoutTask(() => __awaiter(this, void 0, void 0, function* () {\\n return isStopped;\\n }));\\n this.meetingSession.audioVideo.removeObserver(observer);\\n return isStopped;\\n });\\n }\\n executeTimeoutTask(conditionCheck) {\\n return __awaiter(this, void 0, void 0, function* () {\\n let isSuccess = false;\\n class CheckForConditionTask extends BaseTask_1.default {\\n constructor(logger, waitDurationMs) {\\n super(logger);\\n this.waitDurationMs = waitDurationMs;\\n this.isCancelled = false;\\n }\\n cancel() {\\n this.isCancelled = true;\\n }\\n run() {\\n return __awaiter(this, void 0, void 0, function* () {\\n while (!this.isCancelled) {\\n if (yield conditionCheck()) {\\n isSuccess = true;\\n break;\\n }\\n yield DefaultMeetingReadinessChecker.delay(this.waitDurationMs);\\n }\\n });\\n }\\n }\\n const timeoutTask = new TimeoutTask_1.default(this.logger, new CheckForConditionTask(this.logger, this.configuration.waitDurationMs), this.configuration.timeoutMs);\\n yield timeoutTask.run();\\n return isSuccess;\\n });\\n }\\n}\\nexports[\\\"default\\\"] = DefaultMeetingReadinessChecker;\\n//# sourceMappingURL=DefaultMeetingReadinessChecker.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/DefaultMeetingReadinessChecker.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/MeetingReadinessCheckerConfiguration.js\":\n/*!****************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/MeetingReadinessCheckerConfiguration.js ***!\n \\****************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[MeetingReadinessCheckerConfiguration]] includes custom settings used for MeetingReadinessChecker\\n */\\nclass MeetingReadinessCheckerConfiguration {\\n constructor() {\\n /**\\n * Specify how long to wait for each check in a test.\\n * If null, it will use the default value.\\n */\\n this.timeoutMs = 10000;\\n /**\\n * Specify the wait time before checking again when a check condition is not met.\\n * If null, it will use the default value.\\n */\\n this.waitDurationMs = 3000;\\n }\\n}\\nexports[\\\"default\\\"] = MeetingReadinessCheckerConfiguration;\\n//# sourceMappingURL=MeetingReadinessCheckerConfiguration.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingreadinesschecker/MeetingReadinessCheckerConfiguration.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/DefaultMeetingSession.js\":\n/*!****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/DefaultMeetingSession.js ***!\n \\****************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultAudioVideoController_1 = __webpack_require__(/*! ../audiovideocontroller/DefaultAudioVideoController */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideocontroller/DefaultAudioVideoController.js\\\");\\nconst DefaultAudioVideoFacade_1 = __webpack_require__(/*! ../audiovideofacade/DefaultAudioVideoFacade */ \\\"./node_modules/amazon-chime-sdk-js/build/audiovideofacade/DefaultAudioVideoFacade.js\\\");\\nconst FullJitterBackoff_1 = __webpack_require__(/*! ../backoff/FullJitterBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js\\\");\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst ContentShareMediaStreamBroker_1 = __webpack_require__(/*! ../contentsharecontroller/ContentShareMediaStreamBroker */ \\\"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareMediaStreamBroker.js\\\");\\nconst DefaultContentShareController_1 = __webpack_require__(/*! ../contentsharecontroller/DefaultContentShareController */ \\\"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/DefaultContentShareController.js\\\");\\nconst Destroyable_1 = __webpack_require__(/*! ../destroyable/Destroyable */ \\\"./node_modules/amazon-chime-sdk-js/build/destroyable/Destroyable.js\\\");\\nconst DefaultReconnectController_1 = __webpack_require__(/*! ../reconnectcontroller/DefaultReconnectController */ \\\"./node_modules/amazon-chime-sdk-js/build/reconnectcontroller/DefaultReconnectController.js\\\");\\nconst DefaultWebSocketAdapter_1 = __webpack_require__(/*! ../websocketadapter/DefaultWebSocketAdapter */ \\\"./node_modules/amazon-chime-sdk-js/build/websocketadapter/DefaultWebSocketAdapter.js\\\");\\nclass DefaultMeetingSession {\\n constructor(configuration, logger, deviceController) {\\n this._configuration = configuration;\\n this._logger = logger;\\n this.checkBrowserSupportAndFeatureConfiguration();\\n this._deviceController = deviceController;\\n this.audioVideoController = new DefaultAudioVideoController_1.default(this._configuration, this._logger, new DefaultWebSocketAdapter_1.default(this._logger), deviceController, new DefaultReconnectController_1.default(DefaultMeetingSession.RECONNECT_TIMEOUT_MS, new FullJitterBackoff_1.default(DefaultMeetingSession.RECONNECT_FIXED_WAIT_MS, DefaultMeetingSession.RECONNECT_SHORT_BACKOFF_MS, DefaultMeetingSession.RECONNECT_LONG_BACKOFF_MS)));\\n deviceController.bindToAudioVideoController(this.audioVideoController);\\n const contentShareMediaStreamBroker = new ContentShareMediaStreamBroker_1.default(this._logger);\\n this.contentShareController = new DefaultContentShareController_1.default(contentShareMediaStreamBroker, new DefaultAudioVideoController_1.default(DefaultContentShareController_1.default.createContentShareMeetingSessionConfigure(this._configuration), this._logger, new DefaultWebSocketAdapter_1.default(this._logger), contentShareMediaStreamBroker, new DefaultReconnectController_1.default(DefaultMeetingSession.RECONNECT_TIMEOUT_MS, new FullJitterBackoff_1.default(DefaultMeetingSession.RECONNECT_FIXED_WAIT_MS, DefaultMeetingSession.RECONNECT_SHORT_BACKOFF_MS, DefaultMeetingSession.RECONNECT_LONG_BACKOFF_MS))), this.audioVideoController);\\n this.audioVideoFacade = new DefaultAudioVideoFacade_1.default(this.audioVideoController, this.audioVideoController.videoTileController, this.audioVideoController.realtimeController, this.audioVideoController.audioMixController, this._deviceController, this.contentShareController);\\n }\\n get configuration() {\\n return this._configuration;\\n }\\n get logger() {\\n return this._logger;\\n }\\n get audioVideo() {\\n return this.audioVideoFacade;\\n }\\n get contentShare() {\\n return this.contentShareController;\\n }\\n get deviceController() {\\n return this._deviceController;\\n }\\n /**\\n * Clean up this instance and resources that it created.\\n *\\n * After calling `destroy`, internal fields like `audioVideoController` will be unavailable.\\n */\\n destroy() {\\n return __awaiter(this, void 0, void 0, function* () {\\n if (Destroyable_1.isDestroyable(this.contentShareController)) {\\n yield this.contentShareController.destroy();\\n }\\n if (Destroyable_1.isDestroyable(this.audioVideoController)) {\\n yield this.audioVideoController.destroy();\\n }\\n this._logger = undefined;\\n this._configuration = undefined;\\n this._deviceController = undefined;\\n this.audioVideoFacade = undefined;\\n this.audioVideoController = undefined;\\n this.contentShareController = undefined;\\n });\\n }\\n checkBrowserSupportAndFeatureConfiguration() {\\n const browserBehavior = new DefaultBrowserBehavior_1.default();\\n const browser = `${browserBehavior.name()} ${browserBehavior.majorVersion()} (${browserBehavior.version()})`;\\n this.logger.info(`browser is ${browser}`);\\n if (!browserBehavior.isSupported()) {\\n this.logger.warn('this browser is not currently supported. ' +\\n 'Stability may suffer. ' +\\n `Supported browsers are: ${browserBehavior.supportString()}.`);\\n }\\n if (this._configuration.enableUnifiedPlanForChromiumBasedBrowsers) {\\n if (browserBehavior.hasChromiumWebRTC()) {\\n this.logger.info('WebRTC unified plan for Chromium-based browsers is enabled');\\n }\\n else {\\n this.logger.info(`WebRTC unified plan is required for ${browserBehavior.name()}`);\\n }\\n }\\n if (this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers) {\\n if (!this._configuration.enableUnifiedPlanForChromiumBasedBrowsers) {\\n this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers = false;\\n this.logger.info('Simulcast requires enabling WebRTC Unified Plan for Chromium-based browsers');\\n }\\n else if (browserBehavior.hasChromiumWebRTC()) {\\n this.logger.info(`Simulcast is enabled for ${browserBehavior.name()}`);\\n }\\n else {\\n this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers = false;\\n this.logger.info('Simulcast requires WebRTC Unified Plan and is only supported on Chromium-based browsers');\\n }\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultMeetingSession;\\nDefaultMeetingSession.RECONNECT_TIMEOUT_MS = 120 * 1000;\\nDefaultMeetingSession.RECONNECT_FIXED_WAIT_MS = 0;\\nDefaultMeetingSession.RECONNECT_SHORT_BACKOFF_MS = 1 * 1000;\\nDefaultMeetingSession.RECONNECT_LONG_BACKOFF_MS = 5 * 1000;\\n//# sourceMappingURL=DefaultMeetingSession.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/DefaultMeetingSession.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionConfiguration.js\":\n/*!**********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionConfiguration.js ***!\n \\**********************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst ConnectionHealthPolicyConfiguration_1 = __webpack_require__(/*! ../connectionhealthpolicy/ConnectionHealthPolicyConfiguration */ \\\"./node_modules/amazon-chime-sdk-js/build/connectionhealthpolicy/ConnectionHealthPolicyConfiguration.js\\\");\\nconst AllHighestVideoBandwidthPolicy_1 = __webpack_require__(/*! ../videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy.js\\\");\\nconst NScaleVideoUplinkBandwidthPolicy_1 = __webpack_require__(/*! ../videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy */ \\\"./node_modules/amazon-chime-sdk-js/build/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.js\\\");\\nconst MeetingSessionCredentials_1 = __webpack_require__(/*! ./MeetingSessionCredentials */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionCredentials.js\\\");\\nconst MeetingSessionURLs_1 = __webpack_require__(/*! ./MeetingSessionURLs */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionURLs.js\\\");\\n/**\\n * [[MeetingSessionConfiguration]] contains the information necessary to start\\n * a session.\\n */\\nclass MeetingSessionConfiguration {\\n /**\\n * Constructs a MeetingSessionConfiguration optionally with a chime:CreateMeeting and\\n * chime:CreateAttendee response. You can pass in either a JSON object containing the\\n * responses, or a JSON object containing the information in the Meeting and Attendee\\n * root-level fields. Examples:\\n *\\n * ```\\n * const configuration = new MeetingSessionConfiguration({\\n * \\\"Meeting\\\": {\\n * \\\"MeetingId\\\": \\\"...\\\",\\n * \\\"MediaPlacement\\\": {\\n * \\\"AudioHostUrl\\\": \\\"...\\\",\\n * \\\"ScreenDataUrl\\\": \\\"...\\\",\\n * \\\"ScreenSharingUrl\\\": \\\"...\\\",\\n * \\\"ScreenViewingUrl\\\": \\\"...\\\",\\n * \\\"SignalingUrl\\\": \\\"...\\\",\\n * \\\"TurnControlUrl\\\": \\\"...\\\"\\n * }\\n * }\\n * }\\n * }, {\\n * \\\"Attendee\\\": {\\n * \\\"ExternalUserId\\\": \\\"...\\\",\\n * \\\"AttendeeId\\\": \\\"...\\\",\\n * \\\"JoinToken\\\": \\\"...\\\"\\n * }\\n * });\\n * ```\\n *\\n * ```\\n * const configuration = new MeetingSessionConfiguration({\\n * \\\"MeetingId\\\": \\\"...\\\",\\n * \\\"MediaPlacement\\\": {\\n * \\\"AudioHostUrl\\\": \\\"...\\\",\\n * \\\"ScreenDataUrl\\\": \\\"...\\\",\\n * \\\"ScreenSharingUrl\\\": \\\"...\\\",\\n * \\\"ScreenViewingUrl\\\": \\\"...\\\",\\n * \\\"SignalingUrl\\\": \\\"...\\\",\\n * \\\"TurnControlUrl\\\": \\\"...\\\"\\n * }\\n * }, {\\n * \\\"ExternalUserId\\\": \\\"...\\\",\\n * \\\"AttendeeId\\\": \\\"...\\\",\\n * \\\"JoinToken\\\": \\\"...\\\"\\n * });\\n * ```\\n */\\n constructor(createMeetingResponse, createAttendeeResponse) {\\n /**\\n * The id of the meeting the session is joining.\\n */\\n this.meetingId = null;\\n /**\\n * The external meeting id of the meeting the session is joining.\\n */\\n this.externalMeetingId = null;\\n /**\\n * The credentials used to authenticate the session.\\n */\\n this.credentials = null;\\n /**\\n * The URLs the session uses to reach the meeting service.\\n */\\n this.urls = null;\\n /**\\n * Maximum amount of time in milliseconds to allow for connecting.\\n */\\n this.connectionTimeoutMs = 15000;\\n /**\\n * Maximum amount of time in milliseconds to allow for a screen sharing connection.\\n */\\n this.screenSharingTimeoutMs = 5000;\\n /**\\n * Maximum amount of time in milliseconds to allow for a screen viewing connection.\\n */\\n this.screenViewingTimeoutMs = 5000;\\n /**\\n * Maximum amount of time in milliseconds to wait for the current attendee to be present\\n * after initial connection.\\n */\\n this.attendeePresenceTimeoutMs = 0;\\n /**\\n * Configuration for connection health policies: reconnection, unusable audio warning connection,\\n * and signal strength bars connection.\\n */\\n this.connectionHealthPolicyConfiguration = new ConnectionHealthPolicyConfiguration_1.default();\\n /**\\n * Feature flag to enable Chromium-based browsers\\n */\\n this.enableUnifiedPlanForChromiumBasedBrowsers = true;\\n /**\\n * Feature flag to enable Simulcast\\n */\\n this.enableSimulcastForUnifiedPlanChromiumBasedBrowsers = false;\\n /**\\n * Video downlink bandwidth policy to determine which remote videos\\n * are subscribed to.\\n */\\n this.videoDownlinkBandwidthPolicy = null;\\n /**\\n * Video uplink bandwidth policy to determine the bandwidth constraints\\n * of the local video.\\n */\\n this.videoUplinkBandwidthPolicy = null;\\n if (createMeetingResponse) {\\n createMeetingResponse = this.toLowerCasePropertyNames(createMeetingResponse);\\n if (createMeetingResponse.meeting) {\\n createMeetingResponse = createMeetingResponse.meeting;\\n }\\n this.meetingId = createMeetingResponse.meetingid;\\n this.externalMeetingId = createMeetingResponse.externalmeetingid;\\n this.urls = new MeetingSessionURLs_1.default();\\n this.urls.audioHostURL = createMeetingResponse.mediaplacement.audiohosturl;\\n this.urls.screenDataURL = createMeetingResponse.mediaplacement.screendataurl;\\n this.urls.screenSharingURL = createMeetingResponse.mediaplacement.screensharingurl;\\n this.urls.screenViewingURL = createMeetingResponse.mediaplacement.screenviewingurl;\\n this.urls.signalingURL = createMeetingResponse.mediaplacement.signalingurl;\\n this.urls.turnControlURL = createMeetingResponse.mediaplacement.turncontrolurl;\\n }\\n if (createAttendeeResponse) {\\n createAttendeeResponse = this.toLowerCasePropertyNames(createAttendeeResponse);\\n if (createAttendeeResponse.attendee) {\\n createAttendeeResponse = createAttendeeResponse.attendee;\\n }\\n this.credentials = new MeetingSessionCredentials_1.default();\\n this.credentials.attendeeId = createAttendeeResponse.attendeeid;\\n this.credentials.externalUserId = createAttendeeResponse.externaluserid;\\n this.credentials.joinToken = createAttendeeResponse.jointoken;\\n }\\n // simulcast feature flag will override the following policies when DefaultAudioVideoController is created\\n this.videoDownlinkBandwidthPolicy = new AllHighestVideoBandwidthPolicy_1.default(this.credentials ? this.credentials.attendeeId : null);\\n this.videoUplinkBandwidthPolicy = new NScaleVideoUplinkBandwidthPolicy_1.default(this.credentials ? this.credentials.attendeeId : null);\\n }\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n toLowerCasePropertyNames(input) {\\n if (input === null) {\\n return null;\\n }\\n else if (typeof input !== 'object') {\\n return input;\\n }\\n else if (Array.isArray(input)) {\\n return input.map(this.toLowerCasePropertyNames);\\n }\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n return Object.keys(input).reduce((result, key) => {\\n const value = input[key];\\n const newValue = typeof value === 'object' ? this.toLowerCasePropertyNames(value) : value;\\n result[key.toLowerCase()] = newValue;\\n return result;\\n }, {});\\n }\\n}\\nexports[\\\"default\\\"] = MeetingSessionConfiguration;\\n//# sourceMappingURL=MeetingSessionConfiguration.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionConfiguration.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionCredentials.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionCredentials.js ***!\n \\********************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[MeetingSessionCredentials]] includes the credentials used to authenticate\\n * the attendee on the meeting\\n */\\nclass MeetingSessionCredentials {\\n constructor() {\\n /**\\n * The attendee id for these credentials.\\n */\\n this.attendeeId = null;\\n /**\\n * The external user id associated with the attendee.\\n */\\n this.externalUserId = null;\\n /**\\n * If set, the session will be authenticated with a join token.\\n */\\n this.joinToken = null;\\n }\\n /**\\n * Overrides JSON serialization so that join token is redacted.\\n */\\n toJSON() {\\n return {\\n attendeeId: this.attendeeId,\\n joinToken: this.joinToken === null ? null : '',\\n };\\n }\\n}\\nexports[\\\"default\\\"] = MeetingSessionCredentials;\\n//# sourceMappingURL=MeetingSessionCredentials.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionCredentials.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEvent.js\":\n/*!***********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEvent.js ***!\n \\***********************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.MeetingSessionLifecycleEvent = void 0;\\n/**\\n * [[MeetingSessionLifecycleEvent]] indicates the lifecycle status.\\n * Add new enums to the bottom. We depend on these numbers for analytics.\\n */\\nvar MeetingSessionLifecycleEvent;\\n(function (MeetingSessionLifecycleEvent) {\\n /**\\n * The session is connecting, either to start a new call, or reconnect to an existing one.\\n */\\n MeetingSessionLifecycleEvent[MeetingSessionLifecycleEvent[\\\"Connecting\\\"] = 0] = \\\"Connecting\\\";\\n /**\\n * The session successfully arrived in the started state either for the first time or\\n * due to a change in connection type.\\n */\\n MeetingSessionLifecycleEvent[MeetingSessionLifecycleEvent[\\\"Started\\\"] = 1] = \\\"Started\\\";\\n /**\\n * The session came to a stop, either from leaving or due to a failure.\\n */\\n MeetingSessionLifecycleEvent[MeetingSessionLifecycleEvent[\\\"Stopped\\\"] = 2] = \\\"Stopped\\\";\\n})(MeetingSessionLifecycleEvent = exports.MeetingSessionLifecycleEvent || (exports.MeetingSessionLifecycleEvent = {}));\\nexports[\\\"default\\\"] = MeetingSessionLifecycleEvent;\\n//# sourceMappingURL=MeetingSessionLifecycleEvent.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEvent.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEventCondition.js\":\n/*!********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEventCondition.js ***!\n \\********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.MeetingSessionLifecycleEventCondition = void 0;\\n/**\\n * [[MeetingSessionLifecycleEventCondition]] indicates the lifecycle event condition.\\n * Add new enums to the bottom. We depend on these numbers for analytics.\\n */\\nvar MeetingSessionLifecycleEventCondition;\\n(function (MeetingSessionLifecycleEventCondition) {\\n /**\\n * The session is connecting for the first time.\\n */\\n MeetingSessionLifecycleEventCondition[MeetingSessionLifecycleEventCondition[\\\"ConnectingNew\\\"] = 0] = \\\"ConnectingNew\\\";\\n /**\\n * The session was connected before and is now reconnecting.\\n */\\n MeetingSessionLifecycleEventCondition[MeetingSessionLifecycleEventCondition[\\\"ReconnectingExisting\\\"] = 1] = \\\"ReconnectingExisting\\\";\\n /**\\n * The session successfully arrived in the started state for the first time.\\n */\\n MeetingSessionLifecycleEventCondition[MeetingSessionLifecycleEventCondition[\\\"StartedNew\\\"] = 2] = \\\"StartedNew\\\";\\n /**\\n * The session successfully arrived in the started state but was connected before.\\n * This can happen, for example, when the connection type changes.\\n */\\n MeetingSessionLifecycleEventCondition[MeetingSessionLifecycleEventCondition[\\\"StartedExisting\\\"] = 3] = \\\"StartedExisting\\\";\\n /**\\n * The session successfully arrived in the started state following a reconnect.\\n */\\n MeetingSessionLifecycleEventCondition[MeetingSessionLifecycleEventCondition[\\\"StartedAfterReconnect\\\"] = 4] = \\\"StartedAfterReconnect\\\";\\n /**\\n * The session stopped cleanly, probably due to leaving the call.\\n */\\n MeetingSessionLifecycleEventCondition[MeetingSessionLifecycleEventCondition[\\\"StoppedCleanly\\\"] = 5] = \\\"StoppedCleanly\\\";\\n /**\\n * The session stopped due to a failure. A status code will indicate the cause of\\n * the failure.\\n */\\n MeetingSessionLifecycleEventCondition[MeetingSessionLifecycleEventCondition[\\\"StoppedWithFailure\\\"] = 6] = \\\"StoppedWithFailure\\\";\\n})(MeetingSessionLifecycleEventCondition = exports.MeetingSessionLifecycleEventCondition || (exports.MeetingSessionLifecycleEventCondition = {}));\\nexports[\\\"default\\\"] = MeetingSessionLifecycleEventCondition;\\n//# sourceMappingURL=MeetingSessionLifecycleEventCondition.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionLifecycleEventCondition.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatus.js\":\n/*!***************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatus.js ***!\n \\***************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst MeetingSessionStatusCode_1 = __webpack_require__(/*! ./MeetingSessionStatusCode */ \\\"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js\\\");\\n/**\\n * [[MeetingSessionStatus]] indicates a status received regarding the session.\\n */\\nclass MeetingSessionStatus {\\n constructor(_statusCode) {\\n this._statusCode = _statusCode;\\n }\\n statusCode() {\\n return this._statusCode;\\n }\\n isFailure() {\\n switch (this._statusCode) {\\n case MeetingSessionStatusCode_1.default.AudioAuthenticationRejected:\\n case MeetingSessionStatusCode_1.default.AudioCallAtCapacity:\\n case MeetingSessionStatusCode_1.default.AudioInternalServerError:\\n case MeetingSessionStatusCode_1.default.AudioServiceUnavailable:\\n case MeetingSessionStatusCode_1.default.AudioDisconnected:\\n case MeetingSessionStatusCode_1.default.VideoCallAtSourceCapacity:\\n case MeetingSessionStatusCode_1.default.SignalingBadRequest:\\n case MeetingSessionStatusCode_1.default.SignalingInternalServerError:\\n case MeetingSessionStatusCode_1.default.SignalingRequestFailed:\\n case MeetingSessionStatusCode_1.default.StateMachineTransitionFailed:\\n case MeetingSessionStatusCode_1.default.ICEGatheringTimeoutWorkaround:\\n case MeetingSessionStatusCode_1.default.ConnectionHealthReconnect:\\n case MeetingSessionStatusCode_1.default.RealtimeApiFailed:\\n case MeetingSessionStatusCode_1.default.TaskFailed:\\n case MeetingSessionStatusCode_1.default.NoAttendeePresent:\\n return true;\\n default:\\n return false;\\n }\\n }\\n isTerminal() {\\n switch (this._statusCode) {\\n case MeetingSessionStatusCode_1.default.Left:\\n case MeetingSessionStatusCode_1.default.AudioJoinedFromAnotherDevice:\\n case MeetingSessionStatusCode_1.default.AudioAuthenticationRejected:\\n case MeetingSessionStatusCode_1.default.AudioCallAtCapacity:\\n case MeetingSessionStatusCode_1.default.MeetingEnded:\\n case MeetingSessionStatusCode_1.default.AudioDisconnected:\\n case MeetingSessionStatusCode_1.default.TURNCredentialsForbidden:\\n case MeetingSessionStatusCode_1.default.SignalingBadRequest:\\n case MeetingSessionStatusCode_1.default.SignalingRequestFailed:\\n case MeetingSessionStatusCode_1.default.VideoCallAtSourceCapacity:\\n case MeetingSessionStatusCode_1.default.RealtimeApiFailed:\\n return true;\\n default:\\n return false;\\n }\\n }\\n isAudioConnectionFailure() {\\n switch (this._statusCode) {\\n case MeetingSessionStatusCode_1.default.AudioAuthenticationRejected:\\n case MeetingSessionStatusCode_1.default.AudioInternalServerError:\\n case MeetingSessionStatusCode_1.default.AudioServiceUnavailable:\\n case MeetingSessionStatusCode_1.default.StateMachineTransitionFailed:\\n case MeetingSessionStatusCode_1.default.ICEGatheringTimeoutWorkaround:\\n case MeetingSessionStatusCode_1.default.SignalingBadRequest:\\n case MeetingSessionStatusCode_1.default.SignalingInternalServerError:\\n case MeetingSessionStatusCode_1.default.SignalingRequestFailed:\\n case MeetingSessionStatusCode_1.default.RealtimeApiFailed:\\n case MeetingSessionStatusCode_1.default.NoAttendeePresent:\\n return true;\\n default:\\n return false;\\n }\\n }\\n static fromSignalFrame(frame) {\\n if (frame.error && frame.error.status) {\\n return this.fromSignalingStatus(frame.error.status);\\n }\\n else if (frame.type === SignalingProtocol_js_1.SdkSignalFrame.Type.AUDIO_STATUS) {\\n if (frame.audioStatus) {\\n return this.fromAudioStatus(frame.audioStatus.audioStatus);\\n }\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.SignalingRequestFailed);\\n }\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.OK);\\n }\\n static fromAudioStatus(status) {\\n // TODO: Add these numbers to proto definition and reference them here.\\n switch (status) {\\n case 200:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.OK);\\n case 301:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioJoinedFromAnotherDevice);\\n case 302:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioDisconnectAudio);\\n case 403:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioAuthenticationRejected);\\n case 409:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioCallAtCapacity);\\n case 410:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.MeetingEnded);\\n case 500:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioInternalServerError);\\n case 503:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioServiceUnavailable);\\n default:\\n switch (Math.floor(status / 100)) {\\n case 2:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.OK);\\n default:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioDisconnected);\\n }\\n }\\n }\\n static fromSignalingStatus(status) {\\n // TODO: Add these numbers to proto definition and reference them here.\\n switch (status) {\\n case 206:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.VideoCallSwitchToViewOnly);\\n case 509:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.VideoCallAtSourceCapacity);\\n default:\\n switch (Math.floor(status / 100)) {\\n case 2:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.OK);\\n case 4:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.SignalingBadRequest);\\n case 5:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.SignalingInternalServerError);\\n default:\\n return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.SignalingRequestFailed);\\n }\\n }\\n }\\n}\\nexports[\\\"default\\\"] = MeetingSessionStatus;\\n//# sourceMappingURL=MeetingSessionStatus.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatus.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js\":\n/*!*******************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js ***!\n \\*******************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.MeetingSessionStatusCode = void 0;\\nvar MeetingSessionStatusCode;\\n(function (MeetingSessionStatusCode) {\\n /**\\n * Everything is OK so far.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"OK\\\"] = 0] = \\\"OK\\\";\\n /**\\n * The attendee left the meeting normally.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"Left\\\"] = 1] = \\\"Left\\\";\\n /**\\n * The attendee joined from another device.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioJoinedFromAnotherDevice\\\"] = 2] = \\\"AudioJoinedFromAnotherDevice\\\";\\n /**\\n * The attendee should explicitly switch itself from joined with audio to\\n * checked-in.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioDisconnectAudio\\\"] = 3] = \\\"AudioDisconnectAudio\\\";\\n /**\\n * Authentication was rejected. The client is not allowed on this meeting.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioAuthenticationRejected\\\"] = 4] = \\\"AudioAuthenticationRejected\\\";\\n /**\\n * The client can not join because the meeting is at capacity.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioCallAtCapacity\\\"] = 5] = \\\"AudioCallAtCapacity\\\";\\n /**\\n * Deprecated. The meeting has ended. This is a legacy alias for MeetingEnded and will\\n * be removed in v2.0.0.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioCallEnded\\\"] = 6] = \\\"AudioCallEnded\\\";\\n /**\\n * Deprecated. The meeting has ended. This is a legacy alias for MeetingEnded and will\\n * be removed in v2.0.0.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"TURNMeetingEnded\\\"] = 6] = \\\"TURNMeetingEnded\\\";\\n /**\\n * The meeting has ended.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"MeetingEnded\\\"] = 6] = \\\"MeetingEnded\\\";\\n /**\\n * There was an internal server error with the audio leg.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioInternalServerError\\\"] = 7] = \\\"AudioInternalServerError\\\";\\n /**\\n * Could not connect the audio leg due to the service being unavailable.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioServiceUnavailable\\\"] = 8] = \\\"AudioServiceUnavailable\\\";\\n /**\\n * The audio leg failed.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioDisconnected\\\"] = 9] = \\\"AudioDisconnected\\\";\\n /**\\n * The client has asked to send and receive video, but it is only possible to\\n * continue in view-only mode (receiving video). This should be handled by\\n * explicitly switching to view-only mode.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"VideoCallSwitchToViewOnly\\\"] = 10] = \\\"VideoCallSwitchToViewOnly\\\";\\n /** This can happen when you attempt to join a video meeting in \\\"send only\\\" mode\\n (transmitting your camera, but not receiving anything -- this isn't something\\n we ever do in practice, but it is supported on the server). It should be\\n treated as \\\"fatal\\\" and probably should not be retried (despite the 5xx nature). */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"VideoCallAtSourceCapacity\\\"] = 11] = \\\"VideoCallAtSourceCapacity\\\";\\n /**\\n * Bad request on JOIN or SUBSCRIBE\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"SignalingBadRequest\\\"] = 12] = \\\"SignalingBadRequest\\\";\\n /**\\n * Internal server error on JOIN or SUBSCRIBE\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"SignalingInternalServerError\\\"] = 13] = \\\"SignalingInternalServerError\\\";\\n /**\\n * Received unknown signaling error frame\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"SignalingRequestFailed\\\"] = 14] = \\\"SignalingRequestFailed\\\";\\n /**\\n * Failed to transition between two states for some reason\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"StateMachineTransitionFailed\\\"] = 15] = \\\"StateMachineTransitionFailed\\\";\\n /**\\n * Timed out gathering ICE candidates. If in Chrome, this could be an\\n * indication that the browser is in a bad state due to a VPN reconnect and\\n * the user should try quitting and relaunching the app. See:\\n * https://bugs.chromium.org/p/webrtc/issues/detail?id=9097\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"ICEGatheringTimeoutWorkaround\\\"] = 16] = \\\"ICEGatheringTimeoutWorkaround\\\";\\n /**\\n * Due to connection health, a reconnect has been triggered.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"ConnectionHealthReconnect\\\"] = 17] = \\\"ConnectionHealthReconnect\\\";\\n /**\\n * The realtime API failed in some way. This indicates a fatal problem.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"RealtimeApiFailed\\\"] = 18] = \\\"RealtimeApiFailed\\\";\\n /**\\n * A task failed for an unknown reason.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"TaskFailed\\\"] = 19] = \\\"TaskFailed\\\";\\n /**\\n * Audio device has switched.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"AudioDeviceSwitched\\\"] = 20] = \\\"AudioDeviceSwitched\\\";\\n /**\\n * Session update produces incompatible SDP.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"IncompatibleSDP\\\"] = 21] = \\\"IncompatibleSDP\\\";\\n /**\\n * This can happen when you attempt to join a meeting which has ended or attendee got removed\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"TURNCredentialsForbidden\\\"] = 22] = \\\"TURNCredentialsForbidden\\\";\\n /**\\n * The attendee is not present.\\n */\\n MeetingSessionStatusCode[MeetingSessionStatusCode[\\\"NoAttendeePresent\\\"] = 23] = \\\"NoAttendeePresent\\\";\\n})(MeetingSessionStatusCode = exports.MeetingSessionStatusCode || (exports.MeetingSessionStatusCode = {}));\\nexports[\\\"default\\\"] = MeetingSessionStatusCode;\\n//# sourceMappingURL=MeetingSessionStatusCode.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionStatusCode.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionTURNCredentials.js\":\n/*!************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionTURNCredentials.js ***!\n \\************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[MeetingSessionTURNCredentials]] contains TURN credentials from the TURN server.\\n */\\nclass MeetingSessionTURNCredentials {\\n constructor() {\\n this.username = null;\\n this.password = null;\\n this.ttl = null;\\n this.uris = null;\\n }\\n}\\nexports[\\\"default\\\"] = MeetingSessionTURNCredentials;\\n//# sourceMappingURL=MeetingSessionTURNCredentials.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionTURNCredentials.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionURLs.js\":\n/*!*************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionURLs.js ***!\n \\*************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[MeetingSessionURLs]] contains the URLs that will be used to reach the\\n * meeting service.\\n */\\nclass MeetingSessionURLs {\\n constructor() {\\n /**\\n * The audio host URL of the session\\n */\\n this._audioHostURL = null;\\n /**\\n * The screen data URL of the session\\n */\\n this._screenDataURL = null;\\n /**\\n * The screen sharing URL of the session\\n */\\n this._screenSharingURL = null;\\n /**\\n * The screen viewing URL of the session\\n */\\n this._screenViewingURL = null;\\n /**\\n * The signaling URL of the session\\n */\\n this._signalingURL = null;\\n /**\\n * The TURN control URL of the session\\n */\\n this._turnControlURL = null;\\n /**\\n * Function to transform URLs. Use this to rewrite URLs to traverse proxies.\\n * The default implementation returns the original URL unchanged.\\n */\\n this.urlRewriter = (url) => {\\n return url;\\n };\\n }\\n /**\\n * Gets the audio host URL after applying the urlRewriter function.\\n */\\n get audioHostURL() {\\n return this.urlRewriter(this._audioHostURL);\\n }\\n /**\\n * Sets the raw audio host URL.\\n */\\n set audioHostURL(value) {\\n this._audioHostURL = value;\\n }\\n /**\\n * Gets the screen data URL after applying the urlRewriter function.\\n */\\n get screenDataURL() {\\n return this.urlRewriter(this._screenDataURL);\\n }\\n /**\\n * Sets the raw screen data URL.\\n */\\n set screenDataURL(value) {\\n this._screenDataURL = value;\\n }\\n /**\\n * Gets the screen sharing URL after applying the urlRewriter function.\\n */\\n get screenSharingURL() {\\n return this.urlRewriter(this._screenSharingURL);\\n }\\n /**\\n * Sets the raw screen sharing URL.\\n */\\n set screenSharingURL(value) {\\n this._screenSharingURL = value;\\n }\\n /**\\n * Gets the screen viewing URL after applying the urlRewriter function.\\n */\\n get screenViewingURL() {\\n return this.urlRewriter(this._screenViewingURL);\\n }\\n /**\\n * Sets the raw screen viewing URL.\\n */\\n set screenViewingURL(value) {\\n this._screenViewingURL = value;\\n }\\n /**\\n * Gets the signaling URL after applying the urlRewriter function.\\n */\\n get signalingURL() {\\n return this.urlRewriter(this._signalingURL);\\n }\\n /**\\n * Sets the raw signaling URL.\\n */\\n set signalingURL(value) {\\n this._signalingURL = value;\\n }\\n /**\\n * Gets the TURN control URL after applying the urlRewriter function.\\n */\\n get turnControlURL() {\\n return this.urlRewriter(this._turnControlURL);\\n }\\n /**\\n * Sets the raw TURN control URL.\\n */\\n set turnControlURL(value) {\\n this._turnControlURL = value;\\n }\\n}\\nexports[\\\"default\\\"] = MeetingSessionURLs;\\n//# sourceMappingURL=MeetingSessionURLs.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionURLs.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionVideoAvailability.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionVideoAvailability.js ***!\n \\**************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[MeetingSessionVideoAvailability]] contains the video availability information.\\n */\\nclass MeetingSessionVideoAvailability {\\n constructor() {\\n /**\\n * Indicates whether one or more remote video streams\\n * are available for streaming. This can be used to decide whether or not to\\n * switch the connection type to include video.\\n */\\n this.remoteVideoAvailable = false;\\n /**\\n * Indicates whether the server has a slot available for\\n * this client's local video tile. If the client is already sending a local\\n * video tile, then this will be true. This property can be used to decide\\n * whether to offer the option to start the local video tile.\\n */\\n this.canStartLocalVideo = false;\\n }\\n /**\\n * Returns whether the fields are the same as that of another availability object.\\n */\\n equal(other) {\\n return (this.remoteVideoAvailable === other.remoteVideoAvailable &&\\n this.canStartLocalVideo === other.canStartLocalVideo);\\n }\\n /**\\n * Returns a deep copy of this object.\\n */\\n clone() {\\n const cloned = new MeetingSessionVideoAvailability();\\n cloned.remoteVideoAvailable = this.remoteVideoAvailable;\\n cloned.canStartLocalVideo = this.canStartLocalVideo;\\n return cloned;\\n }\\n}\\nexports[\\\"default\\\"] = MeetingSessionVideoAvailability;\\n//# sourceMappingURL=MeetingSessionVideoAvailability.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/meetingsession/MeetingSessionVideoAvailability.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/message/Message.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/message/Message.js ***!\n \\*******************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nclass Message {\\n constructor(type, // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\\n headers, payload) {\\n this.type = type;\\n this.headers = headers;\\n this.payload = payload;\\n }\\n}\\nexports[\\\"default\\\"] = Message;\\n//# sourceMappingURL=Message.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/message/Message.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/messagingsession/DefaultMessagingSession.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/messagingsession/DefaultMessagingSession.js ***!\n \\********************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\n return new (P || (P = Promise))(function (resolve, reject) {\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\n });\\n};\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst FullJitterBackoff_1 = __webpack_require__(/*! ../backoff/FullJitterBackoff */ \\\"./node_modules/amazon-chime-sdk-js/build/backoff/FullJitterBackoff.js\\\");\\nconst Message_1 = __webpack_require__(/*! ../message/Message */ \\\"./node_modules/amazon-chime-sdk-js/build/message/Message.js\\\");\\nconst DefaultReconnectController_1 = __webpack_require__(/*! ../reconnectcontroller/DefaultReconnectController */ \\\"./node_modules/amazon-chime-sdk-js/build/reconnectcontroller/DefaultReconnectController.js\\\");\\nconst AsyncScheduler_1 = __webpack_require__(/*! ../scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nconst DefaultSigV4_1 = __webpack_require__(/*! ../sigv4/DefaultSigV4 */ \\\"./node_modules/amazon-chime-sdk-js/build/sigv4/DefaultSigV4.js\\\");\\nconst DefaultWebSocketAdapter_1 = __webpack_require__(/*! ../websocketadapter/DefaultWebSocketAdapter */ \\\"./node_modules/amazon-chime-sdk-js/build/websocketadapter/DefaultWebSocketAdapter.js\\\");\\nconst WebSocketReadyState_1 = __webpack_require__(/*! ../websocketadapter/WebSocketReadyState */ \\\"./node_modules/amazon-chime-sdk-js/build/websocketadapter/WebSocketReadyState.js\\\");\\nclass DefaultMessagingSession {\\n constructor(configuration, logger, webSocket, reconnectController, sigV4) {\\n this.configuration = configuration;\\n this.logger = logger;\\n this.webSocket = webSocket;\\n this.reconnectController = reconnectController;\\n this.sigV4 = sigV4;\\n this.observerQueue = new Set();\\n if (!this.webSocket) {\\n this.webSocket = new DefaultWebSocketAdapter_1.default(this.logger);\\n }\\n if (!this.reconnectController) {\\n this.reconnectController = new DefaultReconnectController_1.default(configuration.reconnectTimeoutMs, new FullJitterBackoff_1.default(configuration.reconnectFixedWaitMs, configuration.reconnectShortBackoffMs, configuration.reconnectLongBackoffMs));\\n }\\n if (!this.sigV4) {\\n this.sigV4 = new DefaultSigV4_1.default(this.configuration.chimeClient, this.configuration.awsClient);\\n }\\n }\\n addObserver(observer) {\\n this.logger.info('adding messaging observer');\\n this.observerQueue.add(observer);\\n }\\n removeObserver(observer) {\\n this.logger.info('removing messaging observer');\\n this.observerQueue.delete(observer);\\n }\\n start() {\\n if (this.isClosed()) {\\n this.startConnecting(false);\\n }\\n else {\\n this.logger.info('messaging session already started');\\n }\\n }\\n stop() {\\n if (!this.isClosed()) {\\n this.isClosing = true;\\n this.webSocket.close();\\n }\\n else {\\n this.logger.info('no existing connection needs closing');\\n }\\n }\\n forEachObserver(observerFunc) {\\n for (const observer of this.observerQueue) {\\n AsyncScheduler_1.default.nextTick(() => {\\n if (this.observerQueue.has(observer)) {\\n observerFunc(observer);\\n }\\n });\\n }\\n }\\n setUpEventListeners() {\\n this.webSocket.addEventListener('open', () => {\\n this.openEventHandler();\\n });\\n this.webSocket.addEventListener('message', (event) => {\\n this.receiveMessageHandler(event.data);\\n });\\n this.webSocket.addEventListener('close', (event) => {\\n this.closeEventHandler(event);\\n });\\n this.webSocket.addEventListener('error', () => {\\n this.logger.error(`WebSocket error`);\\n });\\n }\\n startConnecting(reconnecting) {\\n const signedUrl = this.prepareWebSocketUrl();\\n this.logger.info(`opening connection to ${signedUrl}`);\\n if (!reconnecting) {\\n this.reconnectController.reset();\\n }\\n if (this.reconnectController.hasStartedConnectionAttempt()) {\\n this.reconnectController.startedConnectionAttempt(false);\\n }\\n else {\\n this.reconnectController.startedConnectionAttempt(true);\\n }\\n this.webSocket.create(signedUrl, [], true);\\n this.forEachObserver(observer => {\\n if (observer.messagingSessionDidStartConnecting) {\\n observer.messagingSessionDidStartConnecting(reconnecting);\\n }\\n });\\n this.setUpEventListeners();\\n }\\n prepareWebSocketUrl() {\\n const queryParams = new Map();\\n queryParams.set('userArn', [this.configuration.userArn]);\\n queryParams.set('sessionId', [this.configuration.messagingSessionId]);\\n return this.sigV4.signURL('GET', 'wss', 'chime', this.configuration.endpointUrl, '/connect', '', queryParams);\\n }\\n isClosed() {\\n return (this.webSocket.readyState() === WebSocketReadyState_1.default.None ||\\n this.webSocket.readyState() === WebSocketReadyState_1.default.Closed);\\n }\\n openEventHandler() {\\n this.reconnectController.reset();\\n this.isFirstMessageReceived = false;\\n }\\n receiveMessageHandler(data) {\\n try {\\n const jsonData = JSON.parse(data);\\n const messageType = jsonData.Headers['x-amz-chime-event-type'];\\n const message = new Message_1.default(messageType, jsonData.Headers, jsonData.Payload || null);\\n if (!this.isFirstMessageReceived) {\\n // Since backend does authorization after the websocket open we cannot rely on open event for didStart\\n // as the socket will close if authorization fail after it open. So we trigger didStart on first message event\\n // instead\\n this.forEachObserver(observer => {\\n if (observer.messagingSessionDidStart) {\\n observer.messagingSessionDidStart();\\n }\\n });\\n this.isFirstMessageReceived = true;\\n }\\n this.forEachObserver(observer => {\\n if (observer.messagingSessionDidReceiveMessage) {\\n observer.messagingSessionDidReceiveMessage(message);\\n }\\n });\\n }\\n catch (error) {\\n this.logger.error(`Messaging parsing failed: ${error}`);\\n }\\n }\\n closeEventHandler(event) {\\n this.logger.info(`WebSocket close: ${event.code} ${event.reason}`);\\n this.webSocket.destroy();\\n if (!this.isClosing &&\\n this.canReconnect(event.code) &&\\n this.reconnectController.retryWithBackoff(() => __awaiter(this, void 0, void 0, function* () {\\n this.startConnecting(true);\\n }), null)) {\\n return;\\n }\\n this.isClosing = false;\\n if (this.isFirstMessageReceived) {\\n this.forEachObserver(observer => {\\n if (observer.messagingSessionDidStop) {\\n observer.messagingSessionDidStop(event);\\n }\\n });\\n }\\n }\\n canReconnect(closeCode) {\\n // 4003 is Kicked closing event from the back end\\n return (closeCode === 1001 ||\\n closeCode === 1006 ||\\n (closeCode >= 1011 && closeCode <= 1014) ||\\n (closeCode > 4000 && closeCode !== 4002 && closeCode !== 4003 && closeCode !== 4401));\\n }\\n}\\nexports[\\\"default\\\"] = DefaultMessagingSession;\\n//# sourceMappingURL=DefaultMessagingSession.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/messagingsession/DefaultMessagingSession.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/messagingsession/MessagingSessionConfiguration.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/messagingsession/MessagingSessionConfiguration.js ***!\n \\**************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[MessagingSessionConfiguration]] contains the information necessary to start\\n * a messaging session.\\n */\\n/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/explicit-module-boundary-types: 0 */\\nclass MessagingSessionConfiguration {\\n /**\\n * Constructs a MessagingSessionConfiguration optionally with userArn, messaging session id, a messaging session\\n * endpoint URL, the chimeClient, and the AWSClient.\\n * The messaging session id is to uniquely identify this messaging session for the userArn.\\n * If messaging session id is passed in as null, it will be automatically generated.\\n */\\n constructor(userArn, messagingSessionId, endpointUrl, chimeClient, awsClient) {\\n this.userArn = userArn;\\n this.messagingSessionId = messagingSessionId;\\n this.endpointUrl = endpointUrl;\\n this.chimeClient = chimeClient;\\n this.awsClient = awsClient;\\n /**\\n * Maximum amount of time in milliseconds to allow for reconnecting.\\n */\\n this.reconnectTimeoutMs = 10 * 1000;\\n /**\\n * Fixed wait amount in milliseconds between reconnecting attempts.\\n */\\n this.reconnectFixedWaitMs = 0;\\n /**\\n * The short back off time in milliseconds between reconnecting attempts.\\n */\\n this.reconnectShortBackoffMs = 1 * 1000;\\n /**\\n * The short back off time in milliseconds between reconnecting attempts.\\n */\\n this.reconnectLongBackoffMs = 5 * 1000;\\n if (!this.messagingSessionId) {\\n this.messagingSessionId = this.generateSessionId();\\n }\\n }\\n generateSessionId() {\\n const num = new Uint32Array(1);\\n const randomNum = window.crypto.getRandomValues(num);\\n return randomNum[0].toString();\\n }\\n}\\nexports[\\\"default\\\"] = MessagingSessionConfiguration;\\n//# sourceMappingURL=MessagingSessionConfiguration.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/messagingsession/MessagingSessionConfiguration.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/modality/DefaultModality.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/modality/DefaultModality.js ***!\n \\****************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst ContentShareConstants_1 = __webpack_require__(/*! ../contentsharecontroller/ContentShareConstants */ \\\"./node_modules/amazon-chime-sdk-js/build/contentsharecontroller/ContentShareConstants.js\\\");\\nclass DefaultModality {\\n constructor(_id) {\\n this._id = _id;\\n }\\n id() {\\n return this._id;\\n }\\n base() {\\n if (!this._id) {\\n return '';\\n }\\n return this._id.split(DefaultModality.MODALITY_SEPARATOR)[0];\\n }\\n modality() {\\n if (!this._id) {\\n return '';\\n }\\n const components = this._id.split(DefaultModality.MODALITY_SEPARATOR);\\n if (components.length === 2) {\\n return components[1];\\n }\\n return '';\\n }\\n hasModality(modality) {\\n return modality !== '' && this.modality() === modality;\\n }\\n withModality(modality) {\\n const m = new DefaultModality(this.base() + DefaultModality.MODALITY_SEPARATOR + modality);\\n if (modality === '' ||\\n this.base() === '' ||\\n new DefaultModality(m._id).modality() !== modality) {\\n return new DefaultModality(this.base());\\n }\\n return m;\\n }\\n}\\nexports[\\\"default\\\"] = DefaultModality;\\nDefaultModality.MODALITY_SEPARATOR = ContentShareConstants_1.default.Modality[0];\\nDefaultModality.MODALITY_CONTENT = ContentShareConstants_1.default.Modality.substr(1);\\n//# sourceMappingURL=DefaultModality.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/modality/DefaultModality.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/pingpong/DefaultPingPong.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/pingpong/DefaultPingPong.js ***!\n \\****************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst Maybe_1 = __webpack_require__(/*! ../maybe/Maybe */ \\\"./node_modules/amazon-chime-sdk-js/build/maybe/Maybe.js\\\");\\nconst AsyncScheduler_1 = __webpack_require__(/*! ../scheduler/AsyncScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\\\");\\nconst IntervalScheduler_1 = __webpack_require__(/*! ../scheduler/IntervalScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js\\\");\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ../signalingclient/SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\n/**\\n * [[DefaultPingPong]] implements the PingPong and SignalingClientObserver interface.\\n */\\nclass DefaultPingPong {\\n constructor(signalingClient, intervalMs, logger) {\\n this.signalingClient = signalingClient;\\n this.intervalMs = intervalMs;\\n this.logger = logger;\\n this.observerQueue = new Set();\\n this.consecutivePongsUnaccountedFor = 0;\\n this.intervalScheduler = new IntervalScheduler_1.default(this.intervalMs);\\n this.pingId = 0;\\n }\\n addObserver(observer) {\\n this.logger.info('adding a ping-pong observer');\\n this.observerQueue.add(observer);\\n }\\n removeObserver(observer) {\\n this.logger.info('removing a ping-pong observer');\\n this.observerQueue.delete(observer);\\n }\\n forEachObserver(observerFunc) {\\n for (const observer of this.observerQueue) {\\n AsyncScheduler_1.default.nextTick(() => {\\n if (this.observerQueue.has(observer)) {\\n observerFunc(observer);\\n }\\n });\\n }\\n }\\n start() {\\n this.stop();\\n this.signalingClient.registerObserver(this);\\n if (this.signalingClient.ready()) {\\n this.startPingInterval();\\n }\\n }\\n stop() {\\n this.stopPingInterval();\\n this.signalingClient.removeObserver(this);\\n }\\n startPingInterval() {\\n this.intervalScheduler.start(() => {\\n this.ping();\\n });\\n this.ping();\\n }\\n stopPingInterval() {\\n this.intervalScheduler.stop();\\n this.pingId = 0;\\n this.consecutivePongsUnaccountedFor = 0;\\n }\\n ping() {\\n if (this.consecutivePongsUnaccountedFor > 0) {\\n this.logger.warn(`missed pong ${this.consecutivePongsUnaccountedFor} time(s)`);\\n this.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.didMissPongs).map(f => f.bind(observer)(this.consecutivePongsUnaccountedFor));\\n });\\n }\\n this.consecutivePongsUnaccountedFor += 1;\\n this.pingId = (this.pingId + 1) & 0xffffffff;\\n const ping = SignalingProtocol_js_1.SdkPingPongFrame.create();\\n ping.pingId = this.pingId;\\n ping.type = SignalingProtocol_js_1.SdkPingPongType.PING;\\n this.pingTimestampLocalMs = this.signalingClient.pingPong(ping);\\n this.logger.debug(() => {\\n return `sent ping ${this.pingId}`;\\n });\\n }\\n pong(pingId) {\\n const pong = SignalingProtocol_js_1.SdkPingPongFrame.create();\\n pong.pingId = pingId;\\n pong.type = SignalingProtocol_js_1.SdkPingPongType.PONG;\\n this.signalingClient.pingPong(pong);\\n }\\n handleSignalingClientEvent(event) {\\n switch (event.type) {\\n case SignalingClientEventType_1.default.WebSocketOpen:\\n this.startPingInterval();\\n break;\\n case SignalingClientEventType_1.default.WebSocketFailed:\\n case SignalingClientEventType_1.default.WebSocketError:\\n this.logger.warn(`stopped pinging (${SignalingClientEventType_1.default[event.type]})`);\\n this.stopPingInterval();\\n break;\\n case SignalingClientEventType_1.default.WebSocketClosing:\\n case SignalingClientEventType_1.default.WebSocketClosed:\\n this.logger.info(`stopped pinging (${SignalingClientEventType_1.default[event.type]})`);\\n this.stopPingInterval();\\n break;\\n case SignalingClientEventType_1.default.ReceivedSignalFrame:\\n if (event.message.type !== SignalingProtocol_js_1.SdkSignalFrame.Type.PING_PONG) {\\n break;\\n }\\n if (event.message.pingPong.type === SignalingProtocol_js_1.SdkPingPongType.PONG) {\\n const pingId = event.message.pingPong.pingId;\\n if (pingId !== this.pingId) {\\n this.logger.warn(`unexpected ping id ${pingId} (expected ${this.pingId})`);\\n break;\\n }\\n this.consecutivePongsUnaccountedFor = 0;\\n let pongTimestampRemoteMs;\\n if (typeof event.message.timestampMs === 'number') {\\n pongTimestampRemoteMs = event.message.timestampMs;\\n }\\n else {\\n break;\\n }\\n this.logger.debug(() => {\\n return `received pong ${pingId} with timestamp ${pongTimestampRemoteMs}`;\\n });\\n const pongTimestampLocalMs = event.timestampMs;\\n const pingPongLocalIntervalMs = pongTimestampLocalMs - this.pingTimestampLocalMs;\\n const estimatedPingTimestampRemoteMs = Math.round(pongTimestampRemoteMs - pingPongLocalIntervalMs / 2);\\n const estimatedClockSkewMs = this.pingTimestampLocalMs - estimatedPingTimestampRemoteMs;\\n this.logger.info(`local clock skew estimate=${estimatedClockSkewMs}ms from ping-pong time=${pingPongLocalIntervalMs}ms`);\\n this.forEachObserver((observer) => {\\n Maybe_1.default.of(observer.didReceivePong).map(f => f.bind(observer)(pingId, estimatedClockSkewMs, pingPongLocalIntervalMs));\\n });\\n }\\n else {\\n this.pong(event.message.pingPong.pingId);\\n }\\n break;\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultPingPong;\\n//# sourceMappingURL=DefaultPingPong.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/pingpong/DefaultPingPong.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/DefaultRealtimeController.js\":\n/*!************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/realtimecontroller/DefaultRealtimeController.js ***!\n \\************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst RealtimeState_1 = __webpack_require__(/*! ./RealtimeState */ \\\"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeState.js\\\");\\nconst RealtimeVolumeIndicator_1 = __webpack_require__(/*! ./RealtimeVolumeIndicator */ \\\"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeVolumeIndicator.js\\\");\\n/**\\n * [[DefaultRealtimeController]] is written to adhere to the following tenets to\\n * make privacy and performance bugs significantly less likely.\\n *\\n * 1. Any call to the object is guaranteed to succeed from the caller's\\n * perspective to the maximum extent that this can be ensured. However, all\\n * failures of the object are reported as fatal errors. For example, if local\\n * mute fails, then that is a privacy issue and we must tear down the\\n * connection and try starting over.\\n *\\n * 2. State is owned by the object and is considered authoritative at all times.\\n * For example, if [[realtimeIsLocalAudioMuted]] is true then the user *is*\\n * muted.\\n *\\n * 3. Callbacks are fired synchronously and do their work synchronously. Any\\n * unnecessary asynchronous implementation only invites latency and\\n * increases the surface error for potential errors.\\n *\\n * 4. Mutation only occurs when state changes. All state-changing functions are\\n * idempotent.\\n *\\n * 5. Every conditional branch gets its own if statement and test coverage is\\n * 100% for this object.\\n *\\n * 6. Function parameters and returns use primitives only (no classes or enums).\\n * This minimizes the number of dependencies that consumers have to take on\\n * and allows the object to be more easily wrapped. Values are normalized\\n * where possible.\\n *\\n * 7. The object takes no other non-realtime dependencies.\\n *\\n * 8. Interface functions begin with `realtime` to make boundaries between the\\n * RealtimeController interface and the UI or business logic explicit and\\n * auditable.\\n *\\n * 9. Local state overrides remote state but not vice-versa. For example, if\\n * locally muted with an active audio input and a remote state indicates the\\n * same user is unmuted because the muted state has not yet propagated, then\\n * the volume indicator update for the user would show the remote mute state\\n * as muted. However, if locally muted without an active audio input and a\\n * remote state indicates the user is unmuted (since they are dialed in), the\\n * remote state persists but does not override the local state so\\n * [[realtimeIsLocalAudioMuted]] still returns true.\\n */\\nclass DefaultRealtimeController {\\n constructor() {\\n this.state = new RealtimeState_1.default();\\n }\\n realtimeSetLocalAttendeeId(attendeeId, externalUserId) {\\n this.state.localAttendeeId = attendeeId;\\n this.state.localExternalUserId = externalUserId;\\n }\\n realtimeSetAttendeeIdPresence(attendeeId, present, externalUserId, dropped, posInFrame) {\\n try {\\n if (present) {\\n this.state.attendeeIdToExternalUserId[attendeeId] = externalUserId;\\n }\\n for (const fn of this.state.attendeeIdChangesCallbacks) {\\n fn(attendeeId, present, externalUserId, dropped, posInFrame);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeSubscribeToAttendeeIdPresence(callback) {\\n try {\\n this.state.attendeeIdChangesCallbacks.push(callback);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeToAttendeeIdPresence(callback) {\\n try {\\n const index = this.state.attendeeIdChangesCallbacks.indexOf(callback);\\n if (index !== -1) {\\n this.state.attendeeIdChangesCallbacks.splice(index, 1);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n // Audio Input\\n realtimeSetLocalAudioInput(audioInput) {\\n try {\\n if (this.state.audioInput === audioInput) {\\n return;\\n }\\n this.setAudioInputEnabled(false);\\n this.state.audioInput = audioInput;\\n this.setAudioInputEnabled(!this.state.muted);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n // Muting\\n realtimeSetCanUnmuteLocalAudio(canUnmute) {\\n try {\\n if (this.state.canUnmute === canUnmute) {\\n return;\\n }\\n this.state.canUnmute = canUnmute;\\n for (const fn of this.state.setCanUnmuteLocalAudioCallbacks) {\\n fn(canUnmute);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeSubscribeToSetCanUnmuteLocalAudio(callback) {\\n try {\\n this.state.setCanUnmuteLocalAudioCallbacks.push(callback);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeToSetCanUnmuteLocalAudio(callback) {\\n try {\\n const index = this.state.setCanUnmuteLocalAudioCallbacks.indexOf(callback);\\n if (index !== -1) {\\n this.state.setCanUnmuteLocalAudioCallbacks.splice(index, 1);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeCanUnmuteLocalAudio() {\\n return this.state.canUnmute;\\n }\\n realtimeMuteLocalAudio() {\\n if (this.state.muted) {\\n return;\\n }\\n try {\\n this.setAudioInputEnabled(false);\\n this.state.muted = true;\\n this.realtimeUpdateVolumeIndicator(this.state.localAttendeeId, null, null, null, this.state.localExternalUserId);\\n for (const fn of this.state.muteAndUnmuteLocalAudioCallbacks) {\\n fn(true);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnmuteLocalAudio() {\\n if (!this.state.muted) {\\n return true;\\n }\\n if (!this.state.canUnmute) {\\n return false;\\n }\\n try {\\n this.setAudioInputEnabled(true);\\n this.state.muted = false;\\n this.realtimeUpdateVolumeIndicator(this.state.localAttendeeId, null, null, null, this.state.localExternalUserId);\\n for (const fn of this.state.muteAndUnmuteLocalAudioCallbacks) {\\n fn(false);\\n }\\n return true;\\n }\\n catch (e) {\\n this.onError(e);\\n return false;\\n }\\n }\\n realtimeSubscribeToMuteAndUnmuteLocalAudio(callback) {\\n try {\\n this.state.muteAndUnmuteLocalAudioCallbacks.push(callback);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeToMuteAndUnmuteLocalAudio(callback) {\\n try {\\n const index = this.state.muteAndUnmuteLocalAudioCallbacks.indexOf(callback);\\n if (index !== -1) {\\n this.state.muteAndUnmuteLocalAudioCallbacks.splice(index, 1);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeIsLocalAudioMuted() {\\n return this.state.muted;\\n }\\n // Volume Indicators\\n realtimeSubscribeToVolumeIndicator(attendeeId, callback) {\\n try {\\n if (!this.state.volumeIndicatorCallbacks.hasOwnProperty(attendeeId)) {\\n this.state.volumeIndicatorCallbacks[attendeeId] = [];\\n }\\n this.state.volumeIndicatorCallbacks[attendeeId].push(callback);\\n this.sendVolumeIndicatorChange(attendeeId, true, true, true, this.state.attendeeIdToExternalUserId[attendeeId]);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeFromVolumeIndicator(attendeeId, callback) {\\n try {\\n if (callback) {\\n const index = this.state.volumeIndicatorCallbacks[attendeeId].indexOf(callback);\\n if (index !== -1) {\\n this.state.volumeIndicatorCallbacks[attendeeId].splice(index, 1);\\n }\\n }\\n else {\\n delete this.state.volumeIndicatorCallbacks[attendeeId];\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUpdateVolumeIndicator(attendeeId, volume, muted, signalStrength, externalUserId) {\\n try {\\n muted = this.applyLocalMuteOverride(attendeeId, muted);\\n const state = this.getVolumeIndicatorState(attendeeId);\\n let volumeUpdated = false;\\n let mutedUpdated = false;\\n let signalStrengthUpdated = false;\\n if (muted !== null) {\\n if (state.muted !== muted) {\\n state.muted = muted;\\n mutedUpdated = true;\\n if (state.muted && state.volume !== 0.0) {\\n state.volume = 0.0;\\n volumeUpdated = true;\\n }\\n }\\n }\\n if (!state.muted && volume !== null) {\\n if (state.volume !== volume) {\\n state.volume = volume;\\n volumeUpdated = true;\\n }\\n if (state.muted === null) {\\n state.muted = false;\\n mutedUpdated = true;\\n }\\n }\\n if (signalStrength !== null) {\\n if (state.signalStrength !== signalStrength) {\\n state.signalStrength = signalStrength;\\n signalStrengthUpdated = true;\\n }\\n }\\n this.sendVolumeIndicatorChange(attendeeId, volumeUpdated, mutedUpdated, signalStrengthUpdated, externalUserId);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeSubscribeToLocalSignalStrengthChange(callback) {\\n try {\\n this.state.localSignalStrengthChangeCallbacks.push(callback);\\n if (this.state.localAttendeeId === null) {\\n return;\\n }\\n this.sendLocalSignalStrengthChange(this.state.localAttendeeId, true);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeToLocalSignalStrengthChange(callback) {\\n try {\\n const index = this.state.localSignalStrengthChangeCallbacks.indexOf(callback);\\n if (index !== -1) {\\n this.state.localSignalStrengthChangeCallbacks.splice(index, 1);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeSubscribeToSendDataMessage(\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n callback) {\\n try {\\n this.state.sendDataMessageCallbacks.push(callback);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeFromSendDataMessage(\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n callback) {\\n try {\\n const index = this.state.sendDataMessageCallbacks.indexOf(callback);\\n if (index !== -1) {\\n this.state.sendDataMessageCallbacks.splice(index, 1);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeSendDataMessage(topic, data, // eslint-disable-line @typescript-eslint/no-explicit-any\\n lifetimeMs) {\\n try {\\n for (const fn of this.state.sendDataMessageCallbacks) {\\n fn(topic, data, lifetimeMs);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeSubscribeToReceiveDataMessage(topic, callback) {\\n try {\\n if (this.state.receiveDataMessageCallbacks.has(topic)) {\\n this.state.receiveDataMessageCallbacks.get(topic).push(callback);\\n }\\n else {\\n this.state.receiveDataMessageCallbacks.set(topic, [callback]);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeFromReceiveDataMessage(topic) {\\n try {\\n this.state.receiveDataMessageCallbacks.delete(topic);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeReceiveDataMessage(dataMessage) {\\n try {\\n if (this.state.receiveDataMessageCallbacks.has(dataMessage.topic)) {\\n for (const fn of this.state.receiveDataMessageCallbacks.get(dataMessage.topic)) {\\n fn(dataMessage);\\n }\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n // Error Handling\\n realtimeSubscribeToFatalError(callback) {\\n try {\\n this.state.fatalErrorCallbacks.push(callback);\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n realtimeUnsubscribeToFatalError(callback) {\\n try {\\n const index = this.state.fatalErrorCallbacks.indexOf(callback);\\n if (index !== -1) {\\n this.state.fatalErrorCallbacks.splice(index, 1);\\n }\\n }\\n catch (e) {\\n this.onError(e);\\n }\\n }\\n // Internals\\n setAudioInputEnabled(enabled) {\\n if (!this.state.audioInput) {\\n return;\\n }\\n for (const track of this.state.audioInput.getTracks()) {\\n if (track.enabled === enabled) {\\n continue;\\n }\\n track.enabled = enabled;\\n }\\n }\\n applyLocalMuteOverride(attendeeIdRemote, mutedRemote) {\\n const attendeeIdLocal = this.state.localAttendeeId;\\n const mutedLocal = this.state.muted;\\n if (attendeeIdRemote !== attendeeIdLocal) {\\n return mutedRemote;\\n }\\n if (this.state.audioInput === null) {\\n return mutedRemote;\\n }\\n return mutedLocal;\\n }\\n sendVolumeIndicatorChange(attendeeId, volumeUpdated, mutedUpdated, signalStrengthUpdated, externalUserId) {\\n this.sendLocalSignalStrengthChange(attendeeId, signalStrengthUpdated);\\n if (!this.state.volumeIndicatorCallbacks.hasOwnProperty(attendeeId)) {\\n return;\\n }\\n const state = this.getVolumeIndicatorState(attendeeId);\\n const updateState = new RealtimeVolumeIndicator_1.default();\\n if (volumeUpdated) {\\n updateState.volume = state.volume;\\n }\\n if (mutedUpdated) {\\n updateState.muted = state.muted;\\n }\\n if (signalStrengthUpdated) {\\n updateState.signalStrength = state.signalStrength;\\n }\\n if (this.stateIsEmpty(updateState)) {\\n return;\\n }\\n for (const fn of this.state.volumeIndicatorCallbacks[attendeeId]) {\\n fn(attendeeId, updateState.volume, updateState.muted, updateState.signalStrength, externalUserId);\\n }\\n }\\n sendLocalSignalStrengthChange(attendeeId, signalStrengthUpdated) {\\n if (!signalStrengthUpdated) {\\n return;\\n }\\n if (attendeeId !== this.state.localAttendeeId) {\\n return;\\n }\\n const state = this.getVolumeIndicatorState(attendeeId);\\n const signalStrength = state.signalStrength;\\n if (signalStrength === null) {\\n return;\\n }\\n for (const fn of this.state.localSignalStrengthChangeCallbacks) {\\n fn(signalStrength);\\n }\\n }\\n getVolumeIndicatorState(id) {\\n if (!this.state.volumeIndicatorState.hasOwnProperty(id)) {\\n this.state.volumeIndicatorState[id] = new RealtimeVolumeIndicator_1.default();\\n }\\n return this.state.volumeIndicatorState[id];\\n }\\n stateIsEmpty(state) {\\n return state.volume === null && state.muted === null && state.signalStrength === null;\\n }\\n onError(error) {\\n try {\\n // 1) try the fatal error callbacks so that the issue is reported in\\n // logs and to give the handler a chance to clean up and reset.\\n for (const callback of this.state.fatalErrorCallbacks) {\\n callback(error);\\n }\\n }\\n catch (eventError) {\\n try {\\n // 2) if the error event fails, fall back to console.error so that\\n // it at least prints out to the console before moving on.\\n console.error(error);\\n console.error(eventError);\\n }\\n catch (consoleError) {\\n // 3) if all else fails, swallow the error and give up to guarantee\\n // that the API call returns cleanly.\\n }\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultRealtimeController;\\n//# sourceMappingURL=DefaultRealtimeController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/realtimecontroller/DefaultRealtimeController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeAttendeePositionInFrame.js\":\n/*!******************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeAttendeePositionInFrame.js ***!\n \\******************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[RealtimeAttendeePositionInFrame]] information about the attendee's place in the frame.\\n */\\nclass RealtimeAttendeePositionInFrame {\\n constructor() {\\n /**\\n * Index of attendee update in the frame starting at zero\\n */\\n this.attendeeIndex = null;\\n /**\\n * Number of total attendee updates in the frame\\n */\\n this.attendeesInFrame = null;\\n }\\n}\\nexports[\\\"default\\\"] = RealtimeAttendeePositionInFrame;\\n//# sourceMappingURL=RealtimeAttendeePositionInFrame.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeAttendeePositionInFrame.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeState.js\":\n/*!************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeState.js ***!\n \\************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[RealtimeState]] stores all realtime persistent state.\\n */\\nclass RealtimeState {\\n constructor() {\\n /**\\n * Stores the attendee id of the current user\\n */\\n this.localAttendeeId = null;\\n /**\\n * Stores the external user id of the current user\\n */\\n this.localExternalUserId = null;\\n /**\\n * Callbacks to listen for attendee id changes\\n */\\n this.attendeeIdChangesCallbacks = [];\\n /**\\n * Stores whether the user can transition from muted to unmuted\\n */\\n this.canUnmute = true;\\n /**\\n * Callbacks to listen for changes to can-unmute local audio state\\n */\\n this.setCanUnmuteLocalAudioCallbacks = [];\\n /**\\n * Stores whether the user is presently muted\\n */\\n this.muted = false;\\n /**\\n * Callbacks to listen for local audio mutes and unmutes\\n */\\n this.muteAndUnmuteLocalAudioCallbacks = [];\\n /**\\n * Stores the active audio input\\n */\\n this.audioInput = null;\\n /**\\n * Stores per-attendee id volume indicator state\\n */\\n this.volumeIndicatorState = {};\\n /**\\n * Stores attendee id to external user id mappings\\n */\\n this.attendeeIdToExternalUserId = {};\\n /**\\n * Stores per-attendee id callbacks called when volume indicators change\\n */\\n this.volumeIndicatorCallbacks = {};\\n /**\\n * Callbacks to listen for changes to local signal strength\\n */\\n this.localSignalStrengthChangeCallbacks = [];\\n /**\\n * Callbacks to listen for fatal errors\\n */\\n this.fatalErrorCallbacks = [];\\n /**\\n * Callbacks to trigger when sending message\\n */\\n this.sendDataMessageCallbacks = [];\\n /**\\n * Callbacks to listen for receiving message from data channel based on given topic\\n */\\n this.receiveDataMessageCallbacks = new Map();\\n }\\n}\\nexports[\\\"default\\\"] = RealtimeState;\\n//# sourceMappingURL=RealtimeState.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeState.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeVolumeIndicator.js\":\n/*!**********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeVolumeIndicator.js ***!\n \\**********************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[RealtimeVolumeIndicator]] stores the current volume, mute, and\\n * signal strength for an attendee.\\n */\\nclass RealtimeVolumeIndicator {\\n constructor() {\\n this.volume = null;\\n this.muted = null;\\n this.signalStrength = null;\\n }\\n}\\nexports[\\\"default\\\"] = RealtimeVolumeIndicator;\\n//# sourceMappingURL=RealtimeVolumeIndicator.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/realtimecontroller/RealtimeVolumeIndicator.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/reconnectcontroller/DefaultReconnectController.js\":\n/*!**************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/reconnectcontroller/DefaultReconnectController.js ***!\n \\**************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst TimeoutScheduler_1 = __webpack_require__(/*! ../scheduler/TimeoutScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/TimeoutScheduler.js\\\");\\nclass DefaultReconnectController {\\n constructor(reconnectTimeoutMs, backoffPolicy) {\\n this.reconnectTimeoutMs = reconnectTimeoutMs;\\n this.backoffPolicy = backoffPolicy;\\n this.shouldReconnect = true;\\n this.onlyRestartPeerConnection = false;\\n this.firstConnectionAttempted = false;\\n this.firstConnectionAttemptTimestampMs = 0;\\n this.lastActiveTimestampMs = Infinity;\\n this._isFirstConnection = true;\\n this.backoffTimer = null;\\n this.backoffCancel = null;\\n this.reset();\\n }\\n timeSpentReconnectingMs() {\\n if (!this.firstConnectionAttempted) {\\n return 0;\\n }\\n return Date.now() - this.firstConnectionAttemptTimestampMs;\\n }\\n hasPastReconnectDeadline() {\\n if (Date.now() - this.lastActiveTimestampMs >= this.reconnectTimeoutMs) {\\n return true;\\n }\\n return this.timeSpentReconnectingMs() >= this.reconnectTimeoutMs;\\n }\\n reset() {\\n this.cancel();\\n this.shouldReconnect = true;\\n this.onlyRestartPeerConnection = false;\\n this.firstConnectionAttempted = false;\\n this.firstConnectionAttemptTimestampMs = 0;\\n this.lastActiveTimestampMs = Infinity;\\n this.backoffPolicy.reset();\\n }\\n startedConnectionAttempt(isFirstConnection) {\\n this._isFirstConnection = isFirstConnection;\\n if (!this.firstConnectionAttempted) {\\n this.firstConnectionAttempted = true;\\n this.firstConnectionAttemptTimestampMs = Date.now();\\n }\\n }\\n hasStartedConnectionAttempt() {\\n return this.firstConnectionAttempted;\\n }\\n isFirstConnection() {\\n return this._isFirstConnection;\\n }\\n disableReconnect() {\\n this.shouldReconnect = false;\\n }\\n enableRestartPeerConnection() {\\n this.onlyRestartPeerConnection = true;\\n }\\n cancel() {\\n this.disableReconnect();\\n if (this.backoffTimer) {\\n this.backoffTimer.stop();\\n if (this.backoffCancel) {\\n this.backoffCancel();\\n this.backoffCancel = null;\\n }\\n }\\n }\\n retryWithBackoff(retryFunc, cancelFunc) {\\n const willRetry = this.shouldReconnect && !this.hasPastReconnectDeadline();\\n if (willRetry) {\\n this.backoffCancel = cancelFunc;\\n this.backoffTimer = new TimeoutScheduler_1.default(this.backoffPolicy.nextBackoffAmountMs());\\n this.backoffTimer.start(() => {\\n this.backoffCancel = null;\\n retryFunc();\\n });\\n }\\n return willRetry;\\n }\\n shouldOnlyRestartPeerConnection() {\\n return this.onlyRestartPeerConnection;\\n }\\n clone() {\\n return new DefaultReconnectController(this.reconnectTimeoutMs, this.backoffPolicy);\\n }\\n setLastActiveTimestampMs(timestampMs) {\\n this.lastActiveTimestampMs = timestampMs;\\n }\\n}\\nexports[\\\"default\\\"] = DefaultReconnectController;\\n//# sourceMappingURL=DefaultReconnectController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/reconnectcontroller/DefaultReconnectController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js ***!\n \\****************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst TimeoutScheduler_1 = __webpack_require__(/*! ./TimeoutScheduler */ \\\"./node_modules/amazon-chime-sdk-js/build/scheduler/TimeoutScheduler.js\\\");\\n/**\\n * [[AsyncScheduler]] enqueues the callback for the soonest available run of the\\n * event loop.\\n */\\nclass AsyncScheduler extends TimeoutScheduler_1.default {\\n constructor() {\\n super(0);\\n }\\n /**\\n * Execute the provided callback on the next tick of the event loop.\\n * This is semantically equivalent to\\n *\\n * ```typescript\\n * new AsyncScheduler(callback).start();\\n * ```\\n *\\n * but with less overhead.\\n *\\n * @param callback the code to run.\\n */\\n static nextTick(callback) {\\n setTimeout(callback, 0);\\n }\\n}\\nexports[\\\"default\\\"] = AsyncScheduler;\\n//# sourceMappingURL=AsyncScheduler.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/scheduler/AsyncScheduler.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js\":\n/*!*******************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js ***!\n \\*******************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[IntervalScheduler]] calls the callback every intervalMs milliseconds.\\n */\\nclass IntervalScheduler {\\n constructor(intervalMs) {\\n this.intervalMs = intervalMs;\\n }\\n start(callback) {\\n this.stop();\\n this.timer = setInterval(callback, this.intervalMs);\\n }\\n stop() {\\n if (this.timer === undefined) {\\n return;\\n }\\n clearInterval(this.timer);\\n this.timer = undefined;\\n }\\n running() {\\n return this.timer !== undefined;\\n }\\n}\\nexports[\\\"default\\\"] = IntervalScheduler;\\n//# sourceMappingURL=IntervalScheduler.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/scheduler/IntervalScheduler.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/scheduler/TimeoutScheduler.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/scheduler/TimeoutScheduler.js ***!\n \\******************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[TimeoutScheduler]] calls the callback once after timeoutMs milliseconds.\\n */\\nclass TimeoutScheduler {\\n constructor(timeoutMs) {\\n this.timeoutMs = timeoutMs;\\n // eslint-disable-next-line\\n this.timer = null;\\n }\\n start(callback) {\\n this.stop();\\n this.timer = setTimeout(() => {\\n clearTimeout(this.timer);\\n callback();\\n }, this.timeoutMs);\\n }\\n stop() {\\n if (this.timer !== null) {\\n clearTimeout(this.timer);\\n this.timer = null;\\n }\\n }\\n}\\nexports[\\\"default\\\"] = TimeoutScheduler;\\n//# sourceMappingURL=TimeoutScheduler.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/scheduler/TimeoutScheduler.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/sdp/DefaultSDP.js\":\n/*!******************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/sdp/DefaultSDP.js ***!\n \\******************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SDPCandidateType_1 = __webpack_require__(/*! ./SDPCandidateType */ \\\"./node_modules/amazon-chime-sdk-js/build/sdp/SDPCandidateType.js\\\");\\n/**\\n * Implements [[SDP]]. [[SDP]] also includes a few helper functions for parsing string.\\n */\\nclass DefaultSDP {\\n constructor(sdp) {\\n this.sdp = sdp;\\n }\\n clone() {\\n return new DefaultSDP(this.sdp);\\n }\\n static isRTPCandidate(candidate) {\\n const match = /candidate[:](\\\\S+) (\\\\d+)/g.exec(candidate);\\n if (match === null || match[2] !== '1') {\\n return false;\\n }\\n return true;\\n }\\n static linesToSDP(lines) {\\n return new DefaultSDP(lines.join(DefaultSDP.CRLF));\\n }\\n static candidateTypeFromString(candidateType) {\\n switch (candidateType) {\\n case SDPCandidateType_1.default.Host:\\n return SDPCandidateType_1.default.Host;\\n case SDPCandidateType_1.default.ServerReflexive:\\n return SDPCandidateType_1.default.ServerReflexive;\\n case SDPCandidateType_1.default.PeerReflexive:\\n return SDPCandidateType_1.default.PeerReflexive;\\n case SDPCandidateType_1.default.Relay:\\n return SDPCandidateType_1.default.Relay;\\n }\\n return null;\\n }\\n static candidateType(sdpLine) {\\n const match = /a[=]candidate[:].* typ ([a-z]+) /g.exec(sdpLine);\\n if (match === null) {\\n return null;\\n }\\n return DefaultSDP.candidateTypeFromString(match[1]);\\n }\\n static splitLines(blob) {\\n return blob\\n .trim()\\n .split('\\\\n')\\n .map((line) => {\\n return line.trim();\\n });\\n }\\n static splitSections(sdp) {\\n // each section starts with \\\"m=\\\"\\n const sections = sdp.split('\\\\nm=');\\n return sections.map((section, index) => {\\n return (index > 0 ? 'm=' + section : section).trim() + DefaultSDP.CRLF;\\n });\\n }\\n static findActiveCameraSection(sections) {\\n let cameraLineIndex = 0;\\n let hasCamera = false;\\n for (const sec of sections) {\\n if (/^m=video/.test(sec)) {\\n if (sec.indexOf('sendrecv') > -1) {\\n hasCamera = true;\\n break;\\n }\\n }\\n cameraLineIndex++;\\n }\\n if (hasCamera === false) {\\n cameraLineIndex = -1;\\n }\\n return cameraLineIndex;\\n }\\n static parseSSRCMedia(ssrcMediaAttributeLine) {\\n const separator = ssrcMediaAttributeLine.indexOf(' ');\\n let ssrc = 0;\\n let attribute = '';\\n let value = '';\\n ssrc = DefaultSDP.extractSSRCFromAttributeLine(ssrcMediaAttributeLine);\\n const secondColon = ssrcMediaAttributeLine.indexOf(':', separator);\\n if (secondColon > -1) {\\n attribute = ssrcMediaAttributeLine.substr(separator + 1, secondColon - separator - 1);\\n value = ssrcMediaAttributeLine.substr(secondColon + 1);\\n }\\n else {\\n attribute = ssrcMediaAttributeLine.substr(separator + 1);\\n }\\n return [ssrc, attribute, value];\\n }\\n // a=ssrc-group: ...\\n static extractSSRCsFromFIDGroupLine(figGroupLine) {\\n const ssrcStringMatch = /^a=ssrc-group:FID\\\\s(.+)/.exec(figGroupLine);\\n return ssrcStringMatch[1];\\n }\\n // a=ssrc: or a=ssrc: :, ssrc-id is a 32bit integer\\n static extractSSRCFromAttributeLine(ssrcMediaAttributeLine) {\\n const ssrcStringMatch = /^a=ssrc:([0-9]+)\\\\s/.exec(ssrcMediaAttributeLine);\\n if (ssrcStringMatch === null) {\\n return 0;\\n }\\n return parseInt(ssrcStringMatch[1], 10);\\n }\\n static matchPrefix(blob, prefix) {\\n return DefaultSDP.splitLines(blob).filter((line) => {\\n return line.indexOf(prefix) === 0;\\n });\\n }\\n lines() {\\n return this.sdp.split(DefaultSDP.CRLF);\\n }\\n hasVideo() {\\n return /^m=video/gm.exec(this.sdp) !== null;\\n }\\n hasCandidates() {\\n const match = /a[=]candidate[:]/g.exec(this.sdp);\\n if (match === null) {\\n return false;\\n }\\n return true;\\n }\\n hasCandidatesForAllMLines() {\\n const isAnyCLineUsingLocalHost = this.sdp.indexOf('c=IN IP4 0.0.0.0') > -1;\\n const mLinesHaveCandidates = !isAnyCLineUsingLocalHost;\\n return mLinesHaveCandidates;\\n }\\n withBundleAudioVideo() {\\n const srcLines = this.lines();\\n const dstLines = [];\\n for (const line of srcLines) {\\n const mod = line.replace(/^a=group:BUNDLE audio$/, 'a=group:BUNDLE audio video');\\n if (mod !== line) {\\n dstLines.push(mod);\\n continue;\\n }\\n dstLines.push(line);\\n }\\n return DefaultSDP.linesToSDP(dstLines);\\n }\\n copyVideo(otherSDP) {\\n const otherLines = otherSDP.split(DefaultSDP.CRLF);\\n const dstLines = DefaultSDP.splitLines(this.sdp);\\n let inVideoMedia = false;\\n for (const line of otherLines) {\\n if (/^m=video/.test(line)) {\\n inVideoMedia = true;\\n }\\n else if (/^m=/.test(line)) {\\n inVideoMedia = false;\\n }\\n if (inVideoMedia) {\\n dstLines.push(line);\\n }\\n }\\n return DefaultSDP.linesToSDP(dstLines);\\n }\\n withoutCandidateType(candidateTypeToExclude) {\\n return DefaultSDP.linesToSDP(this.lines().filter(line => DefaultSDP.candidateType(line) !== candidateTypeToExclude));\\n }\\n withoutServerReflexiveCandidates() {\\n return this.withoutCandidateType(SDPCandidateType_1.default.ServerReflexive);\\n }\\n withBandwidthRestriction(maxBitrateKbps, isUnifiedPlan) {\\n const srcLines = this.lines();\\n const dstLines = [];\\n for (const line of srcLines) {\\n dstLines.push(line);\\n if (/^m=video/.test(line)) {\\n if (isUnifiedPlan) {\\n dstLines.push(`b=TIAS:${maxBitrateKbps * 1000}`);\\n }\\n else {\\n dstLines.push(`b=AS:${maxBitrateKbps}`);\\n }\\n }\\n }\\n return DefaultSDP.linesToSDP(dstLines);\\n }\\n withAudioMaxAverageBitrate(maxAverageBitrate) {\\n if (!maxAverageBitrate) {\\n return this.clone();\\n }\\n maxAverageBitrate = Math.trunc(Math.min(Math.max(maxAverageBitrate, DefaultSDP.rfc7587LowestBitrate), DefaultSDP.rfc7587HighestBitrate));\\n const srcLines = this.lines();\\n const dstLines = [];\\n const opusRtpMapRegex = /^a=rtpmap:\\\\s*(\\\\d+)\\\\s+opus\\\\/48000/;\\n let lookingForOpusRtpMap = false;\\n let fmtpAttribute = null;\\n for (const line of srcLines) {\\n if (line.startsWith('m=audio')) {\\n lookingForOpusRtpMap = true;\\n fmtpAttribute = null;\\n }\\n if (line.startsWith('m=video')) {\\n lookingForOpusRtpMap = false;\\n fmtpAttribute = null;\\n }\\n if (lookingForOpusRtpMap) {\\n const match = opusRtpMapRegex.exec(line);\\n if (match !== null) {\\n fmtpAttribute = `a=fmtp:${match[1]} `;\\n lookingForOpusRtpMap = false;\\n }\\n }\\n if (fmtpAttribute && line.startsWith(fmtpAttribute)) {\\n const oldParameters = line.slice(fmtpAttribute.length).split(';');\\n const newParameters = [];\\n for (const parameter of oldParameters) {\\n if (!parameter.startsWith('maxaveragebitrate=')) {\\n newParameters.push(parameter);\\n }\\n }\\n newParameters.push(`maxaveragebitrate=${maxAverageBitrate}`);\\n dstLines.push(fmtpAttribute + newParameters.join(';'));\\n }\\n else {\\n dstLines.push(line);\\n }\\n }\\n return DefaultSDP.linesToSDP(dstLines);\\n }\\n // TODO: will remove this soon.\\n withUnifiedPlanFormat() {\\n let originalSdp = this.sdp;\\n if (originalSdp.includes('mozilla')) {\\n return this.clone();\\n }\\n else {\\n originalSdp = originalSdp.replace('o=-', 'o=mozilla-chrome');\\n }\\n return new DefaultSDP(originalSdp);\\n }\\n preferH264IfExists() {\\n const srcSDP = this.sdp;\\n const sections = DefaultSDP.splitSections(srcSDP);\\n if (sections.length < 2) {\\n return new DefaultSDP(this.sdp);\\n }\\n const newSections = [];\\n for (let i = 0; i < sections.length; i++) {\\n if (/^m=video/.test(sections[i])) {\\n const lines = DefaultSDP.splitLines(sections[i]);\\n let payloadTypeForVP8 = 0;\\n let payloadTypeForH264 = 0;\\n lines.forEach(attribute => {\\n if (/^a=rtpmap:/.test(attribute)) {\\n const payloadMatch = /^a=rtpmap:([0-9]+)\\\\s/.exec(attribute);\\n if (attribute.toLowerCase().includes('vp8')) {\\n payloadTypeForVP8 = parseInt(payloadMatch[1], 10);\\n }\\n else if (attribute.toLowerCase().includes('h264')) {\\n payloadTypeForH264 = parseInt(payloadMatch[1], 10);\\n }\\n }\\n });\\n // m=video 9 UDP/+++ \\n if (payloadTypeForVP8 !== 0 && payloadTypeForH264 !== 0) {\\n const mline = lines[0].split(' ');\\n let indexForVP8 = -1;\\n let indexForH264 = -1;\\n for (let i = 3; i < mline.length; i++) {\\n const payload = parseInt(mline[i], 10);\\n if (payload === payloadTypeForVP8) {\\n indexForVP8 = i;\\n }\\n else if (payload === payloadTypeForH264) {\\n indexForH264 = i;\\n }\\n }\\n if (indexForVP8 < indexForH264) {\\n mline[indexForVP8] = payloadTypeForH264.toString();\\n mline[indexForH264] = payloadTypeForVP8.toString();\\n }\\n lines[0] = mline.join(' ');\\n }\\n sections[i] = lines.join(DefaultSDP.CRLF) + DefaultSDP.CRLF;\\n // since there is only H264 or VP8, we don't switch payload places\\n }\\n newSections.push(sections[i]);\\n }\\n const newSdp = newSections.join('');\\n return new DefaultSDP(newSdp);\\n }\\n withOldFashionedMungingSimulcast(videoSimulcastLayerCount) {\\n if (videoSimulcastLayerCount < 2) {\\n return this.clone();\\n }\\n const srcSDP = this.sdp;\\n const sections = DefaultSDP.splitSections(srcSDP);\\n if (sections.length < 2) {\\n return new DefaultSDP(this.sdp);\\n }\\n const cameraLineIndex = DefaultSDP.findActiveCameraSection(sections);\\n if (cameraLineIndex === -1) {\\n return new DefaultSDP(this.sdp);\\n }\\n let cname = '';\\n let msid = '';\\n DefaultSDP.matchPrefix(sections[cameraLineIndex], 'a=ssrc:').forEach((line) => {\\n const ssrcAttrTuple = DefaultSDP.parseSSRCMedia(line);\\n if (ssrcAttrTuple[1] === 'cname') {\\n cname = ssrcAttrTuple[2];\\n }\\n else if (ssrcAttrTuple[1] === 'msid') {\\n msid = ssrcAttrTuple[2];\\n }\\n });\\n const fidGroupMatch = DefaultSDP.matchPrefix(sections[cameraLineIndex], 'a=ssrc-group:FID ');\\n if (cname === '' || msid === '' || fidGroupMatch.length < 1) {\\n return new DefaultSDP(this.sdp);\\n }\\n const fidGroup = DefaultSDP.extractSSRCsFromFIDGroupLine(fidGroupMatch[0]);\\n const cameraSectionLines = sections[cameraLineIndex]\\n .trim()\\n .split(DefaultSDP.CRLF)\\n .filter((line) => {\\n return line.indexOf('a=ssrc:') !== 0 && line.indexOf('a=ssrc-group:') !== 0;\\n });\\n const simulcastSSRCs = [];\\n const [videoSSRC1, rtxSSRC1] = fidGroup.split(' ').map(ssrc => parseInt(ssrc, 10));\\n let videoSSRC = videoSSRC1;\\n let rtxSSRC = rtxSSRC1;\\n for (let i = 0; i < videoSimulcastLayerCount; i++) {\\n cameraSectionLines.push('a=ssrc:' + videoSSRC + ' cname:' + cname);\\n cameraSectionLines.push('a=ssrc:' + videoSSRC + ' msid:' + msid);\\n cameraSectionLines.push('a=ssrc:' + rtxSSRC + ' cname:' + cname);\\n cameraSectionLines.push('a=ssrc:' + rtxSSRC + ' msid:' + msid);\\n cameraSectionLines.push('a=ssrc-group:FID ' + videoSSRC + ' ' + rtxSSRC);\\n simulcastSSRCs.push(videoSSRC);\\n videoSSRC = videoSSRC + 1;\\n rtxSSRC = videoSSRC + 1;\\n }\\n cameraSectionLines.push('a=ssrc-group:SIM ' + simulcastSSRCs.join(' '));\\n sections[cameraLineIndex] = cameraSectionLines.join(DefaultSDP.CRLF) + DefaultSDP.CRLF;\\n const newSDP = sections.join('');\\n return new DefaultSDP(newSDP);\\n }\\n ssrcForVideoSendingSection() {\\n const srcSDP = this.sdp;\\n const sections = DefaultSDP.splitSections(srcSDP);\\n if (sections.length < 2) {\\n return '';\\n }\\n const cameraLineIndex = DefaultSDP.findActiveCameraSection(sections);\\n if (cameraLineIndex === -1) {\\n return '';\\n }\\n // TODO: match for Firefox. Currently all failures are not Firefox induced.\\n const fidGroupMatch = DefaultSDP.matchPrefix(sections[cameraLineIndex], 'a=ssrc-group:FID ');\\n if (fidGroupMatch.length < 1) {\\n return '';\\n }\\n const fidGroup = DefaultSDP.extractSSRCsFromFIDGroupLine(fidGroupMatch[0]);\\n const [videoSSRC1] = fidGroup.split(' ').map(ssrc => parseInt(ssrc, 10));\\n return videoSSRC1.toString();\\n }\\n videoSendSectionHasDifferentSSRC(prevSdp) {\\n const ssrc1 = this.ssrcForVideoSendingSection();\\n const ssrc2 = prevSdp.ssrcForVideoSendingSection();\\n if (ssrc1 === '' || ssrc2 === '') {\\n return false;\\n }\\n const ssrc1InNumber = parseInt(ssrc1, 10);\\n const ssrc2InNumber = parseInt(ssrc2, 10);\\n if (ssrc1InNumber === ssrc2InNumber) {\\n return false;\\n }\\n return true;\\n }\\n}\\nexports[\\\"default\\\"] = DefaultSDP;\\nDefaultSDP.CRLF = '\\\\r\\\\n';\\nDefaultSDP.rfc7587LowestBitrate = 6000;\\nDefaultSDP.rfc7587HighestBitrate = 510000;\\n//# sourceMappingURL=DefaultSDP.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/sdp/DefaultSDP.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/sdp/SDPCandidateType.js\":\n/*!************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/sdp/SDPCandidateType.js ***!\n \\************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.SDPCandidateType = void 0;\\nvar SDPCandidateType;\\n(function (SDPCandidateType) {\\n SDPCandidateType[\\\"Host\\\"] = \\\"host\\\";\\n SDPCandidateType[\\\"ServerReflexive\\\"] = \\\"srflx\\\";\\n SDPCandidateType[\\\"PeerReflexive\\\"] = \\\"prflx\\\";\\n SDPCandidateType[\\\"Relay\\\"] = \\\"relay\\\";\\n})(SDPCandidateType = exports.SDPCandidateType || (exports.SDPCandidateType = {}));\\nexports[\\\"default\\\"] = SDPCandidateType;\\n//# sourceMappingURL=SDPCandidateType.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/sdp/SDPCandidateType.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/DefaultSessionStateController.js\":\n/*!********************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/DefaultSessionStateController.js ***!\n \\********************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SessionStateControllerAction_1 = __webpack_require__(/*! ./SessionStateControllerAction */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerAction.js\\\");\\nconst SessionStateControllerDeferPriority_1 = __webpack_require__(/*! ./SessionStateControllerDeferPriority */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerDeferPriority.js\\\");\\nconst SessionStateControllerState_1 = __webpack_require__(/*! ./SessionStateControllerState */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerState.js\\\");\\nconst SessionStateControllerTransitionResult_1 = __webpack_require__(/*! ./SessionStateControllerTransitionResult */ \\\"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerTransitionResult.js\\\");\\nclass DefaultSessionStateController {\\n constructor(logger) {\\n this.logger = logger;\\n this.currentState = SessionStateControllerState_1.SessionStateControllerState.NotConnected;\\n this.deferredAction = null;\\n this.deferredWork = null;\\n }\\n perform(action, work) {\\n const state = this.currentState;\\n if (state === SessionStateControllerState_1.SessionStateControllerState.NotConnected &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.Connect) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Connecting, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Connecting &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.Fail) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Disconnecting, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Connecting &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.FinishConnecting) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Connected, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Connected &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.Disconnect) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Disconnecting, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Connected &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.Reconnect) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Connecting, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Connected &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.Fail) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Disconnecting, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Connected &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.Update) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Updating, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Updating &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.Fail) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Disconnecting, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Updating &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.FinishUpdating) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.Connected, action);\\n }\\n else if (state === SessionStateControllerState_1.SessionStateControllerState.Disconnecting &&\\n action === SessionStateControllerAction_1.SessionStateControllerAction.FinishDisconnecting) {\\n this.transition(SessionStateControllerState_1.SessionStateControllerState.NotConnected, action);\\n }\\n else if (this.canDefer(action)) {\\n this.logger.info(`deferring transition from ${SessionStateControllerState_1.SessionStateControllerState[this.currentState]} with ${SessionStateControllerAction_1.SessionStateControllerAction[action]}`);\\n this.deferAction(action, work);\\n return SessionStateControllerTransitionResult_1.SessionStateControllerTransitionResult.DeferredTransition;\\n }\\n else {\\n this.logger.warn(`no transition found from ${SessionStateControllerState_1.SessionStateControllerState[this.currentState]} with ${SessionStateControllerAction_1.SessionStateControllerAction[action]}`);\\n return SessionStateControllerTransitionResult_1.SessionStateControllerTransitionResult.NoTransitionAvailable;\\n }\\n try {\\n work();\\n }\\n catch (e) {\\n this.logger.error(`error during state ${SessionStateControllerState_1.SessionStateControllerState[this.currentState]} with action ${SessionStateControllerAction_1.SessionStateControllerAction[action]}: ${e}`);\\n this.logger.info(`rolling back transition to ${SessionStateControllerState_1.SessionStateControllerState[state]}`);\\n this.currentState = state;\\n return SessionStateControllerTransitionResult_1.SessionStateControllerTransitionResult.TransitionFailed;\\n }\\n this.performDeferredAction();\\n return SessionStateControllerTransitionResult_1.SessionStateControllerTransitionResult.Transitioned;\\n }\\n state() {\\n return this.currentState;\\n }\\n transition(newState, action) {\\n this.logger.info(`transitioning from ${SessionStateControllerState_1.SessionStateControllerState[this.currentState]} to ${SessionStateControllerState_1.SessionStateControllerState[newState]} with ${SessionStateControllerAction_1.SessionStateControllerAction[action]}`);\\n this.currentState = newState;\\n }\\n deferPriority(action) {\\n switch (action) {\\n case SessionStateControllerAction_1.SessionStateControllerAction.Disconnect:\\n return SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.VeryHigh;\\n case SessionStateControllerAction_1.SessionStateControllerAction.Fail:\\n return SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.High;\\n case SessionStateControllerAction_1.SessionStateControllerAction.Reconnect:\\n return SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.Medium;\\n case SessionStateControllerAction_1.SessionStateControllerAction.Update:\\n return SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.Low;\\n default:\\n return SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.DoNotDefer;\\n }\\n }\\n deferAction(action, work) {\\n if (this.deferredAction !== null &&\\n this.deferPriority(this.deferredAction) > this.deferPriority(action)) {\\n return;\\n }\\n this.deferredAction = action;\\n this.deferredWork = work;\\n }\\n canDefer(action) {\\n return (this.deferPriority(action) !== SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.DoNotDefer &&\\n (this.currentState === SessionStateControllerState_1.SessionStateControllerState.Connecting ||\\n this.currentState === SessionStateControllerState_1.SessionStateControllerState.Updating));\\n }\\n performDeferredAction() {\\n if (!this.deferredAction) {\\n return;\\n }\\n const deferredAction = this.deferredAction;\\n const deferredWork = this.deferredWork;\\n this.deferredAction = null;\\n this.deferredWork = null;\\n this.logger.info(`performing deferred action ${SessionStateControllerAction_1.SessionStateControllerAction[deferredAction]}`);\\n if (this.perform(deferredAction, deferredWork) !==\\n SessionStateControllerTransitionResult_1.SessionStateControllerTransitionResult.Transitioned) {\\n this.logger.info(`unable to perform deferred action ${SessionStateControllerAction_1.SessionStateControllerAction[deferredAction]} in state ${SessionStateControllerState_1.SessionStateControllerState[this.currentState]}`);\\n }\\n }\\n}\\nexports[\\\"default\\\"] = DefaultSessionStateController;\\n//# sourceMappingURL=DefaultSessionStateController.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/DefaultSessionStateController.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerAction.js\":\n/*!*******************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerAction.js ***!\n \\*******************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.SessionStateControllerAction = void 0;\\n/**\\n * [[SessionStateControllerAction]] is a state-changing action to perform.\\n */\\nvar SessionStateControllerAction;\\n(function (SessionStateControllerAction) {\\n SessionStateControllerAction[SessionStateControllerAction[\\\"Connect\\\"] = 0] = \\\"Connect\\\";\\n SessionStateControllerAction[SessionStateControllerAction[\\\"FinishConnecting\\\"] = 1] = \\\"FinishConnecting\\\";\\n SessionStateControllerAction[SessionStateControllerAction[\\\"Update\\\"] = 2] = \\\"Update\\\";\\n SessionStateControllerAction[SessionStateControllerAction[\\\"FinishUpdating\\\"] = 3] = \\\"FinishUpdating\\\";\\n SessionStateControllerAction[SessionStateControllerAction[\\\"Reconnect\\\"] = 4] = \\\"Reconnect\\\";\\n SessionStateControllerAction[SessionStateControllerAction[\\\"Disconnect\\\"] = 5] = \\\"Disconnect\\\";\\n SessionStateControllerAction[SessionStateControllerAction[\\\"Fail\\\"] = 6] = \\\"Fail\\\";\\n SessionStateControllerAction[SessionStateControllerAction[\\\"FinishDisconnecting\\\"] = 7] = \\\"FinishDisconnecting\\\";\\n})(SessionStateControllerAction = exports.SessionStateControllerAction || (exports.SessionStateControllerAction = {}));\\nexports[\\\"default\\\"] = SessionStateControllerAction;\\n//# sourceMappingURL=SessionStateControllerAction.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerAction.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerDeferPriority.js\":\n/*!**************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerDeferPriority.js ***!\n \\**************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.SessionStateControllerDeferPriority = void 0;\\n/**\\n * [[SessionStateControllerDeferPriority]] indicates the priority level of the action\\n * being deferred. For example, stop is more important than update so if forced\\n * to pick between the two stop should be chosen.\\n */\\nvar SessionStateControllerDeferPriority;\\n(function (SessionStateControllerDeferPriority) {\\n SessionStateControllerDeferPriority[SessionStateControllerDeferPriority[\\\"DoNotDefer\\\"] = 0] = \\\"DoNotDefer\\\";\\n SessionStateControllerDeferPriority[SessionStateControllerDeferPriority[\\\"Low\\\"] = 1] = \\\"Low\\\";\\n SessionStateControllerDeferPriority[SessionStateControllerDeferPriority[\\\"Medium\\\"] = 2] = \\\"Medium\\\";\\n SessionStateControllerDeferPriority[SessionStateControllerDeferPriority[\\\"High\\\"] = 3] = \\\"High\\\";\\n SessionStateControllerDeferPriority[SessionStateControllerDeferPriority[\\\"VeryHigh\\\"] = 4] = \\\"VeryHigh\\\";\\n})(SessionStateControllerDeferPriority = exports.SessionStateControllerDeferPriority || (exports.SessionStateControllerDeferPriority = {}));\\nexports[\\\"default\\\"] = SessionStateControllerDeferPriority;\\n//# sourceMappingURL=SessionStateControllerDeferPriority.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerDeferPriority.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerState.js\":\n/*!******************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerState.js ***!\n \\******************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.SessionStateControllerState = void 0;\\n/**\\n * [[SessionStateControllerState]] reflects the current connection state of the session.\\n */\\nvar SessionStateControllerState;\\n(function (SessionStateControllerState) {\\n SessionStateControllerState[SessionStateControllerState[\\\"NotConnected\\\"] = 0] = \\\"NotConnected\\\";\\n SessionStateControllerState[SessionStateControllerState[\\\"Connecting\\\"] = 1] = \\\"Connecting\\\";\\n SessionStateControllerState[SessionStateControllerState[\\\"Connected\\\"] = 2] = \\\"Connected\\\";\\n SessionStateControllerState[SessionStateControllerState[\\\"Updating\\\"] = 3] = \\\"Updating\\\";\\n SessionStateControllerState[SessionStateControllerState[\\\"Disconnecting\\\"] = 4] = \\\"Disconnecting\\\";\\n})(SessionStateControllerState = exports.SessionStateControllerState || (exports.SessionStateControllerState = {}));\\nexports[\\\"default\\\"] = SessionStateControllerState;\\n//# sourceMappingURL=SessionStateControllerState.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerState.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerTransitionResult.js\":\n/*!*****************************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerTransitionResult.js ***!\n \\*****************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.SessionStateControllerTransitionResult = void 0;\\n/**\\n * Indicates the result of an attempted state transition.\\n */\\nvar SessionStateControllerTransitionResult;\\n(function (SessionStateControllerTransitionResult) {\\n /**\\n * The transition was successful.\\n */\\n SessionStateControllerTransitionResult[SessionStateControllerTransitionResult[\\\"Transitioned\\\"] = 0] = \\\"Transitioned\\\";\\n /**\\n * No transition is available from the current state using that action.\\n */\\n SessionStateControllerTransitionResult[SessionStateControllerTransitionResult[\\\"NoTransitionAvailable\\\"] = 1] = \\\"NoTransitionAvailable\\\";\\n /**\\n * The transition will be tried on the next state.\\n */\\n SessionStateControllerTransitionResult[SessionStateControllerTransitionResult[\\\"DeferredTransition\\\"] = 2] = \\\"DeferredTransition\\\";\\n /**\\n * An unexpected error occurred while transitioning to the next state.\\n */\\n SessionStateControllerTransitionResult[SessionStateControllerTransitionResult[\\\"TransitionFailed\\\"] = 3] = \\\"TransitionFailed\\\";\\n})(SessionStateControllerTransitionResult = exports.SessionStateControllerTransitionResult || (exports.SessionStateControllerTransitionResult = {}));\\nexports[\\\"default\\\"] = SessionStateControllerTransitionResult;\\n//# sourceMappingURL=SessionStateControllerTransitionResult.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/sessionstatecontroller/SessionStateControllerTransitionResult.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/signalingclient/DefaultSignalingClient.js\":\n/*!******************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/signalingclient/DefaultSignalingClient.js ***!\n \\******************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst DefaultBrowserBehavior_1 = __webpack_require__(/*! ../browserbehavior/DefaultBrowserBehavior */ \\\"./node_modules/amazon-chime-sdk-js/build/browserbehavior/DefaultBrowserBehavior.js\\\");\\nconst SignalingProtocol_js_1 = __webpack_require__(/*! ../signalingprotocol/SignalingProtocol.js */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\\\");\\nconst Versioning_1 = __webpack_require__(/*! ../versioning/Versioning */ \\\"./node_modules/amazon-chime-sdk-js/build/versioning/Versioning.js\\\");\\nconst WebSocketReadyState_1 = __webpack_require__(/*! ../websocketadapter/WebSocketReadyState */ \\\"./node_modules/amazon-chime-sdk-js/build/websocketadapter/WebSocketReadyState.js\\\");\\nconst SignalingClientEvent_1 = __webpack_require__(/*! ./SignalingClientEvent */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEvent.js\\\");\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ./SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\n/**\\n * [[DefaultSignalingClient]] implements the SignalingClient interface.\\n */\\nclass DefaultSignalingClient {\\n constructor(webSocket, logger) {\\n this.webSocket = webSocket;\\n this.logger = logger;\\n this.unloadHandler = null;\\n this.observerQueue = new Set();\\n this.connectionRequestQueue = [];\\n this.resetConnection();\\n this.logger.debug(() => 'signaling client init');\\n this.audioSessionId = this.generateNewAudioSessionId();\\n }\\n registerObserver(observer) {\\n this.logger.debug(() => 'registering signaling client observer');\\n this.observerQueue.add(observer);\\n }\\n removeObserver(observer) {\\n this.logger.debug(() => 'removing signaling client observer');\\n this.observerQueue.delete(observer);\\n }\\n openConnection(request) {\\n this.logger.info('adding connection request to queue: ' + request.url());\\n this.connectionRequestQueue.push(request);\\n this.closeConnection();\\n }\\n pingPong(pingPongFrame) {\\n this.logger.debug(() => 'sending ping');\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.PING_PONG;\\n message.pingPong = pingPongFrame;\\n this.sendMessage(message);\\n return message.timestampMs;\\n }\\n join(settings) {\\n this.logger.info('sending join');\\n const joinFrame = SignalingProtocol_js_1.SdkJoinFrame.create();\\n joinFrame.protocolVersion = 2;\\n joinFrame.maxNumOfVideos = settings.maxVideos;\\n joinFrame.flags = SignalingProtocol_js_1.SdkJoinFlags.HAS_STREAM_UPDATE;\\n const browserBehavior = new DefaultBrowserBehavior_1.default();\\n if (browserBehavior.supportsSenderSideBandwidthEstimation()) {\\n joinFrame.flags |= SignalingProtocol_js_1.SdkJoinFlags.USE_SEND_SIDE_BWE;\\n }\\n joinFrame.flags |= settings.sendBitrates ? SignalingProtocol_js_1.SdkJoinFlags.SEND_BITRATES : 0;\\n joinFrame.clientDetails = SignalingProtocol_js_1.SdkClientDetails.create({\\n platformName: browserBehavior.name(),\\n platformVersion: browserBehavior.version(),\\n clientSource: Versioning_1.default.sdkName,\\n chimeSdkVersion: Versioning_1.default.sdkVersion,\\n });\\n joinFrame.audioSessionId = this.audioSessionId;\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.JOIN;\\n message.join = joinFrame;\\n this.sendMessage(message);\\n }\\n subscribe(settings) {\\n const subscribeFrame = SignalingProtocol_js_1.SdkSubscribeFrame.create();\\n subscribeFrame.sendStreams = [];\\n subscribeFrame.sdpOffer = settings.sdpOffer;\\n subscribeFrame.audioCheckin = settings.audioCheckin;\\n subscribeFrame.audioHost = settings.audioHost;\\n subscribeFrame.audioMuted = settings.audioMuted;\\n if (settings.connectionTypeHasVideo) {\\n subscribeFrame.receiveStreamIds = settings.receiveStreamIds;\\n }\\n subscribeFrame.duplex = SignalingProtocol_js_1.SdkStreamServiceType.RX;\\n if (!settings.audioCheckin) {\\n const audioStream = SignalingProtocol_js_1.SdkStreamDescriptor.create();\\n audioStream.mediaType = SignalingProtocol_js_1.SdkStreamMediaType.AUDIO;\\n audioStream.trackLabel = 'AmazonChimeExpressAudio';\\n audioStream.attendeeId = settings.attendeeId;\\n audioStream.streamId = 1;\\n audioStream.groupId = 1;\\n audioStream.framerate = 15;\\n audioStream.maxBitrateKbps = 600;\\n audioStream.avgBitrateBps = 400000;\\n subscribeFrame.sendStreams.push(audioStream);\\n }\\n if (settings.localVideoEnabled) {\\n subscribeFrame.duplex = SignalingProtocol_js_1.SdkStreamServiceType.DUPLEX;\\n for (let i = 0; i < settings.videoStreamDescriptions.length; i++) {\\n // Non-simulcast use DefaultVideoStreamIndex.localStreamDescriptions\\n // which is the exact old behavior\\n const streamDescription = settings.videoStreamDescriptions[i].clone();\\n streamDescription.attendeeId = settings.attendeeId;\\n subscribeFrame.sendStreams.push(streamDescription.toStreamDescriptor());\\n }\\n }\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.SUBSCRIBE;\\n message.sub = subscribeFrame;\\n this.sendMessage(message);\\n }\\n leave() {\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.LEAVE;\\n message.leave = SignalingProtocol_js_1.SdkLeaveFrame.create();\\n this.sendMessage(message);\\n this.logger.debug(() => {\\n return 'sent leave';\\n });\\n }\\n sendClientMetrics(clientMetricFrame) {\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.CLIENT_METRIC;\\n message.clientMetric = clientMetricFrame;\\n this.sendMessage(message);\\n }\\n sendDataMessage(messageFrame) {\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.DATA_MESSAGE;\\n message.dataMessage = messageFrame;\\n this.sendMessage(message);\\n }\\n closeConnection() {\\n if (this.webSocket.readyState() !== WebSocketReadyState_1.default.None &&\\n this.webSocket.readyState() !== WebSocketReadyState_1.default.Closed) {\\n this.isClosing = true;\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketClosing, null));\\n this.webSocket.close();\\n this.deactivatePageUnloadHandler();\\n }\\n else {\\n this.logger.info('no existing connection needs closing');\\n this.serviceConnectionRequestQueue();\\n }\\n }\\n ready() {\\n return (this.webSocket.readyState() === WebSocketReadyState_1.default.Open && !this.isClosing && this.wasOpened);\\n }\\n mute(muted) {\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.AUDIO_CONTROL;\\n const audioControl = SignalingProtocol_js_1.SdkAudioControlFrame.create();\\n audioControl.muted = muted;\\n message.audioControl = audioControl;\\n this.sendMessage(message);\\n }\\n pause(streamIds) {\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.PAUSE;\\n message.pause = SignalingProtocol_js_1.SdkPauseResumeFrame.create();\\n message.pause.streamIds = streamIds;\\n this.sendMessage(message);\\n }\\n resume(streamIds) {\\n const message = SignalingProtocol_js_1.SdkSignalFrame.create();\\n message.type = SignalingProtocol_js_1.SdkSignalFrame.Type.RESUME;\\n message.pause = SignalingProtocol_js_1.SdkPauseResumeFrame.create();\\n message.pause.streamIds = streamIds;\\n this.sendMessage(message);\\n }\\n resetConnection() {\\n this.webSocket.destroy();\\n this.wasOpened = false;\\n }\\n sendMessage(message) {\\n message.timestampMs = Date.now();\\n this.logger.debug(() => `sending: ${JSON.stringify(message)}`);\\n const buffer = this.prependWithFrameTypeRTC(SignalingProtocol_js_1.SdkSignalFrame.encode(message).finish());\\n if (this.ready()) {\\n if (!this.webSocket.send(buffer)) {\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketSendMessageFailure, null));\\n return;\\n }\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketSentMessage, null));\\n }\\n else {\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketSkippedMessage, null));\\n }\\n }\\n receiveMessage(inBuffer) {\\n let message;\\n try {\\n message = SignalingProtocol_js_1.SdkSignalFrame.decode(inBuffer);\\n }\\n catch (e) {\\n this.logger.info(`failed to decode: ${inBuffer}`);\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.ProtocolDecodeFailure, null));\\n return;\\n }\\n this.logger.debug(() => `received: ${JSON.stringify(message)}`);\\n if (this.webSocket.readyState() === WebSocketReadyState_1.default.Open) {\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.ReceivedSignalFrame, message));\\n }\\n else {\\n this.logger.info(`skipping notification of message since WebSocket is not open: ${JSON.stringify(message)}`);\\n }\\n }\\n stripFrameTypeRTC(inBuffer) {\\n const frameType = inBuffer[0];\\n // TODO: change server frame type to send 0x05\\n if (frameType !== DefaultSignalingClient.FRAME_TYPE_RTC && frameType !== 0x02) {\\n this.logger.warn(`expected FrameTypeRTC for message but got ${frameType}`);\\n }\\n return inBuffer.slice(1);\\n }\\n prependWithFrameTypeRTC(inBuffer) {\\n const outBuffer = new Uint8Array(inBuffer.length + 1);\\n outBuffer[0] = DefaultSignalingClient.FRAME_TYPE_RTC;\\n outBuffer.set(inBuffer, 1);\\n return outBuffer;\\n }\\n serviceConnectionRequestQueue() {\\n if (this.connectionRequestQueue.length === 0) {\\n this.logger.info('no connection requests to service');\\n return;\\n }\\n const request = this.connectionRequestQueue.shift();\\n this.logger.info(`opening connection to ${request.url()}`);\\n this.isClosing = false;\\n this.webSocket.create(request.url(), request.protocols());\\n this.setUpEventListeners();\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketConnecting, null));\\n }\\n sendEvent(event) {\\n switch (event.type) {\\n case SignalingClientEventType_1.default.WebSocketMessage:\\n case SignalingClientEventType_1.default.ReceivedSignalFrame:\\n case SignalingClientEventType_1.default.WebSocketSentMessage:\\n this.logger.debug(() => `notifying event: ${SignalingClientEventType_1.default[event.type]}`);\\n break;\\n case SignalingClientEventType_1.default.WebSocketSkippedMessage:\\n this.logger.debug(() => `notifying event: ${SignalingClientEventType_1.default[event.type]}, websocket state=${WebSocketReadyState_1.default[this.webSocket.readyState()]}`);\\n break;\\n default:\\n this.logger.info(`notifying event: ${SignalingClientEventType_1.default[event.type]}`);\\n break;\\n }\\n for (const observer of this.observerQueue) {\\n observer.handleSignalingClientEvent(event);\\n }\\n }\\n setUpEventListeners() {\\n this.webSocket.addEventListener('open', () => {\\n this.activatePageUnloadHandler();\\n this.wasOpened = true;\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketOpen, null));\\n });\\n this.webSocket.addEventListener('message', (event) => {\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketMessage, null));\\n this.receiveMessage(this.stripFrameTypeRTC(new Uint8Array(event.data)));\\n });\\n this.webSocket.addEventListener('close', (event) => {\\n this.deactivatePageUnloadHandler();\\n this.resetConnection();\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketClosed, null, event.code, event.reason));\\n this.serviceConnectionRequestQueue();\\n });\\n this.webSocket.addEventListener('error', () => {\\n if (this.isClosing && !this.wasOpened) {\\n this.logger.info('ignoring error closing signaling while connecting');\\n return;\\n }\\n if (this.wasOpened) {\\n this.logger.error('received error while connected');\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketError, null));\\n }\\n else {\\n this.logger.error('failed to connect');\\n this.sendEvent(new SignalingClientEvent_1.default(this, SignalingClientEventType_1.default.WebSocketFailed, null));\\n }\\n });\\n }\\n activatePageUnloadHandler() {\\n this.unloadHandler = () => {\\n this.leave();\\n };\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n const GlobalAny = __webpack_require__.g;\\n GlobalAny['window'] &&\\n GlobalAny['window']['addEventListener'] &&\\n window.addEventListener('unload', this.unloadHandler);\\n }\\n deactivatePageUnloadHandler() {\\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\\n const GlobalAny = __webpack_require__.g;\\n GlobalAny['window'] &&\\n GlobalAny['window']['addEventListener'] &&\\n window.removeEventListener('unload', this.unloadHandler);\\n this.unloadHandler = null;\\n }\\n generateNewAudioSessionId() {\\n const num = new Uint32Array(1);\\n const randomNum = window.crypto.getRandomValues(num);\\n return randomNum[0];\\n }\\n}\\nexports[\\\"default\\\"] = DefaultSignalingClient;\\nDefaultSignalingClient.FRAME_TYPE_RTC = 0x5;\\n//# sourceMappingURL=DefaultSignalingClient.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/signalingclient/DefaultSignalingClient.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientConnectionRequest.js\":\n/*!****************************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientConnectionRequest.js ***!\n \\****************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/*\\n * [[SignalingClientConnectionRequest]] represents an connection request.\\n */\\nclass SignalingClientConnectionRequest {\\n /** Creates a request with the given URL, conference id, and join token.\\n *\\n * @param {string} signalingURL The URL of the signaling proxy.\\n * @param {string} joinToken The join token that will authenticate the connection.\\n */\\n constructor(signalingURL, joinToken) {\\n this.signalingURL = signalingURL;\\n this.joinToken = joinToken;\\n }\\n /** Gets the signaling URL representing this request.*/\\n url() {\\n return (this.signalingURL + '?X-Chime-Control-Protocol-Version=3&X-Amzn-Chime-Send-Close-On-Error=1');\\n }\\n /** Gets the protocols associated with this request.*/\\n protocols() {\\n return ['_aws_wt_session', this.joinToken];\\n }\\n}\\nexports[\\\"default\\\"] = SignalingClientConnectionRequest;\\n//# sourceMappingURL=SignalingClientConnectionRequest.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientConnectionRequest.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEvent.js\":\n/*!****************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEvent.js ***!\n \\****************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nconst SignalingClientEventType_1 = __webpack_require__(/*! ./SignalingClientEventType */ \\\"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\\\");\\n/*\\n * [[SignalingClientEvent]] stores an event that can be sent to observers of the SignalingClient.\\n */\\nclass SignalingClientEvent {\\n /** Initializes a SignalingClientEvent with the given SignalingClientEventType.\\n *\\n * @param {SignalingClient} client Indicates the SignalingClient associated with the event.\\n * @param {SignalingClientEventType} type Indicates the kind of event.\\n * @param {SdkSignalFrame} message SdkSignalFrame if type is ReceivedSignalFrame\\n */\\n constructor(client, type, message, closeCode, closeReason) {\\n this.client = client;\\n this.type = type;\\n this.message = message;\\n this.closeCode = closeCode;\\n this.closeReason = closeReason;\\n this.timestampMs = Date.now();\\n }\\n isConnectionTerminated() {\\n switch (this.type) {\\n case SignalingClientEventType_1.default.WebSocketFailed:\\n case SignalingClientEventType_1.default.WebSocketError:\\n case SignalingClientEventType_1.default.WebSocketClosing:\\n case SignalingClientEventType_1.default.WebSocketClosed:\\n return true;\\n default:\\n return false;\\n }\\n }\\n}\\nexports[\\\"default\\\"] = SignalingClientEvent;\\n//# sourceMappingURL=SignalingClientEvent.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEvent.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js ***!\n \\********************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\nexports.SignalingClientEventType = void 0;\\n/** Defines the event types generated by SignalingClient and the underlying WebSocket connection. */\\nvar SignalingClientEventType;\\n(function (SignalingClientEventType) {\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketConnecting\\\"] = 0] = \\\"WebSocketConnecting\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketOpen\\\"] = 1] = \\\"WebSocketOpen\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketError\\\"] = 2] = \\\"WebSocketError\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketClosing\\\"] = 3] = \\\"WebSocketClosing\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketClosed\\\"] = 4] = \\\"WebSocketClosed\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketFailed\\\"] = 5] = \\\"WebSocketFailed\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketMessage\\\"] = 6] = \\\"WebSocketMessage\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketSendMessageFailure\\\"] = 7] = \\\"WebSocketSendMessageFailure\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketSentMessage\\\"] = 8] = \\\"WebSocketSentMessage\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"ProtocolDecodeFailure\\\"] = 9] = \\\"ProtocolDecodeFailure\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"ReceivedSignalFrame\\\"] = 10] = \\\"ReceivedSignalFrame\\\";\\n SignalingClientEventType[SignalingClientEventType[\\\"WebSocketSkippedMessage\\\"] = 11] = \\\"WebSocketSkippedMessage\\\";\\n})(SignalingClientEventType = exports.SignalingClientEventType || (exports.SignalingClientEventType = {}));\\nexports[\\\"default\\\"] = SignalingClientEventType;\\n//# sourceMappingURL=SignalingClientEventType.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientEventType.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientJoin.js\":\n/*!***************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientJoin.js ***!\n \\***************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[SignalingClientJoin]] contains settings for the Join SignalFrame.\\n */\\nclass SignalingClientJoin {\\n /** Initializes a SignalingClientJoin with the given properties.\\n *\\n * @param {number} maxVideos The maximum number of video tiles to send.\\n * @param {boolean} sendBitrates Whether the server should send Bitrates messages.\\n */\\n constructor(maxVideos, sendBitrates) {\\n this.maxVideos = maxVideos;\\n this.sendBitrates = sendBitrates;\\n }\\n}\\nexports[\\\"default\\\"] = SignalingClientJoin;\\n//# sourceMappingURL=SignalingClientJoin.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientJoin.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientSubscribe.js\":\n/*!********************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientSubscribe.js ***!\n \\********************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\neval(\"\\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\\n// SPDX-License-Identifier: Apache-2.0\\nObject.defineProperty(exports, \\\"__esModule\\\", ({ value: true }));\\n/**\\n * [[SignalingClientSubscribe]] contains settings for the Subscribe SignalFrame.\\n */\\nclass SignalingClientSubscribe {\\n /** Initializes a SignalingClientSubscribe with the given properties.\\n *\\n * @param{string} attendeeId Attendee ID of the client\\n * @param{string} sdpOffer SDP offer created by WebRTC\\n * @param{string} audioHost host\\n * @param{boolean} audioMuted Whether audio from client is muted\\n * @param{boolean} audioCheckin Whether audio is in checked-in state\\n * @param{Array} receiveStreamIds Which video streams to receive\\n * @param{boolean} localVideoEnabled Whether to send a video stream for the local camera\\n * @param{Array} array of local video stream description\\n * @param{boolean} connectionTypeHasVideo Whether connection type has video\\n */\\n constructor(attendeeId, sdpOffer, audioHost, audioMuted, audioCheckin, receiveStreamIds, localVideoEnabled, videoStreamDescriptions, connectionTypeHasVideo) {\\n this.attendeeId = attendeeId;\\n this.sdpOffer = sdpOffer;\\n this.audioHost = audioHost;\\n this.audioMuted = audioMuted;\\n this.audioCheckin = audioCheckin;\\n this.receiveStreamIds = receiveStreamIds;\\n this.localVideoEnabled = localVideoEnabled;\\n this.videoStreamDescriptions = videoStreamDescriptions;\\n this.connectionTypeHasVideo = connectionTypeHasVideo;\\n }\\n}\\nexports[\\\"default\\\"] = SignalingClientSubscribe;\\n//# sourceMappingURL=SignalingClientSubscribe.js.map\\n\\n//# sourceURL=webpack://@dannadori/voice-changer-client-js/./node_modules/amazon-chime-sdk-js/build/signalingclient/SignalingClientSubscribe.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js\":\n/*!***************************************************************************************!*\\\n !*** ./node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js ***!\n \\***************************************************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\neval(\"/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\\n\\n\\nvar $protobuf = __webpack_require__(/*! protobufjs/minimal */ \\\"./node_modules/protobufjs/minimal.js\\\");\\n\\n// Common aliases\\nvar $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\\n\\n// Exported root namespace\\nvar $root = $protobuf.roots[\\\"default\\\"] || ($protobuf.roots[\\\"default\\\"] = {});\\n\\n$root.SdkSignalFrame = (function() {\\n\\n /**\\n * Properties of a SdkSignalFrame.\\n * @exports ISdkSignalFrame\\n * @interface ISdkSignalFrame\\n * @property {number|Long} timestampMs SdkSignalFrame timestampMs\\n * @property {SdkSignalFrame.Type} type SdkSignalFrame type\\n * @property {ISdkErrorFrame|null} [error] SdkSignalFrame error\\n * @property {ISdkJoinFrame|null} [join] SdkSignalFrame join\\n * @property {ISdkJoinAckFrame|null} [joinack] SdkSignalFrame joinack\\n * @property {ISdkSubscribeFrame|null} [sub] SdkSignalFrame sub\\n * @property {ISdkSubscribeAckFrame|null} [suback] SdkSignalFrame suback\\n * @property {ISdkIndexFrame|null} [index] SdkSignalFrame index\\n * @property {ISdkPauseResumeFrame|null} [pause] SdkSignalFrame pause\\n * @property {ISdkLeaveFrame|null} [leave] SdkSignalFrame leave\\n * @property {ISdkLeaveAckFrame|null} [leaveAck] SdkSignalFrame leaveAck\\n * @property {ISdkBitrateFrame|null} [bitrates] SdkSignalFrame bitrates\\n * @property {ISdkAudioControlFrame|null} [audioControl] SdkSignalFrame audioControl\\n * @property {ISdkAudioMetadataFrame|null} [audioMetadata] SdkSignalFrame audioMetadata\\n * @property {ISdkAudioStreamIdInfoFrame|null} [audioStreamIdInfo] SdkSignalFrame audioStreamIdInfo\\n * @property {ISdkPingPongFrame|null} [pingPong] SdkSignalFrame pingPong\\n * @property {ISdkAudioStatusFrame|null} [audioStatus] SdkSignalFrame audioStatus\\n * @property {ISdkClientMetricFrame|null} [clientMetric] SdkSignalFrame clientMetric\\n * @property {ISdkDataMessageFrame|null} [dataMessage] SdkSignalFrame dataMessage\\n */\\n\\n /**\\n * Constructs a new SdkSignalFrame.\\n * @exports SdkSignalFrame\\n * @classdesc Represents a SdkSignalFrame.\\n * @implements ISdkSignalFrame\\n * @constructor\\n * @param {ISdkSignalFrame=} [properties] Properties to set\\n */\\n function SdkSignalFrame(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkSignalFrame timestampMs.\\n * @member {number|Long} timestampMs\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.timestampMs = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\\n\\n /**\\n * SdkSignalFrame type.\\n * @member {SdkSignalFrame.Type} type\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.type = 1;\\n\\n /**\\n * SdkSignalFrame error.\\n * @member {ISdkErrorFrame|null|undefined} error\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.error = null;\\n\\n /**\\n * SdkSignalFrame join.\\n * @member {ISdkJoinFrame|null|undefined} join\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.join = null;\\n\\n /**\\n * SdkSignalFrame joinack.\\n * @member {ISdkJoinAckFrame|null|undefined} joinack\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.joinack = null;\\n\\n /**\\n * SdkSignalFrame sub.\\n * @member {ISdkSubscribeFrame|null|undefined} sub\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.sub = null;\\n\\n /**\\n * SdkSignalFrame suback.\\n * @member {ISdkSubscribeAckFrame|null|undefined} suback\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.suback = null;\\n\\n /**\\n * SdkSignalFrame index.\\n * @member {ISdkIndexFrame|null|undefined} index\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.index = null;\\n\\n /**\\n * SdkSignalFrame pause.\\n * @member {ISdkPauseResumeFrame|null|undefined} pause\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.pause = null;\\n\\n /**\\n * SdkSignalFrame leave.\\n * @member {ISdkLeaveFrame|null|undefined} leave\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.leave = null;\\n\\n /**\\n * SdkSignalFrame leaveAck.\\n * @member {ISdkLeaveAckFrame|null|undefined} leaveAck\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.leaveAck = null;\\n\\n /**\\n * SdkSignalFrame bitrates.\\n * @member {ISdkBitrateFrame|null|undefined} bitrates\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.bitrates = null;\\n\\n /**\\n * SdkSignalFrame audioControl.\\n * @member {ISdkAudioControlFrame|null|undefined} audioControl\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.audioControl = null;\\n\\n /**\\n * SdkSignalFrame audioMetadata.\\n * @member {ISdkAudioMetadataFrame|null|undefined} audioMetadata\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.audioMetadata = null;\\n\\n /**\\n * SdkSignalFrame audioStreamIdInfo.\\n * @member {ISdkAudioStreamIdInfoFrame|null|undefined} audioStreamIdInfo\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.audioStreamIdInfo = null;\\n\\n /**\\n * SdkSignalFrame pingPong.\\n * @member {ISdkPingPongFrame|null|undefined} pingPong\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.pingPong = null;\\n\\n /**\\n * SdkSignalFrame audioStatus.\\n * @member {ISdkAudioStatusFrame|null|undefined} audioStatus\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.audioStatus = null;\\n\\n /**\\n * SdkSignalFrame clientMetric.\\n * @member {ISdkClientMetricFrame|null|undefined} clientMetric\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.clientMetric = null;\\n\\n /**\\n * SdkSignalFrame dataMessage.\\n * @member {ISdkDataMessageFrame|null|undefined} dataMessage\\n * @memberof SdkSignalFrame\\n * @instance\\n */\\n SdkSignalFrame.prototype.dataMessage = null;\\n\\n /**\\n * Creates a new SdkSignalFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {ISdkSignalFrame=} [properties] Properties to set\\n * @returns {SdkSignalFrame} SdkSignalFrame instance\\n */\\n SdkSignalFrame.create = function create(properties) {\\n return new SdkSignalFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkSignalFrame message. Does not implicitly {@link SdkSignalFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {ISdkSignalFrame} message SdkSignalFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkSignalFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.timestampMs);\\n writer.uint32(/* id 2, wireType 0 =*/16).int32(message.type);\\n if (message.error != null && message.hasOwnProperty(\\\"error\\\"))\\n $root.SdkErrorFrame.encode(message.error, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\\n if (message.join != null && message.hasOwnProperty(\\\"join\\\"))\\n $root.SdkJoinFrame.encode(message.join, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\\n if (message.joinack != null && message.hasOwnProperty(\\\"joinack\\\"))\\n $root.SdkJoinAckFrame.encode(message.joinack, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\\n if (message.sub != null && message.hasOwnProperty(\\\"sub\\\"))\\n $root.SdkSubscribeFrame.encode(message.sub, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\\n if (message.suback != null && message.hasOwnProperty(\\\"suback\\\"))\\n $root.SdkSubscribeAckFrame.encode(message.suback, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\\n if (message.index != null && message.hasOwnProperty(\\\"index\\\"))\\n $root.SdkIndexFrame.encode(message.index, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\\n if (message.pause != null && message.hasOwnProperty(\\\"pause\\\"))\\n $root.SdkPauseResumeFrame.encode(message.pause, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\\n if (message.leave != null && message.hasOwnProperty(\\\"leave\\\"))\\n $root.SdkLeaveFrame.encode(message.leave, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\\n if (message.leaveAck != null && message.hasOwnProperty(\\\"leaveAck\\\"))\\n $root.SdkLeaveAckFrame.encode(message.leaveAck, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim();\\n if (message.bitrates != null && message.hasOwnProperty(\\\"bitrates\\\"))\\n $root.SdkBitrateFrame.encode(message.bitrates, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\\n if (message.audioControl != null && message.hasOwnProperty(\\\"audioControl\\\"))\\n $root.SdkAudioControlFrame.encode(message.audioControl, writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\\n if (message.audioMetadata != null && message.hasOwnProperty(\\\"audioMetadata\\\"))\\n $root.SdkAudioMetadataFrame.encode(message.audioMetadata, writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\\n if (message.audioStreamIdInfo != null && message.hasOwnProperty(\\\"audioStreamIdInfo\\\"))\\n $root.SdkAudioStreamIdInfoFrame.encode(message.audioStreamIdInfo, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim();\\n if (message.pingPong != null && message.hasOwnProperty(\\\"pingPong\\\"))\\n $root.SdkPingPongFrame.encode(message.pingPong, writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim();\\n if (message.audioStatus != null && message.hasOwnProperty(\\\"audioStatus\\\"))\\n $root.SdkAudioStatusFrame.encode(message.audioStatus, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim();\\n if (message.clientMetric != null && message.hasOwnProperty(\\\"clientMetric\\\"))\\n $root.SdkClientMetricFrame.encode(message.clientMetric, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim();\\n if (message.dataMessage != null && message.hasOwnProperty(\\\"dataMessage\\\"))\\n $root.SdkDataMessageFrame.encode(message.dataMessage, writer.uint32(/* id 23, wireType 2 =*/186).fork()).ldelim();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkSignalFrame message, length delimited. Does not implicitly {@link SdkSignalFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {ISdkSignalFrame} message SdkSignalFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkSignalFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkSignalFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkSignalFrame} SdkSignalFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkSignalFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkSignalFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.timestampMs = reader.uint64();\\n break;\\n case 2:\\n message.type = reader.int32();\\n break;\\n case 3:\\n message.error = $root.SdkErrorFrame.decode(reader, reader.uint32());\\n break;\\n case 4:\\n message.join = $root.SdkJoinFrame.decode(reader, reader.uint32());\\n break;\\n case 5:\\n message.joinack = $root.SdkJoinAckFrame.decode(reader, reader.uint32());\\n break;\\n case 6:\\n message.sub = $root.SdkSubscribeFrame.decode(reader, reader.uint32());\\n break;\\n case 7:\\n message.suback = $root.SdkSubscribeAckFrame.decode(reader, reader.uint32());\\n break;\\n case 8:\\n message.index = $root.SdkIndexFrame.decode(reader, reader.uint32());\\n break;\\n case 10:\\n message.pause = $root.SdkPauseResumeFrame.decode(reader, reader.uint32());\\n break;\\n case 11:\\n message.leave = $root.SdkLeaveFrame.decode(reader, reader.uint32());\\n break;\\n case 12:\\n message.leaveAck = $root.SdkLeaveAckFrame.decode(reader, reader.uint32());\\n break;\\n case 14:\\n message.bitrates = $root.SdkBitrateFrame.decode(reader, reader.uint32());\\n break;\\n case 17:\\n message.audioControl = $root.SdkAudioControlFrame.decode(reader, reader.uint32());\\n break;\\n case 18:\\n message.audioMetadata = $root.SdkAudioMetadataFrame.decode(reader, reader.uint32());\\n break;\\n case 19:\\n message.audioStreamIdInfo = $root.SdkAudioStreamIdInfoFrame.decode(reader, reader.uint32());\\n break;\\n case 20:\\n message.pingPong = $root.SdkPingPongFrame.decode(reader, reader.uint32());\\n break;\\n case 21:\\n message.audioStatus = $root.SdkAudioStatusFrame.decode(reader, reader.uint32());\\n break;\\n case 22:\\n message.clientMetric = $root.SdkClientMetricFrame.decode(reader, reader.uint32());\\n break;\\n case 23:\\n message.dataMessage = $root.SdkDataMessageFrame.decode(reader, reader.uint32());\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n if (!message.hasOwnProperty(\\\"timestampMs\\\"))\\n throw $util.ProtocolError(\\\"missing required 'timestampMs'\\\", { instance: message });\\n if (!message.hasOwnProperty(\\\"type\\\"))\\n throw $util.ProtocolError(\\\"missing required 'type'\\\", { instance: message });\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkSignalFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkSignalFrame} SdkSignalFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkSignalFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkSignalFrame message.\\n * @function verify\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkSignalFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (!$util.isInteger(message.timestampMs) && !(message.timestampMs && $util.isInteger(message.timestampMs.low) && $util.isInteger(message.timestampMs.high)))\\n return \\\"timestampMs: integer|Long expected\\\";\\n switch (message.type) {\\n default:\\n return \\\"type: enum value expected\\\";\\n case 1:\\n case 2:\\n case 3:\\n case 4:\\n case 5:\\n case 7:\\n case 8:\\n case 9:\\n case 10:\\n case 13:\\n case 16:\\n case 17:\\n case 18:\\n case 19:\\n case 20:\\n case 21:\\n case 22:\\n break;\\n }\\n if (message.error != null && message.hasOwnProperty(\\\"error\\\")) {\\n var error = $root.SdkErrorFrame.verify(message.error);\\n if (error)\\n return \\\"error.\\\" + error;\\n }\\n if (message.join != null && message.hasOwnProperty(\\\"join\\\")) {\\n var error = $root.SdkJoinFrame.verify(message.join);\\n if (error)\\n return \\\"join.\\\" + error;\\n }\\n if (message.joinack != null && message.hasOwnProperty(\\\"joinack\\\")) {\\n var error = $root.SdkJoinAckFrame.verify(message.joinack);\\n if (error)\\n return \\\"joinack.\\\" + error;\\n }\\n if (message.sub != null && message.hasOwnProperty(\\\"sub\\\")) {\\n var error = $root.SdkSubscribeFrame.verify(message.sub);\\n if (error)\\n return \\\"sub.\\\" + error;\\n }\\n if (message.suback != null && message.hasOwnProperty(\\\"suback\\\")) {\\n var error = $root.SdkSubscribeAckFrame.verify(message.suback);\\n if (error)\\n return \\\"suback.\\\" + error;\\n }\\n if (message.index != null && message.hasOwnProperty(\\\"index\\\")) {\\n var error = $root.SdkIndexFrame.verify(message.index);\\n if (error)\\n return \\\"index.\\\" + error;\\n }\\n if (message.pause != null && message.hasOwnProperty(\\\"pause\\\")) {\\n var error = $root.SdkPauseResumeFrame.verify(message.pause);\\n if (error)\\n return \\\"pause.\\\" + error;\\n }\\n if (message.leave != null && message.hasOwnProperty(\\\"leave\\\")) {\\n var error = $root.SdkLeaveFrame.verify(message.leave);\\n if (error)\\n return \\\"leave.\\\" + error;\\n }\\n if (message.leaveAck != null && message.hasOwnProperty(\\\"leaveAck\\\")) {\\n var error = $root.SdkLeaveAckFrame.verify(message.leaveAck);\\n if (error)\\n return \\\"leaveAck.\\\" + error;\\n }\\n if (message.bitrates != null && message.hasOwnProperty(\\\"bitrates\\\")) {\\n var error = $root.SdkBitrateFrame.verify(message.bitrates);\\n if (error)\\n return \\\"bitrates.\\\" + error;\\n }\\n if (message.audioControl != null && message.hasOwnProperty(\\\"audioControl\\\")) {\\n var error = $root.SdkAudioControlFrame.verify(message.audioControl);\\n if (error)\\n return \\\"audioControl.\\\" + error;\\n }\\n if (message.audioMetadata != null && message.hasOwnProperty(\\\"audioMetadata\\\")) {\\n var error = $root.SdkAudioMetadataFrame.verify(message.audioMetadata);\\n if (error)\\n return \\\"audioMetadata.\\\" + error;\\n }\\n if (message.audioStreamIdInfo != null && message.hasOwnProperty(\\\"audioStreamIdInfo\\\")) {\\n var error = $root.SdkAudioStreamIdInfoFrame.verify(message.audioStreamIdInfo);\\n if (error)\\n return \\\"audioStreamIdInfo.\\\" + error;\\n }\\n if (message.pingPong != null && message.hasOwnProperty(\\\"pingPong\\\")) {\\n var error = $root.SdkPingPongFrame.verify(message.pingPong);\\n if (error)\\n return \\\"pingPong.\\\" + error;\\n }\\n if (message.audioStatus != null && message.hasOwnProperty(\\\"audioStatus\\\")) {\\n var error = $root.SdkAudioStatusFrame.verify(message.audioStatus);\\n if (error)\\n return \\\"audioStatus.\\\" + error;\\n }\\n if (message.clientMetric != null && message.hasOwnProperty(\\\"clientMetric\\\")) {\\n var error = $root.SdkClientMetricFrame.verify(message.clientMetric);\\n if (error)\\n return \\\"clientMetric.\\\" + error;\\n }\\n if (message.dataMessage != null && message.hasOwnProperty(\\\"dataMessage\\\")) {\\n var error = $root.SdkDataMessageFrame.verify(message.dataMessage);\\n if (error)\\n return \\\"dataMessage.\\\" + error;\\n }\\n return null;\\n };\\n\\n /**\\n * Creates a SdkSignalFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkSignalFrame} SdkSignalFrame\\n */\\n SdkSignalFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkSignalFrame)\\n return object;\\n var message = new $root.SdkSignalFrame();\\n if (object.timestampMs != null)\\n if ($util.Long)\\n (message.timestampMs = $util.Long.fromValue(object.timestampMs)).unsigned = true;\\n else if (typeof object.timestampMs === \\\"string\\\")\\n message.timestampMs = parseInt(object.timestampMs, 10);\\n else if (typeof object.timestampMs === \\\"number\\\")\\n message.timestampMs = object.timestampMs;\\n else if (typeof object.timestampMs === \\\"object\\\")\\n message.timestampMs = new $util.LongBits(object.timestampMs.low >>> 0, object.timestampMs.high >>> 0).toNumber(true);\\n switch (object.type) {\\n case \\\"JOIN\\\":\\n case 1:\\n message.type = 1;\\n break;\\n case \\\"JOIN_ACK\\\":\\n case 2:\\n message.type = 2;\\n break;\\n case \\\"SUBSCRIBE\\\":\\n case 3:\\n message.type = 3;\\n break;\\n case \\\"SUBSCRIBE_ACK\\\":\\n case 4:\\n message.type = 4;\\n break;\\n case \\\"INDEX\\\":\\n case 5:\\n message.type = 5;\\n break;\\n case \\\"PAUSE\\\":\\n case 7:\\n message.type = 7;\\n break;\\n case \\\"RESUME\\\":\\n case 8:\\n message.type = 8;\\n break;\\n case \\\"LEAVE\\\":\\n case 9:\\n message.type = 9;\\n break;\\n case \\\"LEAVE_ACK\\\":\\n case 10:\\n message.type = 10;\\n break;\\n case \\\"BITRATES\\\":\\n case 13:\\n message.type = 13;\\n break;\\n case \\\"AUDIO_CONTROL\\\":\\n case 16:\\n message.type = 16;\\n break;\\n case \\\"AUDIO_METADATA\\\":\\n case 17:\\n message.type = 17;\\n break;\\n case \\\"AUDIO_STREAM_ID_INFO\\\":\\n case 18:\\n message.type = 18;\\n break;\\n case \\\"PING_PONG\\\":\\n case 19:\\n message.type = 19;\\n break;\\n case \\\"AUDIO_STATUS\\\":\\n case 20:\\n message.type = 20;\\n break;\\n case \\\"CLIENT_METRIC\\\":\\n case 21:\\n message.type = 21;\\n break;\\n case \\\"DATA_MESSAGE\\\":\\n case 22:\\n message.type = 22;\\n break;\\n }\\n if (object.error != null) {\\n if (typeof object.error !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.error: object expected\\\");\\n message.error = $root.SdkErrorFrame.fromObject(object.error);\\n }\\n if (object.join != null) {\\n if (typeof object.join !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.join: object expected\\\");\\n message.join = $root.SdkJoinFrame.fromObject(object.join);\\n }\\n if (object.joinack != null) {\\n if (typeof object.joinack !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.joinack: object expected\\\");\\n message.joinack = $root.SdkJoinAckFrame.fromObject(object.joinack);\\n }\\n if (object.sub != null) {\\n if (typeof object.sub !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.sub: object expected\\\");\\n message.sub = $root.SdkSubscribeFrame.fromObject(object.sub);\\n }\\n if (object.suback != null) {\\n if (typeof object.suback !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.suback: object expected\\\");\\n message.suback = $root.SdkSubscribeAckFrame.fromObject(object.suback);\\n }\\n if (object.index != null) {\\n if (typeof object.index !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.index: object expected\\\");\\n message.index = $root.SdkIndexFrame.fromObject(object.index);\\n }\\n if (object.pause != null) {\\n if (typeof object.pause !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.pause: object expected\\\");\\n message.pause = $root.SdkPauseResumeFrame.fromObject(object.pause);\\n }\\n if (object.leave != null) {\\n if (typeof object.leave !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.leave: object expected\\\");\\n message.leave = $root.SdkLeaveFrame.fromObject(object.leave);\\n }\\n if (object.leaveAck != null) {\\n if (typeof object.leaveAck !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.leaveAck: object expected\\\");\\n message.leaveAck = $root.SdkLeaveAckFrame.fromObject(object.leaveAck);\\n }\\n if (object.bitrates != null) {\\n if (typeof object.bitrates !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.bitrates: object expected\\\");\\n message.bitrates = $root.SdkBitrateFrame.fromObject(object.bitrates);\\n }\\n if (object.audioControl != null) {\\n if (typeof object.audioControl !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.audioControl: object expected\\\");\\n message.audioControl = $root.SdkAudioControlFrame.fromObject(object.audioControl);\\n }\\n if (object.audioMetadata != null) {\\n if (typeof object.audioMetadata !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.audioMetadata: object expected\\\");\\n message.audioMetadata = $root.SdkAudioMetadataFrame.fromObject(object.audioMetadata);\\n }\\n if (object.audioStreamIdInfo != null) {\\n if (typeof object.audioStreamIdInfo !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.audioStreamIdInfo: object expected\\\");\\n message.audioStreamIdInfo = $root.SdkAudioStreamIdInfoFrame.fromObject(object.audioStreamIdInfo);\\n }\\n if (object.pingPong != null) {\\n if (typeof object.pingPong !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.pingPong: object expected\\\");\\n message.pingPong = $root.SdkPingPongFrame.fromObject(object.pingPong);\\n }\\n if (object.audioStatus != null) {\\n if (typeof object.audioStatus !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.audioStatus: object expected\\\");\\n message.audioStatus = $root.SdkAudioStatusFrame.fromObject(object.audioStatus);\\n }\\n if (object.clientMetric != null) {\\n if (typeof object.clientMetric !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.clientMetric: object expected\\\");\\n message.clientMetric = $root.SdkClientMetricFrame.fromObject(object.clientMetric);\\n }\\n if (object.dataMessage != null) {\\n if (typeof object.dataMessage !== \\\"object\\\")\\n throw TypeError(\\\".SdkSignalFrame.dataMessage: object expected\\\");\\n message.dataMessage = $root.SdkDataMessageFrame.fromObject(object.dataMessage);\\n }\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkSignalFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkSignalFrame\\n * @static\\n * @param {SdkSignalFrame} message SdkSignalFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkSignalFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n if ($util.Long) {\\n var long = new $util.Long(0, 0, true);\\n object.timestampMs = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\\n } else\\n object.timestampMs = options.longs === String ? \\\"0\\\" : 0;\\n object.type = options.enums === String ? \\\"JOIN\\\" : 1;\\n object.error = null;\\n object.join = null;\\n object.joinack = null;\\n object.sub = null;\\n object.suback = null;\\n object.index = null;\\n object.pause = null;\\n object.leave = null;\\n object.leaveAck = null;\\n object.bitrates = null;\\n object.audioControl = null;\\n object.audioMetadata = null;\\n object.audioStreamIdInfo = null;\\n object.pingPong = null;\\n object.audioStatus = null;\\n object.clientMetric = null;\\n object.dataMessage = null;\\n }\\n if (message.timestampMs != null && message.hasOwnProperty(\\\"timestampMs\\\"))\\n if (typeof message.timestampMs === \\\"number\\\")\\n object.timestampMs = options.longs === String ? String(message.timestampMs) : message.timestampMs;\\n else\\n object.timestampMs = options.longs === String ? $util.Long.prototype.toString.call(message.timestampMs) : options.longs === Number ? new $util.LongBits(message.timestampMs.low >>> 0, message.timestampMs.high >>> 0).toNumber(true) : message.timestampMs;\\n if (message.type != null && message.hasOwnProperty(\\\"type\\\"))\\n object.type = options.enums === String ? $root.SdkSignalFrame.Type[message.type] : message.type;\\n if (message.error != null && message.hasOwnProperty(\\\"error\\\"))\\n object.error = $root.SdkErrorFrame.toObject(message.error, options);\\n if (message.join != null && message.hasOwnProperty(\\\"join\\\"))\\n object.join = $root.SdkJoinFrame.toObject(message.join, options);\\n if (message.joinack != null && message.hasOwnProperty(\\\"joinack\\\"))\\n object.joinack = $root.SdkJoinAckFrame.toObject(message.joinack, options);\\n if (message.sub != null && message.hasOwnProperty(\\\"sub\\\"))\\n object.sub = $root.SdkSubscribeFrame.toObject(message.sub, options);\\n if (message.suback != null && message.hasOwnProperty(\\\"suback\\\"))\\n object.suback = $root.SdkSubscribeAckFrame.toObject(message.suback, options);\\n if (message.index != null && message.hasOwnProperty(\\\"index\\\"))\\n object.index = $root.SdkIndexFrame.toObject(message.index, options);\\n if (message.pause != null && message.hasOwnProperty(\\\"pause\\\"))\\n object.pause = $root.SdkPauseResumeFrame.toObject(message.pause, options);\\n if (message.leave != null && message.hasOwnProperty(\\\"leave\\\"))\\n object.leave = $root.SdkLeaveFrame.toObject(message.leave, options);\\n if (message.leaveAck != null && message.hasOwnProperty(\\\"leaveAck\\\"))\\n object.leaveAck = $root.SdkLeaveAckFrame.toObject(message.leaveAck, options);\\n if (message.bitrates != null && message.hasOwnProperty(\\\"bitrates\\\"))\\n object.bitrates = $root.SdkBitrateFrame.toObject(message.bitrates, options);\\n if (message.audioControl != null && message.hasOwnProperty(\\\"audioControl\\\"))\\n object.audioControl = $root.SdkAudioControlFrame.toObject(message.audioControl, options);\\n if (message.audioMetadata != null && message.hasOwnProperty(\\\"audioMetadata\\\"))\\n object.audioMetadata = $root.SdkAudioMetadataFrame.toObject(message.audioMetadata, options);\\n if (message.audioStreamIdInfo != null && message.hasOwnProperty(\\\"audioStreamIdInfo\\\"))\\n object.audioStreamIdInfo = $root.SdkAudioStreamIdInfoFrame.toObject(message.audioStreamIdInfo, options);\\n if (message.pingPong != null && message.hasOwnProperty(\\\"pingPong\\\"))\\n object.pingPong = $root.SdkPingPongFrame.toObject(message.pingPong, options);\\n if (message.audioStatus != null && message.hasOwnProperty(\\\"audioStatus\\\"))\\n object.audioStatus = $root.SdkAudioStatusFrame.toObject(message.audioStatus, options);\\n if (message.clientMetric != null && message.hasOwnProperty(\\\"clientMetric\\\"))\\n object.clientMetric = $root.SdkClientMetricFrame.toObject(message.clientMetric, options);\\n if (message.dataMessage != null && message.hasOwnProperty(\\\"dataMessage\\\"))\\n object.dataMessage = $root.SdkDataMessageFrame.toObject(message.dataMessage, options);\\n return object;\\n };\\n\\n /**\\n * Converts this SdkSignalFrame to JSON.\\n * @function toJSON\\n * @memberof SdkSignalFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkSignalFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n /**\\n * Type enum.\\n * @name SdkSignalFrame.Type\\n * @enum {string}\\n * @property {number} JOIN=1 JOIN value\\n * @property {number} JOIN_ACK=2 JOIN_ACK value\\n * @property {number} SUBSCRIBE=3 SUBSCRIBE value\\n * @property {number} SUBSCRIBE_ACK=4 SUBSCRIBE_ACK value\\n * @property {number} INDEX=5 INDEX value\\n * @property {number} PAUSE=7 PAUSE value\\n * @property {number} RESUME=8 RESUME value\\n * @property {number} LEAVE=9 LEAVE value\\n * @property {number} LEAVE_ACK=10 LEAVE_ACK value\\n * @property {number} BITRATES=13 BITRATES value\\n * @property {number} AUDIO_CONTROL=16 AUDIO_CONTROL value\\n * @property {number} AUDIO_METADATA=17 AUDIO_METADATA value\\n * @property {number} AUDIO_STREAM_ID_INFO=18 AUDIO_STREAM_ID_INFO value\\n * @property {number} PING_PONG=19 PING_PONG value\\n * @property {number} AUDIO_STATUS=20 AUDIO_STATUS value\\n * @property {number} CLIENT_METRIC=21 CLIENT_METRIC value\\n * @property {number} DATA_MESSAGE=22 DATA_MESSAGE value\\n */\\n SdkSignalFrame.Type = (function() {\\n var valuesById = {}, values = Object.create(valuesById);\\n values[valuesById[1] = \\\"JOIN\\\"] = 1;\\n values[valuesById[2] = \\\"JOIN_ACK\\\"] = 2;\\n values[valuesById[3] = \\\"SUBSCRIBE\\\"] = 3;\\n values[valuesById[4] = \\\"SUBSCRIBE_ACK\\\"] = 4;\\n values[valuesById[5] = \\\"INDEX\\\"] = 5;\\n values[valuesById[7] = \\\"PAUSE\\\"] = 7;\\n values[valuesById[8] = \\\"RESUME\\\"] = 8;\\n values[valuesById[9] = \\\"LEAVE\\\"] = 9;\\n values[valuesById[10] = \\\"LEAVE_ACK\\\"] = 10;\\n values[valuesById[13] = \\\"BITRATES\\\"] = 13;\\n values[valuesById[16] = \\\"AUDIO_CONTROL\\\"] = 16;\\n values[valuesById[17] = \\\"AUDIO_METADATA\\\"] = 17;\\n values[valuesById[18] = \\\"AUDIO_STREAM_ID_INFO\\\"] = 18;\\n values[valuesById[19] = \\\"PING_PONG\\\"] = 19;\\n values[valuesById[20] = \\\"AUDIO_STATUS\\\"] = 20;\\n values[valuesById[21] = \\\"CLIENT_METRIC\\\"] = 21;\\n values[valuesById[22] = \\\"DATA_MESSAGE\\\"] = 22;\\n return values;\\n })();\\n\\n return SdkSignalFrame;\\n})();\\n\\n$root.SdkErrorFrame = (function() {\\n\\n /**\\n * Properties of a SdkErrorFrame.\\n * @exports ISdkErrorFrame\\n * @interface ISdkErrorFrame\\n * @property {number|null} [status] SdkErrorFrame status\\n * @property {string|null} [description] SdkErrorFrame description\\n */\\n\\n /**\\n * Constructs a new SdkErrorFrame.\\n * @exports SdkErrorFrame\\n * @classdesc Represents a SdkErrorFrame.\\n * @implements ISdkErrorFrame\\n * @constructor\\n * @param {ISdkErrorFrame=} [properties] Properties to set\\n */\\n function SdkErrorFrame(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkErrorFrame status.\\n * @member {number} status\\n * @memberof SdkErrorFrame\\n * @instance\\n */\\n SdkErrorFrame.prototype.status = 0;\\n\\n /**\\n * SdkErrorFrame description.\\n * @member {string} description\\n * @memberof SdkErrorFrame\\n * @instance\\n */\\n SdkErrorFrame.prototype.description = \\\"\\\";\\n\\n /**\\n * Creates a new SdkErrorFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {ISdkErrorFrame=} [properties] Properties to set\\n * @returns {SdkErrorFrame} SdkErrorFrame instance\\n */\\n SdkErrorFrame.create = function create(properties) {\\n return new SdkErrorFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkErrorFrame message. Does not implicitly {@link SdkErrorFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {ISdkErrorFrame} message SdkErrorFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkErrorFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.status != null && message.hasOwnProperty(\\\"status\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.status);\\n if (message.description != null && message.hasOwnProperty(\\\"description\\\"))\\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.description);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkErrorFrame message, length delimited. Does not implicitly {@link SdkErrorFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {ISdkErrorFrame} message SdkErrorFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkErrorFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkErrorFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkErrorFrame} SdkErrorFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkErrorFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkErrorFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.status = reader.uint32();\\n break;\\n case 2:\\n message.description = reader.string();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkErrorFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkErrorFrame} SdkErrorFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkErrorFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkErrorFrame message.\\n * @function verify\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkErrorFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.status != null && message.hasOwnProperty(\\\"status\\\"))\\n if (!$util.isInteger(message.status))\\n return \\\"status: integer expected\\\";\\n if (message.description != null && message.hasOwnProperty(\\\"description\\\"))\\n if (!$util.isString(message.description))\\n return \\\"description: string expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkErrorFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkErrorFrame} SdkErrorFrame\\n */\\n SdkErrorFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkErrorFrame)\\n return object;\\n var message = new $root.SdkErrorFrame();\\n if (object.status != null)\\n message.status = object.status >>> 0;\\n if (object.description != null)\\n message.description = String(object.description);\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkErrorFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkErrorFrame\\n * @static\\n * @param {SdkErrorFrame} message SdkErrorFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkErrorFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n object.status = 0;\\n object.description = \\\"\\\";\\n }\\n if (message.status != null && message.hasOwnProperty(\\\"status\\\"))\\n object.status = message.status;\\n if (message.description != null && message.hasOwnProperty(\\\"description\\\"))\\n object.description = message.description;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkErrorFrame to JSON.\\n * @function toJSON\\n * @memberof SdkErrorFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkErrorFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkErrorFrame;\\n})();\\n\\n/**\\n * SdkJoinFlags enum.\\n * @exports SdkJoinFlags\\n * @enum {string}\\n * @property {number} SEND_BITRATES=1 SEND_BITRATES value\\n * @property {number} HAS_STREAM_UPDATE=2 HAS_STREAM_UPDATE value\\n * @property {number} USE_SEND_SIDE_BWE=8 USE_SEND_SIDE_BWE value\\n * @property {number} COMPLETE_VIDEO_SOURCES_LIST=16 COMPLETE_VIDEO_SOURCES_LIST value\\n * @property {number} EXCLUDE_SELF_CONTENT_IN_INDEX=32 EXCLUDE_SELF_CONTENT_IN_INDEX value\\n */\\n$root.SdkJoinFlags = (function() {\\n var valuesById = {}, values = Object.create(valuesById);\\n values[valuesById[1] = \\\"SEND_BITRATES\\\"] = 1;\\n values[valuesById[2] = \\\"HAS_STREAM_UPDATE\\\"] = 2;\\n values[valuesById[8] = \\\"USE_SEND_SIDE_BWE\\\"] = 8;\\n values[valuesById[16] = \\\"COMPLETE_VIDEO_SOURCES_LIST\\\"] = 16;\\n values[valuesById[32] = \\\"EXCLUDE_SELF_CONTENT_IN_INDEX\\\"] = 32;\\n return values;\\n})();\\n\\n$root.SdkClientDetails = (function() {\\n\\n /**\\n * Properties of a SdkClientDetails.\\n * @exports ISdkClientDetails\\n * @interface ISdkClientDetails\\n * @property {string|null} [appVersionName] SdkClientDetails appVersionName\\n * @property {string|null} [appVersionCode] SdkClientDetails appVersionCode\\n * @property {string|null} [deviceModel] SdkClientDetails deviceModel\\n * @property {string|null} [deviceMake] SdkClientDetails deviceMake\\n * @property {string|null} [platformName] SdkClientDetails platformName\\n * @property {string|null} [platformVersion] SdkClientDetails platformVersion\\n * @property {string|null} [clientSource] SdkClientDetails clientSource\\n * @property {string|null} [chimeSdkVersion] SdkClientDetails chimeSdkVersion\\n */\\n\\n /**\\n * Constructs a new SdkClientDetails.\\n * @exports SdkClientDetails\\n * @classdesc Represents a SdkClientDetails.\\n * @implements ISdkClientDetails\\n * @constructor\\n * @param {ISdkClientDetails=} [properties] Properties to set\\n */\\n function SdkClientDetails(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkClientDetails appVersionName.\\n * @member {string} appVersionName\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.appVersionName = \\\"\\\";\\n\\n /**\\n * SdkClientDetails appVersionCode.\\n * @member {string} appVersionCode\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.appVersionCode = \\\"\\\";\\n\\n /**\\n * SdkClientDetails deviceModel.\\n * @member {string} deviceModel\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.deviceModel = \\\"\\\";\\n\\n /**\\n * SdkClientDetails deviceMake.\\n * @member {string} deviceMake\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.deviceMake = \\\"\\\";\\n\\n /**\\n * SdkClientDetails platformName.\\n * @member {string} platformName\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.platformName = \\\"\\\";\\n\\n /**\\n * SdkClientDetails platformVersion.\\n * @member {string} platformVersion\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.platformVersion = \\\"\\\";\\n\\n /**\\n * SdkClientDetails clientSource.\\n * @member {string} clientSource\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.clientSource = \\\"\\\";\\n\\n /**\\n * SdkClientDetails chimeSdkVersion.\\n * @member {string} chimeSdkVersion\\n * @memberof SdkClientDetails\\n * @instance\\n */\\n SdkClientDetails.prototype.chimeSdkVersion = \\\"\\\";\\n\\n /**\\n * Creates a new SdkClientDetails instance using the specified properties.\\n * @function create\\n * @memberof SdkClientDetails\\n * @static\\n * @param {ISdkClientDetails=} [properties] Properties to set\\n * @returns {SdkClientDetails} SdkClientDetails instance\\n */\\n SdkClientDetails.create = function create(properties) {\\n return new SdkClientDetails(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkClientDetails message. Does not implicitly {@link SdkClientDetails.verify|verify} messages.\\n * @function encode\\n * @memberof SdkClientDetails\\n * @static\\n * @param {ISdkClientDetails} message SdkClientDetails message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkClientDetails.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.appVersionName != null && message.hasOwnProperty(\\\"appVersionName\\\"))\\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.appVersionName);\\n if (message.appVersionCode != null && message.hasOwnProperty(\\\"appVersionCode\\\"))\\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.appVersionCode);\\n if (message.deviceModel != null && message.hasOwnProperty(\\\"deviceModel\\\"))\\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.deviceModel);\\n if (message.deviceMake != null && message.hasOwnProperty(\\\"deviceMake\\\"))\\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.deviceMake);\\n if (message.platformName != null && message.hasOwnProperty(\\\"platformName\\\"))\\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.platformName);\\n if (message.platformVersion != null && message.hasOwnProperty(\\\"platformVersion\\\"))\\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.platformVersion);\\n if (message.clientSource != null && message.hasOwnProperty(\\\"clientSource\\\"))\\n writer.uint32(/* id 7, wireType 2 =*/58).string(message.clientSource);\\n if (message.chimeSdkVersion != null && message.hasOwnProperty(\\\"chimeSdkVersion\\\"))\\n writer.uint32(/* id 8, wireType 2 =*/66).string(message.chimeSdkVersion);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkClientDetails message, length delimited. Does not implicitly {@link SdkClientDetails.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkClientDetails\\n * @static\\n * @param {ISdkClientDetails} message SdkClientDetails message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkClientDetails.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkClientDetails message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkClientDetails\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkClientDetails} SdkClientDetails\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkClientDetails.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkClientDetails();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.appVersionName = reader.string();\\n break;\\n case 2:\\n message.appVersionCode = reader.string();\\n break;\\n case 3:\\n message.deviceModel = reader.string();\\n break;\\n case 4:\\n message.deviceMake = reader.string();\\n break;\\n case 5:\\n message.platformName = reader.string();\\n break;\\n case 6:\\n message.platformVersion = reader.string();\\n break;\\n case 7:\\n message.clientSource = reader.string();\\n break;\\n case 8:\\n message.chimeSdkVersion = reader.string();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkClientDetails message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkClientDetails\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkClientDetails} SdkClientDetails\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkClientDetails.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkClientDetails message.\\n * @function verify\\n * @memberof SdkClientDetails\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkClientDetails.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.appVersionName != null && message.hasOwnProperty(\\\"appVersionName\\\"))\\n if (!$util.isString(message.appVersionName))\\n return \\\"appVersionName: string expected\\\";\\n if (message.appVersionCode != null && message.hasOwnProperty(\\\"appVersionCode\\\"))\\n if (!$util.isString(message.appVersionCode))\\n return \\\"appVersionCode: string expected\\\";\\n if (message.deviceModel != null && message.hasOwnProperty(\\\"deviceModel\\\"))\\n if (!$util.isString(message.deviceModel))\\n return \\\"deviceModel: string expected\\\";\\n if (message.deviceMake != null && message.hasOwnProperty(\\\"deviceMake\\\"))\\n if (!$util.isString(message.deviceMake))\\n return \\\"deviceMake: string expected\\\";\\n if (message.platformName != null && message.hasOwnProperty(\\\"platformName\\\"))\\n if (!$util.isString(message.platformName))\\n return \\\"platformName: string expected\\\";\\n if (message.platformVersion != null && message.hasOwnProperty(\\\"platformVersion\\\"))\\n if (!$util.isString(message.platformVersion))\\n return \\\"platformVersion: string expected\\\";\\n if (message.clientSource != null && message.hasOwnProperty(\\\"clientSource\\\"))\\n if (!$util.isString(message.clientSource))\\n return \\\"clientSource: string expected\\\";\\n if (message.chimeSdkVersion != null && message.hasOwnProperty(\\\"chimeSdkVersion\\\"))\\n if (!$util.isString(message.chimeSdkVersion))\\n return \\\"chimeSdkVersion: string expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkClientDetails message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkClientDetails\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkClientDetails} SdkClientDetails\\n */\\n SdkClientDetails.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkClientDetails)\\n return object;\\n var message = new $root.SdkClientDetails();\\n if (object.appVersionName != null)\\n message.appVersionName = String(object.appVersionName);\\n if (object.appVersionCode != null)\\n message.appVersionCode = String(object.appVersionCode);\\n if (object.deviceModel != null)\\n message.deviceModel = String(object.deviceModel);\\n if (object.deviceMake != null)\\n message.deviceMake = String(object.deviceMake);\\n if (object.platformName != null)\\n message.platformName = String(object.platformName);\\n if (object.platformVersion != null)\\n message.platformVersion = String(object.platformVersion);\\n if (object.clientSource != null)\\n message.clientSource = String(object.clientSource);\\n if (object.chimeSdkVersion != null)\\n message.chimeSdkVersion = String(object.chimeSdkVersion);\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkClientDetails message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkClientDetails\\n * @static\\n * @param {SdkClientDetails} message SdkClientDetails\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkClientDetails.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n object.appVersionName = \\\"\\\";\\n object.appVersionCode = \\\"\\\";\\n object.deviceModel = \\\"\\\";\\n object.deviceMake = \\\"\\\";\\n object.platformName = \\\"\\\";\\n object.platformVersion = \\\"\\\";\\n object.clientSource = \\\"\\\";\\n object.chimeSdkVersion = \\\"\\\";\\n }\\n if (message.appVersionName != null && message.hasOwnProperty(\\\"appVersionName\\\"))\\n object.appVersionName = message.appVersionName;\\n if (message.appVersionCode != null && message.hasOwnProperty(\\\"appVersionCode\\\"))\\n object.appVersionCode = message.appVersionCode;\\n if (message.deviceModel != null && message.hasOwnProperty(\\\"deviceModel\\\"))\\n object.deviceModel = message.deviceModel;\\n if (message.deviceMake != null && message.hasOwnProperty(\\\"deviceMake\\\"))\\n object.deviceMake = message.deviceMake;\\n if (message.platformName != null && message.hasOwnProperty(\\\"platformName\\\"))\\n object.platformName = message.platformName;\\n if (message.platformVersion != null && message.hasOwnProperty(\\\"platformVersion\\\"))\\n object.platformVersion = message.platformVersion;\\n if (message.clientSource != null && message.hasOwnProperty(\\\"clientSource\\\"))\\n object.clientSource = message.clientSource;\\n if (message.chimeSdkVersion != null && message.hasOwnProperty(\\\"chimeSdkVersion\\\"))\\n object.chimeSdkVersion = message.chimeSdkVersion;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkClientDetails to JSON.\\n * @function toJSON\\n * @memberof SdkClientDetails\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkClientDetails.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkClientDetails;\\n})();\\n\\n$root.SdkJoinFrame = (function() {\\n\\n /**\\n * Properties of a SdkJoinFrame.\\n * @exports ISdkJoinFrame\\n * @interface ISdkJoinFrame\\n * @property {number|null} [protocolVersion] SdkJoinFrame protocolVersion\\n * @property {number|null} [maxNumOfVideos] SdkJoinFrame maxNumOfVideos\\n * @property {number|null} [flags] SdkJoinFrame flags\\n * @property {ISdkClientDetails|null} [clientDetails] SdkJoinFrame clientDetails\\n * @property {number|Long|null} [audioSessionId] SdkJoinFrame audioSessionId\\n */\\n\\n /**\\n * Constructs a new SdkJoinFrame.\\n * @exports SdkJoinFrame\\n * @classdesc Represents a SdkJoinFrame.\\n * @implements ISdkJoinFrame\\n * @constructor\\n * @param {ISdkJoinFrame=} [properties] Properties to set\\n */\\n function SdkJoinFrame(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkJoinFrame protocolVersion.\\n * @member {number} protocolVersion\\n * @memberof SdkJoinFrame\\n * @instance\\n */\\n SdkJoinFrame.prototype.protocolVersion = 2;\\n\\n /**\\n * SdkJoinFrame maxNumOfVideos.\\n * @member {number} maxNumOfVideos\\n * @memberof SdkJoinFrame\\n * @instance\\n */\\n SdkJoinFrame.prototype.maxNumOfVideos = 8;\\n\\n /**\\n * SdkJoinFrame flags.\\n * @member {number} flags\\n * @memberof SdkJoinFrame\\n * @instance\\n */\\n SdkJoinFrame.prototype.flags = 0;\\n\\n /**\\n * SdkJoinFrame clientDetails.\\n * @member {ISdkClientDetails|null|undefined} clientDetails\\n * @memberof SdkJoinFrame\\n * @instance\\n */\\n SdkJoinFrame.prototype.clientDetails = null;\\n\\n /**\\n * SdkJoinFrame audioSessionId.\\n * @member {number|Long} audioSessionId\\n * @memberof SdkJoinFrame\\n * @instance\\n */\\n SdkJoinFrame.prototype.audioSessionId = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\\n\\n /**\\n * Creates a new SdkJoinFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {ISdkJoinFrame=} [properties] Properties to set\\n * @returns {SdkJoinFrame} SdkJoinFrame instance\\n */\\n SdkJoinFrame.create = function create(properties) {\\n return new SdkJoinFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkJoinFrame message. Does not implicitly {@link SdkJoinFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {ISdkJoinFrame} message SdkJoinFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkJoinFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.protocolVersion != null && message.hasOwnProperty(\\\"protocolVersion\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.protocolVersion);\\n if (message.maxNumOfVideos != null && message.hasOwnProperty(\\\"maxNumOfVideos\\\"))\\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.maxNumOfVideos);\\n if (message.flags != null && message.hasOwnProperty(\\\"flags\\\"))\\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.flags);\\n if (message.clientDetails != null && message.hasOwnProperty(\\\"clientDetails\\\"))\\n $root.SdkClientDetails.encode(message.clientDetails, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\\n if (message.audioSessionId != null && message.hasOwnProperty(\\\"audioSessionId\\\"))\\n writer.uint32(/* id 6, wireType 0 =*/48).uint64(message.audioSessionId);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkJoinFrame message, length delimited. Does not implicitly {@link SdkJoinFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {ISdkJoinFrame} message SdkJoinFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkJoinFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkJoinFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkJoinFrame} SdkJoinFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkJoinFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkJoinFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.protocolVersion = reader.uint32();\\n break;\\n case 2:\\n message.maxNumOfVideos = reader.uint32();\\n break;\\n case 3:\\n message.flags = reader.uint32();\\n break;\\n case 4:\\n message.clientDetails = $root.SdkClientDetails.decode(reader, reader.uint32());\\n break;\\n case 6:\\n message.audioSessionId = reader.uint64();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkJoinFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkJoinFrame} SdkJoinFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkJoinFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkJoinFrame message.\\n * @function verify\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkJoinFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.protocolVersion != null && message.hasOwnProperty(\\\"protocolVersion\\\"))\\n if (!$util.isInteger(message.protocolVersion))\\n return \\\"protocolVersion: integer expected\\\";\\n if (message.maxNumOfVideos != null && message.hasOwnProperty(\\\"maxNumOfVideos\\\"))\\n if (!$util.isInteger(message.maxNumOfVideos))\\n return \\\"maxNumOfVideos: integer expected\\\";\\n if (message.flags != null && message.hasOwnProperty(\\\"flags\\\"))\\n if (!$util.isInteger(message.flags))\\n return \\\"flags: integer expected\\\";\\n if (message.clientDetails != null && message.hasOwnProperty(\\\"clientDetails\\\")) {\\n var error = $root.SdkClientDetails.verify(message.clientDetails);\\n if (error)\\n return \\\"clientDetails.\\\" + error;\\n }\\n if (message.audioSessionId != null && message.hasOwnProperty(\\\"audioSessionId\\\"))\\n if (!$util.isInteger(message.audioSessionId) && !(message.audioSessionId && $util.isInteger(message.audioSessionId.low) && $util.isInteger(message.audioSessionId.high)))\\n return \\\"audioSessionId: integer|Long expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkJoinFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkJoinFrame} SdkJoinFrame\\n */\\n SdkJoinFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkJoinFrame)\\n return object;\\n var message = new $root.SdkJoinFrame();\\n if (object.protocolVersion != null)\\n message.protocolVersion = object.protocolVersion >>> 0;\\n if (object.maxNumOfVideos != null)\\n message.maxNumOfVideos = object.maxNumOfVideos >>> 0;\\n if (object.flags != null)\\n message.flags = object.flags >>> 0;\\n if (object.clientDetails != null) {\\n if (typeof object.clientDetails !== \\\"object\\\")\\n throw TypeError(\\\".SdkJoinFrame.clientDetails: object expected\\\");\\n message.clientDetails = $root.SdkClientDetails.fromObject(object.clientDetails);\\n }\\n if (object.audioSessionId != null)\\n if ($util.Long)\\n (message.audioSessionId = $util.Long.fromValue(object.audioSessionId)).unsigned = true;\\n else if (typeof object.audioSessionId === \\\"string\\\")\\n message.audioSessionId = parseInt(object.audioSessionId, 10);\\n else if (typeof object.audioSessionId === \\\"number\\\")\\n message.audioSessionId = object.audioSessionId;\\n else if (typeof object.audioSessionId === \\\"object\\\")\\n message.audioSessionId = new $util.LongBits(object.audioSessionId.low >>> 0, object.audioSessionId.high >>> 0).toNumber(true);\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkJoinFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkJoinFrame\\n * @static\\n * @param {SdkJoinFrame} message SdkJoinFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkJoinFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults) {\\n object.protocolVersion = 2;\\n object.maxNumOfVideos = 8;\\n object.flags = 0;\\n object.clientDetails = null;\\n if ($util.Long) {\\n var long = new $util.Long(0, 0, true);\\n object.audioSessionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\\n } else\\n object.audioSessionId = options.longs === String ? \\\"0\\\" : 0;\\n }\\n if (message.protocolVersion != null && message.hasOwnProperty(\\\"protocolVersion\\\"))\\n object.protocolVersion = message.protocolVersion;\\n if (message.maxNumOfVideos != null && message.hasOwnProperty(\\\"maxNumOfVideos\\\"))\\n object.maxNumOfVideos = message.maxNumOfVideos;\\n if (message.flags != null && message.hasOwnProperty(\\\"flags\\\"))\\n object.flags = message.flags;\\n if (message.clientDetails != null && message.hasOwnProperty(\\\"clientDetails\\\"))\\n object.clientDetails = $root.SdkClientDetails.toObject(message.clientDetails, options);\\n if (message.audioSessionId != null && message.hasOwnProperty(\\\"audioSessionId\\\"))\\n if (typeof message.audioSessionId === \\\"number\\\")\\n object.audioSessionId = options.longs === String ? String(message.audioSessionId) : message.audioSessionId;\\n else\\n object.audioSessionId = options.longs === String ? $util.Long.prototype.toString.call(message.audioSessionId) : options.longs === Number ? new $util.LongBits(message.audioSessionId.low >>> 0, message.audioSessionId.high >>> 0).toNumber(true) : message.audioSessionId;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkJoinFrame to JSON.\\n * @function toJSON\\n * @memberof SdkJoinFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkJoinFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkJoinFrame;\\n})();\\n\\n$root.SdkJoinAckFrame = (function() {\\n\\n /**\\n * Properties of a SdkJoinAckFrame.\\n * @exports ISdkJoinAckFrame\\n * @interface ISdkJoinAckFrame\\n * @property {ISdkTurnCredentials|null} [turnCredentials] SdkJoinAckFrame turnCredentials\\n */\\n\\n /**\\n * Constructs a new SdkJoinAckFrame.\\n * @exports SdkJoinAckFrame\\n * @classdesc Represents a SdkJoinAckFrame.\\n * @implements ISdkJoinAckFrame\\n * @constructor\\n * @param {ISdkJoinAckFrame=} [properties] Properties to set\\n */\\n function SdkJoinAckFrame(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkJoinAckFrame turnCredentials.\\n * @member {ISdkTurnCredentials|null|undefined} turnCredentials\\n * @memberof SdkJoinAckFrame\\n * @instance\\n */\\n SdkJoinAckFrame.prototype.turnCredentials = null;\\n\\n /**\\n * Creates a new SdkJoinAckFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {ISdkJoinAckFrame=} [properties] Properties to set\\n * @returns {SdkJoinAckFrame} SdkJoinAckFrame instance\\n */\\n SdkJoinAckFrame.create = function create(properties) {\\n return new SdkJoinAckFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkJoinAckFrame message. Does not implicitly {@link SdkJoinAckFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {ISdkJoinAckFrame} message SdkJoinAckFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkJoinAckFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.turnCredentials != null && message.hasOwnProperty(\\\"turnCredentials\\\"))\\n $root.SdkTurnCredentials.encode(message.turnCredentials, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkJoinAckFrame message, length delimited. Does not implicitly {@link SdkJoinAckFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {ISdkJoinAckFrame} message SdkJoinAckFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkJoinAckFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkJoinAckFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkJoinAckFrame} SdkJoinAckFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkJoinAckFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkJoinAckFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.turnCredentials = $root.SdkTurnCredentials.decode(reader, reader.uint32());\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkJoinAckFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkJoinAckFrame} SdkJoinAckFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkJoinAckFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkJoinAckFrame message.\\n * @function verify\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkJoinAckFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.turnCredentials != null && message.hasOwnProperty(\\\"turnCredentials\\\")) {\\n var error = $root.SdkTurnCredentials.verify(message.turnCredentials);\\n if (error)\\n return \\\"turnCredentials.\\\" + error;\\n }\\n return null;\\n };\\n\\n /**\\n * Creates a SdkJoinAckFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkJoinAckFrame} SdkJoinAckFrame\\n */\\n SdkJoinAckFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkJoinAckFrame)\\n return object;\\n var message = new $root.SdkJoinAckFrame();\\n if (object.turnCredentials != null) {\\n if (typeof object.turnCredentials !== \\\"object\\\")\\n throw TypeError(\\\".SdkJoinAckFrame.turnCredentials: object expected\\\");\\n message.turnCredentials = $root.SdkTurnCredentials.fromObject(object.turnCredentials);\\n }\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkJoinAckFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkJoinAckFrame\\n * @static\\n * @param {SdkJoinAckFrame} message SdkJoinAckFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkJoinAckFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.defaults)\\n object.turnCredentials = null;\\n if (message.turnCredentials != null && message.hasOwnProperty(\\\"turnCredentials\\\"))\\n object.turnCredentials = $root.SdkTurnCredentials.toObject(message.turnCredentials, options);\\n return object;\\n };\\n\\n /**\\n * Converts this SdkJoinAckFrame to JSON.\\n * @function toJSON\\n * @memberof SdkJoinAckFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkJoinAckFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkJoinAckFrame;\\n})();\\n\\n$root.SdkLeaveFrame = (function() {\\n\\n /**\\n * Properties of a SdkLeaveFrame.\\n * @exports ISdkLeaveFrame\\n * @interface ISdkLeaveFrame\\n */\\n\\n /**\\n * Constructs a new SdkLeaveFrame.\\n * @exports SdkLeaveFrame\\n * @classdesc Represents a SdkLeaveFrame.\\n * @implements ISdkLeaveFrame\\n * @constructor\\n * @param {ISdkLeaveFrame=} [properties] Properties to set\\n */\\n function SdkLeaveFrame(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * Creates a new SdkLeaveFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {ISdkLeaveFrame=} [properties] Properties to set\\n * @returns {SdkLeaveFrame} SdkLeaveFrame instance\\n */\\n SdkLeaveFrame.create = function create(properties) {\\n return new SdkLeaveFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkLeaveFrame message. Does not implicitly {@link SdkLeaveFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {ISdkLeaveFrame} message SdkLeaveFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkLeaveFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkLeaveFrame message, length delimited. Does not implicitly {@link SdkLeaveFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {ISdkLeaveFrame} message SdkLeaveFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkLeaveFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkLeaveFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkLeaveFrame} SdkLeaveFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkLeaveFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkLeaveFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkLeaveFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkLeaveFrame} SdkLeaveFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkLeaveFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkLeaveFrame message.\\n * @function verify\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkLeaveFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkLeaveFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkLeaveFrame} SdkLeaveFrame\\n */\\n SdkLeaveFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkLeaveFrame)\\n return object;\\n return new $root.SdkLeaveFrame();\\n };\\n\\n /**\\n * Creates a plain object from a SdkLeaveFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkLeaveFrame\\n * @static\\n * @param {SdkLeaveFrame} message SdkLeaveFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkLeaveFrame.toObject = function toObject() {\\n return {};\\n };\\n\\n /**\\n * Converts this SdkLeaveFrame to JSON.\\n * @function toJSON\\n * @memberof SdkLeaveFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkLeaveFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkLeaveFrame;\\n})();\\n\\n$root.SdkLeaveAckFrame = (function() {\\n\\n /**\\n * Properties of a SdkLeaveAckFrame.\\n * @exports ISdkLeaveAckFrame\\n * @interface ISdkLeaveAckFrame\\n */\\n\\n /**\\n * Constructs a new SdkLeaveAckFrame.\\n * @exports SdkLeaveAckFrame\\n * @classdesc Represents a SdkLeaveAckFrame.\\n * @implements ISdkLeaveAckFrame\\n * @constructor\\n * @param {ISdkLeaveAckFrame=} [properties] Properties to set\\n */\\n function SdkLeaveAckFrame(properties) {\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * Creates a new SdkLeaveAckFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {ISdkLeaveAckFrame=} [properties] Properties to set\\n * @returns {SdkLeaveAckFrame} SdkLeaveAckFrame instance\\n */\\n SdkLeaveAckFrame.create = function create(properties) {\\n return new SdkLeaveAckFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkLeaveAckFrame message. Does not implicitly {@link SdkLeaveAckFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {ISdkLeaveAckFrame} message SdkLeaveAckFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkLeaveAckFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkLeaveAckFrame message, length delimited. Does not implicitly {@link SdkLeaveAckFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {ISdkLeaveAckFrame} message SdkLeaveAckFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkLeaveAckFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkLeaveAckFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkLeaveAckFrame} SdkLeaveAckFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkLeaveAckFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkLeaveAckFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkLeaveAckFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkLeaveAckFrame} SdkLeaveAckFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkLeaveAckFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkLeaveAckFrame message.\\n * @function verify\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkLeaveAckFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkLeaveAckFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkLeaveAckFrame} SdkLeaveAckFrame\\n */\\n SdkLeaveAckFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkLeaveAckFrame)\\n return object;\\n return new $root.SdkLeaveAckFrame();\\n };\\n\\n /**\\n * Creates a plain object from a SdkLeaveAckFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkLeaveAckFrame\\n * @static\\n * @param {SdkLeaveAckFrame} message SdkLeaveAckFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkLeaveAckFrame.toObject = function toObject() {\\n return {};\\n };\\n\\n /**\\n * Converts this SdkLeaveAckFrame to JSON.\\n * @function toJSON\\n * @memberof SdkLeaveAckFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkLeaveAckFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkLeaveAckFrame;\\n})();\\n\\n/**\\n * SdkStreamServiceType enum.\\n * @exports SdkStreamServiceType\\n * @enum {string}\\n * @property {number} RX=1 RX value\\n * @property {number} TX=2 TX value\\n * @property {number} DUPLEX=3 DUPLEX value\\n */\\n$root.SdkStreamServiceType = (function() {\\n var valuesById = {}, values = Object.create(valuesById);\\n values[valuesById[1] = \\\"RX\\\"] = 1;\\n values[valuesById[2] = \\\"TX\\\"] = 2;\\n values[valuesById[3] = \\\"DUPLEX\\\"] = 3;\\n return values;\\n})();\\n\\n/**\\n * SdkStreamMediaType enum.\\n * @exports SdkStreamMediaType\\n * @enum {string}\\n * @property {number} AUDIO=1 AUDIO value\\n * @property {number} VIDEO=2 VIDEO value\\n */\\n$root.SdkStreamMediaType = (function() {\\n var valuesById = {}, values = Object.create(valuesById);\\n values[valuesById[1] = \\\"AUDIO\\\"] = 1;\\n values[valuesById[2] = \\\"VIDEO\\\"] = 2;\\n return values;\\n})();\\n\\n$root.SdkSubscribeFrame = (function() {\\n\\n /**\\n * Properties of a SdkSubscribeFrame.\\n * @exports ISdkSubscribeFrame\\n * @interface ISdkSubscribeFrame\\n * @property {SdkStreamServiceType|null} [duplex] SdkSubscribeFrame duplex\\n * @property {Array.|null} [sendStreams] SdkSubscribeFrame sendStreams\\n * @property {Array.|null} [receiveStreamIds] SdkSubscribeFrame receiveStreamIds\\n * @property {string|null} [sdpOffer] SdkSubscribeFrame sdpOffer\\n * @property {string|null} [audioHost] SdkSubscribeFrame audioHost\\n * @property {boolean|null} [audioCheckin] SdkSubscribeFrame audioCheckin\\n * @property {boolean|null} [audioMuted] SdkSubscribeFrame audioMuted\\n */\\n\\n /**\\n * Constructs a new SdkSubscribeFrame.\\n * @exports SdkSubscribeFrame\\n * @classdesc Represents a SdkSubscribeFrame.\\n * @implements ISdkSubscribeFrame\\n * @constructor\\n * @param {ISdkSubscribeFrame=} [properties] Properties to set\\n */\\n function SdkSubscribeFrame(properties) {\\n this.sendStreams = [];\\n this.receiveStreamIds = [];\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkSubscribeFrame duplex.\\n * @member {SdkStreamServiceType} duplex\\n * @memberof SdkSubscribeFrame\\n * @instance\\n */\\n SdkSubscribeFrame.prototype.duplex = 1;\\n\\n /**\\n * SdkSubscribeFrame sendStreams.\\n * @member {Array.} sendStreams\\n * @memberof SdkSubscribeFrame\\n * @instance\\n */\\n SdkSubscribeFrame.prototype.sendStreams = $util.emptyArray;\\n\\n /**\\n * SdkSubscribeFrame receiveStreamIds.\\n * @member {Array.} receiveStreamIds\\n * @memberof SdkSubscribeFrame\\n * @instance\\n */\\n SdkSubscribeFrame.prototype.receiveStreamIds = $util.emptyArray;\\n\\n /**\\n * SdkSubscribeFrame sdpOffer.\\n * @member {string} sdpOffer\\n * @memberof SdkSubscribeFrame\\n * @instance\\n */\\n SdkSubscribeFrame.prototype.sdpOffer = \\\"\\\";\\n\\n /**\\n * SdkSubscribeFrame audioHost.\\n * @member {string} audioHost\\n * @memberof SdkSubscribeFrame\\n * @instance\\n */\\n SdkSubscribeFrame.prototype.audioHost = \\\"\\\";\\n\\n /**\\n * SdkSubscribeFrame audioCheckin.\\n * @member {boolean} audioCheckin\\n * @memberof SdkSubscribeFrame\\n * @instance\\n */\\n SdkSubscribeFrame.prototype.audioCheckin = false;\\n\\n /**\\n * SdkSubscribeFrame audioMuted.\\n * @member {boolean} audioMuted\\n * @memberof SdkSubscribeFrame\\n * @instance\\n */\\n SdkSubscribeFrame.prototype.audioMuted = false;\\n\\n /**\\n * Creates a new SdkSubscribeFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {ISdkSubscribeFrame=} [properties] Properties to set\\n * @returns {SdkSubscribeFrame} SdkSubscribeFrame instance\\n */\\n SdkSubscribeFrame.create = function create(properties) {\\n return new SdkSubscribeFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkSubscribeFrame message. Does not implicitly {@link SdkSubscribeFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {ISdkSubscribeFrame} message SdkSubscribeFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkSubscribeFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.duplex != null && message.hasOwnProperty(\\\"duplex\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.duplex);\\n if (message.sendStreams != null && message.sendStreams.length)\\n for (var i = 0; i < message.sendStreams.length; ++i)\\n $root.SdkStreamDescriptor.encode(message.sendStreams[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\\n if (message.receiveStreamIds != null && message.receiveStreamIds.length)\\n for (var i = 0; i < message.receiveStreamIds.length; ++i)\\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.receiveStreamIds[i]);\\n if (message.sdpOffer != null && message.hasOwnProperty(\\\"sdpOffer\\\"))\\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.sdpOffer);\\n if (message.audioHost != null && message.hasOwnProperty(\\\"audioHost\\\"))\\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.audioHost);\\n if (message.audioCheckin != null && message.hasOwnProperty(\\\"audioCheckin\\\"))\\n writer.uint32(/* id 6, wireType 0 =*/48).bool(message.audioCheckin);\\n if (message.audioMuted != null && message.hasOwnProperty(\\\"audioMuted\\\"))\\n writer.uint32(/* id 7, wireType 0 =*/56).bool(message.audioMuted);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkSubscribeFrame message, length delimited. Does not implicitly {@link SdkSubscribeFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {ISdkSubscribeFrame} message SdkSubscribeFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkSubscribeFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkSubscribeFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkSubscribeFrame} SdkSubscribeFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkSubscribeFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkSubscribeFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.duplex = reader.int32();\\n break;\\n case 2:\\n if (!(message.sendStreams && message.sendStreams.length))\\n message.sendStreams = [];\\n message.sendStreams.push($root.SdkStreamDescriptor.decode(reader, reader.uint32()));\\n break;\\n case 3:\\n if (!(message.receiveStreamIds && message.receiveStreamIds.length))\\n message.receiveStreamIds = [];\\n if ((tag & 7) === 2) {\\n var end2 = reader.uint32() + reader.pos;\\n while (reader.pos < end2)\\n message.receiveStreamIds.push(reader.uint32());\\n } else\\n message.receiveStreamIds.push(reader.uint32());\\n break;\\n case 4:\\n message.sdpOffer = reader.string();\\n break;\\n case 5:\\n message.audioHost = reader.string();\\n break;\\n case 6:\\n message.audioCheckin = reader.bool();\\n break;\\n case 7:\\n message.audioMuted = reader.bool();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkSubscribeFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkSubscribeFrame} SdkSubscribeFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkSubscribeFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkSubscribeFrame message.\\n * @function verify\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkSubscribeFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.duplex != null && message.hasOwnProperty(\\\"duplex\\\"))\\n switch (message.duplex) {\\n default:\\n return \\\"duplex: enum value expected\\\";\\n case 1:\\n case 2:\\n case 3:\\n break;\\n }\\n if (message.sendStreams != null && message.hasOwnProperty(\\\"sendStreams\\\")) {\\n if (!Array.isArray(message.sendStreams))\\n return \\\"sendStreams: array expected\\\";\\n for (var i = 0; i < message.sendStreams.length; ++i) {\\n var error = $root.SdkStreamDescriptor.verify(message.sendStreams[i]);\\n if (error)\\n return \\\"sendStreams.\\\" + error;\\n }\\n }\\n if (message.receiveStreamIds != null && message.hasOwnProperty(\\\"receiveStreamIds\\\")) {\\n if (!Array.isArray(message.receiveStreamIds))\\n return \\\"receiveStreamIds: array expected\\\";\\n for (var i = 0; i < message.receiveStreamIds.length; ++i)\\n if (!$util.isInteger(message.receiveStreamIds[i]))\\n return \\\"receiveStreamIds: integer[] expected\\\";\\n }\\n if (message.sdpOffer != null && message.hasOwnProperty(\\\"sdpOffer\\\"))\\n if (!$util.isString(message.sdpOffer))\\n return \\\"sdpOffer: string expected\\\";\\n if (message.audioHost != null && message.hasOwnProperty(\\\"audioHost\\\"))\\n if (!$util.isString(message.audioHost))\\n return \\\"audioHost: string expected\\\";\\n if (message.audioCheckin != null && message.hasOwnProperty(\\\"audioCheckin\\\"))\\n if (typeof message.audioCheckin !== \\\"boolean\\\")\\n return \\\"audioCheckin: boolean expected\\\";\\n if (message.audioMuted != null && message.hasOwnProperty(\\\"audioMuted\\\"))\\n if (typeof message.audioMuted !== \\\"boolean\\\")\\n return \\\"audioMuted: boolean expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkSubscribeFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkSubscribeFrame} SdkSubscribeFrame\\n */\\n SdkSubscribeFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkSubscribeFrame)\\n return object;\\n var message = new $root.SdkSubscribeFrame();\\n switch (object.duplex) {\\n case \\\"RX\\\":\\n case 1:\\n message.duplex = 1;\\n break;\\n case \\\"TX\\\":\\n case 2:\\n message.duplex = 2;\\n break;\\n case \\\"DUPLEX\\\":\\n case 3:\\n message.duplex = 3;\\n break;\\n }\\n if (object.sendStreams) {\\n if (!Array.isArray(object.sendStreams))\\n throw TypeError(\\\".SdkSubscribeFrame.sendStreams: array expected\\\");\\n message.sendStreams = [];\\n for (var i = 0; i < object.sendStreams.length; ++i) {\\n if (typeof object.sendStreams[i] !== \\\"object\\\")\\n throw TypeError(\\\".SdkSubscribeFrame.sendStreams: object expected\\\");\\n message.sendStreams[i] = $root.SdkStreamDescriptor.fromObject(object.sendStreams[i]);\\n }\\n }\\n if (object.receiveStreamIds) {\\n if (!Array.isArray(object.receiveStreamIds))\\n throw TypeError(\\\".SdkSubscribeFrame.receiveStreamIds: array expected\\\");\\n message.receiveStreamIds = [];\\n for (var i = 0; i < object.receiveStreamIds.length; ++i)\\n message.receiveStreamIds[i] = object.receiveStreamIds[i] >>> 0;\\n }\\n if (object.sdpOffer != null)\\n message.sdpOffer = String(object.sdpOffer);\\n if (object.audioHost != null)\\n message.audioHost = String(object.audioHost);\\n if (object.audioCheckin != null)\\n message.audioCheckin = Boolean(object.audioCheckin);\\n if (object.audioMuted != null)\\n message.audioMuted = Boolean(object.audioMuted);\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkSubscribeFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkSubscribeFrame\\n * @static\\n * @param {SdkSubscribeFrame} message SdkSubscribeFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkSubscribeFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.arrays || options.defaults) {\\n object.sendStreams = [];\\n object.receiveStreamIds = [];\\n }\\n if (options.defaults) {\\n object.duplex = options.enums === String ? \\\"RX\\\" : 1;\\n object.sdpOffer = \\\"\\\";\\n object.audioHost = \\\"\\\";\\n object.audioCheckin = false;\\n object.audioMuted = false;\\n }\\n if (message.duplex != null && message.hasOwnProperty(\\\"duplex\\\"))\\n object.duplex = options.enums === String ? $root.SdkStreamServiceType[message.duplex] : message.duplex;\\n if (message.sendStreams && message.sendStreams.length) {\\n object.sendStreams = [];\\n for (var j = 0; j < message.sendStreams.length; ++j)\\n object.sendStreams[j] = $root.SdkStreamDescriptor.toObject(message.sendStreams[j], options);\\n }\\n if (message.receiveStreamIds && message.receiveStreamIds.length) {\\n object.receiveStreamIds = [];\\n for (var j = 0; j < message.receiveStreamIds.length; ++j)\\n object.receiveStreamIds[j] = message.receiveStreamIds[j];\\n }\\n if (message.sdpOffer != null && message.hasOwnProperty(\\\"sdpOffer\\\"))\\n object.sdpOffer = message.sdpOffer;\\n if (message.audioHost != null && message.hasOwnProperty(\\\"audioHost\\\"))\\n object.audioHost = message.audioHost;\\n if (message.audioCheckin != null && message.hasOwnProperty(\\\"audioCheckin\\\"))\\n object.audioCheckin = message.audioCheckin;\\n if (message.audioMuted != null && message.hasOwnProperty(\\\"audioMuted\\\"))\\n object.audioMuted = message.audioMuted;\\n return object;\\n };\\n\\n /**\\n * Converts this SdkSubscribeFrame to JSON.\\n * @function toJSON\\n * @memberof SdkSubscribeFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkSubscribeFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkSubscribeFrame;\\n})();\\n\\n$root.SdkSubscribeAckFrame = (function() {\\n\\n /**\\n * Properties of a SdkSubscribeAckFrame.\\n * @exports ISdkSubscribeAckFrame\\n * @interface ISdkSubscribeAckFrame\\n * @property {SdkStreamServiceType|null} [duplex] SdkSubscribeAckFrame duplex\\n * @property {Array.|null} [allocations] SdkSubscribeAckFrame allocations\\n * @property {string|null} [sdpAnswer] SdkSubscribeAckFrame sdpAnswer\\n * @property {Array.|null} [tracks] SdkSubscribeAckFrame tracks\\n */\\n\\n /**\\n * Constructs a new SdkSubscribeAckFrame.\\n * @exports SdkSubscribeAckFrame\\n * @classdesc Represents a SdkSubscribeAckFrame.\\n * @implements ISdkSubscribeAckFrame\\n * @constructor\\n * @param {ISdkSubscribeAckFrame=} [properties] Properties to set\\n */\\n function SdkSubscribeAckFrame(properties) {\\n this.allocations = [];\\n this.tracks = [];\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkSubscribeAckFrame duplex.\\n * @member {SdkStreamServiceType} duplex\\n * @memberof SdkSubscribeAckFrame\\n * @instance\\n */\\n SdkSubscribeAckFrame.prototype.duplex = 1;\\n\\n /**\\n * SdkSubscribeAckFrame allocations.\\n * @member {Array.} allocations\\n * @memberof SdkSubscribeAckFrame\\n * @instance\\n */\\n SdkSubscribeAckFrame.prototype.allocations = $util.emptyArray;\\n\\n /**\\n * SdkSubscribeAckFrame sdpAnswer.\\n * @member {string} sdpAnswer\\n * @memberof SdkSubscribeAckFrame\\n * @instance\\n */\\n SdkSubscribeAckFrame.prototype.sdpAnswer = \\\"\\\";\\n\\n /**\\n * SdkSubscribeAckFrame tracks.\\n * @member {Array.} tracks\\n * @memberof SdkSubscribeAckFrame\\n * @instance\\n */\\n SdkSubscribeAckFrame.prototype.tracks = $util.emptyArray;\\n\\n /**\\n * Creates a new SdkSubscribeAckFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {ISdkSubscribeAckFrame=} [properties] Properties to set\\n * @returns {SdkSubscribeAckFrame} SdkSubscribeAckFrame instance\\n */\\n SdkSubscribeAckFrame.create = function create(properties) {\\n return new SdkSubscribeAckFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkSubscribeAckFrame message. Does not implicitly {@link SdkSubscribeAckFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {ISdkSubscribeAckFrame} message SdkSubscribeAckFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkSubscribeAckFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.duplex != null && message.hasOwnProperty(\\\"duplex\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.duplex);\\n if (message.allocations != null && message.allocations.length)\\n for (var i = 0; i < message.allocations.length; ++i)\\n $root.SdkStreamAllocation.encode(message.allocations[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\\n if (message.sdpAnswer != null && message.hasOwnProperty(\\\"sdpAnswer\\\"))\\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.sdpAnswer);\\n if (message.tracks != null && message.tracks.length)\\n for (var i = 0; i < message.tracks.length; ++i)\\n $root.SdkTrackMapping.encode(message.tracks[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkSubscribeAckFrame message, length delimited. Does not implicitly {@link SdkSubscribeAckFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {ISdkSubscribeAckFrame} message SdkSubscribeAckFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkSubscribeAckFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkSubscribeAckFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkSubscribeAckFrame} SdkSubscribeAckFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkSubscribeAckFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkSubscribeAckFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.duplex = reader.int32();\\n break;\\n case 2:\\n if (!(message.allocations && message.allocations.length))\\n message.allocations = [];\\n message.allocations.push($root.SdkStreamAllocation.decode(reader, reader.uint32()));\\n break;\\n case 3:\\n message.sdpAnswer = reader.string();\\n break;\\n case 4:\\n if (!(message.tracks && message.tracks.length))\\n message.tracks = [];\\n message.tracks.push($root.SdkTrackMapping.decode(reader, reader.uint32()));\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkSubscribeAckFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkSubscribeAckFrame} SdkSubscribeAckFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkSubscribeAckFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkSubscribeAckFrame message.\\n * @function verify\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkSubscribeAckFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.duplex != null && message.hasOwnProperty(\\\"duplex\\\"))\\n switch (message.duplex) {\\n default:\\n return \\\"duplex: enum value expected\\\";\\n case 1:\\n case 2:\\n case 3:\\n break;\\n }\\n if (message.allocations != null && message.hasOwnProperty(\\\"allocations\\\")) {\\n if (!Array.isArray(message.allocations))\\n return \\\"allocations: array expected\\\";\\n for (var i = 0; i < message.allocations.length; ++i) {\\n var error = $root.SdkStreamAllocation.verify(message.allocations[i]);\\n if (error)\\n return \\\"allocations.\\\" + error;\\n }\\n }\\n if (message.sdpAnswer != null && message.hasOwnProperty(\\\"sdpAnswer\\\"))\\n if (!$util.isString(message.sdpAnswer))\\n return \\\"sdpAnswer: string expected\\\";\\n if (message.tracks != null && message.hasOwnProperty(\\\"tracks\\\")) {\\n if (!Array.isArray(message.tracks))\\n return \\\"tracks: array expected\\\";\\n for (var i = 0; i < message.tracks.length; ++i) {\\n var error = $root.SdkTrackMapping.verify(message.tracks[i]);\\n if (error)\\n return \\\"tracks.\\\" + error;\\n }\\n }\\n return null;\\n };\\n\\n /**\\n * Creates a SdkSubscribeAckFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkSubscribeAckFrame} SdkSubscribeAckFrame\\n */\\n SdkSubscribeAckFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkSubscribeAckFrame)\\n return object;\\n var message = new $root.SdkSubscribeAckFrame();\\n switch (object.duplex) {\\n case \\\"RX\\\":\\n case 1:\\n message.duplex = 1;\\n break;\\n case \\\"TX\\\":\\n case 2:\\n message.duplex = 2;\\n break;\\n case \\\"DUPLEX\\\":\\n case 3:\\n message.duplex = 3;\\n break;\\n }\\n if (object.allocations) {\\n if (!Array.isArray(object.allocations))\\n throw TypeError(\\\".SdkSubscribeAckFrame.allocations: array expected\\\");\\n message.allocations = [];\\n for (var i = 0; i < object.allocations.length; ++i) {\\n if (typeof object.allocations[i] !== \\\"object\\\")\\n throw TypeError(\\\".SdkSubscribeAckFrame.allocations: object expected\\\");\\n message.allocations[i] = $root.SdkStreamAllocation.fromObject(object.allocations[i]);\\n }\\n }\\n if (object.sdpAnswer != null)\\n message.sdpAnswer = String(object.sdpAnswer);\\n if (object.tracks) {\\n if (!Array.isArray(object.tracks))\\n throw TypeError(\\\".SdkSubscribeAckFrame.tracks: array expected\\\");\\n message.tracks = [];\\n for (var i = 0; i < object.tracks.length; ++i) {\\n if (typeof object.tracks[i] !== \\\"object\\\")\\n throw TypeError(\\\".SdkSubscribeAckFrame.tracks: object expected\\\");\\n message.tracks[i] = $root.SdkTrackMapping.fromObject(object.tracks[i]);\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkSubscribeAckFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkSubscribeAckFrame\\n * @static\\n * @param {SdkSubscribeAckFrame} message SdkSubscribeAckFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.} Plain object\\n */\\n SdkSubscribeAckFrame.toObject = function toObject(message, options) {\\n if (!options)\\n options = {};\\n var object = {};\\n if (options.arrays || options.defaults) {\\n object.allocations = [];\\n object.tracks = [];\\n }\\n if (options.defaults) {\\n object.duplex = options.enums === String ? \\\"RX\\\" : 1;\\n object.sdpAnswer = \\\"\\\";\\n }\\n if (message.duplex != null && message.hasOwnProperty(\\\"duplex\\\"))\\n object.duplex = options.enums === String ? $root.SdkStreamServiceType[message.duplex] : message.duplex;\\n if (message.allocations && message.allocations.length) {\\n object.allocations = [];\\n for (var j = 0; j < message.allocations.length; ++j)\\n object.allocations[j] = $root.SdkStreamAllocation.toObject(message.allocations[j], options);\\n }\\n if (message.sdpAnswer != null && message.hasOwnProperty(\\\"sdpAnswer\\\"))\\n object.sdpAnswer = message.sdpAnswer;\\n if (message.tracks && message.tracks.length) {\\n object.tracks = [];\\n for (var j = 0; j < message.tracks.length; ++j)\\n object.tracks[j] = $root.SdkTrackMapping.toObject(message.tracks[j], options);\\n }\\n return object;\\n };\\n\\n /**\\n * Converts this SdkSubscribeAckFrame to JSON.\\n * @function toJSON\\n * @memberof SdkSubscribeAckFrame\\n * @instance\\n * @returns {Object.} JSON object\\n */\\n SdkSubscribeAckFrame.prototype.toJSON = function toJSON() {\\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\\n };\\n\\n return SdkSubscribeAckFrame;\\n})();\\n\\n$root.SdkIndexFrame = (function() {\\n\\n /**\\n * Properties of a SdkIndexFrame.\\n * @exports ISdkIndexFrame\\n * @interface ISdkIndexFrame\\n * @property {boolean|null} [atCapacity] SdkIndexFrame atCapacity\\n * @property {Array.|null} [sources] SdkIndexFrame sources\\n * @property {Array.|null} [pausedAtSourceIds] SdkIndexFrame pausedAtSourceIds\\n * @property {number|null} [numParticipants] SdkIndexFrame numParticipants\\n */\\n\\n /**\\n * Constructs a new SdkIndexFrame.\\n * @exports SdkIndexFrame\\n * @classdesc Represents a SdkIndexFrame.\\n * @implements ISdkIndexFrame\\n * @constructor\\n * @param {ISdkIndexFrame=} [properties] Properties to set\\n */\\n function SdkIndexFrame(properties) {\\n this.sources = [];\\n this.pausedAtSourceIds = [];\\n if (properties)\\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\\n if (properties[keys[i]] != null)\\n this[keys[i]] = properties[keys[i]];\\n }\\n\\n /**\\n * SdkIndexFrame atCapacity.\\n * @member {boolean} atCapacity\\n * @memberof SdkIndexFrame\\n * @instance\\n */\\n SdkIndexFrame.prototype.atCapacity = false;\\n\\n /**\\n * SdkIndexFrame sources.\\n * @member {Array.} sources\\n * @memberof SdkIndexFrame\\n * @instance\\n */\\n SdkIndexFrame.prototype.sources = $util.emptyArray;\\n\\n /**\\n * SdkIndexFrame pausedAtSourceIds.\\n * @member {Array.} pausedAtSourceIds\\n * @memberof SdkIndexFrame\\n * @instance\\n */\\n SdkIndexFrame.prototype.pausedAtSourceIds = $util.emptyArray;\\n\\n /**\\n * SdkIndexFrame numParticipants.\\n * @member {number} numParticipants\\n * @memberof SdkIndexFrame\\n * @instance\\n */\\n SdkIndexFrame.prototype.numParticipants = 0;\\n\\n /**\\n * Creates a new SdkIndexFrame instance using the specified properties.\\n * @function create\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {ISdkIndexFrame=} [properties] Properties to set\\n * @returns {SdkIndexFrame} SdkIndexFrame instance\\n */\\n SdkIndexFrame.create = function create(properties) {\\n return new SdkIndexFrame(properties);\\n };\\n\\n /**\\n * Encodes the specified SdkIndexFrame message. Does not implicitly {@link SdkIndexFrame.verify|verify} messages.\\n * @function encode\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {ISdkIndexFrame} message SdkIndexFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkIndexFrame.encode = function encode(message, writer) {\\n if (!writer)\\n writer = $Writer.create();\\n if (message.atCapacity != null && message.hasOwnProperty(\\\"atCapacity\\\"))\\n writer.uint32(/* id 1, wireType 0 =*/8).bool(message.atCapacity);\\n if (message.sources != null && message.sources.length)\\n for (var i = 0; i < message.sources.length; ++i)\\n $root.SdkStreamDescriptor.encode(message.sources[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\\n if (message.pausedAtSourceIds != null && message.pausedAtSourceIds.length)\\n for (var i = 0; i < message.pausedAtSourceIds.length; ++i)\\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.pausedAtSourceIds[i]);\\n if (message.numParticipants != null && message.hasOwnProperty(\\\"numParticipants\\\"))\\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.numParticipants);\\n return writer;\\n };\\n\\n /**\\n * Encodes the specified SdkIndexFrame message, length delimited. Does not implicitly {@link SdkIndexFrame.verify|verify} messages.\\n * @function encodeDelimited\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {ISdkIndexFrame} message SdkIndexFrame message or plain object to encode\\n * @param {$protobuf.Writer} [writer] Writer to encode to\\n * @returns {$protobuf.Writer} Writer\\n */\\n SdkIndexFrame.encodeDelimited = function encodeDelimited(message, writer) {\\n return this.encode(message, writer).ldelim();\\n };\\n\\n /**\\n * Decodes a SdkIndexFrame message from the specified reader or buffer.\\n * @function decode\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @param {number} [length] Message length if known beforehand\\n * @returns {SdkIndexFrame} SdkIndexFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkIndexFrame.decode = function decode(reader, length) {\\n if (!(reader instanceof $Reader))\\n reader = $Reader.create(reader);\\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkIndexFrame();\\n while (reader.pos < end) {\\n var tag = reader.uint32();\\n switch (tag >>> 3) {\\n case 1:\\n message.atCapacity = reader.bool();\\n break;\\n case 2:\\n if (!(message.sources && message.sources.length))\\n message.sources = [];\\n message.sources.push($root.SdkStreamDescriptor.decode(reader, reader.uint32()));\\n break;\\n case 3:\\n if (!(message.pausedAtSourceIds && message.pausedAtSourceIds.length))\\n message.pausedAtSourceIds = [];\\n if ((tag & 7) === 2) {\\n var end2 = reader.uint32() + reader.pos;\\n while (reader.pos < end2)\\n message.pausedAtSourceIds.push(reader.uint32());\\n } else\\n message.pausedAtSourceIds.push(reader.uint32());\\n break;\\n case 4:\\n message.numParticipants = reader.uint32();\\n break;\\n default:\\n reader.skipType(tag & 7);\\n break;\\n }\\n }\\n return message;\\n };\\n\\n /**\\n * Decodes a SdkIndexFrame message from the specified reader or buffer, length delimited.\\n * @function decodeDelimited\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\\n * @returns {SdkIndexFrame} SdkIndexFrame\\n * @throws {Error} If the payload is not a reader or valid buffer\\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\\n */\\n SdkIndexFrame.decodeDelimited = function decodeDelimited(reader) {\\n if (!(reader instanceof $Reader))\\n reader = new $Reader(reader);\\n return this.decode(reader, reader.uint32());\\n };\\n\\n /**\\n * Verifies a SdkIndexFrame message.\\n * @function verify\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {Object.} message Plain object to verify\\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\\n */\\n SdkIndexFrame.verify = function verify(message) {\\n if (typeof message !== \\\"object\\\" || message === null)\\n return \\\"object expected\\\";\\n if (message.atCapacity != null && message.hasOwnProperty(\\\"atCapacity\\\"))\\n if (typeof message.atCapacity !== \\\"boolean\\\")\\n return \\\"atCapacity: boolean expected\\\";\\n if (message.sources != null && message.hasOwnProperty(\\\"sources\\\")) {\\n if (!Array.isArray(message.sources))\\n return \\\"sources: array expected\\\";\\n for (var i = 0; i < message.sources.length; ++i) {\\n var error = $root.SdkStreamDescriptor.verify(message.sources[i]);\\n if (error)\\n return \\\"sources.\\\" + error;\\n }\\n }\\n if (message.pausedAtSourceIds != null && message.hasOwnProperty(\\\"pausedAtSourceIds\\\")) {\\n if (!Array.isArray(message.pausedAtSourceIds))\\n return \\\"pausedAtSourceIds: array expected\\\";\\n for (var i = 0; i < message.pausedAtSourceIds.length; ++i)\\n if (!$util.isInteger(message.pausedAtSourceIds[i]))\\n return \\\"pausedAtSourceIds: integer[] expected\\\";\\n }\\n if (message.numParticipants != null && message.hasOwnProperty(\\\"numParticipants\\\"))\\n if (!$util.isInteger(message.numParticipants))\\n return \\\"numParticipants: integer expected\\\";\\n return null;\\n };\\n\\n /**\\n * Creates a SdkIndexFrame message from a plain object. Also converts values to their respective internal types.\\n * @function fromObject\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {Object.} object Plain object\\n * @returns {SdkIndexFrame} SdkIndexFrame\\n */\\n SdkIndexFrame.fromObject = function fromObject(object) {\\n if (object instanceof $root.SdkIndexFrame)\\n return object;\\n var message = new $root.SdkIndexFrame();\\n if (object.atCapacity != null)\\n message.atCapacity = Boolean(object.atCapacity);\\n if (object.sources) {\\n if (!Array.isArray(object.sources))\\n throw TypeError(\\\".SdkIndexFrame.sources: array expected\\\");\\n message.sources = [];\\n for (var i = 0; i < object.sources.length; ++i) {\\n if (typeof object.sources[i] !== \\\"object\\\")\\n throw TypeError(\\\".SdkIndexFrame.sources: object expected\\\");\\n message.sources[i] = $root.SdkStreamDescriptor.fromObject(object.sources[i]);\\n }\\n }\\n if (object.pausedAtSourceIds) {\\n if (!Array.isArray(object.pausedAtSourceIds))\\n throw TypeError(\\\".SdkIndexFrame.pausedAtSourceIds: array expected\\\");\\n message.pausedAtSourceIds = [];\\n for (var i = 0; i < object.pausedAtSourceIds.length; ++i)\\n message.pausedAtSourceIds[i] = object.pausedAtSourceIds[i] >>> 0;\\n }\\n if (object.numParticipants != null)\\n message.numParticipants = object.numParticipants >>> 0;\\n return message;\\n };\\n\\n /**\\n * Creates a plain object from a SdkIndexFrame message. Also converts values to other types if specified.\\n * @function toObject\\n * @memberof SdkIndexFrame\\n * @static\\n * @param {SdkIndexFrame} message SdkIndexFrame\\n * @param {$protobuf.IConversionOptions} [options] Conversion options\\n * @returns {Object.