{"version":3,"sources":["webpack:///./node_modules/core-js/internals/function-bind.js","webpack:///./node_modules/core-js/internals/to-index.js","webpack:///./node_modules/core-js/internals/typed-array-from-species-and-list.js","webpack:///./node_modules/core-js/internals/array-copy-within.js","webpack:///./node_modules/core-js/modules/es.typed-array.subarray.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/modules/es.typed-array.sort.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack:///./node_modules/core-js/modules/es.number.parse-int.js","webpack:///./node_modules/sdp/sdp.js","webpack:///./node_modules/core-js/modules/es.typed-array.slice.js","webpack:///./node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack:///./src/mixins/queryString.js","webpack:///./src/mixins/teamOptions.js","webpack:///./node_modules/core-js/modules/es.typed-array.find-index.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/core-js/modules/es.typed-array.map.js","webpack:///./node_modules/core-js/modules/es.reflect.construct.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack:///./node_modules/core-js/modules/es.typed-array.join.js","webpack:///./node_modules/core-js/modules/es.typed-array.iterator.js","webpack:///./node_modules/core-js/internals/array-buffer.js","webpack:///./src/webrtc/server/internal/Request.js","webpack:///./node_modules/core-js/modules/es.typed-array.some.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-string.js","webpack:///./node_modules/core-js/modules/es.typed-array.fill.js","webpack:///./node_modules/core-js/internals/typed-array-constructor.js","webpack:///./node_modules/core-js/internals/ieee754.js","webpack:///./node_modules/core-js/internals/array-fill.js","webpack:///./node_modules/core-js/modules/es.typed-array.includes.js","webpack:///./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack:///./node_modules/core-js/modules/es.typed-array.at.js","webpack:///./node_modules/core-js/modules/es.typed-array.copy-within.js","webpack:///./node_modules/core-js/internals/typed-array-from.js","webpack:///./node_modules/core-js/modules/es.typed-array.every.js","webpack:///./node_modules/core-js/internals/array-buffer-native.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:///./node_modules/core-js/internals/typed-array-species-constructor.js","webpack:///./node_modules/core-js/modules/es.array-buffer.constructor.js","webpack:///./node_modules/core-js/modules/es.typed-array.filter.js","webpack:///./node_modules/core-js/internals/number-parse-int.js","webpack:///./node_modules/core-js/modules/es.array.find-index.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce.js","webpack:///./node_modules/core-js/modules/es.typed-array.reverse.js","webpack:///./src/assets/xSocket.js","webpack:///./node_modules/webrtc-adapter/src/js/utils.js","webpack:///./node_modules/webrtc-adapter/src/js/chrome/getusermedia.js","webpack:///./node_modules/webrtc-adapter/src/js/chrome/getdisplaymedia.js","webpack:///./node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js","webpack:///./node_modules/webrtc-adapter/src/js/firefox/getusermedia.js","webpack:///./node_modules/webrtc-adapter/src/js/firefox/getdisplaymedia.js","webpack:///./node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js","webpack:///./node_modules/webrtc-adapter/src/js/safari/safari_shim.js","webpack:///./node_modules/webrtc-adapter/src/js/common_shim.js","webpack:///./node_modules/webrtc-adapter/src/js/adapter_factory.js","webpack:///./node_modules/webrtc-adapter/src/js/adapter_core.js","webpack:///./src/webrtc/models/message/MessageType.js","webpack:///./src/webrtc/models/RoomInfo.js","webpack:///./src/webrtc/models/ClientInfo.js","webpack:///./src/webrtc/models/WebrtcDataType.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack:///./src/webrtc/models/message/MessageBase.js","webpack:///./src/webrtc/models/message/MessageJoin.js","webpack:///./src/webrtc/models/message/MessageLeave.js","webpack:///./src/webrtc/models/message/MessageCall.js","webpack:///./src/webrtc/models/message/MessageTarget.js","webpack:///./src/webrtc/models/message/DataType.js","webpack:///./src/webrtc/RTCPeerConnection.js","webpack:///./src/webrtc/transport/MessageQueue.js","webpack:///./src/webrtc/transport/Tools.js","webpack:///./src/webrtc/transport/DatapackType.js","webpack:///./src/webrtc/transport/Message.js","webpack:///./src/webrtc/RTCDataChannel.js","webpack:///./src/webrtc/ClientType.js","webpack:///./src/webrtc/mediaTrackSource/MediaTrackSourceBase.js","webpack:///./src/webrtc/mediaTrackSource/MediaTrackSourceScreen.js","webpack:///./src/webrtc/mediaTrackSource/MediaTrackSourceCamera.js","webpack:///./src/webrtc/mediaTrackSource/MediaTrackSourceAudio.js","webpack:///./src/webrtc/mediaTrackSource/MediaTrackSourceCenter.js","webpack:///./src/webrtc/logger.js","webpack:///./src/webrtc/index.js","webpack:///./src/webrtc/server/RequestCenter.js","webpack:///./src/mixins/webrtcNew.js","webpack:///./node_modules/core-js/modules/es.typed-array.find.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/core-js/modules/es.typed-array.for-each.js","webpack:///./node_modules/core-js/internals/array-from-constructor-and-list.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/internals/array-last-index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.index-of.js","webpack:///./node_modules/core-js/internals/is-integral-number.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/uuid/dist/esm-browser/rng.js","webpack:///./node_modules/uuid/dist/esm-browser/regex.js","webpack:///./node_modules/uuid/dist/esm-browser/validate.js","webpack:///./node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./node_modules/uuid/dist/esm-browser/v4.js","webpack:///./node_modules/core-js/modules/es.reflect.to-string-tag.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js"],"names":["global","uncurryThis","aCallable","isObject","hasOwn","arraySlice","Function","concat","join","factories","construct","C","argsLength","args","list","i","module","exports","bind","that","F","this","Prototype","prototype","partArgs","arguments","boundFunction","length","apply","toIntegerOrInfinity","toLength","RangeError","it","undefined","number","arrayFromConstructorAndList","typedArraySpeciesConstructor","instance","toObject","toAbsoluteIndex","lengthOfArrayLike","min","Math","copyWithin","target","start","O","len","to","from","end","count","inc","ArrayBufferViewCore","aTypedArray","exportTypedArrayMethod","begin","beginIndex","buffer","byteOffset","BYTES_PER_ELEMENT","toPositiveInteger","BYTES","offset","isPrototypeOf","TypeError","fails","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","Array","Uint16Array","un$Sort","sort","ACCEPT_INCORRECT_ARGUMENTS","STABLE_SORT","index","mod","array","expected","a","b","getSortCompare","comparefn","x","y","$reduceRight","right","callbackfn","$","parseInt","stat","forced","Number","SDPUtils","random","toString","substr","localCName","generateIdentifier","splitLines","blob","trim","split","map","line","splitSections","parts","part","getDescription","sections","getMediaSections","shift","matchPrefix","prefix","filter","indexOf","parseCandidate","substring","candidate","foundation","component","1","2","protocol","toLowerCase","priority","ip","address","port","type","relatedAddress","relatedPort","tcpType","ufrag","usernameFragment","writeCandidate","sdp","push","toUpperCase","parseIceOptions","parseRtpMap","parsed","payloadType","name","clockRate","channels","numChannels","writeRtpMap","codec","pt","preferredPayloadType","parseExtmap","id","direction","uri","writeExtmap","headerExtension","preferredId","parseFmtp","kv","j","writeFmtp","parameters","Object","keys","params","forEach","param","parseRtcpFb","parameter","writeRtcpFb","lines","rtcpFeedback","fb","parseSsrcMedia","sp","ssrc","colon","attribute","value","parseSsrcGroup","semantics","ssrcs","getMid","mediaSection","mid","parseFingerprint","algorithm","getDtlsParameters","sessionpart","role","fingerprints","writeDtlsParameters","setupType","fp","parseCryptoLine","tag","cryptoSuite","keyParams","sessionParams","slice","writeCryptoLine","writeCryptoKeyParams","parseCryptoKeyParams","keyMethod","keySalt","lifeTime","mkiValue","mkiLength","getCryptoParameters","getIceParameters","pwd","password","writeIceParameters","iceLite","parseRtpParameters","description","codecs","headerExtensions","fecMechanisms","rtcp","mline","rtpmapline","fmtps","writeRtpDescription","kind","caps","maxptime","extension","parseRtpEncodingParameters","encodingParameters","hasRed","hasUlpfec","primarySsrc","secondarySsrc","flows","apt","encParam","codecPayloadType","rtx","JSON","parse","stringify","fec","mechanism","bandwidth","maxBitrate","parseRtcpParameters","rtcpParameters","remoteSsrc","obj","cname","rsize","reducedSize","compound","mux","writeRtcpParameters","parseMsid","spec","stream","track","planB","msidParts","parseSctpDescription","parseMLine","maxSizeLine","maxMessageSize","isNaN","sctpPort","fmt","sctpMapLines","writeSctpDescription","media","sctp","output","generateSessionId","writeSessionBoilerplate","sessId","sessVer","sessUser","sessionId","version","user","getDirection","getKind","isRejected","parseOLine","username","sessionVersion","netType","addressType","isValidSDP","charAt","FORCED","Int8Array","result","$lastIndexOf","searchElement","data","teamValue","selMem","ignoreStoreSchema","mounted","$route","query","teamId","userId","UsId","Identity","identity","mixins","MixinQueryString","teamOptions","defaultTeamValue","needLoadData","functionName","computed","mapState","team","find","m","Id","isLocalStorage","IsEnableLocalStore","watch","allTeams","getTeamOptions","WebsocketConnected","$nextTick","teamMixinGetData","DefaultTeamId","methods","getDefaultTeamId","Functions","AllowWebrtc","handleGetData","$findIndex","findIndex","predicate","toOffset","set","arrayLike","src","$map","mapfn","getBuiltIn","aConstructor","anObject","create","nativeConstruct","ObjectPrototype","NEW_TARGET_BUG","ARGS_BUG","sham","Target","newTarget","$args","proto","requireObjectCoercible","whitespaces","replace","whitespace","ltrim","RegExp","rtrim","createMethod","TYPE","$this","string","createTypedArrayConstructor","init","$join","separator","ArrayIterators","wellKnownSymbol","ITERATOR","Uint8Array","arrayValues","values","arrayKeys","arrayEntries","entries","TypedArrayPrototype","GENERIC","call","ITERATOR_IS_VALUES","typedArrayValues","DESCRIPTORS","NATIVE_ARRAY_BUFFER","FunctionName","createNonEnumerableProperty","redefineAll","anInstance","toIndex","IEEE754","getPrototypeOf","setPrototypeOf","getOwnPropertyNames","f","defineProperty","arrayFill","setToStringTag","InternalStateModule","PROPER_FUNCTION_NAME","PROPER","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","getInternalState","get","setInternalState","ARRAY_BUFFER","DATA_VIEW","PROTOTYPE","WRONG_LENGTH","WRONG_INDEX","NativeArrayBuffer","$ArrayBuffer","ArrayBufferPrototype","$DataView","DataViewPrototype","fill","reverse","packIEEE754","pack","unpackIEEE754","unpack","packInt8","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","addGetter","Constructor","key","view","isLittleEndian","intIndex","store","byteLength","bytes","conversion","INCORRECT_ARRAY_BUFFER_NAME","NaN","constructor","testView","$setInt8","setInt8","getInt8","setUint8","unsafe","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","ArrayBuffer","DataView","Request","RequestId","uuidv4","Url","Headers","ContentType","Body","Timeout","TimeoutId","OnResponse","OnError","OnTimeout","setTimeout","Error","clearTimeout","$some","some","Uint8ArrayPrototype","arrayToString","IS_NOT_ARRAY_METHOD","$fill","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferModule","createPropertyDescriptor","isIntegralNumber","toPropertyKey","classof","isSymbol","typedArrayFrom","setSpecies","definePropertyModule","getOwnPropertyDescriptorModule","inheritIfRequired","nativeDefineProperty","nativeGetOwnPropertyDescriptor","round","NATIVE_ARRAY_BUFFER_VIEWS","TYPED_ARRAY_CONSTRUCTOR","TYPED_ARRAY_TAG","TypedArray","aTypedArrayConstructor","isTypedArray","fromList","isArrayBuffer","klass","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","descriptor","configurable","writable","enumerable","getOwnPropertyDescriptor","wrapper","CLAMPED","match","CONSTRUCTOR_NAME","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructor","TypedArrayConstructorPrototype","exported","getter","setter","addElement","dummy","typedArrayOffset","$length","$len","abs","pow","floor","log","LN2","mantissaLength","exponent","mantissa","c","exponentLength","eMax","eBias","rt","sign","Infinity","nBits","argumentsLength","endPos","$includes","includes","checkCorrectnessOfIteration","iterable","relativeIndex","k","$ArrayCopyWithin","u$ArrayCopyWithin","getIterator","getIteratorMethod","isArrayIteratorMethod","source","step","iterator","next","mapping","iteratorMethod","done","$every","every","isForced","redefine","toPrimitive","thisNumberValue","NUMBER","NativeNumber","NumberPrototype","charCodeAt","toNumeric","primValue","toNumber","argument","first","third","radix","maxCode","digits","code","NumberWrapper","n","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","speciesConstructor","originalArray","arrayBufferModule","$filter","fromSpeciesAndList","$parseInt","Symbol","hex","exec","S","addToUnscopables","FIND_INDEX","SKIPS_HOLES","$reduce","left","middle","xSocket","opt","url","time","heartMsg","timeoutObj","webSocketObj","isOut","lastOffTime","reconnectTime","onopen","onmessage","onerror","onclose","afterReconnect","initWS","clearInterval","close","Vue","$xSocket","readyState","self","setInterval","send","heartStart","e","xs","WebSocket","ws","wasClean","destroy","Date","getTime","reconnect","logDisabled_","deprecationWarnings_","extractVersion","uastring","expr","pos","wrapPeerConnectionEvent","window","eventNameToWrap","RTCPeerConnection","nativeAddEventListener","addEventListener","nativeEventName","cb","wrappedCallback","modifiedEvent","handleEvent","_eventMap","Map","nativeRemoveEventListener","removeEventListener","has","unwrappedCb","delete","size","disableLog","bool","disableWarnings","console","deprecated","oldMethod","newMethod","warn","detectBrowser","browser","navigator","mozGetUserMedia","userAgent","webkitGetUserMedia","isSecureContext","webkitRTCPeerConnection","RTCIceGatherer","supportsUnifiedPlan","RTCRtpTransceiver","val","compactObject","reduce","accumulator","isObj","isEmptyObject","assign","walkStats","stats","base","resultSet","endsWith","filterStats","outbound","streamStatsType","filteredResult","trackStats","trackIdentifier","trackStat","trackId","shimGetUserMedia","browserDetails","mediaDevices","constraintsToChrome_","mandatory","optional","cc","r","ideal","exact","max","oldname_","oc","mix","advanced","shimConstraints_","constraints","func","audio","remap","video","face","facingMode","getSupportedFacingModeLies","getSupportedConstraints","matches","enumerateDevices","then","devices","d","dev","label","deviceId","shimError_","PermissionDeniedError","PermissionDismissedError","InvalidStateError","DevicesNotFoundError","ConstraintNotSatisfiedError","TrackStartError","MediaDeviceFailedDueToShutdown","MediaDeviceKillSwitchOn","TabCaptureError","ScreenCaptureError","DeviceCaptureError","message","constraint","constraintName","getUserMedia_","onSuccess","onError","getUserMedia","origGetUserMedia","cs","getAudioTracks","getVideoTracks","getTracks","stop","DOMException","Promise","reject","shimGetDisplayMedia","getSourceId","getDisplayMedia","sourceId","widthSpecified","width","heightSpecified","height","frameRateSpecified","frameRate","chromeMediaSource","chromeMediaSourceId","maxFrameRate","maxWidth","maxHeight","error","shimMediaStream","MediaStream","webkitMediaStream","shimOnTrack","_ontrack","origSetRemoteDescription","setRemoteDescription","_ontrackpoly","te","receiver","getReceivers","event","Event","transceiver","streams","dispatchEvent","shimGetSendersWithDtmf","shimSenderWithDtmf","pc","_dtmf","createDTMFSender","_pc","getSenders","_senders","origAddTrack","addTrack","sender","origRemoveTrack","removeTrack","idx","splice","origAddStream","addStream","origRemoveStream","removeStream","s","RTCRtpSender","origGetSenders","senders","shimGetStats","origGetStats","getStats","selector","onSucc","onErr","fixChromeStats_","response","standardReport","reports","report","standardStats","timestamp","localcandidate","remotecandidate","names","makeMapStats","successCallbackWrapper_","resolve","shimSenderReceiverGetStats","RTCRtpReceiver","origGetReceivers","receivers","srcElement","MediaStreamTrack","err","shimAddTrackRemoveTrackWithNative","getLocalStreams","_shimmedLocalStreams","streamId","alreadyExists","existingSenders","newSenders","newSender","shimAddTrackRemoveTrack","origGetLocalStreams","nativeStreams","_reverseStreams","_streams","newStream","replaceInternalStreamId","internalId","externalStream","internalStream","RTCSessionDescription","replaceExternalStreamId","signalingState","t","oldStream","method","nativeMethod","methodObj","isLegacyCall","desc","origSetLocalDescription","setLocalDescription","origLocalDescription","isLocal","streamid","hasTrack","shimPeerConnection","RTCIceCandidate","fixNegotiationNeeded","getConfiguration","sdpSemantics","nativeGetUserMedia","getSettings","nativeGetSettings","applyConstraints","nativeApplyConstraints","preferredMediaSource","mediaSource","RTCTrackEvent","mozRTCPeerConnection","modernStatsTypes","inboundrtp","outboundrtp","candidatepair","nativeGetStats","shimSenderGetStats","shimReceiverGetStats","shimRemoveStream","shimRTCDataChannel","DataChannel","RTCDataChannel","shimAddTransceiver","origAddTransceiver","addTransceiver","setParametersPromises","initParameters","shouldPerformCheck","sendEncodings","encodingParam","ridRegex","test","rid","parseFloat","scaleResolutionDownBy","maxFramerate","getParameters","encodings","setParameters","catch","shimGetParameters","origGetParameters","shimCreateOffer","origCreateOffer","createOffer","all","finally","shimCreateAnswer","origCreateAnswer","createAnswer","shimLocalStreamsAPI","_localStreams","_addTrack","tracks","shimRemoteStreamsAPI","getRemoteStreams","_remoteStreams","_onaddstream","_onaddstreampoly","shimCallbacksAPI","addIceCandidate","successCallback","failureCallback","options","promise","withCallback","_getUserMedia","shimConstraints","errcb","shimRTCIceServerUrls","OrigPeerConnection","pcConfig","pcConstraints","iceServers","newIceServers","server","hasOwnProperty","urls","generateCertificate","shimTrackEventTransceiver","shimCreateOfferLegacy","offerOptions","offerToReceiveAudio","audioTransceiver","getTransceivers","setDirection","offerToReceiveVideo","videoTransceiver","shimAudioContext","AudioContext","webkitAudioContext","shimRTCIceCandidate","NativeRTCIceCandidate","nativeCandidate","parsedCandidate","augmentedCandidate","toJSON","sdpMid","sdpMLineIndex","shimMaxMessageSize","_sctp","sctpInDescription","mLine","getRemoteFirefoxVersion","getCanSendMaxMessageSize","remoteIsFirefox","canSendMaxMessageSize","getMaxMessageSize","isFirefox","canSendMMS","remoteMMS","POSITIVE_INFINITY","shimSendThrowTypeError","wrapDcSend","dc","origDataChannelSend","origCreateDataChannel","createDataChannel","dataChannel","channel","shimConnectionState","completed","checking","iceConnectionState","_onconnectionstatechange","origMethod","_connectionstatechangepoly","_lastConnectionState","connectionState","newEvent","removeExtmapAllowMixed","nativeSRD","shimAddIceCandidateNullOrEmpty","nativeAddIceCandidate","shimParameterlessSetLocalDescription","nativeSetLocalDescription","adapterFactory","shimChrome","shimFirefox","shimSafari","logging","adapter","commonShim","browserShim","Any","Join","Leave","Call","RoomInfo","multiMode","MultiMode","WebrtcDataType","ForceDataType","Owner","IsOwner","clientInfo","Equals","other","equal","ClientInfo","None","Data","Screen","Camera","Audio","_setPrototypeOf","o","p","__proto__","_inherits","subClass","superClass","_getPrototypeOf","_isNativeReflectConstruct","Reflect","Proxy","Boolean","valueOf","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","_typeof","assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","isNativeReflectConstruct","Super","NewTarget","possibleConstructorReturn","MessageBase","Type","MessageJoin","room","client","Room","Client","MessageCall","From","To","MessageTarget","dataType","DataType","Offer","Answer","Candidate","Text","connection","PeerConnection","RTCDataChannels","OnClosed","OnDataChannelStateChange","item","MessageQueue","IntervalId","Messages","Send","pop","Tools","bs","getView","setNum","num","getUint8Array","Binary","Response","HeartBeat","Message","datapackType","Length","DatapackType","Offset","Stream","iscomplete","textDecoder","TextDecoder","decode","ConvertDatapackType","typeByte","IntToBytes","lengthByte","HeartCheck","BytesHeader","Bytes","binaryType","MessageHeader","Requests","OnMessageReceived","_this","bufferedAmountLowThreshold","AddDataChannel","Open","RemoveDataChannel","Close","SaveMessage","Run","Stop","_self","tools","toInt8","bytesLength","messageLength","BytesToInt","IsComplete","Add","GetBytes","GetDatapackType","messageBuilder","BuildMessage","Initiator","MediaTrackSourceBase","_useCount","Free","TrackSource","Exception","MediaTrackSourceScreen","MediaTrackSourceCamera","MediaTrackSourceAudio","MediaTrackSourceCenter","_instance","isDebug","msg","Webrtc","PeerConnections","OnConnectionStateChange","OnRemoteTrack","OnDataChannelBytes","SignalingSendMessage","GetInstance","MessageType","HandleJoin","HandleLeave","HandleCall","dataMessage","peerConnection","GetPeerConnection","CreatePeerConnection","ClientType","answer","messageAnswer","ToString","SendOffer","isSelf","peerConnections","CheckRoom","messageJoin","messageLeave","MessageLeave","offer","messageOffer","clientType","configuration","credential","createScreenTransceiver","createCameraTransceiver","createAudioTransceiver","webrtcDataType","CustomRTCPeerConnection","rtcDataChannel","trackScreen","trackCamera","trackAudio","GetTrackSource","streamScreen","Use","clone","active","streamCamera","streamAudio","onnegotiationneeded","Logger","onsignalingstatechange","onicegatheringstatechange","iceGatheringState","oniceconnectionstatechange","onconnectionstatechange","onicecandidate","messageCandidate","state","ondatachannel","ontrack","onremovetrack","onremovestream","Dispose","messageCall","HangUp","RequestCenter","request","StartCalcTimeout","textEncoder","TextEncoder","encode","StopCalcTimeout","onStopPlayVideo","WebsocketUrl","Websocket","WebrtcConnectTimeout","CallRequestQueues","RequestCenters","NeedDataChannel","OpenWebsocket","InitWebrtc","cmUrl","process","changeWebrtcDataType","functions","handleImageSrc","imageName","WebsocketOnConnectionStateChange","websocket","WebrtcOnConnectionStateChange","WebrtcOnRemoteTrack","WebrtcOnDataChannelBytes","websocketUrl","$socketUrl","$xStorage","getItem","isReconnect","isDisposed","SignalingMessageReceived","CloseWebsocket","webrtc","callRequest","removeCallRequest","needDataChannel","stopTime","timeoutId","requestCenter","GetRequestCenter","HandleResponse","CallRequest","clientIdentity","action","startTime","endTime","HangUpAll","SendRequest","roomIdentity","SendRequestAsync","dataChannels","GetRTCDataChannels","CloseWebrtc","TracksToMediaStream","mediaStream","beforeDestroy","$find","IndexedObject","IS_RIGHT","memo","$forEach","toIndexedObject","arrayMethodIsStrict","lastIndexOf","NEGATIVE_ZERO","STRICT_METHOD","$indexOf","isInteger","isFinite","NAME","isCallable","tryToString","uid","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TO_STRING_TAG","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Int16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isView","KEY","property","ARRAY","exportTypedArrayStaticMethod","getRandomValues","rnds8","rng","crypto","msCrypto","validate","uuid","byteToHex","arr","v4","buf","rnds"],"mappings":"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","file":"js/chunk-c376ef2e.208555bb.js","sourcesContent":["'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\n\nvar Function = global.Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n","var global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar RangeError = global.RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nmodule.exports = function (instance, list) {\n return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n var C = typedArraySpeciesConstructor(O);\n return new C(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","var global = require('../internals/global');\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","var global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw TypeError('Incorrect invocation');\n};\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar Array = global.Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar un$Sort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!un$Sort && !(fails(function () {\n un$Sort(new Uint16Array(2), null);\n}) && fails(function () {\n un$Sort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!un$Sort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n un$Sort(array, function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n if (STABLE_SORT) return un$Sort(this, comparefn);\n\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","var $ = require('../internals/export');\nvar parseInt = require('../internals/number-parse-int');\n\n// `Number.parseInt` method\n// https://tc39.es/ecma262/#sec-number.parseint\n// eslint-disable-next-line es/no-number-parseint -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseInt != parseInt }, {\n parseInt: parseInt\n});\n","/* eslint-env node */\n'use strict';\n\n// SDP helpers.\nconst SDPUtils = {};\n\n// Generate an alphanumeric identifier for cname or mids.\n// TODO: use UUIDs instead? https://gist.github.com/jed/982883\nSDPUtils.generateIdentifier = function() {\n return Math.random().toString(36).substr(2, 10);\n};\n\n// The RTCP CNAME used by all peerconnections from the same JS.\nSDPUtils.localCName = SDPUtils.generateIdentifier();\n\n// Splits SDP into lines, dealing with both CRLF and LF.\nSDPUtils.splitLines = function(blob) {\n return blob.trim().split('\\n').map(line => line.trim());\n};\n// Splits SDP into sessionpart and mediasections. Ensures CRLF.\nSDPUtils.splitSections = function(blob) {\n const parts = blob.split('\\nm=');\n return parts.map((part, index) => (index > 0 ?\n 'm=' + part : part).trim() + '\\r\\n');\n};\n\n// Returns the session description.\nSDPUtils.getDescription = function(blob) {\n const sections = SDPUtils.splitSections(blob);\n return sections && sections[0];\n};\n\n// Returns the individual media sections.\nSDPUtils.getMediaSections = function(blob) {\n const sections = SDPUtils.splitSections(blob);\n sections.shift();\n return sections;\n};\n\n// Returns lines that start with a certain prefix.\nSDPUtils.matchPrefix = function(blob, prefix) {\n return SDPUtils.splitLines(blob).filter(line => line.indexOf(prefix) === 0);\n};\n\n// Parses an ICE candidate line. Sample input:\n// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8\n// rport 55996\"\n// Input can be prefixed with a=.\nSDPUtils.parseCandidate = function(line) {\n let parts;\n // Parse both variants.\n if (line.indexOf('a=candidate:') === 0) {\n parts = line.substring(12).split(' ');\n } else {\n parts = line.substring(10).split(' ');\n }\n\n const candidate = {\n foundation: parts[0],\n component: {1: 'rtp', 2: 'rtcp'}[parts[1]] || parts[1],\n protocol: parts[2].toLowerCase(),\n priority: parseInt(parts[3], 10),\n ip: parts[4],\n address: parts[4], // address is an alias for ip.\n port: parseInt(parts[5], 10),\n // skip parts[6] == 'typ'\n type: parts[7],\n };\n\n for (let i = 8; i < parts.length; i += 2) {\n switch (parts[i]) {\n case 'raddr':\n candidate.relatedAddress = parts[i + 1];\n break;\n case 'rport':\n candidate.relatedPort = parseInt(parts[i + 1], 10);\n break;\n case 'tcptype':\n candidate.tcpType = parts[i + 1];\n break;\n case 'ufrag':\n candidate.ufrag = parts[i + 1]; // for backward compatibility.\n candidate.usernameFragment = parts[i + 1];\n break;\n default: // extension handling, in particular ufrag. Don't overwrite.\n if (candidate[parts[i]] === undefined) {\n candidate[parts[i]] = parts[i + 1];\n }\n break;\n }\n }\n return candidate;\n};\n\n// Translates a candidate object into SDP candidate attribute.\n// This does not include the a= prefix!\nSDPUtils.writeCandidate = function(candidate) {\n const sdp = [];\n sdp.push(candidate.foundation);\n\n const component = candidate.component;\n if (component === 'rtp') {\n sdp.push(1);\n } else if (component === 'rtcp') {\n sdp.push(2);\n } else {\n sdp.push(component);\n }\n sdp.push(candidate.protocol.toUpperCase());\n sdp.push(candidate.priority);\n sdp.push(candidate.address || candidate.ip);\n sdp.push(candidate.port);\n\n const type = candidate.type;\n sdp.push('typ');\n sdp.push(type);\n if (type !== 'host' && candidate.relatedAddress &&\n candidate.relatedPort) {\n sdp.push('raddr');\n sdp.push(candidate.relatedAddress);\n sdp.push('rport');\n sdp.push(candidate.relatedPort);\n }\n if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') {\n sdp.push('tcptype');\n sdp.push(candidate.tcpType);\n }\n if (candidate.usernameFragment || candidate.ufrag) {\n sdp.push('ufrag');\n sdp.push(candidate.usernameFragment || candidate.ufrag);\n }\n return 'candidate:' + sdp.join(' ');\n};\n\n// Parses an ice-options line, returns an array of option tags.\n// Sample input:\n// a=ice-options:foo bar\nSDPUtils.parseIceOptions = function(line) {\n return line.substr(14).split(' ');\n};\n\n// Parses a rtpmap line, returns RTCRtpCoddecParameters. Sample input:\n// a=rtpmap:111 opus/48000/2\nSDPUtils.parseRtpMap = function(line) {\n let parts = line.substr(9).split(' ');\n const parsed = {\n payloadType: parseInt(parts.shift(), 10), // was: id\n };\n\n parts = parts[0].split('/');\n\n parsed.name = parts[0];\n parsed.clockRate = parseInt(parts[1], 10); // was: clockrate\n parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1;\n // legacy alias, got renamed back to channels in ORTC.\n parsed.numChannels = parsed.channels;\n return parsed;\n};\n\n// Generates a rtpmap line from RTCRtpCodecCapability or\n// RTCRtpCodecParameters.\nSDPUtils.writeRtpMap = function(codec) {\n let pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n const channels = codec.channels || codec.numChannels || 1;\n return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate +\n (channels !== 1 ? '/' + channels : '') + '\\r\\n';\n};\n\n// Parses a extmap line (headerextension from RFC 5285). Sample input:\n// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\n// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset\nSDPUtils.parseExtmap = function(line) {\n const parts = line.substr(9).split(' ');\n return {\n id: parseInt(parts[0], 10),\n direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv',\n uri: parts[1],\n };\n};\n\n// Generates an extmap line from RTCRtpHeaderExtensionParameters or\n// RTCRtpHeaderExtension.\nSDPUtils.writeExtmap = function(headerExtension) {\n return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) +\n (headerExtension.direction && headerExtension.direction !== 'sendrecv'\n ? '/' + headerExtension.direction\n : '') +\n ' ' + headerExtension.uri + '\\r\\n';\n};\n\n// Parses a fmtp line, returns dictionary. Sample input:\n// a=fmtp:96 vbr=on;cng=on\n// Also deals with vbr=on; cng=on\nSDPUtils.parseFmtp = function(line) {\n const parsed = {};\n let kv;\n const parts = line.substr(line.indexOf(' ') + 1).split(';');\n for (let j = 0; j < parts.length; j++) {\n kv = parts[j].trim().split('=');\n parsed[kv[0].trim()] = kv[1];\n }\n return parsed;\n};\n\n// Generates a fmtp line from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeFmtp = function(codec) {\n let line = '';\n let pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.parameters && Object.keys(codec.parameters).length) {\n const params = [];\n Object.keys(codec.parameters).forEach(param => {\n if (codec.parameters[param] !== undefined) {\n params.push(param + '=' + codec.parameters[param]);\n } else {\n params.push(param);\n }\n });\n line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\\r\\n';\n }\n return line;\n};\n\n// Parses a rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:\n// a=rtcp-fb:98 nack rpsi\nSDPUtils.parseRtcpFb = function(line) {\n const parts = line.substr(line.indexOf(' ') + 1).split(' ');\n return {\n type: parts.shift(),\n parameter: parts.join(' '),\n };\n};\n\n// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeRtcpFb = function(codec) {\n let lines = '';\n let pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.rtcpFeedback && codec.rtcpFeedback.length) {\n // FIXME: special handling for trr-int?\n codec.rtcpFeedback.forEach(fb => {\n lines += 'a=rtcp-fb:' + pt + ' ' + fb.type +\n (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') +\n '\\r\\n';\n });\n }\n return lines;\n};\n\n// Parses a RFC 5576 ssrc media attribute. Sample input:\n// a=ssrc:3735928559 cname:something\nSDPUtils.parseSsrcMedia = function(line) {\n const sp = line.indexOf(' ');\n const parts = {\n ssrc: parseInt(line.substr(7, sp - 7), 10),\n };\n const colon = line.indexOf(':', sp);\n if (colon > -1) {\n parts.attribute = line.substr(sp + 1, colon - sp - 1);\n parts.value = line.substr(colon + 1);\n } else {\n parts.attribute = line.substr(sp + 1);\n }\n return parts;\n};\n\n// Parse a ssrc-group line (see RFC 5576). Sample input:\n// a=ssrc-group:semantics 12 34\nSDPUtils.parseSsrcGroup = function(line) {\n const parts = line.substr(13).split(' ');\n return {\n semantics: parts.shift(),\n ssrcs: parts.map(ssrc => parseInt(ssrc, 10)),\n };\n};\n\n// Extracts the MID (RFC 5888) from a media section.\n// Returns the MID or undefined if no mid line was found.\nSDPUtils.getMid = function(mediaSection) {\n const mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0];\n if (mid) {\n return mid.substr(6);\n }\n};\n\n// Parses a fingerprint line for DTLS-SRTP.\nSDPUtils.parseFingerprint = function(line) {\n const parts = line.substr(14).split(' ');\n return {\n algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge.\n value: parts[1].toUpperCase(), // the definition is upper-case in RFC 4572.\n };\n};\n\n// Extracts DTLS parameters from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the fingerprint line as input. See also getIceParameters.\nSDPUtils.getDtlsParameters = function(mediaSection, sessionpart) {\n const lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=fingerprint:');\n // Note: a=setup line is ignored since we use the 'auto' role in Edge.\n return {\n role: 'auto',\n fingerprints: lines.map(SDPUtils.parseFingerprint),\n };\n};\n\n// Serializes DTLS parameters to SDP.\nSDPUtils.writeDtlsParameters = function(params, setupType) {\n let sdp = 'a=setup:' + setupType + '\\r\\n';\n params.fingerprints.forEach(fp => {\n sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\\r\\n';\n });\n return sdp;\n};\n\n// Parses a=crypto lines into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members\nSDPUtils.parseCryptoLine = function(line) {\n const parts = line.substr(9).split(' ');\n return {\n tag: parseInt(parts[0], 10),\n cryptoSuite: parts[1],\n keyParams: parts[2],\n sessionParams: parts.slice(3),\n };\n};\n\nSDPUtils.writeCryptoLine = function(parameters) {\n return 'a=crypto:' + parameters.tag + ' ' +\n parameters.cryptoSuite + ' ' +\n (typeof parameters.keyParams === 'object'\n ? SDPUtils.writeCryptoKeyParams(parameters.keyParams)\n : parameters.keyParams) +\n (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') +\n '\\r\\n';\n};\n\n// Parses the crypto key parameters into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam*\nSDPUtils.parseCryptoKeyParams = function(keyParams) {\n if (keyParams.indexOf('inline:') !== 0) {\n return null;\n }\n const parts = keyParams.substr(7).split('|');\n return {\n keyMethod: 'inline',\n keySalt: parts[0],\n lifeTime: parts[1],\n mkiValue: parts[2] ? parts[2].split(':')[0] : undefined,\n mkiLength: parts[2] ? parts[2].split(':')[1] : undefined,\n };\n};\n\nSDPUtils.writeCryptoKeyParams = function(keyParams) {\n return keyParams.keyMethod + ':'\n + keyParams.keySalt +\n (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') +\n (keyParams.mkiValue && keyParams.mkiLength\n ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength\n : '');\n};\n\n// Extracts all SDES parameters.\nSDPUtils.getCryptoParameters = function(mediaSection, sessionpart) {\n const lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=crypto:');\n return lines.map(SDPUtils.parseCryptoLine);\n};\n\n// Parses ICE information from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the ice-ufrag and ice-pwd lines as input.\nSDPUtils.getIceParameters = function(mediaSection, sessionpart) {\n const ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-ufrag:')[0];\n const pwd = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-pwd:')[0];\n if (!(ufrag && pwd)) {\n return null;\n }\n return {\n usernameFragment: ufrag.substr(12),\n password: pwd.substr(10),\n };\n};\n\n// Serializes ICE parameters to SDP.\nSDPUtils.writeIceParameters = function(params) {\n let sdp = 'a=ice-ufrag:' + params.usernameFragment + '\\r\\n' +\n 'a=ice-pwd:' + params.password + '\\r\\n';\n if (params.iceLite) {\n sdp += 'a=ice-lite\\r\\n';\n }\n return sdp;\n};\n\n// Parses the SDP media section and returns RTCRtpParameters.\nSDPUtils.parseRtpParameters = function(mediaSection) {\n const description = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: [],\n rtcp: [],\n };\n const lines = SDPUtils.splitLines(mediaSection);\n const mline = lines[0].split(' ');\n for (let i = 3; i < mline.length; i++) { // find all codecs from mline[3..]\n const pt = mline[i];\n const rtpmapline = SDPUtils.matchPrefix(\n mediaSection, 'a=rtpmap:' + pt + ' ')[0];\n if (rtpmapline) {\n const codec = SDPUtils.parseRtpMap(rtpmapline);\n const fmtps = SDPUtils.matchPrefix(\n mediaSection, 'a=fmtp:' + pt + ' ');\n // Only the first a=fmtp: is considered.\n codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {};\n codec.rtcpFeedback = SDPUtils.matchPrefix(\n mediaSection, 'a=rtcp-fb:' + pt + ' ')\n .map(SDPUtils.parseRtcpFb);\n description.codecs.push(codec);\n // parse FEC mechanisms from rtpmap lines.\n switch (codec.name.toUpperCase()) {\n case 'RED':\n case 'ULPFEC':\n description.fecMechanisms.push(codec.name.toUpperCase());\n break;\n default: // only RED and ULPFEC are recognized as FEC mechanisms.\n break;\n }\n }\n }\n SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(line => {\n description.headerExtensions.push(SDPUtils.parseExtmap(line));\n });\n // FIXME: parse rtcp.\n return description;\n};\n\n// Generates parts of the SDP media section describing the capabilities /\n// parameters.\nSDPUtils.writeRtpDescription = function(kind, caps) {\n let sdp = '';\n\n // Build the mline.\n sdp += 'm=' + kind + ' ';\n sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs.\n sdp += ' UDP/TLS/RTP/SAVPF ';\n sdp += caps.codecs.map(codec => {\n if (codec.preferredPayloadType !== undefined) {\n return codec.preferredPayloadType;\n }\n return codec.payloadType;\n }).join(' ') + '\\r\\n';\n\n sdp += 'c=IN IP4 0.0.0.0\\r\\n';\n sdp += 'a=rtcp:9 IN IP4 0.0.0.0\\r\\n';\n\n // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb.\n caps.codecs.forEach(codec => {\n sdp += SDPUtils.writeRtpMap(codec);\n sdp += SDPUtils.writeFmtp(codec);\n sdp += SDPUtils.writeRtcpFb(codec);\n });\n let maxptime = 0;\n caps.codecs.forEach(codec => {\n if (codec.maxptime > maxptime) {\n maxptime = codec.maxptime;\n }\n });\n if (maxptime > 0) {\n sdp += 'a=maxptime:' + maxptime + '\\r\\n';\n }\n\n if (caps.headerExtensions) {\n caps.headerExtensions.forEach(extension => {\n sdp += SDPUtils.writeExtmap(extension);\n });\n }\n // FIXME: write fecMechanisms.\n return sdp;\n};\n\n// Parses the SDP media section and returns an array of\n// RTCRtpEncodingParameters.\nSDPUtils.parseRtpEncodingParameters = function(mediaSection) {\n const encodingParameters = [];\n const description = SDPUtils.parseRtpParameters(mediaSection);\n const hasRed = description.fecMechanisms.indexOf('RED') !== -1;\n const hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1;\n\n // filter a=ssrc:... cname:, ignore PlanB-msid\n const ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(line => SDPUtils.parseSsrcMedia(line))\n .filter(parts => parts.attribute === 'cname');\n const primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc;\n let secondarySsrc;\n\n const flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID')\n .map(line => {\n const parts = line.substr(17).split(' ');\n return parts.map(part => parseInt(part, 10));\n });\n if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) {\n secondarySsrc = flows[0][1];\n }\n\n description.codecs.forEach(codec => {\n if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) {\n let encParam = {\n ssrc: primarySsrc,\n codecPayloadType: parseInt(codec.parameters.apt, 10),\n };\n if (primarySsrc && secondarySsrc) {\n encParam.rtx = {ssrc: secondarySsrc};\n }\n encodingParameters.push(encParam);\n if (hasRed) {\n encParam = JSON.parse(JSON.stringify(encParam));\n encParam.fec = {\n ssrc: primarySsrc,\n mechanism: hasUlpfec ? 'red+ulpfec' : 'red',\n };\n encodingParameters.push(encParam);\n }\n }\n });\n if (encodingParameters.length === 0 && primarySsrc) {\n encodingParameters.push({\n ssrc: primarySsrc,\n });\n }\n\n // we support both b=AS and b=TIAS but interpret AS as TIAS.\n let bandwidth = SDPUtils.matchPrefix(mediaSection, 'b=');\n if (bandwidth.length) {\n if (bandwidth[0].indexOf('b=TIAS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substr(7), 10);\n } else if (bandwidth[0].indexOf('b=AS:') === 0) {\n // use formula from JSEP to convert b=AS to TIAS value.\n bandwidth = parseInt(bandwidth[0].substr(5), 10) * 1000 * 0.95\n - (50 * 40 * 8);\n } else {\n bandwidth = undefined;\n }\n encodingParameters.forEach(params => {\n params.maxBitrate = bandwidth;\n });\n }\n return encodingParameters;\n};\n\n// parses http://draft.ortc.org/#rtcrtcpparameters*\nSDPUtils.parseRtcpParameters = function(mediaSection) {\n const rtcpParameters = {};\n\n // Gets the first SSRC. Note that with RTX there might be multiple\n // SSRCs.\n const remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(line => SDPUtils.parseSsrcMedia(line))\n .filter(obj => obj.attribute === 'cname')[0];\n if (remoteSsrc) {\n rtcpParameters.cname = remoteSsrc.value;\n rtcpParameters.ssrc = remoteSsrc.ssrc;\n }\n\n // Edge uses the compound attribute instead of reducedSize\n // compound is !reducedSize\n const rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize');\n rtcpParameters.reducedSize = rsize.length > 0;\n rtcpParameters.compound = rsize.length === 0;\n\n // parses the rtcp-mux attrіbute.\n // Note that Edge does not support unmuxed RTCP.\n const mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux');\n rtcpParameters.mux = mux.length > 0;\n\n return rtcpParameters;\n};\n\nSDPUtils.writeRtcpParameters = function(rtcpParameters) {\n let sdp = '';\n if (rtcpParameters.reducedSize) {\n sdp += 'a=rtcp-rsize\\r\\n';\n }\n if (rtcpParameters.mux) {\n sdp += 'a=rtcp-mux\\r\\n';\n }\n if (rtcpParameters.ssrc !== undefined && rtcpParameters.cname) {\n sdp += 'a=ssrc:' + rtcpParameters.ssrc +\n ' cname:' + rtcpParameters.cname + '\\r\\n';\n }\n return sdp;\n};\n\n\n// parses either a=msid: or a=ssrc:... msid lines and returns\n// the id of the MediaStream and MediaStreamTrack.\nSDPUtils.parseMsid = function(mediaSection) {\n let parts;\n const spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:');\n if (spec.length === 1) {\n parts = spec[0].substr(7).split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n const planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(line => SDPUtils.parseSsrcMedia(line))\n .filter(msidParts => msidParts.attribute === 'msid');\n if (planB.length > 0) {\n parts = planB[0].value.split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n};\n\n// SCTP\n// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back\n// to draft-ietf-mmusic-sctp-sdp-05\nSDPUtils.parseSctpDescription = function(mediaSection) {\n const mline = SDPUtils.parseMLine(mediaSection);\n const maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:');\n let maxMessageSize;\n if (maxSizeLine.length > 0) {\n maxMessageSize = parseInt(maxSizeLine[0].substr(19), 10);\n }\n if (isNaN(maxMessageSize)) {\n maxMessageSize = 65536;\n }\n const sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:');\n if (sctpPort.length > 0) {\n return {\n port: parseInt(sctpPort[0].substr(12), 10),\n protocol: mline.fmt,\n maxMessageSize,\n };\n }\n const sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:');\n if (sctpMapLines.length > 0) {\n const parts = sctpMapLines[0]\n .substr(10)\n .split(' ');\n return {\n port: parseInt(parts[0], 10),\n protocol: parts[1],\n maxMessageSize,\n };\n }\n};\n\n// SCTP\n// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers\n// support by now receiving in this format, unless we originally parsed\n// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line\n// protocol of DTLS/SCTP -- without UDP/ or TCP/)\nSDPUtils.writeSctpDescription = function(media, sctp) {\n let output = [];\n if (media.protocol !== 'DTLS/SCTP') {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctp-port:' + sctp.port + '\\r\\n',\n ];\n } else {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\\r\\n',\n ];\n }\n if (sctp.maxMessageSize !== undefined) {\n output.push('a=max-message-size:' + sctp.maxMessageSize + '\\r\\n');\n }\n return output.join('');\n};\n\n// Generate a session ID for SDP.\n// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1\n// recommends using a cryptographically random +ve 64-bit value\n// but right now this should be acceptable and within the right range\nSDPUtils.generateSessionId = function() {\n return Math.random().toString().substr(2, 21);\n};\n\n// Write boiler plate for start of SDP\n// sessId argument is optional - if not supplied it will\n// be generated randomly\n// sessVersion is optional and defaults to 2\n// sessUser is optional and defaults to 'thisisadapterortc'\nSDPUtils.writeSessionBoilerplate = function(sessId, sessVer, sessUser) {\n let sessionId;\n const version = sessVer !== undefined ? sessVer : 2;\n if (sessId) {\n sessionId = sessId;\n } else {\n sessionId = SDPUtils.generateSessionId();\n }\n const user = sessUser || 'thisisadapterortc';\n // FIXME: sess-id should be an NTP timestamp.\n return 'v=0\\r\\n' +\n 'o=' + user + ' ' + sessionId + ' ' + version +\n ' IN IP4 127.0.0.1\\r\\n' +\n 's=-\\r\\n' +\n 't=0 0\\r\\n';\n};\n\n// Gets the direction from the mediaSection or the sessionpart.\nSDPUtils.getDirection = function(mediaSection, sessionpart) {\n // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv.\n const lines = SDPUtils.splitLines(mediaSection);\n for (let i = 0; i < lines.length; i++) {\n switch (lines[i]) {\n case 'a=sendrecv':\n case 'a=sendonly':\n case 'a=recvonly':\n case 'a=inactive':\n return lines[i].substr(2);\n default:\n // FIXME: What should happen here?\n }\n }\n if (sessionpart) {\n return SDPUtils.getDirection(sessionpart);\n }\n return 'sendrecv';\n};\n\nSDPUtils.getKind = function(mediaSection) {\n const lines = SDPUtils.splitLines(mediaSection);\n const mline = lines[0].split(' ');\n return mline[0].substr(2);\n};\n\nSDPUtils.isRejected = function(mediaSection) {\n return mediaSection.split(' ', 2)[1] === '0';\n};\n\nSDPUtils.parseMLine = function(mediaSection) {\n const lines = SDPUtils.splitLines(mediaSection);\n const parts = lines[0].substr(2).split(' ');\n return {\n kind: parts[0],\n port: parseInt(parts[1], 10),\n protocol: parts[2],\n fmt: parts.slice(3).join(' '),\n };\n};\n\nSDPUtils.parseOLine = function(mediaSection) {\n const line = SDPUtils.matchPrefix(mediaSection, 'o=')[0];\n const parts = line.substr(2).split(' ');\n return {\n username: parts[0],\n sessionId: parts[1],\n sessionVersion: parseInt(parts[2], 10),\n netType: parts[3],\n addressType: parts[4],\n address: parts[5],\n };\n};\n\n// a very naive interpretation of a valid SDP.\nSDPUtils.isValidSDP = function(blob) {\n if (typeof blob !== 'string' || blob.length === 0) {\n return false;\n }\n const lines = SDPUtils.splitLines(blob);\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].length < 2 || lines[i].charAt(1) !== '=') {\n return false;\n }\n // TODO: check the modifier a bit more.\n }\n return true;\n};\n\n// Expose public methods.\nif (typeof module === 'object') {\n module.exports = SDPUtils;\n}\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = arraySlice(aTypedArray(this), start, end);\n var C = typedArraySpeciesConstructor(this);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar apply = require('../internals/function-apply');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n var length = arguments.length;\n return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);\n});\n","export default {\r\n data() {\r\n return {\r\n teamValue: null,\r\n selMem: [],\r\n ignoreStoreSchema: false,\r\n };\r\n },\r\n mounted() {\r\n if (this.$route.query.teamId) {\r\n this.teamValue = Number.parseInt(this.$route.query.teamId);\r\n this.ignoreStoreSchema = true;\r\n }\r\n if (this.$route.query.userId) {\r\n var user = {\r\n UsId: Number.parseInt(this.$route.query.userId),\r\n Identity: this.$route.query.identity,\r\n };\r\n this.selMem.push(user);\r\n this.ignoreStoreSchema = true;\r\n }\r\n },\r\n};\r\n","import { mapState } from \"vuex\";\nimport MixinQueryString from \"@/mixins/queryString\";\n\nexport default {\n mixins: [MixinQueryString],\n data: () => ({\n teamOptions: [],\n teamValue: null,\n defaultTeamValue: null,\n needLoadData: false,\n functionName: null,\n }),\n computed: {\n ...mapState([\"allTeams\", \"user\"]),\n team() {\n if (this.teamOptions && this.teamValue) {\n return this.teamOptions.find((m) => m.Id == this.teamValue);\n }\n },\n isLocalStorage() {\n return this.team && this.team.IsEnableLocalStore;\n },\n },\n watch: {\n allTeams() {\n this.getTeamOptions();\n },\n user() {\n if (this.user && this.WebsocketConnected && this.needLoadData) {\n this.$nextTick(() => {\n this.teamMixinGetData();\n });\n this.needLoadData = false;\n }\n },\n \"user.DefaultTeamId\"() {\n this.defaultTeamValue = this.user.DefaultTeamId;\n if (this.teamOptions.length > 0 && this.defaultTeamValue && !this.teamValue) {\n var team = this.teamOptions.find((m) => m.Id == this.defaultTeamValue);\n if (team) {\n this.teamValue = team.Id;\n }\n }\n },\n teamValue() {\n this.$nextTick(() => {\n this.teamMixinGetData();\n });\n },\n WebsocketConnected() {\n if (this.user && this.WebsocketConnected && this.needLoadData) {\n this.$nextTick(() => {\n this.teamMixinGetData();\n });\n this.needLoadData = false;\n }\n },\n },\n methods: {\n getDefaultTeamId() {\n if (this.user && this.user.DefaultTeamId) {\n this.defaultTeamValue = this.user.DefaultTeamId;\n }\n },\n getTeamOptions() {\n if (this.allTeams.length <= 0) return;\n if (this.teamOptions.length > 0) return;\n\n this.teamOptions = this.allTeams;\n if (this.functionName) {\n this.teamOptions = this.teamOptions.filter((m) => m.Functions.indexOf(this.functionName) != -1);\n }\n if (this.teamOptions.length > 0 && this.defaultTeamValue && !this.teamValue) {\n var team = this.teamOptions.find((m) => m.Id == this.defaultTeamValue);\n if (team) {\n this.teamValue = team.Id;\n }\n }\n },\n teamMixinGetData() {\n if (!this.teamValue) {\n return;\n }\n if (this.isLocalStorage && this.selMem.length == 0 && !this.ignoreStoreSchema) {\n return;\n }\n // if (!this.ignoreStoreSchema && this.isLocalStorage) {\n // return;\n // }\n if (this.AllowWebrtc && (!this.user || !this.WebsocketConnected)) {\n this.needLoadData = true;\n } else {\n this.handleGetData?.();\n }\n },\n },\n mounted() {\n this.getDefaultTeamId();\n this.getTeamOptions();\n },\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (typedArraySpeciesConstructor(O))(length);\n });\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = uncurryThis([].join);\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\nexportTypedArrayMethod('join', function join(separator) {\n return $join(aTypedArray(this), separator);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = uncurryThis(ArrayIterators.values);\nvar arrayKeys = uncurryThis(ArrayIterators.keys);\nvar arrayEntries = uncurryThis(ArrayIterators.entries);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar TypedArrayPrototype = Uint8Array && Uint8Array.prototype;\n\nvar GENERIC = !fails(function () {\n TypedArrayPrototype[ITERATOR].call([1]);\n});\n\nvar ITERATOR_IS_VALUES = !!TypedArrayPrototype\n && TypedArrayPrototype.values\n && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values\n && TypedArrayPrototype.values.name === 'values';\n\nvar typedArrayValues = function values() {\n return arrayValues(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar FunctionName = require('../internals/function-name');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar arraySlice = require('../internals/array-slice-simple');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = global[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = global.Array;\nvar RangeError = global.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = arraySlice(bytes, start, start + count);\n return isLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: fill(Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, DataViewPrototype);\n anInstance(buffer, ArrayBufferPrototype);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toIntegerOrInfinity(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n DataViewPrototype = $DataView[PROTOTYPE];\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll(DataViewPrototype, {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n /* eslint-disable no-new -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n })) {\n /* eslint-enable no-new -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n return new NativeArrayBuffer(toIndex(length));\n };\n\n $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll(DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","import { v4 as uuidv4 } from \"uuid\";\r\nexport default class Request {\r\n constructor() {\r\n this.RequestId = uuidv4();\r\n this.Url = null;\r\n this.Headers = {};\r\n this.ContentType = \"Text\"; //Text,Json\r\n this.Body = null;\r\n this.Timeout = 60000;\r\n this.TimeoutId = null;\r\n this.OnResponse = null;\r\n this.OnError = null;\r\n this.OnTimeout = null;\r\n }\r\n StartCalcTimeout() {\r\n if (this.Timeout <= 0) {\r\n return;\r\n }\r\n this.TimeoutId = setTimeout(() => {\r\n this.OnTimeout?.(new Error(\"执行请求超时\"));\r\n this.OnError?.(new Error(\"执行请求超时\"));\r\n }, this.Timeout);\r\n }\r\n StopCalcTimeout() {\r\n if (this.TimeoutId) {\r\n clearTimeout(this.TimeoutId);\r\n this.TimeoutId = null;\r\n }\r\n }\r\n}\r\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar join = uncurryThis([].join);\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return join(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar call = require('../internals/function-call');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n var length = arguments.length;\n return call(\n $fill,\n aTypedArray(this),\n value,\n length > 1 ? arguments[1] : undefined,\n length > 2 ? arguments[2] : undefined\n );\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isIntegralNumber = require('../internals/is-integral-number');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n aTypedArrayConstructor(C);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && !isSymbol(key)\n && key in target\n && isIntegralNumber(+key)\n && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n key = toPropertyKey(key);\n return isTypedArrayIndex(target, key)\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n key = toPropertyKey(key);\n if (isTypedArrayIndex(target, key)\n && isObject(descriptor)\n && hasOwn(descriptor, 'value')\n && !hasOwn(descriptor, 'get')\n && !hasOwn(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructorPrototype);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructorPrototype);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_CONSTRUCTOR, TypedArrayConstructor);\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","// IEEE754 conversions based on https://github.com/feross/ieee754\nvar global = require('../internals/global');\n\nvar Array = global.Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n c = pow(2, -exponent);\n if (number * c < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n while (mantissaLength >= 8) {\n buffer[index++] = mantissa & 255;\n mantissa /= 256;\n mantissaLength -= 8;\n }\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n while (exponentLength > 0) {\n buffer[index++] = exponent & 255;\n exponent /= 256;\n exponentLength -= 8;\n }\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n while (nBits > 0) {\n exponent = exponent * 256 + buffer[index--];\n nBits -= 8;\n }\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n while (nBits > 0) {\n mantissa = mantissa * 256 + buffer[index--];\n nBits -= 8;\n }\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","/* eslint-disable no-new -- required for testing */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.at` method\n// https://github.com/tc39/proposal-relative-indexing-method\nexportTypedArrayMethod('at', function at(index) {\n var O = aTypedArray(this);\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : O[k];\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $ArrayCopyWithin = require('../internals/array-copy-within');\n\nvar u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","var bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aConstructor = require('../internals/a-constructor');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var C = aConstructor(this);\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n O = [];\n while (!(step = call(next, iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2]);\n }\n length = lengthOfArrayLike(O);\n result = new (aTypedArrayConstructor(C))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar arraySlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n var primValue = toPrimitive(value, 'number');\n return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = charCodeAt(it, 0);\n if (first === 43 || first === 45) {\n third = charCodeAt(it, 2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (charCodeAt(it, 1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = arraySlice(it, 2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = charCodeAt(digits, index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n var dummy = this;\n // check on 1..constructor(foo) case\n return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })\n ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return apply(\n $toLocaleString,\n TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n arraySlice(arguments)\n );\n}, FORCED);\n","var ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n return aTypedArrayConstructor(speciesConstructor(originalArray, originalArray[TYPED_ARRAY_CONSTRUCTOR]));\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return fromSpeciesAndList(this, list);\n});\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n // MS Edge 18- broken with boxed symbols\n || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(toString(string));\n return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","/**\n * WebSocket封装\n * 作者:XBB\n * 2019-10-28 11:47\n */\n\nimport Vue from \"vue\";\nexport default class xSocket {\n constructor(opt) {\n this.url = opt.url; //WebSocket链接\n this.time = 6000; //心跳间隔时间(ms)\n this.heartMsg = \"HeartCheck\"; //心跳消息\n this.timeoutObj = null; //心跳发送计时器\n this.webSocketObj = null; //原生的websocket对象\n this.isOut = false; //是否被挤掉\n this.lastOffTime = null; //上次离线时间\n this.reconnectTime = 5000; //重连间隔\n\n this.create(opt); //创建websocket链接\n }\n\n /**\n * 创建socket链接\n * @param {Object} params\n */\n create(params) {\n if (params) {\n if (params.time && !isNaN(params.time)) {\n this.time = params.time;\n }\n\n if (params.heartMsg) {\n this.heartMsg = params.heartMsg;\n }\n\n if (params.onopen) {\n this.onopen = params.onopen;\n }\n\n if (params.onmessage) {\n this.onmessage = params.onmessage;\n }\n\n if (params.onerror) {\n this.onerror = params.onerror;\n }\n\n if (params.onclose) {\n this.onclose = params.onclose;\n }\n\n if (params.afterReconnect) {\n this.afterReconnect = params.afterReconnect;\n }\n\n return initWS(this);\n }\n }\n\n /**\n * 关闭socket链接\n */\n destroy() {\n clearInterval(this.timeoutObj);\n this.timeoutObj = null;\n this.isOut = true;\n this.webSocketObj.close();\n Vue.prototype.$xSocket = 0;\n }\n\n /**\n * 开始发送心跳\n * @param {Number} time\n */\n heartStart(time) {\n if (this.webSocketObj.readyState != 1) {\n return false;\n }\n if (time) {\n this.time = time;\n }\n const self = this;\n if (this.timeoutObj) {\n clearInterval(this.timeoutObj);\n }\n this.timeoutObj = setInterval(function () {\n self.webSocketObj.send(self.heartMsg);\n }, time);\n }\n\n /**\n * 重置心跳\n */\n heartReset() {\n if (this.timeoutObj) {\n clearInterval(this.timeoutObj);\n this.timeoutObj = null;\n }\n this.heartStart(this.time);\n }\n\n /**\n * 重新链接\n */\n reconnect() {\n if (this.timeoutObj) {\n clearInterval(this.timeoutObj);\n this.timeoutObj = null;\n }\n initWS(this);\n }\n\n /**\n * 【生命周期】创建链接后触发\n * @param {Object} 事件对象\n */\n onopen(e) {}\n /**\n * 【生命周期】收到消息时触发\n * @param {Object} 事件对象\n */\n onmessage(e) {}\n /**\n * 【生命周期】错误时触发\n * @param {Object} 事件对象\n */\n onerror(e) {}\n /**\n * 【生命周期】关闭时触发\n * @param {Object} 事件对象\n */\n onclose(e) {}\n /**\n * 【生命周期】重新连接后触发\n */\n afterReconnect() {}\n}\n\nconst initWS = (xs) => {\n try {\n xs.webSocketObj = new WebSocket(xs.url);\n const ws = xs.webSocketObj;\n ws.onopen = (e) => {\n xs.heartStart(xs.time);\n xs.onopen(e);\n };\n ws.onmessage = (e) => {\n xs.onmessage(e);\n };\n ws.onerror = (e) => {\n xs.onerror(e);\n };\n ws.onclose = (e) => {\n if (e.wasClean) {\n xs.destroy();\n }\n xs.onclose(e);\n if (!xs.lastOffTime) {\n if (!xs.isOut) {\n xs.reconnect();\n xs.afterReconnect();\n }\n } else {\n if (new Date().getTime() - new Date(xs.lastOffTime).getTime() >= xs.reconnectTime) {\n if (!xs.isOut) {\n xs.reconnect();\n xs.afterReconnect();\n }\n } else {\n setTimeout(() => {\n if (!xs.isOut) {\n xs.reconnect();\n xs.afterReconnect();\n }\n }, new Date().getTime() - new Date(xs.lastOffTime).getTime());\n }\n }\n };\n } catch (e) {}\n};\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nlet logDisabled_ = true;\nlet deprecationWarnings_ = true;\n\n/**\n * Extract browser version out of the provided user agent string.\n *\n * @param {!string} uastring userAgent string.\n * @param {!string} expr Regular expression used as match criteria.\n * @param {!number} pos position in the version string to be returned.\n * @return {!number} browser version.\n */\nexport function extractVersion(uastring, expr, pos) {\n const match = uastring.match(expr);\n return match && match.length >= pos && parseInt(match[pos], 10);\n}\n\n// Wraps the peerconnection event eventNameToWrap in a function\n// which returns the modified event object (or false to prevent\n// the event).\nexport function wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) {\n if (!window.RTCPeerConnection) {\n return;\n }\n const proto = window.RTCPeerConnection.prototype;\n const nativeAddEventListener = proto.addEventListener;\n proto.addEventListener = function(nativeEventName, cb) {\n if (nativeEventName !== eventNameToWrap) {\n return nativeAddEventListener.apply(this, arguments);\n }\n const wrappedCallback = (e) => {\n const modifiedEvent = wrapper(e);\n if (modifiedEvent) {\n if (cb.handleEvent) {\n cb.handleEvent(modifiedEvent);\n } else {\n cb(modifiedEvent);\n }\n }\n };\n this._eventMap = this._eventMap || {};\n if (!this._eventMap[eventNameToWrap]) {\n this._eventMap[eventNameToWrap] = new Map();\n }\n this._eventMap[eventNameToWrap].set(cb, wrappedCallback);\n return nativeAddEventListener.apply(this, [nativeEventName,\n wrappedCallback]);\n };\n\n const nativeRemoveEventListener = proto.removeEventListener;\n proto.removeEventListener = function(nativeEventName, cb) {\n if (nativeEventName !== eventNameToWrap || !this._eventMap\n || !this._eventMap[eventNameToWrap]) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n if (!this._eventMap[eventNameToWrap].has(cb)) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n const unwrappedCb = this._eventMap[eventNameToWrap].get(cb);\n this._eventMap[eventNameToWrap].delete(cb);\n if (this._eventMap[eventNameToWrap].size === 0) {\n delete this._eventMap[eventNameToWrap];\n }\n if (Object.keys(this._eventMap).length === 0) {\n delete this._eventMap;\n }\n return nativeRemoveEventListener.apply(this, [nativeEventName,\n unwrappedCb]);\n };\n\n Object.defineProperty(proto, 'on' + eventNameToWrap, {\n get() {\n return this['_on' + eventNameToWrap];\n },\n set(cb) {\n if (this['_on' + eventNameToWrap]) {\n this.removeEventListener(eventNameToWrap,\n this['_on' + eventNameToWrap]);\n delete this['_on' + eventNameToWrap];\n }\n if (cb) {\n this.addEventListener(eventNameToWrap,\n this['_on' + eventNameToWrap] = cb);\n }\n },\n enumerable: true,\n configurable: true\n });\n}\n\nexport function disableLog(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + typeof bool +\n '. Please use a boolean.');\n }\n logDisabled_ = bool;\n return (bool) ? 'adapter.js logging disabled' :\n 'adapter.js logging enabled';\n}\n\n/**\n * Disable or enable deprecation warnings\n * @param {!boolean} bool set to true to disable warnings.\n */\nexport function disableWarnings(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + typeof bool +\n '. Please use a boolean.');\n }\n deprecationWarnings_ = !bool;\n return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled');\n}\n\nexport function log() {\n if (typeof window === 'object') {\n if (logDisabled_) {\n return;\n }\n if (typeof console !== 'undefined' && typeof console.log === 'function') {\n console.log.apply(console, arguments);\n }\n }\n}\n\n/**\n * Shows a deprecation warning suggesting the modern and spec-compatible API.\n */\nexport function deprecated(oldMethod, newMethod) {\n if (!deprecationWarnings_) {\n return;\n }\n console.warn(oldMethod + ' is deprecated, please use ' + newMethod +\n ' instead.');\n}\n\n/**\n * Browser detector.\n *\n * @return {object} result containing browser and version\n * properties.\n */\nexport function detectBrowser(window) {\n // Returned result object.\n const result = {browser: null, version: null};\n\n // Fail early if it's not a browser\n if (typeof window === 'undefined' || !window.navigator) {\n result.browser = 'Not a browser.';\n return result;\n }\n\n const {navigator} = window;\n\n if (navigator.mozGetUserMedia) { // Firefox.\n result.browser = 'firefox';\n result.version = extractVersion(navigator.userAgent,\n /Firefox\\/(\\d+)\\./, 1);\n } else if (navigator.webkitGetUserMedia ||\n (window.isSecureContext === false && window.webkitRTCPeerConnection &&\n !window.RTCIceGatherer)) {\n // Chrome, Chromium, Webview, Opera.\n // Version matches Chrome/WebRTC version.\n // Chrome 74 removed webkitGetUserMedia on http as well so we need the\n // more complicated fallback to webkitRTCPeerConnection.\n result.browser = 'chrome';\n result.version = extractVersion(navigator.userAgent,\n /Chrom(e|ium)\\/(\\d+)\\./, 2);\n } else if (window.RTCPeerConnection &&\n navigator.userAgent.match(/AppleWebKit\\/(\\d+)\\./)) { // Safari.\n result.browser = 'safari';\n result.version = extractVersion(navigator.userAgent,\n /AppleWebKit\\/(\\d+)\\./, 1);\n result.supportsUnifiedPlan = window.RTCRtpTransceiver &&\n 'currentDirection' in window.RTCRtpTransceiver.prototype;\n } else { // Default fallthrough: not supported.\n result.browser = 'Not a supported browser.';\n return result;\n }\n\n return result;\n}\n\n/**\n * Checks if something is an object.\n *\n * @param {*} val The something you want to check.\n * @return true if val is an object, false otherwise.\n */\nfunction isObject(val) {\n return Object.prototype.toString.call(val) === '[object Object]';\n}\n\n/**\n * Remove all empty objects and undefined values\n * from a nested object -- an enhanced and vanilla version\n * of Lodash's `compact`.\n */\nexport function compactObject(data) {\n if (!isObject(data)) {\n return data;\n }\n\n return Object.keys(data).reduce(function(accumulator, key) {\n const isObj = isObject(data[key]);\n const value = isObj ? compactObject(data[key]) : data[key];\n const isEmptyObject = isObj && !Object.keys(value).length;\n if (value === undefined || isEmptyObject) {\n return accumulator;\n }\n return Object.assign(accumulator, {[key]: value});\n }, {});\n}\n\n/* iterates the stats graph recursively. */\nexport function walkStats(stats, base, resultSet) {\n if (!base || resultSet.has(base.id)) {\n return;\n }\n resultSet.set(base.id, base);\n Object.keys(base).forEach(name => {\n if (name.endsWith('Id')) {\n walkStats(stats, stats.get(base[name]), resultSet);\n } else if (name.endsWith('Ids')) {\n base[name].forEach(id => {\n walkStats(stats, stats.get(id), resultSet);\n });\n }\n });\n}\n\n/* filter getStats for a sender/receiver track. */\nexport function filterStats(result, track, outbound) {\n const streamStatsType = outbound ? 'outbound-rtp' : 'inbound-rtp';\n const filteredResult = new Map();\n if (track === null) {\n return filteredResult;\n }\n const trackStats = [];\n result.forEach(value => {\n if (value.type === 'track' &&\n value.trackIdentifier === track.id) {\n trackStats.push(value);\n }\n });\n trackStats.forEach(trackStat => {\n result.forEach(stats => {\n if (stats.type === streamStatsType && stats.trackId === trackStat.id) {\n walkStats(result, stats, filteredResult);\n }\n });\n });\n return filteredResult;\n}\n\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\nimport * as utils from '../utils.js';\nconst logging = utils.log;\n\nexport function shimGetUserMedia(window, browserDetails) {\n const navigator = window && window.navigator;\n\n if (!navigator.mediaDevices) {\n return;\n }\n\n const constraintsToChrome_ = function(c) {\n if (typeof c !== 'object' || c.mandatory || c.optional) {\n return c;\n }\n const cc = {};\n Object.keys(c).forEach(key => {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n const r = (typeof c[key] === 'object') ? c[key] : {ideal: c[key]};\n if (r.exact !== undefined && typeof r.exact === 'number') {\n r.min = r.max = r.exact;\n }\n const oldname_ = function(prefix, name) {\n if (prefix) {\n return prefix + name.charAt(0).toUpperCase() + name.slice(1);\n }\n return (name === 'deviceId') ? 'sourceId' : name;\n };\n if (r.ideal !== undefined) {\n cc.optional = cc.optional || [];\n let oc = {};\n if (typeof r.ideal === 'number') {\n oc[oldname_('min', key)] = r.ideal;\n cc.optional.push(oc);\n oc = {};\n oc[oldname_('max', key)] = r.ideal;\n cc.optional.push(oc);\n } else {\n oc[oldname_('', key)] = r.ideal;\n cc.optional.push(oc);\n }\n }\n if (r.exact !== undefined && typeof r.exact !== 'number') {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_('', key)] = r.exact;\n } else {\n ['min', 'max'].forEach(mix => {\n if (r[mix] !== undefined) {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_(mix, key)] = r[mix];\n }\n });\n }\n });\n if (c.advanced) {\n cc.optional = (cc.optional || []).concat(c.advanced);\n }\n return cc;\n };\n\n const shimConstraints_ = function(constraints, func) {\n if (browserDetails.version >= 61) {\n return func(constraints);\n }\n constraints = JSON.parse(JSON.stringify(constraints));\n if (constraints && typeof constraints.audio === 'object') {\n const remap = function(obj, a, b) {\n if (a in obj && !(b in obj)) {\n obj[b] = obj[a];\n delete obj[a];\n }\n };\n constraints = JSON.parse(JSON.stringify(constraints));\n remap(constraints.audio, 'autoGainControl', 'googAutoGainControl');\n remap(constraints.audio, 'noiseSuppression', 'googNoiseSuppression');\n constraints.audio = constraintsToChrome_(constraints.audio);\n }\n if (constraints && typeof constraints.video === 'object') {\n // Shim facingMode for mobile & surface pro.\n let face = constraints.video.facingMode;\n face = face && ((typeof face === 'object') ? face : {ideal: face});\n const getSupportedFacingModeLies = browserDetails.version < 66;\n\n if ((face && (face.exact === 'user' || face.exact === 'environment' ||\n face.ideal === 'user' || face.ideal === 'environment')) &&\n !(navigator.mediaDevices.getSupportedConstraints &&\n navigator.mediaDevices.getSupportedConstraints().facingMode &&\n !getSupportedFacingModeLies)) {\n delete constraints.video.facingMode;\n let matches;\n if (face.exact === 'environment' || face.ideal === 'environment') {\n matches = ['back', 'rear'];\n } else if (face.exact === 'user' || face.ideal === 'user') {\n matches = ['front'];\n }\n if (matches) {\n // Look for matches in label, or use last cam for back (typical).\n return navigator.mediaDevices.enumerateDevices()\n .then(devices => {\n devices = devices.filter(d => d.kind === 'videoinput');\n let dev = devices.find(d => matches.some(match =>\n d.label.toLowerCase().includes(match)));\n if (!dev && devices.length && matches.includes('back')) {\n dev = devices[devices.length - 1]; // more likely the back cam\n }\n if (dev) {\n constraints.video.deviceId = face.exact ? {exact: dev.deviceId} :\n {ideal: dev.deviceId};\n }\n constraints.video = constraintsToChrome_(constraints.video);\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n });\n }\n }\n constraints.video = constraintsToChrome_(constraints.video);\n }\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n };\n\n const shimError_ = function(e) {\n if (browserDetails.version >= 64) {\n return e;\n }\n return {\n name: {\n PermissionDeniedError: 'NotAllowedError',\n PermissionDismissedError: 'NotAllowedError',\n InvalidStateError: 'NotAllowedError',\n DevicesNotFoundError: 'NotFoundError',\n ConstraintNotSatisfiedError: 'OverconstrainedError',\n TrackStartError: 'NotReadableError',\n MediaDeviceFailedDueToShutdown: 'NotAllowedError',\n MediaDeviceKillSwitchOn: 'NotAllowedError',\n TabCaptureError: 'AbortError',\n ScreenCaptureError: 'AbortError',\n DeviceCaptureError: 'AbortError'\n }[e.name] || e.name,\n message: e.message,\n constraint: e.constraint || e.constraintName,\n toString() {\n return this.name + (this.message && ': ') + this.message;\n }\n };\n };\n\n const getUserMedia_ = function(constraints, onSuccess, onError) {\n shimConstraints_(constraints, c => {\n navigator.webkitGetUserMedia(c, onSuccess, e => {\n if (onError) {\n onError(shimError_(e));\n }\n });\n });\n };\n navigator.getUserMedia = getUserMedia_.bind(navigator);\n\n // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia\n // function which returns a Promise, it does not accept spec-style\n // constraints.\n if (navigator.mediaDevices.getUserMedia) {\n const origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(cs) {\n return shimConstraints_(cs, c => origGetUserMedia(c).then(stream => {\n if (c.audio && !stream.getAudioTracks().length ||\n c.video && !stream.getVideoTracks().length) {\n stream.getTracks().forEach(track => {\n track.stop();\n });\n throw new DOMException('', 'NotFoundError');\n }\n return stream;\n }, e => Promise.reject(shimError_(e))));\n };\n }\n}\n","/*\n * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\nexport function shimGetDisplayMedia(window, getSourceId) {\n if (window.navigator.mediaDevices &&\n 'getDisplayMedia' in window.navigator.mediaDevices) {\n return;\n }\n if (!(window.navigator.mediaDevices)) {\n return;\n }\n // getSourceId is a function that returns a promise resolving with\n // the sourceId of the screen/window/tab to be shared.\n if (typeof getSourceId !== 'function') {\n console.error('shimGetDisplayMedia: getSourceId argument is not ' +\n 'a function');\n return;\n }\n window.navigator.mediaDevices.getDisplayMedia =\n function getDisplayMedia(constraints) {\n return getSourceId(constraints)\n .then(sourceId => {\n const widthSpecified = constraints.video && constraints.video.width;\n const heightSpecified = constraints.video &&\n constraints.video.height;\n const frameRateSpecified = constraints.video &&\n constraints.video.frameRate;\n constraints.video = {\n mandatory: {\n chromeMediaSource: 'desktop',\n chromeMediaSourceId: sourceId,\n maxFrameRate: frameRateSpecified || 3\n }\n };\n if (widthSpecified) {\n constraints.video.mandatory.maxWidth = widthSpecified;\n }\n if (heightSpecified) {\n constraints.video.mandatory.maxHeight = heightSpecified;\n }\n return window.navigator.mediaDevices.getUserMedia(constraints);\n });\n };\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\nimport * as utils from '../utils.js';\n\nexport {shimGetUserMedia} from './getusermedia';\nexport {shimGetDisplayMedia} from './getdisplaymedia';\n\nexport function shimMediaStream(window) {\n window.MediaStream = window.MediaStream || window.webkitMediaStream;\n}\n\nexport function shimOnTrack(window) {\n if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in\n window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\n get() {\n return this._ontrack;\n },\n set(f) {\n if (this._ontrack) {\n this.removeEventListener('track', this._ontrack);\n }\n this.addEventListener('track', this._ontrack = f);\n },\n enumerable: true,\n configurable: true\n });\n const origSetRemoteDescription =\n window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription() {\n if (!this._ontrackpoly) {\n this._ontrackpoly = (e) => {\n // onaddstream does not fire when a track is added to an existing\n // stream. But stream.onaddtrack is implemented so we use that.\n e.stream.addEventListener('addtrack', te => {\n let receiver;\n if (window.RTCPeerConnection.prototype.getReceivers) {\n receiver = this.getReceivers()\n .find(r => r.track && r.track.id === te.track.id);\n } else {\n receiver = {track: te.track};\n }\n\n const event = new Event('track');\n event.track = te.track;\n event.receiver = receiver;\n event.transceiver = {receiver};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n });\n e.stream.getTracks().forEach(track => {\n let receiver;\n if (window.RTCPeerConnection.prototype.getReceivers) {\n receiver = this.getReceivers()\n .find(r => r.track && r.track.id === track.id);\n } else {\n receiver = {track};\n }\n const event = new Event('track');\n event.track = track;\n event.receiver = receiver;\n event.transceiver = {receiver};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n });\n };\n this.addEventListener('addstream', this._ontrackpoly);\n }\n return origSetRemoteDescription.apply(this, arguments);\n };\n } else {\n // even if RTCRtpTransceiver is in window, it is only used and\n // emitted in unified-plan. Unfortunately this means we need\n // to unconditionally wrap the event.\n utils.wrapPeerConnectionEvent(window, 'track', e => {\n if (!e.transceiver) {\n Object.defineProperty(e, 'transceiver',\n {value: {receiver: e.receiver}});\n }\n return e;\n });\n }\n}\n\nexport function shimGetSendersWithDtmf(window) {\n // Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack.\n if (typeof window === 'object' && window.RTCPeerConnection &&\n !('getSenders' in window.RTCPeerConnection.prototype) &&\n 'createDTMFSender' in window.RTCPeerConnection.prototype) {\n const shimSenderWithDtmf = function(pc, track) {\n return {\n track,\n get dtmf() {\n if (this._dtmf === undefined) {\n if (track.kind === 'audio') {\n this._dtmf = pc.createDTMFSender(track);\n } else {\n this._dtmf = null;\n }\n }\n return this._dtmf;\n },\n _pc: pc\n };\n };\n\n // augment addTrack when getSenders is not available.\n if (!window.RTCPeerConnection.prototype.getSenders) {\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n this._senders = this._senders || [];\n return this._senders.slice(); // return a copy of the internal state.\n };\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, stream) {\n let sender = origAddTrack.apply(this, arguments);\n if (!sender) {\n sender = shimSenderWithDtmf(this, track);\n this._senders.push(sender);\n }\n return sender;\n };\n\n const origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack;\n window.RTCPeerConnection.prototype.removeTrack =\n function removeTrack(sender) {\n origRemoveTrack.apply(this, arguments);\n const idx = this._senders.indexOf(sender);\n if (idx !== -1) {\n this._senders.splice(idx, 1);\n }\n };\n }\n const origAddStream = window.RTCPeerConnection.prototype.addStream;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n this._senders = this._senders || [];\n origAddStream.apply(this, [stream]);\n stream.getTracks().forEach(track => {\n this._senders.push(shimSenderWithDtmf(this, track));\n });\n };\n\n const origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n this._senders = this._senders || [];\n origRemoveStream.apply(this, [stream]);\n\n stream.getTracks().forEach(track => {\n const sender = this._senders.find(s => s.track === track);\n if (sender) { // remove sender\n this._senders.splice(this._senders.indexOf(sender), 1);\n }\n });\n };\n } else if (typeof window === 'object' && window.RTCPeerConnection &&\n 'getSenders' in window.RTCPeerConnection.prototype &&\n 'createDTMFSender' in window.RTCPeerConnection.prototype &&\n window.RTCRtpSender &&\n !('dtmf' in window.RTCRtpSender.prototype)) {\n const origGetSenders = window.RTCPeerConnection.prototype.getSenders;\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n const senders = origGetSenders.apply(this, []);\n senders.forEach(sender => sender._pc = this);\n return senders;\n };\n\n Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', {\n get() {\n if (this._dtmf === undefined) {\n if (this.track.kind === 'audio') {\n this._dtmf = this._pc.createDTMFSender(this.track);\n } else {\n this._dtmf = null;\n }\n }\n return this._dtmf;\n }\n });\n }\n}\n\nexport function shimGetStats(window) {\n if (!window.RTCPeerConnection) {\n return;\n }\n\n const origGetStats = window.RTCPeerConnection.prototype.getStats;\n window.RTCPeerConnection.prototype.getStats = function getStats() {\n const [selector, onSucc, onErr] = arguments;\n\n // If selector is a function then we are in the old style stats so just\n // pass back the original getStats format to avoid breaking old users.\n if (arguments.length > 0 && typeof selector === 'function') {\n return origGetStats.apply(this, arguments);\n }\n\n // When spec-style getStats is supported, return those when called with\n // either no arguments or the selector argument is null.\n if (origGetStats.length === 0 && (arguments.length === 0 ||\n typeof selector !== 'function')) {\n return origGetStats.apply(this, []);\n }\n\n const fixChromeStats_ = function(response) {\n const standardReport = {};\n const reports = response.result();\n reports.forEach(report => {\n const standardStats = {\n id: report.id,\n timestamp: report.timestamp,\n type: {\n localcandidate: 'local-candidate',\n remotecandidate: 'remote-candidate'\n }[report.type] || report.type\n };\n report.names().forEach(name => {\n standardStats[name] = report.stat(name);\n });\n standardReport[standardStats.id] = standardStats;\n });\n\n return standardReport;\n };\n\n // shim getStats with maplike support\n const makeMapStats = function(stats) {\n return new Map(Object.keys(stats).map(key => [key, stats[key]]));\n };\n\n if (arguments.length >= 2) {\n const successCallbackWrapper_ = function(response) {\n onSucc(makeMapStats(fixChromeStats_(response)));\n };\n\n return origGetStats.apply(this, [successCallbackWrapper_,\n selector]);\n }\n\n // promise-support\n return new Promise((resolve, reject) => {\n origGetStats.apply(this, [\n function(response) {\n resolve(makeMapStats(fixChromeStats_(response)));\n }, reject]);\n }).then(onSucc, onErr);\n };\n}\n\nexport function shimSenderReceiverGetStats(window) {\n if (!(typeof window === 'object' && window.RTCPeerConnection &&\n window.RTCRtpSender && window.RTCRtpReceiver)) {\n return;\n }\n\n // shim sender stats.\n if (!('getStats' in window.RTCRtpSender.prototype)) {\n const origGetSenders = window.RTCPeerConnection.prototype.getSenders;\n if (origGetSenders) {\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n const senders = origGetSenders.apply(this, []);\n senders.forEach(sender => sender._pc = this);\n return senders;\n };\n }\n\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n if (origAddTrack) {\n window.RTCPeerConnection.prototype.addTrack = function addTrack() {\n const sender = origAddTrack.apply(this, arguments);\n sender._pc = this;\n return sender;\n };\n }\n window.RTCRtpSender.prototype.getStats = function getStats() {\n const sender = this;\n return this._pc.getStats().then(result =>\n /* Note: this will include stats of all senders that\n * send a track with the same id as sender.track as\n * it is not possible to identify the RTCRtpSender.\n */\n utils.filterStats(result, sender.track, true));\n };\n }\n\n // shim receiver stats.\n if (!('getStats' in window.RTCRtpReceiver.prototype)) {\n const origGetReceivers = window.RTCPeerConnection.prototype.getReceivers;\n if (origGetReceivers) {\n window.RTCPeerConnection.prototype.getReceivers =\n function getReceivers() {\n const receivers = origGetReceivers.apply(this, []);\n receivers.forEach(receiver => receiver._pc = this);\n return receivers;\n };\n }\n utils.wrapPeerConnectionEvent(window, 'track', e => {\n e.receiver._pc = e.srcElement;\n return e;\n });\n window.RTCRtpReceiver.prototype.getStats = function getStats() {\n const receiver = this;\n return this._pc.getStats().then(result =>\n utils.filterStats(result, receiver.track, false));\n };\n }\n\n if (!('getStats' in window.RTCRtpSender.prototype &&\n 'getStats' in window.RTCRtpReceiver.prototype)) {\n return;\n }\n\n // shim RTCPeerConnection.getStats(track).\n const origGetStats = window.RTCPeerConnection.prototype.getStats;\n window.RTCPeerConnection.prototype.getStats = function getStats() {\n if (arguments.length > 0 &&\n arguments[0] instanceof window.MediaStreamTrack) {\n const track = arguments[0];\n let sender;\n let receiver;\n let err;\n this.getSenders().forEach(s => {\n if (s.track === track) {\n if (sender) {\n err = true;\n } else {\n sender = s;\n }\n }\n });\n this.getReceivers().forEach(r => {\n if (r.track === track) {\n if (receiver) {\n err = true;\n } else {\n receiver = r;\n }\n }\n return r.track === track;\n });\n if (err || (sender && receiver)) {\n return Promise.reject(new DOMException(\n 'There are more than one sender or receiver for the track.',\n 'InvalidAccessError'));\n } else if (sender) {\n return sender.getStats();\n } else if (receiver) {\n return receiver.getStats();\n }\n return Promise.reject(new DOMException(\n 'There is no sender or receiver for the track.',\n 'InvalidAccessError'));\n }\n return origGetStats.apply(this, arguments);\n };\n}\n\nexport function shimAddTrackRemoveTrackWithNative(window) {\n // shim addTrack/removeTrack with native variants in order to make\n // the interactions with legacy getLocalStreams behave as in other browsers.\n // Keeps a mapping stream.id => [stream, rtpsenders...]\n window.RTCPeerConnection.prototype.getLocalStreams =\n function getLocalStreams() {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n return Object.keys(this._shimmedLocalStreams)\n .map(streamId => this._shimmedLocalStreams[streamId][0]);\n };\n\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, stream) {\n if (!stream) {\n return origAddTrack.apply(this, arguments);\n }\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n\n const sender = origAddTrack.apply(this, arguments);\n if (!this._shimmedLocalStreams[stream.id]) {\n this._shimmedLocalStreams[stream.id] = [stream, sender];\n } else if (this._shimmedLocalStreams[stream.id].indexOf(sender) === -1) {\n this._shimmedLocalStreams[stream.id].push(sender);\n }\n return sender;\n };\n\n const origAddStream = window.RTCPeerConnection.prototype.addStream;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n\n stream.getTracks().forEach(track => {\n const alreadyExists = this.getSenders().find(s => s.track === track);\n if (alreadyExists) {\n throw new DOMException('Track already exists.',\n 'InvalidAccessError');\n }\n });\n const existingSenders = this.getSenders();\n origAddStream.apply(this, arguments);\n const newSenders = this.getSenders()\n .filter(newSender => existingSenders.indexOf(newSender) === -1);\n this._shimmedLocalStreams[stream.id] = [stream].concat(newSenders);\n };\n\n const origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n delete this._shimmedLocalStreams[stream.id];\n return origRemoveStream.apply(this, arguments);\n };\n\n const origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack;\n window.RTCPeerConnection.prototype.removeTrack =\n function removeTrack(sender) {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n if (sender) {\n Object.keys(this._shimmedLocalStreams).forEach(streamId => {\n const idx = this._shimmedLocalStreams[streamId].indexOf(sender);\n if (idx !== -1) {\n this._shimmedLocalStreams[streamId].splice(idx, 1);\n }\n if (this._shimmedLocalStreams[streamId].length === 1) {\n delete this._shimmedLocalStreams[streamId];\n }\n });\n }\n return origRemoveTrack.apply(this, arguments);\n };\n}\n\nexport function shimAddTrackRemoveTrack(window, browserDetails) {\n if (!window.RTCPeerConnection) {\n return;\n }\n // shim addTrack and removeTrack.\n if (window.RTCPeerConnection.prototype.addTrack &&\n browserDetails.version >= 65) {\n return shimAddTrackRemoveTrackWithNative(window);\n }\n\n // also shim pc.getLocalStreams when addTrack is shimmed\n // to return the original streams.\n const origGetLocalStreams = window.RTCPeerConnection.prototype\n .getLocalStreams;\n window.RTCPeerConnection.prototype.getLocalStreams =\n function getLocalStreams() {\n const nativeStreams = origGetLocalStreams.apply(this);\n this._reverseStreams = this._reverseStreams || {};\n return nativeStreams.map(stream => this._reverseStreams[stream.id]);\n };\n\n const origAddStream = window.RTCPeerConnection.prototype.addStream;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n this._streams = this._streams || {};\n this._reverseStreams = this._reverseStreams || {};\n\n stream.getTracks().forEach(track => {\n const alreadyExists = this.getSenders().find(s => s.track === track);\n if (alreadyExists) {\n throw new DOMException('Track already exists.',\n 'InvalidAccessError');\n }\n });\n // Add identity mapping for consistency with addTrack.\n // Unless this is being used with a stream from addTrack.\n if (!this._reverseStreams[stream.id]) {\n const newStream = new window.MediaStream(stream.getTracks());\n this._streams[stream.id] = newStream;\n this._reverseStreams[newStream.id] = stream;\n stream = newStream;\n }\n origAddStream.apply(this, [stream]);\n };\n\n const origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n this._streams = this._streams || {};\n this._reverseStreams = this._reverseStreams || {};\n\n origRemoveStream.apply(this, [(this._streams[stream.id] || stream)]);\n delete this._reverseStreams[(this._streams[stream.id] ?\n this._streams[stream.id].id : stream.id)];\n delete this._streams[stream.id];\n };\n\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, stream) {\n if (this.signalingState === 'closed') {\n throw new DOMException(\n 'The RTCPeerConnection\\'s signalingState is \\'closed\\'.',\n 'InvalidStateError');\n }\n const streams = [].slice.call(arguments, 1);\n if (streams.length !== 1 ||\n !streams[0].getTracks().find(t => t === track)) {\n // this is not fully correct but all we can manage without\n // [[associated MediaStreams]] internal slot.\n throw new DOMException(\n 'The adapter.js addTrack polyfill only supports a single ' +\n ' stream which is associated with the specified track.',\n 'NotSupportedError');\n }\n\n const alreadyExists = this.getSenders().find(s => s.track === track);\n if (alreadyExists) {\n throw new DOMException('Track already exists.',\n 'InvalidAccessError');\n }\n\n this._streams = this._streams || {};\n this._reverseStreams = this._reverseStreams || {};\n const oldStream = this._streams[stream.id];\n if (oldStream) {\n // this is using odd Chrome behaviour, use with caution:\n // https://bugs.chromium.org/p/webrtc/issues/detail?id=7815\n // Note: we rely on the high-level addTrack/dtmf shim to\n // create the sender with a dtmf sender.\n oldStream.addTrack(track);\n\n // Trigger ONN async.\n Promise.resolve().then(() => {\n this.dispatchEvent(new Event('negotiationneeded'));\n });\n } else {\n const newStream = new window.MediaStream([track]);\n this._streams[stream.id] = newStream;\n this._reverseStreams[newStream.id] = stream;\n this.addStream(newStream);\n }\n return this.getSenders().find(s => s.track === track);\n };\n\n // replace the internal stream id with the external one and\n // vice versa.\n function replaceInternalStreamId(pc, description) {\n let sdp = description.sdp;\n Object.keys(pc._reverseStreams || []).forEach(internalId => {\n const externalStream = pc._reverseStreams[internalId];\n const internalStream = pc._streams[externalStream.id];\n sdp = sdp.replace(new RegExp(internalStream.id, 'g'),\n externalStream.id);\n });\n return new RTCSessionDescription({\n type: description.type,\n sdp\n });\n }\n function replaceExternalStreamId(pc, description) {\n let sdp = description.sdp;\n Object.keys(pc._reverseStreams || []).forEach(internalId => {\n const externalStream = pc._reverseStreams[internalId];\n const internalStream = pc._streams[externalStream.id];\n sdp = sdp.replace(new RegExp(externalStream.id, 'g'),\n internalStream.id);\n });\n return new RTCSessionDescription({\n type: description.type,\n sdp\n });\n }\n ['createOffer', 'createAnswer'].forEach(function(method) {\n const nativeMethod = window.RTCPeerConnection.prototype[method];\n const methodObj = {[method]() {\n const args = arguments;\n const isLegacyCall = arguments.length &&\n typeof arguments[0] === 'function';\n if (isLegacyCall) {\n return nativeMethod.apply(this, [\n (description) => {\n const desc = replaceInternalStreamId(this, description);\n args[0].apply(null, [desc]);\n },\n (err) => {\n if (args[1]) {\n args[1].apply(null, err);\n }\n }, arguments[2]\n ]);\n }\n return nativeMethod.apply(this, arguments)\n .then(description => replaceInternalStreamId(this, description));\n }};\n window.RTCPeerConnection.prototype[method] = methodObj[method];\n });\n\n const origSetLocalDescription =\n window.RTCPeerConnection.prototype.setLocalDescription;\n window.RTCPeerConnection.prototype.setLocalDescription =\n function setLocalDescription() {\n if (!arguments.length || !arguments[0].type) {\n return origSetLocalDescription.apply(this, arguments);\n }\n arguments[0] = replaceExternalStreamId(this, arguments[0]);\n return origSetLocalDescription.apply(this, arguments);\n };\n\n // TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier\n\n const origLocalDescription = Object.getOwnPropertyDescriptor(\n window.RTCPeerConnection.prototype, 'localDescription');\n Object.defineProperty(window.RTCPeerConnection.prototype,\n 'localDescription', {\n get() {\n const description = origLocalDescription.get.apply(this);\n if (description.type === '') {\n return description;\n }\n return replaceInternalStreamId(this, description);\n }\n });\n\n window.RTCPeerConnection.prototype.removeTrack =\n function removeTrack(sender) {\n if (this.signalingState === 'closed') {\n throw new DOMException(\n 'The RTCPeerConnection\\'s signalingState is \\'closed\\'.',\n 'InvalidStateError');\n }\n // We can not yet check for sender instanceof RTCRtpSender\n // since we shim RTPSender. So we check if sender._pc is set.\n if (!sender._pc) {\n throw new DOMException('Argument 1 of RTCPeerConnection.removeTrack ' +\n 'does not implement interface RTCRtpSender.', 'TypeError');\n }\n const isLocal = sender._pc === this;\n if (!isLocal) {\n throw new DOMException('Sender was not created by this connection.',\n 'InvalidAccessError');\n }\n\n // Search for the native stream the senders track belongs to.\n this._streams = this._streams || {};\n let stream;\n Object.keys(this._streams).forEach(streamid => {\n const hasTrack = this._streams[streamid].getTracks()\n .find(track => sender.track === track);\n if (hasTrack) {\n stream = this._streams[streamid];\n }\n });\n\n if (stream) {\n if (stream.getTracks().length === 1) {\n // if this is the last track of the stream, remove the stream. This\n // takes care of any shimmed _senders.\n this.removeStream(this._reverseStreams[stream.id]);\n } else {\n // relying on the same odd chrome behaviour as above.\n stream.removeTrack(sender.track);\n }\n this.dispatchEvent(new Event('negotiationneeded'));\n }\n };\n}\n\nexport function shimPeerConnection(window, browserDetails) {\n if (!window.RTCPeerConnection && window.webkitRTCPeerConnection) {\n // very basic support for old versions.\n window.RTCPeerConnection = window.webkitRTCPeerConnection;\n }\n if (!window.RTCPeerConnection) {\n return;\n }\n\n // shim implicit creation of RTCSessionDescription/RTCIceCandidate\n if (browserDetails.version < 53) {\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n const nativeMethod = window.RTCPeerConnection.prototype[method];\n const methodObj = {[method]() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n window.RTCIceCandidate :\n window.RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n }};\n window.RTCPeerConnection.prototype[method] = methodObj[method];\n });\n }\n}\n\n// Attempt to fix ONN in plan-b mode.\nexport function fixNegotiationNeeded(window, browserDetails) {\n utils.wrapPeerConnectionEvent(window, 'negotiationneeded', e => {\n const pc = e.target;\n if (browserDetails.version < 72 || (pc.getConfiguration &&\n pc.getConfiguration().sdpSemantics === 'plan-b')) {\n if (pc.signalingState !== 'stable') {\n return;\n }\n }\n return e;\n });\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport * as utils from '../utils';\n\nexport function shimGetUserMedia(window, browserDetails) {\n const navigator = window && window.navigator;\n const MediaStreamTrack = window && window.MediaStreamTrack;\n\n navigator.getUserMedia = function(constraints, onSuccess, onError) {\n // Replace Firefox 44+'s deprecation warning with unprefixed version.\n utils.deprecated('navigator.getUserMedia',\n 'navigator.mediaDevices.getUserMedia');\n navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError);\n };\n\n if (!(browserDetails.version > 55 &&\n 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) {\n const remap = function(obj, a, b) {\n if (a in obj && !(b in obj)) {\n obj[b] = obj[a];\n delete obj[a];\n }\n };\n\n const nativeGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(c) {\n if (typeof c === 'object' && typeof c.audio === 'object') {\n c = JSON.parse(JSON.stringify(c));\n remap(c.audio, 'autoGainControl', 'mozAutoGainControl');\n remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression');\n }\n return nativeGetUserMedia(c);\n };\n\n if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) {\n const nativeGetSettings = MediaStreamTrack.prototype.getSettings;\n MediaStreamTrack.prototype.getSettings = function() {\n const obj = nativeGetSettings.apply(this, arguments);\n remap(obj, 'mozAutoGainControl', 'autoGainControl');\n remap(obj, 'mozNoiseSuppression', 'noiseSuppression');\n return obj;\n };\n }\n\n if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) {\n const nativeApplyConstraints =\n MediaStreamTrack.prototype.applyConstraints;\n MediaStreamTrack.prototype.applyConstraints = function(c) {\n if (this.kind === 'audio' && typeof c === 'object') {\n c = JSON.parse(JSON.stringify(c));\n remap(c, 'autoGainControl', 'mozAutoGainControl');\n remap(c, 'noiseSuppression', 'mozNoiseSuppression');\n }\n return nativeApplyConstraints.apply(this, [c]);\n };\n }\n }\n}\n","/*\n * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nexport function shimGetDisplayMedia(window, preferredMediaSource) {\n if (window.navigator.mediaDevices &&\n 'getDisplayMedia' in window.navigator.mediaDevices) {\n return;\n }\n if (!(window.navigator.mediaDevices)) {\n return;\n }\n window.navigator.mediaDevices.getDisplayMedia =\n function getDisplayMedia(constraints) {\n if (!(constraints && constraints.video)) {\n const err = new DOMException('getDisplayMedia without video ' +\n 'constraints is undefined');\n err.name = 'NotFoundError';\n // from https://heycam.github.io/webidl/#idl-DOMException-error-names\n err.code = 8;\n return Promise.reject(err);\n }\n if (constraints.video === true) {\n constraints.video = {mediaSource: preferredMediaSource};\n } else {\n constraints.video.mediaSource = preferredMediaSource;\n }\n return window.navigator.mediaDevices.getUserMedia(constraints);\n };\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport * as utils from '../utils';\nexport {shimGetUserMedia} from './getusermedia';\nexport {shimGetDisplayMedia} from './getdisplaymedia';\n\nexport function shimOnTrack(window) {\n if (typeof window === 'object' && window.RTCTrackEvent &&\n ('receiver' in window.RTCTrackEvent.prototype) &&\n !('transceiver' in window.RTCTrackEvent.prototype)) {\n Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', {\n get() {\n return {receiver: this.receiver};\n }\n });\n }\n}\n\nexport function shimPeerConnection(window, browserDetails) {\n if (typeof window !== 'object' ||\n !(window.RTCPeerConnection || window.mozRTCPeerConnection)) {\n return; // probably media.peerconnection.enabled=false in about:config\n }\n if (!window.RTCPeerConnection && window.mozRTCPeerConnection) {\n // very basic support for old versions.\n window.RTCPeerConnection = window.mozRTCPeerConnection;\n }\n\n if (browserDetails.version < 53) {\n // shim away need for obsolete RTCIceCandidate/RTCSessionDescription.\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n const nativeMethod = window.RTCPeerConnection.prototype[method];\n const methodObj = {[method]() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n window.RTCIceCandidate :\n window.RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n }};\n window.RTCPeerConnection.prototype[method] = methodObj[method];\n });\n }\n\n const modernStatsTypes = {\n inboundrtp: 'inbound-rtp',\n outboundrtp: 'outbound-rtp',\n candidatepair: 'candidate-pair',\n localcandidate: 'local-candidate',\n remotecandidate: 'remote-candidate'\n };\n\n const nativeGetStats = window.RTCPeerConnection.prototype.getStats;\n window.RTCPeerConnection.prototype.getStats = function getStats() {\n const [selector, onSucc, onErr] = arguments;\n return nativeGetStats.apply(this, [selector || null])\n .then(stats => {\n if (browserDetails.version < 53 && !onSucc) {\n // Shim only promise getStats with spec-hyphens in type names\n // Leave callback version alone; misc old uses of forEach before Map\n try {\n stats.forEach(stat => {\n stat.type = modernStatsTypes[stat.type] || stat.type;\n });\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n // Avoid TypeError: \"type\" is read-only, in old versions. 34-43ish\n stats.forEach((stat, i) => {\n stats.set(i, Object.assign({}, stat, {\n type: modernStatsTypes[stat.type] || stat.type\n }));\n });\n }\n }\n return stats;\n })\n .then(onSucc, onErr);\n };\n}\n\nexport function shimSenderGetStats(window) {\n if (!(typeof window === 'object' && window.RTCPeerConnection &&\n window.RTCRtpSender)) {\n return;\n }\n if (window.RTCRtpSender && 'getStats' in window.RTCRtpSender.prototype) {\n return;\n }\n const origGetSenders = window.RTCPeerConnection.prototype.getSenders;\n if (origGetSenders) {\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n const senders = origGetSenders.apply(this, []);\n senders.forEach(sender => sender._pc = this);\n return senders;\n };\n }\n\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n if (origAddTrack) {\n window.RTCPeerConnection.prototype.addTrack = function addTrack() {\n const sender = origAddTrack.apply(this, arguments);\n sender._pc = this;\n return sender;\n };\n }\n window.RTCRtpSender.prototype.getStats = function getStats() {\n return this.track ? this._pc.getStats(this.track) :\n Promise.resolve(new Map());\n };\n}\n\nexport function shimReceiverGetStats(window) {\n if (!(typeof window === 'object' && window.RTCPeerConnection &&\n window.RTCRtpSender)) {\n return;\n }\n if (window.RTCRtpSender && 'getStats' in window.RTCRtpReceiver.prototype) {\n return;\n }\n const origGetReceivers = window.RTCPeerConnection.prototype.getReceivers;\n if (origGetReceivers) {\n window.RTCPeerConnection.prototype.getReceivers = function getReceivers() {\n const receivers = origGetReceivers.apply(this, []);\n receivers.forEach(receiver => receiver._pc = this);\n return receivers;\n };\n }\n utils.wrapPeerConnectionEvent(window, 'track', e => {\n e.receiver._pc = e.srcElement;\n return e;\n });\n window.RTCRtpReceiver.prototype.getStats = function getStats() {\n return this._pc.getStats(this.track);\n };\n}\n\nexport function shimRemoveStream(window) {\n if (!window.RTCPeerConnection ||\n 'removeStream' in window.RTCPeerConnection.prototype) {\n return;\n }\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n utils.deprecated('removeStream', 'removeTrack');\n this.getSenders().forEach(sender => {\n if (sender.track && stream.getTracks().includes(sender.track)) {\n this.removeTrack(sender);\n }\n });\n };\n}\n\nexport function shimRTCDataChannel(window) {\n // rename DataChannel to RTCDataChannel (native fix in FF60):\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1173851\n if (window.DataChannel && !window.RTCDataChannel) {\n window.RTCDataChannel = window.DataChannel;\n }\n}\n\nexport function shimAddTransceiver(window) {\n // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647\n // Firefox ignores the init sendEncodings options passed to addTransceiver\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918\n if (!(typeof window === 'object' && window.RTCPeerConnection)) {\n return;\n }\n const origAddTransceiver = window.RTCPeerConnection.prototype.addTransceiver;\n if (origAddTransceiver) {\n window.RTCPeerConnection.prototype.addTransceiver =\n function addTransceiver() {\n this.setParametersPromises = [];\n const initParameters = arguments[1];\n const shouldPerformCheck = initParameters &&\n 'sendEncodings' in initParameters;\n if (shouldPerformCheck) {\n // If sendEncodings params are provided, validate grammar\n initParameters.sendEncodings.forEach((encodingParam) => {\n if ('rid' in encodingParam) {\n const ridRegex = /^[a-z0-9]{0,16}$/i;\n if (!ridRegex.test(encodingParam.rid)) {\n throw new TypeError('Invalid RID value provided.');\n }\n }\n if ('scaleResolutionDownBy' in encodingParam) {\n if (!(parseFloat(encodingParam.scaleResolutionDownBy) >= 1.0)) {\n throw new RangeError('scale_resolution_down_by must be >= 1.0');\n }\n }\n if ('maxFramerate' in encodingParam) {\n if (!(parseFloat(encodingParam.maxFramerate) >= 0)) {\n throw new RangeError('max_framerate must be >= 0.0');\n }\n }\n });\n }\n const transceiver = origAddTransceiver.apply(this, arguments);\n if (shouldPerformCheck) {\n // Check if the init options were applied. If not we do this in an\n // asynchronous way and save the promise reference in a global object.\n // This is an ugly hack, but at the same time is way more robust than\n // checking the sender parameters before and after the createOffer\n // Also note that after the createoffer we are not 100% sure that\n // the params were asynchronously applied so we might miss the\n // opportunity to recreate offer.\n const {sender} = transceiver;\n const params = sender.getParameters();\n if (!('encodings' in params) ||\n // Avoid being fooled by patched getParameters() below.\n (params.encodings.length === 1 &&\n Object.keys(params.encodings[0]).length === 0)) {\n params.encodings = initParameters.sendEncodings;\n sender.sendEncodings = initParameters.sendEncodings;\n this.setParametersPromises.push(sender.setParameters(params)\n .then(() => {\n delete sender.sendEncodings;\n }).catch(() => {\n delete sender.sendEncodings;\n })\n );\n }\n }\n return transceiver;\n };\n }\n}\n\nexport function shimGetParameters(window) {\n if (!(typeof window === 'object' && window.RTCRtpSender)) {\n return;\n }\n const origGetParameters = window.RTCRtpSender.prototype.getParameters;\n if (origGetParameters) {\n window.RTCRtpSender.prototype.getParameters =\n function getParameters() {\n const params = origGetParameters.apply(this, arguments);\n if (!('encodings' in params)) {\n params.encodings = [].concat(this.sendEncodings || [{}]);\n }\n return params;\n };\n }\n}\n\nexport function shimCreateOffer(window) {\n // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647\n // Firefox ignores the init sendEncodings options passed to addTransceiver\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918\n if (!(typeof window === 'object' && window.RTCPeerConnection)) {\n return;\n }\n const origCreateOffer = window.RTCPeerConnection.prototype.createOffer;\n window.RTCPeerConnection.prototype.createOffer = function createOffer() {\n if (this.setParametersPromises && this.setParametersPromises.length) {\n return Promise.all(this.setParametersPromises)\n .then(() => {\n return origCreateOffer.apply(this, arguments);\n })\n .finally(() => {\n this.setParametersPromises = [];\n });\n }\n return origCreateOffer.apply(this, arguments);\n };\n}\n\nexport function shimCreateAnswer(window) {\n // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647\n // Firefox ignores the init sendEncodings options passed to addTransceiver\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918\n if (!(typeof window === 'object' && window.RTCPeerConnection)) {\n return;\n }\n const origCreateAnswer = window.RTCPeerConnection.prototype.createAnswer;\n window.RTCPeerConnection.prototype.createAnswer = function createAnswer() {\n if (this.setParametersPromises && this.setParametersPromises.length) {\n return Promise.all(this.setParametersPromises)\n .then(() => {\n return origCreateAnswer.apply(this, arguments);\n })\n .finally(() => {\n this.setParametersPromises = [];\n });\n }\n return origCreateAnswer.apply(this, arguments);\n };\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\nimport * as utils from '../utils';\n\nexport function shimLocalStreamsAPI(window) {\n if (typeof window !== 'object' || !window.RTCPeerConnection) {\n return;\n }\n if (!('getLocalStreams' in window.RTCPeerConnection.prototype)) {\n window.RTCPeerConnection.prototype.getLocalStreams =\n function getLocalStreams() {\n if (!this._localStreams) {\n this._localStreams = [];\n }\n return this._localStreams;\n };\n }\n if (!('addStream' in window.RTCPeerConnection.prototype)) {\n const _addTrack = window.RTCPeerConnection.prototype.addTrack;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n if (!this._localStreams) {\n this._localStreams = [];\n }\n if (!this._localStreams.includes(stream)) {\n this._localStreams.push(stream);\n }\n // Try to emulate Chrome's behaviour of adding in audio-video order.\n // Safari orders by track id.\n stream.getAudioTracks().forEach(track => _addTrack.call(this, track,\n stream));\n stream.getVideoTracks().forEach(track => _addTrack.call(this, track,\n stream));\n };\n\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, ...streams) {\n if (streams) {\n streams.forEach((stream) => {\n if (!this._localStreams) {\n this._localStreams = [stream];\n } else if (!this._localStreams.includes(stream)) {\n this._localStreams.push(stream);\n }\n });\n }\n return _addTrack.apply(this, arguments);\n };\n }\n if (!('removeStream' in window.RTCPeerConnection.prototype)) {\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n if (!this._localStreams) {\n this._localStreams = [];\n }\n const index = this._localStreams.indexOf(stream);\n if (index === -1) {\n return;\n }\n this._localStreams.splice(index, 1);\n const tracks = stream.getTracks();\n this.getSenders().forEach(sender => {\n if (tracks.includes(sender.track)) {\n this.removeTrack(sender);\n }\n });\n };\n }\n}\n\nexport function shimRemoteStreamsAPI(window) {\n if (typeof window !== 'object' || !window.RTCPeerConnection) {\n return;\n }\n if (!('getRemoteStreams' in window.RTCPeerConnection.prototype)) {\n window.RTCPeerConnection.prototype.getRemoteStreams =\n function getRemoteStreams() {\n return this._remoteStreams ? this._remoteStreams : [];\n };\n }\n if (!('onaddstream' in window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'onaddstream', {\n get() {\n return this._onaddstream;\n },\n set(f) {\n if (this._onaddstream) {\n this.removeEventListener('addstream', this._onaddstream);\n this.removeEventListener('track', this._onaddstreampoly);\n }\n this.addEventListener('addstream', this._onaddstream = f);\n this.addEventListener('track', this._onaddstreampoly = (e) => {\n e.streams.forEach(stream => {\n if (!this._remoteStreams) {\n this._remoteStreams = [];\n }\n if (this._remoteStreams.includes(stream)) {\n return;\n }\n this._remoteStreams.push(stream);\n const event = new Event('addstream');\n event.stream = stream;\n this.dispatchEvent(event);\n });\n });\n }\n });\n const origSetRemoteDescription =\n window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription() {\n const pc = this;\n if (!this._onaddstreampoly) {\n this.addEventListener('track', this._onaddstreampoly = function(e) {\n e.streams.forEach(stream => {\n if (!pc._remoteStreams) {\n pc._remoteStreams = [];\n }\n if (pc._remoteStreams.indexOf(stream) >= 0) {\n return;\n }\n pc._remoteStreams.push(stream);\n const event = new Event('addstream');\n event.stream = stream;\n pc.dispatchEvent(event);\n });\n });\n }\n return origSetRemoteDescription.apply(pc, arguments);\n };\n }\n}\n\nexport function shimCallbacksAPI(window) {\n if (typeof window !== 'object' || !window.RTCPeerConnection) {\n return;\n }\n const prototype = window.RTCPeerConnection.prototype;\n const origCreateOffer = prototype.createOffer;\n const origCreateAnswer = prototype.createAnswer;\n const setLocalDescription = prototype.setLocalDescription;\n const setRemoteDescription = prototype.setRemoteDescription;\n const addIceCandidate = prototype.addIceCandidate;\n\n prototype.createOffer =\n function createOffer(successCallback, failureCallback) {\n const options = (arguments.length >= 2) ? arguments[2] : arguments[0];\n const promise = origCreateOffer.apply(this, [options]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n\n prototype.createAnswer =\n function createAnswer(successCallback, failureCallback) {\n const options = (arguments.length >= 2) ? arguments[2] : arguments[0];\n const promise = origCreateAnswer.apply(this, [options]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n\n let withCallback = function(description, successCallback, failureCallback) {\n const promise = setLocalDescription.apply(this, [description]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n prototype.setLocalDescription = withCallback;\n\n withCallback = function(description, successCallback, failureCallback) {\n const promise = setRemoteDescription.apply(this, [description]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n prototype.setRemoteDescription = withCallback;\n\n withCallback = function(candidate, successCallback, failureCallback) {\n const promise = addIceCandidate.apply(this, [candidate]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n prototype.addIceCandidate = withCallback;\n}\n\nexport function shimGetUserMedia(window) {\n const navigator = window && window.navigator;\n\n if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\n // shim not needed in Safari 12.1\n const mediaDevices = navigator.mediaDevices;\n const _getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices);\n navigator.mediaDevices.getUserMedia = (constraints) => {\n return _getUserMedia(shimConstraints(constraints));\n };\n }\n\n if (!navigator.getUserMedia && navigator.mediaDevices &&\n navigator.mediaDevices.getUserMedia) {\n navigator.getUserMedia = function getUserMedia(constraints, cb, errcb) {\n navigator.mediaDevices.getUserMedia(constraints)\n .then(cb, errcb);\n }.bind(navigator);\n }\n}\n\nexport function shimConstraints(constraints) {\n if (constraints && constraints.video !== undefined) {\n return Object.assign({},\n constraints,\n {video: utils.compactObject(constraints.video)}\n );\n }\n\n return constraints;\n}\n\nexport function shimRTCIceServerUrls(window) {\n if (!window.RTCPeerConnection) {\n return;\n }\n // migrate from non-spec RTCIceServer.url to RTCIceServer.urls\n const OrigPeerConnection = window.RTCPeerConnection;\n window.RTCPeerConnection =\n function RTCPeerConnection(pcConfig, pcConstraints) {\n if (pcConfig && pcConfig.iceServers) {\n const newIceServers = [];\n for (let i = 0; i < pcConfig.iceServers.length; i++) {\n let server = pcConfig.iceServers[i];\n if (!server.hasOwnProperty('urls') &&\n server.hasOwnProperty('url')) {\n utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls');\n server = JSON.parse(JSON.stringify(server));\n server.urls = server.url;\n delete server.url;\n newIceServers.push(server);\n } else {\n newIceServers.push(pcConfig.iceServers[i]);\n }\n }\n pcConfig.iceServers = newIceServers;\n }\n return new OrigPeerConnection(pcConfig, pcConstraints);\n };\n window.RTCPeerConnection.prototype = OrigPeerConnection.prototype;\n // wrap static methods. Currently just generateCertificate.\n if ('generateCertificate' in OrigPeerConnection) {\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\n get() {\n return OrigPeerConnection.generateCertificate;\n }\n });\n }\n}\n\nexport function shimTrackEventTransceiver(window) {\n // Add event.transceiver member over deprecated event.receiver\n if (typeof window === 'object' && window.RTCTrackEvent &&\n 'receiver' in window.RTCTrackEvent.prototype &&\n !('transceiver' in window.RTCTrackEvent.prototype)) {\n Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', {\n get() {\n return {receiver: this.receiver};\n }\n });\n }\n}\n\nexport function shimCreateOfferLegacy(window) {\n const origCreateOffer = window.RTCPeerConnection.prototype.createOffer;\n window.RTCPeerConnection.prototype.createOffer =\n function createOffer(offerOptions) {\n if (offerOptions) {\n if (typeof offerOptions.offerToReceiveAudio !== 'undefined') {\n // support bit values\n offerOptions.offerToReceiveAudio =\n !!offerOptions.offerToReceiveAudio;\n }\n const audioTransceiver = this.getTransceivers().find(transceiver =>\n transceiver.receiver.track.kind === 'audio');\n if (offerOptions.offerToReceiveAudio === false && audioTransceiver) {\n if (audioTransceiver.direction === 'sendrecv') {\n if (audioTransceiver.setDirection) {\n audioTransceiver.setDirection('sendonly');\n } else {\n audioTransceiver.direction = 'sendonly';\n }\n } else if (audioTransceiver.direction === 'recvonly') {\n if (audioTransceiver.setDirection) {\n audioTransceiver.setDirection('inactive');\n } else {\n audioTransceiver.direction = 'inactive';\n }\n }\n } else if (offerOptions.offerToReceiveAudio === true &&\n !audioTransceiver) {\n this.addTransceiver('audio', {direction: 'recvonly'});\n }\n\n if (typeof offerOptions.offerToReceiveVideo !== 'undefined') {\n // support bit values\n offerOptions.offerToReceiveVideo =\n !!offerOptions.offerToReceiveVideo;\n }\n const videoTransceiver = this.getTransceivers().find(transceiver =>\n transceiver.receiver.track.kind === 'video');\n if (offerOptions.offerToReceiveVideo === false && videoTransceiver) {\n if (videoTransceiver.direction === 'sendrecv') {\n if (videoTransceiver.setDirection) {\n videoTransceiver.setDirection('sendonly');\n } else {\n videoTransceiver.direction = 'sendonly';\n }\n } else if (videoTransceiver.direction === 'recvonly') {\n if (videoTransceiver.setDirection) {\n videoTransceiver.setDirection('inactive');\n } else {\n videoTransceiver.direction = 'inactive';\n }\n }\n } else if (offerOptions.offerToReceiveVideo === true &&\n !videoTransceiver) {\n this.addTransceiver('video', {direction: 'recvonly'});\n }\n }\n return origCreateOffer.apply(this, arguments);\n };\n}\n\nexport function shimAudioContext(window) {\n if (typeof window !== 'object' || window.AudioContext) {\n return;\n }\n window.AudioContext = window.webkitAudioContext;\n}\n\n","/*\n * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport SDPUtils from 'sdp';\nimport * as utils from './utils';\n\nexport function shimRTCIceCandidate(window) {\n // foundation is arbitrarily chosen as an indicator for full support for\n // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface\n if (!window.RTCIceCandidate || (window.RTCIceCandidate && 'foundation' in\n window.RTCIceCandidate.prototype)) {\n return;\n }\n\n const NativeRTCIceCandidate = window.RTCIceCandidate;\n window.RTCIceCandidate = function RTCIceCandidate(args) {\n // Remove the a= which shouldn't be part of the candidate string.\n if (typeof args === 'object' && args.candidate &&\n args.candidate.indexOf('a=') === 0) {\n args = JSON.parse(JSON.stringify(args));\n args.candidate = args.candidate.substr(2);\n }\n\n if (args.candidate && args.candidate.length) {\n // Augment the native candidate with the parsed fields.\n const nativeCandidate = new NativeRTCIceCandidate(args);\n const parsedCandidate = SDPUtils.parseCandidate(args.candidate);\n const augmentedCandidate = Object.assign(nativeCandidate,\n parsedCandidate);\n\n // Add a serializer that does not serialize the extra attributes.\n augmentedCandidate.toJSON = function toJSON() {\n return {\n candidate: augmentedCandidate.candidate,\n sdpMid: augmentedCandidate.sdpMid,\n sdpMLineIndex: augmentedCandidate.sdpMLineIndex,\n usernameFragment: augmentedCandidate.usernameFragment,\n };\n };\n return augmentedCandidate;\n }\n return new NativeRTCIceCandidate(args);\n };\n window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype;\n\n // Hook up the augmented candidate in onicecandidate and\n // addEventListener('icecandidate', ...)\n utils.wrapPeerConnectionEvent(window, 'icecandidate', e => {\n if (e.candidate) {\n Object.defineProperty(e, 'candidate', {\n value: new window.RTCIceCandidate(e.candidate),\n writable: 'false'\n });\n }\n return e;\n });\n}\n\nexport function shimMaxMessageSize(window, browserDetails) {\n if (!window.RTCPeerConnection) {\n return;\n }\n\n if (!('sctp' in window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'sctp', {\n get() {\n return typeof this._sctp === 'undefined' ? null : this._sctp;\n }\n });\n }\n\n const sctpInDescription = function(description) {\n if (!description || !description.sdp) {\n return false;\n }\n const sections = SDPUtils.splitSections(description.sdp);\n sections.shift();\n return sections.some(mediaSection => {\n const mLine = SDPUtils.parseMLine(mediaSection);\n return mLine && mLine.kind === 'application'\n && mLine.protocol.indexOf('SCTP') !== -1;\n });\n };\n\n const getRemoteFirefoxVersion = function(description) {\n // TODO: Is there a better solution for detecting Firefox?\n const match = description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\\d+)/);\n if (match === null || match.length < 2) {\n return -1;\n }\n const version = parseInt(match[1], 10);\n // Test for NaN (yes, this is ugly)\n return version !== version ? -1 : version;\n };\n\n const getCanSendMaxMessageSize = function(remoteIsFirefox) {\n // Every implementation we know can send at least 64 KiB.\n // Note: Although Chrome is technically able to send up to 256 KiB, the\n // data does not reach the other peer reliably.\n // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419\n let canSendMaxMessageSize = 65536;\n if (browserDetails.browser === 'firefox') {\n if (browserDetails.version < 57) {\n if (remoteIsFirefox === -1) {\n // FF < 57 will send in 16 KiB chunks using the deprecated PPID\n // fragmentation.\n canSendMaxMessageSize = 16384;\n } else {\n // However, other FF (and RAWRTC) can reassemble PPID-fragmented\n // messages. Thus, supporting ~2 GiB when sending.\n canSendMaxMessageSize = 2147483637;\n }\n } else if (browserDetails.version < 60) {\n // Currently, all FF >= 57 will reset the remote maximum message size\n // to the default value when a data channel is created at a later\n // stage. :(\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831\n canSendMaxMessageSize =\n browserDetails.version === 57 ? 65535 : 65536;\n } else {\n // FF >= 60 supports sending ~2 GiB\n canSendMaxMessageSize = 2147483637;\n }\n }\n return canSendMaxMessageSize;\n };\n\n const getMaxMessageSize = function(description, remoteIsFirefox) {\n // Note: 65536 bytes is the default value from the SDP spec. Also,\n // every implementation we know supports receiving 65536 bytes.\n let maxMessageSize = 65536;\n\n // FF 57 has a slightly incorrect default remote max message size, so\n // we need to adjust it here to avoid a failure when sending.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697\n if (browserDetails.browser === 'firefox'\n && browserDetails.version === 57) {\n maxMessageSize = 65535;\n }\n\n const match = SDPUtils.matchPrefix(description.sdp,\n 'a=max-message-size:');\n if (match.length > 0) {\n maxMessageSize = parseInt(match[0].substr(19), 10);\n } else if (browserDetails.browser === 'firefox' &&\n remoteIsFirefox !== -1) {\n // If the maximum message size is not present in the remote SDP and\n // both local and remote are Firefox, the remote peer can receive\n // ~2 GiB.\n maxMessageSize = 2147483637;\n }\n return maxMessageSize;\n };\n\n const origSetRemoteDescription =\n window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription() {\n this._sctp = null;\n // Chrome decided to not expose .sctp in plan-b mode.\n // As usual, adapter.js has to do an 'ugly worakaround'\n // to cover up the mess.\n if (browserDetails.browser === 'chrome' && browserDetails.version >= 76) {\n const {sdpSemantics} = this.getConfiguration();\n if (sdpSemantics === 'plan-b') {\n Object.defineProperty(this, 'sctp', {\n get() {\n return typeof this._sctp === 'undefined' ? null : this._sctp;\n },\n enumerable: true,\n configurable: true,\n });\n }\n }\n\n if (sctpInDescription(arguments[0])) {\n // Check if the remote is FF.\n const isFirefox = getRemoteFirefoxVersion(arguments[0]);\n\n // Get the maximum message size the local peer is capable of sending\n const canSendMMS = getCanSendMaxMessageSize(isFirefox);\n\n // Get the maximum message size of the remote peer.\n const remoteMMS = getMaxMessageSize(arguments[0], isFirefox);\n\n // Determine final maximum message size\n let maxMessageSize;\n if (canSendMMS === 0 && remoteMMS === 0) {\n maxMessageSize = Number.POSITIVE_INFINITY;\n } else if (canSendMMS === 0 || remoteMMS === 0) {\n maxMessageSize = Math.max(canSendMMS, remoteMMS);\n } else {\n maxMessageSize = Math.min(canSendMMS, remoteMMS);\n }\n\n // Create a dummy RTCSctpTransport object and the 'maxMessageSize'\n // attribute.\n const sctp = {};\n Object.defineProperty(sctp, 'maxMessageSize', {\n get() {\n return maxMessageSize;\n }\n });\n this._sctp = sctp;\n }\n\n return origSetRemoteDescription.apply(this, arguments);\n };\n}\n\nexport function shimSendThrowTypeError(window) {\n if (!(window.RTCPeerConnection &&\n 'createDataChannel' in window.RTCPeerConnection.prototype)) {\n return;\n }\n\n // Note: Although Firefox >= 57 has a native implementation, the maximum\n // message size can be reset for all data channels at a later stage.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831\n\n function wrapDcSend(dc, pc) {\n const origDataChannelSend = dc.send;\n dc.send = function send() {\n const data = arguments[0];\n const length = data.length || data.size || data.byteLength;\n if (dc.readyState === 'open' &&\n pc.sctp && length > pc.sctp.maxMessageSize) {\n throw new TypeError('Message too large (can send a maximum of ' +\n pc.sctp.maxMessageSize + ' bytes)');\n }\n return origDataChannelSend.apply(dc, arguments);\n };\n }\n const origCreateDataChannel =\n window.RTCPeerConnection.prototype.createDataChannel;\n window.RTCPeerConnection.prototype.createDataChannel =\n function createDataChannel() {\n const dataChannel = origCreateDataChannel.apply(this, arguments);\n wrapDcSend(dataChannel, this);\n return dataChannel;\n };\n utils.wrapPeerConnectionEvent(window, 'datachannel', e => {\n wrapDcSend(e.channel, e.target);\n return e;\n });\n}\n\n\n/* shims RTCConnectionState by pretending it is the same as iceConnectionState.\n * See https://bugs.chromium.org/p/webrtc/issues/detail?id=6145#c12\n * for why this is a valid hack in Chrome. In Firefox it is slightly incorrect\n * since DTLS failures would be hidden. See\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1265827\n * for the Firefox tracking bug.\n */\nexport function shimConnectionState(window) {\n if (!window.RTCPeerConnection ||\n 'connectionState' in window.RTCPeerConnection.prototype) {\n return;\n }\n const proto = window.RTCPeerConnection.prototype;\n Object.defineProperty(proto, 'connectionState', {\n get() {\n return {\n completed: 'connected',\n checking: 'connecting'\n }[this.iceConnectionState] || this.iceConnectionState;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(proto, 'onconnectionstatechange', {\n get() {\n return this._onconnectionstatechange || null;\n },\n set(cb) {\n if (this._onconnectionstatechange) {\n this.removeEventListener('connectionstatechange',\n this._onconnectionstatechange);\n delete this._onconnectionstatechange;\n }\n if (cb) {\n this.addEventListener('connectionstatechange',\n this._onconnectionstatechange = cb);\n }\n },\n enumerable: true,\n configurable: true\n });\n\n ['setLocalDescription', 'setRemoteDescription'].forEach((method) => {\n const origMethod = proto[method];\n proto[method] = function() {\n if (!this._connectionstatechangepoly) {\n this._connectionstatechangepoly = e => {\n const pc = e.target;\n if (pc._lastConnectionState !== pc.connectionState) {\n pc._lastConnectionState = pc.connectionState;\n const newEvent = new Event('connectionstatechange', e);\n pc.dispatchEvent(newEvent);\n }\n return e;\n };\n this.addEventListener('iceconnectionstatechange',\n this._connectionstatechangepoly);\n }\n return origMethod.apply(this, arguments);\n };\n });\n}\n\nexport function removeExtmapAllowMixed(window, browserDetails) {\n /* remove a=extmap-allow-mixed for webrtc.org < M71 */\n if (!window.RTCPeerConnection) {\n return;\n }\n if (browserDetails.browser === 'chrome' && browserDetails.version >= 71) {\n return;\n }\n if (browserDetails.browser === 'safari' && browserDetails.version >= 605) {\n return;\n }\n const nativeSRD = window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription(desc) {\n if (desc && desc.sdp && desc.sdp.indexOf('\\na=extmap-allow-mixed') !== -1) {\n const sdp = desc.sdp.split('\\n').filter((line) => {\n return line.trim() !== 'a=extmap-allow-mixed';\n }).join('\\n');\n // Safari enforces read-only-ness of RTCSessionDescription fields.\n if (window.RTCSessionDescription &&\n desc instanceof window.RTCSessionDescription) {\n arguments[0] = new window.RTCSessionDescription({\n type: desc.type,\n sdp,\n });\n } else {\n desc.sdp = sdp;\n }\n }\n return nativeSRD.apply(this, arguments);\n };\n}\n\nexport function shimAddIceCandidateNullOrEmpty(window, browserDetails) {\n // Support for addIceCandidate(null or undefined)\n // as well as addIceCandidate({candidate: \"\", ...})\n // https://bugs.chromium.org/p/chromium/issues/detail?id=978582\n // Note: must be called before other polyfills which change the signature.\n if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) {\n return;\n }\n const nativeAddIceCandidate =\n window.RTCPeerConnection.prototype.addIceCandidate;\n if (!nativeAddIceCandidate || nativeAddIceCandidate.length === 0) {\n return;\n }\n window.RTCPeerConnection.prototype.addIceCandidate =\n function addIceCandidate() {\n if (!arguments[0]) {\n if (arguments[1]) {\n arguments[1].apply(null);\n }\n return Promise.resolve();\n }\n // Firefox 68+ emits and processes {candidate: \"\", ...}, ignore\n // in older versions.\n // Native support for ignoring exists for Chrome M77+.\n // Safari ignores as well, exact version unknown but works in the same\n // version that also ignores addIceCandidate(null).\n if (((browserDetails.browser === 'chrome' && browserDetails.version < 78)\n || (browserDetails.browser === 'firefox'\n && browserDetails.version < 68)\n || (browserDetails.browser === 'safari'))\n && arguments[0] && arguments[0].candidate === '') {\n return Promise.resolve();\n }\n return nativeAddIceCandidate.apply(this, arguments);\n };\n}\n\n// Note: Make sure to call this ahead of APIs that modify\n// setLocalDescription.length\nexport function shimParameterlessSetLocalDescription(window, browserDetails) {\n if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) {\n return;\n }\n const nativeSetLocalDescription =\n window.RTCPeerConnection.prototype.setLocalDescription;\n if (!nativeSetLocalDescription || nativeSetLocalDescription.length === 0) {\n return;\n }\n window.RTCPeerConnection.prototype.setLocalDescription =\n function setLocalDescription() {\n let desc = arguments[0] || {};\n if (typeof desc !== 'object' || (desc.type && desc.sdp)) {\n return nativeSetLocalDescription.apply(this, arguments);\n }\n // The remaining steps should technically happen when SLD comes off the\n // RTCPeerConnection's operations chain (not ahead of going on it), but\n // this is too difficult to shim. Instead, this shim only covers the\n // common case where the operations chain is empty. This is imperfect, but\n // should cover many cases. Rationale: Even if we can't reduce the glare\n // window to zero on imperfect implementations, there's value in tapping\n // into the perfect negotiation pattern that several browsers support.\n desc = {type: desc.type, sdp: desc.sdp};\n if (!desc.type) {\n switch (this.signalingState) {\n case 'stable':\n case 'have-local-offer':\n case 'have-remote-pranswer':\n desc.type = 'offer';\n break;\n default:\n desc.type = 'answer';\n break;\n }\n }\n if (desc.sdp || (desc.type !== 'offer' && desc.type !== 'answer')) {\n return nativeSetLocalDescription.apply(this, [desc]);\n }\n const func = desc.type === 'offer' ? this.createOffer : this.createAnswer;\n return func.apply(this)\n .then(d => nativeSetLocalDescription.apply(this, [d]));\n };\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\nimport * as utils from './utils';\n\n // Browser shims.\nimport * as chromeShim from './chrome/chrome_shim';\nimport * as firefoxShim from './firefox/firefox_shim';\nimport * as safariShim from './safari/safari_shim';\nimport * as commonShim from './common_shim';\nimport * as sdp from 'sdp';\n\n// Shimming starts here.\nexport function adapterFactory({window} = {}, options = {\n shimChrome: true,\n shimFirefox: true,\n shimSafari: true,\n}) {\n // Utils.\n const logging = utils.log;\n const browserDetails = utils.detectBrowser(window);\n\n const adapter = {\n browserDetails,\n commonShim,\n extractVersion: utils.extractVersion,\n disableLog: utils.disableLog,\n disableWarnings: utils.disableWarnings,\n // Expose sdp as a convenience. For production apps include directly.\n sdp,\n };\n\n // Shim browser if found.\n switch (browserDetails.browser) {\n case 'chrome':\n if (!chromeShim || !chromeShim.shimPeerConnection ||\n !options.shimChrome) {\n logging('Chrome shim is not included in this adapter release.');\n return adapter;\n }\n if (browserDetails.version === null) {\n logging('Chrome shim can not determine version, not shimming.');\n return adapter;\n }\n logging('adapter.js shimming chrome.');\n // Export to the adapter global object visible in the browser.\n adapter.browserShim = chromeShim;\n\n // Must be called before shimPeerConnection.\n commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);\n commonShim.shimParameterlessSetLocalDescription(window, browserDetails);\n\n chromeShim.shimGetUserMedia(window, browserDetails);\n chromeShim.shimMediaStream(window, browserDetails);\n chromeShim.shimPeerConnection(window, browserDetails);\n chromeShim.shimOnTrack(window, browserDetails);\n chromeShim.shimAddTrackRemoveTrack(window, browserDetails);\n chromeShim.shimGetSendersWithDtmf(window, browserDetails);\n chromeShim.shimGetStats(window, browserDetails);\n chromeShim.shimSenderReceiverGetStats(window, browserDetails);\n chromeShim.fixNegotiationNeeded(window, browserDetails);\n\n commonShim.shimRTCIceCandidate(window, browserDetails);\n commonShim.shimConnectionState(window, browserDetails);\n commonShim.shimMaxMessageSize(window, browserDetails);\n commonShim.shimSendThrowTypeError(window, browserDetails);\n commonShim.removeExtmapAllowMixed(window, browserDetails);\n break;\n case 'firefox':\n if (!firefoxShim || !firefoxShim.shimPeerConnection ||\n !options.shimFirefox) {\n logging('Firefox shim is not included in this adapter release.');\n return adapter;\n }\n logging('adapter.js shimming firefox.');\n // Export to the adapter global object visible in the browser.\n adapter.browserShim = firefoxShim;\n\n // Must be called before shimPeerConnection.\n commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);\n commonShim.shimParameterlessSetLocalDescription(window, browserDetails);\n\n firefoxShim.shimGetUserMedia(window, browserDetails);\n firefoxShim.shimPeerConnection(window, browserDetails);\n firefoxShim.shimOnTrack(window, browserDetails);\n firefoxShim.shimRemoveStream(window, browserDetails);\n firefoxShim.shimSenderGetStats(window, browserDetails);\n firefoxShim.shimReceiverGetStats(window, browserDetails);\n firefoxShim.shimRTCDataChannel(window, browserDetails);\n firefoxShim.shimAddTransceiver(window, browserDetails);\n firefoxShim.shimGetParameters(window, browserDetails);\n firefoxShim.shimCreateOffer(window, browserDetails);\n firefoxShim.shimCreateAnswer(window, browserDetails);\n\n commonShim.shimRTCIceCandidate(window, browserDetails);\n commonShim.shimConnectionState(window, browserDetails);\n commonShim.shimMaxMessageSize(window, browserDetails);\n commonShim.shimSendThrowTypeError(window, browserDetails);\n break;\n case 'safari':\n if (!safariShim || !options.shimSafari) {\n logging('Safari shim is not included in this adapter release.');\n return adapter;\n }\n logging('adapter.js shimming safari.');\n // Export to the adapter global object visible in the browser.\n adapter.browserShim = safariShim;\n\n // Must be called before shimCallbackAPI.\n commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);\n commonShim.shimParameterlessSetLocalDescription(window, browserDetails);\n\n safariShim.shimRTCIceServerUrls(window, browserDetails);\n safariShim.shimCreateOfferLegacy(window, browserDetails);\n safariShim.shimCallbacksAPI(window, browserDetails);\n safariShim.shimLocalStreamsAPI(window, browserDetails);\n safariShim.shimRemoteStreamsAPI(window, browserDetails);\n safariShim.shimTrackEventTransceiver(window, browserDetails);\n safariShim.shimGetUserMedia(window, browserDetails);\n safariShim.shimAudioContext(window, browserDetails);\n\n commonShim.shimRTCIceCandidate(window, browserDetails);\n commonShim.shimMaxMessageSize(window, browserDetails);\n commonShim.shimSendThrowTypeError(window, browserDetails);\n commonShim.removeExtmapAllowMixed(window, browserDetails);\n break;\n default:\n logging('Unsupported browser!');\n break;\n }\n\n return adapter;\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n\n'use strict';\n\nimport {adapterFactory} from './adapter_factory.js';\n\nconst adapter =\n adapterFactory({window: typeof window === 'undefined' ? undefined : window});\nexport default adapter;\n","export default {\r\n /// \r\n /// 直接发送信息\r\n /// \r\n Any: \"Any\",\r\n /// \r\n /// 加入房间\r\n /// \r\n Join: \"Join\",\r\n /// \r\n /// 退出房间\r\n /// \r\n Leave: \"Leave\",\r\n /// \r\n /// 发起连接消息\r\n /// \r\n Call: \"Call\",\r\n /// \r\n /// 发送给指定客户端\r\n /// \r\n Target: \"Target\",\r\n};\r\n","export default class RoomInfo {\r\n constructor(identity, multiMode) {\r\n this.Identity = identity;\r\n this.MultiMode = multiMode || false;\r\n this.WebrtcDataType = \"Screen,Data\"; //None,Screen,Data\r\n this.ForceDataType = false;\r\n this.Owner = null;\r\n this.IsOwner = function (clientInfo) {\r\n if (clientInfo == null) {\r\n return false;\r\n }\r\n if (this.Owner != null) {\r\n return this.Owner.Equals(clientInfo);\r\n }\r\n return false;\r\n };\r\n this.Equals = function (other) {\r\n if (other == null) {\r\n return false;\r\n }\r\n var equal = this.Identity == other.Identity;\r\n return equal;\r\n };\r\n }\r\n}\r\n","export default class ClientInfo {\r\n constructor(identity) {\r\n this.Identity = identity;\r\n this.WebrtcDataType = \"Screen,Data\"; //None,Screen,Data,Camera,Audio\r\n this.Equals = function (other) {\r\n if (other == null) {\r\n return false;\r\n } else {\r\n var equal = this.Identity == other.Identity;\r\n return equal;\r\n }\r\n };\r\n }\r\n}\r\n","export default {\r\n None: \"None\",\r\n Data: \"Data\",\r\n Screen: \"Screen\",\r\n Camera: \"Camera\",\r\n Audio: \"Audio\",\r\n};\r\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default class MessageBase {\r\n constructor(type) {\r\n this.Type = type;\r\n }\r\n}\r\n","import MessageBase from \"./MessageBase\";\r\nexport default class MessageJoin extends MessageBase {\r\n constructor(room, client) {\r\n super(\"Join\");\r\n this.Room = room;\r\n this.Client = client;\r\n }\r\n}\r\n","import MessageBase from \"./MessageBase\";\r\nexport default class MessageJoin extends MessageBase {\r\n constructor(room, client) {\r\n super(\"Leave\");\r\n this.Room = room;\r\n this.Client = client;\r\n }\r\n}\r\n","import MessageBase from \"./MessageBase\";\r\nexport default class MessageCall extends MessageBase {\r\n constructor(from, to) {\r\n super(\"Call\");\r\n this.From = from;\r\n this.To = to;\r\n }\r\n}\r\n","import MessageBase from \"./MessageBase\";\r\nexport default class MessageTarget extends MessageBase {\r\n constructor(room, from, to, data, dataType) {\r\n super(\"Target\");\r\n this.Room = room;\r\n this.From = from;\r\n this.To = to;\r\n this.Data = data;\r\n this.DataType = dataType;\r\n }\r\n}\r\n","export default {\r\n /// \r\n /// webrtc建立连接消息\r\n /// \r\n Offer: \"Offer\",\r\n Answer: \"Answer\",\r\n Candidate: \"Candidate\",\r\n /// \r\n /// webrtc通讯消息\r\n /// \r\n Text: \"Text\",\r\n};\r\n","export class RTCPeerConnection {\r\n constructor(connection, room, from, to) {\r\n this.PeerConnection = connection;\r\n this.Room = room;\r\n this.From = from;\r\n this.To = to;\r\n this.RTCDataChannels = [];\r\n this.OnClosed = null;\r\n this.OnDataChannelStateChange = null;\r\n }\r\n AddDataChannel(dataChannel) {\r\n this.RTCDataChannels.push(dataChannel);\r\n this.OnDataChannelStateChange?.(dataChannel, true);\r\n }\r\n RemoveDataChannel(dataChannel) {\r\n var index = this.RTCDataChannels.findIndex((item) => item == dataChannel);\r\n if (index != -1) {\r\n this.RTCDataChannels.splice(index, 1);\r\n }\r\n this.OnDataChannelStateChange?.(dataChannel, false);\r\n }\r\n GetRTCDataChannels() {\r\n return this.RTCDataChannels;\r\n }\r\n CheckRoom(room) {\r\n if (this.Room == room) {\r\n return true;\r\n }\r\n if (this.Room != null) {\r\n return this.Room.Equals(room);\r\n }\r\n return false;\r\n }\r\n Close() {\r\n this.RTCDataChannels = [];\r\n this.PeerConnection?.close();\r\n if (this.OnClosed) {\r\n this.OnClosed(this);\r\n this.OnClosed = null;\r\n }\r\n this.OnDataChannelStateChange = null;\r\n }\r\n}\r\n","export default class MessageQueue {\r\n constructor(dataChannel) {\r\n this.RTCDataChannel = dataChannel;\r\n this.IntervalId = null;\r\n this.Messages = [];\r\n }\r\n Add(message) {\r\n this.Messages.push(message);\r\n }\r\n Run() {\r\n if (!this.IntervalId) {\r\n this.IntervalId = setInterval(() => {\r\n this.Send();\r\n }, 10);\r\n }\r\n }\r\n Stop() {\r\n clearInterval(this.IntervalId);\r\n this.IntervalId = null;\r\n }\r\n Send() {\r\n let message = null;\r\n if (this.Messages.length > 0) {\r\n message = this.Messages.pop();\r\n }\r\n if (message != null) {\r\n try {\r\n this.RTCDataChannel.Send(message);\r\n } catch (error) {\r\n //ignore\r\n }\r\n }\r\n }\r\n}\r\n","class Tools {\r\n /**\r\n * 将整数转换为byte数组并指定长度\r\n *\r\n * @param a 整数\r\n * @param length 指定长度\r\n * @return\r\n */\r\n IntToBytes(a, length) {\r\n let bs = new Uint8Array(length);\r\n for (let i = bs.length - 1; i >= 0; i--) {\r\n bs[i] = a % 255;\r\n a = a / 255;\r\n }\r\n return bs;\r\n }\r\n\r\n /**\r\n * 将byte数组转换为整数\r\n *\r\n * @param bs\r\n * @return\r\n */\r\n BytesToInt(bs) {\r\n let a = 0;\r\n for (let i = bs.length - 1; i >= 0; i--) {\r\n a += bs[i] * Math.pow(255, bs.length - i - 1);\r\n }\r\n return a;\r\n }\r\n //构建一个视图,把字节数组写到缓存中,索引从0开始,大端字节序\r\n getView(bytes) {\r\n var view = new DataView(new ArrayBuffer(bytes.length));\r\n for (var i = 0; i < bytes.length; i++) {\r\n view.setUint8(i, bytes[i]);\r\n }\r\n return view;\r\n }\r\n //将字节数组转成有符号的8位整型,大端字节序\r\n toInt8(bytes) {\r\n return this.getView(bytes).getInt8();\r\n }\r\n //将字节数组转成无符号的8位整型,大端字节序\r\n toUint8(bytes) {\r\n return this.getView(bytes).getUint8();\r\n }\r\n //将字节数组转成有符号的16位整型,大端字节序\r\n toInt16(bytes) {\r\n return this.getView(bytes).getInt16();\r\n }\r\n //将字节数组转成无符号的16位整型,大端字节序\r\n toUint16(bytes) {\r\n return this.getView(bytes).getUint16();\r\n }\r\n //将字节数组转成有符号的32位整型,大端字节序\r\n toInt32(bytes) {\r\n return this.getView(bytes).getInt32();\r\n }\r\n //将字节数组转成无符号的32位整型,大端字节序\r\n toUint32(bytes) {\r\n return this.getView(bytes).getUint32();\r\n }\r\n //将字节数组转成32位浮点型,大端字节序\r\n toFloat32(bytes) {\r\n return this.getView(bytes).getFloat32();\r\n }\r\n //将字节数组转成64位浮点型,大端字节序\r\n toFloat64(bytes) {\r\n return this.getView(bytes).getFloat64();\r\n }\r\n\r\n //将数值写入到视图中,获得其字节数组,大端字节序\r\n getUint8Array(len, setNum) {\r\n var buffer = new ArrayBuffer(len); //指定字节长度\r\n setNum(new DataView(buffer)); //根据不同的类型调用不同的函数来写入数值\r\n return new Uint8Array(buffer); //创建一个字节数组,从缓存中拿取数据\r\n }\r\n //得到一个8位有符号整型的字节数组,大端字节序\r\n getInt8Bytes(num) {\r\n return this.getUint8Array(1, function (view) {\r\n view.setInt8(0, num);\r\n });\r\n }\r\n //得到一个8位无符号整型的字节数组,大端字节序\r\n getUint8Bytes(num) {\r\n return this.getUint8Array(1, function (view) {\r\n view.setUint8(0, num);\r\n });\r\n }\r\n //得到一个16位有符号整型的字节数组,大端字节序\r\n getInt16Bytes(num) {\r\n return this.getUint8Array(2, function (view) {\r\n view.setInt16(0, num);\r\n });\r\n }\r\n //得到一个16位无符号整型的字节数组,大端字节序\r\n getUint16Bytes(num) {\r\n return this.getUint8Array(2, function (view) {\r\n view.setUint16(0, num);\r\n });\r\n }\r\n //得到一个32位有符号整型的字节数组,大端字节序\r\n getInt32Bytes(num) {\r\n return this.getUint8Array(4, function (view) {\r\n view.setInt32(0, num);\r\n });\r\n }\r\n //得到一个32位无符号整型的字节数组,大端字节序\r\n getUint32Bytes(num) {\r\n return this.getUint8Array(4, function (view) {\r\n view.setUint32(0, num);\r\n });\r\n }\r\n //得到一个32位浮点型的字节数组,大端字节序\r\n getFloat32Bytes(num) {\r\n return this.getUint8Array(4, function (view) {\r\n view.setFloat32(0, num);\r\n });\r\n }\r\n //得到一个64位浮点型的字节数组,大端字节序\r\n getFloat64Bytes(num) {\r\n return this.getUint8Array(8, function (view) {\r\n view.setFloat64(0, num);\r\n });\r\n }\r\n}\r\n\r\nexport default new Tools();\r\n","export default {\r\n /// \r\n /// 普通文本数据\r\n /// \r\n Text: 0,\r\n /// \r\n /// 字节流\r\n /// \r\n Binary: 1,\r\n /// \r\n /// 请求\r\n /// \r\n Request: 2,\r\n /// \r\n /// 响应\r\n /// \r\n Response: 3,\r\n /// \r\n /// [客户端]心跳检测包\r\n /// \r\n HeartBeat: 4,\r\n};\r\n","import Tools from \"./Tools\";\r\nimport DatapackType from \"./DatapackType\";\r\n\r\nexport default class Message {\r\n constructor(length, datapackType) {\r\n this.Length = length;\r\n this.DatapackType = datapackType;\r\n this.Offset = 0;\r\n this.Stream = new Uint8Array(this.Length);\r\n }\r\n Add(message) {\r\n this.Stream[this.Offset] = message;\r\n this.Offset++;\r\n }\r\n IsComplete() {\r\n var iscomplete = this.Offset >= this.Length;\r\n return iscomplete;\r\n }\r\n GetDatapackType() {\r\n return this.DatapackType;\r\n }\r\n GetString() {\r\n var textDecoder = new TextDecoder(\"utf-8\");\r\n var message = textDecoder.decode(this.Stream);\r\n return message;\r\n }\r\n GetBytes() {\r\n const bytes = Array.prototype.slice.call(this.Stream);\r\n return bytes;\r\n }\r\n BuildMessage(bytes, datapackType) {\r\n if (!bytes) {\r\n return [];\r\n }\r\n var type = this.ConvertDatapackType(datapackType);\r\n var typeByte = Tools.IntToBytes(type, 1);\r\n var lengthByte = Tools.IntToBytes(bytes.length, 4);\r\n var data = [...typeByte, ...lengthByte, ...bytes];\r\n return new Uint8Array(data);\r\n }\r\n ConvertDatapackType(datapackType) {\r\n let type = 0;\r\n if (datapackType == DatapackType.Text) {\r\n type = 0;\r\n } else if (datapackType == DatapackType.HeartCheck) {\r\n type = 1;\r\n } else if (datapackType == DatapackType.Request) {\r\n type = 2;\r\n } else if (datapackType == DatapackType.BytesHeader) {\r\n type = 3;\r\n } else if (datapackType == DatapackType.Bytes) {\r\n type = 4;\r\n }\r\n return type;\r\n }\r\n}\r\n","import MessageQueue from \"./transport/MessageQueue\";\r\nimport Message from \"./transport/Message\";\r\nimport Tools from \"./transport/Tools\";\r\n\r\nexport default class RTCDataChannel {\r\n constructor(connection, dataChannel) {\r\n dataChannel.binaryType = \"arraybuffer\";\r\n this.RTCPeerConnection = connection;\r\n this.DataChannel = dataChannel;\r\n this.MessageQueue = new MessageQueue(this);\r\n this.MessageHeader = [];\r\n this.Requests = [];\r\n this.Message = null;\r\n this.OnMessageReceived = null;\r\n var _this = this;\r\n this.DataChannel.bufferedAmountLowThreshold = 65536;\r\n this.DataChannel.onopen = function () {\r\n _this.RTCPeerConnection.AddDataChannel(_this);\r\n _this.Open();\r\n };\r\n this.DataChannel.onclose = function () {\r\n _this.RTCPeerConnection.RemoveDataChannel(_this);\r\n _this.Close();\r\n };\r\n this.DataChannel.onmessage = (event) => {\r\n _this.SaveMessage(event.data);\r\n };\r\n }\r\n Open() {\r\n this.MessageQueue.Run();\r\n }\r\n Close() {\r\n this.OnMessageReceived = null;\r\n this.MessageHeader = [];\r\n this.MessageQueue.Stop();\r\n }\r\n SaveMessage(bytes) {\r\n var _self = this;\r\n var tools = Tools;\r\n new Uint8Array(bytes).forEach((data) => {\r\n if (_self.Message == null) {\r\n if (_self.MessageHeader.length == 5) {\r\n _self.MessageHeader.shift();\r\n _self.MessageHeader.push(data);\r\n } else {\r\n _self.MessageHeader.push(data);\r\n }\r\n if (_self.MessageHeader.length == 5) {\r\n try {\r\n var type = _self.MessageHeader.shift();\r\n var datapackType = tools.toInt8([type]);\r\n var bytesLength = _self.MessageHeader;\r\n var messageLength = tools.BytesToInt(bytesLength);\r\n if (messageLength > 0) {\r\n _self.Message = new Message(messageLength, datapackType);\r\n }\r\n _self.MessageHeader = [];\r\n } catch (error) {\r\n //\r\n }\r\n }\r\n } else {\r\n if (!_self.Message.IsComplete()) {\r\n _self.Message.Add(data);\r\n }\r\n if (_self.Message.IsComplete()) {\r\n _self.OnMessageReceived(_self, _self.Message.GetBytes(), _self.Message.GetDatapackType());\r\n _self.Message = null;\r\n }\r\n }\r\n });\r\n }\r\n SendAsync(bytes, datapackType) {\r\n var messageBuilder = new Message();\r\n var data = messageBuilder.BuildMessage(bytes, datapackType);\r\n this.MessageQueue.Add(data);\r\n }\r\n Send(bytes, datapackType) {\r\n if (datapackType == undefined) {\r\n // while (this.DataChannel.bufferedAmount >= this.DataChannel.bufferedAmountLowThreshold) {}\r\n this.DataChannel.send(bytes);\r\n } else {\r\n var message = new Message();\r\n var data = message.BuildMessage(bytes, datapackType);\r\n this.Send(data);\r\n }\r\n }\r\n}\r\n","export default {\r\n /// \r\n /// 发起人,调用CreateOffer\r\n /// \r\n Initiator: 0,\r\n /// \r\n /// 响应人\r\n /// \r\n Target: 1,\r\n};\r\n","export default class MediaTrackSourceBase {\r\n _useCount = 0;\r\n TrackSource = null;\r\n Use() {\r\n this._useCount++;\r\n }\r\n Free() {\r\n this._useCount--;\r\n }\r\n Dispose() {\r\n this.Free();\r\n if (this._useCount < 0) {\r\n console.log(\"计数异常\");\r\n }\r\n if (this._useCount <= 0) {\r\n try {\r\n this.TrackSource?.getTracks().forEach((track) => track.stop());\r\n this.TrackSource = null;\r\n } catch (Exception) {}\r\n }\r\n }\r\n}\r\n","import MediaTrackSourceBase from \"./MediaTrackSourceBase\";\r\n\r\nexport default class MediaTrackSourceScreen extends MediaTrackSourceBase {\r\n async GetTrackSource() {\r\n if (this.TrackSource == null) {\r\n const constraints = {\r\n video: true,\r\n };\r\n this.TrackSource = await navigator.mediaDevices.getDisplayMedia(constraints);\r\n }\r\n return this.TrackSource;\r\n }\r\n}\r\n","import MediaTrackSourceBase from \"./MediaTrackSourceBase\";\r\n\r\nexport default class MediaTrackSourceCamera extends MediaTrackSourceBase {\r\n async GetTrackSource() {\r\n if (this.TrackSource == null) {\r\n const constraints = {\r\n video: true,\r\n };\r\n this.TrackSource = await navigator.mediaDevices.getUserMedia(constraints);\r\n }\r\n return this.TrackSource;\r\n }\r\n}\r\n","import MediaTrackSourceBase from \"./MediaTrackSourceBase\";\r\n\r\nexport default class MediaTrackSourceAudio extends MediaTrackSourceBase {\r\n async GetTrackSource() {\r\n if (this.TrackSource == null) {\r\n const constraints = {\r\n audio: true,\r\n };\r\n this.TrackSource = await navigator.mediaDevices.getUserMedia(constraints);\r\n }\r\n return this.TrackSource;\r\n }\r\n}\r\n","import MediaTrackSourceScreen from \"./MediaTrackSourceScreen\";\r\nimport MediaTrackSourceCamera from \"./MediaTrackSourceCamera\";\r\nimport MediaTrackSourceAudio from \"./MediaTrackSourceAudio\";\r\nexport default class MediaTrackSourceCenter {\r\n constructor() {\r\n this.MediaTrackSourceScreen = new MediaTrackSourceScreen();\r\n this.MediaTrackSourceCamera = new MediaTrackSourceCamera();\r\n this.MediaTrackSourceAudio = new MediaTrackSourceAudio();\r\n }\r\n _instance = null;\r\n //媒体源\r\n MediaTrackSourceScreen = null;\r\n MediaTrackSourceCamera = null;\r\n MediaTrackSourceAudio = null;\r\n static GetInstance() {\r\n if (this._instance == null) {\r\n this._instance = new MediaTrackSourceCenter();\r\n }\r\n return this._instance;\r\n }\r\n}\r\n","let isDebug = false;\n\nexport function enable() {\n isDebug = true;\n}\n\nexport function disable() {\n isDebug = false;\n}\n\nexport function debug(msg) {\n isDebug && console.debug(msg);\n}\n\nexport function info(msg) {\n isDebug && console.info(msg);\n}\n\nexport function log(msg) {\n isDebug && console.log(msg);\n}\n\nexport function warn(msg) {\n isDebug && console.warn(msg);\n}\n\nexport function error(msg) {\n isDebug && console.error(msg);\n}\n","import MessageType from \"./models/message/MessageType\";\r\nimport RoomInfo from \"./models/RoomInfo\";\r\nimport ClientInfo from \"./models/ClientInfo\";\r\nimport WebrtcDataType from \"./models/WebrtcDataType\";\r\nimport MessageJoin from \"./models/message/MessageJoin\";\r\nimport MessageLeave from \"./models/message/MessageLeave\";\r\nimport MessageCall from \"./models/message/MessageCall\";\r\nimport MessageTarget from \"./models/message/MessageTarget\";\r\nimport DataType from \"./models/message/DataType\";\r\nimport { RTCPeerConnection as CustomRTCPeerConnection } from \"./RTCPeerConnection\";\r\nimport RTCDataChannel from \"./RTCDataChannel\";\r\nimport ClientType from \"./ClientType\";\r\nimport MediaTrackSourceCenter from \"./mediaTrackSource/MediaTrackSourceCenter\";\r\nimport * as Logger from \"./logger\";\r\nexport default class Webrtc {\r\n constructor(clientInfo) {\r\n this.ClientInfo = clientInfo;\r\n this.PeerConnections = [];\r\n this.OnConnectionStateChange = null;\r\n this.OnRemoteTrack = null;\r\n this.OnDataChannelStateChange = null;\r\n this.OnDataChannelBytes = null;\r\n this.SignalingSendMessage = null;\r\n this.MediaTrackSourceCenter = MediaTrackSourceCenter.GetInstance();\r\n // Logger.enable();\r\n }\r\n async SignalingMessageReceived(data) {\r\n try {\r\n var message = JSON.parse(data);\r\n if (message.Type == MessageType.Join) {\r\n if (message == null || message.Room == null || message.Client == null) {\r\n return;\r\n }\r\n if (message.Room) {\r\n message.Room.__proto__ = new RoomInfo();\r\n }\r\n message.Client.__proto__ = new ClientInfo();\r\n this.HandleJoin.call(this, message.Room, message.Client);\r\n } else if (message.Type == MessageType.Leave) {\r\n if (message == null || message.Room == null || message.Client == null) {\r\n return;\r\n }\r\n if (message.Room) {\r\n message.Room.__proto__ = new RoomInfo();\r\n }\r\n message.Client.__proto__ = new ClientInfo();\r\n this.HandleLeave.call(this, message.Room, message.Client);\r\n } else if (message.Type == MessageType.Call) {\r\n if (message == null || message.From == null || message.To == null) {\r\n return;\r\n }\r\n message.From.__proto__ = new ClientInfo();\r\n message.To.__proto__ = new ClientInfo();\r\n this.HandleCall.call(this, message.From);\r\n } else if (message.Type == MessageType.Target) {\r\n if (message.Room) {\r\n message.Room.__proto__ = new RoomInfo();\r\n }\r\n message.From.__proto__ = new ClientInfo();\r\n message.To.__proto__ = new ClientInfo();\r\n if (message.DataType == DataType.Offer) {\r\n let dataMessage = message.Data;\r\n let peerConnection = null;\r\n console.log(\"offer\");\r\n peerConnection = this.GetPeerConnection(message.Room, message.From);\r\n if (peerConnection) {\r\n console.log(\"close exist\");\r\n peerConnection.Close();\r\n }\r\n try {\r\n peerConnection = await this.CreatePeerConnection(\r\n message.Room,\r\n message.From,\r\n ClientType.Target\r\n );\r\n await peerConnection.PeerConnection.setRemoteDescription(\r\n dataMessage\r\n );\r\n var answer = await peerConnection.PeerConnection.createAnswer();\r\n await peerConnection.PeerConnection.setLocalDescription(answer);\r\n var messageAnswer = new MessageTarget(\r\n peerConnection.Room,\r\n peerConnection.From,\r\n peerConnection.To,\r\n answer,\r\n \"Answer\"\r\n );\r\n this.SignalingSendMessage(JSON.stringify(messageAnswer));\r\n } catch (ex) {\r\n console.error(ex);\r\n if (peerConnection) {\r\n peerConnection.Close();\r\n }\r\n }\r\n } else if (message.DataType == DataType.Answer) {\r\n let dataMessage = message.Data;\r\n let peerConnection = this.GetPeerConnection(\r\n message.Room,\r\n message.From\r\n );\r\n if (peerConnection) {\r\n try {\r\n await peerConnection.PeerConnection.setRemoteDescription(\r\n dataMessage\r\n );\r\n } catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n } else if (message.DataType == DataType.Candidate) {\r\n let dataMessage = message.Data;\r\n let peerConnection = this.GetPeerConnection(\r\n message.Room,\r\n message.From\r\n );\r\n if (peerConnection) {\r\n try {\r\n await peerConnection.PeerConnection.addIceCandidate(dataMessage);\r\n } catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n } else if (message.DataType == DataType.Text) {\r\n let dataMessage = message.Data?.ToString();\r\n }\r\n }\r\n } catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n async HandleCall(client) {\r\n var peerConnection = this.GetPeerConnection(null, client);\r\n if (peerConnection) {\r\n peerConnection.Close();\r\n }\r\n await this.SendOffer(null, client);\r\n }\r\n async HandleJoin(room, client) {\r\n var isSelf = client.Equals(this.ClientInfo);\r\n if (!isSelf) {\r\n var peerConnection = this.GetPeerConnection(room, client);\r\n if (peerConnection) {\r\n peerConnection.Close();\r\n }\r\n await this.SendOffer(room, client);\r\n } else {\r\n this.OnConnectionStateChange?.(room, client, \"open\");\r\n }\r\n }\r\n HandleLeave(room, client) {\r\n var peerConnection = this.GetPeerConnection(room, client);\r\n if (peerConnection) {\r\n this.OnConnectionStateChange?.(room, client, \"closed\");\r\n }\r\n var peerConnections = this.PeerConnections.filter(\r\n (m) => m.CheckRoom(room) && m.To.Equals(client)\r\n );\r\n peerConnections.forEach((peerConnection) => {\r\n peerConnection.Close();\r\n });\r\n }\r\n Join(room) {\r\n var messageJoin = new MessageJoin(room, this.ClientInfo);\r\n this.SignalingSendMessage(JSON.stringify(messageJoin));\r\n }\r\n Leave(room) {\r\n var peerConnections = this.PeerConnections.filter((m) => m.CheckRoom(room));\r\n peerConnections.forEach((peerConnection) => {\r\n peerConnection.Close();\r\n });\r\n var messageLeave = new MessageLeave(room, this.ClientInfo);\r\n this.SignalingSendMessage(JSON.stringify(messageLeave));\r\n }\r\n LeaveAll() {\r\n var peerConnections = this.PeerConnections.filter((m) => m.Room == null);\r\n peerConnections.forEach((peerConnection) => {\r\n this.Leave(peerConnection.Room);\r\n });\r\n }\r\n async SendOffer(room, client) {\r\n var peerConnection = await this.CreatePeerConnection(\r\n room,\r\n client,\r\n ClientType.Initiator\r\n );\r\n try {\r\n var offer = await peerConnection.PeerConnection.createOffer();\r\n await peerConnection.PeerConnection.setLocalDescription(offer);\r\n var messageOffer = new MessageTarget(\r\n peerConnection.Room,\r\n peerConnection.From,\r\n peerConnection.To,\r\n offer,\r\n \"Offer\"\r\n );\r\n this.SignalingSendMessage(JSON.stringify(messageOffer));\r\n } catch {\r\n peerConnection.Close();\r\n }\r\n }\r\n async CreatePeerConnection(room, client, clientType) {\r\n var _this = this;\r\n const configuration = {\r\n iceServers: [\r\n {\r\n urls: \"stun:stun.services.mozilla.com\",\r\n },\r\n {\r\n urls: \"turn:test.workeases.com:3478?transport=udp\",\r\n username: \"whb\",\r\n credential: \"123456\",\r\n },\r\n ],\r\n };\r\n var createDataChannel = false;\r\n var createScreenTransceiver = false;\r\n var createCameraTransceiver = false;\r\n var createAudioTransceiver = false;\r\n var webrtcDataType = this.ClientInfo.WebrtcDataType;\r\n if (room != null && room.ForceDataType) {\r\n webrtcDataType = room.WebrtcDataType;\r\n }\r\n if (\r\n (room == null ||\r\n room.WebrtcDataType.indexOf(WebrtcDataType.Data) != -1) &&\r\n webrtcDataType.indexOf(WebrtcDataType.Data) != -1 &&\r\n client.WebrtcDataType.indexOf(WebrtcDataType.Data) != -1\r\n ) {\r\n if (clientType == ClientType.Initiator) {\r\n createDataChannel = true;\r\n }\r\n }\r\n if (\r\n (room == null ||\r\n room.WebrtcDataType.indexOf(WebrtcDataType.Screen) != -1) &&\r\n (webrtcDataType.indexOf(WebrtcDataType.Screen) != -1 ||\r\n client.WebrtcDataType.indexOf(WebrtcDataType.Screen) != -1)\r\n ) {\r\n if (clientType == ClientType.Initiator) {\r\n createScreenTransceiver = true;\r\n }\r\n }\r\n if (\r\n (room == null ||\r\n room.WebrtcDataType.indexOf(WebrtcDataType.Camera) != -1) &&\r\n (webrtcDataType.indexOf(WebrtcDataType.Camera) != -1 ||\r\n client.WebrtcDataType.indexOf(WebrtcDataType.Camera) != -1)\r\n ) {\r\n if (clientType == ClientType.Initiator) {\r\n createCameraTransceiver = true;\r\n }\r\n }\r\n if (\r\n (room == null ||\r\n room.WebrtcDataType.indexOf(WebrtcDataType.Audio) != -1) &&\r\n (webrtcDataType.indexOf(WebrtcDataType.Audio) != -1 ||\r\n client.WebrtcDataType.indexOf(WebrtcDataType.Audio) != -1)\r\n ) {\r\n if (clientType == ClientType.Initiator) {\r\n createAudioTransceiver = true;\r\n }\r\n }\r\n var connection = new RTCPeerConnection(configuration);\r\n var from = this.ClientInfo;\r\n var peerConnection = new CustomRTCPeerConnection(\r\n connection,\r\n room,\r\n from,\r\n client\r\n );\r\n //create dataChannel\r\n if (createDataChannel) {\r\n var dataChannel = connection.createDataChannel(\"request_channel\");\r\n var rtcDataChannel = new RTCDataChannel(peerConnection, dataChannel);\r\n rtcDataChannel.OnMessageReceived = (sender, bytes, datapackType) => {\r\n _this.OnDataChannelBytes?.(sender, bytes, datapackType);\r\n };\r\n }\r\n //create transceiver,必须先创建transceiver,addtrack会自动使用\r\n if (createScreenTransceiver) {\r\n connection.addTransceiver(\"video\", { direction: \"sendrecv\" });\r\n }\r\n if (createCameraTransceiver) {\r\n connection.addTransceiver(\"video\", { direction: \"sendrecv\" });\r\n }\r\n if (createAudioTransceiver) {\r\n connection.addTransceiver(\"audio\", { direction: \"sendrecv\" });\r\n }\r\n //create track\r\n var trackScreen = null;\r\n var trackCamera = null;\r\n var trackAudio = null;\r\n if (\r\n (room == null ||\r\n room.WebrtcDataType.indexOf(WebrtcDataType.Screen) != -1) &&\r\n webrtcDataType.indexOf(WebrtcDataType.Screen) != -1\r\n ) {\r\n var streamScreen =\r\n await this.MediaTrackSourceCenter.MediaTrackSourceScreen.GetTrackSource();\r\n this.MediaTrackSourceCenter.MediaTrackSourceScreen.Use();\r\n trackScreen = streamScreen.clone();\r\n if (streamScreen.active) {\r\n for (const track of streamScreen.getTracks()) {\r\n connection.addTrack(track);\r\n }\r\n }\r\n }\r\n if (\r\n (room == null ||\r\n room.WebrtcDataType.indexOf(WebrtcDataType.Camera) != -1) &&\r\n webrtcDataType.indexOf(WebrtcDataType.Camera) != -1\r\n ) {\r\n var streamCamera =\r\n await this.MediaTrackSourceCenter.MediaTrackSourceCamera.GetTrackSource();\r\n this.MediaTrackSourceCenter.MediaTrackSourceCamera.Use();\r\n trackCamera = streamCamera.clone();\r\n if (streamCamera.active) {\r\n for (const track of streamCamera.getTracks()) {\r\n connection.addTrack(track);\r\n }\r\n }\r\n }\r\n if (\r\n (room == null ||\r\n room.WebrtcDataType.indexOf(WebrtcDataType.Audio) != -1) &&\r\n webrtcDataType.indexOf(WebrtcDataType.Audio) != -1\r\n ) {\r\n var streamAudio =\r\n await this.MediaTrackSourceCenter.MediaTrackSourceAudio.GetTrackSource();\r\n this.MediaTrackSourceCenter.MediaTrackSourceAudio.Use();\r\n trackAudio = streamAudio.clone();\r\n if (streamAudio.active) {\r\n for (const track of streamAudio.getTracks()) {\r\n connection.addTrack(track);\r\n }\r\n }\r\n }\r\n if (clientType == ClientType.Initiator) {\r\n connection.onnegotiationneeded = async function (event) {\r\n Logger.log(\"onnegotiationneeded\");\r\n try {\r\n var offer = await connection.createOffer();\r\n await connection.setLocalDescription(offer);\r\n var messageOffer = new MessageTarget(\r\n peerConnection.Room,\r\n peerConnection.From,\r\n peerConnection.To,\r\n offer,\r\n \"Offer\"\r\n );\r\n _this.SignalingSendMessage(JSON.stringify(messageOffer));\r\n } catch (err) {\r\n //ignore\r\n }\r\n };\r\n }\r\n connection.onsignalingstatechange = (event) => {\r\n Logger.log(`onsignalingstatechange:${connection.signalingState}`);\r\n };\r\n connection.onicegatheringstatechange = (event) => {\r\n Logger.log(`onicegatheringstatechange:${connection.iceGatheringState}'`);\r\n };\r\n connection.oniceconnectionstatechange = function (event) {\r\n Logger.log(\"oniceconnectionstatechange:\" + connection.iceConnectionState);\r\n switch (connection.iceConnectionState) {\r\n case \"disconnected\":\r\n case \"failed\":\r\n peerConnection.Close();\r\n break;\r\n }\r\n };\r\n connection.onconnectionstatechange = function (event) {\r\n Logger.log(\"onconnectionstatechange:\" + connection.connectionState);\r\n if (connection.connectionState == \"connected\") {\r\n _this.OnConnectionStateChange?.(room, client, \"open\");\r\n }\r\n };\r\n connection.onicecandidate = function (event) {\r\n if (event.candidate) {\r\n var messageCandidate = new MessageTarget(\r\n peerConnection.Room,\r\n peerConnection.From,\r\n peerConnection.To,\r\n event.candidate,\r\n \"Candidate\"\r\n );\r\n _this.SignalingSendMessage(JSON.stringify(messageCandidate));\r\n } else {\r\n // All ICE candidates have been sent\r\n }\r\n };\r\n //bind dataChannel\r\n peerConnection.OnDataChannelStateChange = (rtcDataChannel, state) => {\r\n //LoggerHelper._.Info($\"datachannel: {rtcDataChannel.DataChannel.Label} change state {rtcDataChannel.DataChannel.State}\");\r\n if (state) {\r\n _this.OnDataChannelStateChange?.(rtcDataChannel, \"open\");\r\n } else {\r\n _this.OnDataChannelStateChange?.(rtcDataChannel, \"closed\");\r\n }\r\n };\r\n connection.ondatachannel = function (event) {\r\n Logger.log(\"ondatachannel:\" + event);\r\n var rtcDataChannel = new RTCDataChannel(peerConnection, event.channel);\r\n rtcDataChannel.OnMessageReceived = (sender, bytes, datapackType) => {\r\n _this.OnDataChannelBytes?.(sender, bytes, datapackType);\r\n };\r\n };\r\n //bind track\r\n connection.ontrack = function (event) {\r\n Logger.log(\r\n \"ontrack:\" +\r\n \"kind:\" +\r\n event.track.kind +\r\n \"id:\" +\r\n event.track.id +\r\n \"label:\" +\r\n event.track.label\r\n );\r\n if (_this.OnRemoteTrack) {\r\n _this.OnRemoteTrack(peerConnection, event);\r\n }\r\n };\r\n peerConnection.OnClosed = function (peerConnection) {\r\n peerConnection.ontrack = null;\r\n peerConnection.onremovetrack = null;\r\n peerConnection.onremovestream = null;\r\n peerConnection.onicecandidate = null;\r\n peerConnection.oniceconnectionstatechange = null;\r\n peerConnection.onsignalingstatechange = null;\r\n peerConnection.onicegatheringstatechange = null;\r\n peerConnection.onnegotiationneeded = null;\r\n\r\n if (trackScreen != null) {\r\n trackScreen.getTracks().forEach((track) => track.stop());\r\n _this.MediaTrackSourceCenter.MediaTrackSourceScreen.Dispose();\r\n }\r\n if (trackCamera != null) {\r\n trackCamera.getTracks().forEach((track) => track.stop());\r\n _this.MediaTrackSourceCenter.MediaTrackSourceCamera.Dispose();\r\n }\r\n if (trackAudio != null) {\r\n trackAudio.getTracks().forEach((track) => track.stop());\r\n _this.MediaTrackSourceCenter.MediaTrackSourceAudio.Dispose();\r\n }\r\n var index = _this.PeerConnections.findIndex(\r\n (item) => item == peerConnection\r\n );\r\n if (index != -1) {\r\n _this.PeerConnections.splice(index, 1);\r\n }\r\n _this.OnConnectionStateChange?.(room, client, \"closed\");\r\n };\r\n this.PeerConnections.push(peerConnection);\r\n return peerConnection;\r\n }\r\n GetPeerConnection(room, client) {\r\n var peerConnection = this.PeerConnections.find(\r\n (m) => m.CheckRoom(room) && m.To.Equals(client)\r\n );\r\n return peerConnection;\r\n }\r\n Call(client) {\r\n var messageCall = new MessageCall(this.ClientInfo, client);\r\n this.SignalingSendMessage(JSON.stringify(messageCall));\r\n }\r\n HangUp(client) {\r\n var peerConnections = this.PeerConnections.filter(\r\n (m) => m.Room == null && m.To.Equals(client)\r\n );\r\n peerConnections.forEach((peerConnection) => {\r\n peerConnection.Close();\r\n });\r\n }\r\n HangUpAll() {\r\n var peerConnections = this.PeerConnections.filter((m) => m.Room == null);\r\n peerConnections.forEach((peerConnection) => {\r\n this.HangUp(peerConnection.To);\r\n });\r\n }\r\n Close() {\r\n this.PeerConnections.forEach((peerConnection) => {\r\n peerConnection.Close();\r\n });\r\n this.PeerConnections = [];\r\n }\r\n}\r\n","import Request from \"./internal/Request\";\r\nimport DatapackType from \"../transport/DatapackType\";\r\nexport default class RequestCenter {\r\n constructor(rtcDataChannel) {\r\n this.RTCDataChannel = rtcDataChannel;\r\n this.Requests = [];\r\n }\r\n SendRequest(request) {\r\n if (request.__proto__ != Request.prototype) {\r\n throw new Error(\"只允许Request请求类型\");\r\n }\r\n this.Requests.push(request);\r\n request.OnTimeout = (error) => {\r\n var index = this.Requests.findIndex((item) => item == request);\r\n if (index != -1) {\r\n this.Requests.splice(index, 1);\r\n }\r\n };\r\n request.StartCalcTimeout();\r\n const message = JSON.stringify(request);\r\n var textEncoder = new TextEncoder(\"utf-8\");\r\n this.RTCDataChannel.Send(textEncoder.encode(message), DatapackType.Request);\r\n }\r\n HandleResponse(bytes) {\r\n var textDecoder = new TextDecoder(\"utf-8\");\r\n const message = textDecoder.decode(new Uint8Array(bytes));\r\n const response = JSON.parse(message);\r\n const index = this.Requests.findIndex((item) => item.RequestId == response.RequestId);\r\n if (index != -1) {\r\n var request = this.Requests[index];\r\n this.Requests.splice(index, 1);\r\n request.StopCalcTimeout();\r\n if (request.OnResponse) {\r\n request.OnResponse(response);\r\n }\r\n }\r\n }\r\n HandleText(data) {\r\n var textDecoder = new TextDecoder(\"utf-8\");\r\n const message = textDecoder.decode(new Uint8Array(data));\r\n if (message == \"停止播放\") {\r\n this.RTCPeerConnection.RTCPeerConnection.onStopPlayVideo?.();\r\n }\r\n }\r\n}\r\n","import adapter from \"webrtc-adapter\";\r\nimport Vue from \"vue\";\r\nimport { mapState } from \"vuex\";\r\nimport xSocket from \"@/assets/xSocket\";\r\nimport Webrtc from \"@/webrtc\";\r\nimport RoomInfo from \"@/webrtc/models/RoomInfo\";\r\nimport ClientInfo from \"@/webrtc/models/ClientInfo\";\r\nimport RequestCenter from \"@/webrtc/server/RequestCenter\";\r\nimport DatapackType from \"@/webrtc/transport/DatapackType\";\r\n\r\nconsole.log(adapter.browserDetails.browser);\r\nexport default {\r\n data() {\r\n return {\r\n AllowWebrtc: true,\r\n WebsocketUrl: \"\",\r\n Identity: \"\",\r\n Functions: \"Data\", //\"None,Screen,Camera,Audio,Data\"\r\n Websocket: null,\r\n WebsocketConnected: false,\r\n Webrtc: null,\r\n WebrtcConnectTimeout: 15000,\r\n CallRequestQueues: [],\r\n RequestCenters: [],\r\n NeedDataChannel: false,\r\n };\r\n },\r\n watch: {\r\n teamValue() {\r\n if (this.teamValue && this.user) {\r\n this.Identity = `UserId=${this.user.UsId} Device=Web TeamId=${this.teamValue}`;\r\n this.OpenWebsocket();\r\n this.InitWebrtc();\r\n }\r\n },\r\n user() {\r\n if (this.user && this.teamValue) {\r\n this.Identity = `UserId=${this.user.UsId} Device=Web TeamId=${this.teamValue}`;\r\n this.OpenWebsocket();\r\n this.InitWebrtc();\r\n }\r\n },\r\n },\r\n computed: {\r\n ...mapState([\"user\"]),\r\n cmUrl() {\r\n return process.env.VUE_APP_CMURL;\r\n },\r\n },\r\n methods: {\r\n changeWebrtcDataType(functions) {\r\n this.Webrtc.ClientInfo.WebrtcDataType = functions;\r\n },\r\n /**\r\n * 图片地址\r\n */\r\n handleImageSrc(imageName) {\r\n if (!this.isLocalStorage) {\r\n return this.cmUrl + imageName;\r\n } else {\r\n return \"data:image/jepg;base64,\" + imageName;\r\n }\r\n },\r\n WebsocketOnConnectionStateChange: (websocket, state) => {},\r\n WebrtcOnConnectionStateChange: (room, from, state) => {},\r\n WebrtcOnRemoteTrack: (peerConnection, event) => {},\r\n WebrtcOnDataChannelBytes: (rtcDataChannel, bytes, datapackType) => {},\r\n OpenWebsocket() {\r\n var websocketUrl = this.WebsocketUrl;\r\n if (!websocketUrl) {\r\n websocketUrl = `${Vue.prototype.$socketUrl}/socket/webrtc/ws.ashx`;\r\n }\r\n var _this = this;\r\n if (_this.WebSocket) {\r\n try {\r\n _this.WebSocket.destroy();\r\n } catch (error) {}\r\n }\r\n //是否重连\r\n let url = websocketUrl + `?token=${Vue.prototype.$xStorage.getItem(\"token\")}&identity=${_this.Identity}`;\r\n let isReconnect = false;\r\n if (_this.Identity) {\r\n _this.WebSocket = new xSocket({\r\n isOut: true,\r\n heartMsg: \"HEARTBEAT\",\r\n url: url,\r\n onopen: function (e) {\r\n _this.WebsocketConnected = true;\r\n _this.WebsocketOnConnectionStateChange?.(_this.WebSocket, \"open\");\r\n },\r\n reconnect() {\r\n isReconnect = true;\r\n },\r\n onclose: function (e) {\r\n if (!isReconnect && !_this.isDisposed) {\r\n _this.WebsocketConnected = false;\r\n _this.WebsocketOnConnectionStateChange?.(_this.WebSocket, \"close\");\r\n }\r\n },\r\n onmessage: function (e) {\r\n if (e.data == \"HEARTBEAT\") {\r\n return;\r\n }\r\n if (_this.Webrtc) {\r\n _this.Webrtc.SignalingMessageReceived(e.data);\r\n }\r\n },\r\n });\r\n }\r\n },\r\n CloseWebsocket() {\r\n if (this.WebSocket) {\r\n this.WebSocket.destroy();\r\n }\r\n },\r\n InitWebrtc() {\r\n var _this = this;\r\n if (_this.Webrtc) {\r\n _this.Webrtc.Close();\r\n _this.Webrtc = null;\r\n }\r\n var clientInfo = new ClientInfo(this.Identity);\r\n clientInfo.WebrtcDataType = this.Functions;\r\n this.Webrtc = new Webrtc(clientInfo);\r\n window.webrtc = this.Webrtc;\r\n this.Webrtc.SignalingSendMessage = (data) => {\r\n if (_this.WebSocket) {\r\n _this.WebSocket.webSocketObj.send(data);\r\n } else {\r\n throw new Error(\"信号通道未连接\");\r\n }\r\n };\r\n this.Webrtc.OnConnectionStateChange = (room, from, state) => {\r\n var peerConnection = _this.Webrtc.GetPeerConnection(room, from);\r\n var callRequest = _this.CallRequestQueues.find((m) => m.client.Equals(from));\r\n if (callRequest) {\r\n var removeCallRequest = true;\r\n if (state == \"open\") {\r\n if (!callRequest.needDataChannel) {\r\n callRequest.resolve(peerConnection);\r\n } else {\r\n removeCallRequest = false;\r\n }\r\n } else {\r\n // callRequest.reject(\"断开连接\");\r\n return;\r\n }\r\n if (removeCallRequest) {\r\n callRequest.stopTime = new Date();\r\n clearTimeout(callRequest.timeoutId);\r\n var index = _this.CallRequestQueues.findIndex((item) => item == callRequest);\r\n if (index != -1) {\r\n _this.CallRequestQueues.splice(index, 1);\r\n }\r\n }\r\n }\r\n _this.WebrtcOnConnectionStateChange?.(room, from, state);\r\n };\r\n this.Webrtc.OnRemoteTrack = (peerConnection, event) => {\r\n _this.WebrtcOnRemoteTrack?.(peerConnection, event);\r\n };\r\n this.Webrtc.OnDataChannelStateChange = (rtcDataChannel, state) => {\r\n if (state == \"open\") {\r\n var requestCenter = new RequestCenter(rtcDataChannel);\r\n _this.RequestCenters.push(requestCenter);\r\n var client = rtcDataChannel.RTCPeerConnection.To;\r\n var callRequest = _this.CallRequestQueues.find((m) => m.client.Equals(client));\r\n if (callRequest && callRequest.needDataChannel) {\r\n setTimeout(() => {\r\n callRequest.resolve(rtcDataChannel.RTCPeerConnection);\r\n callRequest.stopTime = new Date();\r\n clearTimeout(callRequest.timeoutId);\r\n let index = _this.CallRequestQueues.findIndex((item) => item == callRequest);\r\n if (index != -1) {\r\n _this.CallRequestQueues.splice(index, 1);\r\n }\r\n }, 1000);\r\n }\r\n } else {\r\n let index = _this.RequestCenters.findIndex((item) => item.RTCDataChannel == rtcDataChannel);\r\n if (index != -1) {\r\n _this.RequestCenters.splice(index, 1);\r\n }\r\n }\r\n };\r\n this.Webrtc.OnDataChannelBytes = (rtcDataChannel, bytes, datapackType) => {\r\n if (datapackType == DatapackType.Response) {\r\n var requestCenter = this.GetRequestCenter(rtcDataChannel.RTCPeerConnection.Room, rtcDataChannel.RTCPeerConnection.To);\r\n if (requestCenter) {\r\n requestCenter.HandleResponse(bytes);\r\n }\r\n }\r\n _this.WebrtcOnDataChannelBytes?.(rtcDataChannel, bytes, datapackType);\r\n };\r\n },\r\n CallRequest(clientIdentity, action) {\r\n var _this = this;\r\n var promise = new Promise((resolve, reject) => {\r\n var client = new ClientInfo(clientIdentity);\r\n // client.WebrtcDataType = \"Screen,Data\";\r\n var peerConnection = _this.Webrtc.GetPeerConnection(null, client);\r\n if (action == \"Join\") {\r\n if (peerConnection && peerConnection.PeerConnection.connectionState == \"connected\") {\r\n resolve(peerConnection);\r\n return;\r\n }\r\n } else {\r\n if (!peerConnection) {\r\n reject(\"连接未建立\");\r\n return;\r\n }\r\n }\r\n if (!_this.WebsocketConnected) {\r\n reject(\"websocket未连接\");\r\n return;\r\n }\r\n var callRequest = this.CallRequestQueues.find((m) => m.client.Equals(client));\r\n if (callRequest) {\r\n reject(\"请勿重复请求\");\r\n return;\r\n }\r\n var timeoutId = setTimeout(() => {\r\n var peerConnection = _this.Webrtc.GetPeerConnection(null, client);\r\n if (peerConnection) {\r\n peerConnection.Close();\r\n }\r\n var index = _this.CallRequestQueues.findIndex((item) => item == callRequest);\r\n if (index != -1) {\r\n _this.CallRequestQueues.splice(index, 1);\r\n }\r\n reject(\"连接超时\");\r\n }, _this.WebrtcConnectTimeout);\r\n callRequest = {\r\n needDataChannel: _this.NeedDataChannel,\r\n startTime: new Date(),\r\n endTime: null,\r\n timeoutId: timeoutId,\r\n client: client,\r\n resolve: resolve,\r\n reject: reject,\r\n };\r\n _this.CallRequestQueues.push(callRequest);\r\n try {\r\n if (action == \"Join\") {\r\n _this.Webrtc.Call(client);\r\n } else {\r\n _this.Webrtc.HangUp(client);\r\n }\r\n } catch (error) {\r\n clearTimeout(callRequest.timeoutId);\r\n var index = _this.CallRequestQueues.findIndex((item) => item == callRequest);\r\n if (index != -1) {\r\n _this.CallRequestQueues.splice(index, 1);\r\n }\r\n reject(\"连接失败\");\r\n }\r\n });\r\n return promise;\r\n },\r\n Call(clientIdentity) {\r\n return this.CallRequest(clientIdentity, \"Join\");\r\n },\r\n HangUp(clientIdentity) {\r\n return this.CallRequest(clientIdentity, \"Leave\");\r\n },\r\n HangUpAll() {\r\n this.Webrtc?.HangUpAll();\r\n },\r\n SendRequest(roomIdentity, clientIdentity, request) {\r\n var room = null;\r\n if (roomIdentity) {\r\n room = new RoomInfo(roomIdentity);\r\n }\r\n var client = null;\r\n if (clientIdentity) {\r\n client = new ClientInfo(clientIdentity);\r\n }\r\n var requestCenter = this.GetRequestCenter(room, client);\r\n if (requestCenter) {\r\n requestCenter.SendRequest(request);\r\n return true;\r\n }\r\n return false;\r\n },\r\n async SendRequestAsync(identity, request) {\r\n await this.Call(identity);\r\n this.SendRequest(null, identity, request);\r\n },\r\n GetRequestCenter(room, client) {\r\n var peerConnection = this.Webrtc.GetPeerConnection(room, client);\r\n if (peerConnection) {\r\n var dataChannels = peerConnection.GetRTCDataChannels();\r\n if (dataChannels.length > 0) {\r\n var dataChannel = dataChannels[0];\r\n var requestCenter = this.RequestCenters.find((m) => m.RTCDataChannel == dataChannel);\r\n return requestCenter;\r\n }\r\n return null;\r\n }\r\n },\r\n CloseWebrtc() {\r\n this.Webrtc?.Close();\r\n },\r\n TracksToMediaStream(tracks) {\r\n var mediaStream = new MediaStream();\r\n tracks.forEach((track) => {\r\n mediaStream.addTrack(track);\r\n });\r\n return mediaStream;\r\n },\r\n },\r\n beforeDestroy() {\r\n this.CloseWebrtc();\r\n this.CloseWebsocket();\r\n },\r\n};\r\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","var global = require('../internals/global');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar TypeError = global.TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aCallable(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(O);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","var lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list) {\n var index = 0;\n var length = lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","'use strict';\n/* eslint-disable es/no-array-prototype-lastindexof -- safe */\nvar apply = require('../internals/function-apply');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : $lastIndexOf;\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","var isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = uid('TYPED_ARRAY_CONSTRUCTOR');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n","var global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n"],"sourceRoot":""}