{"version":3,"file":"9879.chunk.744f95598f5a7d1689e0.js","mappings":"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","sources":["webpack://apexchatwidgets/./node_modules/videojs-vtt.js/lib/vttcue.js","webpack://apexchatwidgets/./node_modules/@videojs/xhr/lib/index.js","webpack://apexchatwidgets/./node_modules/mux.js/lib/utils/numbers.js","webpack://apexchatwidgets/./node_modules/@xmldom/xmldom/lib/sax.js","webpack://apexchatwidgets/./node_modules/@xmldom/xmldom/lib/conventions.js","webpack://apexchatwidgets/./node_modules/@babel/runtime/helpers/extends.js","webpack://apexchatwidgets/./node_modules/@xmldom/xmldom/lib/dom.js","webpack://apexchatwidgets/./node_modules/videojs-vtt.js/lib/browser-index.js","webpack://apexchatwidgets/./node_modules/@xmldom/xmldom/lib/dom-parser.js","webpack://apexchatwidgets/./node_modules/videojs-vtt.js/lib/vttregion.js","webpack://apexchatwidgets/./node_modules/@videojs/xhr/lib/interceptors.js","webpack://apexchatwidgets/./node_modules/videojs-vtt.js/lib/vtt.js","webpack://apexchatwidgets/./node_modules/@xmldom/xmldom/lib/entities.js","webpack://apexchatwidgets/./node_modules/is-function/index.js","webpack://apexchatwidgets/./node_modules/@videojs/xhr/lib/http-handler.js","webpack://apexchatwidgets/./node_modules/@videojs/xhr/lib/retry.js","webpack://apexchatwidgets/./node_modules/mux.js/lib/tools/parse-sidx.js","webpack://apexchatwidgets/./node_modules/@xmldom/xmldom/lib/index.js","webpack://apexchatwidgets/./node_modules/mux.js/lib/utils/clock.js","webpack://apexchatwidgets/./node_modules/global/document.js","webpack://apexchatwidgets/./node_modules/global/window.js","webpack://apexchatwidgets/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://apexchatwidgets/./node_modules/@videojs/vhs-utils/es/resolve-url.js","webpack://apexchatwidgets/./node_modules/@videojs/vhs-utils/es/stream.js","webpack://apexchatwidgets/./node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js","webpack://apexchatwidgets/./node_modules/m3u8-parser/dist/m3u8-parser.es.js","webpack://apexchatwidgets/./node_modules/@videojs/vhs-utils/es/codecs.js","webpack://apexchatwidgets/./node_modules/@videojs/vhs-utils/es/byte-helpers.js","webpack://apexchatwidgets/./node_modules/@videojs/vhs-utils/es/media-types.js","webpack://apexchatwidgets/./node_modules/mpd-parser/dist/mpd-parser.es.js","webpack://apexchatwidgets/./node_modules/@videojs/vhs-utils/es/media-groups.js","webpack://apexchatwidgets/./node_modules/@videojs/vhs-utils/es/mp4-helpers.js","webpack://apexchatwidgets/./node_modules/@videojs/vhs-utils/es/id3-helpers.js","webpack://apexchatwidgets/./node_modules/@videojs/vhs-utils/es/opus-helpers.js","webpack://apexchatwidgets/./node_modules/@videojs/vhs-utils/es/ebml-helpers.js","webpack://apexchatwidgets/./node_modules/@videojs/vhs-utils/es/nal-helpers.js","webpack://apexchatwidgets/./node_modules/@videojs/vhs-utils/es/containers.js","webpack://apexchatwidgets/./node_modules/video.js/dist/video.es.js"],"sourcesContent":["/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar autoKeyword = \"auto\";\nvar directionSetting = {\n \"\": 1,\n \"lr\": 1,\n \"rl\": 1\n};\nvar alignSetting = {\n \"start\": 1,\n \"center\": 1,\n \"end\": 1,\n \"left\": 1,\n \"right\": 1,\n \"auto\": 1,\n \"line-left\": 1,\n \"line-right\": 1\n};\n\nfunction findDirectionSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var dir = directionSetting[value.toLowerCase()];\n return dir ? value.toLowerCase() : false;\n}\n\nfunction findAlignSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var align = alignSetting[value.toLowerCase()];\n return align ? value.toLowerCase() : false;\n}\n\nfunction VTTCue(startTime, endTime, text) {\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n this.hasBeenReset = false;\n\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n var _id = \"\";\n var _pauseOnExit = false;\n var _startTime = startTime;\n var _endTime = endTime;\n var _text = text;\n var _region = null;\n var _vertical = \"\";\n var _snapToLines = true;\n var _line = \"auto\";\n var _lineAlign = \"start\";\n var _position = \"auto\";\n var _positionAlign = \"auto\";\n var _size = 100;\n var _align = \"center\";\n\n Object.defineProperties(this, {\n \"id\": {\n enumerable: true,\n get: function() {\n return _id;\n },\n set: function(value) {\n _id = \"\" + value;\n }\n },\n\n \"pauseOnExit\": {\n enumerable: true,\n get: function() {\n return _pauseOnExit;\n },\n set: function(value) {\n _pauseOnExit = !!value;\n }\n },\n\n \"startTime\": {\n enumerable: true,\n get: function() {\n return _startTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Start time must be set to a number.\");\n }\n _startTime = value;\n this.hasBeenReset = true;\n }\n },\n\n \"endTime\": {\n enumerable: true,\n get: function() {\n return _endTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"End time must be set to a number.\");\n }\n _endTime = value;\n this.hasBeenReset = true;\n }\n },\n\n \"text\": {\n enumerable: true,\n get: function() {\n return _text;\n },\n set: function(value) {\n _text = \"\" + value;\n this.hasBeenReset = true;\n }\n },\n\n \"region\": {\n enumerable: true,\n get: function() {\n return _region;\n },\n set: function(value) {\n _region = value;\n this.hasBeenReset = true;\n }\n },\n\n \"vertical\": {\n enumerable: true,\n get: function() {\n return _vertical;\n },\n set: function(value) {\n var setting = findDirectionSetting(value);\n // Have to check for false because the setting an be an empty string.\n if (setting === false) {\n throw new SyntaxError(\"Vertical: an invalid or illegal direction string was specified.\");\n }\n _vertical = setting;\n this.hasBeenReset = true;\n }\n },\n\n \"snapToLines\": {\n enumerable: true,\n get: function() {\n return _snapToLines;\n },\n set: function(value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n },\n\n \"line\": {\n enumerable: true,\n get: function() {\n return _line;\n },\n set: function(value) {\n if (typeof value !== \"number\" && value !== autoKeyword) {\n throw new SyntaxError(\"Line: an invalid number or illegal string was specified.\");\n }\n _line = value;\n this.hasBeenReset = true;\n }\n },\n\n \"lineAlign\": {\n enumerable: true,\n get: function() {\n return _lineAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n console.warn(\"lineAlign: an invalid or illegal string was specified.\");\n } else {\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n }\n },\n\n \"position\": {\n enumerable: true,\n get: function() {\n return _position;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Position must be between 0 and 100.\");\n }\n _position = value;\n this.hasBeenReset = true;\n }\n },\n\n \"positionAlign\": {\n enumerable: true,\n get: function() {\n return _positionAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n console.warn(\"positionAlign: an invalid or illegal string was specified.\");\n } else {\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n }\n },\n\n \"size\": {\n enumerable: true,\n get: function() {\n return _size;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Size must be between 0 and 100.\");\n }\n _size = value;\n this.hasBeenReset = true;\n }\n },\n\n \"align\": {\n enumerable: true,\n get: function() {\n return _align;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"align: an invalid or illegal alignment string was specified.\");\n }\n _align = setting;\n this.hasBeenReset = true;\n }\n }\n });\n\n /**\n * Other spec defined properties\n */\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n this.displayState = undefined;\n}\n\n/**\n * VTTCue methods\n */\n\nVTTCue.prototype.getCueAsHTML = function() {\n // Assume WebVTT.convertCueToDOMTree is on the global.\n return WebVTT.convertCueToDOMTree(window, this.text);\n};\n\nmodule.exports = VTTCue;\n","\"use strict\";\n\nvar window = require(\"global/window\");\n\nvar _extends = require(\"@babel/runtime/helpers/extends\");\n\nvar isFunction = require('is-function');\n\nvar InterceptorsStorage = require('./interceptors.js');\n\nvar RetryManager = require(\"./retry.js\");\n\ncreateXHR.httpHandler = require('./http-handler.js');\ncreateXHR.requestInterceptorsStorage = new InterceptorsStorage();\ncreateXHR.responseInterceptorsStorage = new InterceptorsStorage();\ncreateXHR.retryManager = new RetryManager();\n/**\n * @license\n * slighly modified parse-headers 2.0.2 \n * Copyright (c) 2014 David Björklund\n * Available under the MIT license\n * \n */\n\nvar parseHeaders = function parseHeaders(headers) {\n var result = {};\n\n if (!headers) {\n return result;\n }\n\n headers.trim().split('\\n').forEach(function (row) {\n var index = row.indexOf(':');\n var key = row.slice(0, index).trim().toLowerCase();\n var value = row.slice(index + 1).trim();\n\n if (typeof result[key] === 'undefined') {\n result[key] = value;\n } else if (Array.isArray(result[key])) {\n result[key].push(value);\n } else {\n result[key] = [result[key], value];\n }\n });\n return result;\n};\n\nmodule.exports = createXHR; // Allow use of default import syntax in TypeScript\n\nmodule.exports.default = createXHR;\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop;\ncreateXHR.XDomainRequest = \"withCredentials\" in new createXHR.XMLHttpRequest() ? createXHR.XMLHttpRequest : window.XDomainRequest;\nforEachArray([\"get\", \"put\", \"post\", \"patch\", \"head\", \"delete\"], function (method) {\n createXHR[method === \"delete\" ? \"del\" : method] = function (uri, options, callback) {\n options = initParams(uri, options, callback);\n options.method = method.toUpperCase();\n return _createXHR(options);\n };\n});\n\nfunction forEachArray(array, iterator) {\n for (var i = 0; i < array.length; i++) {\n iterator(array[i]);\n }\n}\n\nfunction isEmpty(obj) {\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) return false;\n }\n\n return true;\n}\n\nfunction initParams(uri, options, callback) {\n var params = uri;\n\n if (isFunction(options)) {\n callback = options;\n\n if (typeof uri === \"string\") {\n params = {\n uri: uri\n };\n }\n } else {\n params = _extends({}, options, {\n uri: uri\n });\n }\n\n params.callback = callback;\n return params;\n}\n\nfunction createXHR(uri, options, callback) {\n options = initParams(uri, options, callback);\n return _createXHR(options);\n}\n\nfunction _createXHR(options) {\n if (typeof options.callback === \"undefined\") {\n throw new Error(\"callback argument missing\");\n } // call all registered request interceptors for a given request type:\n\n\n if (options.requestType && createXHR.requestInterceptorsStorage.getIsEnabled()) {\n var requestInterceptorPayload = {\n uri: options.uri || options.url,\n headers: options.headers || {},\n body: options.body,\n metadata: options.metadata || {},\n retry: options.retry,\n timeout: options.timeout\n };\n var updatedPayload = createXHR.requestInterceptorsStorage.execute(options.requestType, requestInterceptorPayload);\n options.uri = updatedPayload.uri;\n options.headers = updatedPayload.headers;\n options.body = updatedPayload.body;\n options.metadata = updatedPayload.metadata;\n options.retry = updatedPayload.retry;\n options.timeout = updatedPayload.timeout;\n }\n\n var called = false;\n\n var callback = function cbOnce(err, response, body) {\n if (!called) {\n called = true;\n options.callback(err, response, body);\n }\n };\n\n function readystatechange() {\n // do not call load 2 times when response interceptors are enabled\n // why do we even need this 2nd load?\n if (xhr.readyState === 4 && !createXHR.responseInterceptorsStorage.getIsEnabled()) {\n setTimeout(loadFunc, 0);\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined;\n\n if (xhr.response) {\n body = xhr.response;\n } else {\n body = xhr.responseText || getXml(xhr);\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body);\n } catch (e) {}\n }\n\n return body;\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer);\n clearTimeout(options.retryTimeout);\n\n if (!(evt instanceof Error)) {\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\"));\n }\n\n evt.statusCode = 0; // we would like to retry on error:\n\n if (!aborted && createXHR.retryManager.getIsEnabled() && options.retry && options.retry.shouldRetry()) {\n options.retryTimeout = setTimeout(function () {\n options.retry.moveToNextAttempt(); // we want to re-use the same options and the same xhr object:\n\n options.xhr = xhr;\n\n _createXHR(options);\n }, options.retry.getCurrentFuzzedDelay());\n return;\n } // call all registered response interceptors for a given request type:\n\n\n if (options.requestType && createXHR.responseInterceptorsStorage.getIsEnabled()) {\n var responseInterceptorPayload = {\n headers: failureResponse.headers || {},\n body: failureResponse.body,\n responseUrl: xhr.responseURL,\n responseType: xhr.responseType\n };\n\n var _updatedPayload = createXHR.responseInterceptorsStorage.execute(options.requestType, responseInterceptorPayload);\n\n failureResponse.body = _updatedPayload.body;\n failureResponse.headers = _updatedPayload.headers;\n }\n\n return callback(evt, failureResponse);\n } // will load the data & process the response in a special response object\n\n\n function loadFunc() {\n if (aborted) return;\n var status;\n clearTimeout(timeoutTimer);\n clearTimeout(options.retryTimeout);\n\n if (options.useXDR && xhr.status === undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200;\n } else {\n status = xhr.status === 1223 ? 204 : xhr.status;\n }\n\n var response = failureResponse;\n var err = null;\n\n if (status !== 0) {\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n };\n\n if (xhr.getAllResponseHeaders) {\n //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders());\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\");\n } // call all registered response interceptors for a given request type:\n\n\n if (options.requestType && createXHR.responseInterceptorsStorage.getIsEnabled()) {\n var responseInterceptorPayload = {\n headers: response.headers || {},\n body: response.body,\n responseUrl: xhr.responseURL,\n responseType: xhr.responseType\n };\n\n var _updatedPayload2 = createXHR.responseInterceptorsStorage.execute(options.requestType, responseInterceptorPayload);\n\n response.body = _updatedPayload2.body;\n response.headers = _updatedPayload2.headers;\n }\n\n return callback(err, response, response.body);\n }\n\n var xhr = options.xhr || null;\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest();\n } else {\n xhr = new createXHR.XMLHttpRequest();\n }\n }\n\n var key;\n var aborted;\n var uri = xhr.url = options.uri || options.url;\n var method = xhr.method = options.method || \"GET\";\n var body = options.body || options.data;\n var headers = xhr.headers = options.headers || {};\n var sync = !!options.sync;\n var isJson = false;\n var timeoutTimer;\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n };\n\n if (\"json\" in options && options.json !== false) {\n isJson = true;\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\"); //Don't override existing accept header declared by user\n\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\"); //Don't override existing accept header declared by user\n\n body = JSON.stringify(options.json === true ? body : options.json);\n }\n }\n\n xhr.onreadystatechange = readystatechange;\n xhr.onload = loadFunc;\n xhr.onerror = errorFunc; // IE9 must have onprogress be set to a unique function.\n\n xhr.onprogress = function () {// IE must die\n };\n\n xhr.onabort = function () {\n aborted = true;\n clearTimeout(options.retryTimeout);\n };\n\n xhr.ontimeout = errorFunc;\n xhr.open(method, uri, !sync, options.username, options.password); //has to be after open\n\n if (!sync) {\n xhr.withCredentials = !!options.withCredentials;\n } // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n\n\n if (!sync && options.timeout > 0) {\n timeoutTimer = setTimeout(function () {\n if (aborted) return;\n aborted = true; //IE9 may still call readystatechange\n\n xhr.abort(\"timeout\");\n var e = new Error(\"XMLHttpRequest timeout\");\n e.code = \"ETIMEDOUT\";\n errorFunc(e);\n }, options.timeout);\n }\n\n if (xhr.setRequestHeader) {\n for (key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\");\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType;\n }\n\n if (\"beforeSend\" in options && typeof options.beforeSend === \"function\") {\n options.beforeSend(xhr);\n } // Microsoft Edge browser sends \"undefined\" when send is called with undefined value.\n // XMLHttpRequest spec says to pass null as body to indicate no body\n // See https://github.com/naugtur/xhr/issues/100.\n\n\n xhr.send(body || null);\n return xhr;\n}\n\nfunction getXml(xhr) {\n // xhr.responseXML will throw Exception \"InvalidStateError\" or \"DOMException\"\n // See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML.\n try {\n if (xhr.responseType === \"document\") {\n return xhr.responseXML;\n }\n\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \"parsererror\";\n\n if (xhr.responseType === \"\" && !firefoxBugTakenEffect) {\n return xhr.responseXML;\n }\n } catch (e) {}\n\n return null;\n}\n\nfunction noop() {}","var MAX_UINT32 = Math.pow(2, 32);\n\nvar getUint64 = function(uint8) {\n var dv = new DataView(uint8.buffer, uint8.byteOffset, uint8.byteLength);\n var value;\n\n if (dv.getBigUint64) {\n value = dv.getBigUint64(0);\n\n if (value < Number.MAX_SAFE_INTEGER) {\n return Number(value);\n }\n\n return value;\n }\n\n return (dv.getUint32(0) * MAX_UINT32) + dv.getUint32(4);\n};\n\nmodule.exports = {\n getUint64: getUint64,\n MAX_UINT32: MAX_UINT32\n};\n","var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring\nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif (Object.hasOwnProperty.call(entityMap, k)) {\n\t\t\treturn entityMap[k];\n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退,有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(\n\t\t\tqname,\n\t\t\t// @see https://www.w3.org/TR/xml/#AVNormalize\n\t\t\t// since the xmldom sax parser does not \"interpret\" DTD the following is not implemented:\n\t\t\t// - recursive replacement of (DTD) entity references\n\t\t\t// - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA\n\t\t\tvalue.replace(/[\\t\\n\\r]/g, ' ').replace(/&#?\\w+;/g, entityReplacer),\n\t\t\tstartIndex\n\t\t)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tel.closed = true;\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start, p);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value)\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('')\n\t\tif(pos',start+4);\n\t\t\t//append comment source.substring(4,end)//\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i XML parsed entities are often stored in computer files which,\n * > for editing convenience, are organized into lines.\n * > These lines are typically separated by some combination\n * > of the characters CARRIAGE RETURN (#xD) and LINE FEED (#xA).\n * >\n * > To simplify the tasks of applications, the XML processor must behave\n * > as if it normalized all line breaks in external parsed entities (including the document entity)\n * > on input, before parsing, by translating all of the following to a single #xA character:\n * >\n * > 1. the two-character sequence #xD #xA\n * > 2. the two-character sequence #xD #x85\n * > 3. the single character #x85\n * > 4. the single character #x2028\n * > 5. any #xD character that is not immediately followed by #xA or #x85.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizeLineEndings(input) {\n\treturn input\n\t\t.replace(/\\r[\\n\\u0085]/g, '\\n')\n\t\t.replace(/[\\r\\u0085\\u2028]/g, '\\n')\n}\n\n/**\n * @typedef Locator\n * @property {number} [columnNumber]\n * @property {number} [lineNumber]\n */\n\n/**\n * @typedef DOMParserOptions\n * @property {DOMHandler} [domBuilder]\n * @property {Function} [errorHandler]\n * @property {(string) => string} [normalizeLineEndings] used to replace line endings before parsing\n * \t\t\t\t\t\tdefaults to `normalizeLineEndings`\n * @property {Locator} [locator]\n * @property {Record} [xmlns]\n *\n * @see normalizeLineEndings\n */\n\n/**\n * The DOMParser interface provides the ability to parse XML or HTML source code\n * from a string into a DOM `Document`.\n *\n * _xmldom is different from the spec in that it allows an `options` parameter,\n * to override the default behavior._\n *\n * @param {DOMParserOptions} [options]\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsing-and-serialization\n */\nfunction DOMParser(options){\n\tthis.options = options ||{locator:{}};\n}\n\nDOMParser.prototype.parseFromString = function(source,mimeType){\n\tvar options = this.options;\n\tvar sax = new XMLReader();\n\tvar domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler\n\tvar errorHandler = options.errorHandler;\n\tvar locator = options.locator;\n\tvar defaultNSMap = options.xmlns||{};\n\tvar isHTML = /\\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1;\n \tvar entityMap = isHTML ? entities.HTML_ENTITIES : entities.XML_ENTITIES;\n\tif(locator){\n\t\tdomBuilder.setDocumentLocator(locator)\n\t}\n\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\n\tsax.domBuilder = options.domBuilder || domBuilder;\n\tif(isHTML){\n\t\tdefaultNSMap[''] = NAMESPACE.HTML;\n\t}\n\tdefaultNSMap.xml = defaultNSMap.xml || NAMESPACE.XML;\n\tvar normalize = options.normalizeLineEndings || normalizeLineEndings;\n\tif (source && typeof source === 'string') {\n\t\tsax.parse(\n\t\t\tnormalize(source),\n\t\t\tdefaultNSMap,\n\t\t\tentityMap\n\t\t)\n\t} else {\n\t\tsax.errorHandler.error('invalid doc source')\n\t}\n\treturn domBuilder.doc;\n}\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\n\tif(!errorImpl){\n\t\tif(domBuilder instanceof DOMHandler){\n\t\t\treturn domBuilder;\n\t\t}\n\t\terrorImpl = domBuilder ;\n\t}\n\tvar errorHandler = {}\n\tvar isCallback = errorImpl instanceof Function;\n\tlocator = locator||{}\n\tfunction build(key){\n\t\tvar fn = errorImpl[key];\n\t\tif(!fn && isCallback){\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\n\t\t}\n\t\terrorHandler[key] = fn && function(msg){\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\n\t\t}||function(){};\n\t}\n\tbuild('warning');\n\tbuild('error');\n\tbuild('fatalError');\n\treturn errorHandler;\n}\n\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\n/**\n * +ContentHandler+ErrorHandler\n * +LexicalHandler+EntityResolver2\n * -DeclHandler-DTDHandler\n *\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\n */\nfunction DOMHandler() {\n this.cdata = false;\n}\nfunction position(locator,node){\n\tnode.lineNumber = locator.lineNumber;\n\tnode.columnNumber = locator.columnNumber;\n}\n/**\n * @see org.xml.sax.ContentHandler#startDocument\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\n */\nDOMHandler.prototype = {\n\tstartDocument : function() {\n \tthis.doc = new DOMImplementation().createDocument(null, null, null);\n \tif (this.locator) {\n \tthis.doc.documentURI = this.locator.systemId;\n \t}\n\t},\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\n\t\tvar doc = this.doc;\n\t var el = doc.createElementNS(namespaceURI, qName||localName);\n\t var len = attrs.length;\n\t appendElement(this, el);\n\t this.currentElement = el;\n\n\t\tthis.locator && position(this.locator,el)\n\t for (var i = 0 ; i < len; i++) {\n\t var namespaceURI = attrs.getURI(i);\n\t var value = attrs.getValue(i);\n\t var qName = attrs.getQName(i);\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\n\t\t\tattr.value = attr.nodeValue = value;\n\t\t\tel.setAttributeNode(attr)\n\t }\n\t},\n\tendElement:function(namespaceURI, localName, qName) {\n\t\tvar current = this.currentElement\n\t\tvar tagName = current.tagName;\n\t\tthis.currentElement = current.parentNode;\n\t},\n\tstartPrefixMapping:function(prefix, uri) {\n\t},\n\tendPrefixMapping:function(prefix) {\n\t},\n\tprocessingInstruction:function(target, data) {\n\t var ins = this.doc.createProcessingInstruction(target, data);\n\t this.locator && position(this.locator,ins)\n\t appendElement(this, ins);\n\t},\n\tignorableWhitespace:function(ch, start, length) {\n\t},\n\tcharacters:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t\t//console.log(chars)\n\t\tif(chars){\n\t\t\tif (this.cdata) {\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\n\t\t\t} else {\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\n\t\t\t}\n\t\t\tif(this.currentElement){\n\t\t\t\tthis.currentElement.appendChild(charNode);\n\t\t\t}else if(/^\\s*$/.test(chars)){\n\t\t\t\tthis.doc.appendChild(charNode);\n\t\t\t\t//process xml\n\t\t\t}\n\t\t\tthis.locator && position(this.locator,charNode)\n\t\t}\n\t},\n\tskippedEntity:function(name) {\n\t},\n\tendDocument:function() {\n\t\tthis.doc.normalize();\n\t},\n\tsetDocumentLocator:function (locator) {\n\t if(this.locator = locator){// && !('lineNumber' in locator)){\n\t \tlocator.lineNumber = 0;\n\t }\n\t},\n\t//LexicalHandler\n\tcomment:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t var comm = this.doc.createComment(chars);\n\t this.locator && position(this.locator,comm)\n\t appendElement(this, comm);\n\t},\n\n\tstartCDATA:function() {\n\t //used in characters() methods\n\t this.cdata = true;\n\t},\n\tendCDATA:function() {\n\t this.cdata = false;\n\t},\n\n\tstartDTD:function(name, publicId, systemId) {\n\t\tvar impl = this.doc.implementation;\n\t if (impl && impl.createDocumentType) {\n\t var dt = impl.createDocumentType(name, publicId, systemId);\n\t this.locator && position(this.locator,dt)\n\t appendElement(this, dt);\n\t\t\t\t\tthis.doc.doctype = dt;\n\t }\n\t},\n\t/**\n\t * @see org.xml.sax.ErrorHandler\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\n\t */\n\twarning:function(error) {\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\n\t},\n\terror:function(error) {\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\n\t},\n\tfatalError:function(error) {\n\t\tthrow new ParseError(error, this.locator);\n\t}\n}\nfunction _locator(l){\n\tif(l){\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\n\t}\n}\nfunction _toString(chars,start,length){\n\tif(typeof chars == 'string'){\n\t\treturn chars.substr(start,length)\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\n\t\tif(chars.length >= start+length || start){\n\t\t\treturn new java.lang.String(chars,start,length)+'';\n\t\t}\n\t\treturn chars;\n\t}\n}\n\n/*\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\n * used method of org.xml.sax.ext.LexicalHandler:\n * #comment(chars, start, length)\n * #startCDATA()\n * #endCDATA()\n * #startDTD(name, publicId, systemId)\n *\n *\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\n * #endDTD()\n * #startEntity(name)\n * #endEntity(name)\n *\n *\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\n * IGNORED method of org.xml.sax.ext.DeclHandler\n * \t#attributeDecl(eName, aName, type, mode, value)\n * #elementDecl(name, model)\n * #externalEntityDecl(name, publicId, systemId)\n * #internalEntityDecl(name, value)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\n * IGNORED method of org.xml.sax.EntityResolver2\n * #resolveEntity(String name,String publicId,String baseURI,String systemId)\n * #resolveEntity(publicId, systemId)\n * #getExternalSubset(name, baseURI)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\n * IGNORED method of org.xml.sax.DTDHandler\n * #notationDecl(name, publicId, systemId) {};\n * #unparsedEntityDecl(name, publicId, systemId, notationName) {};\n */\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\n\tDOMHandler.prototype[key] = function(){return null}\n})\n\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\nfunction appendElement (hander,node) {\n if (!hander.currentElement) {\n hander.doc.appendChild(node);\n } else {\n hander.currentElement.appendChild(node);\n }\n}//appendChild and setAttributeNS are preformance key\n\nexports.__DOMHandler = DOMHandler;\nexports.normalizeLineEndings = normalizeLineEndings;\nexports.DOMParser = DOMParser;\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar scrollSetting = {\n \"\": true,\n \"up\": true\n};\n\nfunction findScrollSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var scroll = scrollSetting[value.toLowerCase()];\n return scroll ? value.toLowerCase() : false;\n}\n\nfunction isValidPercentValue(value) {\n return typeof value === \"number\" && (value >= 0 && value <= 100);\n}\n\n// VTTRegion shim http://dev.w3.org/html5/webvtt/#vttregion-interface\nfunction VTTRegion() {\n var _width = 100;\n var _lines = 3;\n var _regionAnchorX = 0;\n var _regionAnchorY = 100;\n var _viewportAnchorX = 0;\n var _viewportAnchorY = 100;\n var _scroll = \"\";\n\n Object.defineProperties(this, {\n \"width\": {\n enumerable: true,\n get: function() {\n return _width;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"Width must be between 0 and 100.\");\n }\n _width = value;\n }\n },\n \"lines\": {\n enumerable: true,\n get: function() {\n return _lines;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Lines must be set to a number.\");\n }\n _lines = value;\n }\n },\n \"regionAnchorY\": {\n enumerable: true,\n get: function() {\n return _regionAnchorY;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"RegionAnchorX must be between 0 and 100.\");\n }\n _regionAnchorY = value;\n }\n },\n \"regionAnchorX\": {\n enumerable: true,\n get: function() {\n return _regionAnchorX;\n },\n set: function(value) {\n if(!isValidPercentValue(value)) {\n throw new Error(\"RegionAnchorY must be between 0 and 100.\");\n }\n _regionAnchorX = value;\n }\n },\n \"viewportAnchorY\": {\n enumerable: true,\n get: function() {\n return _viewportAnchorY;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"ViewportAnchorY must be between 0 and 100.\");\n }\n _viewportAnchorY = value;\n }\n },\n \"viewportAnchorX\": {\n enumerable: true,\n get: function() {\n return _viewportAnchorX;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"ViewportAnchorX must be between 0 and 100.\");\n }\n _viewportAnchorX = value;\n }\n },\n \"scroll\": {\n enumerable: true,\n get: function() {\n return _scroll;\n },\n set: function(value) {\n var setting = findScrollSetting(value);\n // Have to check for false as an empty string is a legal value.\n if (setting === false) {\n console.warn(\"Scroll: an invalid or illegal string was specified.\");\n } else {\n _scroll = setting;\n }\n }\n }\n });\n}\n\nmodule.exports = VTTRegion;\n","\"use strict\";\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar InterceptorsStorage = /*#__PURE__*/function () {\n function InterceptorsStorage() {\n this.typeToInterceptorsMap_ = new Map();\n this.enabled_ = false;\n }\n\n var _proto = InterceptorsStorage.prototype;\n\n _proto.getIsEnabled = function getIsEnabled() {\n return this.enabled_;\n };\n\n _proto.enable = function enable() {\n this.enabled_ = true;\n };\n\n _proto.disable = function disable() {\n this.enabled_ = false;\n };\n\n _proto.reset = function reset() {\n this.typeToInterceptorsMap_ = new Map();\n this.enabled_ = false;\n };\n\n _proto.addInterceptor = function addInterceptor(type, interceptor) {\n if (!this.typeToInterceptorsMap_.has(type)) {\n this.typeToInterceptorsMap_.set(type, new Set());\n }\n\n var interceptorsSet = this.typeToInterceptorsMap_.get(type);\n\n if (interceptorsSet.has(interceptor)) {\n // already have this interceptor\n return false;\n }\n\n interceptorsSet.add(interceptor);\n return true;\n };\n\n _proto.removeInterceptor = function removeInterceptor(type, interceptor) {\n var interceptorsSet = this.typeToInterceptorsMap_.get(type);\n\n if (interceptorsSet && interceptorsSet.has(interceptor)) {\n interceptorsSet.delete(interceptor);\n return true;\n }\n\n return false;\n };\n\n _proto.clearInterceptorsByType = function clearInterceptorsByType(type) {\n var interceptorsSet = this.typeToInterceptorsMap_.get(type);\n\n if (!interceptorsSet) {\n return false;\n }\n\n this.typeToInterceptorsMap_.delete(type);\n this.typeToInterceptorsMap_.set(type, new Set());\n return true;\n };\n\n _proto.clear = function clear() {\n if (!this.typeToInterceptorsMap_.size) {\n return false;\n }\n\n this.typeToInterceptorsMap_ = new Map();\n return true;\n };\n\n _proto.getForType = function getForType(type) {\n return this.typeToInterceptorsMap_.get(type) || new Set();\n };\n\n _proto.execute = function execute(type, payload) {\n var interceptors = this.getForType(type);\n\n for (var _iterator = _createForOfIteratorHelperLoose(interceptors), _step; !(_step = _iterator()).done;) {\n var interceptor = _step.value;\n\n try {\n payload = interceptor(payload);\n } catch (e) {//ignore\n }\n }\n\n return payload;\n };\n\n return InterceptorsStorage;\n}();\n\nmodule.exports = InterceptorsStorage;","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\nvar document = require('global/document');\n\nvar _objCreate = Object.create || (function() {\n function F() {}\n return function(o) {\n if (arguments.length !== 1) {\n throw new Error('Object.create shim only accepts one parameter.');\n }\n F.prototype = o;\n return new F();\n };\n})();\n\n// Creates a new ParserError object from an errorData object. The errorData\n// object should have default code and message properties. The default message\n// property can be overriden by passing in a message parameter.\n// See ParsingError.Errors below for acceptable errors.\nfunction ParsingError(errorData, message) {\n this.name = \"ParsingError\";\n this.code = errorData.code;\n this.message = message || errorData.message;\n}\nParsingError.prototype = _objCreate(Error.prototype);\nParsingError.prototype.constructor = ParsingError;\n\n// ParsingError metadata for acceptable ParsingErrors.\nParsingError.Errors = {\n BadSignature: {\n code: 0,\n message: \"Malformed WebVTT signature.\"\n },\n BadTimeStamp: {\n code: 1,\n message: \"Malformed time stamp.\"\n }\n};\n\n// Try to parse input as a time stamp.\nfunction parseTimeStamp(input) {\n\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + (f | 0) / 1000;\n }\n\n var m = input.match(/^(\\d+):(\\d{1,2})(:\\d{1,2})?\\.(\\d{3})/);\n if (!m) {\n return null;\n }\n\n if (m[3]) {\n // Timestamp takes the form of [hours]:[minutes]:[seconds].[milliseconds]\n return computeSeconds(m[1], m[2], m[3].replace(\":\", \"\"), m[4]);\n } else if (m[1] > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[1], m[2], 0, m[4]);\n } else {\n // Timestamp takes the form of [minutes]:[seconds].[milliseconds]\n return computeSeconds(0, m[1], m[2], m[4]);\n }\n}\n\n// A settings object holds key/value pairs and will ignore anything but the first\n// assignment to a specific key.\nfunction Settings() {\n this.values = _objCreate(null);\n}\n\nSettings.prototype = {\n // Only accept the first assignment to any key.\n set: function(k, v) {\n if (!this.get(k) && v !== \"\") {\n this.values[k] = v;\n }\n },\n // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n get: function(k, dflt, defaultKey) {\n if (defaultKey) {\n return this.has(k) ? this.values[k] : dflt[defaultKey];\n }\n return this.has(k) ? this.values[k] : dflt;\n },\n // Check whether we have a value for a key.\n has: function(k) {\n return k in this.values;\n },\n // Accept a setting if its one of the given alternatives.\n alt: function(k, v, a) {\n for (var n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n },\n // Accept a setting if its a valid (signed) integer.\n integer: function(k, v) {\n if (/^-?\\d+$/.test(v)) { // integer\n this.set(k, parseInt(v, 10));\n }\n },\n // Accept a setting if its a valid percentage.\n percent: function(k, v) {\n var m;\n if ((m = v.match(/^([\\d]{1,3})(\\.[\\d]*)?%$/))) {\n v = parseFloat(v);\n if (v >= 0 && v <= 100) {\n this.set(k, v);\n return true;\n }\n }\n return false;\n }\n};\n\n// Helper function to parse input into groups separated by 'groupDelim', and\n// interprete each group as a key/value pair separated by 'keyValueDelim'.\nfunction parseOptions(input, callback, keyValueDelim, groupDelim) {\n var groups = groupDelim ? input.split(groupDelim) : [input];\n for (var i in groups) {\n if (typeof groups[i] !== \"string\") {\n continue;\n }\n var kv = groups[i].split(keyValueDelim);\n if (kv.length !== 2) {\n continue;\n }\n var k = kv[0].trim();\n var v = kv[1].trim();\n callback(k, v);\n }\n}\n\nfunction parseCue(input, cue, regionList) {\n // Remember the original input if we need to throw an error.\n var oInput = input;\n // 4.1 WebVTT timestamp\n function consumeTimeStamp() {\n var ts = parseTimeStamp(input);\n if (ts === null) {\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed timestamp: \" + oInput);\n }\n // Remove time stamp from input.\n input = input.replace(/^[^\\sa-zA-Z-]+/, \"\");\n return ts;\n }\n\n // 4.4.2 WebVTT cue settings\n function consumeCueSettings(input, cue) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"region\":\n // Find the last region we parsed with the same region id.\n for (var i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n break;\n case \"vertical\":\n settings.alt(k, v, [\"rl\", \"lr\"]);\n break;\n case \"line\":\n var vals = v.split(\",\"),\n vals0 = vals[0];\n settings.integer(k, vals0);\n settings.percent(k, vals0) ? settings.set(\"snapToLines\", false) : null;\n settings.alt(k, vals0, [\"auto\"]);\n if (vals.length === 2) {\n settings.alt(\"lineAlign\", vals[1], [\"start\", \"center\", \"end\"]);\n }\n break;\n case \"position\":\n vals = v.split(\",\");\n settings.percent(k, vals[0]);\n if (vals.length === 2) {\n settings.alt(\"positionAlign\", vals[1], [\"start\", \"center\", \"end\"]);\n }\n break;\n case \"size\":\n settings.percent(k, v);\n break;\n case \"align\":\n settings.alt(k, v, [\"start\", \"center\", \"end\", \"left\", \"right\"]);\n break;\n }\n }, /:/, /\\s/);\n\n // Apply default values for any missing fields.\n cue.region = settings.get(\"region\", null);\n cue.vertical = settings.get(\"vertical\", \"\");\n try {\n cue.line = settings.get(\"line\", \"auto\");\n } catch (e) {}\n cue.lineAlign = settings.get(\"lineAlign\", \"start\");\n cue.snapToLines = settings.get(\"snapToLines\", true);\n cue.size = settings.get(\"size\", 100);\n // Safari still uses the old middle value and won't accept center\n try {\n cue.align = settings.get(\"align\", \"center\");\n } catch (e) {\n cue.align = settings.get(\"align\", \"middle\");\n }\n try {\n cue.position = settings.get(\"position\", \"auto\");\n } catch (e) {\n cue.position = settings.get(\"position\", {\n start: 0,\n left: 0,\n center: 50,\n middle: 50,\n end: 100,\n right: 100\n }, cue.align);\n }\n\n\n cue.positionAlign = settings.get(\"positionAlign\", {\n start: \"start\",\n left: \"start\",\n center: \"center\",\n middle: \"center\",\n end: \"end\",\n right: \"end\"\n }, cue.align);\n }\n\n function skipWhitespace() {\n input = input.replace(/^\\s+/, \"\");\n }\n\n // 4.1 WebVTT cue timings.\n skipWhitespace();\n cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n skipWhitespace();\n if (input.substr(0, 3) !== \"-->\") { // (3) next characters must match \"-->\"\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed time stamp (time stamps must be separated by '-->'): \" +\n oInput);\n }\n input = input.substr(3);\n skipWhitespace();\n cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n\n // 4.1 WebVTT cue settings list.\n skipWhitespace();\n consumeCueSettings(input, cue);\n}\n\n// When evaluating this file as part of a Webpack bundle for server\n// side rendering, `document` is an empty object.\nvar TEXTAREA_ELEMENT = document.createElement && document.createElement(\"textarea\");\n\nvar TAG_NAME = {\n c: \"span\",\n i: \"i\",\n b: \"b\",\n u: \"u\",\n ruby: \"ruby\",\n rt: \"rt\",\n v: \"span\",\n lang: \"span\"\n};\n\n// 5.1 default text color\n// 5.2 default text background color is equivalent to text color with bg_ prefix\nvar DEFAULT_COLOR_CLASS = {\n white: 'rgba(255,255,255,1)',\n lime: 'rgba(0,255,0,1)',\n cyan: 'rgba(0,255,255,1)',\n red: 'rgba(255,0,0,1)',\n yellow: 'rgba(255,255,0,1)',\n magenta: 'rgba(255,0,255,1)',\n blue: 'rgba(0,0,255,1)',\n black: 'rgba(0,0,0,1)'\n};\n\nvar TAG_ANNOTATION = {\n v: \"title\",\n lang: \"lang\"\n};\n\nvar NEEDS_PARENT = {\n rt: \"ruby\"\n};\n\n// Parse content into a document fragment.\nfunction parseContent(window, input) {\n function nextToken() {\n // Check for end-of-string.\n if (!input) {\n return null;\n }\n\n // Consume 'n' characters from the input.\n function consume(result) {\n input = input.substr(result.length);\n return result;\n }\n\n var m = input.match(/^([^<]*)(<[^>]*>?)?/);\n // If there is some text before the next tag, return it, otherwise return\n // the tag.\n return consume(m[1] ? m[1] : m[2]);\n }\n\n function unescape(s) {\n TEXTAREA_ELEMENT.innerHTML = s;\n s = TEXTAREA_ELEMENT.textContent;\n TEXTAREA_ELEMENT.textContent = \"\";\n return s;\n }\n\n function shouldAdd(current, element) {\n return !NEEDS_PARENT[element.localName] ||\n NEEDS_PARENT[element.localName] === current.localName;\n }\n\n // Create an element for this tag.\n function createElement(type, annotation) {\n var tagName = TAG_NAME[type];\n if (!tagName) {\n return null;\n }\n var element = window.document.createElement(tagName);\n var name = TAG_ANNOTATION[type];\n if (name && annotation) {\n element[name] = annotation.trim();\n }\n return element;\n }\n\n var rootDiv = window.document.createElement(\"div\"),\n current = rootDiv,\n t,\n tagStack = [];\n\n while ((t = nextToken()) !== null) {\n if (t[0] === '<') {\n if (t[1] === \"/\") {\n // If the closing tag matches, move back up to the parent node.\n if (tagStack.length &&\n tagStack[tagStack.length - 1] === t.substr(2).replace(\">\", \"\")) {\n tagStack.pop();\n current = current.parentNode;\n }\n // Otherwise just ignore the end tag.\n continue;\n }\n var ts = parseTimeStamp(t.substr(1, t.length - 2));\n var node;\n if (ts) {\n // Timestamps are lead nodes as well.\n node = window.document.createProcessingInstruction(\"timestamp\", ts);\n current.appendChild(node);\n continue;\n }\n var m = t.match(/^<([^.\\s/0-9>]+)(\\.[^\\s\\\\>]+)?([^>\\\\]+)?(\\\\?)>?$/);\n // If we can't parse the tag, skip to the next tag.\n if (!m) {\n continue;\n }\n // Try to construct an element, and ignore the tag if we couldn't.\n node = createElement(m[1], m[3]);\n if (!node) {\n continue;\n }\n // Determine if the tag should be added based on the context of where it\n // is placed in the cuetext.\n if (!shouldAdd(current, node)) {\n continue;\n }\n // Set the class list (as a list of classes, separated by space).\n if (m[2]) {\n var classes = m[2].split('.');\n\n classes.forEach(function(cl) {\n var bgColor = /^bg_/.test(cl);\n // slice out `bg_` if it's a background color\n var colorName = bgColor ? cl.slice(3) : cl;\n\n if (DEFAULT_COLOR_CLASS.hasOwnProperty(colorName)) {\n var propName = bgColor ? 'background-color' : 'color';\n var propValue = DEFAULT_COLOR_CLASS[colorName];\n\n node.style[propName] = propValue;\n }\n });\n\n node.className = classes.join(' ');\n }\n // Append the node to the current node, and enter the scope of the new\n // node.\n tagStack.push(m[1]);\n current.appendChild(node);\n current = node;\n continue;\n }\n\n // Text nodes are leaf nodes.\n current.appendChild(window.document.createTextNode(unescape(t)));\n }\n\n return rootDiv;\n}\n\n// This is a list of all the Unicode characters that have a strong\n// right-to-left category. What this means is that these characters are\n// written right-to-left for sure. It was generated by pulling all the strong\n// right-to-left characters out of the Unicode data table. That table can\n// found at: http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\nvar strongRTLRanges = [[0x5be, 0x5be], [0x5c0, 0x5c0], [0x5c3, 0x5c3], [0x5c6, 0x5c6],\n [0x5d0, 0x5ea], [0x5f0, 0x5f4], [0x608, 0x608], [0x60b, 0x60b], [0x60d, 0x60d],\n [0x61b, 0x61b], [0x61e, 0x64a], [0x66d, 0x66f], [0x671, 0x6d5], [0x6e5, 0x6e6],\n [0x6ee, 0x6ef], [0x6fa, 0x70d], [0x70f, 0x710], [0x712, 0x72f], [0x74d, 0x7a5],\n [0x7b1, 0x7b1], [0x7c0, 0x7ea], [0x7f4, 0x7f5], [0x7fa, 0x7fa], [0x800, 0x815],\n [0x81a, 0x81a], [0x824, 0x824], [0x828, 0x828], [0x830, 0x83e], [0x840, 0x858],\n [0x85e, 0x85e], [0x8a0, 0x8a0], [0x8a2, 0x8ac], [0x200f, 0x200f],\n [0xfb1d, 0xfb1d], [0xfb1f, 0xfb28], [0xfb2a, 0xfb36], [0xfb38, 0xfb3c],\n [0xfb3e, 0xfb3e], [0xfb40, 0xfb41], [0xfb43, 0xfb44], [0xfb46, 0xfbc1],\n [0xfbd3, 0xfd3d], [0xfd50, 0xfd8f], [0xfd92, 0xfdc7], [0xfdf0, 0xfdfc],\n [0xfe70, 0xfe74], [0xfe76, 0xfefc], [0x10800, 0x10805], [0x10808, 0x10808],\n [0x1080a, 0x10835], [0x10837, 0x10838], [0x1083c, 0x1083c], [0x1083f, 0x10855],\n [0x10857, 0x1085f], [0x10900, 0x1091b], [0x10920, 0x10939], [0x1093f, 0x1093f],\n [0x10980, 0x109b7], [0x109be, 0x109bf], [0x10a00, 0x10a00], [0x10a10, 0x10a13],\n [0x10a15, 0x10a17], [0x10a19, 0x10a33], [0x10a40, 0x10a47], [0x10a50, 0x10a58],\n [0x10a60, 0x10a7f], [0x10b00, 0x10b35], [0x10b40, 0x10b55], [0x10b58, 0x10b72],\n [0x10b78, 0x10b7f], [0x10c00, 0x10c48], [0x1ee00, 0x1ee03], [0x1ee05, 0x1ee1f],\n [0x1ee21, 0x1ee22], [0x1ee24, 0x1ee24], [0x1ee27, 0x1ee27], [0x1ee29, 0x1ee32],\n [0x1ee34, 0x1ee37], [0x1ee39, 0x1ee39], [0x1ee3b, 0x1ee3b], [0x1ee42, 0x1ee42],\n [0x1ee47, 0x1ee47], [0x1ee49, 0x1ee49], [0x1ee4b, 0x1ee4b], [0x1ee4d, 0x1ee4f],\n [0x1ee51, 0x1ee52], [0x1ee54, 0x1ee54], [0x1ee57, 0x1ee57], [0x1ee59, 0x1ee59],\n [0x1ee5b, 0x1ee5b], [0x1ee5d, 0x1ee5d], [0x1ee5f, 0x1ee5f], [0x1ee61, 0x1ee62],\n [0x1ee64, 0x1ee64], [0x1ee67, 0x1ee6a], [0x1ee6c, 0x1ee72], [0x1ee74, 0x1ee77],\n [0x1ee79, 0x1ee7c], [0x1ee7e, 0x1ee7e], [0x1ee80, 0x1ee89], [0x1ee8b, 0x1ee9b],\n [0x1eea1, 0x1eea3], [0x1eea5, 0x1eea9], [0x1eeab, 0x1eebb], [0x10fffd, 0x10fffd]];\n\nfunction isStrongRTLChar(charCode) {\n for (var i = 0; i < strongRTLRanges.length; i++) {\n var currentRange = strongRTLRanges[i];\n if (charCode >= currentRange[0] && charCode <= currentRange[1]) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction determineBidi(cueDiv) {\n var nodeStack = [],\n text = \"\",\n charCode;\n\n if (!cueDiv || !cueDiv.childNodes) {\n return \"ltr\";\n }\n\n function pushNodes(nodeStack, node) {\n for (var i = node.childNodes.length - 1; i >= 0; i--) {\n nodeStack.push(node.childNodes[i]);\n }\n }\n\n function nextTextNode(nodeStack) {\n if (!nodeStack || !nodeStack.length) {\n return null;\n }\n\n var node = nodeStack.pop(),\n text = node.textContent || node.innerText;\n if (text) {\n // TODO: This should match all unicode type B characters (paragraph\n // separator characters). See issue #115.\n var m = text.match(/^.*(\\n|\\r)/);\n if (m) {\n nodeStack.length = 0;\n return m[0];\n }\n return text;\n }\n if (node.tagName === \"ruby\") {\n return nextTextNode(nodeStack);\n }\n if (node.childNodes) {\n pushNodes(nodeStack, node);\n return nextTextNode(nodeStack);\n }\n }\n\n pushNodes(nodeStack, cueDiv);\n while ((text = nextTextNode(nodeStack))) {\n for (var i = 0; i < text.length; i++) {\n charCode = text.charCodeAt(i);\n if (isStrongRTLChar(charCode)) {\n return \"rtl\";\n }\n }\n }\n return \"ltr\";\n}\n\nfunction computeLinePos(cue) {\n if (typeof cue.line === \"number\" &&\n (cue.snapToLines || (cue.line >= 0 && cue.line <= 100))) {\n return cue.line;\n }\n if (!cue.track || !cue.track.textTrackList ||\n !cue.track.textTrackList.mediaElement) {\n return -1;\n }\n var track = cue.track,\n trackList = track.textTrackList,\n count = 0;\n for (var i = 0; i < trackList.length && trackList[i] !== track; i++) {\n if (trackList[i].mode === \"showing\") {\n count++;\n }\n }\n return ++count * -1;\n}\n\nfunction StyleBox() {\n}\n\n// Apply styles to a div. If there is no div passed then it defaults to the\n// div on 'this'.\nStyleBox.prototype.applyStyles = function(styles, div) {\n div = div || this.div;\n for (var prop in styles) {\n if (styles.hasOwnProperty(prop)) {\n div.style[prop] = styles[prop];\n }\n }\n};\n\nStyleBox.prototype.formatStyle = function(val, unit) {\n return val === 0 ? 0 : val + unit;\n};\n\n// Constructs the computed display state of the cue (a div). Places the div\n// into the overlay which should be a block level element (usually a div).\nfunction CueStyleBox(window, cue, styleOptions) {\n StyleBox.call(this);\n this.cue = cue;\n\n // Parse our cue's text into a DOM tree rooted at 'cueDiv'. This div will\n // have inline positioning and will function as the cue background box.\n this.cueDiv = parseContent(window, cue.text);\n var styles = {\n color: \"rgba(255, 255, 255, 1)\",\n backgroundColor: \"rgba(0, 0, 0, 0.8)\",\n position: \"relative\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"inline\",\n writingMode: cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\",\n unicodeBidi: \"plaintext\"\n };\n\n this.applyStyles(styles, this.cueDiv);\n\n // Create an absolutely positioned div that will be used to position the cue\n // div. Note, all WebVTT cue-setting alignments are equivalent to the CSS\n // mirrors of them except middle instead of center on Safari.\n this.div = window.document.createElement(\"div\");\n styles = {\n direction: determineBidi(this.cueDiv),\n writingMode: cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\",\n unicodeBidi: \"plaintext\",\n textAlign: cue.align === \"middle\" ? \"center\" : cue.align,\n font: styleOptions.font,\n whiteSpace: \"pre-line\",\n position: \"absolute\"\n };\n\n this.applyStyles(styles);\n this.div.appendChild(this.cueDiv);\n\n // Calculate the distance from the reference edge of the viewport to the text\n // position of the cue box. The reference edge will be resolved later when\n // the box orientation styles are applied.\n var textPos = 0;\n switch (cue.positionAlign) {\n case \"start\":\n case \"line-left\":\n textPos = cue.position;\n break;\n case \"center\":\n textPos = cue.position - (cue.size / 2);\n break;\n case \"end\":\n case \"line-right\":\n textPos = cue.position - cue.size;\n break;\n }\n\n // Horizontal box orientation; textPos is the distance from the left edge of the\n // area to the left edge of the box and cue.size is the distance extending to\n // the right from there.\n if (cue.vertical === \"\") {\n this.applyStyles({\n left: this.formatStyle(textPos, \"%\"),\n width: this.formatStyle(cue.size, \"%\")\n });\n // Vertical box orientation; textPos is the distance from the top edge of the\n // area to the top edge of the box and cue.size is the height extending\n // downwards from there.\n } else {\n this.applyStyles({\n top: this.formatStyle(textPos, \"%\"),\n height: this.formatStyle(cue.size, \"%\")\n });\n }\n\n this.move = function(box) {\n this.applyStyles({\n top: this.formatStyle(box.top, \"px\"),\n bottom: this.formatStyle(box.bottom, \"px\"),\n left: this.formatStyle(box.left, \"px\"),\n right: this.formatStyle(box.right, \"px\"),\n height: this.formatStyle(box.height, \"px\"),\n width: this.formatStyle(box.width, \"px\")\n });\n };\n}\nCueStyleBox.prototype = _objCreate(StyleBox.prototype);\nCueStyleBox.prototype.constructor = CueStyleBox;\n\n// Represents the co-ordinates of an Element in a way that we can easily\n// compute things with such as if it overlaps or intersects with another Element.\n// Can initialize it with either a StyleBox or another BoxPosition.\nfunction BoxPosition(obj) {\n // Either a BoxPosition was passed in and we need to copy it, or a StyleBox\n // was passed in and we need to copy the results of 'getBoundingClientRect'\n // as the object returned is readonly. All co-ordinate values are in reference\n // to the viewport origin (top left).\n var lh, height, width, top;\n if (obj.div) {\n height = obj.div.offsetHeight;\n width = obj.div.offsetWidth;\n top = obj.div.offsetTop;\n\n var rects = (rects = obj.div.childNodes) && (rects = rects[0]) &&\n rects.getClientRects && rects.getClientRects();\n obj = obj.div.getBoundingClientRect();\n // In certain cases the outter div will be slightly larger then the sum of\n // the inner div's lines. This could be due to bold text, etc, on some platforms.\n // In this case we should get the average line height and use that. This will\n // result in the desired behaviour.\n lh = rects ? Math.max((rects[0] && rects[0].height) || 0, obj.height / rects.length)\n : 0;\n\n }\n this.left = obj.left;\n this.right = obj.right;\n this.top = obj.top || top;\n this.height = obj.height || height;\n this.bottom = obj.bottom || (top + (obj.height || height));\n this.width = obj.width || width;\n this.lineHeight = lh !== undefined ? lh : obj.lineHeight;\n}\n\n// Move the box along a particular axis. Optionally pass in an amount to move\n// the box. If no amount is passed then the default is the line height of the\n// box.\nBoxPosition.prototype.move = function(axis, toMove) {\n toMove = toMove !== undefined ? toMove : this.lineHeight;\n switch (axis) {\n case \"+x\":\n this.left += toMove;\n this.right += toMove;\n break;\n case \"-x\":\n this.left -= toMove;\n this.right -= toMove;\n break;\n case \"+y\":\n this.top += toMove;\n this.bottom += toMove;\n break;\n case \"-y\":\n this.top -= toMove;\n this.bottom -= toMove;\n break;\n }\n};\n\n// Check if this box overlaps another box, b2.\nBoxPosition.prototype.overlaps = function(b2) {\n return this.left < b2.right &&\n this.right > b2.left &&\n this.top < b2.bottom &&\n this.bottom > b2.top;\n};\n\n// Check if this box overlaps any other boxes in boxes.\nBoxPosition.prototype.overlapsAny = function(boxes) {\n for (var i = 0; i < boxes.length; i++) {\n if (this.overlaps(boxes[i])) {\n return true;\n }\n }\n return false;\n};\n\n// Check if this box is within another box.\nBoxPosition.prototype.within = function(container) {\n return this.top >= container.top &&\n this.bottom <= container.bottom &&\n this.left >= container.left &&\n this.right <= container.right;\n};\n\n// Check if this box is entirely within the container or it is overlapping\n// on the edge opposite of the axis direction passed. For example, if \"+x\" is\n// passed and the box is overlapping on the left edge of the container, then\n// return true.\nBoxPosition.prototype.overlapsOppositeAxis = function(container, axis) {\n switch (axis) {\n case \"+x\":\n return this.left < container.left;\n case \"-x\":\n return this.right > container.right;\n case \"+y\":\n return this.top < container.top;\n case \"-y\":\n return this.bottom > container.bottom;\n }\n};\n\n// Find the percentage of the area that this box is overlapping with another\n// box.\nBoxPosition.prototype.intersectPercentage = function(b2) {\n var x = Math.max(0, Math.min(this.right, b2.right) - Math.max(this.left, b2.left)),\n y = Math.max(0, Math.min(this.bottom, b2.bottom) - Math.max(this.top, b2.top)),\n intersectArea = x * y;\n return intersectArea / (this.height * this.width);\n};\n\n// Convert the positions from this box to CSS compatible positions using\n// the reference container's positions. This has to be done because this\n// box's positions are in reference to the viewport origin, whereas, CSS\n// values are in referecne to their respective edges.\nBoxPosition.prototype.toCSSCompatValues = function(reference) {\n return {\n top: this.top - reference.top,\n bottom: reference.bottom - this.bottom,\n left: this.left - reference.left,\n right: reference.right - this.right,\n height: this.height,\n width: this.width\n };\n};\n\n// Get an object that represents the box's position without anything extra.\n// Can pass a StyleBox, HTMLElement, or another BoxPositon.\nBoxPosition.getSimpleBoxPosition = function(obj) {\n var height = obj.div ? obj.div.offsetHeight : obj.tagName ? obj.offsetHeight : 0;\n var width = obj.div ? obj.div.offsetWidth : obj.tagName ? obj.offsetWidth : 0;\n var top = obj.div ? obj.div.offsetTop : obj.tagName ? obj.offsetTop : 0;\n\n obj = obj.div ? obj.div.getBoundingClientRect() :\n obj.tagName ? obj.getBoundingClientRect() : obj;\n var ret = {\n left: obj.left,\n right: obj.right,\n top: obj.top || top,\n height: obj.height || height,\n bottom: obj.bottom || (top + (obj.height || height)),\n width: obj.width || width\n };\n return ret;\n};\n\n// Move a StyleBox to its specified, or next best, position. The containerBox\n// is the box that contains the StyleBox, such as a div. boxPositions are\n// a list of other boxes that the styleBox can't overlap with.\nfunction moveBoxToLinePosition(window, styleBox, containerBox, boxPositions) {\n\n // Find the best position for a cue box, b, on the video. The axis parameter\n // is a list of axis, the order of which, it will move the box along. For example:\n // Passing [\"+x\", \"-x\"] will move the box first along the x axis in the positive\n // direction. If it doesn't find a good position for it there it will then move\n // it along the x axis in the negative direction.\n function findBestPosition(b, axis) {\n var bestPosition,\n specifiedPosition = new BoxPosition(b),\n percentage = 1; // Highest possible so the first thing we get is better.\n\n for (var i = 0; i < axis.length; i++) {\n while (b.overlapsOppositeAxis(containerBox, axis[i]) ||\n (b.within(containerBox) && b.overlapsAny(boxPositions))) {\n b.move(axis[i]);\n }\n // We found a spot where we aren't overlapping anything. This is our\n // best position.\n if (b.within(containerBox)) {\n return b;\n }\n var p = b.intersectPercentage(containerBox);\n // If we're outside the container box less then we were on our last try\n // then remember this position as the best position.\n if (percentage > p) {\n bestPosition = new BoxPosition(b);\n percentage = p;\n }\n // Reset the box position to the specified position.\n b = new BoxPosition(specifiedPosition);\n }\n return bestPosition || specifiedPosition;\n }\n\n var boxPosition = new BoxPosition(styleBox),\n cue = styleBox.cue,\n linePos = computeLinePos(cue),\n axis = [];\n\n // If we have a line number to align the cue to.\n if (cue.snapToLines) {\n var size;\n switch (cue.vertical) {\n case \"\":\n axis = [ \"+y\", \"-y\" ];\n size = \"height\";\n break;\n case \"rl\":\n axis = [ \"+x\", \"-x\" ];\n size = \"width\";\n break;\n case \"lr\":\n axis = [ \"-x\", \"+x\" ];\n size = \"width\";\n break;\n }\n\n var step = boxPosition.lineHeight,\n position = step * Math.round(linePos),\n maxPosition = containerBox[size] + step,\n initialAxis = axis[0];\n\n // If the specified intial position is greater then the max position then\n // clamp the box to the amount of steps it would take for the box to\n // reach the max position.\n if (Math.abs(position) > maxPosition) {\n position = position < 0 ? -1 : 1;\n position *= Math.ceil(maxPosition / step) * step;\n }\n\n // If computed line position returns negative then line numbers are\n // relative to the bottom of the video instead of the top. Therefore, we\n // need to increase our initial position by the length or width of the\n // video, depending on the writing direction, and reverse our axis directions.\n if (linePos < 0) {\n position += cue.vertical === \"\" ? containerBox.height : containerBox.width;\n axis = axis.reverse();\n }\n\n // Move the box to the specified position. This may not be its best\n // position.\n boxPosition.move(initialAxis, position);\n\n } else {\n // If we have a percentage line value for the cue.\n var calculatedPercentage = (boxPosition.lineHeight / containerBox.height) * 100;\n\n switch (cue.lineAlign) {\n case \"center\":\n linePos -= (calculatedPercentage / 2);\n break;\n case \"end\":\n linePos -= calculatedPercentage;\n break;\n }\n\n // Apply initial line position to the cue box.\n switch (cue.vertical) {\n case \"\":\n styleBox.applyStyles({\n top: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"rl\":\n styleBox.applyStyles({\n left: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"lr\":\n styleBox.applyStyles({\n right: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n }\n\n axis = [ \"+y\", \"-x\", \"+x\", \"-y\" ];\n\n // Get the box position again after we've applied the specified positioning\n // to it.\n boxPosition = new BoxPosition(styleBox);\n }\n\n var bestPosition = findBestPosition(boxPosition, axis);\n styleBox.move(bestPosition.toCSSCompatValues(containerBox));\n}\n\nfunction WebVTT() {\n // Nothing\n}\n\n// Helper to allow strings to be decoded instead of the default binary utf8 data.\nWebVTT.StringDecoder = function() {\n return {\n decode: function(data) {\n if (!data) {\n return \"\";\n }\n if (typeof data !== \"string\") {\n throw new Error(\"Error - expected string data.\");\n }\n return decodeURIComponent(encodeURIComponent(data));\n }\n };\n};\n\nWebVTT.convertCueToDOMTree = function(window, cuetext) {\n if (!window || !cuetext) {\n return null;\n }\n return parseContent(window, cuetext);\n};\n\nvar FONT_SIZE_PERCENT = 0.05;\nvar FONT_STYLE = \"sans-serif\";\nvar CUE_BACKGROUND_PADDING = \"1.5%\";\n\n// Runs the processing model over the cues and regions passed to it.\n// @param overlay A block level element (usually a div) that the computed cues\n// and regions will be placed into.\nWebVTT.processCues = function(window, cues, overlay) {\n if (!window || !cues || !overlay) {\n return null;\n }\n\n // Remove all previous children.\n while (overlay.firstChild) {\n overlay.removeChild(overlay.firstChild);\n }\n\n var paddedOverlay = window.document.createElement(\"div\");\n paddedOverlay.style.position = \"absolute\";\n paddedOverlay.style.left = \"0\";\n paddedOverlay.style.right = \"0\";\n paddedOverlay.style.top = \"0\";\n paddedOverlay.style.bottom = \"0\";\n paddedOverlay.style.margin = CUE_BACKGROUND_PADDING;\n overlay.appendChild(paddedOverlay);\n\n // Determine if we need to compute the display states of the cues. This could\n // be the case if a cue's state has been changed since the last computation or\n // if it has not been computed yet.\n function shouldCompute(cues) {\n for (var i = 0; i < cues.length; i++) {\n if (cues[i].hasBeenReset || !cues[i].displayState) {\n return true;\n }\n }\n return false;\n }\n\n // We don't need to recompute the cues' display states. Just reuse them.\n if (!shouldCompute(cues)) {\n for (var i = 0; i < cues.length; i++) {\n paddedOverlay.appendChild(cues[i].displayState);\n }\n return;\n }\n\n var boxPositions = [],\n containerBox = BoxPosition.getSimpleBoxPosition(paddedOverlay),\n fontSize = Math.round(containerBox.height * FONT_SIZE_PERCENT * 100) / 100;\n var styleOptions = {\n font: fontSize + \"px \" + FONT_STYLE\n };\n\n (function() {\n var styleBox, cue;\n\n for (var i = 0; i < cues.length; i++) {\n cue = cues[i];\n\n // Compute the intial position and styles of the cue div.\n styleBox = new CueStyleBox(window, cue, styleOptions);\n paddedOverlay.appendChild(styleBox.div);\n\n // Move the cue div to it's correct line position.\n moveBoxToLinePosition(window, styleBox, containerBox, boxPositions);\n\n // Remember the computed div so that we don't have to recompute it later\n // if we don't have too.\n cue.displayState = styleBox.div;\n\n boxPositions.push(BoxPosition.getSimpleBoxPosition(styleBox));\n }\n })();\n};\n\nWebVTT.Parser = function(window, vttjs, decoder) {\n if (!decoder) {\n decoder = vttjs;\n vttjs = {};\n }\n if (!vttjs) {\n vttjs = {};\n }\n\n this.window = window;\n this.vttjs = vttjs;\n this.state = \"INITIAL\";\n this.buffer = \"\";\n this.decoder = decoder || new TextDecoder(\"utf8\");\n this.regionList = [];\n};\n\nWebVTT.Parser.prototype = {\n // If the error is a ParsingError then report it to the consumer if\n // possible. If it's not a ParsingError then throw it like normal.\n reportOrThrowError: function(e) {\n if (e instanceof ParsingError) {\n this.onparsingerror && this.onparsingerror(e);\n } else {\n throw e;\n }\n },\n parse: function (data) {\n var self = this;\n\n // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n if (data) {\n // Try to decode the data that we received.\n self.buffer += self.decoder.decode(data, {stream: true});\n }\n\n function collectNextLine() {\n var buffer = self.buffer;\n var pos = 0;\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n var line = buffer.substr(0, pos);\n // Advance the buffer early in case we fail below.\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n self.buffer = buffer.substr(pos);\n return line;\n }\n\n // 3.4 WebVTT region and WebVTT region settings syntax\n function parseRegion(input) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"id\":\n settings.set(k, v);\n break;\n case \"width\":\n settings.percent(k, v);\n break;\n case \"lines\":\n settings.integer(k, v);\n break;\n case \"regionanchor\":\n case \"viewportanchor\":\n var xy = v.split(',');\n if (xy.length !== 2) {\n break;\n }\n // We have to make sure both x and y parse, so use a temporary\n // settings object here.\n var anchor = new Settings();\n anchor.percent(\"x\", xy[0]);\n anchor.percent(\"y\", xy[1]);\n if (!anchor.has(\"x\") || !anchor.has(\"y\")) {\n break;\n }\n settings.set(k + \"X\", anchor.get(\"x\"));\n settings.set(k + \"Y\", anchor.get(\"y\"));\n break;\n case \"scroll\":\n settings.alt(k, v, [\"up\"]);\n break;\n }\n }, /=/, /\\s/);\n\n // Create the region, using default values for any values that were not\n // specified.\n if (settings.has(\"id\")) {\n var region = new (self.vttjs.VTTRegion || self.window.VTTRegion)();\n region.width = settings.get(\"width\", 100);\n region.lines = settings.get(\"lines\", 3);\n region.regionAnchorX = settings.get(\"regionanchorX\", 0);\n region.regionAnchorY = settings.get(\"regionanchorY\", 100);\n region.viewportAnchorX = settings.get(\"viewportanchorX\", 0);\n region.viewportAnchorY = settings.get(\"viewportanchorY\", 100);\n region.scroll = settings.get(\"scroll\", \"\");\n // Register the region.\n self.onregion && self.onregion(region);\n // Remember the VTTRegion for later in case we parse any VTTCues that\n // reference it.\n self.regionList.push({\n id: settings.get(\"id\"),\n region: region\n });\n }\n }\n\n // draft-pantos-http-live-streaming-20\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-20#section-3.5\n // 3.5 WebVTT\n function parseTimestampMap(input) {\n var settings = new Settings();\n\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"MPEGT\":\n settings.integer(k + 'S', v);\n break;\n case \"LOCA\":\n settings.set(k + 'L', parseTimeStamp(v));\n break;\n }\n }, /[^\\d]:/, /,/);\n\n self.ontimestampmap && self.ontimestampmap({\n \"MPEGTS\": settings.get(\"MPEGTS\"),\n \"LOCAL\": settings.get(\"LOCAL\")\n });\n }\n\n // 3.2 WebVTT metadata header syntax\n function parseHeader(input) {\n if (input.match(/X-TIMESTAMP-MAP/)) {\n // This line contains HLS X-TIMESTAMP-MAP metadata\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"X-TIMESTAMP-MAP\":\n parseTimestampMap(v);\n break;\n }\n }, /=/);\n } else {\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"Region\":\n // 3.3 WebVTT region metadata header syntax\n parseRegion(v);\n break;\n }\n }, /:/);\n }\n\n }\n\n // 5.1 WebVTT file parsing.\n try {\n var line;\n if (self.state === \"INITIAL\") {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n line = collectNextLine();\n\n var m = line.match(/^WEBVTT([ \\t].*)?$/);\n if (!m || !m[0]) {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n\n self.state = \"HEADER\";\n }\n\n var alreadyCollectedLine = false;\n while (self.buffer) {\n // We can't parse a line until we have the full line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n } else {\n alreadyCollectedLine = false;\n }\n\n switch (self.state) {\n case \"HEADER\":\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n self.state = \"ID\";\n }\n continue;\n case \"NOTE\":\n // Ignore NOTE blocks.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n case \"ID\":\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n self.state = \"NOTE\";\n break;\n }\n // 19-29 - Allow any number of line terminators, then initialize new cue values.\n if (!line) {\n continue;\n }\n self.cue = new (self.vttjs.VTTCue || self.window.VTTCue)(0, 0, \"\");\n // Safari still uses the old middle value and won't accept center\n try {\n self.cue.align = \"center\";\n } catch (e) {\n self.cue.align = \"middle\";\n }\n self.state = \"CUE\";\n // 30-39 - Check if self line contains an optional identifier or timing data.\n if (line.indexOf(\"-->\") === -1) {\n self.cue.id = line;\n continue;\n }\n // Process line as start of a cue.\n /*falls through*/\n case \"CUE\":\n // 40 - Collect cue timings and settings.\n try {\n parseCue(line, self.cue, self.regionList);\n } catch (e) {\n self.reportOrThrowError(e);\n // In case of an error ignore rest of the cue.\n self.cue = null;\n self.state = \"BADCUE\";\n continue;\n }\n self.state = \"CUETEXT\";\n continue;\n case \"CUETEXT\":\n var hasSubstring = line.indexOf(\"-->\") !== -1;\n // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n self.oncue && self.oncue(self.cue);\n self.cue = null;\n self.state = \"ID\";\n continue;\n }\n if (self.cue.text) {\n self.cue.text += \"\\n\";\n }\n self.cue.text += line.replace(/\\u2028/g, '\\n').replace(/u2029/g, '\\n');\n continue;\n case \"BADCUE\": // BADCUE\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n }\n }\n } catch (e) {\n self.reportOrThrowError(e);\n\n // If we are currently parsing a cue, report what we have.\n if (self.state === \"CUETEXT\" && self.cue && self.oncue) {\n self.oncue(self.cue);\n }\n self.cue = null;\n // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n self.state = self.state === \"INITIAL\" ? \"BADWEBVTT\" : \"BADCUE\";\n }\n return this;\n },\n flush: function () {\n var self = this;\n try {\n // Finish decoding the stream.\n self.buffer += self.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (self.cue || self.state === \"HEADER\") {\n self.buffer += \"\\n\\n\";\n self.parse();\n }\n // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n if (self.state === \"INITIAL\") {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n } catch(e) {\n self.reportOrThrowError(e);\n }\n self.onflush && self.onflush();\n return this;\n }\n};\n\nmodule.exports = WebVTT;\n","'use strict';\n\nvar freeze = require('./conventions').freeze;\n\n/**\n * The entities that are predefined in every XML document.\n *\n * @see https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-predefined-ent W3C XML 1.1\n * @see https://www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent W3C XML 1.0\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML Wikipedia\n */\nexports.XML_ENTITIES = freeze({\n\tamp: '&',\n\tapos: \"'\",\n\tgt: '>',\n\tlt: '<',\n\tquot: '\"',\n});\n\n/**\n * A map of all entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://html.spec.whatwg.org/entities.json JSON\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n\tAacute: '\\u00C1',\n\taacute: '\\u00E1',\n\tAbreve: '\\u0102',\n\tabreve: '\\u0103',\n\tac: '\\u223E',\n\tacd: '\\u223F',\n\tacE: '\\u223E\\u0333',\n\tAcirc: '\\u00C2',\n\tacirc: '\\u00E2',\n\tacute: '\\u00B4',\n\tAcy: '\\u0410',\n\tacy: '\\u0430',\n\tAElig: '\\u00C6',\n\taelig: '\\u00E6',\n\taf: '\\u2061',\n\tAfr: '\\uD835\\uDD04',\n\tafr: '\\uD835\\uDD1E',\n\tAgrave: '\\u00C0',\n\tagrave: '\\u00E0',\n\talefsym: '\\u2135',\n\taleph: '\\u2135',\n\tAlpha: '\\u0391',\n\talpha: '\\u03B1',\n\tAmacr: '\\u0100',\n\tamacr: '\\u0101',\n\tamalg: '\\u2A3F',\n\tAMP: '\\u0026',\n\tamp: '\\u0026',\n\tAnd: '\\u2A53',\n\tand: '\\u2227',\n\tandand: '\\u2A55',\n\tandd: '\\u2A5C',\n\tandslope: '\\u2A58',\n\tandv: '\\u2A5A',\n\tang: '\\u2220',\n\tange: '\\u29A4',\n\tangle: '\\u2220',\n\tangmsd: '\\u2221',\n\tangmsdaa: '\\u29A8',\n\tangmsdab: '\\u29A9',\n\tangmsdac: '\\u29AA',\n\tangmsdad: '\\u29AB',\n\tangmsdae: '\\u29AC',\n\tangmsdaf: '\\u29AD',\n\tangmsdag: '\\u29AE',\n\tangmsdah: '\\u29AF',\n\tangrt: '\\u221F',\n\tangrtvb: '\\u22BE',\n\tangrtvbd: '\\u299D',\n\tangsph: '\\u2222',\n\tangst: '\\u00C5',\n\tangzarr: '\\u237C',\n\tAogon: '\\u0104',\n\taogon: '\\u0105',\n\tAopf: '\\uD835\\uDD38',\n\taopf: '\\uD835\\uDD52',\n\tap: '\\u2248',\n\tapacir: '\\u2A6F',\n\tapE: '\\u2A70',\n\tape: '\\u224A',\n\tapid: '\\u224B',\n\tapos: '\\u0027',\n\tApplyFunction: '\\u2061',\n\tapprox: '\\u2248',\n\tapproxeq: '\\u224A',\n\tAring: '\\u00C5',\n\taring: '\\u00E5',\n\tAscr: '\\uD835\\uDC9C',\n\tascr: '\\uD835\\uDCB6',\n\tAssign: '\\u2254',\n\tast: '\\u002A',\n\tasymp: '\\u2248',\n\tasympeq: '\\u224D',\n\tAtilde: '\\u00C3',\n\tatilde: '\\u00E3',\n\tAuml: '\\u00C4',\n\tauml: '\\u00E4',\n\tawconint: '\\u2233',\n\tawint: '\\u2A11',\n\tbackcong: '\\u224C',\n\tbackepsilon: '\\u03F6',\n\tbackprime: '\\u2035',\n\tbacksim: '\\u223D',\n\tbacksimeq: '\\u22CD',\n\tBackslash: '\\u2216',\n\tBarv: '\\u2AE7',\n\tbarvee: '\\u22BD',\n\tBarwed: '\\u2306',\n\tbarwed: '\\u2305',\n\tbarwedge: '\\u2305',\n\tbbrk: '\\u23B5',\n\tbbrktbrk: '\\u23B6',\n\tbcong: '\\u224C',\n\tBcy: '\\u0411',\n\tbcy: '\\u0431',\n\tbdquo: '\\u201E',\n\tbecaus: '\\u2235',\n\tBecause: '\\u2235',\n\tbecause: '\\u2235',\n\tbemptyv: '\\u29B0',\n\tbepsi: '\\u03F6',\n\tbernou: '\\u212C',\n\tBernoullis: '\\u212C',\n\tBeta: '\\u0392',\n\tbeta: '\\u03B2',\n\tbeth: '\\u2136',\n\tbetween: '\\u226C',\n\tBfr: '\\uD835\\uDD05',\n\tbfr: '\\uD835\\uDD1F',\n\tbigcap: '\\u22C2',\n\tbigcirc: '\\u25EF',\n\tbigcup: '\\u22C3',\n\tbigodot: '\\u2A00',\n\tbigoplus: '\\u2A01',\n\tbigotimes: '\\u2A02',\n\tbigsqcup: '\\u2A06',\n\tbigstar: '\\u2605',\n\tbigtriangledown: '\\u25BD',\n\tbigtriangleup: '\\u25B3',\n\tbiguplus: '\\u2A04',\n\tbigvee: '\\u22C1',\n\tbigwedge: '\\u22C0',\n\tbkarow: '\\u290D',\n\tblacklozenge: '\\u29EB',\n\tblacksquare: '\\u25AA',\n\tblacktriangle: '\\u25B4',\n\tblacktriangledown: '\\u25BE',\n\tblacktriangleleft: '\\u25C2',\n\tblacktriangleright: '\\u25B8',\n\tblank: '\\u2423',\n\tblk12: '\\u2592',\n\tblk14: '\\u2591',\n\tblk34: '\\u2593',\n\tblock: '\\u2588',\n\tbne: '\\u003D\\u20E5',\n\tbnequiv: '\\u2261\\u20E5',\n\tbNot: '\\u2AED',\n\tbnot: '\\u2310',\n\tBopf: '\\uD835\\uDD39',\n\tbopf: '\\uD835\\uDD53',\n\tbot: '\\u22A5',\n\tbottom: '\\u22A5',\n\tbowtie: '\\u22C8',\n\tboxbox: '\\u29C9',\n\tboxDL: '\\u2557',\n\tboxDl: '\\u2556',\n\tboxdL: '\\u2555',\n\tboxdl: '\\u2510',\n\tboxDR: '\\u2554',\n\tboxDr: '\\u2553',\n\tboxdR: '\\u2552',\n\tboxdr: '\\u250C',\n\tboxH: '\\u2550',\n\tboxh: '\\u2500',\n\tboxHD: '\\u2566',\n\tboxHd: '\\u2564',\n\tboxhD: '\\u2565',\n\tboxhd: '\\u252C',\n\tboxHU: '\\u2569',\n\tboxHu: '\\u2567',\n\tboxhU: '\\u2568',\n\tboxhu: '\\u2534',\n\tboxminus: '\\u229F',\n\tboxplus: '\\u229E',\n\tboxtimes: '\\u22A0',\n\tboxUL: '\\u255D',\n\tboxUl: '\\u255C',\n\tboxuL: '\\u255B',\n\tboxul: '\\u2518',\n\tboxUR: '\\u255A',\n\tboxUr: '\\u2559',\n\tboxuR: '\\u2558',\n\tboxur: '\\u2514',\n\tboxV: '\\u2551',\n\tboxv: '\\u2502',\n\tboxVH: '\\u256C',\n\tboxVh: '\\u256B',\n\tboxvH: '\\u256A',\n\tboxvh: '\\u253C',\n\tboxVL: '\\u2563',\n\tboxVl: '\\u2562',\n\tboxvL: '\\u2561',\n\tboxvl: '\\u2524',\n\tboxVR: '\\u2560',\n\tboxVr: '\\u255F',\n\tboxvR: '\\u255E',\n\tboxvr: '\\u251C',\n\tbprime: '\\u2035',\n\tBreve: '\\u02D8',\n\tbreve: '\\u02D8',\n\tbrvbar: '\\u00A6',\n\tBscr: '\\u212C',\n\tbscr: '\\uD835\\uDCB7',\n\tbsemi: '\\u204F',\n\tbsim: '\\u223D',\n\tbsime: '\\u22CD',\n\tbsol: '\\u005C',\n\tbsolb: '\\u29C5',\n\tbsolhsub: '\\u27C8',\n\tbull: '\\u2022',\n\tbullet: '\\u2022',\n\tbump: '\\u224E',\n\tbumpE: '\\u2AAE',\n\tbumpe: '\\u224F',\n\tBumpeq: '\\u224E',\n\tbumpeq: '\\u224F',\n\tCacute: '\\u0106',\n\tcacute: '\\u0107',\n\tCap: '\\u22D2',\n\tcap: '\\u2229',\n\tcapand: '\\u2A44',\n\tcapbrcup: '\\u2A49',\n\tcapcap: '\\u2A4B',\n\tcapcup: '\\u2A47',\n\tcapdot: '\\u2A40',\n\tCapitalDifferentialD: '\\u2145',\n\tcaps: '\\u2229\\uFE00',\n\tcaret: '\\u2041',\n\tcaron: '\\u02C7',\n\tCayleys: '\\u212D',\n\tccaps: '\\u2A4D',\n\tCcaron: '\\u010C',\n\tccaron: '\\u010D',\n\tCcedil: '\\u00C7',\n\tccedil: '\\u00E7',\n\tCcirc: '\\u0108',\n\tccirc: '\\u0109',\n\tCconint: '\\u2230',\n\tccups: '\\u2A4C',\n\tccupssm: '\\u2A50',\n\tCdot: '\\u010A',\n\tcdot: '\\u010B',\n\tcedil: '\\u00B8',\n\tCedilla: '\\u00B8',\n\tcemptyv: '\\u29B2',\n\tcent: '\\u00A2',\n\tCenterDot: '\\u00B7',\n\tcenterdot: '\\u00B7',\n\tCfr: '\\u212D',\n\tcfr: '\\uD835\\uDD20',\n\tCHcy: '\\u0427',\n\tchcy: '\\u0447',\n\tcheck: '\\u2713',\n\tcheckmark: '\\u2713',\n\tChi: '\\u03A7',\n\tchi: '\\u03C7',\n\tcir: '\\u25CB',\n\tcirc: '\\u02C6',\n\tcirceq: '\\u2257',\n\tcirclearrowleft: '\\u21BA',\n\tcirclearrowright: '\\u21BB',\n\tcircledast: '\\u229B',\n\tcircledcirc: '\\u229A',\n\tcircleddash: '\\u229D',\n\tCircleDot: '\\u2299',\n\tcircledR: '\\u00AE',\n\tcircledS: '\\u24C8',\n\tCircleMinus: '\\u2296',\n\tCirclePlus: '\\u2295',\n\tCircleTimes: '\\u2297',\n\tcirE: '\\u29C3',\n\tcire: '\\u2257',\n\tcirfnint: '\\u2A10',\n\tcirmid: '\\u2AEF',\n\tcirscir: '\\u29C2',\n\tClockwiseContourIntegral: '\\u2232',\n\tCloseCurlyDoubleQuote: '\\u201D',\n\tCloseCurlyQuote: '\\u2019',\n\tclubs: '\\u2663',\n\tclubsuit: '\\u2663',\n\tColon: '\\u2237',\n\tcolon: '\\u003A',\n\tColone: '\\u2A74',\n\tcolone: '\\u2254',\n\tcoloneq: '\\u2254',\n\tcomma: '\\u002C',\n\tcommat: '\\u0040',\n\tcomp: '\\u2201',\n\tcompfn: '\\u2218',\n\tcomplement: '\\u2201',\n\tcomplexes: '\\u2102',\n\tcong: '\\u2245',\n\tcongdot: '\\u2A6D',\n\tCongruent: '\\u2261',\n\tConint: '\\u222F',\n\tconint: '\\u222E',\n\tContourIntegral: '\\u222E',\n\tCopf: '\\u2102',\n\tcopf: '\\uD835\\uDD54',\n\tcoprod: '\\u2210',\n\tCoproduct: '\\u2210',\n\tCOPY: '\\u00A9',\n\tcopy: '\\u00A9',\n\tcopysr: '\\u2117',\n\tCounterClockwiseContourIntegral: '\\u2233',\n\tcrarr: '\\u21B5',\n\tCross: '\\u2A2F',\n\tcross: '\\u2717',\n\tCscr: '\\uD835\\uDC9E',\n\tcscr: '\\uD835\\uDCB8',\n\tcsub: '\\u2ACF',\n\tcsube: '\\u2AD1',\n\tcsup: '\\u2AD0',\n\tcsupe: '\\u2AD2',\n\tctdot: '\\u22EF',\n\tcudarrl: '\\u2938',\n\tcudarrr: '\\u2935',\n\tcuepr: '\\u22DE',\n\tcuesc: '\\u22DF',\n\tcularr: '\\u21B6',\n\tcularrp: '\\u293D',\n\tCup: '\\u22D3',\n\tcup: '\\u222A',\n\tcupbrcap: '\\u2A48',\n\tCupCap: '\\u224D',\n\tcupcap: '\\u2A46',\n\tcupcup: '\\u2A4A',\n\tcupdot: '\\u228D',\n\tcupor: '\\u2A45',\n\tcups: '\\u222A\\uFE00',\n\tcurarr: '\\u21B7',\n\tcurarrm: '\\u293C',\n\tcurlyeqprec: '\\u22DE',\n\tcurlyeqsucc: '\\u22DF',\n\tcurlyvee: '\\u22CE',\n\tcurlywedge: '\\u22CF',\n\tcurren: '\\u00A4',\n\tcurvearrowleft: '\\u21B6',\n\tcurvearrowright: '\\u21B7',\n\tcuvee: '\\u22CE',\n\tcuwed: '\\u22CF',\n\tcwconint: '\\u2232',\n\tcwint: '\\u2231',\n\tcylcty: '\\u232D',\n\tDagger: '\\u2021',\n\tdagger: '\\u2020',\n\tdaleth: '\\u2138',\n\tDarr: '\\u21A1',\n\tdArr: '\\u21D3',\n\tdarr: '\\u2193',\n\tdash: '\\u2010',\n\tDashv: '\\u2AE4',\n\tdashv: '\\u22A3',\n\tdbkarow: '\\u290F',\n\tdblac: '\\u02DD',\n\tDcaron: '\\u010E',\n\tdcaron: '\\u010F',\n\tDcy: '\\u0414',\n\tdcy: '\\u0434',\n\tDD: '\\u2145',\n\tdd: '\\u2146',\n\tddagger: '\\u2021',\n\tddarr: '\\u21CA',\n\tDDotrahd: '\\u2911',\n\tddotseq: '\\u2A77',\n\tdeg: '\\u00B0',\n\tDel: '\\u2207',\n\tDelta: '\\u0394',\n\tdelta: '\\u03B4',\n\tdemptyv: '\\u29B1',\n\tdfisht: '\\u297F',\n\tDfr: '\\uD835\\uDD07',\n\tdfr: '\\uD835\\uDD21',\n\tdHar: '\\u2965',\n\tdharl: '\\u21C3',\n\tdharr: '\\u21C2',\n\tDiacriticalAcute: '\\u00B4',\n\tDiacriticalDot: '\\u02D9',\n\tDiacriticalDoubleAcute: '\\u02DD',\n\tDiacriticalGrave: '\\u0060',\n\tDiacriticalTilde: '\\u02DC',\n\tdiam: '\\u22C4',\n\tDiamond: '\\u22C4',\n\tdiamond: '\\u22C4',\n\tdiamondsuit: '\\u2666',\n\tdiams: '\\u2666',\n\tdie: '\\u00A8',\n\tDifferentialD: '\\u2146',\n\tdigamma: '\\u03DD',\n\tdisin: '\\u22F2',\n\tdiv: '\\u00F7',\n\tdivide: '\\u00F7',\n\tdivideontimes: '\\u22C7',\n\tdivonx: '\\u22C7',\n\tDJcy: '\\u0402',\n\tdjcy: '\\u0452',\n\tdlcorn: '\\u231E',\n\tdlcrop: '\\u230D',\n\tdollar: '\\u0024',\n\tDopf: '\\uD835\\uDD3B',\n\tdopf: '\\uD835\\uDD55',\n\tDot: '\\u00A8',\n\tdot: '\\u02D9',\n\tDotDot: '\\u20DC',\n\tdoteq: '\\u2250',\n\tdoteqdot: '\\u2251',\n\tDotEqual: '\\u2250',\n\tdotminus: '\\u2238',\n\tdotplus: '\\u2214',\n\tdotsquare: '\\u22A1',\n\tdoublebarwedge: '\\u2306',\n\tDoubleContourIntegral: '\\u222F',\n\tDoubleDot: '\\u00A8',\n\tDoubleDownArrow: '\\u21D3',\n\tDoubleLeftArrow: '\\u21D0',\n\tDoubleLeftRightArrow: '\\u21D4',\n\tDoubleLeftTee: '\\u2AE4',\n\tDoubleLongLeftArrow: '\\u27F8',\n\tDoubleLongLeftRightArrow: '\\u27FA',\n\tDoubleLongRightArrow: '\\u27F9',\n\tDoubleRightArrow: '\\u21D2',\n\tDoubleRightTee: '\\u22A8',\n\tDoubleUpArrow: '\\u21D1',\n\tDoubleUpDownArrow: '\\u21D5',\n\tDoubleVerticalBar: '\\u2225',\n\tDownArrow: '\\u2193',\n\tDownarrow: '\\u21D3',\n\tdownarrow: '\\u2193',\n\tDownArrowBar: '\\u2913',\n\tDownArrowUpArrow: '\\u21F5',\n\tDownBreve: '\\u0311',\n\tdowndownarrows: '\\u21CA',\n\tdownharpoonleft: '\\u21C3',\n\tdownharpoonright: '\\u21C2',\n\tDownLeftRightVector: '\\u2950',\n\tDownLeftTeeVector: '\\u295E',\n\tDownLeftVector: '\\u21BD',\n\tDownLeftVectorBar: '\\u2956',\n\tDownRightTeeVector: '\\u295F',\n\tDownRightVector: '\\u21C1',\n\tDownRightVectorBar: '\\u2957',\n\tDownTee: '\\u22A4',\n\tDownTeeArrow: '\\u21A7',\n\tdrbkarow: '\\u2910',\n\tdrcorn: '\\u231F',\n\tdrcrop: '\\u230C',\n\tDscr: '\\uD835\\uDC9F',\n\tdscr: '\\uD835\\uDCB9',\n\tDScy: '\\u0405',\n\tdscy: '\\u0455',\n\tdsol: '\\u29F6',\n\tDstrok: '\\u0110',\n\tdstrok: '\\u0111',\n\tdtdot: '\\u22F1',\n\tdtri: '\\u25BF',\n\tdtrif: '\\u25BE',\n\tduarr: '\\u21F5',\n\tduhar: '\\u296F',\n\tdwangle: '\\u29A6',\n\tDZcy: '\\u040F',\n\tdzcy: '\\u045F',\n\tdzigrarr: '\\u27FF',\n\tEacute: '\\u00C9',\n\teacute: '\\u00E9',\n\teaster: '\\u2A6E',\n\tEcaron: '\\u011A',\n\tecaron: '\\u011B',\n\tecir: '\\u2256',\n\tEcirc: '\\u00CA',\n\tecirc: '\\u00EA',\n\tecolon: '\\u2255',\n\tEcy: '\\u042D',\n\tecy: '\\u044D',\n\teDDot: '\\u2A77',\n\tEdot: '\\u0116',\n\teDot: '\\u2251',\n\tedot: '\\u0117',\n\tee: '\\u2147',\n\tefDot: '\\u2252',\n\tEfr: '\\uD835\\uDD08',\n\tefr: '\\uD835\\uDD22',\n\teg: '\\u2A9A',\n\tEgrave: '\\u00C8',\n\tegrave: '\\u00E8',\n\tegs: '\\u2A96',\n\tegsdot: '\\u2A98',\n\tel: '\\u2A99',\n\tElement: '\\u2208',\n\telinters: '\\u23E7',\n\tell: '\\u2113',\n\tels: '\\u2A95',\n\telsdot: '\\u2A97',\n\tEmacr: '\\u0112',\n\temacr: '\\u0113',\n\tempty: '\\u2205',\n\temptyset: '\\u2205',\n\tEmptySmallSquare: '\\u25FB',\n\temptyv: '\\u2205',\n\tEmptyVerySmallSquare: '\\u25AB',\n\temsp: '\\u2003',\n\temsp13: '\\u2004',\n\temsp14: '\\u2005',\n\tENG: '\\u014A',\n\teng: '\\u014B',\n\tensp: '\\u2002',\n\tEogon: '\\u0118',\n\teogon: '\\u0119',\n\tEopf: '\\uD835\\uDD3C',\n\teopf: '\\uD835\\uDD56',\n\tepar: '\\u22D5',\n\teparsl: '\\u29E3',\n\teplus: '\\u2A71',\n\tepsi: '\\u03B5',\n\tEpsilon: '\\u0395',\n\tepsilon: '\\u03B5',\n\tepsiv: '\\u03F5',\n\teqcirc: '\\u2256',\n\teqcolon: '\\u2255',\n\teqsim: '\\u2242',\n\teqslantgtr: '\\u2A96',\n\teqslantless: '\\u2A95',\n\tEqual: '\\u2A75',\n\tequals: '\\u003D',\n\tEqualTilde: '\\u2242',\n\tequest: '\\u225F',\n\tEquilibrium: '\\u21CC',\n\tequiv: '\\u2261',\n\tequivDD: '\\u2A78',\n\teqvparsl: '\\u29E5',\n\terarr: '\\u2971',\n\terDot: '\\u2253',\n\tEscr: '\\u2130',\n\tescr: '\\u212F',\n\tesdot: '\\u2250',\n\tEsim: '\\u2A73',\n\tesim: '\\u2242',\n\tEta: '\\u0397',\n\teta: '\\u03B7',\n\tETH: '\\u00D0',\n\teth: '\\u00F0',\n\tEuml: '\\u00CB',\n\teuml: '\\u00EB',\n\teuro: '\\u20AC',\n\texcl: '\\u0021',\n\texist: '\\u2203',\n\tExists: '\\u2203',\n\texpectation: '\\u2130',\n\tExponentialE: '\\u2147',\n\texponentiale: '\\u2147',\n\tfallingdotseq: '\\u2252',\n\tFcy: '\\u0424',\n\tfcy: '\\u0444',\n\tfemale: '\\u2640',\n\tffilig: '\\uFB03',\n\tfflig: '\\uFB00',\n\tffllig: '\\uFB04',\n\tFfr: '\\uD835\\uDD09',\n\tffr: '\\uD835\\uDD23',\n\tfilig: '\\uFB01',\n\tFilledSmallSquare: '\\u25FC',\n\tFilledVerySmallSquare: '\\u25AA',\n\tfjlig: '\\u0066\\u006A',\n\tflat: '\\u266D',\n\tfllig: '\\uFB02',\n\tfltns: '\\u25B1',\n\tfnof: '\\u0192',\n\tFopf: '\\uD835\\uDD3D',\n\tfopf: '\\uD835\\uDD57',\n\tForAll: '\\u2200',\n\tforall: '\\u2200',\n\tfork: '\\u22D4',\n\tforkv: '\\u2AD9',\n\tFouriertrf: '\\u2131',\n\tfpartint: '\\u2A0D',\n\tfrac12: '\\u00BD',\n\tfrac13: '\\u2153',\n\tfrac14: '\\u00BC',\n\tfrac15: '\\u2155',\n\tfrac16: '\\u2159',\n\tfrac18: '\\u215B',\n\tfrac23: '\\u2154',\n\tfrac25: '\\u2156',\n\tfrac34: '\\u00BE',\n\tfrac35: '\\u2157',\n\tfrac38: '\\u215C',\n\tfrac45: '\\u2158',\n\tfrac56: '\\u215A',\n\tfrac58: '\\u215D',\n\tfrac78: '\\u215E',\n\tfrasl: '\\u2044',\n\tfrown: '\\u2322',\n\tFscr: '\\u2131',\n\tfscr: '\\uD835\\uDCBB',\n\tgacute: '\\u01F5',\n\tGamma: '\\u0393',\n\tgamma: '\\u03B3',\n\tGammad: '\\u03DC',\n\tgammad: '\\u03DD',\n\tgap: '\\u2A86',\n\tGbreve: '\\u011E',\n\tgbreve: '\\u011F',\n\tGcedil: '\\u0122',\n\tGcirc: '\\u011C',\n\tgcirc: '\\u011D',\n\tGcy: '\\u0413',\n\tgcy: '\\u0433',\n\tGdot: '\\u0120',\n\tgdot: '\\u0121',\n\tgE: '\\u2267',\n\tge: '\\u2265',\n\tgEl: '\\u2A8C',\n\tgel: '\\u22DB',\n\tgeq: '\\u2265',\n\tgeqq: '\\u2267',\n\tgeqslant: '\\u2A7E',\n\tges: '\\u2A7E',\n\tgescc: '\\u2AA9',\n\tgesdot: '\\u2A80',\n\tgesdoto: '\\u2A82',\n\tgesdotol: '\\u2A84',\n\tgesl: '\\u22DB\\uFE00',\n\tgesles: '\\u2A94',\n\tGfr: '\\uD835\\uDD0A',\n\tgfr: '\\uD835\\uDD24',\n\tGg: '\\u22D9',\n\tgg: '\\u226B',\n\tggg: '\\u22D9',\n\tgimel: '\\u2137',\n\tGJcy: '\\u0403',\n\tgjcy: '\\u0453',\n\tgl: '\\u2277',\n\tgla: '\\u2AA5',\n\tglE: '\\u2A92',\n\tglj: '\\u2AA4',\n\tgnap: '\\u2A8A',\n\tgnapprox: '\\u2A8A',\n\tgnE: '\\u2269',\n\tgne: '\\u2A88',\n\tgneq: '\\u2A88',\n\tgneqq: '\\u2269',\n\tgnsim: '\\u22E7',\n\tGopf: '\\uD835\\uDD3E',\n\tgopf: '\\uD835\\uDD58',\n\tgrave: '\\u0060',\n\tGreaterEqual: '\\u2265',\n\tGreaterEqualLess: '\\u22DB',\n\tGreaterFullEqual: '\\u2267',\n\tGreaterGreater: '\\u2AA2',\n\tGreaterLess: '\\u2277',\n\tGreaterSlantEqual: '\\u2A7E',\n\tGreaterTilde: '\\u2273',\n\tGscr: '\\uD835\\uDCA2',\n\tgscr: '\\u210A',\n\tgsim: '\\u2273',\n\tgsime: '\\u2A8E',\n\tgsiml: '\\u2A90',\n\tGt: '\\u226B',\n\tGT: '\\u003E',\n\tgt: '\\u003E',\n\tgtcc: '\\u2AA7',\n\tgtcir: '\\u2A7A',\n\tgtdot: '\\u22D7',\n\tgtlPar: '\\u2995',\n\tgtquest: '\\u2A7C',\n\tgtrapprox: '\\u2A86',\n\tgtrarr: '\\u2978',\n\tgtrdot: '\\u22D7',\n\tgtreqless: '\\u22DB',\n\tgtreqqless: '\\u2A8C',\n\tgtrless: '\\u2277',\n\tgtrsim: '\\u2273',\n\tgvertneqq: '\\u2269\\uFE00',\n\tgvnE: '\\u2269\\uFE00',\n\tHacek: '\\u02C7',\n\thairsp: '\\u200A',\n\thalf: '\\u00BD',\n\thamilt: '\\u210B',\n\tHARDcy: '\\u042A',\n\thardcy: '\\u044A',\n\thArr: '\\u21D4',\n\tharr: '\\u2194',\n\tharrcir: '\\u2948',\n\tharrw: '\\u21AD',\n\tHat: '\\u005E',\n\thbar: '\\u210F',\n\tHcirc: '\\u0124',\n\thcirc: '\\u0125',\n\thearts: '\\u2665',\n\theartsuit: '\\u2665',\n\thellip: '\\u2026',\n\thercon: '\\u22B9',\n\tHfr: '\\u210C',\n\thfr: '\\uD835\\uDD25',\n\tHilbertSpace: '\\u210B',\n\thksearow: '\\u2925',\n\thkswarow: '\\u2926',\n\thoarr: '\\u21FF',\n\thomtht: '\\u223B',\n\thookleftarrow: '\\u21A9',\n\thookrightarrow: '\\u21AA',\n\tHopf: '\\u210D',\n\thopf: '\\uD835\\uDD59',\n\thorbar: '\\u2015',\n\tHorizontalLine: '\\u2500',\n\tHscr: '\\u210B',\n\thscr: '\\uD835\\uDCBD',\n\thslash: '\\u210F',\n\tHstrok: '\\u0126',\n\thstrok: '\\u0127',\n\tHumpDownHump: '\\u224E',\n\tHumpEqual: '\\u224F',\n\thybull: '\\u2043',\n\thyphen: '\\u2010',\n\tIacute: '\\u00CD',\n\tiacute: '\\u00ED',\n\tic: '\\u2063',\n\tIcirc: '\\u00CE',\n\ticirc: '\\u00EE',\n\tIcy: '\\u0418',\n\ticy: '\\u0438',\n\tIdot: '\\u0130',\n\tIEcy: '\\u0415',\n\tiecy: '\\u0435',\n\tiexcl: '\\u00A1',\n\tiff: '\\u21D4',\n\tIfr: '\\u2111',\n\tifr: '\\uD835\\uDD26',\n\tIgrave: '\\u00CC',\n\tigrave: '\\u00EC',\n\tii: '\\u2148',\n\tiiiint: '\\u2A0C',\n\tiiint: '\\u222D',\n\tiinfin: '\\u29DC',\n\tiiota: '\\u2129',\n\tIJlig: '\\u0132',\n\tijlig: '\\u0133',\n\tIm: '\\u2111',\n\tImacr: '\\u012A',\n\timacr: '\\u012B',\n\timage: '\\u2111',\n\tImaginaryI: '\\u2148',\n\timagline: '\\u2110',\n\timagpart: '\\u2111',\n\timath: '\\u0131',\n\timof: '\\u22B7',\n\timped: '\\u01B5',\n\tImplies: '\\u21D2',\n\tin: '\\u2208',\n\tincare: '\\u2105',\n\tinfin: '\\u221E',\n\tinfintie: '\\u29DD',\n\tinodot: '\\u0131',\n\tInt: '\\u222C',\n\tint: '\\u222B',\n\tintcal: '\\u22BA',\n\tintegers: '\\u2124',\n\tIntegral: '\\u222B',\n\tintercal: '\\u22BA',\n\tIntersection: '\\u22C2',\n\tintlarhk: '\\u2A17',\n\tintprod: '\\u2A3C',\n\tInvisibleComma: '\\u2063',\n\tInvisibleTimes: '\\u2062',\n\tIOcy: '\\u0401',\n\tiocy: '\\u0451',\n\tIogon: '\\u012E',\n\tiogon: '\\u012F',\n\tIopf: '\\uD835\\uDD40',\n\tiopf: '\\uD835\\uDD5A',\n\tIota: '\\u0399',\n\tiota: '\\u03B9',\n\tiprod: '\\u2A3C',\n\tiquest: '\\u00BF',\n\tIscr: '\\u2110',\n\tiscr: '\\uD835\\uDCBE',\n\tisin: '\\u2208',\n\tisindot: '\\u22F5',\n\tisinE: '\\u22F9',\n\tisins: '\\u22F4',\n\tisinsv: '\\u22F3',\n\tisinv: '\\u2208',\n\tit: '\\u2062',\n\tItilde: '\\u0128',\n\titilde: '\\u0129',\n\tIukcy: '\\u0406',\n\tiukcy: '\\u0456',\n\tIuml: '\\u00CF',\n\tiuml: '\\u00EF',\n\tJcirc: '\\u0134',\n\tjcirc: '\\u0135',\n\tJcy: '\\u0419',\n\tjcy: '\\u0439',\n\tJfr: '\\uD835\\uDD0D',\n\tjfr: '\\uD835\\uDD27',\n\tjmath: '\\u0237',\n\tJopf: '\\uD835\\uDD41',\n\tjopf: '\\uD835\\uDD5B',\n\tJscr: '\\uD835\\uDCA5',\n\tjscr: '\\uD835\\uDCBF',\n\tJsercy: '\\u0408',\n\tjsercy: '\\u0458',\n\tJukcy: '\\u0404',\n\tjukcy: '\\u0454',\n\tKappa: '\\u039A',\n\tkappa: '\\u03BA',\n\tkappav: '\\u03F0',\n\tKcedil: '\\u0136',\n\tkcedil: '\\u0137',\n\tKcy: '\\u041A',\n\tkcy: '\\u043A',\n\tKfr: '\\uD835\\uDD0E',\n\tkfr: '\\uD835\\uDD28',\n\tkgreen: '\\u0138',\n\tKHcy: '\\u0425',\n\tkhcy: '\\u0445',\n\tKJcy: '\\u040C',\n\tkjcy: '\\u045C',\n\tKopf: '\\uD835\\uDD42',\n\tkopf: '\\uD835\\uDD5C',\n\tKscr: '\\uD835\\uDCA6',\n\tkscr: '\\uD835\\uDCC0',\n\tlAarr: '\\u21DA',\n\tLacute: '\\u0139',\n\tlacute: '\\u013A',\n\tlaemptyv: '\\u29B4',\n\tlagran: '\\u2112',\n\tLambda: '\\u039B',\n\tlambda: '\\u03BB',\n\tLang: '\\u27EA',\n\tlang: '\\u27E8',\n\tlangd: '\\u2991',\n\tlangle: '\\u27E8',\n\tlap: '\\u2A85',\n\tLaplacetrf: '\\u2112',\n\tlaquo: '\\u00AB',\n\tLarr: '\\u219E',\n\tlArr: '\\u21D0',\n\tlarr: '\\u2190',\n\tlarrb: '\\u21E4',\n\tlarrbfs: '\\u291F',\n\tlarrfs: '\\u291D',\n\tlarrhk: '\\u21A9',\n\tlarrlp: '\\u21AB',\n\tlarrpl: '\\u2939',\n\tlarrsim: '\\u2973',\n\tlarrtl: '\\u21A2',\n\tlat: '\\u2AAB',\n\tlAtail: '\\u291B',\n\tlatail: '\\u2919',\n\tlate: '\\u2AAD',\n\tlates: '\\u2AAD\\uFE00',\n\tlBarr: '\\u290E',\n\tlbarr: '\\u290C',\n\tlbbrk: '\\u2772',\n\tlbrace: '\\u007B',\n\tlbrack: '\\u005B',\n\tlbrke: '\\u298B',\n\tlbrksld: '\\u298F',\n\tlbrkslu: '\\u298D',\n\tLcaron: '\\u013D',\n\tlcaron: '\\u013E',\n\tLcedil: '\\u013B',\n\tlcedil: '\\u013C',\n\tlceil: '\\u2308',\n\tlcub: '\\u007B',\n\tLcy: '\\u041B',\n\tlcy: '\\u043B',\n\tldca: '\\u2936',\n\tldquo: '\\u201C',\n\tldquor: '\\u201E',\n\tldrdhar: '\\u2967',\n\tldrushar: '\\u294B',\n\tldsh: '\\u21B2',\n\tlE: '\\u2266',\n\tle: '\\u2264',\n\tLeftAngleBracket: '\\u27E8',\n\tLeftArrow: '\\u2190',\n\tLeftarrow: '\\u21D0',\n\tleftarrow: '\\u2190',\n\tLeftArrowBar: '\\u21E4',\n\tLeftArrowRightArrow: '\\u21C6',\n\tleftarrowtail: '\\u21A2',\n\tLeftCeiling: '\\u2308',\n\tLeftDoubleBracket: '\\u27E6',\n\tLeftDownTeeVector: '\\u2961',\n\tLeftDownVector: '\\u21C3',\n\tLeftDownVectorBar: '\\u2959',\n\tLeftFloor: '\\u230A',\n\tleftharpoondown: '\\u21BD',\n\tleftharpoonup: '\\u21BC',\n\tleftleftarrows: '\\u21C7',\n\tLeftRightArrow: '\\u2194',\n\tLeftrightarrow: '\\u21D4',\n\tleftrightarrow: '\\u2194',\n\tleftrightarrows: '\\u21C6',\n\tleftrightharpoons: '\\u21CB',\n\tleftrightsquigarrow: '\\u21AD',\n\tLeftRightVector: '\\u294E',\n\tLeftTee: '\\u22A3',\n\tLeftTeeArrow: '\\u21A4',\n\tLeftTeeVector: '\\u295A',\n\tleftthreetimes: '\\u22CB',\n\tLeftTriangle: '\\u22B2',\n\tLeftTriangleBar: '\\u29CF',\n\tLeftTriangleEqual: '\\u22B4',\n\tLeftUpDownVector: '\\u2951',\n\tLeftUpTeeVector: '\\u2960',\n\tLeftUpVector: '\\u21BF',\n\tLeftUpVectorBar: '\\u2958',\n\tLeftVector: '\\u21BC',\n\tLeftVectorBar: '\\u2952',\n\tlEg: '\\u2A8B',\n\tleg: '\\u22DA',\n\tleq: '\\u2264',\n\tleqq: '\\u2266',\n\tleqslant: '\\u2A7D',\n\tles: '\\u2A7D',\n\tlescc: '\\u2AA8',\n\tlesdot: '\\u2A7F',\n\tlesdoto: '\\u2A81',\n\tlesdotor: '\\u2A83',\n\tlesg: '\\u22DA\\uFE00',\n\tlesges: '\\u2A93',\n\tlessapprox: '\\u2A85',\n\tlessdot: '\\u22D6',\n\tlesseqgtr: '\\u22DA',\n\tlesseqqgtr: '\\u2A8B',\n\tLessEqualGreater: '\\u22DA',\n\tLessFullEqual: '\\u2266',\n\tLessGreater: '\\u2276',\n\tlessgtr: '\\u2276',\n\tLessLess: '\\u2AA1',\n\tlesssim: '\\u2272',\n\tLessSlantEqual: '\\u2A7D',\n\tLessTilde: '\\u2272',\n\tlfisht: '\\u297C',\n\tlfloor: '\\u230A',\n\tLfr: '\\uD835\\uDD0F',\n\tlfr: '\\uD835\\uDD29',\n\tlg: '\\u2276',\n\tlgE: '\\u2A91',\n\tlHar: '\\u2962',\n\tlhard: '\\u21BD',\n\tlharu: '\\u21BC',\n\tlharul: '\\u296A',\n\tlhblk: '\\u2584',\n\tLJcy: '\\u0409',\n\tljcy: '\\u0459',\n\tLl: '\\u22D8',\n\tll: '\\u226A',\n\tllarr: '\\u21C7',\n\tllcorner: '\\u231E',\n\tLleftarrow: '\\u21DA',\n\tllhard: '\\u296B',\n\tlltri: '\\u25FA',\n\tLmidot: '\\u013F',\n\tlmidot: '\\u0140',\n\tlmoust: '\\u23B0',\n\tlmoustache: '\\u23B0',\n\tlnap: '\\u2A89',\n\tlnapprox: '\\u2A89',\n\tlnE: '\\u2268',\n\tlne: '\\u2A87',\n\tlneq: '\\u2A87',\n\tlneqq: '\\u2268',\n\tlnsim: '\\u22E6',\n\tloang: '\\u27EC',\n\tloarr: '\\u21FD',\n\tlobrk: '\\u27E6',\n\tLongLeftArrow: '\\u27F5',\n\tLongleftarrow: '\\u27F8',\n\tlongleftarrow: '\\u27F5',\n\tLongLeftRightArrow: '\\u27F7',\n\tLongleftrightarrow: '\\u27FA',\n\tlongleftrightarrow: '\\u27F7',\n\tlongmapsto: '\\u27FC',\n\tLongRightArrow: '\\u27F6',\n\tLongrightarrow: '\\u27F9',\n\tlongrightarrow: '\\u27F6',\n\tlooparrowleft: '\\u21AB',\n\tlooparrowright: '\\u21AC',\n\tlopar: '\\u2985',\n\tLopf: '\\uD835\\uDD43',\n\tlopf: '\\uD835\\uDD5D',\n\tloplus: '\\u2A2D',\n\tlotimes: '\\u2A34',\n\tlowast: '\\u2217',\n\tlowbar: '\\u005F',\n\tLowerLeftArrow: '\\u2199',\n\tLowerRightArrow: '\\u2198',\n\tloz: '\\u25CA',\n\tlozenge: '\\u25CA',\n\tlozf: '\\u29EB',\n\tlpar: '\\u0028',\n\tlparlt: '\\u2993',\n\tlrarr: '\\u21C6',\n\tlrcorner: '\\u231F',\n\tlrhar: '\\u21CB',\n\tlrhard: '\\u296D',\n\tlrm: '\\u200E',\n\tlrtri: '\\u22BF',\n\tlsaquo: '\\u2039',\n\tLscr: '\\u2112',\n\tlscr: '\\uD835\\uDCC1',\n\tLsh: '\\u21B0',\n\tlsh: '\\u21B0',\n\tlsim: '\\u2272',\n\tlsime: '\\u2A8D',\n\tlsimg: '\\u2A8F',\n\tlsqb: '\\u005B',\n\tlsquo: '\\u2018',\n\tlsquor: '\\u201A',\n\tLstrok: '\\u0141',\n\tlstrok: '\\u0142',\n\tLt: '\\u226A',\n\tLT: '\\u003C',\n\tlt: '\\u003C',\n\tltcc: '\\u2AA6',\n\tltcir: '\\u2A79',\n\tltdot: '\\u22D6',\n\tlthree: '\\u22CB',\n\tltimes: '\\u22C9',\n\tltlarr: '\\u2976',\n\tltquest: '\\u2A7B',\n\tltri: '\\u25C3',\n\tltrie: '\\u22B4',\n\tltrif: '\\u25C2',\n\tltrPar: '\\u2996',\n\tlurdshar: '\\u294A',\n\tluruhar: '\\u2966',\n\tlvertneqq: '\\u2268\\uFE00',\n\tlvnE: '\\u2268\\uFE00',\n\tmacr: '\\u00AF',\n\tmale: '\\u2642',\n\tmalt: '\\u2720',\n\tmaltese: '\\u2720',\n\tMap: '\\u2905',\n\tmap: '\\u21A6',\n\tmapsto: '\\u21A6',\n\tmapstodown: '\\u21A7',\n\tmapstoleft: '\\u21A4',\n\tmapstoup: '\\u21A5',\n\tmarker: '\\u25AE',\n\tmcomma: '\\u2A29',\n\tMcy: '\\u041C',\n\tmcy: '\\u043C',\n\tmdash: '\\u2014',\n\tmDDot: '\\u223A',\n\tmeasuredangle: '\\u2221',\n\tMediumSpace: '\\u205F',\n\tMellintrf: '\\u2133',\n\tMfr: '\\uD835\\uDD10',\n\tmfr: '\\uD835\\uDD2A',\n\tmho: '\\u2127',\n\tmicro: '\\u00B5',\n\tmid: '\\u2223',\n\tmidast: '\\u002A',\n\tmidcir: '\\u2AF0',\n\tmiddot: '\\u00B7',\n\tminus: '\\u2212',\n\tminusb: '\\u229F',\n\tminusd: '\\u2238',\n\tminusdu: '\\u2A2A',\n\tMinusPlus: '\\u2213',\n\tmlcp: '\\u2ADB',\n\tmldr: '\\u2026',\n\tmnplus: '\\u2213',\n\tmodels: '\\u22A7',\n\tMopf: '\\uD835\\uDD44',\n\tmopf: '\\uD835\\uDD5E',\n\tmp: '\\u2213',\n\tMscr: '\\u2133',\n\tmscr: '\\uD835\\uDCC2',\n\tmstpos: '\\u223E',\n\tMu: '\\u039C',\n\tmu: '\\u03BC',\n\tmultimap: '\\u22B8',\n\tmumap: '\\u22B8',\n\tnabla: '\\u2207',\n\tNacute: '\\u0143',\n\tnacute: '\\u0144',\n\tnang: '\\u2220\\u20D2',\n\tnap: '\\u2249',\n\tnapE: '\\u2A70\\u0338',\n\tnapid: '\\u224B\\u0338',\n\tnapos: '\\u0149',\n\tnapprox: '\\u2249',\n\tnatur: '\\u266E',\n\tnatural: '\\u266E',\n\tnaturals: '\\u2115',\n\tnbsp: '\\u00A0',\n\tnbump: '\\u224E\\u0338',\n\tnbumpe: '\\u224F\\u0338',\n\tncap: '\\u2A43',\n\tNcaron: '\\u0147',\n\tncaron: '\\u0148',\n\tNcedil: '\\u0145',\n\tncedil: '\\u0146',\n\tncong: '\\u2247',\n\tncongdot: '\\u2A6D\\u0338',\n\tncup: '\\u2A42',\n\tNcy: '\\u041D',\n\tncy: '\\u043D',\n\tndash: '\\u2013',\n\tne: '\\u2260',\n\tnearhk: '\\u2924',\n\tneArr: '\\u21D7',\n\tnearr: '\\u2197',\n\tnearrow: '\\u2197',\n\tnedot: '\\u2250\\u0338',\n\tNegativeMediumSpace: '\\u200B',\n\tNegativeThickSpace: '\\u200B',\n\tNegativeThinSpace: '\\u200B',\n\tNegativeVeryThinSpace: '\\u200B',\n\tnequiv: '\\u2262',\n\tnesear: '\\u2928',\n\tnesim: '\\u2242\\u0338',\n\tNestedGreaterGreater: '\\u226B',\n\tNestedLessLess: '\\u226A',\n\tNewLine: '\\u000A',\n\tnexist: '\\u2204',\n\tnexists: '\\u2204',\n\tNfr: '\\uD835\\uDD11',\n\tnfr: '\\uD835\\uDD2B',\n\tngE: '\\u2267\\u0338',\n\tnge: '\\u2271',\n\tngeq: '\\u2271',\n\tngeqq: '\\u2267\\u0338',\n\tngeqslant: '\\u2A7E\\u0338',\n\tnges: '\\u2A7E\\u0338',\n\tnGg: '\\u22D9\\u0338',\n\tngsim: '\\u2275',\n\tnGt: '\\u226B\\u20D2',\n\tngt: '\\u226F',\n\tngtr: '\\u226F',\n\tnGtv: '\\u226B\\u0338',\n\tnhArr: '\\u21CE',\n\tnharr: '\\u21AE',\n\tnhpar: '\\u2AF2',\n\tni: '\\u220B',\n\tnis: '\\u22FC',\n\tnisd: '\\u22FA',\n\tniv: '\\u220B',\n\tNJcy: '\\u040A',\n\tnjcy: '\\u045A',\n\tnlArr: '\\u21CD',\n\tnlarr: '\\u219A',\n\tnldr: '\\u2025',\n\tnlE: '\\u2266\\u0338',\n\tnle: '\\u2270',\n\tnLeftarrow: '\\u21CD',\n\tnleftarrow: '\\u219A',\n\tnLeftrightarrow: '\\u21CE',\n\tnleftrightarrow: '\\u21AE',\n\tnleq: '\\u2270',\n\tnleqq: '\\u2266\\u0338',\n\tnleqslant: '\\u2A7D\\u0338',\n\tnles: '\\u2A7D\\u0338',\n\tnless: '\\u226E',\n\tnLl: '\\u22D8\\u0338',\n\tnlsim: '\\u2274',\n\tnLt: '\\u226A\\u20D2',\n\tnlt: '\\u226E',\n\tnltri: '\\u22EA',\n\tnltrie: '\\u22EC',\n\tnLtv: '\\u226A\\u0338',\n\tnmid: '\\u2224',\n\tNoBreak: '\\u2060',\n\tNonBreakingSpace: '\\u00A0',\n\tNopf: '\\u2115',\n\tnopf: '\\uD835\\uDD5F',\n\tNot: '\\u2AEC',\n\tnot: '\\u00AC',\n\tNotCongruent: '\\u2262',\n\tNotCupCap: '\\u226D',\n\tNotDoubleVerticalBar: '\\u2226',\n\tNotElement: '\\u2209',\n\tNotEqual: '\\u2260',\n\tNotEqualTilde: '\\u2242\\u0338',\n\tNotExists: '\\u2204',\n\tNotGreater: '\\u226F',\n\tNotGreaterEqual: '\\u2271',\n\tNotGreaterFullEqual: '\\u2267\\u0338',\n\tNotGreaterGreater: '\\u226B\\u0338',\n\tNotGreaterLess: '\\u2279',\n\tNotGreaterSlantEqual: '\\u2A7E\\u0338',\n\tNotGreaterTilde: '\\u2275',\n\tNotHumpDownHump: '\\u224E\\u0338',\n\tNotHumpEqual: '\\u224F\\u0338',\n\tnotin: '\\u2209',\n\tnotindot: '\\u22F5\\u0338',\n\tnotinE: '\\u22F9\\u0338',\n\tnotinva: '\\u2209',\n\tnotinvb: '\\u22F7',\n\tnotinvc: '\\u22F6',\n\tNotLeftTriangle: '\\u22EA',\n\tNotLeftTriangleBar: '\\u29CF\\u0338',\n\tNotLeftTriangleEqual: '\\u22EC',\n\tNotLess: '\\u226E',\n\tNotLessEqual: '\\u2270',\n\tNotLessGreater: '\\u2278',\n\tNotLessLess: '\\u226A\\u0338',\n\tNotLessSlantEqual: '\\u2A7D\\u0338',\n\tNotLessTilde: '\\u2274',\n\tNotNestedGreaterGreater: '\\u2AA2\\u0338',\n\tNotNestedLessLess: '\\u2AA1\\u0338',\n\tnotni: '\\u220C',\n\tnotniva: '\\u220C',\n\tnotnivb: '\\u22FE',\n\tnotnivc: '\\u22FD',\n\tNotPrecedes: '\\u2280',\n\tNotPrecedesEqual: '\\u2AAF\\u0338',\n\tNotPrecedesSlantEqual: '\\u22E0',\n\tNotReverseElement: '\\u220C',\n\tNotRightTriangle: '\\u22EB',\n\tNotRightTriangleBar: '\\u29D0\\u0338',\n\tNotRightTriangleEqual: '\\u22ED',\n\tNotSquareSubset: '\\u228F\\u0338',\n\tNotSquareSubsetEqual: '\\u22E2',\n\tNotSquareSuperset: '\\u2290\\u0338',\n\tNotSquareSupersetEqual: '\\u22E3',\n\tNotSubset: '\\u2282\\u20D2',\n\tNotSubsetEqual: '\\u2288',\n\tNotSucceeds: '\\u2281',\n\tNotSucceedsEqual: '\\u2AB0\\u0338',\n\tNotSucceedsSlantEqual: '\\u22E1',\n\tNotSucceedsTilde: '\\u227F\\u0338',\n\tNotSuperset: '\\u2283\\u20D2',\n\tNotSupersetEqual: '\\u2289',\n\tNotTilde: '\\u2241',\n\tNotTildeEqual: '\\u2244',\n\tNotTildeFullEqual: '\\u2247',\n\tNotTildeTilde: '\\u2249',\n\tNotVerticalBar: '\\u2224',\n\tnpar: '\\u2226',\n\tnparallel: '\\u2226',\n\tnparsl: '\\u2AFD\\u20E5',\n\tnpart: '\\u2202\\u0338',\n\tnpolint: '\\u2A14',\n\tnpr: '\\u2280',\n\tnprcue: '\\u22E0',\n\tnpre: '\\u2AAF\\u0338',\n\tnprec: '\\u2280',\n\tnpreceq: '\\u2AAF\\u0338',\n\tnrArr: '\\u21CF',\n\tnrarr: '\\u219B',\n\tnrarrc: '\\u2933\\u0338',\n\tnrarrw: '\\u219D\\u0338',\n\tnRightarrow: '\\u21CF',\n\tnrightarrow: '\\u219B',\n\tnrtri: '\\u22EB',\n\tnrtrie: '\\u22ED',\n\tnsc: '\\u2281',\n\tnsccue: '\\u22E1',\n\tnsce: '\\u2AB0\\u0338',\n\tNscr: '\\uD835\\uDCA9',\n\tnscr: '\\uD835\\uDCC3',\n\tnshortmid: '\\u2224',\n\tnshortparallel: '\\u2226',\n\tnsim: '\\u2241',\n\tnsime: '\\u2244',\n\tnsimeq: '\\u2244',\n\tnsmid: '\\u2224',\n\tnspar: '\\u2226',\n\tnsqsube: '\\u22E2',\n\tnsqsupe: '\\u22E3',\n\tnsub: '\\u2284',\n\tnsubE: '\\u2AC5\\u0338',\n\tnsube: '\\u2288',\n\tnsubset: '\\u2282\\u20D2',\n\tnsubseteq: '\\u2288',\n\tnsubseteqq: '\\u2AC5\\u0338',\n\tnsucc: '\\u2281',\n\tnsucceq: '\\u2AB0\\u0338',\n\tnsup: '\\u2285',\n\tnsupE: '\\u2AC6\\u0338',\n\tnsupe: '\\u2289',\n\tnsupset: '\\u2283\\u20D2',\n\tnsupseteq: '\\u2289',\n\tnsupseteqq: '\\u2AC6\\u0338',\n\tntgl: '\\u2279',\n\tNtilde: '\\u00D1',\n\tntilde: '\\u00F1',\n\tntlg: '\\u2278',\n\tntriangleleft: '\\u22EA',\n\tntrianglelefteq: '\\u22EC',\n\tntriangleright: '\\u22EB',\n\tntrianglerighteq: '\\u22ED',\n\tNu: '\\u039D',\n\tnu: '\\u03BD',\n\tnum: '\\u0023',\n\tnumero: '\\u2116',\n\tnumsp: '\\u2007',\n\tnvap: '\\u224D\\u20D2',\n\tnVDash: '\\u22AF',\n\tnVdash: '\\u22AE',\n\tnvDash: '\\u22AD',\n\tnvdash: '\\u22AC',\n\tnvge: '\\u2265\\u20D2',\n\tnvgt: '\\u003E\\u20D2',\n\tnvHarr: '\\u2904',\n\tnvinfin: '\\u29DE',\n\tnvlArr: '\\u2902',\n\tnvle: '\\u2264\\u20D2',\n\tnvlt: '\\u003C\\u20D2',\n\tnvltrie: '\\u22B4\\u20D2',\n\tnvrArr: '\\u2903',\n\tnvrtrie: '\\u22B5\\u20D2',\n\tnvsim: '\\u223C\\u20D2',\n\tnwarhk: '\\u2923',\n\tnwArr: '\\u21D6',\n\tnwarr: '\\u2196',\n\tnwarrow: '\\u2196',\n\tnwnear: '\\u2927',\n\tOacute: '\\u00D3',\n\toacute: '\\u00F3',\n\toast: '\\u229B',\n\tocir: '\\u229A',\n\tOcirc: '\\u00D4',\n\tocirc: '\\u00F4',\n\tOcy: '\\u041E',\n\tocy: '\\u043E',\n\todash: '\\u229D',\n\tOdblac: '\\u0150',\n\todblac: '\\u0151',\n\todiv: '\\u2A38',\n\todot: '\\u2299',\n\todsold: '\\u29BC',\n\tOElig: '\\u0152',\n\toelig: '\\u0153',\n\tofcir: '\\u29BF',\n\tOfr: '\\uD835\\uDD12',\n\tofr: '\\uD835\\uDD2C',\n\togon: '\\u02DB',\n\tOgrave: '\\u00D2',\n\tograve: '\\u00F2',\n\togt: '\\u29C1',\n\tohbar: '\\u29B5',\n\tohm: '\\u03A9',\n\toint: '\\u222E',\n\tolarr: '\\u21BA',\n\tolcir: '\\u29BE',\n\tolcross: '\\u29BB',\n\toline: '\\u203E',\n\tolt: '\\u29C0',\n\tOmacr: '\\u014C',\n\tomacr: '\\u014D',\n\tOmega: '\\u03A9',\n\tomega: '\\u03C9',\n\tOmicron: '\\u039F',\n\tomicron: '\\u03BF',\n\tomid: '\\u29B6',\n\tominus: '\\u2296',\n\tOopf: '\\uD835\\uDD46',\n\toopf: '\\uD835\\uDD60',\n\topar: '\\u29B7',\n\tOpenCurlyDoubleQuote: '\\u201C',\n\tOpenCurlyQuote: '\\u2018',\n\toperp: '\\u29B9',\n\toplus: '\\u2295',\n\tOr: '\\u2A54',\n\tor: '\\u2228',\n\torarr: '\\u21BB',\n\tord: '\\u2A5D',\n\torder: '\\u2134',\n\torderof: '\\u2134',\n\tordf: '\\u00AA',\n\tordm: '\\u00BA',\n\torigof: '\\u22B6',\n\toror: '\\u2A56',\n\torslope: '\\u2A57',\n\torv: '\\u2A5B',\n\toS: '\\u24C8',\n\tOscr: '\\uD835\\uDCAA',\n\toscr: '\\u2134',\n\tOslash: '\\u00D8',\n\toslash: '\\u00F8',\n\tosol: '\\u2298',\n\tOtilde: '\\u00D5',\n\totilde: '\\u00F5',\n\tOtimes: '\\u2A37',\n\totimes: '\\u2297',\n\totimesas: '\\u2A36',\n\tOuml: '\\u00D6',\n\touml: '\\u00F6',\n\tovbar: '\\u233D',\n\tOverBar: '\\u203E',\n\tOverBrace: '\\u23DE',\n\tOverBracket: '\\u23B4',\n\tOverParenthesis: '\\u23DC',\n\tpar: '\\u2225',\n\tpara: '\\u00B6',\n\tparallel: '\\u2225',\n\tparsim: '\\u2AF3',\n\tparsl: '\\u2AFD',\n\tpart: '\\u2202',\n\tPartialD: '\\u2202',\n\tPcy: '\\u041F',\n\tpcy: '\\u043F',\n\tpercnt: '\\u0025',\n\tperiod: '\\u002E',\n\tpermil: '\\u2030',\n\tperp: '\\u22A5',\n\tpertenk: '\\u2031',\n\tPfr: '\\uD835\\uDD13',\n\tpfr: '\\uD835\\uDD2D',\n\tPhi: '\\u03A6',\n\tphi: '\\u03C6',\n\tphiv: '\\u03D5',\n\tphmmat: '\\u2133',\n\tphone: '\\u260E',\n\tPi: '\\u03A0',\n\tpi: '\\u03C0',\n\tpitchfork: '\\u22D4',\n\tpiv: '\\u03D6',\n\tplanck: '\\u210F',\n\tplanckh: '\\u210E',\n\tplankv: '\\u210F',\n\tplus: '\\u002B',\n\tplusacir: '\\u2A23',\n\tplusb: '\\u229E',\n\tpluscir: '\\u2A22',\n\tplusdo: '\\u2214',\n\tplusdu: '\\u2A25',\n\tpluse: '\\u2A72',\n\tPlusMinus: '\\u00B1',\n\tplusmn: '\\u00B1',\n\tplussim: '\\u2A26',\n\tplustwo: '\\u2A27',\n\tpm: '\\u00B1',\n\tPoincareplane: '\\u210C',\n\tpointint: '\\u2A15',\n\tPopf: '\\u2119',\n\tpopf: '\\uD835\\uDD61',\n\tpound: '\\u00A3',\n\tPr: '\\u2ABB',\n\tpr: '\\u227A',\n\tprap: '\\u2AB7',\n\tprcue: '\\u227C',\n\tprE: '\\u2AB3',\n\tpre: '\\u2AAF',\n\tprec: '\\u227A',\n\tprecapprox: '\\u2AB7',\n\tpreccurlyeq: '\\u227C',\n\tPrecedes: '\\u227A',\n\tPrecedesEqual: '\\u2AAF',\n\tPrecedesSlantEqual: '\\u227C',\n\tPrecedesTilde: '\\u227E',\n\tpreceq: '\\u2AAF',\n\tprecnapprox: '\\u2AB9',\n\tprecneqq: '\\u2AB5',\n\tprecnsim: '\\u22E8',\n\tprecsim: '\\u227E',\n\tPrime: '\\u2033',\n\tprime: '\\u2032',\n\tprimes: '\\u2119',\n\tprnap: '\\u2AB9',\n\tprnE: '\\u2AB5',\n\tprnsim: '\\u22E8',\n\tprod: '\\u220F',\n\tProduct: '\\u220F',\n\tprofalar: '\\u232E',\n\tprofline: '\\u2312',\n\tprofsurf: '\\u2313',\n\tprop: '\\u221D',\n\tProportion: '\\u2237',\n\tProportional: '\\u221D',\n\tpropto: '\\u221D',\n\tprsim: '\\u227E',\n\tprurel: '\\u22B0',\n\tPscr: '\\uD835\\uDCAB',\n\tpscr: '\\uD835\\uDCC5',\n\tPsi: '\\u03A8',\n\tpsi: '\\u03C8',\n\tpuncsp: '\\u2008',\n\tQfr: '\\uD835\\uDD14',\n\tqfr: '\\uD835\\uDD2E',\n\tqint: '\\u2A0C',\n\tQopf: '\\u211A',\n\tqopf: '\\uD835\\uDD62',\n\tqprime: '\\u2057',\n\tQscr: '\\uD835\\uDCAC',\n\tqscr: '\\uD835\\uDCC6',\n\tquaternions: '\\u210D',\n\tquatint: '\\u2A16',\n\tquest: '\\u003F',\n\tquesteq: '\\u225F',\n\tQUOT: '\\u0022',\n\tquot: '\\u0022',\n\trAarr: '\\u21DB',\n\trace: '\\u223D\\u0331',\n\tRacute: '\\u0154',\n\tracute: '\\u0155',\n\tradic: '\\u221A',\n\traemptyv: '\\u29B3',\n\tRang: '\\u27EB',\n\trang: '\\u27E9',\n\trangd: '\\u2992',\n\trange: '\\u29A5',\n\trangle: '\\u27E9',\n\traquo: '\\u00BB',\n\tRarr: '\\u21A0',\n\trArr: '\\u21D2',\n\trarr: '\\u2192',\n\trarrap: '\\u2975',\n\trarrb: '\\u21E5',\n\trarrbfs: '\\u2920',\n\trarrc: '\\u2933',\n\trarrfs: '\\u291E',\n\trarrhk: '\\u21AA',\n\trarrlp: '\\u21AC',\n\trarrpl: '\\u2945',\n\trarrsim: '\\u2974',\n\tRarrtl: '\\u2916',\n\trarrtl: '\\u21A3',\n\trarrw: '\\u219D',\n\trAtail: '\\u291C',\n\tratail: '\\u291A',\n\tratio: '\\u2236',\n\trationals: '\\u211A',\n\tRBarr: '\\u2910',\n\trBarr: '\\u290F',\n\trbarr: '\\u290D',\n\trbbrk: '\\u2773',\n\trbrace: '\\u007D',\n\trbrack: '\\u005D',\n\trbrke: '\\u298C',\n\trbrksld: '\\u298E',\n\trbrkslu: '\\u2990',\n\tRcaron: '\\u0158',\n\trcaron: '\\u0159',\n\tRcedil: '\\u0156',\n\trcedil: '\\u0157',\n\trceil: '\\u2309',\n\trcub: '\\u007D',\n\tRcy: '\\u0420',\n\trcy: '\\u0440',\n\trdca: '\\u2937',\n\trdldhar: '\\u2969',\n\trdquo: '\\u201D',\n\trdquor: '\\u201D',\n\trdsh: '\\u21B3',\n\tRe: '\\u211C',\n\treal: '\\u211C',\n\trealine: '\\u211B',\n\trealpart: '\\u211C',\n\treals: '\\u211D',\n\trect: '\\u25AD',\n\tREG: '\\u00AE',\n\treg: '\\u00AE',\n\tReverseElement: '\\u220B',\n\tReverseEquilibrium: '\\u21CB',\n\tReverseUpEquilibrium: '\\u296F',\n\trfisht: '\\u297D',\n\trfloor: '\\u230B',\n\tRfr: '\\u211C',\n\trfr: '\\uD835\\uDD2F',\n\trHar: '\\u2964',\n\trhard: '\\u21C1',\n\trharu: '\\u21C0',\n\trharul: '\\u296C',\n\tRho: '\\u03A1',\n\trho: '\\u03C1',\n\trhov: '\\u03F1',\n\tRightAngleBracket: '\\u27E9',\n\tRightArrow: '\\u2192',\n\tRightarrow: '\\u21D2',\n\trightarrow: '\\u2192',\n\tRightArrowBar: '\\u21E5',\n\tRightArrowLeftArrow: '\\u21C4',\n\trightarrowtail: '\\u21A3',\n\tRightCeiling: '\\u2309',\n\tRightDoubleBracket: '\\u27E7',\n\tRightDownTeeVector: '\\u295D',\n\tRightDownVector: '\\u21C2',\n\tRightDownVectorBar: '\\u2955',\n\tRightFloor: '\\u230B',\n\trightharpoondown: '\\u21C1',\n\trightharpoonup: '\\u21C0',\n\trightleftarrows: '\\u21C4',\n\trightleftharpoons: '\\u21CC',\n\trightrightarrows: '\\u21C9',\n\trightsquigarrow: '\\u219D',\n\tRightTee: '\\u22A2',\n\tRightTeeArrow: '\\u21A6',\n\tRightTeeVector: '\\u295B',\n\trightthreetimes: '\\u22CC',\n\tRightTriangle: '\\u22B3',\n\tRightTriangleBar: '\\u29D0',\n\tRightTriangleEqual: '\\u22B5',\n\tRightUpDownVector: '\\u294F',\n\tRightUpTeeVector: '\\u295C',\n\tRightUpVector: '\\u21BE',\n\tRightUpVectorBar: '\\u2954',\n\tRightVector: '\\u21C0',\n\tRightVectorBar: '\\u2953',\n\tring: '\\u02DA',\n\trisingdotseq: '\\u2253',\n\trlarr: '\\u21C4',\n\trlhar: '\\u21CC',\n\trlm: '\\u200F',\n\trmoust: '\\u23B1',\n\trmoustache: '\\u23B1',\n\trnmid: '\\u2AEE',\n\troang: '\\u27ED',\n\troarr: '\\u21FE',\n\trobrk: '\\u27E7',\n\tropar: '\\u2986',\n\tRopf: '\\u211D',\n\tropf: '\\uD835\\uDD63',\n\troplus: '\\u2A2E',\n\trotimes: '\\u2A35',\n\tRoundImplies: '\\u2970',\n\trpar: '\\u0029',\n\trpargt: '\\u2994',\n\trppolint: '\\u2A12',\n\trrarr: '\\u21C9',\n\tRrightarrow: '\\u21DB',\n\trsaquo: '\\u203A',\n\tRscr: '\\u211B',\n\trscr: '\\uD835\\uDCC7',\n\tRsh: '\\u21B1',\n\trsh: '\\u21B1',\n\trsqb: '\\u005D',\n\trsquo: '\\u2019',\n\trsquor: '\\u2019',\n\trthree: '\\u22CC',\n\trtimes: '\\u22CA',\n\trtri: '\\u25B9',\n\trtrie: '\\u22B5',\n\trtrif: '\\u25B8',\n\trtriltri: '\\u29CE',\n\tRuleDelayed: '\\u29F4',\n\truluhar: '\\u2968',\n\trx: '\\u211E',\n\tSacute: '\\u015A',\n\tsacute: '\\u015B',\n\tsbquo: '\\u201A',\n\tSc: '\\u2ABC',\n\tsc: '\\u227B',\n\tscap: '\\u2AB8',\n\tScaron: '\\u0160',\n\tscaron: '\\u0161',\n\tsccue: '\\u227D',\n\tscE: '\\u2AB4',\n\tsce: '\\u2AB0',\n\tScedil: '\\u015E',\n\tscedil: '\\u015F',\n\tScirc: '\\u015C',\n\tscirc: '\\u015D',\n\tscnap: '\\u2ABA',\n\tscnE: '\\u2AB6',\n\tscnsim: '\\u22E9',\n\tscpolint: '\\u2A13',\n\tscsim: '\\u227F',\n\tScy: '\\u0421',\n\tscy: '\\u0441',\n\tsdot: '\\u22C5',\n\tsdotb: '\\u22A1',\n\tsdote: '\\u2A66',\n\tsearhk: '\\u2925',\n\tseArr: '\\u21D8',\n\tsearr: '\\u2198',\n\tsearrow: '\\u2198',\n\tsect: '\\u00A7',\n\tsemi: '\\u003B',\n\tseswar: '\\u2929',\n\tsetminus: '\\u2216',\n\tsetmn: '\\u2216',\n\tsext: '\\u2736',\n\tSfr: '\\uD835\\uDD16',\n\tsfr: '\\uD835\\uDD30',\n\tsfrown: '\\u2322',\n\tsharp: '\\u266F',\n\tSHCHcy: '\\u0429',\n\tshchcy: '\\u0449',\n\tSHcy: '\\u0428',\n\tshcy: '\\u0448',\n\tShortDownArrow: '\\u2193',\n\tShortLeftArrow: '\\u2190',\n\tshortmid: '\\u2223',\n\tshortparallel: '\\u2225',\n\tShortRightArrow: '\\u2192',\n\tShortUpArrow: '\\u2191',\n\tshy: '\\u00AD',\n\tSigma: '\\u03A3',\n\tsigma: '\\u03C3',\n\tsigmaf: '\\u03C2',\n\tsigmav: '\\u03C2',\n\tsim: '\\u223C',\n\tsimdot: '\\u2A6A',\n\tsime: '\\u2243',\n\tsimeq: '\\u2243',\n\tsimg: '\\u2A9E',\n\tsimgE: '\\u2AA0',\n\tsiml: '\\u2A9D',\n\tsimlE: '\\u2A9F',\n\tsimne: '\\u2246',\n\tsimplus: '\\u2A24',\n\tsimrarr: '\\u2972',\n\tslarr: '\\u2190',\n\tSmallCircle: '\\u2218',\n\tsmallsetminus: '\\u2216',\n\tsmashp: '\\u2A33',\n\tsmeparsl: '\\u29E4',\n\tsmid: '\\u2223',\n\tsmile: '\\u2323',\n\tsmt: '\\u2AAA',\n\tsmte: '\\u2AAC',\n\tsmtes: '\\u2AAC\\uFE00',\n\tSOFTcy: '\\u042C',\n\tsoftcy: '\\u044C',\n\tsol: '\\u002F',\n\tsolb: '\\u29C4',\n\tsolbar: '\\u233F',\n\tSopf: '\\uD835\\uDD4A',\n\tsopf: '\\uD835\\uDD64',\n\tspades: '\\u2660',\n\tspadesuit: '\\u2660',\n\tspar: '\\u2225',\n\tsqcap: '\\u2293',\n\tsqcaps: '\\u2293\\uFE00',\n\tsqcup: '\\u2294',\n\tsqcups: '\\u2294\\uFE00',\n\tSqrt: '\\u221A',\n\tsqsub: '\\u228F',\n\tsqsube: '\\u2291',\n\tsqsubset: '\\u228F',\n\tsqsubseteq: '\\u2291',\n\tsqsup: '\\u2290',\n\tsqsupe: '\\u2292',\n\tsqsupset: '\\u2290',\n\tsqsupseteq: '\\u2292',\n\tsqu: '\\u25A1',\n\tSquare: '\\u25A1',\n\tsquare: '\\u25A1',\n\tSquareIntersection: '\\u2293',\n\tSquareSubset: '\\u228F',\n\tSquareSubsetEqual: '\\u2291',\n\tSquareSuperset: '\\u2290',\n\tSquareSupersetEqual: '\\u2292',\n\tSquareUnion: '\\u2294',\n\tsquarf: '\\u25AA',\n\tsquf: '\\u25AA',\n\tsrarr: '\\u2192',\n\tSscr: '\\uD835\\uDCAE',\n\tsscr: '\\uD835\\uDCC8',\n\tssetmn: '\\u2216',\n\tssmile: '\\u2323',\n\tsstarf: '\\u22C6',\n\tStar: '\\u22C6',\n\tstar: '\\u2606',\n\tstarf: '\\u2605',\n\tstraightepsilon: '\\u03F5',\n\tstraightphi: '\\u03D5',\n\tstrns: '\\u00AF',\n\tSub: '\\u22D0',\n\tsub: '\\u2282',\n\tsubdot: '\\u2ABD',\n\tsubE: '\\u2AC5',\n\tsube: '\\u2286',\n\tsubedot: '\\u2AC3',\n\tsubmult: '\\u2AC1',\n\tsubnE: '\\u2ACB',\n\tsubne: '\\u228A',\n\tsubplus: '\\u2ABF',\n\tsubrarr: '\\u2979',\n\tSubset: '\\u22D0',\n\tsubset: '\\u2282',\n\tsubseteq: '\\u2286',\n\tsubseteqq: '\\u2AC5',\n\tSubsetEqual: '\\u2286',\n\tsubsetneq: '\\u228A',\n\tsubsetneqq: '\\u2ACB',\n\tsubsim: '\\u2AC7',\n\tsubsub: '\\u2AD5',\n\tsubsup: '\\u2AD3',\n\tsucc: '\\u227B',\n\tsuccapprox: '\\u2AB8',\n\tsucccurlyeq: '\\u227D',\n\tSucceeds: '\\u227B',\n\tSucceedsEqual: '\\u2AB0',\n\tSucceedsSlantEqual: '\\u227D',\n\tSucceedsTilde: '\\u227F',\n\tsucceq: '\\u2AB0',\n\tsuccnapprox: '\\u2ABA',\n\tsuccneqq: '\\u2AB6',\n\tsuccnsim: '\\u22E9',\n\tsuccsim: '\\u227F',\n\tSuchThat: '\\u220B',\n\tSum: '\\u2211',\n\tsum: '\\u2211',\n\tsung: '\\u266A',\n\tSup: '\\u22D1',\n\tsup: '\\u2283',\n\tsup1: '\\u00B9',\n\tsup2: '\\u00B2',\n\tsup3: '\\u00B3',\n\tsupdot: '\\u2ABE',\n\tsupdsub: '\\u2AD8',\n\tsupE: '\\u2AC6',\n\tsupe: '\\u2287',\n\tsupedot: '\\u2AC4',\n\tSuperset: '\\u2283',\n\tSupersetEqual: '\\u2287',\n\tsuphsol: '\\u27C9',\n\tsuphsub: '\\u2AD7',\n\tsuplarr: '\\u297B',\n\tsupmult: '\\u2AC2',\n\tsupnE: '\\u2ACC',\n\tsupne: '\\u228B',\n\tsupplus: '\\u2AC0',\n\tSupset: '\\u22D1',\n\tsupset: '\\u2283',\n\tsupseteq: '\\u2287',\n\tsupseteqq: '\\u2AC6',\n\tsupsetneq: '\\u228B',\n\tsupsetneqq: '\\u2ACC',\n\tsupsim: '\\u2AC8',\n\tsupsub: '\\u2AD4',\n\tsupsup: '\\u2AD6',\n\tswarhk: '\\u2926',\n\tswArr: '\\u21D9',\n\tswarr: '\\u2199',\n\tswarrow: '\\u2199',\n\tswnwar: '\\u292A',\n\tszlig: '\\u00DF',\n\tTab: '\\u0009',\n\ttarget: '\\u2316',\n\tTau: '\\u03A4',\n\ttau: '\\u03C4',\n\ttbrk: '\\u23B4',\n\tTcaron: '\\u0164',\n\ttcaron: '\\u0165',\n\tTcedil: '\\u0162',\n\ttcedil: '\\u0163',\n\tTcy: '\\u0422',\n\ttcy: '\\u0442',\n\ttdot: '\\u20DB',\n\ttelrec: '\\u2315',\n\tTfr: '\\uD835\\uDD17',\n\ttfr: '\\uD835\\uDD31',\n\tthere4: '\\u2234',\n\tTherefore: '\\u2234',\n\ttherefore: '\\u2234',\n\tTheta: '\\u0398',\n\ttheta: '\\u03B8',\n\tthetasym: '\\u03D1',\n\tthetav: '\\u03D1',\n\tthickapprox: '\\u2248',\n\tthicksim: '\\u223C',\n\tThickSpace: '\\u205F\\u200A',\n\tthinsp: '\\u2009',\n\tThinSpace: '\\u2009',\n\tthkap: '\\u2248',\n\tthksim: '\\u223C',\n\tTHORN: '\\u00DE',\n\tthorn: '\\u00FE',\n\tTilde: '\\u223C',\n\ttilde: '\\u02DC',\n\tTildeEqual: '\\u2243',\n\tTildeFullEqual: '\\u2245',\n\tTildeTilde: '\\u2248',\n\ttimes: '\\u00D7',\n\ttimesb: '\\u22A0',\n\ttimesbar: '\\u2A31',\n\ttimesd: '\\u2A30',\n\ttint: '\\u222D',\n\ttoea: '\\u2928',\n\ttop: '\\u22A4',\n\ttopbot: '\\u2336',\n\ttopcir: '\\u2AF1',\n\tTopf: '\\uD835\\uDD4B',\n\ttopf: '\\uD835\\uDD65',\n\ttopfork: '\\u2ADA',\n\ttosa: '\\u2929',\n\ttprime: '\\u2034',\n\tTRADE: '\\u2122',\n\ttrade: '\\u2122',\n\ttriangle: '\\u25B5',\n\ttriangledown: '\\u25BF',\n\ttriangleleft: '\\u25C3',\n\ttrianglelefteq: '\\u22B4',\n\ttriangleq: '\\u225C',\n\ttriangleright: '\\u25B9',\n\ttrianglerighteq: '\\u22B5',\n\ttridot: '\\u25EC',\n\ttrie: '\\u225C',\n\ttriminus: '\\u2A3A',\n\tTripleDot: '\\u20DB',\n\ttriplus: '\\u2A39',\n\ttrisb: '\\u29CD',\n\ttritime: '\\u2A3B',\n\ttrpezium: '\\u23E2',\n\tTscr: '\\uD835\\uDCAF',\n\ttscr: '\\uD835\\uDCC9',\n\tTScy: '\\u0426',\n\ttscy: '\\u0446',\n\tTSHcy: '\\u040B',\n\ttshcy: '\\u045B',\n\tTstrok: '\\u0166',\n\ttstrok: '\\u0167',\n\ttwixt: '\\u226C',\n\ttwoheadleftarrow: '\\u219E',\n\ttwoheadrightarrow: '\\u21A0',\n\tUacute: '\\u00DA',\n\tuacute: '\\u00FA',\n\tUarr: '\\u219F',\n\tuArr: '\\u21D1',\n\tuarr: '\\u2191',\n\tUarrocir: '\\u2949',\n\tUbrcy: '\\u040E',\n\tubrcy: '\\u045E',\n\tUbreve: '\\u016C',\n\tubreve: '\\u016D',\n\tUcirc: '\\u00DB',\n\tucirc: '\\u00FB',\n\tUcy: '\\u0423',\n\tucy: '\\u0443',\n\tudarr: '\\u21C5',\n\tUdblac: '\\u0170',\n\tudblac: '\\u0171',\n\tudhar: '\\u296E',\n\tufisht: '\\u297E',\n\tUfr: '\\uD835\\uDD18',\n\tufr: '\\uD835\\uDD32',\n\tUgrave: '\\u00D9',\n\tugrave: '\\u00F9',\n\tuHar: '\\u2963',\n\tuharl: '\\u21BF',\n\tuharr: '\\u21BE',\n\tuhblk: '\\u2580',\n\tulcorn: '\\u231C',\n\tulcorner: '\\u231C',\n\tulcrop: '\\u230F',\n\tultri: '\\u25F8',\n\tUmacr: '\\u016A',\n\tumacr: '\\u016B',\n\tuml: '\\u00A8',\n\tUnderBar: '\\u005F',\n\tUnderBrace: '\\u23DF',\n\tUnderBracket: '\\u23B5',\n\tUnderParenthesis: '\\u23DD',\n\tUnion: '\\u22C3',\n\tUnionPlus: '\\u228E',\n\tUogon: '\\u0172',\n\tuogon: '\\u0173',\n\tUopf: '\\uD835\\uDD4C',\n\tuopf: '\\uD835\\uDD66',\n\tUpArrow: '\\u2191',\n\tUparrow: '\\u21D1',\n\tuparrow: '\\u2191',\n\tUpArrowBar: '\\u2912',\n\tUpArrowDownArrow: '\\u21C5',\n\tUpDownArrow: '\\u2195',\n\tUpdownarrow: '\\u21D5',\n\tupdownarrow: '\\u2195',\n\tUpEquilibrium: '\\u296E',\n\tupharpoonleft: '\\u21BF',\n\tupharpoonright: '\\u21BE',\n\tuplus: '\\u228E',\n\tUpperLeftArrow: '\\u2196',\n\tUpperRightArrow: '\\u2197',\n\tUpsi: '\\u03D2',\n\tupsi: '\\u03C5',\n\tupsih: '\\u03D2',\n\tUpsilon: '\\u03A5',\n\tupsilon: '\\u03C5',\n\tUpTee: '\\u22A5',\n\tUpTeeArrow: '\\u21A5',\n\tupuparrows: '\\u21C8',\n\turcorn: '\\u231D',\n\turcorner: '\\u231D',\n\turcrop: '\\u230E',\n\tUring: '\\u016E',\n\turing: '\\u016F',\n\turtri: '\\u25F9',\n\tUscr: '\\uD835\\uDCB0',\n\tuscr: '\\uD835\\uDCCA',\n\tutdot: '\\u22F0',\n\tUtilde: '\\u0168',\n\tutilde: '\\u0169',\n\tutri: '\\u25B5',\n\tutrif: '\\u25B4',\n\tuuarr: '\\u21C8',\n\tUuml: '\\u00DC',\n\tuuml: '\\u00FC',\n\tuwangle: '\\u29A7',\n\tvangrt: '\\u299C',\n\tvarepsilon: '\\u03F5',\n\tvarkappa: '\\u03F0',\n\tvarnothing: '\\u2205',\n\tvarphi: '\\u03D5',\n\tvarpi: '\\u03D6',\n\tvarpropto: '\\u221D',\n\tvArr: '\\u21D5',\n\tvarr: '\\u2195',\n\tvarrho: '\\u03F1',\n\tvarsigma: '\\u03C2',\n\tvarsubsetneq: '\\u228A\\uFE00',\n\tvarsubsetneqq: '\\u2ACB\\uFE00',\n\tvarsupsetneq: '\\u228B\\uFE00',\n\tvarsupsetneqq: '\\u2ACC\\uFE00',\n\tvartheta: '\\u03D1',\n\tvartriangleleft: '\\u22B2',\n\tvartriangleright: '\\u22B3',\n\tVbar: '\\u2AEB',\n\tvBar: '\\u2AE8',\n\tvBarv: '\\u2AE9',\n\tVcy: '\\u0412',\n\tvcy: '\\u0432',\n\tVDash: '\\u22AB',\n\tVdash: '\\u22A9',\n\tvDash: '\\u22A8',\n\tvdash: '\\u22A2',\n\tVdashl: '\\u2AE6',\n\tVee: '\\u22C1',\n\tvee: '\\u2228',\n\tveebar: '\\u22BB',\n\tveeeq: '\\u225A',\n\tvellip: '\\u22EE',\n\tVerbar: '\\u2016',\n\tverbar: '\\u007C',\n\tVert: '\\u2016',\n\tvert: '\\u007C',\n\tVerticalBar: '\\u2223',\n\tVerticalLine: '\\u007C',\n\tVerticalSeparator: '\\u2758',\n\tVerticalTilde: '\\u2240',\n\tVeryThinSpace: '\\u200A',\n\tVfr: '\\uD835\\uDD19',\n\tvfr: '\\uD835\\uDD33',\n\tvltri: '\\u22B2',\n\tvnsub: '\\u2282\\u20D2',\n\tvnsup: '\\u2283\\u20D2',\n\tVopf: '\\uD835\\uDD4D',\n\tvopf: '\\uD835\\uDD67',\n\tvprop: '\\u221D',\n\tvrtri: '\\u22B3',\n\tVscr: '\\uD835\\uDCB1',\n\tvscr: '\\uD835\\uDCCB',\n\tvsubnE: '\\u2ACB\\uFE00',\n\tvsubne: '\\u228A\\uFE00',\n\tvsupnE: '\\u2ACC\\uFE00',\n\tvsupne: '\\u228B\\uFE00',\n\tVvdash: '\\u22AA',\n\tvzigzag: '\\u299A',\n\tWcirc: '\\u0174',\n\twcirc: '\\u0175',\n\twedbar: '\\u2A5F',\n\tWedge: '\\u22C0',\n\twedge: '\\u2227',\n\twedgeq: '\\u2259',\n\tweierp: '\\u2118',\n\tWfr: '\\uD835\\uDD1A',\n\twfr: '\\uD835\\uDD34',\n\tWopf: '\\uD835\\uDD4E',\n\twopf: '\\uD835\\uDD68',\n\twp: '\\u2118',\n\twr: '\\u2240',\n\twreath: '\\u2240',\n\tWscr: '\\uD835\\uDCB2',\n\twscr: '\\uD835\\uDCCC',\n\txcap: '\\u22C2',\n\txcirc: '\\u25EF',\n\txcup: '\\u22C3',\n\txdtri: '\\u25BD',\n\tXfr: '\\uD835\\uDD1B',\n\txfr: '\\uD835\\uDD35',\n\txhArr: '\\u27FA',\n\txharr: '\\u27F7',\n\tXi: '\\u039E',\n\txi: '\\u03BE',\n\txlArr: '\\u27F8',\n\txlarr: '\\u27F5',\n\txmap: '\\u27FC',\n\txnis: '\\u22FB',\n\txodot: '\\u2A00',\n\tXopf: '\\uD835\\uDD4F',\n\txopf: '\\uD835\\uDD69',\n\txoplus: '\\u2A01',\n\txotime: '\\u2A02',\n\txrArr: '\\u27F9',\n\txrarr: '\\u27F6',\n\tXscr: '\\uD835\\uDCB3',\n\txscr: '\\uD835\\uDCCD',\n\txsqcup: '\\u2A06',\n\txuplus: '\\u2A04',\n\txutri: '\\u25B3',\n\txvee: '\\u22C1',\n\txwedge: '\\u22C0',\n\tYacute: '\\u00DD',\n\tyacute: '\\u00FD',\n\tYAcy: '\\u042F',\n\tyacy: '\\u044F',\n\tYcirc: '\\u0176',\n\tycirc: '\\u0177',\n\tYcy: '\\u042B',\n\tycy: '\\u044B',\n\tyen: '\\u00A5',\n\tYfr: '\\uD835\\uDD1C',\n\tyfr: '\\uD835\\uDD36',\n\tYIcy: '\\u0407',\n\tyicy: '\\u0457',\n\tYopf: '\\uD835\\uDD50',\n\tyopf: '\\uD835\\uDD6A',\n\tYscr: '\\uD835\\uDCB4',\n\tyscr: '\\uD835\\uDCCE',\n\tYUcy: '\\u042E',\n\tyucy: '\\u044E',\n\tYuml: '\\u0178',\n\tyuml: '\\u00FF',\n\tZacute: '\\u0179',\n\tzacute: '\\u017A',\n\tZcaron: '\\u017D',\n\tzcaron: '\\u017E',\n\tZcy: '\\u0417',\n\tzcy: '\\u0437',\n\tZdot: '\\u017B',\n\tzdot: '\\u017C',\n\tzeetrf: '\\u2128',\n\tZeroWidthSpace: '\\u200B',\n\tZeta: '\\u0396',\n\tzeta: '\\u03B6',\n\tZfr: '\\u2128',\n\tzfr: '\\uD835\\uDD37',\n\tZHcy: '\\u0416',\n\tzhcy: '\\u0436',\n\tzigrarr: '\\u21DD',\n\tZopf: '\\u2124',\n\tzopf: '\\uD835\\uDD6B',\n\tZscr: '\\uD835\\uDCB5',\n\tzscr: '\\uD835\\uDCCF',\n\tzwj: '\\u200D',\n\tzwnj: '\\u200C',\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES;\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n if (!fn) {\n return false\n }\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","\"use strict\";\n\nvar window = require('global/window');\n\nvar httpResponseHandler = function httpResponseHandler(callback, decodeResponseBody) {\n if (decodeResponseBody === void 0) {\n decodeResponseBody = false;\n }\n\n return function (err, response, responseBody) {\n // if the XHR failed, return that error\n if (err) {\n callback(err);\n return;\n } // if the HTTP status code is 4xx or 5xx, the request also failed\n\n\n if (response.statusCode >= 400 && response.statusCode <= 599) {\n var cause = responseBody;\n\n if (decodeResponseBody) {\n if (window.TextDecoder) {\n var charset = getCharset(response.headers && response.headers['content-type']);\n\n try {\n cause = new TextDecoder(charset).decode(responseBody);\n } catch (e) {}\n } else {\n cause = String.fromCharCode.apply(null, new Uint8Array(responseBody));\n }\n }\n\n callback({\n cause: cause\n });\n return;\n } // otherwise, request succeeded\n\n\n callback(null, responseBody);\n };\n};\n\nfunction getCharset(contentTypeHeader) {\n if (contentTypeHeader === void 0) {\n contentTypeHeader = '';\n }\n\n return contentTypeHeader.toLowerCase().split(';').reduce(function (charset, contentType) {\n var _contentType$split = contentType.split('='),\n type = _contentType$split[0],\n value = _contentType$split[1];\n\n if (type.trim() === 'charset') {\n return value.trim();\n }\n\n return charset;\n }, 'utf-8');\n}\n\nmodule.exports = httpResponseHandler;","\"use strict\";\n\nvar RetryManager = /*#__PURE__*/function () {\n function RetryManager() {\n this.maxAttempts_ = 1;\n this.delayFactor_ = 0.1;\n this.fuzzFactor_ = 0.1;\n this.initialDelay_ = 1000;\n this.enabled_ = false;\n }\n\n var _proto = RetryManager.prototype;\n\n _proto.getIsEnabled = function getIsEnabled() {\n return this.enabled_;\n };\n\n _proto.enable = function enable() {\n this.enabled_ = true;\n };\n\n _proto.disable = function disable() {\n this.enabled_ = false;\n };\n\n _proto.reset = function reset() {\n this.maxAttempts_ = 1;\n this.delayFactor_ = 0.1;\n this.fuzzFactor_ = 0.1;\n this.initialDelay_ = 1000;\n this.enabled_ = false;\n };\n\n _proto.getMaxAttempts = function getMaxAttempts() {\n return this.maxAttempts_;\n };\n\n _proto.setMaxAttempts = function setMaxAttempts(maxAttempts) {\n this.maxAttempts_ = maxAttempts;\n };\n\n _proto.getDelayFactor = function getDelayFactor() {\n return this.delayFactor_;\n };\n\n _proto.setDelayFactor = function setDelayFactor(delayFactor) {\n this.delayFactor_ = delayFactor;\n };\n\n _proto.getFuzzFactor = function getFuzzFactor() {\n return this.fuzzFactor_;\n };\n\n _proto.setFuzzFactor = function setFuzzFactor(fuzzFactor) {\n this.fuzzFactor_ = fuzzFactor;\n };\n\n _proto.getInitialDelay = function getInitialDelay() {\n return this.initialDelay_;\n };\n\n _proto.setInitialDelay = function setInitialDelay(initialDelay) {\n this.initialDelay_ = initialDelay;\n };\n\n _proto.createRetry = function createRetry(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n maxAttempts = _ref.maxAttempts,\n delayFactor = _ref.delayFactor,\n fuzzFactor = _ref.fuzzFactor,\n initialDelay = _ref.initialDelay;\n\n return new Retry({\n maxAttempts: maxAttempts || this.maxAttempts_,\n delayFactor: delayFactor || this.delayFactor_,\n fuzzFactor: fuzzFactor || this.fuzzFactor_,\n initialDelay: initialDelay || this.initialDelay_\n });\n };\n\n return RetryManager;\n}();\n\nvar Retry = /*#__PURE__*/function () {\n function Retry(options) {\n this.maxAttempts_ = options.maxAttempts;\n this.delayFactor_ = options.delayFactor;\n this.fuzzFactor_ = options.fuzzFactor;\n this.currentDelay_ = options.initialDelay;\n this.currentAttempt_ = 1;\n }\n\n var _proto2 = Retry.prototype;\n\n _proto2.moveToNextAttempt = function moveToNextAttempt() {\n this.currentAttempt_++;\n var delayDelta = this.currentDelay_ * this.delayFactor_;\n this.currentDelay_ = this.currentDelay_ + delayDelta;\n };\n\n _proto2.shouldRetry = function shouldRetry() {\n return this.currentAttempt_ < this.maxAttempts_;\n };\n\n _proto2.getCurrentDelay = function getCurrentDelay() {\n return this.currentDelay_;\n };\n\n _proto2.getCurrentMinPossibleDelay = function getCurrentMinPossibleDelay() {\n return (1 - this.fuzzFactor_) * this.currentDelay_;\n };\n\n _proto2.getCurrentMaxPossibleDelay = function getCurrentMaxPossibleDelay() {\n return (1 + this.fuzzFactor_) * this.currentDelay_;\n }\n /**\n * For example fuzzFactor is 0.1\n * This means ±10% deviation\n * So if we have delay as 1000\n * This function can generate any value from 900 to 1100\n */\n ;\n\n _proto2.getCurrentFuzzedDelay = function getCurrentFuzzedDelay() {\n var lowValue = this.getCurrentMinPossibleDelay();\n var highValue = this.getCurrentMaxPossibleDelay();\n return lowValue + Math.random() * (highValue - lowValue);\n };\n\n return Retry;\n}();\n\nmodule.exports = RetryManager;","var getUint64 = require('../utils/numbers.js').getUint64;\n\nvar parseSidx = function(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n references: [],\n referenceId: view.getUint32(4),\n timescale: view.getUint32(8)\n },\n i = 12;\n\n if (result.version === 0) {\n result.earliestPresentationTime = view.getUint32(i);\n result.firstOffset = view.getUint32(i + 4);\n i += 8;\n } else {\n // read 64 bits\n result.earliestPresentationTime = getUint64(data.subarray(i));\n result.firstOffset = getUint64(data.subarray(i + 8));\n i += 16;\n }\n\n i += 2; // reserved\n\n var referenceCount = view.getUint16(i);\n\n i += 2; // start of references\n\n for (; referenceCount > 0; i += 12, referenceCount--) {\n result.references.push({\n referenceType: (data[i] & 0x80) >>> 7,\n referencedSize: view.getUint32(i) & 0x7FFFFFFF,\n subsegmentDuration: view.getUint32(i + 4),\n startsWithSap: !!(data[i + 8] & 0x80),\n sapType: (data[i + 8] & 0x70) >>> 4,\n sapDeltaTime: view.getUint32(i + 8) & 0x0FFFFFFF\n });\n }\n\n return result;\n};\n\n\nmodule.exports = parseSidx;\n","var dom = require('./dom')\nexports.DOMImplementation = dom.DOMImplementation\nexports.XMLSerializer = dom.XMLSerializer\nexports.DOMParser = require('./dom-parser').DOMParser\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\nvar\n ONE_SECOND_IN_TS = 90000, // 90kHz clock\n secondsToVideoTs,\n secondsToAudioTs,\n videoTsToSeconds,\n audioTsToSeconds,\n audioTsToVideoTs,\n videoTsToAudioTs,\n metadataTsToSeconds;\n\nsecondsToVideoTs = function(seconds) {\n return seconds * ONE_SECOND_IN_TS;\n};\n\nsecondsToAudioTs = function(seconds, sampleRate) {\n return seconds * sampleRate;\n};\n\nvideoTsToSeconds = function(timestamp) {\n return timestamp / ONE_SECOND_IN_TS;\n};\n\naudioTsToSeconds = function(timestamp, sampleRate) {\n return timestamp / sampleRate;\n};\n\naudioTsToVideoTs = function(timestamp, sampleRate) {\n return secondsToVideoTs(audioTsToSeconds(timestamp, sampleRate));\n};\n\nvideoTsToAudioTs = function(timestamp, sampleRate) {\n return secondsToAudioTs(videoTsToSeconds(timestamp), sampleRate);\n};\n\n/**\n * Adjust ID3 tag or caption timing information by the timeline pts values\n * (if keepOriginalTimestamps is false) and convert to seconds\n */\nmetadataTsToSeconds = function(timestamp, timelineStartPts, keepOriginalTimestamps) {\n return videoTsToSeconds(keepOriginalTimestamps ? timestamp : timestamp - timelineStartPts);\n};\n\nmodule.exports = {\n ONE_SECOND_IN_TS: ONE_SECOND_IN_TS,\n secondsToVideoTs: secondsToVideoTs,\n secondsToAudioTs: secondsToAudioTs,\n videoTsToSeconds: videoTsToSeconds,\n audioTsToSeconds: audioTsToSeconds,\n audioTsToVideoTs: audioTsToVideoTs,\n videoTsToAudioTs: videoTsToAudioTs,\n metadataTsToSeconds: metadataTsToSeconds\n};\n","var topLevel = typeof global !== 'undefined' ? global :\n typeof window !== 'undefined' ? window : {}\nvar minDoc = require('min-document');\n\nvar doccy;\n\nif (typeof document !== 'undefined') {\n doccy = document;\n} else {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];\n\n if (!doccy) {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;\n }\n}\n\nmodule.exports = doccy;\n","var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\"){\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import window from 'global/window';\nvar DEFAULT_LOCATION = 'https://example.com';\n\nvar resolveUrl = function resolveUrl(baseUrl, relativeUrl) {\n // return early if we don't need to resolve\n if (/^[a-z]+:/i.test(relativeUrl)) {\n return relativeUrl;\n } // if baseUrl is a data URI, ignore it and resolve everything relative to window.location\n\n\n if (/^data:/.test(baseUrl)) {\n baseUrl = window.location && window.location.href || '';\n }\n\n var protocolLess = /^\\/\\//.test(baseUrl); // remove location if window.location isn't available (i.e. we're in node)\n // and if baseUrl isn't an absolute url\n\n var removeLocation = !window.location && !/\\/\\//i.test(baseUrl); // if the base URL is relative then combine with the current location\n\n baseUrl = new window.URL(baseUrl, window.location || DEFAULT_LOCATION);\n var newUrl = new URL(relativeUrl, baseUrl); // if we're a protocol-less url, remove the protocol\n // and if we're location-less, remove the location\n // otherwise, return the url unmodified\n\n if (removeLocation) {\n return newUrl.href.slice(DEFAULT_LOCATION.length);\n } else if (protocolLess) {\n return newUrl.href.slice(newUrl.protocol.length);\n }\n\n return newUrl.href;\n};\n\nexport default resolveUrl;","/**\n * @file stream.js\n */\n\n/**\n * A lightweight readable stream implemention that handles event dispatching.\n *\n * @class Stream\n */\nvar Stream = /*#__PURE__*/function () {\n function Stream() {\n this.listeners = {};\n }\n /**\n * Add a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener the callback to be invoked when an event of\n * the specified type occurs\n */\n\n\n var _proto = Stream.prototype;\n\n _proto.on = function on(type, listener) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(listener);\n }\n /**\n * Remove a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener a function previously registered for this\n * type of event through `on`\n * @return {boolean} if we could turn it off or not\n */\n ;\n\n _proto.off = function off(type, listener) {\n if (!this.listeners[type]) {\n return false;\n }\n\n var index = this.listeners[type].indexOf(listener); // TODO: which is better?\n // In Video.js we slice listener functions\n // on trigger so that it does not mess up the order\n // while we loop through.\n //\n // Here we slice on off so that the loop in trigger\n // can continue using it's old reference to loop without\n // messing up the order.\n\n this.listeners[type] = this.listeners[type].slice(0);\n this.listeners[type].splice(index, 1);\n return index > -1;\n }\n /**\n * Trigger an event of the specified type on this stream. Any additional\n * arguments to this function are passed as parameters to event listeners.\n *\n * @param {string} type the event name\n */\n ;\n\n _proto.trigger = function trigger(type) {\n var callbacks = this.listeners[type];\n\n if (!callbacks) {\n return;\n } // Slicing the arguments on every invocation of this method\n // can add a significant amount of overhead. Avoid the\n // intermediate object creation for the common case of a\n // single callback argument\n\n\n if (arguments.length === 2) {\n var length = callbacks.length;\n\n for (var i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n var _length = callbacks.length;\n\n for (var _i = 0; _i < _length; ++_i) {\n callbacks[_i].apply(this, args);\n }\n }\n }\n /**\n * Destroys the stream and cleans up.\n */\n ;\n\n _proto.dispose = function dispose() {\n this.listeners = {};\n }\n /**\n * Forwards all `data` events on this stream to the destination stream. The\n * destination stream should provide a method `push` to receive the data\n * events as they arrive.\n *\n * @param {Stream} destination the stream that will receive all `data` events\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */\n ;\n\n _proto.pipe = function pipe(destination) {\n this.on('data', function (data) {\n destination.push(data);\n });\n };\n\n return Stream;\n}();\n\nexport { Stream as default };","import window from 'global/window';\n\nvar atob = function atob(s) {\n return window.atob ? window.atob(s) : Buffer.from(s, 'base64').toString('binary');\n};\n\nexport default function decodeB64ToUint8Array(b64Text) {\n var decodedString = atob(b64Text);\n var array = new Uint8Array(decodedString.length);\n\n for (var i = 0; i < decodedString.length; i++) {\n array[i] = decodedString.charCodeAt(i);\n }\n\n return array;\n}","/*! @name m3u8-parser @version 7.2.0 @license Apache-2.0 */\nimport Stream from '@videojs/vhs-utils/es/stream.js';\nimport _extends from '@babel/runtime/helpers/extends';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array.js';\n\n/**\n * @file m3u8/line-stream.js\n */\n/**\n * A stream that buffers string input and generates a `data` event for each\n * line.\n *\n * @class LineStream\n * @extends Stream\n */\n\nclass LineStream extends Stream {\n constructor() {\n super();\n this.buffer = '';\n }\n /**\n * Add new data to be parsed.\n *\n * @param {string} data the text to process\n */\n\n\n push(data) {\n let nextNewline;\n this.buffer += data;\n nextNewline = this.buffer.indexOf('\\n');\n\n for (; nextNewline > -1; nextNewline = this.buffer.indexOf('\\n')) {\n this.trigger('data', this.buffer.substring(0, nextNewline));\n this.buffer = this.buffer.substring(nextNewline + 1);\n }\n }\n\n}\n\nconst TAB = String.fromCharCode(0x09);\n\nconst parseByterange = function (byterangeString) {\n // optionally match and capture 0+ digits before `@`\n // optionally match and capture 0+ digits after `@`\n const match = /([0-9.]*)?@?([0-9.]*)?/.exec(byterangeString || '');\n const result = {};\n\n if (match[1]) {\n result.length = parseInt(match[1], 10);\n }\n\n if (match[2]) {\n result.offset = parseInt(match[2], 10);\n }\n\n return result;\n};\n/**\n * \"forgiving\" attribute list psuedo-grammar:\n * attributes -> keyvalue (',' keyvalue)*\n * keyvalue -> key '=' value\n * key -> [^=]*\n * value -> '\"' [^\"]* '\"' | [^,]*\n */\n\n\nconst attributeSeparator = function () {\n const key = '[^=]*';\n const value = '\"[^\"]*\"|[^,]*';\n const keyvalue = '(?:' + key + ')=(?:' + value + ')';\n return new RegExp('(?:^|,)(' + keyvalue + ')');\n};\n/**\n * Parse attributes from a line given the separator\n *\n * @param {string} attributes the attribute line to parse\n */\n\n\nconst parseAttributes = function (attributes) {\n const result = {};\n\n if (!attributes) {\n return result;\n } // split the string using attributes as the separator\n\n\n const attrs = attributes.split(attributeSeparator());\n let i = attrs.length;\n let attr;\n\n while (i--) {\n // filter out unmatched portions of the string\n if (attrs[i] === '') {\n continue;\n } // split the key and value\n\n\n attr = /([^=]*)=(.*)/.exec(attrs[i]).slice(1); // trim whitespace and remove optional quotes around the value\n\n attr[0] = attr[0].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^['\"](.*)['\"]$/g, '$1');\n result[attr[0]] = attr[1];\n }\n\n return result;\n};\n/**\n * Converts a string into a resolution object\n *\n * @param {string} resolution a string such as 3840x2160\n *\n * @return {Object} An object representing the resolution\n *\n */\n\n\nconst parseResolution = resolution => {\n const split = resolution.split('x');\n const result = {};\n\n if (split[0]) {\n result.width = parseInt(split[0], 10);\n }\n\n if (split[1]) {\n result.height = parseInt(split[1], 10);\n }\n\n return result;\n};\n/**\n * A line-level M3U8 parser event stream. It expects to receive input one\n * line at a time and performs a context-free parse of its contents. A stream\n * interpretation of a manifest can be useful if the manifest is expected to\n * be too large to fit comfortably into memory or the entirety of the input\n * is not immediately available. Otherwise, it's probably much easier to work\n * with a regular `Parser` object.\n *\n * Produces `data` events with an object that captures the parser's\n * interpretation of the input. That object has a property `tag` that is one\n * of `uri`, `comment`, or `tag`. URIs only have a single additional\n * property, `line`, which captures the entirety of the input without\n * interpretation. Comments similarly have a single additional property\n * `text` which is the input without the leading `#`.\n *\n * Tags always have a property `tagType` which is the lower-cased version of\n * the M3U8 directive without the `#EXT` or `#EXT-X-` prefix. For instance,\n * `#EXT-X-MEDIA-SEQUENCE` becomes `media-sequence` when parsed. Unrecognized\n * tags are given the tag type `unknown` and a single additional property\n * `data` with the remainder of the input.\n *\n * @class ParseStream\n * @extends Stream\n */\n\n\nclass ParseStream extends Stream {\n constructor() {\n super();\n this.customParsers = [];\n this.tagMappers = [];\n }\n /**\n * Parses an additional line of input.\n *\n * @param {string} line a single line of an M3U8 file to parse\n */\n\n\n push(line) {\n let match;\n let event; // strip whitespace\n\n line = line.trim();\n\n if (line.length === 0) {\n // ignore empty lines\n return;\n } // URIs\n\n\n if (line[0] !== '#') {\n this.trigger('data', {\n type: 'uri',\n uri: line\n });\n return;\n } // map tags\n\n\n const newLines = this.tagMappers.reduce((acc, mapper) => {\n const mappedLine = mapper(line); // skip if unchanged\n\n if (mappedLine === line) {\n return acc;\n }\n\n return acc.concat([mappedLine]);\n }, [line]);\n newLines.forEach(newLine => {\n for (let i = 0; i < this.customParsers.length; i++) {\n if (this.customParsers[i].call(this, newLine)) {\n return;\n }\n } // Comments\n\n\n if (newLine.indexOf('#EXT') !== 0) {\n this.trigger('data', {\n type: 'comment',\n text: newLine.slice(1)\n });\n return;\n } // strip off any carriage returns here so the regex matching\n // doesn't have to account for them.\n\n\n newLine = newLine.replace('\\r', ''); // Tags\n\n match = /^#EXTM3U/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'm3u'\n });\n return;\n }\n\n match = /^#EXTINF:([0-9\\.]*)?,?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'inf'\n };\n\n if (match[1]) {\n event.duration = parseFloat(match[1]);\n }\n\n if (match[2]) {\n event.title = match[2];\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-TARGETDURATION:([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'targetduration'\n };\n\n if (match[1]) {\n event.duration = parseInt(match[1], 10);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-VERSION:([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'version'\n };\n\n if (match[1]) {\n event.version = parseInt(match[1], 10);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-MEDIA-SEQUENCE:(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY-SEQUENCE:(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'discontinuity-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-PLAYLIST-TYPE:(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'playlist-type'\n };\n\n if (match[1]) {\n event.playlistType = match[1];\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-BYTERANGE:(.*)?$/.exec(newLine);\n\n if (match) {\n event = _extends(parseByterange(match[1]), {\n type: 'tag',\n tagType: 'byterange'\n });\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-ALLOW-CACHE:(YES|NO)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'allow-cache'\n };\n\n if (match[1]) {\n event.allowed = !/NO/.test(match[1]);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-MAP:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'map'\n };\n\n if (match[1]) {\n const attributes = parseAttributes(match[1]);\n\n if (attributes.URI) {\n event.uri = attributes.URI;\n }\n\n if (attributes.BYTERANGE) {\n event.byterange = parseByterange(attributes.BYTERANGE);\n }\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-STREAM-INF:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'stream-inf'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.RESOLUTION) {\n event.attributes.RESOLUTION = parseResolution(event.attributes.RESOLUTION);\n }\n\n if (event.attributes.BANDWIDTH) {\n event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10);\n }\n\n if (event.attributes['FRAME-RATE']) {\n event.attributes['FRAME-RATE'] = parseFloat(event.attributes['FRAME-RATE']);\n }\n\n if (event.attributes['PROGRAM-ID']) {\n event.attributes['PROGRAM-ID'] = parseInt(event.attributes['PROGRAM-ID'], 10);\n }\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-MEDIA:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-ENDLIST/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'endlist'\n });\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'discontinuity'\n });\n return;\n }\n\n match = /^#EXT-X-PROGRAM-DATE-TIME:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'program-date-time'\n };\n\n if (match[1]) {\n event.dateTimeString = match[1];\n event.dateTimeObject = new Date(match[1]);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-KEY:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'key'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]); // parse the IV string into a Uint32Array\n\n if (event.attributes.IV) {\n if (event.attributes.IV.substring(0, 2).toLowerCase() === '0x') {\n event.attributes.IV = event.attributes.IV.substring(2);\n }\n\n event.attributes.IV = event.attributes.IV.match(/.{8}/g);\n event.attributes.IV[0] = parseInt(event.attributes.IV[0], 16);\n event.attributes.IV[1] = parseInt(event.attributes.IV[1], 16);\n event.attributes.IV[2] = parseInt(event.attributes.IV[2], 16);\n event.attributes.IV[3] = parseInt(event.attributes.IV[3], 16);\n event.attributes.IV = new Uint32Array(event.attributes.IV);\n }\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-START:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'start'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n event.attributes['TIME-OFFSET'] = parseFloat(event.attributes['TIME-OFFSET']);\n event.attributes.PRECISE = /YES/.test(event.attributes.PRECISE);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-CUE-OUT-CONT:(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out-cont'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-CUE-OUT:(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-CUE-IN:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-in'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-SKIP:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'skip'\n };\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.hasOwnProperty('SKIPPED-SEGMENTS')) {\n event.attributes['SKIPPED-SEGMENTS'] = parseInt(event.attributes['SKIPPED-SEGMENTS'], 10);\n }\n\n if (event.attributes.hasOwnProperty('RECENTLY-REMOVED-DATERANGES')) {\n event.attributes['RECENTLY-REMOVED-DATERANGES'] = event.attributes['RECENTLY-REMOVED-DATERANGES'].split(TAB);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-PART:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part'\n };\n event.attributes = parseAttributes(match[1]);\n ['DURATION'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['INDEPENDENT', 'GAP'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n\n if (event.attributes.hasOwnProperty('BYTERANGE')) {\n event.attributes.byterange = parseByterange(event.attributes.BYTERANGE);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-SERVER-CONTROL:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'server-control'\n };\n event.attributes = parseAttributes(match[1]);\n ['CAN-SKIP-UNTIL', 'PART-HOLD-BACK', 'HOLD-BACK'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['CAN-SKIP-DATERANGES', 'CAN-BLOCK-RELOAD'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-PART-INF:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part-inf'\n };\n event.attributes = parseAttributes(match[1]);\n ['PART-TARGET'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-PRELOAD-HINT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'preload-hint'\n };\n event.attributes = parseAttributes(match[1]);\n ['BYTERANGE-START', 'BYTERANGE-LENGTH'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n const subkey = key === 'BYTERANGE-LENGTH' ? 'length' : 'offset';\n event.attributes.byterange = event.attributes.byterange || {};\n event.attributes.byterange[subkey] = event.attributes[key]; // only keep the parsed byterange object.\n\n delete event.attributes[key];\n }\n });\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-RENDITION-REPORT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'rendition-report'\n };\n event.attributes = parseAttributes(match[1]);\n ['LAST-MSN', 'LAST-PART'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n }\n });\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-DATERANGE:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'daterange'\n };\n event.attributes = parseAttributes(match[1]);\n ['ID', 'CLASS'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = String(event.attributes[key]);\n }\n });\n ['START-DATE', 'END-DATE'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = new Date(event.attributes[key]);\n }\n });\n ['DURATION', 'PLANNED-DURATION'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['END-ON-NEXT'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/i.test(event.attributes[key]);\n }\n });\n ['SCTE35-CMD', ' SCTE35-OUT', 'SCTE35-IN'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = event.attributes[key].toString(16);\n }\n });\n const clientAttributePattern = /^X-([A-Z]+-)+[A-Z]+$/;\n\n for (const key in event.attributes) {\n if (!clientAttributePattern.test(key)) {\n continue;\n }\n\n const isHexaDecimal = /[0-9A-Fa-f]{6}/g.test(event.attributes[key]);\n const isDecimalFloating = /^\\d+(\\.\\d+)?$/.test(event.attributes[key]);\n event.attributes[key] = isHexaDecimal ? event.attributes[key].toString(16) : isDecimalFloating ? parseFloat(event.attributes[key]) : String(event.attributes[key]);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-INDEPENDENT-SEGMENTS/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'independent-segments'\n });\n return;\n }\n\n match = /^#EXT-X-I-FRAMES-ONLY/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'i-frames-only'\n });\n return;\n }\n\n match = /^#EXT-X-CONTENT-STEERING:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'content-steering'\n };\n event.attributes = parseAttributes(match[1]);\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-I-FRAME-STREAM-INF:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'i-frame-playlist'\n };\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.URI) {\n event.uri = event.attributes.URI;\n }\n\n if (event.attributes.BANDWIDTH) {\n event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10);\n }\n\n if (event.attributes.RESOLUTION) {\n event.attributes.RESOLUTION = parseResolution(event.attributes.RESOLUTION);\n }\n\n if (event.attributes['AVERAGE-BANDWIDTH']) {\n event.attributes['AVERAGE-BANDWIDTH'] = parseInt(event.attributes['AVERAGE-BANDWIDTH'], 10);\n }\n\n if (event.attributes['FRAME-RATE']) {\n event.attributes['FRAME-RATE'] = parseFloat(event.attributes['FRAME-RATE']);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-DEFINE:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'define'\n };\n event.attributes = parseAttributes(match[1]);\n this.trigger('data', event);\n return;\n } // unknown tag type\n\n\n this.trigger('data', {\n type: 'tag',\n data: newLine.slice(4)\n });\n });\n }\n /**\n * Add a parser for custom headers\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.customType the custom type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n\n\n addParser({\n expression,\n customType,\n dataParser,\n segment\n }) {\n if (typeof dataParser !== 'function') {\n dataParser = line => line;\n }\n\n this.customParsers.push(line => {\n const match = expression.exec(line);\n\n if (match) {\n this.trigger('data', {\n type: 'custom',\n data: dataParser(line),\n customType,\n segment\n });\n return true;\n }\n });\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n\n\n addTagMapper({\n expression,\n map\n }) {\n const mapFn = line => {\n if (expression.test(line)) {\n return map(line);\n }\n\n return line;\n };\n\n this.tagMappers.push(mapFn);\n }\n\n}\n\nconst camelCase = str => str.toLowerCase().replace(/-(\\w)/g, a => a[1].toUpperCase());\n\nconst camelCaseKeys = function (attributes) {\n const result = {};\n Object.keys(attributes).forEach(function (key) {\n result[camelCase(key)] = attributes[key];\n });\n return result;\n}; // set SERVER-CONTROL hold back based upon targetDuration and partTargetDuration\n// we need this helper because defaults are based upon targetDuration and\n// partTargetDuration being set, but they may not be if SERVER-CONTROL appears before\n// target durations are set.\n\n\nconst setHoldBack = function (manifest) {\n const {\n serverControl,\n targetDuration,\n partTargetDuration\n } = manifest;\n\n if (!serverControl) {\n return;\n }\n\n const tag = '#EXT-X-SERVER-CONTROL';\n const hb = 'holdBack';\n const phb = 'partHoldBack';\n const minTargetDuration = targetDuration && targetDuration * 3;\n const minPartDuration = partTargetDuration && partTargetDuration * 2;\n\n if (targetDuration && !serverControl.hasOwnProperty(hb)) {\n serverControl[hb] = minTargetDuration;\n this.trigger('info', {\n message: `${tag} defaulting HOLD-BACK to targetDuration * 3 (${minTargetDuration}).`\n });\n }\n\n if (minTargetDuration && serverControl[hb] < minTargetDuration) {\n this.trigger('warn', {\n message: `${tag} clamping HOLD-BACK (${serverControl[hb]}) to targetDuration * 3 (${minTargetDuration})`\n });\n serverControl[hb] = minTargetDuration;\n } // default no part hold back to part target duration * 3\n\n\n if (partTargetDuration && !serverControl.hasOwnProperty(phb)) {\n serverControl[phb] = partTargetDuration * 3;\n this.trigger('info', {\n message: `${tag} defaulting PART-HOLD-BACK to partTargetDuration * 3 (${serverControl[phb]}).`\n });\n } // if part hold back is too small default it to part target duration * 2\n\n\n if (partTargetDuration && serverControl[phb] < minPartDuration) {\n this.trigger('warn', {\n message: `${tag} clamping PART-HOLD-BACK (${serverControl[phb]}) to partTargetDuration * 2 (${minPartDuration}).`\n });\n serverControl[phb] = minPartDuration;\n }\n};\n/**\n * A parser for M3U8 files. The current interpretation of the input is\n * exposed as a property `manifest` on parser objects. It's just two lines to\n * create and parse a manifest once you have the contents available as a string:\n *\n * ```js\n * var parser = new m3u8.Parser();\n * parser.push(xhr.responseText);\n * ```\n *\n * New input can later be applied to update the manifest object by calling\n * `push` again.\n *\n * The parser attempts to create a usable manifest object even if the\n * underlying input is somewhat nonsensical. It emits `info` and `warning`\n * events during the parse if it encounters input that seems invalid or\n * requires some property of the manifest object to be defaulted.\n *\n * @class Parser\n * @param {Object} [opts] Options for the constructor, needed for substitutions\n * @param {string} [opts.uri] URL to check for query params\n * @param {Object} [opts.mainDefinitions] Definitions on main playlist that can be imported\n * @extends Stream\n */\n\n\nclass Parser extends Stream {\n constructor(opts = {}) {\n super();\n this.lineStream = new LineStream();\n this.parseStream = new ParseStream();\n this.lineStream.pipe(this.parseStream);\n this.mainDefinitions = opts.mainDefinitions || {};\n this.params = new URL(opts.uri, 'https://a.com').searchParams;\n this.lastProgramDateTime = null;\n /* eslint-disable consistent-this */\n\n const self = this;\n /* eslint-enable consistent-this */\n\n const uris = [];\n let currentUri = {}; // if specified, the active EXT-X-MAP definition\n\n let currentMap; // if specified, the active decryption key\n\n let key;\n let hasParts = false;\n\n const noop = function () {};\n\n const defaultMediaGroups = {\n 'AUDIO': {},\n 'VIDEO': {},\n 'CLOSED-CAPTIONS': {},\n 'SUBTITLES': {}\n }; // This is the Widevine UUID from DASH IF IOP. The same exact string is\n // used in MPDs with Widevine encrypted streams.\n\n const widevineUuid = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed'; // group segments into numbered timelines delineated by discontinuities\n\n let currentTimeline = 0; // the manifest is empty until the parse stream begins delivering data\n\n this.manifest = {\n allowCache: true,\n discontinuityStarts: [],\n dateRanges: [],\n iFramePlaylists: [],\n segments: []\n }; // keep track of the last seen segment's byte range end, as segments are not required\n // to provide the offset, in which case it defaults to the next byte after the\n // previous segment\n\n let lastByterangeEnd = 0; // keep track of the last seen part's byte range end.\n\n let lastPartByterangeEnd = 0;\n const dateRangeTags = {};\n this.on('end', () => {\n // only add preloadSegment if we don't yet have a uri for it.\n // and we actually have parts/preloadHints\n if (currentUri.uri || !currentUri.parts && !currentUri.preloadHints) {\n return;\n }\n\n if (!currentUri.map && currentMap) {\n currentUri.map = currentMap;\n }\n\n if (!currentUri.key && key) {\n currentUri.key = key;\n }\n\n if (!currentUri.timeline && typeof currentTimeline === 'number') {\n currentUri.timeline = currentTimeline;\n }\n\n this.manifest.preloadSegment = currentUri;\n }); // update the manifest with the m3u8 entry from the parse stream\n\n this.parseStream.on('data', function (entry) {\n let mediaGroup;\n let rendition; // Replace variables in uris and attributes as defined in #EXT-X-DEFINE tags\n\n if (self.manifest.definitions) {\n for (const def in self.manifest.definitions) {\n if (entry.uri) {\n entry.uri = entry.uri.replace(`{$${def}}`, self.manifest.definitions[def]);\n }\n\n if (entry.attributes) {\n for (const attr in entry.attributes) {\n if (typeof entry.attributes[attr] === 'string') {\n entry.attributes[attr] = entry.attributes[attr].replace(`{$${def}}`, self.manifest.definitions[def]);\n }\n }\n }\n }\n }\n\n ({\n tag() {\n // switch based on the tag type\n (({\n version() {\n if (entry.version) {\n this.manifest.version = entry.version;\n }\n },\n\n 'allow-cache'() {\n this.manifest.allowCache = entry.allowed;\n\n if (!('allowed' in entry)) {\n this.trigger('info', {\n message: 'defaulting allowCache to YES'\n });\n this.manifest.allowCache = true;\n }\n },\n\n byterange() {\n const byterange = {};\n\n if ('length' in entry) {\n currentUri.byterange = byterange;\n byterange.length = entry.length;\n\n if (!('offset' in entry)) {\n /*\n * From the latest spec (as of this writing):\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.2.2\n *\n * Same text since EXT-X-BYTERANGE's introduction in draft 7:\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-07#section-3.3.1)\n *\n * \"If o [offset] is not present, the sub-range begins at the next byte\n * following the sub-range of the previous media segment.\"\n */\n entry.offset = lastByterangeEnd;\n }\n }\n\n if ('offset' in entry) {\n currentUri.byterange = byterange;\n byterange.offset = entry.offset;\n }\n\n lastByterangeEnd = byterange.offset + byterange.length;\n },\n\n endlist() {\n this.manifest.endList = true;\n },\n\n inf() {\n if (!('mediaSequence' in this.manifest)) {\n this.manifest.mediaSequence = 0;\n this.trigger('info', {\n message: 'defaulting media sequence to zero'\n });\n }\n\n if (!('discontinuitySequence' in this.manifest)) {\n this.manifest.discontinuitySequence = 0;\n this.trigger('info', {\n message: 'defaulting discontinuity sequence to zero'\n });\n }\n\n if (entry.title) {\n currentUri.title = entry.title;\n }\n\n if (entry.duration > 0) {\n currentUri.duration = entry.duration;\n }\n\n if (entry.duration === 0) {\n currentUri.duration = 0.01;\n this.trigger('info', {\n message: 'updating zero segment duration to a small value'\n });\n }\n\n this.manifest.segments = uris;\n },\n\n key() {\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring key declaration without attribute list'\n });\n return;\n } // clear the active encryption key\n\n\n if (entry.attributes.METHOD === 'NONE') {\n key = null;\n return;\n }\n\n if (!entry.attributes.URI) {\n this.trigger('warn', {\n message: 'ignoring key declaration without URI'\n });\n return;\n }\n\n if (entry.attributes.KEYFORMAT === 'com.apple.streamingkeydelivery') {\n this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this.\n\n this.manifest.contentProtection['com.apple.fps.1_0'] = {\n attributes: entry.attributes\n };\n return;\n }\n\n if (entry.attributes.KEYFORMAT === 'com.microsoft.playready') {\n this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this.\n\n this.manifest.contentProtection['com.microsoft.playready'] = {\n uri: entry.attributes.URI\n };\n return;\n } // check if the content is encrypted for Widevine\n // Widevine/HLS spec: https://storage.googleapis.com/wvdocs/Widevine_DRM_HLS.pdf\n\n\n if (entry.attributes.KEYFORMAT === widevineUuid) {\n const VALID_METHODS = ['SAMPLE-AES', 'SAMPLE-AES-CTR', 'SAMPLE-AES-CENC'];\n\n if (VALID_METHODS.indexOf(entry.attributes.METHOD) === -1) {\n this.trigger('warn', {\n message: 'invalid key method provided for Widevine'\n });\n return;\n }\n\n if (entry.attributes.METHOD === 'SAMPLE-AES-CENC') {\n this.trigger('warn', {\n message: 'SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead'\n });\n }\n\n if (entry.attributes.URI.substring(0, 23) !== 'data:text/plain;base64,') {\n this.trigger('warn', {\n message: 'invalid key URI provided for Widevine'\n });\n return;\n }\n\n if (!(entry.attributes.KEYID && entry.attributes.KEYID.substring(0, 2) === '0x')) {\n this.trigger('warn', {\n message: 'invalid key ID provided for Widevine'\n });\n return;\n } // if Widevine key attributes are valid, store them as `contentProtection`\n // on the manifest to emulate Widevine tag structure in a DASH mpd\n\n\n this.manifest.contentProtection = this.manifest.contentProtection || {};\n this.manifest.contentProtection['com.widevine.alpha'] = {\n attributes: {\n schemeIdUri: entry.attributes.KEYFORMAT,\n // remove '0x' from the key id string\n keyId: entry.attributes.KEYID.substring(2)\n },\n // decode the base64-encoded PSSH box\n pssh: decodeB64ToUint8Array(entry.attributes.URI.split(',')[1])\n };\n return;\n }\n\n if (!entry.attributes.METHOD) {\n this.trigger('warn', {\n message: 'defaulting key method to AES-128'\n });\n } // setup an encryption key for upcoming segments\n\n\n key = {\n method: entry.attributes.METHOD || 'AES-128',\n uri: entry.attributes.URI\n };\n\n if (typeof entry.attributes.IV !== 'undefined') {\n key.iv = entry.attributes.IV;\n }\n },\n\n 'media-sequence'() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid media sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.mediaSequence = entry.number;\n },\n\n 'discontinuity-sequence'() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid discontinuity sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.discontinuitySequence = entry.number;\n currentTimeline = entry.number;\n },\n\n 'playlist-type'() {\n if (!/VOD|EVENT/.test(entry.playlistType)) {\n this.trigger('warn', {\n message: 'ignoring unknown playlist type: ' + entry.playlist\n });\n return;\n }\n\n this.manifest.playlistType = entry.playlistType;\n },\n\n map() {\n currentMap = {};\n\n if (entry.uri) {\n currentMap.uri = entry.uri;\n }\n\n if (entry.byterange) {\n currentMap.byterange = entry.byterange;\n }\n\n if (key) {\n currentMap.key = key;\n }\n },\n\n 'stream-inf'() {\n this.manifest.playlists = uris;\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring empty stream-inf attributes'\n });\n return;\n }\n\n if (!currentUri.attributes) {\n currentUri.attributes = {};\n }\n\n _extends(currentUri.attributes, entry.attributes);\n },\n\n media() {\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!(entry.attributes && entry.attributes.TYPE && entry.attributes['GROUP-ID'] && entry.attributes.NAME)) {\n this.trigger('warn', {\n message: 'ignoring incomplete or missing media group'\n });\n return;\n } // find the media group, creating defaults as necessary\n\n\n const mediaGroupType = this.manifest.mediaGroups[entry.attributes.TYPE];\n mediaGroupType[entry.attributes['GROUP-ID']] = mediaGroupType[entry.attributes['GROUP-ID']] || {};\n mediaGroup = mediaGroupType[entry.attributes['GROUP-ID']]; // collect the rendition metadata\n\n rendition = {\n default: /yes/i.test(entry.attributes.DEFAULT)\n };\n\n if (rendition.default) {\n rendition.autoselect = true;\n } else {\n rendition.autoselect = /yes/i.test(entry.attributes.AUTOSELECT);\n }\n\n if (entry.attributes.LANGUAGE) {\n rendition.language = entry.attributes.LANGUAGE;\n }\n\n if (entry.attributes.URI) {\n rendition.uri = entry.attributes.URI;\n }\n\n if (entry.attributes['INSTREAM-ID']) {\n rendition.instreamId = entry.attributes['INSTREAM-ID'];\n }\n\n if (entry.attributes.CHARACTERISTICS) {\n rendition.characteristics = entry.attributes.CHARACTERISTICS;\n }\n\n if (entry.attributes.FORCED) {\n rendition.forced = /yes/i.test(entry.attributes.FORCED);\n } // insert the new rendition\n\n\n mediaGroup[entry.attributes.NAME] = rendition;\n },\n\n discontinuity() {\n currentTimeline += 1;\n currentUri.discontinuity = true;\n this.manifest.discontinuityStarts.push(uris.length);\n },\n\n 'program-date-time'() {\n if (typeof this.manifest.dateTimeString === 'undefined') {\n // PROGRAM-DATE-TIME is a media-segment tag, but for backwards\n // compatibility, we add the first occurence of the PROGRAM-DATE-TIME tag\n // to the manifest object\n // TODO: Consider removing this in future major version\n this.manifest.dateTimeString = entry.dateTimeString;\n this.manifest.dateTimeObject = entry.dateTimeObject;\n }\n\n currentUri.dateTimeString = entry.dateTimeString;\n currentUri.dateTimeObject = entry.dateTimeObject;\n const {\n lastProgramDateTime\n } = this;\n this.lastProgramDateTime = new Date(entry.dateTimeString).getTime(); // We should extrapolate Program Date Time backward only during first program date time occurrence.\n // Once we have at least one program date time point, we can always extrapolate it forward using lastProgramDateTime reference.\n\n if (lastProgramDateTime === null) {\n // Extrapolate Program Date Time backward\n // Since it is first program date time occurrence we're assuming that\n // all this.manifest.segments have no program date time info\n this.manifest.segments.reduceRight((programDateTime, segment) => {\n segment.programDateTime = programDateTime - segment.duration * 1000;\n return segment.programDateTime;\n }, this.lastProgramDateTime);\n }\n },\n\n targetduration() {\n if (!isFinite(entry.duration) || entry.duration < 0) {\n this.trigger('warn', {\n message: 'ignoring invalid target duration: ' + entry.duration\n });\n return;\n }\n\n this.manifest.targetDuration = entry.duration;\n setHoldBack.call(this, this.manifest);\n },\n\n start() {\n if (!entry.attributes || isNaN(entry.attributes['TIME-OFFSET'])) {\n this.trigger('warn', {\n message: 'ignoring start declaration without appropriate attribute list'\n });\n return;\n }\n\n this.manifest.start = {\n timeOffset: entry.attributes['TIME-OFFSET'],\n precise: entry.attributes.PRECISE\n };\n },\n\n 'cue-out'() {\n currentUri.cueOut = entry.data;\n },\n\n 'cue-out-cont'() {\n currentUri.cueOutCont = entry.data;\n },\n\n 'cue-in'() {\n currentUri.cueIn = entry.data;\n },\n\n 'skip'() {\n this.manifest.skip = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-SKIP', entry.attributes, ['SKIPPED-SEGMENTS']);\n },\n\n 'part'() {\n hasParts = true; // parts are always specifed before a segment\n\n const segmentIndex = this.manifest.segments.length;\n const part = camelCaseKeys(entry.attributes);\n currentUri.parts = currentUri.parts || [];\n currentUri.parts.push(part);\n\n if (part.byterange) {\n if (!part.byterange.hasOwnProperty('offset')) {\n part.byterange.offset = lastPartByterangeEnd;\n }\n\n lastPartByterangeEnd = part.byterange.offset + part.byterange.length;\n }\n\n const partIndex = currentUri.parts.length - 1;\n this.warnOnMissingAttributes_(`#EXT-X-PART #${partIndex} for segment #${segmentIndex}`, entry.attributes, ['URI', 'DURATION']);\n\n if (this.manifest.renditionReports) {\n this.manifest.renditionReports.forEach((r, i) => {\n if (!r.hasOwnProperty('lastPart')) {\n this.trigger('warn', {\n message: `#EXT-X-RENDITION-REPORT #${i} lacks required attribute(s): LAST-PART`\n });\n }\n });\n }\n },\n\n 'server-control'() {\n const attrs = this.manifest.serverControl = camelCaseKeys(entry.attributes);\n\n if (!attrs.hasOwnProperty('canBlockReload')) {\n attrs.canBlockReload = false;\n this.trigger('info', {\n message: '#EXT-X-SERVER-CONTROL defaulting CAN-BLOCK-RELOAD to false'\n });\n }\n\n setHoldBack.call(this, this.manifest);\n\n if (attrs.canSkipDateranges && !attrs.hasOwnProperty('canSkipUntil')) {\n this.trigger('warn', {\n message: '#EXT-X-SERVER-CONTROL lacks required attribute CAN-SKIP-UNTIL which is required when CAN-SKIP-DATERANGES is set'\n });\n }\n },\n\n 'preload-hint'() {\n // parts are always specifed before a segment\n const segmentIndex = this.manifest.segments.length;\n const hint = camelCaseKeys(entry.attributes);\n const isPart = hint.type && hint.type === 'PART';\n currentUri.preloadHints = currentUri.preloadHints || [];\n currentUri.preloadHints.push(hint);\n\n if (hint.byterange) {\n if (!hint.byterange.hasOwnProperty('offset')) {\n // use last part byterange end or zero if not a part.\n hint.byterange.offset = isPart ? lastPartByterangeEnd : 0;\n\n if (isPart) {\n lastPartByterangeEnd = hint.byterange.offset + hint.byterange.length;\n }\n }\n }\n\n const index = currentUri.preloadHints.length - 1;\n this.warnOnMissingAttributes_(`#EXT-X-PRELOAD-HINT #${index} for segment #${segmentIndex}`, entry.attributes, ['TYPE', 'URI']);\n\n if (!hint.type) {\n return;\n } // search through all preload hints except for the current one for\n // a duplicate type.\n\n\n for (let i = 0; i < currentUri.preloadHints.length - 1; i++) {\n const otherHint = currentUri.preloadHints[i];\n\n if (!otherHint.type) {\n continue;\n }\n\n if (otherHint.type === hint.type) {\n this.trigger('warn', {\n message: `#EXT-X-PRELOAD-HINT #${index} for segment #${segmentIndex} has the same TYPE ${hint.type} as preload hint #${i}`\n });\n }\n }\n },\n\n 'rendition-report'() {\n const report = camelCaseKeys(entry.attributes);\n this.manifest.renditionReports = this.manifest.renditionReports || [];\n this.manifest.renditionReports.push(report);\n const index = this.manifest.renditionReports.length - 1;\n const required = ['LAST-MSN', 'URI'];\n\n if (hasParts) {\n required.push('LAST-PART');\n }\n\n this.warnOnMissingAttributes_(`#EXT-X-RENDITION-REPORT #${index}`, entry.attributes, required);\n },\n\n 'part-inf'() {\n this.manifest.partInf = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-PART-INF', entry.attributes, ['PART-TARGET']);\n\n if (this.manifest.partInf.partTarget) {\n this.manifest.partTargetDuration = this.manifest.partInf.partTarget;\n }\n\n setHoldBack.call(this, this.manifest);\n },\n\n 'daterange'() {\n this.manifest.dateRanges.push(camelCaseKeys(entry.attributes));\n const index = this.manifest.dateRanges.length - 1;\n this.warnOnMissingAttributes_(`#EXT-X-DATERANGE #${index}`, entry.attributes, ['ID', 'START-DATE']);\n const dateRange = this.manifest.dateRanges[index];\n\n if (dateRange.endDate && dateRange.startDate && new Date(dateRange.endDate) < new Date(dateRange.startDate)) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE END-DATE must be equal to or later than the value of the START-DATE'\n });\n }\n\n if (dateRange.duration && dateRange.duration < 0) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE DURATION must not be negative'\n });\n }\n\n if (dateRange.plannedDuration && dateRange.plannedDuration < 0) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE PLANNED-DURATION must not be negative'\n });\n }\n\n const endOnNextYes = !!dateRange.endOnNext;\n\n if (endOnNextYes && !dateRange.class) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE with an END-ON-NEXT=YES attribute must have a CLASS attribute'\n });\n }\n\n if (endOnNextYes && (dateRange.duration || dateRange.endDate)) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE with an END-ON-NEXT=YES attribute must not contain DURATION or END-DATE attributes'\n });\n }\n\n if (dateRange.duration && dateRange.endDate) {\n const startDate = dateRange.startDate;\n const newDateInSeconds = startDate.getTime() + dateRange.duration * 1000;\n this.manifest.dateRanges[index].endDate = new Date(newDateInSeconds);\n }\n\n if (!dateRangeTags[dateRange.id]) {\n dateRangeTags[dateRange.id] = dateRange;\n } else {\n for (const attribute in dateRangeTags[dateRange.id]) {\n if (!!dateRange[attribute] && JSON.stringify(dateRangeTags[dateRange.id][attribute]) !== JSON.stringify(dateRange[attribute])) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE tags with the same ID in a playlist must have the same attributes values'\n });\n break;\n }\n } // if tags with the same ID do not have conflicting attributes, merge them\n\n\n const dateRangeWithSameId = this.manifest.dateRanges.findIndex(dateRangeToFind => dateRangeToFind.id === dateRange.id);\n this.manifest.dateRanges[dateRangeWithSameId] = _extends(this.manifest.dateRanges[dateRangeWithSameId], dateRange);\n dateRangeTags[dateRange.id] = _extends(dateRangeTags[dateRange.id], dateRange); // after merging, delete the duplicate dateRange that was added last\n\n this.manifest.dateRanges.pop();\n }\n },\n\n 'independent-segments'() {\n this.manifest.independentSegments = true;\n },\n\n 'i-frames-only'() {\n this.manifest.iFramesOnly = true;\n this.requiredCompatibilityversion(this.manifest.version, 4);\n },\n\n 'content-steering'() {\n this.manifest.contentSteering = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-CONTENT-STEERING', entry.attributes, ['SERVER-URI']);\n },\n\n /** @this {Parser} */\n define() {\n this.manifest.definitions = this.manifest.definitions || {};\n\n const addDef = (n, v) => {\n if (n in this.manifest.definitions) {\n // An EXT-X-DEFINE tag MUST NOT specify the same Variable Name as any other\n // EXT-X-DEFINE tag in the same Playlist. Parsers that encounter duplicate\n // Variable Name declarations MUST fail to parse the Playlist.\n this.trigger('error', {\n message: `EXT-X-DEFINE: Duplicate name ${n}`\n });\n return;\n }\n\n this.manifest.definitions[n] = v;\n };\n\n if ('QUERYPARAM' in entry.attributes) {\n if ('NAME' in entry.attributes || 'IMPORT' in entry.attributes) {\n // An EXT-X-DEFINE tag MUST contain either a NAME, an IMPORT, or a\n // QUERYPARAM attribute, but only one of the three. Otherwise, the\n // client MUST fail to parse the Playlist.\n this.trigger('error', {\n message: 'EXT-X-DEFINE: Invalid attributes'\n });\n return;\n }\n\n const val = this.params.get(entry.attributes.QUERYPARAM);\n\n if (!val) {\n // If the QUERYPARAM attribute value does not match any query parameter in\n // the URI or the matching parameter has no associated value, the parser\n // MUST fail to parse the Playlist. If more than one parameter matches,\n // any of the associated values MAY be used.\n this.trigger('error', {\n message: `EXT-X-DEFINE: No query param ${entry.attributes.QUERYPARAM}`\n });\n return;\n }\n\n addDef(entry.attributes.QUERYPARAM, decodeURIComponent(val));\n return;\n }\n\n if ('NAME' in entry.attributes) {\n if ('IMPORT' in entry.attributes) {\n // An EXT-X-DEFINE tag MUST contain either a NAME, an IMPORT, or a\n // QUERYPARAM attribute, but only one of the three. Otherwise, the\n // client MUST fail to parse the Playlist.\n this.trigger('error', {\n message: 'EXT-X-DEFINE: Invalid attributes'\n });\n return;\n }\n\n if (!('VALUE' in entry.attributes) || typeof entry.attributes.VALUE !== 'string') {\n // This attribute is REQUIRED if the EXT-X-DEFINE tag has a NAME attribute.\n // The quoted-string MAY be empty.\n this.trigger('error', {\n message: `EXT-X-DEFINE: No value for ${entry.attributes.NAME}`\n });\n return;\n }\n\n addDef(entry.attributes.NAME, entry.attributes.VALUE);\n return;\n }\n\n if ('IMPORT' in entry.attributes) {\n if (!this.mainDefinitions[entry.attributes.IMPORT]) {\n // Covers two conditions, as mainDefinitions will always be empty on main\n //\n // EXT-X-DEFINE tags containing the IMPORT attribute MUST NOT occur in\n // Multivariant Playlists; they are only allowed in Media Playlists.\n //\n // If the IMPORT attribute value does not match any Variable Name in the\n // Multivariant Playlist, or if the Media Playlist loaded from a\n // Multivariant Playlist, the parser MUST fail the Playlist.\n this.trigger('error', {\n message: `EXT-X-DEFINE: No value ${entry.attributes.IMPORT} to import, or IMPORT used on main playlist`\n });\n return;\n }\n\n addDef(entry.attributes.IMPORT, this.mainDefinitions[entry.attributes.IMPORT]);\n return;\n } // An EXT-X-DEFINE tag MUST contain either a NAME, an IMPORT, or a QUERYPARAM\n // attribute, but only one of the three. Otherwise, the client MUST fail to\n // parse the Playlist.\n\n\n this.trigger('error', {\n message: 'EXT-X-DEFINE: No attribute'\n });\n },\n\n 'i-frame-playlist'() {\n this.manifest.iFramePlaylists.push({\n attributes: entry.attributes,\n uri: entry.uri,\n timeline: currentTimeline\n });\n this.warnOnMissingAttributes_('#EXT-X-I-FRAME-STREAM-INF', entry.attributes, ['BANDWIDTH', 'URI']);\n }\n\n })[entry.tagType] || noop).call(self);\n },\n\n uri() {\n currentUri.uri = entry.uri;\n uris.push(currentUri); // if no explicit duration was declared, use the target duration\n\n if (this.manifest.targetDuration && !('duration' in currentUri)) {\n this.trigger('warn', {\n message: 'defaulting segment duration to the target duration'\n });\n currentUri.duration = this.manifest.targetDuration;\n } // annotate with encryption information, if necessary\n\n\n if (key) {\n currentUri.key = key;\n }\n\n currentUri.timeline = currentTimeline; // annotate with initialization segment information, if necessary\n\n if (currentMap) {\n currentUri.map = currentMap;\n } // reset the last byterange end as it needs to be 0 between parts\n\n\n lastPartByterangeEnd = 0; // Once we have at least one program date time we can always extrapolate it forward\n\n if (this.lastProgramDateTime !== null) {\n currentUri.programDateTime = this.lastProgramDateTime;\n this.lastProgramDateTime += currentUri.duration * 1000;\n } // prepare for the next URI\n\n\n currentUri = {};\n },\n\n comment() {// comments are not important for playback\n },\n\n custom() {\n // if this is segment-level data attach the output to the segment\n if (entry.segment) {\n currentUri.custom = currentUri.custom || {};\n currentUri.custom[entry.customType] = entry.data; // if this is manifest-level data attach to the top level manifest object\n } else {\n this.manifest.custom = this.manifest.custom || {};\n this.manifest.custom[entry.customType] = entry.data;\n }\n }\n\n })[entry.type].call(self);\n });\n }\n\n requiredCompatibilityversion(currentVersion, targetVersion) {\n if (currentVersion < targetVersion || !currentVersion) {\n this.trigger('warn', {\n message: `manifest must be at least version ${targetVersion}`\n });\n }\n }\n\n warnOnMissingAttributes_(identifier, attributes, required) {\n const missing = [];\n required.forEach(function (key) {\n if (!attributes.hasOwnProperty(key)) {\n missing.push(key);\n }\n });\n\n if (missing.length) {\n this.trigger('warn', {\n message: `${identifier} lacks required attribute(s): ${missing.join(', ')}`\n });\n }\n }\n /**\n * Parse the input string and update the manifest object.\n *\n * @param {string} chunk a potentially incomplete portion of the manifest\n */\n\n\n push(chunk) {\n this.lineStream.push(chunk);\n }\n /**\n * Flush any remaining input. This can be handy if the last line of an M3U8\n * manifest did not contain a trailing newline but the file has been\n * completely received.\n */\n\n\n end() {\n // flush any buffered input\n this.lineStream.push('\\n');\n\n if (this.manifest.dateRanges.length && this.lastProgramDateTime === null) {\n this.trigger('warn', {\n message: 'A playlist with EXT-X-DATERANGE tag must contain atleast one EXT-X-PROGRAM-DATE-TIME tag'\n });\n }\n\n this.lastProgramDateTime = null;\n this.trigger('end');\n }\n /**\n * Add an additional parser for non-standard tags\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.customType the custom type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n\n\n addParser(options) {\n this.parseStream.addParser(options);\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n\n\n addTagMapper(options) {\n this.parseStream.addTagMapper(options);\n }\n\n}\n\nexport { LineStream, ParseStream, Parser };\n","import window from 'global/window';\nvar regexs = {\n // to determine mime types\n mp4: /^(av0?1|avc0?[1234]|vp0?9|flac|opus|mp3|mp4a|mp4v|stpp.ttml.im1t)/,\n webm: /^(vp0?[89]|av0?1|opus|vorbis)/,\n ogg: /^(vp0?[89]|theora|flac|opus|vorbis)/,\n // to determine if a codec is audio or video\n video: /^(av0?1|avc0?[1234]|vp0?[89]|hvc1|hev1|theora|mp4v)/,\n audio: /^(mp4a|flac|vorbis|opus|ac-[34]|ec-3|alac|mp3|speex|aac)/,\n text: /^(stpp.ttml.im1t)/,\n // mux.js support regex\n muxerVideo: /^(avc0?1)/,\n muxerAudio: /^(mp4a)/,\n // match nothing as muxer does not support text right now.\n // there cannot never be a character before the start of a string\n // so this matches nothing.\n muxerText: /a^/\n};\nvar mediaTypes = ['video', 'audio', 'text'];\nvar upperMediaTypes = ['Video', 'Audio', 'Text'];\n/**\n * Replace the old apple-style `avc1.
.
` codec string with the standard\n * `avc1.`\n *\n * @param {string} codec\n * Codec string to translate\n * @return {string}\n * The translated codec string\n */\n\nexport var translateLegacyCodec = function translateLegacyCodec(codec) {\n if (!codec) {\n return codec;\n }\n\n return codec.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (orig, profile, avcLevel) {\n var profileHex = ('00' + Number(profile).toString(16)).slice(-2);\n var avcLevelHex = ('00' + Number(avcLevel).toString(16)).slice(-2);\n return 'avc1.' + profileHex + '00' + avcLevelHex;\n });\n};\n/**\n * Replace the old apple-style `avc1.
.
` codec strings with the standard\n * `avc1.`\n *\n * @param {string[]} codecs\n * An array of codec strings to translate\n * @return {string[]}\n * The translated array of codec strings\n */\n\nexport var translateLegacyCodecs = function translateLegacyCodecs(codecs) {\n return codecs.map(translateLegacyCodec);\n};\n/**\n * Replace codecs in the codec string with the old apple-style `avc1.
.
` to the\n * standard `avc1.`.\n *\n * @param {string} codecString\n * The codec string\n * @return {string}\n * The codec string with old apple-style codecs replaced\n *\n * @private\n */\n\nexport var mapLegacyAvcCodecs = function mapLegacyAvcCodecs(codecString) {\n return codecString.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (match) {\n return translateLegacyCodecs([match])[0];\n });\n};\n/**\n * @typedef {Object} ParsedCodecInfo\n * @property {number} codecCount\n * Number of codecs parsed\n * @property {string} [videoCodec]\n * Parsed video codec (if found)\n * @property {string} [videoObjectTypeIndicator]\n * Video object type indicator (if found)\n * @property {string|null} audioProfile\n * Audio profile\n */\n\n/**\n * Parses a codec string to retrieve the number of codecs specified, the video codec and\n * object type indicator, and the audio profile.\n *\n * @param {string} [codecString]\n * The codec string to parse\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var parseCodecs = function parseCodecs(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n var codecs = codecString.split(',');\n var result = [];\n codecs.forEach(function (codec) {\n codec = codec.trim();\n var codecType;\n mediaTypes.forEach(function (name) {\n var match = regexs[name].exec(codec.toLowerCase());\n\n if (!match || match.length <= 1) {\n return;\n }\n\n codecType = name; // maintain codec case\n\n var type = codec.substring(0, match[1].length);\n var details = codec.replace(type, '');\n result.push({\n type: type,\n details: details,\n mediaType: name\n });\n });\n\n if (!codecType) {\n result.push({\n type: codec,\n details: '',\n mediaType: 'unknown'\n });\n }\n });\n return result;\n};\n/**\n * Returns a ParsedCodecInfo object for the default alternate audio playlist if there is\n * a default alternate audio playlist for the provided audio group.\n *\n * @param {Object} master\n * The master playlist\n * @param {string} audioGroupId\n * ID of the audio group for which to find the default codec info\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var codecsFromDefault = function codecsFromDefault(master, audioGroupId) {\n if (!master.mediaGroups.AUDIO || !audioGroupId) {\n return null;\n }\n\n var audioGroup = master.mediaGroups.AUDIO[audioGroupId];\n\n if (!audioGroup) {\n return null;\n }\n\n for (var name in audioGroup) {\n var audioType = audioGroup[name];\n\n if (audioType.default && audioType.playlists) {\n // codec should be the same for all playlists within the audio type\n return parseCodecs(audioType.playlists[0].attributes.CODECS);\n }\n }\n\n return null;\n};\nexport var isVideoCodec = function isVideoCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.video.test(codec.trim().toLowerCase());\n};\nexport var isAudioCodec = function isAudioCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.audio.test(codec.trim().toLowerCase());\n};\nexport var isTextCodec = function isTextCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.text.test(codec.trim().toLowerCase());\n};\nexport var getMimeForCodec = function getMimeForCodec(codecString) {\n if (!codecString || typeof codecString !== 'string') {\n return;\n }\n\n var codecs = codecString.toLowerCase().split(',').map(function (c) {\n return translateLegacyCodec(c.trim());\n }); // default to video type\n\n var type = 'video'; // only change to audio type if the only codec we have is\n // audio\n\n if (codecs.length === 1 && isAudioCodec(codecs[0])) {\n type = 'audio';\n } else if (codecs.length === 1 && isTextCodec(codecs[0])) {\n // text uses application/ for now\n type = 'application';\n } // default the container to mp4\n\n\n var container = 'mp4'; // every codec must be able to go into the container\n // for that container to be the correct one\n\n if (codecs.every(function (c) {\n return regexs.mp4.test(c);\n })) {\n container = 'mp4';\n } else if (codecs.every(function (c) {\n return regexs.webm.test(c);\n })) {\n container = 'webm';\n } else if (codecs.every(function (c) {\n return regexs.ogg.test(c);\n })) {\n container = 'ogg';\n }\n\n return type + \"/\" + container + \";codecs=\\\"\" + codecString + \"\\\"\";\n};\n/**\n * Tests whether the codec is supported by MediaSource. Optionally also tests ManagedMediaSource.\n *\n * @param {string} codecString\n * Codec to test\n * @param {boolean} [withMMS]\n * Whether to check if ManagedMediaSource supports it\n * @return {boolean}\n * Codec is supported\n */\n\nexport var browserSupportsCodec = function browserSupportsCodec(codecString, withMMS) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n if (withMMS === void 0) {\n withMMS = false;\n }\n\n return window.MediaSource && window.MediaSource.isTypeSupported && window.MediaSource.isTypeSupported(getMimeForCodec(codecString)) || withMMS && window.ManagedMediaSource && window.ManagedMediaSource.isTypeSupported && window.ManagedMediaSource.isTypeSupported(getMimeForCodec(codecString)) || false;\n};\nexport var muxerSupportsCodec = function muxerSupportsCodec(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n return codecString.toLowerCase().split(',').every(function (codec) {\n codec = codec.trim(); // any match is supported.\n\n for (var i = 0; i < upperMediaTypes.length; i++) {\n var type = upperMediaTypes[i];\n\n if (regexs[\"muxer\" + type].test(codec)) {\n return true;\n }\n }\n\n return false;\n });\n};\nexport var DEFAULT_AUDIO_CODEC = 'mp4a.40.2';\nexport var DEFAULT_VIDEO_CODEC = 'avc1.4d400d';","import window from 'global/window'; // const log2 = Math.log2 ? Math.log2 : (x) => (Math.log(x) / Math.log(2));\n\nvar repeat = function repeat(str, len) {\n var acc = '';\n\n while (len--) {\n acc += str;\n }\n\n return acc;\n}; // count the number of bits it would take to represent a number\n// we used to do this with log2 but BigInt does not support builtin math\n// Math.ceil(log2(x));\n\n\nexport var countBits = function countBits(x) {\n return x.toString(2).length;\n}; // count the number of whole bytes it would take to represent a number\n\nexport var countBytes = function countBytes(x) {\n return Math.ceil(countBits(x) / 8);\n};\nexport var padStart = function padStart(b, len, str) {\n if (str === void 0) {\n str = ' ';\n }\n\n return (repeat(str, len) + b.toString()).slice(-len);\n};\nexport var isArrayBufferView = function isArrayBufferView(obj) {\n if (ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(obj);\n }\n\n return obj && obj.buffer instanceof ArrayBuffer;\n};\nexport var isTypedArray = function isTypedArray(obj) {\n return isArrayBufferView(obj);\n};\nexport var toUint8 = function toUint8(bytes) {\n if (bytes instanceof Uint8Array) {\n return bytes;\n }\n\n if (!Array.isArray(bytes) && !isTypedArray(bytes) && !(bytes instanceof ArrayBuffer)) {\n // any non-number or NaN leads to empty uint8array\n // eslint-disable-next-line\n if (typeof bytes !== 'number' || typeof bytes === 'number' && bytes !== bytes) {\n bytes = 0;\n } else {\n bytes = [bytes];\n }\n }\n\n return new Uint8Array(bytes && bytes.buffer || bytes, bytes && bytes.byteOffset || 0, bytes && bytes.byteLength || 0);\n};\nexport var toHexString = function toHexString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(16), 2, '0');\n }\n\n return str;\n};\nexport var toBinaryString = function toBinaryString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(2), 8, '0');\n }\n\n return str;\n};\nvar BigInt = window.BigInt || Number;\nvar BYTE_TABLE = [BigInt('0x1'), BigInt('0x100'), BigInt('0x10000'), BigInt('0x1000000'), BigInt('0x100000000'), BigInt('0x10000000000'), BigInt('0x1000000000000'), BigInt('0x100000000000000'), BigInt('0x10000000000000000')];\nexport var ENDIANNESS = function () {\n var a = new Uint16Array([0xFFCC]);\n var b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n\n if (b[0] === 0xFF) {\n return 'big';\n }\n\n if (b[0] === 0xCC) {\n return 'little';\n }\n\n return 'unknown';\n}();\nexport var IS_BIG_ENDIAN = ENDIANNESS === 'big';\nexport var IS_LITTLE_ENDIAN = ENDIANNESS === 'little';\nexport var bytesToNumber = function bytesToNumber(bytes, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$signed = _ref.signed,\n signed = _ref$signed === void 0 ? false : _ref$signed,\n _ref$le = _ref.le,\n le = _ref$le === void 0 ? false : _ref$le;\n\n bytes = toUint8(bytes);\n var fn = le ? 'reduce' : 'reduceRight';\n var obj = bytes[fn] ? bytes[fn] : Array.prototype[fn];\n var number = obj.call(bytes, function (total, byte, i) {\n var exponent = le ? i : Math.abs(i + 1 - bytes.length);\n return total + BigInt(byte) * BYTE_TABLE[exponent];\n }, BigInt(0));\n\n if (signed) {\n var max = BYTE_TABLE[bytes.length] / BigInt(2) - BigInt(1);\n number = BigInt(number);\n\n if (number > max) {\n number -= max;\n number -= max;\n number -= BigInt(2);\n }\n }\n\n return Number(number);\n};\nexport var numberToBytes = function numberToBytes(number, _temp2) {\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\n _ref2$le = _ref2.le,\n le = _ref2$le === void 0 ? false : _ref2$le;\n\n // eslint-disable-next-line\n if (typeof number !== 'bigint' && typeof number !== 'number' || typeof number === 'number' && number !== number) {\n number = 0;\n }\n\n number = BigInt(number);\n var byteCount = countBytes(number);\n var bytes = new Uint8Array(new ArrayBuffer(byteCount));\n\n for (var i = 0; i < byteCount; i++) {\n var byteIndex = le ? i : Math.abs(i + 1 - bytes.length);\n bytes[byteIndex] = Number(number / BYTE_TABLE[i] & BigInt(0xFF));\n\n if (number < 0) {\n bytes[byteIndex] = Math.abs(~bytes[byteIndex]);\n bytes[byteIndex] -= i === 0 ? 1 : 2;\n }\n }\n\n return bytes;\n};\nexport var bytesToString = function bytesToString(bytes) {\n if (!bytes) {\n return '';\n } // TODO: should toUint8 handle cases where we only have 8 bytes\n // but report more since this is a Uint16+ Array?\n\n\n bytes = Array.prototype.slice.call(bytes);\n var string = String.fromCharCode.apply(null, toUint8(bytes));\n\n try {\n return decodeURIComponent(escape(string));\n } catch (e) {// if decodeURIComponent/escape fails, we are dealing with partial\n // or full non string data. Just return the potentially garbled string.\n }\n\n return string;\n};\nexport var stringToBytes = function stringToBytes(string, stringIsBytes) {\n if (typeof string !== 'string' && string && typeof string.toString === 'function') {\n string = string.toString();\n }\n\n if (typeof string !== 'string') {\n return new Uint8Array();\n } // If the string already is bytes, we don't have to do this\n // otherwise we do this so that we split multi length characters\n // into individual bytes\n\n\n if (!stringIsBytes) {\n string = unescape(encodeURIComponent(string));\n }\n\n var view = new Uint8Array(string.length);\n\n for (var i = 0; i < string.length; i++) {\n view[i] = string.charCodeAt(i);\n }\n\n return view;\n};\nexport var concatTypedArrays = function concatTypedArrays() {\n for (var _len = arguments.length, buffers = new Array(_len), _key = 0; _key < _len; _key++) {\n buffers[_key] = arguments[_key];\n }\n\n buffers = buffers.filter(function (b) {\n return b && (b.byteLength || b.length) && typeof b !== 'string';\n });\n\n if (buffers.length <= 1) {\n // for 0 length we will return empty uint8\n // for 1 length we return the first uint8\n return toUint8(buffers[0]);\n }\n\n var totalLen = buffers.reduce(function (total, buf, i) {\n return total + (buf.byteLength || buf.length);\n }, 0);\n var tempBuffer = new Uint8Array(totalLen);\n var offset = 0;\n buffers.forEach(function (buf) {\n buf = toUint8(buf);\n tempBuffer.set(buf, offset);\n offset += buf.byteLength;\n });\n return tempBuffer;\n};\n/**\n * Check if the bytes \"b\" are contained within bytes \"a\".\n *\n * @param {Uint8Array|Array} a\n * Bytes to check in\n *\n * @param {Uint8Array|Array} b\n * Bytes to check for\n *\n * @param {Object} options\n * options\n *\n * @param {Array|Uint8Array} [offset=0]\n * offset to use when looking at bytes in a\n *\n * @param {Array|Uint8Array} [mask=[]]\n * mask to use on bytes before comparison.\n *\n * @return {boolean}\n * If all bytes in b are inside of a, taking into account\n * bit masks.\n */\n\nexport var bytesMatch = function bytesMatch(a, b, _temp3) {\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\n _ref3$offset = _ref3.offset,\n offset = _ref3$offset === void 0 ? 0 : _ref3$offset,\n _ref3$mask = _ref3.mask,\n mask = _ref3$mask === void 0 ? [] : _ref3$mask;\n\n a = toUint8(a);\n b = toUint8(b); // ie 11 does not support uint8 every\n\n var fn = b.every ? b.every : Array.prototype.every;\n return b.length && a.length - offset >= b.length && // ie 11 doesn't support every on uin8\n fn.call(b, function (bByte, i) {\n var aByte = mask[i] ? mask[i] & a[offset + i] : a[offset + i];\n return bByte === aByte;\n });\n};\nexport var sliceBytes = function sliceBytes(src, start, end) {\n if (Uint8Array.prototype.slice) {\n return Uint8Array.prototype.slice.call(src, start, end);\n }\n\n return new Uint8Array(Array.prototype.slice.call(src, start, end));\n};\nexport var reverseBytes = function reverseBytes(src) {\n if (src.reverse) {\n return src.reverse();\n }\n\n return Array.prototype.reverse.call(src);\n};","var MPEGURL_REGEX = /^(audio|video|application)\\/(x-|vnd\\.apple\\.)?mpegurl/i;\nvar DASH_REGEX = /^application\\/dash\\+xml/i;\n/**\n * Returns a string that describes the type of source based on a video source object's\n * media type.\n *\n * @see {@link https://dev.w3.org/html5/pf-summary/video.html#dom-source-type|Source Type}\n *\n * @param {string} type\n * Video source object media type\n * @return {('hls'|'dash'|'vhs-json'|null)}\n * VHS source type string\n */\n\nexport var simpleTypeFromSourceType = function simpleTypeFromSourceType(type) {\n if (MPEGURL_REGEX.test(type)) {\n return 'hls';\n }\n\n if (DASH_REGEX.test(type)) {\n return 'dash';\n } // Denotes the special case of a manifest object passed to http-streaming instead of a\n // source URL.\n //\n // See https://en.wikipedia.org/wiki/Media_type for details on specifying media types.\n //\n // In this case, vnd stands for vendor, video.js for the organization, VHS for this\n // project, and the +json suffix identifies the structure of the media type.\n\n\n if (type === 'application/vnd.videojs.vhs+json') {\n return 'vhs-json';\n }\n\n return null;\n};","/*! @name mpd-parser @version 1.3.1 @license Apache-2.0 */\nimport resolveUrl from '@videojs/vhs-utils/es/resolve-url';\nimport window from 'global/window';\nimport { forEachMediaGroup } from '@videojs/vhs-utils/es/media-groups';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array';\nimport { DOMParser } from '@xmldom/xmldom';\n\nvar version = \"1.3.1\";\n\nconst isObject = obj => {\n return !!obj && typeof obj === 'object';\n};\n\nconst merge = (...objects) => {\n return objects.reduce((result, source) => {\n if (typeof source !== 'object') {\n return result;\n }\n\n Object.keys(source).forEach(key => {\n if (Array.isArray(result[key]) && Array.isArray(source[key])) {\n result[key] = result[key].concat(source[key]);\n } else if (isObject(result[key]) && isObject(source[key])) {\n result[key] = merge(result[key], source[key]);\n } else {\n result[key] = source[key];\n }\n });\n return result;\n }, {});\n};\nconst values = o => Object.keys(o).map(k => o[k]);\n\nconst range = (start, end) => {\n const result = [];\n\n for (let i = start; i < end; i++) {\n result.push(i);\n }\n\n return result;\n};\nconst flatten = lists => lists.reduce((x, y) => x.concat(y), []);\nconst from = list => {\n if (!list.length) {\n return [];\n }\n\n const result = [];\n\n for (let i = 0; i < list.length; i++) {\n result.push(list[i]);\n }\n\n return result;\n};\nconst findIndexes = (l, key) => l.reduce((a, e, i) => {\n if (e[key]) {\n a.push(i);\n }\n\n return a;\n}, []);\n/**\n * Returns a union of the included lists provided each element can be identified by a key.\n *\n * @param {Array} list - list of lists to get the union of\n * @param {Function} keyFunction - the function to use as a key for each element\n *\n * @return {Array} the union of the arrays\n */\n\nconst union = (lists, keyFunction) => {\n return values(lists.reduce((acc, list) => {\n list.forEach(el => {\n acc[keyFunction(el)] = el;\n });\n return acc;\n }, {}));\n};\n\nvar errors = {\n INVALID_NUMBER_OF_PERIOD: 'INVALID_NUMBER_OF_PERIOD',\n INVALID_NUMBER_OF_CONTENT_STEERING: 'INVALID_NUMBER_OF_CONTENT_STEERING',\n DASH_EMPTY_MANIFEST: 'DASH_EMPTY_MANIFEST',\n DASH_INVALID_XML: 'DASH_INVALID_XML',\n NO_BASE_URL: 'NO_BASE_URL',\n MISSING_SEGMENT_INFORMATION: 'MISSING_SEGMENT_INFORMATION',\n SEGMENT_TIME_UNSPECIFIED: 'SEGMENT_TIME_UNSPECIFIED',\n UNSUPPORTED_UTC_TIMING_SCHEME: 'UNSUPPORTED_UTC_TIMING_SCHEME'\n};\n\n/**\n * @typedef {Object} SingleUri\n * @property {string} uri - relative location of segment\n * @property {string} resolvedUri - resolved location of segment\n * @property {Object} byterange - Object containing information on how to make byte range\n * requests following byte-range-spec per RFC2616.\n * @property {String} byterange.length - length of range request\n * @property {String} byterange.offset - byte offset of range request\n *\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.1\n */\n\n/**\n * Converts a URLType node (5.3.9.2.3 Table 13) to a segment object\n * that conforms to how m3u8-parser is structured\n *\n * @see https://github.com/videojs/m3u8-parser\n *\n * @param {string} baseUrl - baseUrl provided by nodes\n * @param {string} source - source url for segment\n * @param {string} range - optional range used for range calls,\n * follows RFC 2616, Clause 14.35.1\n * @return {SingleUri} full segment information transformed into a format similar\n * to m3u8-parser\n */\n\nconst urlTypeToSegment = ({\n baseUrl = '',\n source = '',\n range = '',\n indexRange = ''\n}) => {\n const segment = {\n uri: source,\n resolvedUri: resolveUrl(baseUrl || '', source)\n };\n\n if (range || indexRange) {\n const rangeStr = range ? range : indexRange;\n const ranges = rangeStr.split('-'); // default to parsing this as a BigInt if possible\n\n let startRange = window.BigInt ? window.BigInt(ranges[0]) : parseInt(ranges[0], 10);\n let endRange = window.BigInt ? window.BigInt(ranges[1]) : parseInt(ranges[1], 10); // convert back to a number if less than MAX_SAFE_INTEGER\n\n if (startRange < Number.MAX_SAFE_INTEGER && typeof startRange === 'bigint') {\n startRange = Number(startRange);\n }\n\n if (endRange < Number.MAX_SAFE_INTEGER && typeof endRange === 'bigint') {\n endRange = Number(endRange);\n }\n\n let length;\n\n if (typeof endRange === 'bigint' || typeof startRange === 'bigint') {\n length = window.BigInt(endRange) - window.BigInt(startRange) + window.BigInt(1);\n } else {\n length = endRange - startRange + 1;\n }\n\n if (typeof length === 'bigint' && length < Number.MAX_SAFE_INTEGER) {\n length = Number(length);\n } // byterange should be inclusive according to\n // RFC 2616, Clause 14.35.1\n\n\n segment.byterange = {\n length,\n offset: startRange\n };\n }\n\n return segment;\n};\nconst byteRangeToString = byterange => {\n // `endRange` is one less than `offset + length` because the HTTP range\n // header uses inclusive ranges\n let endRange;\n\n if (typeof byterange.offset === 'bigint' || typeof byterange.length === 'bigint') {\n endRange = window.BigInt(byterange.offset) + window.BigInt(byterange.length) - window.BigInt(1);\n } else {\n endRange = byterange.offset + byterange.length - 1;\n }\n\n return `${byterange.offset}-${endRange}`;\n};\n\n/**\n * parse the end number attribue that can be a string\n * number, or undefined.\n *\n * @param {string|number|undefined} endNumber\n * The end number attribute.\n *\n * @return {number|null}\n * The result of parsing the end number.\n */\n\nconst parseEndNumber = endNumber => {\n if (endNumber && typeof endNumber !== 'number') {\n endNumber = parseInt(endNumber, 10);\n }\n\n if (isNaN(endNumber)) {\n return null;\n }\n\n return endNumber;\n};\n/**\n * Functions for calculating the range of available segments in static and dynamic\n * manifests.\n */\n\n\nconst segmentRange = {\n /**\n * Returns the entire range of available segments for a static MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n static(attributes) {\n const {\n duration,\n timescale = 1,\n sourceDuration,\n periodDuration\n } = attributes;\n const endNumber = parseEndNumber(attributes.endNumber);\n const segmentDuration = duration / timescale;\n\n if (typeof endNumber === 'number') {\n return {\n start: 0,\n end: endNumber\n };\n }\n\n if (typeof periodDuration === 'number') {\n return {\n start: 0,\n end: periodDuration / segmentDuration\n };\n }\n\n return {\n start: 0,\n end: sourceDuration / segmentDuration\n };\n },\n\n /**\n * Returns the current live window range of available segments for a dynamic MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n dynamic(attributes) {\n const {\n NOW,\n clientOffset,\n availabilityStartTime,\n timescale = 1,\n duration,\n periodStart = 0,\n minimumUpdatePeriod = 0,\n timeShiftBufferDepth = Infinity\n } = attributes;\n const endNumber = parseEndNumber(attributes.endNumber); // clientOffset is passed in at the top level of mpd-parser and is an offset calculated\n // after retrieving UTC server time.\n\n const now = (NOW + clientOffset) / 1000; // WC stands for Wall Clock.\n // Convert the period start time to EPOCH.\n\n const periodStartWC = availabilityStartTime + periodStart; // Period end in EPOCH is manifest's retrieval time + time until next update.\n\n const periodEndWC = now + minimumUpdatePeriod;\n const periodDuration = periodEndWC - periodStartWC;\n const segmentCount = Math.ceil(periodDuration * timescale / duration);\n const availableStart = Math.floor((now - periodStartWC - timeShiftBufferDepth) * timescale / duration);\n const availableEnd = Math.floor((now - periodStartWC) * timescale / duration);\n return {\n start: Math.max(0, availableStart),\n end: typeof endNumber === 'number' ? endNumber : Math.min(segmentCount, availableEnd)\n };\n }\n\n};\n/**\n * Maps a range of numbers to objects with information needed to build the corresponding\n * segment list\n *\n * @name toSegmentsCallback\n * @function\n * @param {number} number\n * Number of the segment\n * @param {number} index\n * Index of the number in the range list\n * @return {{ number: Number, duration: Number, timeline: Number, time: Number }}\n * Object with segment timing and duration info\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping a range of numbers to\n * information needed to build the segment list.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {toSegmentsCallback}\n * Callback map function\n */\n\nconst toSegments = attributes => number => {\n const {\n duration,\n timescale = 1,\n periodStart,\n startNumber = 1\n } = attributes;\n return {\n number: startNumber + number,\n duration: duration / timescale,\n timeline: periodStart,\n time: number * duration\n };\n};\n/**\n * Returns a list of objects containing segment timing and duration info used for\n * building the list of segments. This uses the @duration attribute specified\n * in the MPD manifest to derive the range of segments.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nconst parseByDuration = attributes => {\n const {\n type,\n duration,\n timescale = 1,\n periodDuration,\n sourceDuration\n } = attributes;\n const {\n start,\n end\n } = segmentRange[type](attributes);\n const segments = range(start, end).map(toSegments(attributes));\n\n if (type === 'static') {\n const index = segments.length - 1; // section is either a period or the full source\n\n const sectionDuration = typeof periodDuration === 'number' ? periodDuration : sourceDuration; // final segment may be less than full segment duration\n\n segments[index].duration = sectionDuration - duration / timescale * index;\n }\n\n return segments;\n};\n\n/**\n * Translates SegmentBase into a set of segments.\n * (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @return {Object.} list of segments\n */\n\nconst segmentsFromBase = attributes => {\n const {\n baseUrl,\n initialization = {},\n sourceDuration,\n indexRange = '',\n periodStart,\n presentationTime,\n number = 0,\n duration\n } = attributes; // base url is required for SegmentBase to work, per spec (Section 5.3.9.2.1)\n\n if (!baseUrl) {\n throw new Error(errors.NO_BASE_URL);\n }\n\n const initSegment = urlTypeToSegment({\n baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n const segment = urlTypeToSegment({\n baseUrl,\n source: baseUrl,\n indexRange\n });\n segment.map = initSegment; // If there is a duration, use it, otherwise use the given duration of the source\n // (since SegmentBase is only for one total segment)\n\n if (duration) {\n const segmentTimeInfo = parseByDuration(attributes);\n\n if (segmentTimeInfo.length) {\n segment.duration = segmentTimeInfo[0].duration;\n segment.timeline = segmentTimeInfo[0].timeline;\n }\n } else if (sourceDuration) {\n segment.duration = sourceDuration;\n segment.timeline = periodStart;\n } // If presentation time is provided, these segments are being generated by SIDX\n // references, and should use the time provided. For the general case of SegmentBase,\n // there should only be one segment in the period, so its presentation time is the same\n // as its period start.\n\n\n segment.presentationTime = presentationTime || periodStart;\n segment.number = number;\n return [segment];\n};\n/**\n * Given a playlist, a sidx box, and a baseUrl, update the segment list of the playlist\n * according to the sidx information given.\n *\n * playlist.sidx has metadadata about the sidx where-as the sidx param\n * is the parsed sidx box itself.\n *\n * @param {Object} playlist the playlist to update the sidx information for\n * @param {Object} sidx the parsed sidx box\n * @return {Object} the playlist object with the updated sidx information\n */\n\nconst addSidxSegmentsToPlaylist$1 = (playlist, sidx, baseUrl) => {\n // Retain init segment information\n const initSegment = playlist.sidx.map ? playlist.sidx.map : null; // Retain source duration from initial main manifest parsing\n\n const sourceDuration = playlist.sidx.duration; // Retain source timeline\n\n const timeline = playlist.timeline || 0;\n const sidxByteRange = playlist.sidx.byterange;\n const sidxEnd = sidxByteRange.offset + sidxByteRange.length; // Retain timescale of the parsed sidx\n\n const timescale = sidx.timescale; // referenceType 1 refers to other sidx boxes\n\n const mediaReferences = sidx.references.filter(r => r.referenceType !== 1);\n const segments = [];\n const type = playlist.endList ? 'static' : 'dynamic';\n const periodStart = playlist.sidx.timeline;\n let presentationTime = periodStart;\n let number = playlist.mediaSequence || 0; // firstOffset is the offset from the end of the sidx box\n\n let startIndex; // eslint-disable-next-line\n\n if (typeof sidx.firstOffset === 'bigint') {\n startIndex = window.BigInt(sidxEnd) + sidx.firstOffset;\n } else {\n startIndex = sidxEnd + sidx.firstOffset;\n }\n\n for (let i = 0; i < mediaReferences.length; i++) {\n const reference = sidx.references[i]; // size of the referenced (sub)segment\n\n const size = reference.referencedSize; // duration of the referenced (sub)segment, in the timescale\n // this will be converted to seconds when generating segments\n\n const duration = reference.subsegmentDuration; // should be an inclusive range\n\n let endIndex; // eslint-disable-next-line\n\n if (typeof startIndex === 'bigint') {\n endIndex = startIndex + window.BigInt(size) - window.BigInt(1);\n } else {\n endIndex = startIndex + size - 1;\n }\n\n const indexRange = `${startIndex}-${endIndex}`;\n const attributes = {\n baseUrl,\n timescale,\n timeline,\n periodStart,\n presentationTime,\n number,\n duration,\n sourceDuration,\n indexRange,\n type\n };\n const segment = segmentsFromBase(attributes)[0];\n\n if (initSegment) {\n segment.map = initSegment;\n }\n\n segments.push(segment);\n\n if (typeof startIndex === 'bigint') {\n startIndex += window.BigInt(size);\n } else {\n startIndex += size;\n }\n\n presentationTime += duration / timescale;\n number++;\n }\n\n playlist.segments = segments;\n return playlist;\n};\n\nconst SUPPORTED_MEDIA_TYPES = ['AUDIO', 'SUBTITLES']; // allow one 60fps frame as leniency (arbitrarily chosen)\n\nconst TIME_FUDGE = 1 / 60;\n/**\n * Given a list of timelineStarts, combines, dedupes, and sorts them.\n *\n * @param {TimelineStart[]} timelineStarts - list of timeline starts\n *\n * @return {TimelineStart[]} the combined and deduped timeline starts\n */\n\nconst getUniqueTimelineStarts = timelineStarts => {\n return union(timelineStarts, ({\n timeline\n }) => timeline).sort((a, b) => a.timeline > b.timeline ? 1 : -1);\n};\n/**\n * Finds the playlist with the matching NAME attribute.\n *\n * @param {Array} playlists - playlists to search through\n * @param {string} name - the NAME attribute to search for\n *\n * @return {Object|null} the matching playlist object, or null\n */\n\nconst findPlaylistWithName = (playlists, name) => {\n for (let i = 0; i < playlists.length; i++) {\n if (playlists[i].attributes.NAME === name) {\n return playlists[i];\n }\n }\n\n return null;\n};\n/**\n * Gets a flattened array of media group playlists.\n *\n * @param {Object} manifest - the main manifest object\n *\n * @return {Array} the media group playlists\n */\n\nconst getMediaGroupPlaylists = manifest => {\n let mediaGroupPlaylists = [];\n forEachMediaGroup(manifest, SUPPORTED_MEDIA_TYPES, (properties, type, group, label) => {\n mediaGroupPlaylists = mediaGroupPlaylists.concat(properties.playlists || []);\n });\n return mediaGroupPlaylists;\n};\n/**\n * Updates the playlist's media sequence numbers.\n *\n * @param {Object} config - options object\n * @param {Object} config.playlist - the playlist to update\n * @param {number} config.mediaSequence - the mediaSequence number to start with\n */\n\nconst updateMediaSequenceForPlaylist = ({\n playlist,\n mediaSequence\n}) => {\n playlist.mediaSequence = mediaSequence;\n playlist.segments.forEach((segment, index) => {\n segment.number = playlist.mediaSequence + index;\n });\n};\n/**\n * Updates the media and discontinuity sequence numbers of newPlaylists given oldPlaylists\n * and a complete list of timeline starts.\n *\n * If no matching playlist is found, only the discontinuity sequence number of the playlist\n * will be updated.\n *\n * Since early available timelines are not supported, at least one segment must be present.\n *\n * @param {Object} config - options object\n * @param {Object[]} oldPlaylists - the old playlists to use as a reference\n * @param {Object[]} newPlaylists - the new playlists to update\n * @param {Object} timelineStarts - all timelineStarts seen in the stream to this point\n */\n\nconst updateSequenceNumbers = ({\n oldPlaylists,\n newPlaylists,\n timelineStarts\n}) => {\n newPlaylists.forEach(playlist => {\n playlist.discontinuitySequence = timelineStarts.findIndex(function ({\n timeline\n }) {\n return timeline === playlist.timeline;\n }); // Playlists NAMEs come from DASH Representation IDs, which are mandatory\n // (see ISO_23009-1-2012 5.3.5.2).\n //\n // If the same Representation existed in a prior Period, it will retain the same NAME.\n\n const oldPlaylist = findPlaylistWithName(oldPlaylists, playlist.attributes.NAME);\n\n if (!oldPlaylist) {\n // Since this is a new playlist, the media sequence values can start from 0 without\n // consequence.\n return;\n } // TODO better support for live SIDX\n //\n // As of this writing, mpd-parser does not support multiperiod SIDX (in live or VOD).\n // This is evident by a playlist only having a single SIDX reference. In a multiperiod\n // playlist there would need to be multiple SIDX references. In addition, live SIDX is\n // not supported when the SIDX properties change on refreshes.\n //\n // In the future, if support needs to be added, the merging logic here can be called\n // after SIDX references are resolved. For now, exit early to prevent exceptions being\n // thrown due to undefined references.\n\n\n if (playlist.sidx) {\n return;\n } // Since we don't yet support early available timelines, we don't need to support\n // playlists with no segments.\n\n\n const firstNewSegment = playlist.segments[0];\n const oldMatchingSegmentIndex = oldPlaylist.segments.findIndex(function (oldSegment) {\n return Math.abs(oldSegment.presentationTime - firstNewSegment.presentationTime) < TIME_FUDGE;\n }); // No matching segment from the old playlist means the entire playlist was refreshed.\n // In this case the media sequence should account for this update, and the new segments\n // should be marked as discontinuous from the prior content, since the last prior\n // timeline was removed.\n\n if (oldMatchingSegmentIndex === -1) {\n updateMediaSequenceForPlaylist({\n playlist,\n mediaSequence: oldPlaylist.mediaSequence + oldPlaylist.segments.length\n });\n playlist.segments[0].discontinuity = true;\n playlist.discontinuityStarts.unshift(0); // No matching segment does not necessarily mean there's missing content.\n //\n // If the new playlist's timeline is the same as the last seen segment's timeline,\n // then a discontinuity can be added to identify that there's potentially missing\n // content. If there's no missing content, the discontinuity should still be rather\n // harmless. It's possible that if segment durations are accurate enough, that the\n // existence of a gap can be determined using the presentation times and durations,\n // but if the segment timing info is off, it may introduce more problems than simply\n // adding the discontinuity.\n //\n // If the new playlist's timeline is different from the last seen segment's timeline,\n // then a discontinuity can be added to identify that this is the first seen segment\n // of a new timeline. However, the logic at the start of this function that\n // determined the disconinuity sequence by timeline index is now off by one (the\n // discontinuity of the newest timeline hasn't yet fallen off the manifest...since\n // we added it), so the disconinuity sequence must be decremented.\n //\n // A period may also have a duration of zero, so the case of no segments is handled\n // here even though we don't yet support early available periods.\n\n if (!oldPlaylist.segments.length && playlist.timeline > oldPlaylist.timeline || oldPlaylist.segments.length && playlist.timeline > oldPlaylist.segments[oldPlaylist.segments.length - 1].timeline) {\n playlist.discontinuitySequence--;\n }\n\n return;\n } // If the first segment matched with a prior segment on a discontinuity (it's matching\n // on the first segment of a period), then the discontinuitySequence shouldn't be the\n // timeline's matching one, but instead should be the one prior, and the first segment\n // of the new manifest should be marked with a discontinuity.\n //\n // The reason for this special case is that discontinuity sequence shows how many\n // discontinuities have fallen off of the playlist, and discontinuities are marked on\n // the first segment of a new \"timeline.\" Because of this, while DASH will retain that\n // Period while the \"timeline\" exists, HLS keeps track of it via the discontinuity\n // sequence, and that first segment is an indicator, but can be removed before that\n // timeline is gone.\n\n\n const oldMatchingSegment = oldPlaylist.segments[oldMatchingSegmentIndex];\n\n if (oldMatchingSegment.discontinuity && !firstNewSegment.discontinuity) {\n firstNewSegment.discontinuity = true;\n playlist.discontinuityStarts.unshift(0);\n playlist.discontinuitySequence--;\n }\n\n updateMediaSequenceForPlaylist({\n playlist,\n mediaSequence: oldPlaylist.segments[oldMatchingSegmentIndex].number\n });\n });\n};\n/**\n * Given an old parsed manifest object and a new parsed manifest object, updates the\n * sequence and timing values within the new manifest to ensure that it lines up with the\n * old.\n *\n * @param {Array} oldManifest - the old main manifest object\n * @param {Array} newManifest - the new main manifest object\n *\n * @return {Object} the updated new manifest object\n */\n\nconst positionManifestOnTimeline = ({\n oldManifest,\n newManifest\n}) => {\n // Starting from v4.1.2 of the IOP, section 4.4.3.3 states:\n //\n // \"MPD@availabilityStartTime and Period@start shall not be changed over MPD updates.\"\n //\n // This was added from https://github.com/Dash-Industry-Forum/DASH-IF-IOP/issues/160\n //\n // Because of this change, and the difficulty of supporting periods with changing start\n // times, periods with changing start times are not supported. This makes the logic much\n // simpler, since periods with the same start time can be considerred the same period\n // across refreshes.\n //\n // To give an example as to the difficulty of handling periods where the start time may\n // change, if a single period manifest is refreshed with another manifest with a single\n // period, and both the start and end times are increased, then the only way to determine\n // if it's a new period or an old one that has changed is to look through the segments of\n // each playlist and determine the presentation time bounds to find a match. In addition,\n // if the period start changed to exceed the old period end, then there would be no\n // match, and it would not be possible to determine whether the refreshed period is a new\n // one or the old one.\n const oldPlaylists = oldManifest.playlists.concat(getMediaGroupPlaylists(oldManifest));\n const newPlaylists = newManifest.playlists.concat(getMediaGroupPlaylists(newManifest)); // Save all seen timelineStarts to the new manifest. Although this potentially means that\n // there's a \"memory leak\" in that it will never stop growing, in reality, only a couple\n // of properties are saved for each seen Period. Even long running live streams won't\n // generate too many Periods, unless the stream is watched for decades. In the future,\n // this can be optimized by mapping to discontinuity sequence numbers for each timeline,\n // but it may not become an issue, and the additional info can be useful for debugging.\n\n newManifest.timelineStarts = getUniqueTimelineStarts([oldManifest.timelineStarts, newManifest.timelineStarts]);\n updateSequenceNumbers({\n oldPlaylists,\n newPlaylists,\n timelineStarts: newManifest.timelineStarts\n });\n return newManifest;\n};\n\nconst generateSidxKey = sidx => sidx && sidx.uri + '-' + byteRangeToString(sidx.byterange);\n\nconst mergeDiscontiguousPlaylists = playlists => {\n // Break out playlists into groups based on their baseUrl\n const playlistsByBaseUrl = playlists.reduce(function (acc, cur) {\n if (!acc[cur.attributes.baseUrl]) {\n acc[cur.attributes.baseUrl] = [];\n }\n\n acc[cur.attributes.baseUrl].push(cur);\n return acc;\n }, {});\n let allPlaylists = [];\n Object.values(playlistsByBaseUrl).forEach(playlistGroup => {\n const mergedPlaylists = values(playlistGroup.reduce((acc, playlist) => {\n // assuming playlist IDs are the same across periods\n // TODO: handle multiperiod where representation sets are not the same\n // across periods\n const name = playlist.attributes.id + (playlist.attributes.lang || '');\n\n if (!acc[name]) {\n // First Period\n acc[name] = playlist;\n acc[name].attributes.timelineStarts = [];\n } else {\n // Subsequent Periods\n if (playlist.segments) {\n // first segment of subsequent periods signal a discontinuity\n if (playlist.segments[0]) {\n playlist.segments[0].discontinuity = true;\n }\n\n acc[name].segments.push(...playlist.segments);\n } // bubble up contentProtection, this assumes all DRM content\n // has the same contentProtection\n\n\n if (playlist.attributes.contentProtection) {\n acc[name].attributes.contentProtection = playlist.attributes.contentProtection;\n }\n }\n\n acc[name].attributes.timelineStarts.push({\n // Although they represent the same number, it's important to have both to make it\n // compatible with HLS potentially having a similar attribute.\n start: playlist.attributes.periodStart,\n timeline: playlist.attributes.periodStart\n });\n return acc;\n }, {}));\n allPlaylists = allPlaylists.concat(mergedPlaylists);\n });\n return allPlaylists.map(playlist => {\n playlist.discontinuityStarts = findIndexes(playlist.segments || [], 'discontinuity');\n return playlist;\n });\n};\n\nconst addSidxSegmentsToPlaylist = (playlist, sidxMapping) => {\n const sidxKey = generateSidxKey(playlist.sidx);\n const sidxMatch = sidxKey && sidxMapping[sidxKey] && sidxMapping[sidxKey].sidx;\n\n if (sidxMatch) {\n addSidxSegmentsToPlaylist$1(playlist, sidxMatch, playlist.sidx.resolvedUri);\n }\n\n return playlist;\n};\nconst addSidxSegmentsToPlaylists = (playlists, sidxMapping = {}) => {\n if (!Object.keys(sidxMapping).length) {\n return playlists;\n }\n\n for (const i in playlists) {\n playlists[i] = addSidxSegmentsToPlaylist(playlists[i], sidxMapping);\n }\n\n return playlists;\n};\nconst formatAudioPlaylist = ({\n attributes,\n segments,\n sidx,\n mediaSequence,\n discontinuitySequence,\n discontinuityStarts\n}, isAudioOnly) => {\n const playlist = {\n attributes: {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth,\n CODECS: attributes.codecs,\n ['PROGRAM-ID']: 1\n },\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n targetDuration: attributes.duration,\n discontinuitySequence,\n discontinuityStarts,\n timelineStarts: attributes.timelineStarts,\n mediaSequence,\n segments\n };\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (attributes.serviceLocation) {\n playlist.attributes.serviceLocation = attributes.serviceLocation;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n if (isAudioOnly) {\n playlist.attributes.AUDIO = 'audio';\n playlist.attributes.SUBTITLES = 'subs';\n }\n\n return playlist;\n};\nconst formatVttPlaylist = ({\n attributes,\n segments,\n mediaSequence,\n discontinuityStarts,\n discontinuitySequence\n}) => {\n if (typeof segments === 'undefined') {\n // vtt tracks may use single file in BaseURL\n segments = [{\n uri: attributes.baseUrl,\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n duration: attributes.sourceDuration,\n number: 0\n }]; // targetDuration should be the same duration as the only segment\n\n attributes.duration = attributes.sourceDuration;\n }\n\n const m3u8Attributes = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth,\n ['PROGRAM-ID']: 1\n };\n\n if (attributes.codecs) {\n m3u8Attributes.CODECS = attributes.codecs;\n }\n\n const vttPlaylist = {\n attributes: m3u8Attributes,\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n targetDuration: attributes.duration,\n timelineStarts: attributes.timelineStarts,\n discontinuityStarts,\n discontinuitySequence,\n mediaSequence,\n segments\n };\n\n if (attributes.serviceLocation) {\n vttPlaylist.attributes.serviceLocation = attributes.serviceLocation;\n }\n\n return vttPlaylist;\n};\nconst organizeAudioPlaylists = (playlists, sidxMapping = {}, isAudioOnly = false) => {\n let mainPlaylist;\n const formattedPlaylists = playlists.reduce((a, playlist) => {\n const role = playlist.attributes.role && playlist.attributes.role.value || '';\n const language = playlist.attributes.lang || '';\n let label = playlist.attributes.label || 'main';\n\n if (language && !playlist.attributes.label) {\n const roleLabel = role ? ` (${role})` : '';\n label = `${playlist.attributes.lang}${roleLabel}`;\n }\n\n if (!a[label]) {\n a[label] = {\n language,\n autoselect: true,\n default: role === 'main',\n playlists: [],\n uri: ''\n };\n }\n\n const formatted = addSidxSegmentsToPlaylist(formatAudioPlaylist(playlist, isAudioOnly), sidxMapping);\n a[label].playlists.push(formatted);\n\n if (typeof mainPlaylist === 'undefined' && role === 'main') {\n mainPlaylist = playlist;\n mainPlaylist.default = true;\n }\n\n return a;\n }, {}); // if no playlists have role \"main\", mark the first as main\n\n if (!mainPlaylist) {\n const firstLabel = Object.keys(formattedPlaylists)[0];\n formattedPlaylists[firstLabel].default = true;\n }\n\n return formattedPlaylists;\n};\nconst organizeVttPlaylists = (playlists, sidxMapping = {}) => {\n return playlists.reduce((a, playlist) => {\n const label = playlist.attributes.label || playlist.attributes.lang || 'text';\n const language = playlist.attributes.lang || 'und';\n\n if (!a[label]) {\n a[label] = {\n language,\n default: false,\n autoselect: false,\n playlists: [],\n uri: ''\n };\n }\n\n a[label].playlists.push(addSidxSegmentsToPlaylist(formatVttPlaylist(playlist), sidxMapping));\n return a;\n }, {});\n};\n\nconst organizeCaptionServices = captionServices => captionServices.reduce((svcObj, svc) => {\n if (!svc) {\n return svcObj;\n }\n\n svc.forEach(service => {\n const {\n channel,\n language\n } = service;\n svcObj[language] = {\n autoselect: false,\n default: false,\n instreamId: channel,\n language\n };\n\n if (service.hasOwnProperty('aspectRatio')) {\n svcObj[language].aspectRatio = service.aspectRatio;\n }\n\n if (service.hasOwnProperty('easyReader')) {\n svcObj[language].easyReader = service.easyReader;\n }\n\n if (service.hasOwnProperty('3D')) {\n svcObj[language]['3D'] = service['3D'];\n }\n });\n return svcObj;\n}, {});\n\nconst formatVideoPlaylist = ({\n attributes,\n segments,\n sidx,\n discontinuityStarts\n}) => {\n const playlist = {\n attributes: {\n NAME: attributes.id,\n AUDIO: 'audio',\n SUBTITLES: 'subs',\n RESOLUTION: {\n width: attributes.width,\n height: attributes.height\n },\n CODECS: attributes.codecs,\n BANDWIDTH: attributes.bandwidth,\n ['PROGRAM-ID']: 1\n },\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n targetDuration: attributes.duration,\n discontinuityStarts,\n timelineStarts: attributes.timelineStarts,\n segments\n };\n\n if (attributes.frameRate) {\n playlist.attributes['FRAME-RATE'] = attributes.frameRate;\n }\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (attributes.serviceLocation) {\n playlist.attributes.serviceLocation = attributes.serviceLocation;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n return playlist;\n};\n\nconst videoOnly = ({\n attributes\n}) => attributes.mimeType === 'video/mp4' || attributes.mimeType === 'video/webm' || attributes.contentType === 'video';\n\nconst audioOnly = ({\n attributes\n}) => attributes.mimeType === 'audio/mp4' || attributes.mimeType === 'audio/webm' || attributes.contentType === 'audio';\n\nconst vttOnly = ({\n attributes\n}) => attributes.mimeType === 'text/vtt' || attributes.contentType === 'text';\n/**\n * Contains start and timeline properties denoting a timeline start. For DASH, these will\n * be the same number.\n *\n * @typedef {Object} TimelineStart\n * @property {number} start - the start time of the timeline\n * @property {number} timeline - the timeline number\n */\n\n/**\n * Adds appropriate media and discontinuity sequence values to the segments and playlists.\n *\n * Throughout mpd-parser, the `number` attribute is used in relation to `startNumber`, a\n * DASH specific attribute used in constructing segment URI's from templates. However, from\n * an HLS perspective, the `number` attribute on a segment would be its `mediaSequence`\n * value, which should start at the original media sequence value (or 0) and increment by 1\n * for each segment thereafter. Since DASH's `startNumber` values are independent per\n * period, it doesn't make sense to use it for `number`. Instead, assume everything starts\n * from a 0 mediaSequence value and increment from there.\n *\n * Note that VHS currently doesn't use the `number` property, but it can be helpful for\n * debugging and making sense of the manifest.\n *\n * For live playlists, to account for values increasing in manifests when periods are\n * removed on refreshes, merging logic should be used to update the numbers to their\n * appropriate values (to ensure they're sequential and increasing).\n *\n * @param {Object[]} playlists - the playlists to update\n * @param {TimelineStart[]} timelineStarts - the timeline starts for the manifest\n */\n\n\nconst addMediaSequenceValues = (playlists, timelineStarts) => {\n // increment all segments sequentially\n playlists.forEach(playlist => {\n playlist.mediaSequence = 0;\n playlist.discontinuitySequence = timelineStarts.findIndex(function ({\n timeline\n }) {\n return timeline === playlist.timeline;\n });\n\n if (!playlist.segments) {\n return;\n }\n\n playlist.segments.forEach((segment, index) => {\n segment.number = index;\n });\n });\n};\n/**\n * Given a media group object, flattens all playlists within the media group into a single\n * array.\n *\n * @param {Object} mediaGroupObject - the media group object\n *\n * @return {Object[]}\n * The media group playlists\n */\n\nconst flattenMediaGroupPlaylists = mediaGroupObject => {\n if (!mediaGroupObject) {\n return [];\n }\n\n return Object.keys(mediaGroupObject).reduce((acc, label) => {\n const labelContents = mediaGroupObject[label];\n return acc.concat(labelContents.playlists);\n }, []);\n};\nconst toM3u8 = ({\n dashPlaylists,\n locations,\n contentSteering,\n sidxMapping = {},\n previousManifest,\n eventStream\n}) => {\n if (!dashPlaylists.length) {\n return {};\n } // grab all main manifest attributes\n\n\n const {\n sourceDuration: duration,\n type,\n suggestedPresentationDelay,\n minimumUpdatePeriod\n } = dashPlaylists[0].attributes;\n const videoPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist);\n const audioPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly));\n const vttPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(vttOnly));\n const captions = dashPlaylists.map(playlist => playlist.attributes.captionServices).filter(Boolean);\n const manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: [],\n endList: true,\n mediaGroups: {\n AUDIO: {},\n VIDEO: {},\n ['CLOSED-CAPTIONS']: {},\n SUBTITLES: {}\n },\n uri: '',\n duration,\n playlists: addSidxSegmentsToPlaylists(videoPlaylists, sidxMapping)\n };\n\n if (minimumUpdatePeriod >= 0) {\n manifest.minimumUpdatePeriod = minimumUpdatePeriod * 1000;\n }\n\n if (locations) {\n manifest.locations = locations;\n }\n\n if (contentSteering) {\n manifest.contentSteering = contentSteering;\n }\n\n if (type === 'dynamic') {\n manifest.suggestedPresentationDelay = suggestedPresentationDelay;\n }\n\n if (eventStream && eventStream.length > 0) {\n manifest.eventStream = eventStream;\n }\n\n const isAudioOnly = manifest.playlists.length === 0;\n const organizedAudioGroup = audioPlaylists.length ? organizeAudioPlaylists(audioPlaylists, sidxMapping, isAudioOnly) : null;\n const organizedVttGroup = vttPlaylists.length ? organizeVttPlaylists(vttPlaylists, sidxMapping) : null;\n const formattedPlaylists = videoPlaylists.concat(flattenMediaGroupPlaylists(organizedAudioGroup), flattenMediaGroupPlaylists(organizedVttGroup));\n const playlistTimelineStarts = formattedPlaylists.map(({\n timelineStarts\n }) => timelineStarts);\n manifest.timelineStarts = getUniqueTimelineStarts(playlistTimelineStarts);\n addMediaSequenceValues(formattedPlaylists, manifest.timelineStarts);\n\n if (organizedAudioGroup) {\n manifest.mediaGroups.AUDIO.audio = organizedAudioGroup;\n }\n\n if (organizedVttGroup) {\n manifest.mediaGroups.SUBTITLES.subs = organizedVttGroup;\n }\n\n if (captions.length) {\n manifest.mediaGroups['CLOSED-CAPTIONS'].cc = organizeCaptionServices(captions);\n }\n\n if (previousManifest) {\n return positionManifestOnTimeline({\n oldManifest: previousManifest,\n newManifest: manifest\n });\n }\n\n return manifest;\n};\n\n/**\n * Calculates the R (repetition) value for a live stream (for the final segment\n * in a manifest where the r value is negative 1)\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {number} time\n * current time (typically the total time up until the final segment)\n * @param {number} duration\n * duration property for the given \n *\n * @return {number}\n * R value to reach the end of the given period\n */\nconst getLiveRValue = (attributes, time, duration) => {\n const {\n NOW,\n clientOffset,\n availabilityStartTime,\n timescale = 1,\n periodStart = 0,\n minimumUpdatePeriod = 0\n } = attributes;\n const now = (NOW + clientOffset) / 1000;\n const periodStartWC = availabilityStartTime + periodStart;\n const periodEndWC = now + minimumUpdatePeriod;\n const periodDuration = periodEndWC - periodStartWC;\n return Math.ceil((periodDuration * timescale - time) / duration);\n};\n/**\n * Uses information provided by SegmentTemplate.SegmentTimeline to determine segment\n * timing and duration\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n *\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\n\nconst parseByTimeline = (attributes, segmentTimeline) => {\n const {\n type,\n minimumUpdatePeriod = 0,\n media = '',\n sourceDuration,\n timescale = 1,\n startNumber = 1,\n periodStart: timeline\n } = attributes;\n const segments = [];\n let time = -1;\n\n for (let sIndex = 0; sIndex < segmentTimeline.length; sIndex++) {\n const S = segmentTimeline[sIndex];\n const duration = S.d;\n const repeat = S.r || 0;\n const segmentTime = S.t || 0;\n\n if (time < 0) {\n // first segment\n time = segmentTime;\n }\n\n if (segmentTime && segmentTime > time) {\n // discontinuity\n // TODO: How to handle this type of discontinuity\n // timeline++ here would treat it like HLS discontuity and content would\n // get appended without gap\n // E.G.\n // \n // \n // \n // \n // would have $Time$ values of [0, 1, 2, 5]\n // should this be appened at time positions [0, 1, 2, 3],(#EXT-X-DISCONTINUITY)\n // or [0, 1, 2, gap, gap, 5]? (#EXT-X-GAP)\n // does the value of sourceDuration consider this when calculating arbitrary\n // negative @r repeat value?\n // E.G. Same elements as above with this added at the end\n // \n // with a sourceDuration of 10\n // Would the 2 gaps be included in the time duration calculations resulting in\n // 8 segments with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9] or 10 segments\n // with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9, 10, 11] ?\n time = segmentTime;\n }\n\n let count;\n\n if (repeat < 0) {\n const nextS = sIndex + 1;\n\n if (nextS === segmentTimeline.length) {\n // last segment\n if (type === 'dynamic' && minimumUpdatePeriod > 0 && media.indexOf('$Number$') > 0) {\n count = getLiveRValue(attributes, time, duration);\n } else {\n // TODO: This may be incorrect depending on conclusion of TODO above\n count = (sourceDuration * timescale - time) / duration;\n }\n } else {\n count = (segmentTimeline[nextS].t - time) / duration;\n }\n } else {\n count = repeat + 1;\n }\n\n const end = startNumber + segments.length + count;\n let number = startNumber + segments.length;\n\n while (number < end) {\n segments.push({\n number,\n duration: duration / timescale,\n time,\n timeline\n });\n time += duration;\n number++;\n }\n }\n\n return segments;\n};\n\nconst identifierPattern = /\\$([A-z]*)(?:(%0)([0-9]+)d)?\\$/g;\n/**\n * Replaces template identifiers with corresponding values. To be used as the callback\n * for String.prototype.replace\n *\n * @name replaceCallback\n * @function\n * @param {string} match\n * Entire match of identifier\n * @param {string} identifier\n * Name of matched identifier\n * @param {string} format\n * Format tag string. Its presence indicates that padding is expected\n * @param {string} width\n * Desired length of the replaced value. Values less than this width shall be left\n * zero padded\n * @return {string}\n * Replacement for the matched identifier\n */\n\n/**\n * Returns a function to be used as a callback for String.prototype.replace to replace\n * template identifiers\n *\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {replaceCallback}\n * Callback to be used with String.prototype.replace to replace identifiers\n */\n\nconst identifierReplacement = values => (match, identifier, format, width) => {\n if (match === '$$') {\n // escape sequence\n return '$';\n }\n\n if (typeof values[identifier] === 'undefined') {\n return match;\n }\n\n const value = '' + values[identifier];\n\n if (identifier === 'RepresentationID') {\n // Format tag shall not be present with RepresentationID\n return value;\n }\n\n if (!format) {\n width = 1;\n } else {\n width = parseInt(width, 10);\n }\n\n if (value.length >= width) {\n return value;\n }\n\n return `${new Array(width - value.length + 1).join('0')}${value}`;\n};\n/**\n * Constructs a segment url from a template string\n *\n * @param {string} url\n * Template string to construct url from\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {string}\n * Segment url with identifiers replaced\n */\n\nconst constructTemplateUrl = (url, values) => url.replace(identifierPattern, identifierReplacement(values));\n/**\n * Generates a list of objects containing timing and duration information about each\n * segment needed to generate segment uris and the complete segment object\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nconst parseTemplateInfo = (attributes, segmentTimeline) => {\n if (!attributes.duration && !segmentTimeline) {\n // if neither @duration or SegmentTimeline are present, then there shall be exactly\n // one media segment\n return [{\n number: attributes.startNumber || 1,\n duration: attributes.sourceDuration,\n time: 0,\n timeline: attributes.periodStart\n }];\n }\n\n if (attributes.duration) {\n return parseByDuration(attributes);\n }\n\n return parseByTimeline(attributes, segmentTimeline);\n};\n/**\n * Generates a list of segments using information provided by the SegmentTemplate element\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object[]}\n * List of segment objects\n */\n\nconst segmentsFromTemplate = (attributes, segmentTimeline) => {\n const templateValues = {\n RepresentationID: attributes.id,\n Bandwidth: attributes.bandwidth || 0\n };\n const {\n initialization = {\n sourceURL: '',\n range: ''\n }\n } = attributes;\n const mapSegment = urlTypeToSegment({\n baseUrl: attributes.baseUrl,\n source: constructTemplateUrl(initialization.sourceURL, templateValues),\n range: initialization.range\n });\n const segments = parseTemplateInfo(attributes, segmentTimeline);\n return segments.map(segment => {\n templateValues.Number = segment.number;\n templateValues.Time = segment.time;\n const uri = constructTemplateUrl(attributes.media || '', templateValues); // See DASH spec section 5.3.9.2.2\n // - if timescale isn't present on any level, default to 1.\n\n const timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n const presentationTimeOffset = attributes.presentationTimeOffset || 0;\n const presentationTime = // Even if the @t attribute is not specified for the segment, segment.time is\n // calculated in mpd-parser prior to this, so it's assumed to be available.\n attributes.periodStart + (segment.time - presentationTimeOffset) / timescale;\n const map = {\n uri,\n timeline: segment.timeline,\n duration: segment.duration,\n resolvedUri: resolveUrl(attributes.baseUrl || '', uri),\n map: mapSegment,\n number: segment.number,\n presentationTime\n };\n return map;\n });\n};\n\n/**\n * Converts a (of type URLType from the DASH spec 5.3.9.2 Table 14)\n * to an object that matches the output of a segment in videojs/mpd-parser\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object} segmentUrl\n * node to translate into a segment object\n * @return {Object} translated segment object\n */\n\nconst SegmentURLToSegmentObject = (attributes, segmentUrl) => {\n const {\n baseUrl,\n initialization = {}\n } = attributes;\n const initSegment = urlTypeToSegment({\n baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n const segment = urlTypeToSegment({\n baseUrl,\n source: segmentUrl.media,\n range: segmentUrl.mediaRange\n });\n segment.map = initSegment;\n return segment;\n};\n/**\n * Generates a list of segments using information provided by the SegmentList element\n * SegmentList (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object.} list of segments\n */\n\n\nconst segmentsFromList = (attributes, segmentTimeline) => {\n const {\n duration,\n segmentUrls = [],\n periodStart\n } = attributes; // Per spec (5.3.9.2.1) no way to determine segment duration OR\n // if both SegmentTimeline and @duration are defined, it is outside of spec.\n\n if (!duration && !segmentTimeline || duration && segmentTimeline) {\n throw new Error(errors.SEGMENT_TIME_UNSPECIFIED);\n }\n\n const segmentUrlMap = segmentUrls.map(segmentUrlObject => SegmentURLToSegmentObject(attributes, segmentUrlObject));\n let segmentTimeInfo;\n\n if (duration) {\n segmentTimeInfo = parseByDuration(attributes);\n }\n\n if (segmentTimeline) {\n segmentTimeInfo = parseByTimeline(attributes, segmentTimeline);\n }\n\n const segments = segmentTimeInfo.map((segmentTime, index) => {\n if (segmentUrlMap[index]) {\n const segment = segmentUrlMap[index]; // See DASH spec section 5.3.9.2.2\n // - if timescale isn't present on any level, default to 1.\n\n const timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n const presentationTimeOffset = attributes.presentationTimeOffset || 0;\n segment.timeline = segmentTime.timeline;\n segment.duration = segmentTime.duration;\n segment.number = segmentTime.number;\n segment.presentationTime = periodStart + (segmentTime.time - presentationTimeOffset) / timescale;\n return segment;\n } // Since we're mapping we should get rid of any blank segments (in case\n // the given SegmentTimeline is handling for more elements than we have\n // SegmentURLs for).\n\n }).filter(segment => segment);\n return segments;\n};\n\nconst generateSegments = ({\n attributes,\n segmentInfo\n}) => {\n let segmentAttributes;\n let segmentsFn;\n\n if (segmentInfo.template) {\n segmentsFn = segmentsFromTemplate;\n segmentAttributes = merge(attributes, segmentInfo.template);\n } else if (segmentInfo.base) {\n segmentsFn = segmentsFromBase;\n segmentAttributes = merge(attributes, segmentInfo.base);\n } else if (segmentInfo.list) {\n segmentsFn = segmentsFromList;\n segmentAttributes = merge(attributes, segmentInfo.list);\n }\n\n const segmentsInfo = {\n attributes\n };\n\n if (!segmentsFn) {\n return segmentsInfo;\n }\n\n const segments = segmentsFn(segmentAttributes, segmentInfo.segmentTimeline); // The @duration attribute will be used to determin the playlist's targetDuration which\n // must be in seconds. Since we've generated the segment list, we no longer need\n // @duration to be in @timescale units, so we can convert it here.\n\n if (segmentAttributes.duration) {\n const {\n duration,\n timescale = 1\n } = segmentAttributes;\n segmentAttributes.duration = duration / timescale;\n } else if (segments.length) {\n // if there is no @duration attribute, use the largest segment duration as\n // as target duration\n segmentAttributes.duration = segments.reduce((max, segment) => {\n return Math.max(max, Math.ceil(segment.duration));\n }, 0);\n } else {\n segmentAttributes.duration = 0;\n }\n\n segmentsInfo.attributes = segmentAttributes;\n segmentsInfo.segments = segments; // This is a sidx box without actual segment information\n\n if (segmentInfo.base && segmentAttributes.indexRange) {\n segmentsInfo.sidx = segments[0];\n segmentsInfo.segments = [];\n }\n\n return segmentsInfo;\n};\nconst toPlaylists = representations => representations.map(generateSegments);\n\nconst findChildren = (element, name) => from(element.childNodes).filter(({\n tagName\n}) => tagName === name);\nconst getContent = element => element.textContent.trim();\n\n/**\n * Converts the provided string that may contain a division operation to a number.\n *\n * @param {string} value - the provided string value\n *\n * @return {number} the parsed string value\n */\nconst parseDivisionValue = value => {\n return parseFloat(value.split('/').reduce((prev, current) => prev / current));\n};\n\nconst parseDuration = str => {\n const SECONDS_IN_YEAR = 365 * 24 * 60 * 60;\n const SECONDS_IN_MONTH = 30 * 24 * 60 * 60;\n const SECONDS_IN_DAY = 24 * 60 * 60;\n const SECONDS_IN_HOUR = 60 * 60;\n const SECONDS_IN_MIN = 60; // P10Y10M10DT10H10M10.1S\n\n const durationRegex = /P(?:(\\d*)Y)?(?:(\\d*)M)?(?:(\\d*)D)?(?:T(?:(\\d*)H)?(?:(\\d*)M)?(?:([\\d.]*)S)?)?/;\n const match = durationRegex.exec(str);\n\n if (!match) {\n return 0;\n }\n\n const [year, month, day, hour, minute, second] = match.slice(1);\n return parseFloat(year || 0) * SECONDS_IN_YEAR + parseFloat(month || 0) * SECONDS_IN_MONTH + parseFloat(day || 0) * SECONDS_IN_DAY + parseFloat(hour || 0) * SECONDS_IN_HOUR + parseFloat(minute || 0) * SECONDS_IN_MIN + parseFloat(second || 0);\n};\nconst parseDate = str => {\n // Date format without timezone according to ISO 8601\n // YYY-MM-DDThh:mm:ss.ssssss\n const dateRegex = /^\\d+-\\d+-\\d+T\\d+:\\d+:\\d+(\\.\\d+)?$/; // If the date string does not specifiy a timezone, we must specifiy UTC. This is\n // expressed by ending with 'Z'\n\n if (dateRegex.test(str)) {\n str += 'Z';\n }\n\n return Date.parse(str);\n};\n\nconst parsers = {\n /**\n * Specifies the duration of the entire Media Presentation. Format is a duration string\n * as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n mediaPresentationDuration(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the Segment availability start time for all Segments referred to in this\n * MPD. For a dynamic manifest, it specifies the anchor for the earliest availability\n * time. Format is a date string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The date as seconds from unix epoch\n */\n availabilityStartTime(value) {\n return parseDate(value) / 1000;\n },\n\n /**\n * Specifies the smallest period between potential changes to the MPD. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n minimumUpdatePeriod(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the suggested presentation delay. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n suggestedPresentationDelay(value) {\n return parseDuration(value);\n },\n\n /**\n * specifices the type of mpd. Can be either \"static\" or \"dynamic\"\n *\n * @param {string} value\n * value of attribute as a string\n *\n * @return {string}\n * The type as a string\n */\n type(value) {\n return value;\n },\n\n /**\n * Specifies the duration of the smallest time shifting buffer for any Representation\n * in the MPD. Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n timeShiftBufferDepth(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the PeriodStart time of the Period relative to the availabilityStarttime.\n * Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n start(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the width of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed width\n */\n width(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the height of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed height\n */\n height(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the bitrate of the representation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed bandwidth\n */\n bandwidth(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the frame rate of the representation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed frame rate\n */\n frameRate(value) {\n return parseDivisionValue(value);\n },\n\n /**\n * Specifies the number of the first Media Segment in this Representation in the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n startNumber(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the timescale in units per seconds\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed timescale\n */\n timescale(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the presentationTimeOffset.\n *\n * @param {string} value\n * value of the attribute as a string\n *\n * @return {number}\n * The parsed presentationTimeOffset\n */\n presentationTimeOffset(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the constant approximate Segment duration\n * NOTE: The element also contains an @duration attribute. This duration\n * specifies the duration of the Period. This attribute is currently not\n * supported by the rest of the parser, however we still check for it to prevent\n * errors.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n duration(value) {\n const parsedValue = parseInt(value, 10);\n\n if (isNaN(parsedValue)) {\n return parseDuration(value);\n }\n\n return parsedValue;\n },\n\n /**\n * Specifies the Segment duration, in units of the value of the @timescale.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n d(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the MPD start time, in @timescale units, the first Segment in the series\n * starts relative to the beginning of the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed time\n */\n t(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the repeat count of the number of following contiguous Segments with the\n * same duration expressed by the value of @d\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n r(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the presentationTime.\n *\n * @param {string} value\n * value of the attribute as a string\n *\n * @return {number}\n * The parsed presentationTime\n */\n presentationTime(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Default parser for all other attributes. Acts as a no-op and just returns the value\n * as a string\n *\n * @param {string} value\n * value of attribute as a string\n * @return {string}\n * Unparsed value\n */\n DEFAULT(value) {\n return value;\n }\n\n};\n/**\n * Gets all the attributes and values of the provided node, parses attributes with known\n * types, and returns an object with attribute names mapped to values.\n *\n * @param {Node} el\n * The node to parse attributes from\n * @return {Object}\n * Object with all attributes of el parsed\n */\n\nconst parseAttributes = el => {\n if (!(el && el.attributes)) {\n return {};\n }\n\n return from(el.attributes).reduce((a, e) => {\n const parseFn = parsers[e.name] || parsers.DEFAULT;\n a[e.name] = parseFn(e.value);\n return a;\n }, {});\n};\n\nconst keySystemsMap = {\n 'urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b': 'org.w3.clearkey',\n 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed': 'com.widevine.alpha',\n 'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95': 'com.microsoft.playready',\n 'urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb': 'com.adobe.primetime',\n // ISO_IEC 23009-1_2022 5.8.5.2.2 The mp4 Protection Scheme\n 'urn:mpeg:dash:mp4protection:2011': 'mp4protection'\n};\n/**\n * Builds a list of urls that is the product of the reference urls and BaseURL values\n *\n * @param {Object[]} references\n * List of objects containing the reference URL as well as its attributes\n * @param {Node[]} baseUrlElements\n * List of BaseURL nodes from the mpd\n * @return {Object[]}\n * List of objects with resolved urls and attributes\n */\n\nconst buildBaseUrls = (references, baseUrlElements) => {\n if (!baseUrlElements.length) {\n return references;\n }\n\n return flatten(references.map(function (reference) {\n return baseUrlElements.map(function (baseUrlElement) {\n const initialBaseUrl = getContent(baseUrlElement);\n const resolvedBaseUrl = resolveUrl(reference.baseUrl, initialBaseUrl);\n const finalBaseUrl = merge(parseAttributes(baseUrlElement), {\n baseUrl: resolvedBaseUrl\n }); // If the URL is resolved, we want to get the serviceLocation from the reference\n // assuming there is no serviceLocation on the initialBaseUrl\n\n if (resolvedBaseUrl !== initialBaseUrl && !finalBaseUrl.serviceLocation && reference.serviceLocation) {\n finalBaseUrl.serviceLocation = reference.serviceLocation;\n }\n\n return finalBaseUrl;\n });\n }));\n};\n/**\n * Contains all Segment information for its containing AdaptationSet\n *\n * @typedef {Object} SegmentInformation\n * @property {Object|undefined} template\n * Contains the attributes for the SegmentTemplate node\n * @property {Object[]|undefined} segmentTimeline\n * Contains a list of atrributes for each S node within the SegmentTimeline node\n * @property {Object|undefined} list\n * Contains the attributes for the SegmentList node\n * @property {Object|undefined} base\n * Contains the attributes for the SegmentBase node\n */\n\n/**\n * Returns all available Segment information contained within the AdaptationSet node\n *\n * @param {Node} adaptationSet\n * The AdaptationSet node to get Segment information from\n * @return {SegmentInformation}\n * The Segment information contained within the provided AdaptationSet\n */\n\nconst getSegmentInformation = adaptationSet => {\n const segmentTemplate = findChildren(adaptationSet, 'SegmentTemplate')[0];\n const segmentList = findChildren(adaptationSet, 'SegmentList')[0];\n const segmentUrls = segmentList && findChildren(segmentList, 'SegmentURL').map(s => merge({\n tag: 'SegmentURL'\n }, parseAttributes(s)));\n const segmentBase = findChildren(adaptationSet, 'SegmentBase')[0];\n const segmentTimelineParentNode = segmentList || segmentTemplate;\n const segmentTimeline = segmentTimelineParentNode && findChildren(segmentTimelineParentNode, 'SegmentTimeline')[0];\n const segmentInitializationParentNode = segmentList || segmentBase || segmentTemplate;\n const segmentInitialization = segmentInitializationParentNode && findChildren(segmentInitializationParentNode, 'Initialization')[0]; // SegmentTemplate is handled slightly differently, since it can have both\n // @initialization and an node. @initialization can be templated,\n // while the node can have a url and range specified. If the has\n // both @initialization and an subelement we opt to override with\n // the node, as this interaction is not defined in the spec.\n\n const template = segmentTemplate && parseAttributes(segmentTemplate);\n\n if (template && segmentInitialization) {\n template.initialization = segmentInitialization && parseAttributes(segmentInitialization);\n } else if (template && template.initialization) {\n // If it is @initialization we convert it to an object since this is the format that\n // later functions will rely on for the initialization segment. This is only valid\n // for \n template.initialization = {\n sourceURL: template.initialization\n };\n }\n\n const segmentInfo = {\n template,\n segmentTimeline: segmentTimeline && findChildren(segmentTimeline, 'S').map(s => parseAttributes(s)),\n list: segmentList && merge(parseAttributes(segmentList), {\n segmentUrls,\n initialization: parseAttributes(segmentInitialization)\n }),\n base: segmentBase && merge(parseAttributes(segmentBase), {\n initialization: parseAttributes(segmentInitialization)\n })\n };\n Object.keys(segmentInfo).forEach(key => {\n if (!segmentInfo[key]) {\n delete segmentInfo[key];\n }\n });\n return segmentInfo;\n};\n/**\n * Contains Segment information and attributes needed to construct a Playlist object\n * from a Representation\n *\n * @typedef {Object} RepresentationInformation\n * @property {SegmentInformation} segmentInfo\n * Segment information for this Representation\n * @property {Object} attributes\n * Inherited attributes for this Representation\n */\n\n/**\n * Maps a Representation node to an object containing Segment information and attributes\n *\n * @name inheritBaseUrlsCallback\n * @function\n * @param {Node} representation\n * Representation node from the mpd\n * @return {RepresentationInformation}\n * Representation information needed to construct a Playlist object\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Representation nodes to\n * Segment information and attributes using inherited BaseURL nodes.\n *\n * @param {Object} adaptationSetAttributes\n * Contains attributes inherited by the AdaptationSet\n * @param {Object[]} adaptationSetBaseUrls\n * List of objects containing resolved base URLs and attributes\n * inherited by the AdaptationSet\n * @param {SegmentInformation} adaptationSetSegmentInfo\n * Contains Segment information for the AdaptationSet\n * @return {inheritBaseUrlsCallback}\n * Callback map function\n */\n\nconst inheritBaseUrls = (adaptationSetAttributes, adaptationSetBaseUrls, adaptationSetSegmentInfo) => representation => {\n const repBaseUrlElements = findChildren(representation, 'BaseURL');\n const repBaseUrls = buildBaseUrls(adaptationSetBaseUrls, repBaseUrlElements);\n const attributes = merge(adaptationSetAttributes, parseAttributes(representation));\n const representationSegmentInfo = getSegmentInformation(representation);\n return repBaseUrls.map(baseUrl => {\n return {\n segmentInfo: merge(adaptationSetSegmentInfo, representationSegmentInfo),\n attributes: merge(attributes, baseUrl)\n };\n });\n};\n/**\n * Tranforms a series of content protection nodes to\n * an object containing pssh data by key system\n *\n * @param {Node[]} contentProtectionNodes\n * Content protection nodes\n * @return {Object}\n * Object containing pssh data by key system\n */\n\nconst generateKeySystemInformation = contentProtectionNodes => {\n return contentProtectionNodes.reduce((acc, node) => {\n const attributes = parseAttributes(node); // Although it could be argued that according to the UUID RFC spec the UUID string (a-f chars) should be generated\n // as a lowercase string it also mentions it should be treated as case-insensitive on input. Since the key system\n // UUIDs in the keySystemsMap are hardcoded as lowercase in the codebase there isn't any reason not to do\n // .toLowerCase() on the input UUID string from the manifest (at least I could not think of one).\n\n if (attributes.schemeIdUri) {\n attributes.schemeIdUri = attributes.schemeIdUri.toLowerCase();\n }\n\n const keySystem = keySystemsMap[attributes.schemeIdUri];\n\n if (keySystem) {\n acc[keySystem] = {\n attributes\n };\n const psshNode = findChildren(node, 'cenc:pssh')[0];\n\n if (psshNode) {\n const pssh = getContent(psshNode);\n acc[keySystem].pssh = pssh && decodeB64ToUint8Array(pssh);\n }\n }\n\n return acc;\n }, {});\n}; // defined in ANSI_SCTE 214-1 2016\n\n\nconst parseCaptionServiceMetadata = service => {\n // 608 captions\n if (service.schemeIdUri === 'urn:scte:dash:cc:cea-608:2015') {\n const values = typeof service.value !== 'string' ? [] : service.value.split(';');\n return values.map(value => {\n let channel;\n let language; // default language to value\n\n language = value;\n\n if (/^CC\\d=/.test(value)) {\n [channel, language] = value.split('=');\n } else if (/^CC\\d$/.test(value)) {\n channel = value;\n }\n\n return {\n channel,\n language\n };\n });\n } else if (service.schemeIdUri === 'urn:scte:dash:cc:cea-708:2015') {\n const values = typeof service.value !== 'string' ? [] : service.value.split(';');\n return values.map(value => {\n const flags = {\n // service or channel number 1-63\n 'channel': undefined,\n // language is a 3ALPHA per ISO 639.2/B\n // field is required\n 'language': undefined,\n // BIT 1/0 or ?\n // default value is 1, meaning 16:9 aspect ratio, 0 is 4:3, ? is unknown\n 'aspectRatio': 1,\n // BIT 1/0\n // easy reader flag indicated the text is tailed to the needs of beginning readers\n // default 0, or off\n 'easyReader': 0,\n // BIT 1/0\n // If 3d metadata is present (CEA-708.1) then 1\n // default 0\n '3D': 0\n };\n\n if (/=/.test(value)) {\n const [channel, opts = ''] = value.split('=');\n flags.channel = channel;\n flags.language = value;\n opts.split(',').forEach(opt => {\n const [name, val] = opt.split(':');\n\n if (name === 'lang') {\n flags.language = val; // er for easyReadery\n } else if (name === 'er') {\n flags.easyReader = Number(val); // war for wide aspect ratio\n } else if (name === 'war') {\n flags.aspectRatio = Number(val);\n } else if (name === '3D') {\n flags['3D'] = Number(val);\n }\n });\n } else {\n flags.language = value;\n }\n\n if (flags.channel) {\n flags.channel = 'SERVICE' + flags.channel;\n }\n\n return flags;\n });\n }\n};\n/**\n * A map callback that will parse all event stream data for a collection of periods\n * DASH ISO_IEC_23009 5.10.2.2\n * https://dashif-documents.azurewebsites.net/Events/master/event.html#mpd-event-timing\n *\n * @param {PeriodInformation} period object containing necessary period information\n * @return a collection of parsed eventstream event objects\n */\n\nconst toEventStream = period => {\n // get and flatten all EventStreams tags and parse attributes and children\n return flatten(findChildren(period.node, 'EventStream').map(eventStream => {\n const eventStreamAttributes = parseAttributes(eventStream);\n const schemeIdUri = eventStreamAttributes.schemeIdUri; // find all Events per EventStream tag and map to return objects\n\n return findChildren(eventStream, 'Event').map(event => {\n const eventAttributes = parseAttributes(event);\n const presentationTime = eventAttributes.presentationTime || 0;\n const timescale = eventStreamAttributes.timescale || 1;\n const duration = eventAttributes.duration || 0;\n const start = presentationTime / timescale + period.attributes.start;\n return {\n schemeIdUri,\n value: eventStreamAttributes.value,\n id: eventAttributes.id,\n start,\n end: start + duration / timescale,\n messageData: getContent(event) || eventAttributes.messageData,\n contentEncoding: eventStreamAttributes.contentEncoding,\n presentationTimeOffset: eventStreamAttributes.presentationTimeOffset || 0\n };\n });\n }));\n};\n/**\n * Maps an AdaptationSet node to a list of Representation information objects\n *\n * @name toRepresentationsCallback\n * @function\n * @param {Node} adaptationSet\n * AdaptationSet node from the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping AdaptationSet nodes to a list of\n * Representation information objects\n *\n * @param {Object} periodAttributes\n * Contains attributes inherited by the Period\n * @param {Object[]} periodBaseUrls\n * Contains list of objects with resolved base urls and attributes\n * inherited by the Period\n * @param {string[]} periodSegmentInfo\n * Contains Segment Information at the period level\n * @return {toRepresentationsCallback}\n * Callback map function\n */\n\nconst toRepresentations = (periodAttributes, periodBaseUrls, periodSegmentInfo) => adaptationSet => {\n const adaptationSetAttributes = parseAttributes(adaptationSet);\n const adaptationSetBaseUrls = buildBaseUrls(periodBaseUrls, findChildren(adaptationSet, 'BaseURL'));\n const role = findChildren(adaptationSet, 'Role')[0];\n const roleAttributes = {\n role: parseAttributes(role)\n };\n let attrs = merge(periodAttributes, adaptationSetAttributes, roleAttributes);\n const accessibility = findChildren(adaptationSet, 'Accessibility')[0];\n const captionServices = parseCaptionServiceMetadata(parseAttributes(accessibility));\n\n if (captionServices) {\n attrs = merge(attrs, {\n captionServices\n });\n }\n\n const label = findChildren(adaptationSet, 'Label')[0];\n\n if (label && label.childNodes.length) {\n const labelVal = label.childNodes[0].nodeValue.trim();\n attrs = merge(attrs, {\n label: labelVal\n });\n }\n\n const contentProtection = generateKeySystemInformation(findChildren(adaptationSet, 'ContentProtection'));\n\n if (Object.keys(contentProtection).length) {\n attrs = merge(attrs, {\n contentProtection\n });\n }\n\n const segmentInfo = getSegmentInformation(adaptationSet);\n const representations = findChildren(adaptationSet, 'Representation');\n const adaptationSetSegmentInfo = merge(periodSegmentInfo, segmentInfo);\n return flatten(representations.map(inheritBaseUrls(attrs, adaptationSetBaseUrls, adaptationSetSegmentInfo)));\n};\n/**\n * Contains all period information for mapping nodes onto adaptation sets.\n *\n * @typedef {Object} PeriodInformation\n * @property {Node} period.node\n * Period node from the mpd\n * @property {Object} period.attributes\n * Parsed period attributes from node plus any added\n */\n\n/**\n * Maps a PeriodInformation object to a list of Representation information objects for all\n * AdaptationSet nodes contained within the Period.\n *\n * @name toAdaptationSetsCallback\n * @function\n * @param {PeriodInformation} period\n * Period object containing necessary period information\n * @param {number} periodStart\n * Start time of the Period within the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Period nodes to a list of\n * Representation information objects\n *\n * @param {Object} mpdAttributes\n * Contains attributes inherited by the mpd\n * @param {Object[]} mpdBaseUrls\n * Contains list of objects with resolved base urls and attributes\n * inherited by the mpd\n * @return {toAdaptationSetsCallback}\n * Callback map function\n */\n\nconst toAdaptationSets = (mpdAttributes, mpdBaseUrls) => (period, index) => {\n const periodBaseUrls = buildBaseUrls(mpdBaseUrls, findChildren(period.node, 'BaseURL'));\n const periodAttributes = merge(mpdAttributes, {\n periodStart: period.attributes.start\n });\n\n if (typeof period.attributes.duration === 'number') {\n periodAttributes.periodDuration = period.attributes.duration;\n }\n\n const adaptationSets = findChildren(period.node, 'AdaptationSet');\n const periodSegmentInfo = getSegmentInformation(period.node);\n return flatten(adaptationSets.map(toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo)));\n};\n/**\n * Tranforms an array of content steering nodes into an object\n * containing CDN content steering information from the MPD manifest.\n *\n * For more information on the DASH spec for Content Steering parsing, see:\n * https://dashif.org/docs/DASH-IF-CTS-00XX-Content-Steering-Community-Review.pdf\n *\n * @param {Node[]} contentSteeringNodes\n * Content steering nodes\n * @param {Function} eventHandler\n * The event handler passed into the parser options to handle warnings\n * @return {Object}\n * Object containing content steering data\n */\n\nconst generateContentSteeringInformation = (contentSteeringNodes, eventHandler) => {\n // If there are more than one ContentSteering tags, throw an error\n if (contentSteeringNodes.length > 1) {\n eventHandler({\n type: 'warn',\n message: 'The MPD manifest should contain no more than one ContentSteering tag'\n });\n } // Return a null value if there are no ContentSteering tags\n\n\n if (!contentSteeringNodes.length) {\n return null;\n }\n\n const infoFromContentSteeringTag = merge({\n serverURL: getContent(contentSteeringNodes[0])\n }, parseAttributes(contentSteeringNodes[0])); // Converts `queryBeforeStart` to a boolean, as well as setting the default value\n // to `false` if it doesn't exist\n\n infoFromContentSteeringTag.queryBeforeStart = infoFromContentSteeringTag.queryBeforeStart === 'true';\n return infoFromContentSteeringTag;\n};\n/**\n * Gets Period@start property for a given period.\n *\n * @param {Object} options\n * Options object\n * @param {Object} options.attributes\n * Period attributes\n * @param {Object} [options.priorPeriodAttributes]\n * Prior period attributes (if prior period is available)\n * @param {string} options.mpdType\n * The MPD@type these periods came from\n * @return {number|null}\n * The period start, or null if it's an early available period or error\n */\n\nconst getPeriodStart = ({\n attributes,\n priorPeriodAttributes,\n mpdType\n}) => {\n // Summary of period start time calculation from DASH spec section 5.3.2.1\n //\n // A period's start is the first period's start + time elapsed after playing all\n // prior periods to this one. Periods continue one after the other in time (without\n // gaps) until the end of the presentation.\n //\n // The value of Period@start should be:\n // 1. if Period@start is present: value of Period@start\n // 2. if previous period exists and it has @duration: previous Period@start +\n // previous Period@duration\n // 3. if this is first period and MPD@type is 'static': 0\n // 4. in all other cases, consider the period an \"early available period\" (note: not\n // currently supported)\n // (1)\n if (typeof attributes.start === 'number') {\n return attributes.start;\n } // (2)\n\n\n if (priorPeriodAttributes && typeof priorPeriodAttributes.start === 'number' && typeof priorPeriodAttributes.duration === 'number') {\n return priorPeriodAttributes.start + priorPeriodAttributes.duration;\n } // (3)\n\n\n if (!priorPeriodAttributes && mpdType === 'static') {\n return 0;\n } // (4)\n // There is currently no logic for calculating the Period@start value if there is\n // no Period@start or prior Period@start and Period@duration available. This is not made\n // explicit by the DASH interop guidelines or the DASH spec, however, since there's\n // nothing about any other resolution strategies, it's implied. Thus, this case should\n // be considered an early available period, or error, and null should suffice for both\n // of those cases.\n\n\n return null;\n};\n/**\n * Traverses the mpd xml tree to generate a list of Representation information objects\n * that have inherited attributes from parent nodes\n *\n * @param {Node} mpd\n * The root node of the mpd\n * @param {Object} options\n * Available options for inheritAttributes\n * @param {string} options.manifestUri\n * The uri source of the mpd\n * @param {number} options.NOW\n * Current time per DASH IOP. Default is current time in ms since epoch\n * @param {number} options.clientOffset\n * Client time difference from NOW (in milliseconds)\n * @return {RepresentationInformation[]}\n * List of objects containing Representation information\n */\n\nconst inheritAttributes = (mpd, options = {}) => {\n const {\n manifestUri = '',\n NOW = Date.now(),\n clientOffset = 0,\n // TODO: For now, we are expecting an eventHandler callback function\n // to be passed into the mpd parser as an option.\n // In the future, we should enable stream parsing by using the Stream class from vhs-utils.\n // This will support new features including a standardized event handler.\n // See the m3u8 parser for examples of how stream parsing is currently used for HLS parsing.\n // https://github.com/videojs/vhs-utils/blob/88d6e10c631e57a5af02c5a62bc7376cd456b4f5/src/stream.js#L9\n eventHandler = function () {}\n } = options;\n const periodNodes = findChildren(mpd, 'Period');\n\n if (!periodNodes.length) {\n throw new Error(errors.INVALID_NUMBER_OF_PERIOD);\n }\n\n const locations = findChildren(mpd, 'Location');\n const mpdAttributes = parseAttributes(mpd);\n const mpdBaseUrls = buildBaseUrls([{\n baseUrl: manifestUri\n }], findChildren(mpd, 'BaseURL'));\n const contentSteeringNodes = findChildren(mpd, 'ContentSteering'); // See DASH spec section 5.3.1.2, Semantics of MPD element. Default type to 'static'.\n\n mpdAttributes.type = mpdAttributes.type || 'static';\n mpdAttributes.sourceDuration = mpdAttributes.mediaPresentationDuration || 0;\n mpdAttributes.NOW = NOW;\n mpdAttributes.clientOffset = clientOffset;\n\n if (locations.length) {\n mpdAttributes.locations = locations.map(getContent);\n }\n\n const periods = []; // Since toAdaptationSets acts on individual periods right now, the simplest approach to\n // adding properties that require looking at prior periods is to parse attributes and add\n // missing ones before toAdaptationSets is called. If more such properties are added, it\n // may be better to refactor toAdaptationSets.\n\n periodNodes.forEach((node, index) => {\n const attributes = parseAttributes(node); // Use the last modified prior period, as it may contain added information necessary\n // for this period.\n\n const priorPeriod = periods[index - 1];\n attributes.start = getPeriodStart({\n attributes,\n priorPeriodAttributes: priorPeriod ? priorPeriod.attributes : null,\n mpdType: mpdAttributes.type\n });\n periods.push({\n node,\n attributes\n });\n });\n return {\n locations: mpdAttributes.locations,\n contentSteeringInfo: generateContentSteeringInformation(contentSteeringNodes, eventHandler),\n // TODO: There are occurences where this `representationInfo` array contains undesired\n // duplicates. This generally occurs when there are multiple BaseURL nodes that are\n // direct children of the MPD node. When we attempt to resolve URLs from a combination of the\n // parent BaseURL and a child BaseURL, and the value does not resolve,\n // we end up returning the child BaseURL multiple times.\n // We need to determine a way to remove these duplicates in a safe way.\n // See: https://github.com/videojs/mpd-parser/pull/17#discussion_r162750527\n representationInfo: flatten(periods.map(toAdaptationSets(mpdAttributes, mpdBaseUrls))),\n eventStream: flatten(periods.map(toEventStream))\n };\n};\n\nconst stringToMpdXml = manifestString => {\n if (manifestString === '') {\n throw new Error(errors.DASH_EMPTY_MANIFEST);\n }\n\n const parser = new DOMParser();\n let xml;\n let mpd;\n\n try {\n xml = parser.parseFromString(manifestString, 'application/xml');\n mpd = xml && xml.documentElement.tagName === 'MPD' ? xml.documentElement : null;\n } catch (e) {// ie 11 throws on invalid xml\n }\n\n if (!mpd || mpd && mpd.getElementsByTagName('parsererror').length > 0) {\n throw new Error(errors.DASH_INVALID_XML);\n }\n\n return mpd;\n};\n\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} mpd\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\nconst parseUTCTimingScheme = mpd => {\n const UTCTimingNode = findChildren(mpd, 'UTCTiming')[0];\n\n if (!UTCTimingNode) {\n return null;\n }\n\n const attributes = parseAttributes(UTCTimingNode);\n\n switch (attributes.schemeIdUri) {\n case 'urn:mpeg:dash:utc:http-head:2014':\n case 'urn:mpeg:dash:utc:http-head:2012':\n attributes.method = 'HEAD';\n break;\n\n case 'urn:mpeg:dash:utc:http-xsdate:2014':\n case 'urn:mpeg:dash:utc:http-iso:2014':\n case 'urn:mpeg:dash:utc:http-xsdate:2012':\n case 'urn:mpeg:dash:utc:http-iso:2012':\n attributes.method = 'GET';\n break;\n\n case 'urn:mpeg:dash:utc:direct:2014':\n case 'urn:mpeg:dash:utc:direct:2012':\n attributes.method = 'DIRECT';\n attributes.value = Date.parse(attributes.value);\n break;\n\n case 'urn:mpeg:dash:utc:http-ntp:2014':\n case 'urn:mpeg:dash:utc:ntp:2014':\n case 'urn:mpeg:dash:utc:sntp:2014':\n default:\n throw new Error(errors.UNSUPPORTED_UTC_TIMING_SCHEME);\n }\n\n return attributes;\n};\n\nconst VERSION = version;\n/*\n * Given a DASH manifest string and options, parses the DASH manifest into an object in the\n * form outputed by m3u8-parser and accepted by videojs/http-streaming.\n *\n * For live DASH manifests, if `previousManifest` is provided in options, then the newly\n * parsed DASH manifest will have its media sequence and discontinuity sequence values\n * updated to reflect its position relative to the prior manifest.\n *\n * @param {string} manifestString - the DASH manifest as a string\n * @param {options} [options] - any options\n *\n * @return {Object} the manifest object\n */\n\nconst parse = (manifestString, options = {}) => {\n const parsedManifestInfo = inheritAttributes(stringToMpdXml(manifestString), options);\n const playlists = toPlaylists(parsedManifestInfo.representationInfo);\n return toM3u8({\n dashPlaylists: playlists,\n locations: parsedManifestInfo.locations,\n contentSteering: parsedManifestInfo.contentSteeringInfo,\n sidxMapping: options.sidxMapping,\n previousManifest: options.previousManifest,\n eventStream: parsedManifestInfo.eventStream\n });\n};\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} manifestString\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\n\nconst parseUTCTiming = manifestString => parseUTCTimingScheme(stringToMpdXml(manifestString));\n\nexport { VERSION, addSidxSegmentsToPlaylist$1 as addSidxSegmentsToPlaylist, generateSidxKey, inheritAttributes, parse, parseUTCTiming, stringToMpdXml, toM3u8, toPlaylists };\n","/**\n * Loops through all supported media groups in master and calls the provided\n * callback for each group\n *\n * @param {Object} master\n * The parsed master manifest object\n * @param {string[]} groups\n * The media groups to call the callback for\n * @param {Function} callback\n * Callback to call for each media group\n */\nexport var forEachMediaGroup = function forEachMediaGroup(master, groups, callback) {\n groups.forEach(function (mediaType) {\n for (var groupKey in master.mediaGroups[mediaType]) {\n for (var labelKey in master.mediaGroups[mediaType][groupKey]) {\n var mediaProperties = master.mediaGroups[mediaType][groupKey][labelKey];\n callback(mediaProperties, mediaType, groupKey, labelKey);\n }\n }\n });\n};","import { stringToBytes, toUint8, bytesMatch, bytesToString, toHexString, padStart, bytesToNumber } from './byte-helpers.js';\nimport { getAvcCodec, getHvcCodec, getAv1Codec } from './codec-helpers.js';\nimport { parseOpusHead } from './opus-helpers.js';\n\nvar normalizePath = function normalizePath(path) {\n if (typeof path === 'string') {\n return stringToBytes(path);\n }\n\n if (typeof path === 'number') {\n return path;\n }\n\n return path;\n};\n\nvar normalizePaths = function normalizePaths(paths) {\n if (!Array.isArray(paths)) {\n return [normalizePath(paths)];\n }\n\n return paths.map(function (p) {\n return normalizePath(p);\n });\n};\n\nvar DESCRIPTORS;\nexport var parseDescriptors = function parseDescriptors(bytes) {\n bytes = toUint8(bytes);\n var results = [];\n var i = 0;\n\n while (bytes.length > i) {\n var tag = bytes[i];\n var size = 0;\n var headerSize = 0; // tag\n\n headerSize++;\n var byte = bytes[headerSize]; // first byte\n\n headerSize++;\n\n while (byte & 0x80) {\n size = (byte & 0x7F) << 7;\n byte = bytes[headerSize];\n headerSize++;\n }\n\n size += byte & 0x7F;\n\n for (var z = 0; z < DESCRIPTORS.length; z++) {\n var _DESCRIPTORS$z = DESCRIPTORS[z],\n id = _DESCRIPTORS$z.id,\n parser = _DESCRIPTORS$z.parser;\n\n if (tag === id) {\n results.push(parser(bytes.subarray(headerSize, headerSize + size)));\n break;\n }\n }\n\n i += size + headerSize;\n }\n\n return results;\n};\nDESCRIPTORS = [{\n id: 0x03,\n parser: function parser(bytes) {\n var desc = {\n tag: 0x03,\n id: bytes[0] << 8 | bytes[1],\n flags: bytes[2],\n size: 3,\n dependsOnEsId: 0,\n ocrEsId: 0,\n descriptors: [],\n url: ''\n }; // depends on es id\n\n if (desc.flags & 0x80) {\n desc.dependsOnEsId = bytes[desc.size] << 8 | bytes[desc.size + 1];\n desc.size += 2;\n } // url\n\n\n if (desc.flags & 0x40) {\n var len = bytes[desc.size];\n desc.url = bytesToString(bytes.subarray(desc.size + 1, desc.size + 1 + len));\n desc.size += len;\n } // ocr es id\n\n\n if (desc.flags & 0x20) {\n desc.ocrEsId = bytes[desc.size] << 8 | bytes[desc.size + 1];\n desc.size += 2;\n }\n\n desc.descriptors = parseDescriptors(bytes.subarray(desc.size)) || [];\n return desc;\n }\n}, {\n id: 0x04,\n parser: function parser(bytes) {\n // DecoderConfigDescriptor\n var desc = {\n tag: 0x04,\n oti: bytes[0],\n streamType: bytes[1],\n bufferSize: bytes[2] << 16 | bytes[3] << 8 | bytes[4],\n maxBitrate: bytes[5] << 24 | bytes[6] << 16 | bytes[7] << 8 | bytes[8],\n avgBitrate: bytes[9] << 24 | bytes[10] << 16 | bytes[11] << 8 | bytes[12],\n descriptors: parseDescriptors(bytes.subarray(13))\n };\n return desc;\n }\n}, {\n id: 0x05,\n parser: function parser(bytes) {\n // DecoderSpecificInfo\n return {\n tag: 0x05,\n bytes: bytes\n };\n }\n}, {\n id: 0x06,\n parser: function parser(bytes) {\n // SLConfigDescriptor\n return {\n tag: 0x06,\n bytes: bytes\n };\n }\n}];\n/**\n * find any number of boxes by name given a path to it in an iso bmff\n * such as mp4.\n *\n * @param {TypedArray} bytes\n * bytes for the iso bmff to search for boxes in\n *\n * @param {Uint8Array[]|string[]|string|Uint8Array} name\n * An array of paths or a single path representing the name\n * of boxes to search through in bytes. Paths may be\n * uint8 (character codes) or strings.\n *\n * @param {boolean} [complete=false]\n * Should we search only for complete boxes on the final path.\n * This is very useful when you do not want to get back partial boxes\n * in the case of streaming files.\n *\n * @return {Uint8Array[]}\n * An array of the end paths that we found.\n */\n\nexport var findBox = function findBox(bytes, paths, complete) {\n if (complete === void 0) {\n complete = false;\n }\n\n paths = normalizePaths(paths);\n bytes = toUint8(bytes);\n var results = [];\n\n if (!paths.length) {\n // short-circuit the search for empty paths\n return results;\n }\n\n var i = 0;\n\n while (i < bytes.length) {\n var size = (bytes[i] << 24 | bytes[i + 1] << 16 | bytes[i + 2] << 8 | bytes[i + 3]) >>> 0;\n var type = bytes.subarray(i + 4, i + 8); // invalid box format.\n\n if (size === 0) {\n break;\n }\n\n var end = i + size;\n\n if (end > bytes.length) {\n // this box is bigger than the number of bytes we have\n // and complete is set, we cannot find any more boxes.\n if (complete) {\n break;\n }\n\n end = bytes.length;\n }\n\n var data = bytes.subarray(i + 8, end);\n\n if (bytesMatch(type, paths[0])) {\n if (paths.length === 1) {\n // this is the end of the path and we've found the box we were\n // looking for\n results.push(data);\n } else {\n // recursively search for the next box along the path\n results.push.apply(results, findBox(data, paths.slice(1), complete));\n }\n }\n\n i = end;\n } // we've finished searching all of bytes\n\n\n return results;\n};\n/**\n * Search for a single matching box by name in an iso bmff format like\n * mp4. This function is useful for finding codec boxes which\n * can be placed arbitrarily in sample descriptions depending\n * on the version of the file or file type.\n *\n * @param {TypedArray} bytes\n * bytes for the iso bmff to search for boxes in\n *\n * @param {string|Uint8Array} name\n * The name of the box to find.\n *\n * @return {Uint8Array[]}\n * a subarray of bytes representing the name boxed we found.\n */\n\nexport var findNamedBox = function findNamedBox(bytes, name) {\n name = normalizePath(name);\n\n if (!name.length) {\n // short-circuit the search for empty paths\n return bytes.subarray(bytes.length);\n }\n\n var i = 0;\n\n while (i < bytes.length) {\n if (bytesMatch(bytes.subarray(i, i + name.length), name)) {\n var size = (bytes[i - 4] << 24 | bytes[i - 3] << 16 | bytes[i - 2] << 8 | bytes[i - 1]) >>> 0;\n var end = size > 1 ? i + size : bytes.byteLength;\n return bytes.subarray(i + 4, end);\n }\n\n i++;\n } // we've finished searching all of bytes\n\n\n return bytes.subarray(bytes.length);\n};\n\nvar parseSamples = function parseSamples(data, entrySize, parseEntry) {\n if (entrySize === void 0) {\n entrySize = 4;\n }\n\n if (parseEntry === void 0) {\n parseEntry = function parseEntry(d) {\n return bytesToNumber(d);\n };\n }\n\n var entries = [];\n\n if (!data || !data.length) {\n return entries;\n }\n\n var entryCount = bytesToNumber(data.subarray(4, 8));\n\n for (var i = 8; entryCount; i += entrySize, entryCount--) {\n entries.push(parseEntry(data.subarray(i, i + entrySize)));\n }\n\n return entries;\n};\n\nexport var buildFrameTable = function buildFrameTable(stbl, timescale) {\n var keySamples = parseSamples(findBox(stbl, ['stss'])[0]);\n var chunkOffsets = parseSamples(findBox(stbl, ['stco'])[0]);\n var timeToSamples = parseSamples(findBox(stbl, ['stts'])[0], 8, function (entry) {\n return {\n sampleCount: bytesToNumber(entry.subarray(0, 4)),\n sampleDelta: bytesToNumber(entry.subarray(4, 8))\n };\n });\n var samplesToChunks = parseSamples(findBox(stbl, ['stsc'])[0], 12, function (entry) {\n return {\n firstChunk: bytesToNumber(entry.subarray(0, 4)),\n samplesPerChunk: bytesToNumber(entry.subarray(4, 8)),\n sampleDescriptionIndex: bytesToNumber(entry.subarray(8, 12))\n };\n });\n var stsz = findBox(stbl, ['stsz'])[0]; // stsz starts with a 4 byte sampleSize which we don't need\n\n var sampleSizes = parseSamples(stsz && stsz.length && stsz.subarray(4) || null);\n var frames = [];\n\n for (var chunkIndex = 0; chunkIndex < chunkOffsets.length; chunkIndex++) {\n var samplesInChunk = void 0;\n\n for (var i = 0; i < samplesToChunks.length; i++) {\n var sampleToChunk = samplesToChunks[i];\n var isThisOne = chunkIndex + 1 >= sampleToChunk.firstChunk && (i + 1 >= samplesToChunks.length || chunkIndex + 1 < samplesToChunks[i + 1].firstChunk);\n\n if (isThisOne) {\n samplesInChunk = sampleToChunk.samplesPerChunk;\n break;\n }\n }\n\n var chunkOffset = chunkOffsets[chunkIndex];\n\n for (var _i = 0; _i < samplesInChunk; _i++) {\n var frameEnd = sampleSizes[frames.length]; // if we don't have key samples every frame is a keyframe\n\n var keyframe = !keySamples.length;\n\n if (keySamples.length && keySamples.indexOf(frames.length + 1) !== -1) {\n keyframe = true;\n }\n\n var frame = {\n keyframe: keyframe,\n start: chunkOffset,\n end: chunkOffset + frameEnd\n };\n\n for (var k = 0; k < timeToSamples.length; k++) {\n var _timeToSamples$k = timeToSamples[k],\n sampleCount = _timeToSamples$k.sampleCount,\n sampleDelta = _timeToSamples$k.sampleDelta;\n\n if (frames.length <= sampleCount) {\n // ms to ns\n var lastTimestamp = frames.length ? frames[frames.length - 1].timestamp : 0;\n frame.timestamp = lastTimestamp + sampleDelta / timescale * 1000;\n frame.duration = sampleDelta;\n break;\n }\n }\n\n frames.push(frame);\n chunkOffset += frameEnd;\n }\n }\n\n return frames;\n};\nexport var addSampleDescription = function addSampleDescription(track, bytes) {\n var codec = bytesToString(bytes.subarray(0, 4));\n\n if (track.type === 'video') {\n track.info = track.info || {};\n track.info.width = bytes[28] << 8 | bytes[29];\n track.info.height = bytes[30] << 8 | bytes[31];\n } else if (track.type === 'audio') {\n track.info = track.info || {};\n track.info.channels = bytes[20] << 8 | bytes[21];\n track.info.bitDepth = bytes[22] << 8 | bytes[23];\n track.info.sampleRate = bytes[28] << 8 | bytes[29];\n }\n\n if (codec === 'avc1') {\n var avcC = findNamedBox(bytes, 'avcC'); // AVCDecoderConfigurationRecord\n\n codec += \".\" + getAvcCodec(avcC);\n track.info.avcC = avcC; // TODO: do we need to parse all this?\n\n /* {\n configurationVersion: avcC[0],\n profile: avcC[1],\n profileCompatibility: avcC[2],\n level: avcC[3],\n lengthSizeMinusOne: avcC[4] & 0x3\n };\n let spsNalUnitCount = avcC[5] & 0x1F;\n const spsNalUnits = track.info.avc.spsNalUnits = [];\n // past spsNalUnitCount\n let offset = 6;\n while (spsNalUnitCount--) {\n const nalLen = avcC[offset] << 8 | avcC[offset + 1];\n spsNalUnits.push(avcC.subarray(offset + 2, offset + 2 + nalLen));\n offset += nalLen + 2;\n }\n let ppsNalUnitCount = avcC[offset];\n const ppsNalUnits = track.info.avc.ppsNalUnits = [];\n // past ppsNalUnitCount\n offset += 1;\n while (ppsNalUnitCount--) {\n const nalLen = avcC[offset] << 8 | avcC[offset + 1];\n ppsNalUnits.push(avcC.subarray(offset + 2, offset + 2 + nalLen));\n offset += nalLen + 2;\n }*/\n // HEVCDecoderConfigurationRecord\n } else if (codec === 'hvc1' || codec === 'hev1') {\n codec += \".\" + getHvcCodec(findNamedBox(bytes, 'hvcC'));\n } else if (codec === 'mp4a' || codec === 'mp4v') {\n var esds = findNamedBox(bytes, 'esds');\n var esDescriptor = parseDescriptors(esds.subarray(4))[0];\n var decoderConfig = esDescriptor && esDescriptor.descriptors.filter(function (_ref) {\n var tag = _ref.tag;\n return tag === 0x04;\n })[0];\n\n if (decoderConfig) {\n // most codecs do not have a further '.'\n // such as 0xa5 for ac-3 and 0xa6 for e-ac-3\n codec += '.' + toHexString(decoderConfig.oti);\n\n if (decoderConfig.oti === 0x40) {\n codec += '.' + (decoderConfig.descriptors[0].bytes[0] >> 3).toString();\n } else if (decoderConfig.oti === 0x20) {\n codec += '.' + decoderConfig.descriptors[0].bytes[4].toString();\n } else if (decoderConfig.oti === 0xdd) {\n codec = 'vorbis';\n }\n } else if (track.type === 'audio') {\n codec += '.40.2';\n } else {\n codec += '.20.9';\n }\n } else if (codec === 'av01') {\n // AV1DecoderConfigurationRecord\n codec += \".\" + getAv1Codec(findNamedBox(bytes, 'av1C'));\n } else if (codec === 'vp09') {\n // VPCodecConfigurationRecord\n var vpcC = findNamedBox(bytes, 'vpcC'); // https://www.webmproject.org/vp9/mp4/\n\n var profile = vpcC[0];\n var level = vpcC[1];\n var bitDepth = vpcC[2] >> 4;\n var chromaSubsampling = (vpcC[2] & 0x0F) >> 1;\n var videoFullRangeFlag = (vpcC[2] & 0x0F) >> 3;\n var colourPrimaries = vpcC[3];\n var transferCharacteristics = vpcC[4];\n var matrixCoefficients = vpcC[5];\n codec += \".\" + padStart(profile, 2, '0');\n codec += \".\" + padStart(level, 2, '0');\n codec += \".\" + padStart(bitDepth, 2, '0');\n codec += \".\" + padStart(chromaSubsampling, 2, '0');\n codec += \".\" + padStart(colourPrimaries, 2, '0');\n codec += \".\" + padStart(transferCharacteristics, 2, '0');\n codec += \".\" + padStart(matrixCoefficients, 2, '0');\n codec += \".\" + padStart(videoFullRangeFlag, 2, '0');\n } else if (codec === 'theo') {\n codec = 'theora';\n } else if (codec === 'spex') {\n codec = 'speex';\n } else if (codec === '.mp3') {\n codec = 'mp4a.40.34';\n } else if (codec === 'msVo') {\n codec = 'vorbis';\n } else if (codec === 'Opus') {\n codec = 'opus';\n var dOps = findNamedBox(bytes, 'dOps');\n track.info.opus = parseOpusHead(dOps); // TODO: should this go into the webm code??\n // Firefox requires a codecDelay for opus playback\n // see https://bugzilla.mozilla.org/show_bug.cgi?id=1276238\n\n track.info.codecDelay = 6500000;\n } else {\n codec = codec.toLowerCase();\n }\n /* eslint-enable */\n // flac, ac-3, ec-3, opus\n\n\n track.codec = codec;\n};\nexport var parseTracks = function parseTracks(bytes, frameTable) {\n if (frameTable === void 0) {\n frameTable = true;\n }\n\n bytes = toUint8(bytes);\n var traks = findBox(bytes, ['moov', 'trak'], true);\n var tracks = [];\n traks.forEach(function (trak) {\n var track = {\n bytes: trak\n };\n var mdia = findBox(trak, ['mdia'])[0];\n var hdlr = findBox(mdia, ['hdlr'])[0];\n var trakType = bytesToString(hdlr.subarray(8, 12));\n\n if (trakType === 'soun') {\n track.type = 'audio';\n } else if (trakType === 'vide') {\n track.type = 'video';\n } else {\n track.type = trakType;\n }\n\n var tkhd = findBox(trak, ['tkhd'])[0];\n\n if (tkhd) {\n var view = new DataView(tkhd.buffer, tkhd.byteOffset, tkhd.byteLength);\n var tkhdVersion = view.getUint8(0);\n track.number = tkhdVersion === 0 ? view.getUint32(12) : view.getUint32(20);\n }\n\n var mdhd = findBox(mdia, ['mdhd'])[0];\n\n if (mdhd) {\n // mdhd is a FullBox, meaning it will have its own version as the first byte\n var version = mdhd[0];\n var index = version === 0 ? 12 : 20;\n track.timescale = (mdhd[index] << 24 | mdhd[index + 1] << 16 | mdhd[index + 2] << 8 | mdhd[index + 3]) >>> 0;\n }\n\n var stbl = findBox(mdia, ['minf', 'stbl'])[0];\n var stsd = findBox(stbl, ['stsd'])[0];\n var descriptionCount = bytesToNumber(stsd.subarray(4, 8));\n var offset = 8; // add codec and codec info\n\n while (descriptionCount--) {\n var len = bytesToNumber(stsd.subarray(offset, offset + 4));\n var sampleDescriptor = stsd.subarray(offset + 4, offset + 4 + len);\n addSampleDescription(track, sampleDescriptor);\n offset += 4 + len;\n }\n\n if (frameTable) {\n track.frameTable = buildFrameTable(stbl, track.timescale);\n } // codec has no sub parameters\n\n\n tracks.push(track);\n });\n return tracks;\n};\nexport var parseMediaInfo = function parseMediaInfo(bytes) {\n var mvhd = findBox(bytes, ['moov', 'mvhd'], true)[0];\n\n if (!mvhd || !mvhd.length) {\n return;\n }\n\n var info = {}; // ms to ns\n // mvhd v1 has 8 byte duration and other fields too\n\n if (mvhd[0] === 1) {\n info.timestampScale = bytesToNumber(mvhd.subarray(20, 24));\n info.duration = bytesToNumber(mvhd.subarray(24, 32));\n } else {\n info.timestampScale = bytesToNumber(mvhd.subarray(12, 16));\n info.duration = bytesToNumber(mvhd.subarray(16, 20));\n }\n\n info.bytes = mvhd;\n return info;\n};","import { toUint8, bytesMatch } from './byte-helpers.js';\nvar ID3 = toUint8([0x49, 0x44, 0x33]);\nexport var getId3Size = function getId3Size(bytes, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n bytes = toUint8(bytes);\n var flags = bytes[offset + 5];\n var returnSize = bytes[offset + 6] << 21 | bytes[offset + 7] << 14 | bytes[offset + 8] << 7 | bytes[offset + 9];\n var footerPresent = (flags & 16) >> 4;\n\n if (footerPresent) {\n return returnSize + 20;\n }\n\n return returnSize + 10;\n};\nexport var getId3Offset = function getId3Offset(bytes, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n bytes = toUint8(bytes);\n\n if (bytes.length - offset < 10 || !bytesMatch(bytes, ID3, {\n offset: offset\n })) {\n return offset;\n }\n\n offset += getId3Size(bytes, offset); // recursive check for id3 tags as some files\n // have multiple ID3 tag sections even though\n // they should not.\n\n return getId3Offset(bytes, offset);\n};","export var OPUS_HEAD = new Uint8Array([// O, p, u, s\n0x4f, 0x70, 0x75, 0x73, // H, e, a, d\n0x48, 0x65, 0x61, 0x64]); // https://wiki.xiph.org/OggOpus\n// https://vfrmaniac.fushizen.eu/contents/opus_in_isobmff.html\n// https://opus-codec.org/docs/opusfile_api-0.7/structOpusHead.html\n\nexport var parseOpusHead = function parseOpusHead(bytes) {\n var view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n var version = view.getUint8(0); // version 0, from mp4, does not use littleEndian.\n\n var littleEndian = version !== 0;\n var config = {\n version: version,\n channels: view.getUint8(1),\n preSkip: view.getUint16(2, littleEndian),\n sampleRate: view.getUint32(4, littleEndian),\n outputGain: view.getUint16(8, littleEndian),\n channelMappingFamily: view.getUint8(10)\n };\n\n if (config.channelMappingFamily > 0 && bytes.length > 10) {\n config.streamCount = view.getUint8(11);\n config.twoChannelStreamCount = view.getUint8(12);\n config.channelMapping = [];\n\n for (var c = 0; c < config.channels; c++) {\n config.channelMapping.push(view.getUint8(13 + c));\n }\n }\n\n return config;\n};\nexport var setOpusHead = function setOpusHead(config) {\n var size = config.channelMappingFamily <= 0 ? 11 : 12 + config.channels;\n var view = new DataView(new ArrayBuffer(size));\n var littleEndian = config.version !== 0;\n view.setUint8(0, config.version);\n view.setUint8(1, config.channels);\n view.setUint16(2, config.preSkip, littleEndian);\n view.setUint32(4, config.sampleRate, littleEndian);\n view.setUint16(8, config.outputGain, littleEndian);\n view.setUint8(10, config.channelMappingFamily);\n\n if (config.channelMappingFamily > 0) {\n view.setUint8(11, config.streamCount);\n config.channelMapping.foreach(function (cm, i) {\n view.setUint8(12 + i, cm);\n });\n }\n\n return new Uint8Array(view.buffer);\n};","import { toUint8, bytesToNumber, bytesMatch, bytesToString, numberToBytes, padStart } from './byte-helpers';\nimport { getAvcCodec, getHvcCodec, getAv1Codec } from './codec-helpers.js'; // relevant specs for this parser:\n// https://matroska-org.github.io/libebml/specs.html\n// https://www.matroska.org/technical/elements.html\n// https://www.webmproject.org/docs/container/\n\nexport var EBML_TAGS = {\n EBML: toUint8([0x1A, 0x45, 0xDF, 0xA3]),\n DocType: toUint8([0x42, 0x82]),\n Segment: toUint8([0x18, 0x53, 0x80, 0x67]),\n SegmentInfo: toUint8([0x15, 0x49, 0xA9, 0x66]),\n Tracks: toUint8([0x16, 0x54, 0xAE, 0x6B]),\n Track: toUint8([0xAE]),\n TrackNumber: toUint8([0xd7]),\n DefaultDuration: toUint8([0x23, 0xe3, 0x83]),\n TrackEntry: toUint8([0xAE]),\n TrackType: toUint8([0x83]),\n FlagDefault: toUint8([0x88]),\n CodecID: toUint8([0x86]),\n CodecPrivate: toUint8([0x63, 0xA2]),\n VideoTrack: toUint8([0xe0]),\n AudioTrack: toUint8([0xe1]),\n // Not used yet, but will be used for live webm/mkv\n // see https://www.matroska.org/technical/basics.html#block-structure\n // see https://www.matroska.org/technical/basics.html#simpleblock-structure\n Cluster: toUint8([0x1F, 0x43, 0xB6, 0x75]),\n Timestamp: toUint8([0xE7]),\n TimestampScale: toUint8([0x2A, 0xD7, 0xB1]),\n BlockGroup: toUint8([0xA0]),\n BlockDuration: toUint8([0x9B]),\n Block: toUint8([0xA1]),\n SimpleBlock: toUint8([0xA3])\n};\n/**\n * This is a simple table to determine the length\n * of things in ebml. The length is one based (starts at 1,\n * rather than zero) and for every zero bit before a one bit\n * we add one to length. We also need this table because in some\n * case we have to xor all the length bits from another value.\n */\n\nvar LENGTH_TABLE = [128, 64, 32, 16, 8, 4, 2, 1];\n\nvar getLength = function getLength(byte) {\n var len = 1;\n\n for (var i = 0; i < LENGTH_TABLE.length; i++) {\n if (byte & LENGTH_TABLE[i]) {\n break;\n }\n\n len++;\n }\n\n return len;\n}; // length in ebml is stored in the first 4 to 8 bits\n// of the first byte. 4 for the id length and 8 for the\n// data size length. Length is measured by converting the number to binary\n// then 1 + the number of zeros before a 1 is encountered starting\n// from the left.\n\n\nvar getvint = function getvint(bytes, offset, removeLength, signed) {\n if (removeLength === void 0) {\n removeLength = true;\n }\n\n if (signed === void 0) {\n signed = false;\n }\n\n var length = getLength(bytes[offset]);\n var valueBytes = bytes.subarray(offset, offset + length); // NOTE that we do **not** subarray here because we need to copy these bytes\n // as they will be modified below to remove the dataSizeLen bits and we do not\n // want to modify the original data. normally we could just call slice on\n // uint8array but ie 11 does not support that...\n\n if (removeLength) {\n valueBytes = Array.prototype.slice.call(bytes, offset, offset + length);\n valueBytes[0] ^= LENGTH_TABLE[length - 1];\n }\n\n return {\n length: length,\n value: bytesToNumber(valueBytes, {\n signed: signed\n }),\n bytes: valueBytes\n };\n};\n\nvar normalizePath = function normalizePath(path) {\n if (typeof path === 'string') {\n return path.match(/.{1,2}/g).map(function (p) {\n return normalizePath(p);\n });\n }\n\n if (typeof path === 'number') {\n return numberToBytes(path);\n }\n\n return path;\n};\n\nvar normalizePaths = function normalizePaths(paths) {\n if (!Array.isArray(paths)) {\n return [normalizePath(paths)];\n }\n\n return paths.map(function (p) {\n return normalizePath(p);\n });\n};\n\nvar getInfinityDataSize = function getInfinityDataSize(id, bytes, offset) {\n if (offset >= bytes.length) {\n return bytes.length;\n }\n\n var innerid = getvint(bytes, offset, false);\n\n if (bytesMatch(id.bytes, innerid.bytes)) {\n return offset;\n }\n\n var dataHeader = getvint(bytes, offset + innerid.length);\n return getInfinityDataSize(id, bytes, offset + dataHeader.length + dataHeader.value + innerid.length);\n};\n/**\n * Notes on the EBLM format.\n *\n * EBLM uses \"vints\" tags. Every vint tag contains\n * two parts\n *\n * 1. The length from the first byte. You get this by\n * converting the byte to binary and counting the zeros\n * before a 1. Then you add 1 to that. Examples\n * 00011111 = length 4 because there are 3 zeros before a 1.\n * 00100000 = length 3 because there are 2 zeros before a 1.\n * 00000011 = length 7 because there are 6 zeros before a 1.\n *\n * 2. The bits used for length are removed from the first byte\n * Then all the bytes are merged into a value. NOTE: this\n * is not the case for id ebml tags as there id includes\n * length bits.\n *\n */\n\n\nexport var findEbml = function findEbml(bytes, paths) {\n paths = normalizePaths(paths);\n bytes = toUint8(bytes);\n var results = [];\n\n if (!paths.length) {\n return results;\n }\n\n var i = 0;\n\n while (i < bytes.length) {\n var id = getvint(bytes, i, false);\n var dataHeader = getvint(bytes, i + id.length);\n var dataStart = i + id.length + dataHeader.length; // dataSize is unknown or this is a live stream\n\n if (dataHeader.value === 0x7f) {\n dataHeader.value = getInfinityDataSize(id, bytes, dataStart);\n\n if (dataHeader.value !== bytes.length) {\n dataHeader.value -= dataStart;\n }\n }\n\n var dataEnd = dataStart + dataHeader.value > bytes.length ? bytes.length : dataStart + dataHeader.value;\n var data = bytes.subarray(dataStart, dataEnd);\n\n if (bytesMatch(paths[0], id.bytes)) {\n if (paths.length === 1) {\n // this is the end of the paths and we've found the tag we were\n // looking for\n results.push(data);\n } else {\n // recursively search for the next tag inside of the data\n // of this one\n results = results.concat(findEbml(data, paths.slice(1)));\n }\n }\n\n var totalLength = id.length + dataHeader.length + data.length; // move past this tag entirely, we are not looking for it\n\n i += totalLength;\n }\n\n return results;\n}; // see https://www.matroska.org/technical/basics.html#block-structure\n\nexport var decodeBlock = function decodeBlock(block, type, timestampScale, clusterTimestamp) {\n var duration;\n\n if (type === 'group') {\n duration = findEbml(block, [EBML_TAGS.BlockDuration])[0];\n\n if (duration) {\n duration = bytesToNumber(duration);\n duration = 1 / timestampScale * duration * timestampScale / 1000;\n }\n\n block = findEbml(block, [EBML_TAGS.Block])[0];\n type = 'block'; // treat data as a block after this point\n }\n\n var dv = new DataView(block.buffer, block.byteOffset, block.byteLength);\n var trackNumber = getvint(block, 0);\n var timestamp = dv.getInt16(trackNumber.length, false);\n var flags = block[trackNumber.length + 2];\n var data = block.subarray(trackNumber.length + 3); // pts/dts in seconds\n\n var ptsdts = 1 / timestampScale * (clusterTimestamp + timestamp) * timestampScale / 1000; // return the frame\n\n var parsed = {\n duration: duration,\n trackNumber: trackNumber.value,\n keyframe: type === 'simple' && flags >> 7 === 1,\n invisible: (flags & 0x08) >> 3 === 1,\n lacing: (flags & 0x06) >> 1,\n discardable: type === 'simple' && (flags & 0x01) === 1,\n frames: [],\n pts: ptsdts,\n dts: ptsdts,\n timestamp: timestamp\n };\n\n if (!parsed.lacing) {\n parsed.frames.push(data);\n return parsed;\n }\n\n var numberOfFrames = data[0] + 1;\n var frameSizes = [];\n var offset = 1; // Fixed\n\n if (parsed.lacing === 2) {\n var sizeOfFrame = (data.length - offset) / numberOfFrames;\n\n for (var i = 0; i < numberOfFrames; i++) {\n frameSizes.push(sizeOfFrame);\n }\n } // xiph\n\n\n if (parsed.lacing === 1) {\n for (var _i = 0; _i < numberOfFrames - 1; _i++) {\n var size = 0;\n\n do {\n size += data[offset];\n offset++;\n } while (data[offset - 1] === 0xFF);\n\n frameSizes.push(size);\n }\n } // ebml\n\n\n if (parsed.lacing === 3) {\n // first vint is unsinged\n // after that vints are singed and\n // based on a compounding size\n var _size = 0;\n\n for (var _i2 = 0; _i2 < numberOfFrames - 1; _i2++) {\n var vint = _i2 === 0 ? getvint(data, offset) : getvint(data, offset, true, true);\n _size += vint.value;\n frameSizes.push(_size);\n offset += vint.length;\n }\n }\n\n frameSizes.forEach(function (size) {\n parsed.frames.push(data.subarray(offset, offset + size));\n offset += size;\n });\n return parsed;\n}; // VP9 Codec Feature Metadata (CodecPrivate)\n// https://www.webmproject.org/docs/container/\n\nvar parseVp9Private = function parseVp9Private(bytes) {\n var i = 0;\n var params = {};\n\n while (i < bytes.length) {\n var id = bytes[i] & 0x7f;\n var len = bytes[i + 1];\n var val = void 0;\n\n if (len === 1) {\n val = bytes[i + 2];\n } else {\n val = bytes.subarray(i + 2, i + 2 + len);\n }\n\n if (id === 1) {\n params.profile = val;\n } else if (id === 2) {\n params.level = val;\n } else if (id === 3) {\n params.bitDepth = val;\n } else if (id === 4) {\n params.chromaSubsampling = val;\n } else {\n params[id] = val;\n }\n\n i += 2 + len;\n }\n\n return params;\n};\n\nexport var parseTracks = function parseTracks(bytes) {\n bytes = toUint8(bytes);\n var decodedTracks = [];\n var tracks = findEbml(bytes, [EBML_TAGS.Segment, EBML_TAGS.Tracks, EBML_TAGS.Track]);\n\n if (!tracks.length) {\n tracks = findEbml(bytes, [EBML_TAGS.Tracks, EBML_TAGS.Track]);\n }\n\n if (!tracks.length) {\n tracks = findEbml(bytes, [EBML_TAGS.Track]);\n }\n\n if (!tracks.length) {\n return decodedTracks;\n }\n\n tracks.forEach(function (track) {\n var trackType = findEbml(track, EBML_TAGS.TrackType)[0];\n\n if (!trackType || !trackType.length) {\n return;\n } // 1 is video, 2 is audio, 17 is subtitle\n // other values are unimportant in this context\n\n\n if (trackType[0] === 1) {\n trackType = 'video';\n } else if (trackType[0] === 2) {\n trackType = 'audio';\n } else if (trackType[0] === 17) {\n trackType = 'subtitle';\n } else {\n return;\n } // todo parse language\n\n\n var decodedTrack = {\n rawCodec: bytesToString(findEbml(track, [EBML_TAGS.CodecID])[0]),\n type: trackType,\n codecPrivate: findEbml(track, [EBML_TAGS.CodecPrivate])[0],\n number: bytesToNumber(findEbml(track, [EBML_TAGS.TrackNumber])[0]),\n defaultDuration: bytesToNumber(findEbml(track, [EBML_TAGS.DefaultDuration])[0]),\n default: findEbml(track, [EBML_TAGS.FlagDefault])[0],\n rawData: track\n };\n var codec = '';\n\n if (/V_MPEG4\\/ISO\\/AVC/.test(decodedTrack.rawCodec)) {\n codec = \"avc1.\" + getAvcCodec(decodedTrack.codecPrivate);\n } else if (/V_MPEGH\\/ISO\\/HEVC/.test(decodedTrack.rawCodec)) {\n codec = \"hev1.\" + getHvcCodec(decodedTrack.codecPrivate);\n } else if (/V_MPEG4\\/ISO\\/ASP/.test(decodedTrack.rawCodec)) {\n if (decodedTrack.codecPrivate) {\n codec = 'mp4v.20.' + decodedTrack.codecPrivate[4].toString();\n } else {\n codec = 'mp4v.20.9';\n }\n } else if (/^V_THEORA/.test(decodedTrack.rawCodec)) {\n codec = 'theora';\n } else if (/^V_VP8/.test(decodedTrack.rawCodec)) {\n codec = 'vp8';\n } else if (/^V_VP9/.test(decodedTrack.rawCodec)) {\n if (decodedTrack.codecPrivate) {\n var _parseVp9Private = parseVp9Private(decodedTrack.codecPrivate),\n profile = _parseVp9Private.profile,\n level = _parseVp9Private.level,\n bitDepth = _parseVp9Private.bitDepth,\n chromaSubsampling = _parseVp9Private.chromaSubsampling;\n\n codec = 'vp09.';\n codec += padStart(profile, 2, '0') + \".\";\n codec += padStart(level, 2, '0') + \".\";\n codec += padStart(bitDepth, 2, '0') + \".\";\n codec += \"\" + padStart(chromaSubsampling, 2, '0'); // Video -> Colour -> Ebml name\n\n var matrixCoefficients = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xB1]])[0] || [];\n var videoFullRangeFlag = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xB9]])[0] || [];\n var transferCharacteristics = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xBA]])[0] || [];\n var colourPrimaries = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xBB]])[0] || []; // if we find any optional codec parameter specify them all.\n\n if (matrixCoefficients.length || videoFullRangeFlag.length || transferCharacteristics.length || colourPrimaries.length) {\n codec += \".\" + padStart(colourPrimaries[0], 2, '0');\n codec += \".\" + padStart(transferCharacteristics[0], 2, '0');\n codec += \".\" + padStart(matrixCoefficients[0], 2, '0');\n codec += \".\" + padStart(videoFullRangeFlag[0], 2, '0');\n }\n } else {\n codec = 'vp9';\n }\n } else if (/^V_AV1/.test(decodedTrack.rawCodec)) {\n codec = \"av01.\" + getAv1Codec(decodedTrack.codecPrivate);\n } else if (/A_ALAC/.test(decodedTrack.rawCodec)) {\n codec = 'alac';\n } else if (/A_MPEG\\/L2/.test(decodedTrack.rawCodec)) {\n codec = 'mp2';\n } else if (/A_MPEG\\/L3/.test(decodedTrack.rawCodec)) {\n codec = 'mp3';\n } else if (/^A_AAC/.test(decodedTrack.rawCodec)) {\n if (decodedTrack.codecPrivate) {\n codec = 'mp4a.40.' + (decodedTrack.codecPrivate[0] >>> 3).toString();\n } else {\n codec = 'mp4a.40.2';\n }\n } else if (/^A_AC3/.test(decodedTrack.rawCodec)) {\n codec = 'ac-3';\n } else if (/^A_PCM/.test(decodedTrack.rawCodec)) {\n codec = 'pcm';\n } else if (/^A_MS\\/ACM/.test(decodedTrack.rawCodec)) {\n codec = 'speex';\n } else if (/^A_EAC3/.test(decodedTrack.rawCodec)) {\n codec = 'ec-3';\n } else if (/^A_VORBIS/.test(decodedTrack.rawCodec)) {\n codec = 'vorbis';\n } else if (/^A_FLAC/.test(decodedTrack.rawCodec)) {\n codec = 'flac';\n } else if (/^A_OPUS/.test(decodedTrack.rawCodec)) {\n codec = 'opus';\n }\n\n decodedTrack.codec = codec;\n decodedTracks.push(decodedTrack);\n });\n return decodedTracks.sort(function (a, b) {\n return a.number - b.number;\n });\n};\nexport var parseData = function parseData(data, tracks) {\n var allBlocks = [];\n var segment = findEbml(data, [EBML_TAGS.Segment])[0];\n var timestampScale = findEbml(segment, [EBML_TAGS.SegmentInfo, EBML_TAGS.TimestampScale])[0]; // in nanoseconds, defaults to 1ms\n\n if (timestampScale && timestampScale.length) {\n timestampScale = bytesToNumber(timestampScale);\n } else {\n timestampScale = 1000000;\n }\n\n var clusters = findEbml(segment, [EBML_TAGS.Cluster]);\n\n if (!tracks) {\n tracks = parseTracks(segment);\n }\n\n clusters.forEach(function (cluster, ci) {\n var simpleBlocks = findEbml(cluster, [EBML_TAGS.SimpleBlock]).map(function (b) {\n return {\n type: 'simple',\n data: b\n };\n });\n var blockGroups = findEbml(cluster, [EBML_TAGS.BlockGroup]).map(function (b) {\n return {\n type: 'group',\n data: b\n };\n });\n var timestamp = findEbml(cluster, [EBML_TAGS.Timestamp])[0] || 0;\n\n if (timestamp && timestamp.length) {\n timestamp = bytesToNumber(timestamp);\n } // get all blocks then sort them into the correct order\n\n\n var blocks = simpleBlocks.concat(blockGroups).sort(function (a, b) {\n return a.data.byteOffset - b.data.byteOffset;\n });\n blocks.forEach(function (block, bi) {\n var decoded = decodeBlock(block.data, block.type, timestampScale, timestamp);\n allBlocks.push(decoded);\n });\n });\n return {\n tracks: tracks,\n blocks: allBlocks\n };\n};","import { bytesMatch, toUint8 } from './byte-helpers.js';\nexport var NAL_TYPE_ONE = toUint8([0x00, 0x00, 0x00, 0x01]);\nexport var NAL_TYPE_TWO = toUint8([0x00, 0x00, 0x01]);\nexport var EMULATION_PREVENTION = toUint8([0x00, 0x00, 0x03]);\n/**\n * Expunge any \"Emulation Prevention\" bytes from a \"Raw Byte\n * Sequence Payload\"\n *\n * @param data {Uint8Array} the bytes of a RBSP from a NAL\n * unit\n * @return {Uint8Array} the RBSP without any Emulation\n * Prevention Bytes\n */\n\nexport var discardEmulationPreventionBytes = function discardEmulationPreventionBytes(bytes) {\n var positions = [];\n var i = 1; // Find all `Emulation Prevention Bytes`\n\n while (i < bytes.length - 2) {\n if (bytesMatch(bytes.subarray(i, i + 3), EMULATION_PREVENTION)) {\n positions.push(i + 2);\n i++;\n }\n\n i++;\n } // If no Emulation Prevention Bytes were found just return the original\n // array\n\n\n if (positions.length === 0) {\n return bytes;\n } // Create a new array to hold the NAL unit data\n\n\n var newLength = bytes.length - positions.length;\n var newData = new Uint8Array(newLength);\n var sourceIndex = 0;\n\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === positions[0]) {\n // Skip this byte\n sourceIndex++; // Remove this position index\n\n positions.shift();\n }\n\n newData[i] = bytes[sourceIndex];\n }\n\n return newData;\n};\nexport var findNal = function findNal(bytes, dataType, types, nalLimit) {\n if (nalLimit === void 0) {\n nalLimit = Infinity;\n }\n\n bytes = toUint8(bytes);\n types = [].concat(types);\n var i = 0;\n var nalStart;\n var nalsFound = 0; // keep searching until:\n // we reach the end of bytes\n // we reach the maximum number of nals they want to seach\n // NOTE: that we disregard nalLimit when we have found the start\n // of the nal we want so that we can find the end of the nal we want.\n\n while (i < bytes.length && (nalsFound < nalLimit || nalStart)) {\n var nalOffset = void 0;\n\n if (bytesMatch(bytes.subarray(i), NAL_TYPE_ONE)) {\n nalOffset = 4;\n } else if (bytesMatch(bytes.subarray(i), NAL_TYPE_TWO)) {\n nalOffset = 3;\n } // we are unsynced,\n // find the next nal unit\n\n\n if (!nalOffset) {\n i++;\n continue;\n }\n\n nalsFound++;\n\n if (nalStart) {\n return discardEmulationPreventionBytes(bytes.subarray(nalStart, i));\n }\n\n var nalType = void 0;\n\n if (dataType === 'h264') {\n nalType = bytes[i + nalOffset] & 0x1f;\n } else if (dataType === 'h265') {\n nalType = bytes[i + nalOffset] >> 1 & 0x3f;\n }\n\n if (types.indexOf(nalType) !== -1) {\n nalStart = i + nalOffset;\n } // nal header is 1 length for h264, and 2 for h265\n\n\n i += nalOffset + (dataType === 'h264' ? 1 : 2);\n }\n\n return bytes.subarray(0, 0);\n};\nexport var findH264Nal = function findH264Nal(bytes, type, nalLimit) {\n return findNal(bytes, 'h264', type, nalLimit);\n};\nexport var findH265Nal = function findH265Nal(bytes, type, nalLimit) {\n return findNal(bytes, 'h265', type, nalLimit);\n};","import { toUint8, bytesMatch } from './byte-helpers.js';\nimport { findBox } from './mp4-helpers.js';\nimport { findEbml, EBML_TAGS } from './ebml-helpers.js';\nimport { getId3Offset } from './id3-helpers.js';\nimport { findH264Nal, findH265Nal } from './nal-helpers.js';\nvar CONSTANTS = {\n // \"webm\" string literal in hex\n 'webm': toUint8([0x77, 0x65, 0x62, 0x6d]),\n // \"matroska\" string literal in hex\n 'matroska': toUint8([0x6d, 0x61, 0x74, 0x72, 0x6f, 0x73, 0x6b, 0x61]),\n // \"fLaC\" string literal in hex\n 'flac': toUint8([0x66, 0x4c, 0x61, 0x43]),\n // \"OggS\" string literal in hex\n 'ogg': toUint8([0x4f, 0x67, 0x67, 0x53]),\n // ac-3 sync byte, also works for ec-3 as that is simply a codec\n // of ac-3\n 'ac3': toUint8([0x0b, 0x77]),\n // \"RIFF\" string literal in hex used for wav and avi\n 'riff': toUint8([0x52, 0x49, 0x46, 0x46]),\n // \"AVI\" string literal in hex\n 'avi': toUint8([0x41, 0x56, 0x49]),\n // \"WAVE\" string literal in hex\n 'wav': toUint8([0x57, 0x41, 0x56, 0x45]),\n // \"ftyp3g\" string literal in hex\n '3gp': toUint8([0x66, 0x74, 0x79, 0x70, 0x33, 0x67]),\n // \"ftyp\" string literal in hex\n 'mp4': toUint8([0x66, 0x74, 0x79, 0x70]),\n // \"styp\" string literal in hex\n 'fmp4': toUint8([0x73, 0x74, 0x79, 0x70]),\n // \"ftypqt\" string literal in hex\n 'mov': toUint8([0x66, 0x74, 0x79, 0x70, 0x71, 0x74]),\n // moov string literal in hex\n 'moov': toUint8([0x6D, 0x6F, 0x6F, 0x76]),\n // moof string literal in hex\n 'moof': toUint8([0x6D, 0x6F, 0x6F, 0x66])\n};\nvar _isLikely = {\n aac: function aac(bytes) {\n var offset = getId3Offset(bytes);\n return bytesMatch(bytes, [0xFF, 0x10], {\n offset: offset,\n mask: [0xFF, 0x16]\n });\n },\n mp3: function mp3(bytes) {\n var offset = getId3Offset(bytes);\n return bytesMatch(bytes, [0xFF, 0x02], {\n offset: offset,\n mask: [0xFF, 0x06]\n });\n },\n webm: function webm(bytes) {\n var docType = findEbml(bytes, [EBML_TAGS.EBML, EBML_TAGS.DocType])[0]; // check if DocType EBML tag is webm\n\n return bytesMatch(docType, CONSTANTS.webm);\n },\n mkv: function mkv(bytes) {\n var docType = findEbml(bytes, [EBML_TAGS.EBML, EBML_TAGS.DocType])[0]; // check if DocType EBML tag is matroska\n\n return bytesMatch(docType, CONSTANTS.matroska);\n },\n mp4: function mp4(bytes) {\n // if this file is another base media file format, it is not mp4\n if (_isLikely['3gp'](bytes) || _isLikely.mov(bytes)) {\n return false;\n } // if this file starts with a ftyp or styp box its mp4\n\n\n if (bytesMatch(bytes, CONSTANTS.mp4, {\n offset: 4\n }) || bytesMatch(bytes, CONSTANTS.fmp4, {\n offset: 4\n })) {\n return true;\n } // if this file starts with a moof/moov box its mp4\n\n\n if (bytesMatch(bytes, CONSTANTS.moof, {\n offset: 4\n }) || bytesMatch(bytes, CONSTANTS.moov, {\n offset: 4\n })) {\n return true;\n }\n },\n mov: function mov(bytes) {\n return bytesMatch(bytes, CONSTANTS.mov, {\n offset: 4\n });\n },\n '3gp': function gp(bytes) {\n return bytesMatch(bytes, CONSTANTS['3gp'], {\n offset: 4\n });\n },\n ac3: function ac3(bytes) {\n var offset = getId3Offset(bytes);\n return bytesMatch(bytes, CONSTANTS.ac3, {\n offset: offset\n });\n },\n ts: function ts(bytes) {\n if (bytes.length < 189 && bytes.length >= 1) {\n return bytes[0] === 0x47;\n }\n\n var i = 0; // check the first 376 bytes for two matching sync bytes\n\n while (i + 188 < bytes.length && i < 188) {\n if (bytes[i] === 0x47 && bytes[i + 188] === 0x47) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n flac: function flac(bytes) {\n var offset = getId3Offset(bytes);\n return bytesMatch(bytes, CONSTANTS.flac, {\n offset: offset\n });\n },\n ogg: function ogg(bytes) {\n return bytesMatch(bytes, CONSTANTS.ogg);\n },\n avi: function avi(bytes) {\n return bytesMatch(bytes, CONSTANTS.riff) && bytesMatch(bytes, CONSTANTS.avi, {\n offset: 8\n });\n },\n wav: function wav(bytes) {\n return bytesMatch(bytes, CONSTANTS.riff) && bytesMatch(bytes, CONSTANTS.wav, {\n offset: 8\n });\n },\n 'h264': function h264(bytes) {\n // find seq_parameter_set_rbsp\n return findH264Nal(bytes, 7, 3).length;\n },\n 'h265': function h265(bytes) {\n // find video_parameter_set_rbsp or seq_parameter_set_rbsp\n return findH265Nal(bytes, [32, 33], 3).length;\n }\n}; // get all the isLikely functions\n// but make sure 'ts' is above h264 and h265\n// but below everything else as it is the least specific\n\nvar isLikelyTypes = Object.keys(_isLikely) // remove ts, h264, h265\n.filter(function (t) {\n return t !== 'ts' && t !== 'h264' && t !== 'h265';\n}) // add it back to the bottom\n.concat(['ts', 'h264', 'h265']); // make sure we are dealing with uint8 data.\n\nisLikelyTypes.forEach(function (type) {\n var isLikelyFn = _isLikely[type];\n\n _isLikely[type] = function (bytes) {\n return isLikelyFn(toUint8(bytes));\n };\n}); // export after wrapping\n\nexport var isLikely = _isLikely; // A useful list of file signatures can be found here\n// https://en.wikipedia.org/wiki/List_of_file_signatures\n\nexport var detectContainerForBytes = function detectContainerForBytes(bytes) {\n bytes = toUint8(bytes);\n\n for (var i = 0; i < isLikelyTypes.length; i++) {\n var type = isLikelyTypes[i];\n\n if (isLikely[type](bytes)) {\n return type;\n }\n }\n\n return '';\n}; // fmp4 is not a container\n\nexport var isLikelyFmp4MediaSegment = function isLikelyFmp4MediaSegment(bytes) {\n return findBox(bytes, ['moof']).length > 0;\n};","/**\n * @license\n * Video.js 8.22.0 \n * Copyright Brightcove, Inc. \n * Available under Apache License Version 2.0\n * \n *\n * Includes vtt.js \n * Available under Apache License Version 2.0\n * \n */\n\nimport window$1 from 'global/window';\nimport document$1 from 'global/document';\nimport XHR from '@videojs/xhr';\nimport vtt from 'videojs-vtt.js';\nimport _extends from '@babel/runtime/helpers/extends';\nimport _resolveUrl from '@videojs/vhs-utils/es/resolve-url.js';\nimport { Parser } from 'm3u8-parser';\nimport { DEFAULT_VIDEO_CODEC, DEFAULT_AUDIO_CODEC, parseCodecs, muxerSupportsCodec, browserSupportsCodec, translateLegacyCodec, codecsFromDefault, isAudioCodec, getMimeForCodec } from '@videojs/vhs-utils/es/codecs.js';\nimport { simpleTypeFromSourceType } from '@videojs/vhs-utils/es/media-types.js';\nimport { isArrayBufferView, concatTypedArrays, stringToBytes, toUint8 } from '@videojs/vhs-utils/es/byte-helpers';\nimport { generateSidxKey, parseUTCTiming, parse, addSidxSegmentsToPlaylist } from 'mpd-parser';\nimport parseSidx from 'mux.js/lib/tools/parse-sidx';\nimport { getId3Offset } from '@videojs/vhs-utils/es/id3-helpers';\nimport { detectContainerForBytes, isLikelyFmp4MediaSegment } from '@videojs/vhs-utils/es/containers';\nimport { ONE_SECOND_IN_TS } from 'mux.js/lib/utils/clock';\n\nvar version$6 = \"8.22.0\";\n\n/**\n * An Object that contains lifecycle hooks as keys which point to an array\n * of functions that are run when a lifecycle is triggered\n *\n * @private\n */\nconst hooks_ = {};\n\n/**\n * Get a list of hooks for a specific lifecycle\n *\n * @param {string} type\n * the lifecycle to get hooks from\n *\n * @param {Function|Function[]} [fn]\n * Optionally add a hook (or hooks) to the lifecycle that your are getting.\n *\n * @return {Array}\n * an array of hooks, or an empty array if there are none.\n */\nconst hooks = function (type, fn) {\n hooks_[type] = hooks_[type] || [];\n if (fn) {\n hooks_[type] = hooks_[type].concat(fn);\n }\n return hooks_[type];\n};\n\n/**\n * Add a function hook to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\nconst hook = function (type, fn) {\n hooks(type, fn);\n};\n\n/**\n * Remove a hook from a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle that the function hooked to\n *\n * @param {Function} fn\n * The hooked function to remove\n *\n * @return {boolean}\n * The function that was removed or undef\n */\nconst removeHook = function (type, fn) {\n const index = hooks(type).indexOf(fn);\n if (index <= -1) {\n return false;\n }\n hooks_[type] = hooks_[type].slice();\n hooks_[type].splice(index, 1);\n return true;\n};\n\n/**\n * Add a function hook that will only run once to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\nconst hookOnce = function (type, fn) {\n hooks(type, [].concat(fn).map(original => {\n const wrapper = (...args) => {\n removeHook(type, wrapper);\n return original(...args);\n };\n return wrapper;\n }));\n};\n\n/**\n * @file fullscreen-api.js\n * @module fullscreen-api\n */\n\n/**\n * Store the browser-specific methods for the fullscreen API.\n *\n * @type {Object}\n * @see [Specification]{@link https://fullscreen.spec.whatwg.org}\n * @see [Map Approach From Screenfull.js]{@link https://github.com/sindresorhus/screenfull.js}\n */\nconst FullscreenApi = {\n prefixed: true\n};\n\n// browser API methods\nconst apiMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror', 'fullscreen'],\n// WebKit\n['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror', '-webkit-full-screen']];\nconst specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document$1) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (let i = 0; i < browserApi.length; i++) {\n FullscreenApi[specApi[i]] = browserApi[i];\n }\n FullscreenApi.prefixed = browserApi[0] !== specApi[0];\n}\n\n/**\n * @file create-logger.js\n * @module create-logger\n */\n\n// This is the private tracking variable for the logging history.\nlet history = [];\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @private\n * @param {string} name\n * The name of the console method to use.\n *\n * @param {Object} log\n * The arguments to be passed to the matching console method.\n *\n * @param {string} [styles]\n * styles for name\n */\nconst LogByTypeFactory = (name, log, styles) => (type, level, args) => {\n const lvl = log.levels[level];\n const lvlRegExp = new RegExp(`^(${lvl})$`);\n let resultName = name;\n if (type !== 'log') {\n // Add the type to the front of the message when it's not \"log\".\n args.unshift(type.toUpperCase() + ':');\n }\n if (styles) {\n resultName = `%c${name}`;\n args.unshift(styles);\n }\n\n // Add console prefix after adding to history.\n args.unshift(resultName + ':');\n\n // Add a clone of the args at this point to history.\n if (history) {\n history.push([].concat(args));\n\n // only store 1000 history entries\n const splice = history.length - 1000;\n history.splice(0, splice > 0 ? splice : 0);\n }\n\n // If there's no console then don't try to output messages, but they will\n // still be stored in history.\n if (!window$1.console) {\n return;\n }\n\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n // when the module is executed.\n let fn = window$1.console[type];\n if (!fn && type === 'debug') {\n // Certain browsers don't have support for console.debug. For those, we\n // should default to the closest comparable log.\n fn = window$1.console.info || window$1.console.log;\n }\n\n // Bail out if there's no console or if this type is not allowed by the\n // current logging level.\n if (!fn || !lvl || !lvlRegExp.test(type)) {\n return;\n }\n fn[Array.isArray(args) ? 'apply' : 'call'](window$1.console, args);\n};\nfunction createLogger$1(name, delimiter = ':', styles = '') {\n // This is the private tracking variable for logging level.\n let level = 'info';\n\n // the curried logByType bound to the specific log and history\n let logByType;\n\n /**\n * Logs plain debug messages. Similar to `console.log`.\n *\n * Due to [limitations](https://github.com/jsdoc3/jsdoc/issues/955#issuecomment-313829149)\n * of our JSDoc template, we cannot properly document this as both a function\n * and a namespace, so its function signature is documented here.\n *\n * #### Arguments\n * ##### *args\n * *[]\n *\n * Any combination of values that could be passed to `console.log()`.\n *\n * #### Return Value\n *\n * `undefined`\n *\n * @namespace\n * @param {...*} args\n * One or more messages or objects that should be logged.\n */\n function log(...args) {\n logByType('log', level, args);\n }\n\n // This is the logByType helper that the logging methods below use\n logByType = LogByTypeFactory(name, log, styles);\n\n /**\n * Create a new subLogger which chains the old name to the new name.\n *\n * For example, doing `mylogger = videojs.log.createLogger('player')` and then using that logger will log the following:\n * ```js\n * mylogger('foo');\n * // > VIDEOJS: player: foo\n * ```\n *\n * @param {string} subName\n * The name to add call the new logger\n * @param {string} [subDelimiter]\n * Optional delimiter\n * @param {string} [subStyles]\n * Optional styles\n * @return {Object}\n */\n log.createLogger = (subName, subDelimiter, subStyles) => {\n const resultDelimiter = subDelimiter !== undefined ? subDelimiter : delimiter;\n const resultStyles = subStyles !== undefined ? subStyles : styles;\n const resultName = `${name} ${resultDelimiter} ${subName}`;\n return createLogger$1(resultName, resultDelimiter, resultStyles);\n };\n\n /**\n * Create a new logger.\n *\n * @param {string} newName\n * The name for the new logger\n * @param {string} [newDelimiter]\n * Optional delimiter\n * @param {string} [newStyles]\n * Optional styles\n * @return {Object}\n */\n log.createNewLogger = (newName, newDelimiter, newStyles) => {\n return createLogger$1(newName, newDelimiter, newStyles);\n };\n\n /**\n * Enumeration of available logging levels, where the keys are the level names\n * and the values are `|`-separated strings containing logging methods allowed\n * in that logging level. These strings are used to create a regular expression\n * matching the function name being called.\n *\n * Levels provided by Video.js are:\n *\n * - `off`: Matches no calls. Any value that can be cast to `false` will have\n * this effect. The most restrictive.\n * - `all`: Matches only Video.js-provided functions (`debug`, `log`,\n * `log.warn`, and `log.error`).\n * - `debug`: Matches `log.debug`, `log`, `log.warn`, and `log.error` calls.\n * - `info` (default): Matches `log`, `log.warn`, and `log.error` calls.\n * - `warn`: Matches `log.warn` and `log.error` calls.\n * - `error`: Matches only `log.error` calls.\n *\n * @type {Object}\n */\n log.levels = {\n all: 'debug|log|warn|error',\n off: '',\n debug: 'debug|log|warn|error',\n info: 'log|warn|error',\n warn: 'warn|error',\n error: 'error',\n DEFAULT: level\n };\n\n /**\n * Get or set the current logging level.\n *\n * If a string matching a key from {@link module:log.levels} is provided, acts\n * as a setter.\n *\n * @param {'all'|'debug'|'info'|'warn'|'error'|'off'} [lvl]\n * Pass a valid level to set a new logging level.\n *\n * @return {string}\n * The current logging level.\n */\n log.level = lvl => {\n if (typeof lvl === 'string') {\n if (!log.levels.hasOwnProperty(lvl)) {\n throw new Error(`\"${lvl}\" in not a valid log level`);\n }\n level = lvl;\n }\n return level;\n };\n\n /**\n * Returns an array containing everything that has been logged to the history.\n *\n * This array is a shallow clone of the internal history record. However, its\n * contents are _not_ cloned; so, mutating objects inside this array will\n * mutate them in history.\n *\n * @return {Array}\n */\n log.history = () => history ? [].concat(history) : [];\n\n /**\n * Allows you to filter the history by the given logger name\n *\n * @param {string} fname\n * The name to filter by\n *\n * @return {Array}\n * The filtered list to return\n */\n log.history.filter = fname => {\n return (history || []).filter(historyItem => {\n // if the first item in each historyItem includes `fname`, then it's a match\n return new RegExp(`.*${fname}.*`).test(historyItem[0]);\n });\n };\n\n /**\n * Clears the internal history tracking, but does not prevent further history\n * tracking.\n */\n log.history.clear = () => {\n if (history) {\n history.length = 0;\n }\n };\n\n /**\n * Disable history tracking if it is currently enabled.\n */\n log.history.disable = () => {\n if (history !== null) {\n history.length = 0;\n history = null;\n }\n };\n\n /**\n * Enable history tracking if it is currently disabled.\n */\n log.history.enable = () => {\n if (history === null) {\n history = [];\n }\n };\n\n /**\n * Logs error messages. Similar to `console.error`.\n *\n * @param {...*} args\n * One or more messages or objects that should be logged as an error\n */\n log.error = (...args) => logByType('error', level, args);\n\n /**\n * Logs warning messages. Similar to `console.warn`.\n *\n * @param {...*} args\n * One or more messages or objects that should be logged as a warning.\n */\n log.warn = (...args) => logByType('warn', level, args);\n\n /**\n * Logs debug messages. Similar to `console.debug`, but may also act as a comparable\n * log if `console.debug` is not available\n *\n * @param {...*} args\n * One or more messages or objects that should be logged as debug.\n */\n log.debug = (...args) => logByType('debug', level, args);\n return log;\n}\n\n/**\n * @file log.js\n * @module log\n */\nconst log$1 = createLogger$1('VIDEOJS');\nconst createLogger = log$1.createLogger;\n\n/**\n * @file obj.js\n * @module obj\n */\n\n/**\n * @callback obj:EachCallback\n *\n * @param {*} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n */\n\n/**\n * @callback obj:ReduceCallback\n *\n * @param {*} accum\n * The value that is accumulating over the reduce loop.\n *\n * @param {*} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n *\n * @return {*}\n * The new accumulated value.\n */\nconst toString = Object.prototype.toString;\n\n/**\n * Get the keys of an Object\n *\n * @param {Object}\n * The Object to get the keys from\n *\n * @return {string[]}\n * An array of the keys from the object. Returns an empty array if the\n * object passed in was invalid or had no keys.\n *\n * @private\n */\nconst keys = function (object) {\n return isObject(object) ? Object.keys(object) : [];\n};\n\n/**\n * Array-like iteration for objects.\n *\n * @param {Object} object\n * The object to iterate over\n *\n * @param {obj:EachCallback} fn\n * The callback function which is called for each key in the object.\n */\nfunction each(object, fn) {\n keys(object).forEach(key => fn(object[key], key));\n}\n\n/**\n * Array-like reduce for objects.\n *\n * @param {Object} object\n * The Object that you want to reduce.\n *\n * @param {Function} fn\n * A callback function which is called for each key in the object. It\n * receives the accumulated value and the per-iteration value and key\n * as arguments.\n *\n * @param {*} [initial = 0]\n * Starting value\n *\n * @return {*}\n * The final accumulated value.\n */\nfunction reduce(object, fn, initial = 0) {\n return keys(object).reduce((accum, key) => fn(accum, object[key], key), initial);\n}\n\n/**\n * Returns whether a value is an object of any kind - including DOM nodes,\n * arrays, regular expressions, etc. Not functions, though.\n *\n * This avoids the gotcha where using `typeof` on a `null` value\n * results in `'object'`.\n *\n * @param {Object} value\n * @return {boolean}\n */\nfunction isObject(value) {\n return !!value && typeof value === 'object';\n}\n\n/**\n * Returns whether an object appears to be a \"plain\" object - that is, a\n * direct instance of `Object`.\n *\n * @param {Object} value\n * @return {boolean}\n */\nfunction isPlain(value) {\n return isObject(value) && toString.call(value) === '[object Object]' && value.constructor === Object;\n}\n\n/**\n * Merge two objects recursively.\n *\n * Performs a deep merge like\n * {@link https://lodash.com/docs/4.17.10#merge|lodash.merge}, but only merges\n * plain objects (not arrays, elements, or anything else).\n *\n * Non-plain object values will be copied directly from the right-most\n * argument.\n *\n * @param {Object[]} sources\n * One or more objects to merge into a new object.\n *\n * @return {Object}\n * A new object that is the merged result of all sources.\n */\nfunction merge$1(...sources) {\n const result = {};\n sources.forEach(source => {\n if (!source) {\n return;\n }\n each(source, (value, key) => {\n if (!isPlain(value)) {\n result[key] = value;\n return;\n }\n if (!isPlain(result[key])) {\n result[key] = {};\n }\n result[key] = merge$1(result[key], value);\n });\n });\n return result;\n}\n\n/**\n * Returns an array of values for a given object\n *\n * @param {Object} source - target object\n * @return {Array} - object values\n */\nfunction values(source = {}) {\n const result = [];\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n const value = source[key];\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * Object.defineProperty but \"lazy\", which means that the value is only set after\n * it is retrieved the first time, rather than being set right away.\n *\n * @param {Object} obj the object to set the property on\n * @param {string} key the key for the property to set\n * @param {Function} getValue the function used to get the value when it is needed.\n * @param {boolean} setter whether a setter should be allowed or not\n */\nfunction defineLazyProperty(obj, key, getValue, setter = true) {\n const set = value => Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n writable: true\n });\n const options = {\n configurable: true,\n enumerable: true,\n get() {\n const value = getValue();\n set(value);\n return value;\n }\n };\n if (setter) {\n options.set = set;\n }\n return Object.defineProperty(obj, key, options);\n}\n\nvar Obj = /*#__PURE__*/Object.freeze({\n __proto__: null,\n each: each,\n reduce: reduce,\n isObject: isObject,\n isPlain: isPlain,\n merge: merge$1,\n values: values,\n defineLazyProperty: defineLazyProperty\n});\n\n/**\n * @file browser.js\n * @module browser\n */\n\n/**\n * Whether or not this device is an iPod.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_IPOD = false;\n\n/**\n * The detected iOS version - or `null`.\n *\n * @static\n * @type {string|null}\n */\nlet IOS_VERSION = null;\n\n/**\n * Whether or not this is an Android device.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_ANDROID = false;\n\n/**\n * The detected Android version - or `null` if not Android or indeterminable.\n *\n * @static\n * @type {number|string|null}\n */\nlet ANDROID_VERSION;\n\n/**\n * Whether or not this is Mozilla Firefox.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_FIREFOX = false;\n\n/**\n * Whether or not this is Microsoft Edge.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_EDGE = false;\n\n/**\n * Whether or not this is any Chromium Browser\n *\n * @static\n * @type {Boolean}\n */\nlet IS_CHROMIUM = false;\n\n/**\n * Whether or not this is any Chromium browser that is not Edge.\n *\n * This will also be `true` for Chrome on iOS, which will have different support\n * as it is actually Safari under the hood.\n *\n * Deprecated, as the behaviour to not match Edge was to prevent Legacy Edge's UA matching.\n * IS_CHROMIUM should be used instead.\n * \"Chromium but not Edge\" could be explicitly tested with IS_CHROMIUM && !IS_EDGE\n *\n * @static\n * @deprecated\n * @type {Boolean}\n */\nlet IS_CHROME = false;\n\n/**\n * The detected Chromium version - or `null`.\n *\n * @static\n * @type {number|null}\n */\nlet CHROMIUM_VERSION = null;\n\n/**\n * The detected Google Chrome version - or `null`.\n * This has always been the _Chromium_ version, i.e. would return on Chromium Edge.\n * Deprecated, use CHROMIUM_VERSION instead.\n *\n * @static\n * @deprecated\n * @type {number|null}\n */\nlet CHROME_VERSION = null;\n\n/**\n * Whether or not this is a Chromecast receiver application.\n *\n * @static\n * @type {Boolean}\n */\nconst IS_CHROMECAST_RECEIVER = Boolean(window$1.cast && window$1.cast.framework && window$1.cast.framework.CastReceiverContext);\n\n/**\n * The detected Internet Explorer version - or `null`.\n *\n * @static\n * @deprecated\n * @type {number|null}\n */\nlet IE_VERSION = null;\n\n/**\n * Whether or not this is desktop Safari.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_SAFARI = false;\n\n/**\n * Whether or not this is a Windows machine.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_WINDOWS = false;\n\n/**\n * Whether or not this device is an iPad.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_IPAD = false;\n\n/**\n * Whether or not this device is an iPhone.\n *\n * @static\n * @type {Boolean}\n */\n// The Facebook app's UIWebView identifies as both an iPhone and iPad, so\n// to identify iPhones, we need to exclude iPads.\n// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/\nlet IS_IPHONE = false;\n\n/**\n * Whether or not this is a Tizen device.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_TIZEN = false;\n\n/**\n * Whether or not this is a WebOS device.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_WEBOS = false;\n\n/**\n * Whether or not this is a Smart TV (Tizen or WebOS) device.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_SMART_TV = false;\n\n/**\n * Whether or not this device is touch-enabled.\n *\n * @static\n * @const\n * @type {Boolean}\n */\nconst TOUCH_ENABLED = Boolean(isReal() && ('ontouchstart' in window$1 || window$1.navigator.maxTouchPoints || window$1.DocumentTouch && window$1.document instanceof window$1.DocumentTouch));\nconst UAD = window$1.navigator && window$1.navigator.userAgentData;\nif (UAD && UAD.platform && UAD.brands) {\n // If userAgentData is present, use it instead of userAgent to avoid warnings\n // Currently only implemented on Chromium\n // userAgentData does not expose Android version, so ANDROID_VERSION remains `null`\n\n IS_ANDROID = UAD.platform === 'Android';\n IS_EDGE = Boolean(UAD.brands.find(b => b.brand === 'Microsoft Edge'));\n IS_CHROMIUM = Boolean(UAD.brands.find(b => b.brand === 'Chromium'));\n IS_CHROME = !IS_EDGE && IS_CHROMIUM;\n CHROMIUM_VERSION = CHROME_VERSION = (UAD.brands.find(b => b.brand === 'Chromium') || {}).version || null;\n IS_WINDOWS = UAD.platform === 'Windows';\n}\n\n// If the browser is not Chromium, either userAgentData is not present which could be an old Chromium browser,\n// or it's a browser that has added userAgentData since that we don't have tests for yet. In either case,\n// the checks need to be made agiainst the regular userAgent string.\nif (!IS_CHROMIUM) {\n const USER_AGENT = window$1.navigator && window$1.navigator.userAgent || '';\n IS_IPOD = /iPod/i.test(USER_AGENT);\n IOS_VERSION = function () {\n const match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) {\n return match[1];\n }\n return null;\n }();\n IS_ANDROID = /Android/i.test(USER_AGENT);\n ANDROID_VERSION = function () {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n const match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i);\n if (!match) {\n return null;\n }\n const major = match[1] && parseFloat(match[1]);\n const minor = match[2] && parseFloat(match[2]);\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n }\n return null;\n }();\n IS_FIREFOX = /Firefox/i.test(USER_AGENT);\n IS_EDGE = /Edg/i.test(USER_AGENT);\n IS_CHROMIUM = /Chrome/i.test(USER_AGENT) || /CriOS/i.test(USER_AGENT);\n IS_CHROME = !IS_EDGE && IS_CHROMIUM;\n CHROMIUM_VERSION = CHROME_VERSION = function () {\n const match = USER_AGENT.match(/(Chrome|CriOS)\\/(\\d+)/);\n if (match && match[2]) {\n return parseFloat(match[2]);\n }\n return null;\n }();\n IE_VERSION = function () {\n const result = /MSIE\\s(\\d+)\\.\\d/.exec(USER_AGENT);\n let version = result && parseFloat(result[1]);\n if (!version && /Trident\\/7.0/i.test(USER_AGENT) && /rv:11.0/.test(USER_AGENT)) {\n // IE 11 has a different user agent string than other IE versions\n version = 11.0;\n }\n return version;\n }();\n IS_TIZEN = /Tizen/i.test(USER_AGENT);\n IS_WEBOS = /Web0S/i.test(USER_AGENT);\n IS_SMART_TV = IS_TIZEN || IS_WEBOS;\n IS_SAFARI = /Safari/i.test(USER_AGENT) && !IS_CHROME && !IS_ANDROID && !IS_EDGE && !IS_SMART_TV;\n IS_WINDOWS = /Windows/i.test(USER_AGENT);\n IS_IPAD = /iPad/i.test(USER_AGENT) || IS_SAFARI && TOUCH_ENABLED && !/iPhone/i.test(USER_AGENT);\n IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\n}\n\n/**\n * Whether or not this is an iOS device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\nconst IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\n/**\n * Whether or not this is any flavor of Safari - including iOS.\n *\n * @static\n * @const\n * @type {Boolean}\n */\nconst IS_ANY_SAFARI = (IS_SAFARI || IS_IOS) && !IS_CHROME;\n\nvar browser = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get IS_IPOD () { return IS_IPOD; },\n get IOS_VERSION () { return IOS_VERSION; },\n get IS_ANDROID () { return IS_ANDROID; },\n get ANDROID_VERSION () { return ANDROID_VERSION; },\n get IS_FIREFOX () { return IS_FIREFOX; },\n get IS_EDGE () { return IS_EDGE; },\n get IS_CHROMIUM () { return IS_CHROMIUM; },\n get IS_CHROME () { return IS_CHROME; },\n get CHROMIUM_VERSION () { return CHROMIUM_VERSION; },\n get CHROME_VERSION () { return CHROME_VERSION; },\n IS_CHROMECAST_RECEIVER: IS_CHROMECAST_RECEIVER,\n get IE_VERSION () { return IE_VERSION; },\n get IS_SAFARI () { return IS_SAFARI; },\n get IS_WINDOWS () { return IS_WINDOWS; },\n get IS_IPAD () { return IS_IPAD; },\n get IS_IPHONE () { return IS_IPHONE; },\n get IS_TIZEN () { return IS_TIZEN; },\n get IS_WEBOS () { return IS_WEBOS; },\n get IS_SMART_TV () { return IS_SMART_TV; },\n TOUCH_ENABLED: TOUCH_ENABLED,\n IS_IOS: IS_IOS,\n IS_ANY_SAFARI: IS_ANY_SAFARI\n});\n\n/**\n * @file dom.js\n * @module dom\n */\n\n/**\n * Detect if a value is a string with any non-whitespace characters.\n *\n * @private\n * @param {string} str\n * The string to check\n *\n * @return {boolean}\n * Will be `true` if the string is non-blank, `false` otherwise.\n *\n */\nfunction isNonBlankString(str) {\n // we use str.trim as it will trim any whitespace characters\n // from the front or back of non-whitespace characters. aka\n // Any string that contains non-whitespace characters will\n // still contain them after `trim` but whitespace only strings\n // will have a length of 0, failing this check.\n return typeof str === 'string' && Boolean(str.trim());\n}\n\n/**\n * Throws an error if the passed string has whitespace. This is used by\n * class methods to be relatively consistent with the classList API.\n *\n * @private\n * @param {string} str\n * The string to check for whitespace.\n *\n * @throws {Error}\n * Throws an error if there is whitespace in the string.\n */\nfunction throwIfWhitespace(str) {\n // str.indexOf instead of regex because str.indexOf is faster performance wise.\n if (str.indexOf(' ') >= 0) {\n throw new Error('class has illegal whitespace characters');\n }\n}\n\n/**\n * Whether the current DOM interface appears to be real (i.e. not simulated).\n *\n * @return {boolean}\n * Will be `true` if the DOM appears to be real, `false` otherwise.\n */\nfunction isReal() {\n // Both document and window will never be undefined thanks to `global`.\n return document$1 === window$1.document;\n}\n\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @param {*} value\n * The value to check.\n *\n * @return {boolean}\n * Will be `true` if the value is a DOM element, `false` otherwise.\n */\nfunction isEl(value) {\n return isObject(value) && value.nodeType === 1;\n}\n\n/**\n * Determines if the current DOM is embedded in an iframe.\n *\n * @return {boolean}\n * Will be `true` if the DOM is embedded in an iframe, `false`\n * otherwise.\n */\nfunction isInFrame() {\n // We need a try/catch here because Safari will throw errors when attempting\n // to get either `parent` or `self`\n try {\n return window$1.parent !== window$1.self;\n } catch (x) {\n return true;\n }\n}\n\n/**\n * Creates functions to query the DOM using a given method.\n *\n * @private\n * @param {string} method\n * The method to create the query with.\n *\n * @return {Function}\n * The query method\n */\nfunction createQuerier(method) {\n return function (selector, context) {\n if (!isNonBlankString(selector)) {\n return document$1[method](null);\n }\n if (isNonBlankString(context)) {\n context = document$1.querySelector(context);\n }\n const ctx = isEl(context) ? context : document$1;\n return ctx[method] && ctx[method](selector);\n };\n}\n\n/**\n * Creates an element and applies properties, attributes, and inserts content.\n *\n * @param {string} [tagName='div']\n * Name of tag to be created.\n *\n * @param {Object} [properties={}]\n * Element properties to be applied.\n *\n * @param {Object} [attributes={}]\n * Element attributes to be applied.\n *\n * @param {ContentDescriptor} [content]\n * A content descriptor object.\n *\n * @return {Element}\n * The element that was created.\n */\nfunction createEl(tagName = 'div', properties = {}, attributes = {}, content) {\n const el = document$1.createElement(tagName);\n Object.getOwnPropertyNames(properties).forEach(function (propName) {\n const val = properties[propName];\n\n // Handle textContent since it's not supported everywhere and we have a\n // method for it.\n if (propName === 'textContent') {\n textContent(el, val);\n } else if (el[propName] !== val || propName === 'tabIndex') {\n el[propName] = val;\n }\n });\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n el.setAttribute(attrName, attributes[attrName]);\n });\n if (content) {\n appendContent(el, content);\n }\n return el;\n}\n\n/**\n * Injects text into an element, replacing any existing contents entirely.\n *\n * @param {HTMLElement} el\n * The element to add text content into\n *\n * @param {string} text\n * The text content to add.\n *\n * @return {Element}\n * The element with added text content.\n */\nfunction textContent(el, text) {\n if (typeof el.textContent === 'undefined') {\n el.innerText = text;\n } else {\n el.textContent = text;\n }\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child\n * Element to insert\n *\n * @param {Element} parent\n * Element to insert child into\n */\nfunction prependTo(child, parent) {\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Check if an element has a class name.\n *\n * @param {Element} element\n * Element to check\n *\n * @param {string} classToCheck\n * Class name to check for\n *\n * @return {boolean}\n * Will be `true` if the element has a class, `false` otherwise.\n *\n * @throws {Error}\n * Throws an error if `classToCheck` has white space.\n */\nfunction hasClass(element, classToCheck) {\n throwIfWhitespace(classToCheck);\n return element.classList.contains(classToCheck);\n}\n\n/**\n * Add a class name to an element.\n *\n * @param {Element} element\n * Element to add class name to.\n *\n * @param {...string} classesToAdd\n * One or more class name to add.\n *\n * @return {Element}\n * The DOM element with the added class name.\n */\nfunction addClass(element, ...classesToAdd) {\n element.classList.add(...classesToAdd.reduce((prev, current) => prev.concat(current.split(/\\s+/)), []));\n return element;\n}\n\n/**\n * Remove a class name from an element.\n *\n * @param {Element} element\n * Element to remove a class name from.\n *\n * @param {...string} classesToRemove\n * One or more class name to remove.\n *\n * @return {Element}\n * The DOM element with class name removed.\n */\nfunction removeClass(element, ...classesToRemove) {\n // Protect in case the player gets disposed\n if (!element) {\n log$1.warn(\"removeClass was called with an element that doesn't exist\");\n return null;\n }\n element.classList.remove(...classesToRemove.reduce((prev, current) => prev.concat(current.split(/\\s+/)), []));\n return element;\n}\n\n/**\n * The callback definition for toggleClass.\n *\n * @callback PredicateCallback\n * @param {Element} element\n * The DOM element of the Component.\n *\n * @param {string} classToToggle\n * The `className` that wants to be toggled\n *\n * @return {boolean|undefined}\n * If `true` is returned, the `classToToggle` will be added to the\n * `element`, but not removed. If `false`, the `classToToggle` will be removed from\n * the `element`, but not added. If `undefined`, the callback will be ignored.\n *\n */\n\n/**\n * Adds or removes a class name to/from an element depending on an optional\n * condition or the presence/absence of the class name.\n *\n * @param {Element} element\n * The element to toggle a class name on.\n *\n * @param {string} classToToggle\n * The class that should be toggled.\n *\n * @param {boolean|PredicateCallback} [predicate]\n * See the return value for {@link module:dom~PredicateCallback}\n *\n * @return {Element}\n * The element with a class that has been toggled.\n */\nfunction toggleClass(element, classToToggle, predicate) {\n if (typeof predicate === 'function') {\n predicate = predicate(element, classToToggle);\n }\n if (typeof predicate !== 'boolean') {\n predicate = undefined;\n }\n classToToggle.split(/\\s+/).forEach(className => element.classList.toggle(className, predicate));\n return element;\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el\n * Element to add attributes to.\n *\n * @param {Object} [attributes]\n * Attributes to be applied.\n */\nfunction setAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n const attrValue = attributes[attrName];\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, attrValue === true ? '' : attrValue);\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag.\n *\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute.\n *\n * @param {Element} tag\n * Element from which to get tag attributes.\n *\n * @return {Object}\n * All attributes of the element. Boolean attributes will be `true` or\n * `false`, others will be strings.\n */\nfunction getAttributes(tag) {\n const obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but not all browsers\n // and not all tags know about these attributes, so, we still want to check them manually\n const knownBooleans = ['autoplay', 'controls', 'playsinline', 'loop', 'muted', 'default', 'defaultMuted'];\n if (tag && tag.attributes && tag.attributes.length > 0) {\n const attrs = tag.attributes;\n for (let i = attrs.length - 1; i >= 0; i--) {\n const attrName = attrs[i].name;\n /** @type {boolean|string} */\n let attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (knownBooleans.includes(attrName)) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = attrVal !== null ? true : false;\n }\n obj[attrName] = attrVal;\n }\n }\n return obj;\n}\n\n/**\n * Get the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to get the value of.\n *\n * @return {string}\n * The value of the attribute.\n */\nfunction getAttribute(el, attribute) {\n return el.getAttribute(attribute);\n}\n\n/**\n * Set the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n */\nfunction setAttribute(el, attribute, value) {\n el.setAttribute(attribute, value);\n}\n\n/**\n * Remove an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to remove.\n */\nfunction removeAttribute(el, attribute) {\n el.removeAttribute(attribute);\n}\n\n/**\n * Attempt to block the ability to select text.\n */\nfunction blockTextSelection() {\n document$1.body.focus();\n document$1.onselectstart = function () {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking.\n */\nfunction unblockTextSelection() {\n document$1.onselectstart = function () {\n return true;\n };\n}\n\n/**\n * Identical to the native `getBoundingClientRect` function, but ensures that\n * the method is supported at all (it is in all browsers we claim to support)\n * and that the element is in the DOM before continuing.\n *\n * This wrapper function also shims properties which are not provided by some\n * older browsers (namely, IE8).\n *\n * Additionally, some browsers do not support adding properties to a\n * `ClientRect`/`DOMRect` object; so, we shallow-copy it with the standard\n * properties (except `x` and `y` which are not widely supported). This helps\n * avoid implementations where keys are non-enumerable.\n *\n * @param {Element} el\n * Element whose `ClientRect` we want to calculate.\n *\n * @return {Object|undefined}\n * Always returns a plain object - or `undefined` if it cannot.\n */\nfunction getBoundingClientRect(el) {\n if (el && el.getBoundingClientRect && el.parentNode) {\n const rect = el.getBoundingClientRect();\n const result = {};\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(k => {\n if (rect[k] !== undefined) {\n result[k] = rect[k];\n }\n });\n if (!result.height) {\n result.height = parseFloat(computedStyle(el, 'height'));\n }\n if (!result.width) {\n result.width = parseFloat(computedStyle(el, 'width'));\n }\n return result;\n }\n}\n\n/**\n * Represents the position of a DOM element on the page.\n *\n * @typedef {Object} module:dom~Position\n *\n * @property {number} left\n * Pixels to the left.\n *\n * @property {number} top\n * Pixels from the top.\n */\n\n/**\n * Get the position of an element in the DOM.\n *\n * Uses `getBoundingClientRect` technique from John Resig.\n *\n * @see http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el\n * Element from which to get offset.\n *\n * @return {module:dom~Position}\n * The position of the element that was passed in.\n */\nfunction findPosition(el) {\n if (!el || el && !el.offsetParent) {\n return {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n };\n }\n const width = el.offsetWidth;\n const height = el.offsetHeight;\n let left = 0;\n let top = 0;\n while (el.offsetParent && el !== document$1[FullscreenApi.fullscreenElement]) {\n left += el.offsetLeft;\n top += el.offsetTop;\n el = el.offsetParent;\n }\n return {\n left,\n top,\n width,\n height\n };\n}\n\n/**\n * Represents x and y coordinates for a DOM element or mouse pointer.\n *\n * @typedef {Object} module:dom~Coordinates\n *\n * @property {number} x\n * x coordinate in pixels\n *\n * @property {number} y\n * y coordinate in pixels\n */\n\n/**\n * Get the pointer position within an element.\n *\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el\n * Element on which to get the pointer position on.\n *\n * @param {Event} event\n * Event object.\n *\n * @return {module:dom~Coordinates}\n * A coordinates object corresponding to the mouse position.\n *\n */\nfunction getPointerPosition(el, event) {\n const translated = {\n x: 0,\n y: 0\n };\n if (IS_IOS) {\n let item = el;\n while (item && item.nodeName.toLowerCase() !== 'html') {\n const transform = computedStyle(item, 'transform');\n if (/^matrix/.test(transform)) {\n const values = transform.slice(7, -1).split(/,\\s/).map(Number);\n translated.x += values[4];\n translated.y += values[5];\n } else if (/^matrix3d/.test(transform)) {\n const values = transform.slice(9, -1).split(/,\\s/).map(Number);\n translated.x += values[12];\n translated.y += values[13];\n }\n if (item.assignedSlot && item.assignedSlot.parentElement && window$1.WebKitCSSMatrix) {\n const transformValue = window$1.getComputedStyle(item.assignedSlot.parentElement).transform;\n const matrix = new window$1.WebKitCSSMatrix(transformValue);\n translated.x += matrix.m41;\n translated.y += matrix.m42;\n }\n item = item.parentNode || item.host;\n }\n }\n const position = {};\n const boxTarget = findPosition(event.target);\n const box = findPosition(el);\n const boxW = box.width;\n const boxH = box.height;\n let offsetY = event.offsetY - (box.top - boxTarget.top);\n let offsetX = event.offsetX - (box.left - boxTarget.left);\n if (event.changedTouches) {\n offsetX = event.changedTouches[0].pageX - box.left;\n offsetY = event.changedTouches[0].pageY + box.top;\n if (IS_IOS) {\n offsetX -= translated.x;\n offsetY -= translated.y;\n }\n }\n position.y = 1 - Math.max(0, Math.min(1, offsetY / boxH));\n position.x = Math.max(0, Math.min(1, offsetX / boxW));\n return position;\n}\n\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @param {*} value\n * Check if this value is a text node.\n *\n * @return {boolean}\n * Will be `true` if the value is a text node, `false` otherwise.\n */\nfunction isTextNode(value) {\n return isObject(value) && value.nodeType === 3;\n}\n\n/**\n * Empties the contents of an element.\n *\n * @param {Element} el\n * The element to empty children from\n *\n * @return {Element}\n * The element with no children\n */\nfunction emptyEl(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n return el;\n}\n\n/**\n * This is a mixed value that describes content to be injected into the DOM\n * via some method. It can be of the following types:\n *\n * Type | Description\n * -----------|-------------\n * `string` | The value will be normalized into a text node.\n * `Element` | The value will be accepted as-is.\n * `Text` | A TextNode. The value will be accepted as-is.\n * `Array` | A one-dimensional array of strings, elements, text nodes, or functions. These functions should return a string, element, or text node (any other return value, like an array, will be ignored).\n * `Function` | A function, which is expected to return a string, element, text node, or array - any of the other possible values described above. This means that a content descriptor could be a function that returns an array of functions, but those second-level functions must return strings, elements, or text nodes.\n *\n * @typedef {string|Element|Text|Array|Function} ContentDescriptor\n */\n\n/**\n * Normalizes content for eventual insertion into the DOM.\n *\n * This allows a wide range of content definition methods, but helps protect\n * from falling into the trap of simply writing to `innerHTML`, which could\n * be an XSS concern.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * @param {ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Array}\n * All of the content that was passed in, normalized to an array of\n * elements or text nodes.\n */\nfunction normalizeContent(content) {\n // First, invoke content if it is a function. If it produces an array,\n // that needs to happen before normalization.\n if (typeof content === 'function') {\n content = content();\n }\n\n // Next up, normalize to an array, so one or many items can be normalized,\n // filtered, and returned.\n return (Array.isArray(content) ? content : [content]).map(value => {\n // First, invoke value if it is a function to produce a new value,\n // which will be subsequently normalized to a Node of some kind.\n if (typeof value === 'function') {\n value = value();\n }\n if (isEl(value) || isTextNode(value)) {\n return value;\n }\n if (typeof value === 'string' && /\\S/.test(value)) {\n return document$1.createTextNode(value);\n }\n }).filter(value => value);\n}\n\n/**\n * Normalizes and appends content to an element.\n *\n * @param {Element} el\n * Element to append normalized content to.\n *\n * @param {ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with appended normalized content.\n */\nfunction appendContent(el, content) {\n normalizeContent(content).forEach(node => el.appendChild(node));\n return el;\n}\n\n/**\n * Normalizes and inserts content into an element; this is identical to\n * `appendContent()`, except it empties the element first.\n *\n * @param {Element} el\n * Element to insert normalized content into.\n *\n * @param {ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with inserted normalized content.\n */\nfunction insertContent(el, content) {\n return appendContent(emptyEl(el), content);\n}\n\n/**\n * Check if an event was a single left click.\n *\n * @param {MouseEvent} event\n * Event object.\n *\n * @return {boolean}\n * Will be `true` if a single left click, `false` otherwise.\n */\nfunction isSingleLeftClick(event) {\n // Note: if you create something draggable, be sure to\n // call it on both `mousedown` and `mousemove` event,\n // otherwise `mousedown` should be enough for a button\n\n if (event.button === undefined && event.buttons === undefined) {\n // Why do we need `buttons` ?\n // Because, middle mouse sometimes have this:\n // e.button === 0 and e.buttons === 4\n // Furthermore, we want to prevent combination click, something like\n // HOLD middlemouse then left click, that would be\n // e.button === 0, e.buttons === 5\n // just `button` is not gonna work\n\n // Alright, then what this block does ?\n // this is for chrome `simulate mobile devices`\n // I want to support this as well\n\n return true;\n }\n if (event.button === 0 && event.buttons === undefined) {\n // Touch screen, sometimes on some specific device, `buttons`\n // doesn't have anything (safari on ios, blackberry...)\n\n return true;\n }\n\n // `mouseup` event on a single left click has\n // `button` and `buttons` equal to 0\n if (event.type === 'mouseup' && event.button === 0 && event.buttons === 0) {\n return true;\n }\n\n // MacOS Sonoma trackpad when \"tap to click enabled\"\n if (event.type === 'mousedown' && event.button === 0 && event.buttons === 0) {\n return true;\n }\n if (event.button !== 0 || event.buttons !== 1) {\n // This is the reason we have those if else block above\n // if any special case we can catch and let it slide\n // we do it above, when get to here, this definitely\n // is-not-left-click\n\n return false;\n }\n return true;\n}\n\n/**\n * Finds a single DOM element matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {Element|null}\n * The element that was found or null.\n */\nconst $ = createQuerier('querySelector');\n\n/**\n * Finds a all DOM elements matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {NodeList}\n * A element list of elements that were found. Will be empty if none\n * were found.\n *\n */\nconst $$ = createQuerier('querySelectorAll');\n\n/**\n * A safe getComputedStyle.\n *\n * This is needed because in Firefox, if the player is loaded in an iframe with\n * `display:none`, then `getComputedStyle` returns `null`, so, we do a\n * null-check to make sure that the player doesn't break in these cases.\n *\n * @param {Element} el\n * The element you want the computed style of\n *\n * @param {string} prop\n * The property name you want\n *\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction computedStyle(el, prop) {\n if (!el || !prop) {\n return '';\n }\n if (typeof window$1.getComputedStyle === 'function') {\n let computedStyleValue;\n try {\n computedStyleValue = window$1.getComputedStyle(el);\n } catch (e) {\n return '';\n }\n return computedStyleValue ? computedStyleValue.getPropertyValue(prop) || computedStyleValue[prop] : '';\n }\n return '';\n}\n\n/**\n * Copy document style sheets to another window.\n *\n * @param {Window} win\n * The window element you want to copy the document style sheets to.\n *\n */\nfunction copyStyleSheetsToWindow(win) {\n [...document$1.styleSheets].forEach(styleSheet => {\n try {\n const cssRules = [...styleSheet.cssRules].map(rule => rule.cssText).join('');\n const style = document$1.createElement('style');\n style.textContent = cssRules;\n win.document.head.appendChild(style);\n } catch (e) {\n const link = document$1.createElement('link');\n link.rel = 'stylesheet';\n link.type = styleSheet.type;\n // For older Safari this has to be the string; on other browsers setting the MediaList works\n link.media = styleSheet.media.mediaText;\n link.href = styleSheet.href;\n win.document.head.appendChild(link);\n }\n });\n}\n\nvar Dom = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isReal: isReal,\n isEl: isEl,\n isInFrame: isInFrame,\n createEl: createEl,\n textContent: textContent,\n prependTo: prependTo,\n hasClass: hasClass,\n addClass: addClass,\n removeClass: removeClass,\n toggleClass: toggleClass,\n setAttributes: setAttributes,\n getAttributes: getAttributes,\n getAttribute: getAttribute,\n setAttribute: setAttribute,\n removeAttribute: removeAttribute,\n blockTextSelection: blockTextSelection,\n unblockTextSelection: unblockTextSelection,\n getBoundingClientRect: getBoundingClientRect,\n findPosition: findPosition,\n getPointerPosition: getPointerPosition,\n isTextNode: isTextNode,\n emptyEl: emptyEl,\n normalizeContent: normalizeContent,\n appendContent: appendContent,\n insertContent: insertContent,\n isSingleLeftClick: isSingleLeftClick,\n $: $,\n $$: $$,\n computedStyle: computedStyle,\n copyStyleSheetsToWindow: copyStyleSheetsToWindow\n});\n\n/**\n * @file setup.js - Functions for setting up a player without\n * user interaction based on the data-setup `attribute` of the video tag.\n *\n * @module setup\n */\nlet _windowLoaded = false;\nlet videojs$1;\n\n/**\n * Set up any tags that have a data-setup `attribute` when the player is started.\n */\nconst autoSetup = function () {\n if (videojs$1.options.autoSetup === false) {\n return;\n }\n const vids = Array.prototype.slice.call(document$1.getElementsByTagName('video'));\n const audios = Array.prototype.slice.call(document$1.getElementsByTagName('audio'));\n const divs = Array.prototype.slice.call(document$1.getElementsByTagName('video-js'));\n const mediaEls = vids.concat(audios, divs);\n\n // Check if any media elements exist\n if (mediaEls && mediaEls.length > 0) {\n for (let i = 0, e = mediaEls.length; i < e; i++) {\n const mediaEl = mediaEls[i];\n\n // Check if element exists, has getAttribute func.\n if (mediaEl && mediaEl.getAttribute) {\n // Make sure this player hasn't already been set up.\n if (mediaEl.player === undefined) {\n const options = mediaEl.getAttribute('data-setup');\n\n // Check if data-setup attr exists.\n // We only auto-setup if they've added the data-setup attr.\n if (options !== null) {\n // Create new video.js instance.\n videojs$1(mediaEl);\n }\n }\n\n // If getAttribute isn't defined, we need to wait for the DOM.\n } else {\n autoSetupTimeout(1);\n break;\n }\n }\n\n // No videos were found, so keep looping unless page is finished loading.\n } else if (!_windowLoaded) {\n autoSetupTimeout(1);\n }\n};\n\n/**\n * Wait until the page is loaded before running autoSetup. This will be called in\n * autoSetup if `hasLoaded` returns false.\n *\n * @param {number} wait\n * How long to wait in ms\n *\n * @param {module:videojs} [vjs]\n * The videojs library function\n */\nfunction autoSetupTimeout(wait, vjs) {\n // Protect against breakage in non-browser environments\n if (!isReal()) {\n return;\n }\n if (vjs) {\n videojs$1 = vjs;\n }\n window$1.setTimeout(autoSetup, wait);\n}\n\n/**\n * Used to set the internal tracking of window loaded state to true.\n *\n * @private\n */\nfunction setWindowLoaded() {\n _windowLoaded = true;\n window$1.removeEventListener('load', setWindowLoaded);\n}\nif (isReal()) {\n if (document$1.readyState === 'complete') {\n setWindowLoaded();\n } else {\n /**\n * Listen for the load event on window, and set _windowLoaded to true.\n *\n * We use a standard event listener here to avoid incrementing the GUID\n * before any players are created.\n *\n * @listens load\n */\n window$1.addEventListener('load', setWindowLoaded);\n }\n}\n\n/**\n * @file stylesheet.js\n * @module stylesheet\n */\n\n/**\n * Create a DOM style element given a className for it.\n *\n * @param {string} className\n * The className to add to the created style element.\n *\n * @return {Element}\n * The element that was created.\n */\nconst createStyleElement = function (className) {\n const style = document$1.createElement('style');\n style.className = className;\n return style;\n};\n\n/**\n * Add text to a DOM element.\n *\n * @param {Element} el\n * The Element to add text content to.\n *\n * @param {string} content\n * The text to add to the element.\n */\nconst setTextContent = function (el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n\n/**\n * @file dom-data.js\n * @module dom-data\n */\n\n/**\n * Element Data Store.\n *\n * Allows for binding data to an element without putting it directly on the\n * element. Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nvar DomData = new WeakMap();\n\n/**\n * @file guid.js\n * @module guid\n */\n\n// Default value for GUIDs. This allows us to reset the GUID counter in tests.\n//\n// The initial GUID is 3 because some users have come to rely on the first\n// default player ID ending up as `vjs_video_3`.\n//\n// See: https://github.com/videojs/video.js/pull/6216\nconst _initialGuid = 3;\n\n/**\n * Unique ID for an element or function\n *\n * @type {Number}\n */\nlet _guid = _initialGuid;\n\n/**\n * Get a unique auto-incrementing ID by number that has not been returned before.\n *\n * @return {number}\n * A new unique ID.\n */\nfunction newGUID() {\n return _guid++;\n}\n\n/**\n * @file events.js. An Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n *\n * @file events.js\n * @module events\n */\n\n/**\n * Clean up the listener cache and dispatchers\n *\n * @param {Element|Object} elem\n * Element to clean up\n *\n * @param {string} type\n * Type of event to clean up\n */\nfunction _cleanUpEvents(elem, type) {\n if (!DomData.has(elem)) {\n return;\n }\n const data = DomData.get(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n DomData.delete(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn\n * The event method we want to use.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string[]} types\n * Type of event to bind to.\n *\n * @param {Function} callback\n * Event listener.\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function (type) {\n // Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event\n * Event object to fix.\n *\n * @return {Object}\n * Fixed event object.\n */\nfunction fixEvent(event) {\n if (event.fixed_) {\n return event;\n }\n function returnTrue() {\n return true;\n }\n function returnFalse() {\n return false;\n }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped || !event.isImmediatePropagationStopped) {\n const old = event || window$1.event;\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n\n // TODO: Probably best to create an allowlist of event props\n const deprecatedProps = ['layerX', 'layerY', 'keyLocation', 'path', 'webkitMovementX', 'webkitMovementY', 'mozPressure', 'mozInputSource'];\n for (const key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n // Lighthouse complains if Event.path is copied\n if (!deprecatedProps.includes(key)) {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document$1;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX !== null && event.clientX !== undefined) {\n const doc = document$1.documentElement;\n const body = document$1.body;\n event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button !== null && event.button !== undefined) {\n // The following is disabled because it does not pass videojs-standard\n // and... yikes.\n /* eslint-disable */\n event.button = event.button & 1 ? 0 : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\n /* eslint-enable */\n }\n }\n event.fixed_ = true;\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Whether passive event listeners are supported\n */\nlet _supportsPassive;\nconst supportsPassive = function () {\n if (typeof _supportsPassive !== 'boolean') {\n _supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n get() {\n _supportsPassive = true;\n }\n });\n window$1.addEventListener('test', null, opts);\n window$1.removeEventListener('test', null, opts);\n } catch (e) {\n // disregard\n }\n }\n return _supportsPassive;\n};\n\n/**\n * Touch events Chrome expects to be passive\n */\nconst passiveEvents = ['touchstart', 'touchmove'];\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string|string[]} type\n * Type of event to bind to.\n *\n * @param {Function} fn\n * Event listener.\n */\nfunction on(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n if (!DomData.has(elem)) {\n DomData.set(elem, {});\n }\n const data = DomData.get(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) {\n data.handlers = {};\n }\n if (!data.handlers[type]) {\n data.handlers[type] = [];\n }\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n data.handlers[type].push(fn);\n if (!data.dispatcher) {\n data.disabled = false;\n data.dispatcher = function (event, hash) {\n if (data.disabled) {\n return;\n }\n event = fixEvent(event);\n const handlers = data.handlers[event.type];\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n const handlersCopy = handlers.slice(0);\n for (let m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n try {\n handlersCopy[m].call(elem, event, hash);\n } catch (e) {\n log$1.error(e);\n }\n }\n }\n }\n };\n }\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n let options = false;\n if (supportsPassive() && passiveEvents.indexOf(type) > -1) {\n options = {\n passive: true\n };\n }\n elem.addEventListener(type, data.dispatcher, options);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem\n * Object to remove listeners from.\n *\n * @param {string|string[]} [type]\n * Type of listener to remove. Don't include to remove all events from element.\n *\n * @param {Function} [fn]\n * Specific listener to remove. Don't include to remove listeners for an event\n * type.\n */\nfunction off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!DomData.has(elem)) {\n return;\n }\n const data = DomData.get(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) {\n return;\n }\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n const removeType = function (el, t) {\n data.handlers[t] = [];\n _cleanUpEvents(el, t);\n };\n\n // Are we removing all bound events?\n if (type === undefined) {\n for (const t in data.handlers) {\n if (Object.prototype.hasOwnProperty.call(data.handlers || {}, t)) {\n removeType(elem, t);\n }\n }\n return;\n }\n const handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) {\n return;\n }\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(elem, type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem\n * Element to trigger an event on\n *\n * @param {EventTarget~Event|string} event\n * A string (the type) or an event object with a type attribute\n *\n * @param {Object} [hash]\n * data hash to pass along with the event\n *\n * @return {boolean|undefined}\n * Returns the opposite of `defaultPrevented` if default was\n * prevented. Otherwise, returns `undefined`\n */\nfunction trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n const elemData = DomData.has(elem) ? DomData.get(elem) : {};\n const parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = {\n type: event,\n target: elem\n };\n } else if (!event.target) {\n event.target = elem;\n }\n\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented && event.target && event.target[event.type]) {\n if (!DomData.has(event.target)) {\n DomData.set(event.target, {});\n }\n const targetData = DomData.get(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event.\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\nfunction one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n const func = function () {\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || newGUID();\n on(elem, type, func);\n}\n\n/**\n * Trigger a listener only once and then turn if off for all\n * configured events\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\nfunction any(elem, type, fn) {\n const func = function () {\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || newGUID();\n\n // multiple ons, but one off for everything\n on(elem, type, func);\n}\n\nvar Events = /*#__PURE__*/Object.freeze({\n __proto__: null,\n fixEvent: fixEvent,\n on: on,\n off: off,\n trigger: trigger,\n one: one,\n any: any\n});\n\n/**\n * @file fn.js\n * @module fn\n */\nconst UPDATE_REFRESH_INTERVAL = 30;\n\n/**\n * A private, internal-only function for changing the context of a function.\n *\n * It also stores a unique id on the function so it can be easily removed from\n * events.\n *\n * @private\n * @function\n * @param {*} context\n * The object to bind as scope.\n *\n * @param {Function} fn\n * The function to be bound to a scope.\n *\n * @param {number} [uid]\n * An optional unique ID for the function to be set\n *\n * @return {Function}\n * The new function that will be bound into the context given\n */\nconst bind_ = function (context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n\n // Create the new function that changes the context\n const bound = fn.bind(context);\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n bound.guid = uid ? uid + '_' + fn.guid : fn.guid;\n return bound;\n};\n\n/**\n * Wraps the given function, `fn`, with a new function that only invokes `fn`\n * at most once per every `wait` milliseconds.\n *\n * @function\n * @param {Function} fn\n * The function to be throttled.\n *\n * @param {number} wait\n * The number of milliseconds by which to throttle.\n *\n * @return {Function}\n */\nconst throttle = function (fn, wait) {\n let last = window$1.performance.now();\n const throttled = function (...args) {\n const now = window$1.performance.now();\n if (now - last >= wait) {\n fn(...args);\n last = now;\n }\n };\n return throttled;\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked.\n *\n * Inspired by lodash and underscore implementations.\n *\n * @function\n * @param {Function} func\n * The function to wrap with debounce behavior.\n *\n * @param {number} wait\n * The number of milliseconds to wait after the last invocation.\n *\n * @param {boolean} [immediate]\n * Whether or not to invoke the function immediately upon creation.\n *\n * @param {Object} [context=window]\n * The \"context\" in which the debounced function should debounce. For\n * example, if this function should be tied to a Video.js player,\n * the player can be passed here. Alternatively, defaults to the\n * global `window` object.\n *\n * @return {Function}\n * A debounced function.\n */\nconst debounce$1 = function (func, wait, immediate, context = window$1) {\n let timeout;\n const cancel = () => {\n context.clearTimeout(timeout);\n timeout = null;\n };\n\n /* eslint-disable consistent-this */\n const debounced = function () {\n const self = this;\n const args = arguments;\n let later = function () {\n timeout = null;\n later = null;\n if (!immediate) {\n func.apply(self, args);\n }\n };\n if (!timeout && immediate) {\n func.apply(self, args);\n }\n context.clearTimeout(timeout);\n timeout = context.setTimeout(later, wait);\n };\n /* eslint-enable consistent-this */\n\n debounced.cancel = cancel;\n return debounced;\n};\n\nvar Fn = /*#__PURE__*/Object.freeze({\n __proto__: null,\n UPDATE_REFRESH_INTERVAL: UPDATE_REFRESH_INTERVAL,\n bind_: bind_,\n throttle: throttle,\n debounce: debounce$1\n});\n\n/**\n * @file src/js/event-target.js\n */\nlet EVENT_MAP;\n\n/**\n * `EventTarget` is a class that can have the same API as the DOM `EventTarget`. It\n * adds shorthand functions that wrap around lengthy functions. For example:\n * the `on` function is a wrapper around `addEventListener`.\n *\n * @see [EventTarget Spec]{@link https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget}\n * @class EventTarget\n */\nclass EventTarget$2 {\n /**\n * Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a\n * function that will get called when an event with a certain name gets triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to call with `EventTarget`s\n */\n on(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n const ael = this.addEventListener;\n this.addEventListener = () => {};\n on(this, type, fn);\n this.addEventListener = ael;\n }\n /**\n * Removes an `event listener` for a specific event from an instance of `EventTarget`.\n * This makes it so that the `event listener` will no longer get called when the\n * named event happens.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to remove.\n */\n off(type, fn) {\n off(this, type, fn);\n }\n /**\n * This function will add an `event listener` that gets triggered only once. After the\n * first trigger it will get removed. This is like adding an `event listener`\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on itself.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to be called once for each event name.\n */\n one(type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n const ael = this.addEventListener;\n this.addEventListener = () => {};\n one(this, type, fn);\n this.addEventListener = ael;\n }\n /**\n * This function will add an `event listener` that gets triggered only once and is\n * removed from all events. This is like adding an array of `event listener`s\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on all events the\n * first time it is triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to be called once for each event name.\n */\n any(type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n const ael = this.addEventListener;\n this.addEventListener = () => {};\n any(this, type, fn);\n this.addEventListener = ael;\n }\n /**\n * This function causes an event to happen. This will then cause any `event listeners`\n * that are waiting for that event, to get called. If there are no `event listeners`\n * for an event then nothing will happen.\n *\n * If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`.\n * Trigger will also call the `on` + `uppercaseEventName` function.\n *\n * Example:\n * 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call\n * `onClick` if it exists.\n *\n * @param {string|EventTarget~Event|Object} event\n * The name of the event, an `Event`, or an object with a key of type set to\n * an event name.\n */\n trigger(event) {\n const type = event.type || event;\n\n // deprecation\n // In a future version we should default target to `this`\n // similar to how we default the target to `elem` in\n // `Events.trigger`. Right now the default `target` will be\n // `document` due to the `Event.fixEvent` call.\n if (typeof event === 'string') {\n event = {\n type\n };\n }\n event = fixEvent(event);\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n trigger(this, event);\n }\n queueTrigger(event) {\n // only set up EVENT_MAP if it'll be used\n if (!EVENT_MAP) {\n EVENT_MAP = new Map();\n }\n const type = event.type || event;\n let map = EVENT_MAP.get(this);\n if (!map) {\n map = new Map();\n EVENT_MAP.set(this, map);\n }\n const oldTimeout = map.get(type);\n map.delete(type);\n window$1.clearTimeout(oldTimeout);\n const timeout = window$1.setTimeout(() => {\n map.delete(type);\n // if we cleared out all timeouts for the current target, delete its map\n if (map.size === 0) {\n map = null;\n EVENT_MAP.delete(this);\n }\n this.trigger(event);\n }, 0);\n map.set(type, timeout);\n }\n}\n\n/**\n * A Custom DOM event.\n *\n * @typedef {CustomEvent} Event\n * @see [Properties]{@link https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent}\n */\n\n/**\n * All event listeners should follow the following format.\n *\n * @callback EventListener\n * @this {EventTarget}\n *\n * @param {Event} event\n * the event that triggered this function\n *\n * @param {Object} [hash]\n * hash of data sent during the event\n */\n\n/**\n * An object containing event names as keys and booleans as values.\n *\n * > NOTE: If an event name is set to a true value here {@link EventTarget#trigger}\n * will have extra functionality. See that function for more information.\n *\n * @property EventTarget.prototype.allowedEvents_\n * @protected\n */\nEventTarget$2.prototype.allowedEvents_ = {};\n\n/**\n * An alias of {@link EventTarget#on}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#on}\n */\nEventTarget$2.prototype.addEventListener = EventTarget$2.prototype.on;\n\n/**\n * An alias of {@link EventTarget#off}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#off}\n */\nEventTarget$2.prototype.removeEventListener = EventTarget$2.prototype.off;\n\n/**\n * An alias of {@link EventTarget#trigger}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#trigger}\n */\nEventTarget$2.prototype.dispatchEvent = EventTarget$2.prototype.trigger;\n\n/**\n * @file mixins/evented.js\n * @module evented\n */\nconst objName = obj => {\n if (typeof obj.name === 'function') {\n return obj.name();\n }\n if (typeof obj.name === 'string') {\n return obj.name;\n }\n if (obj.name_) {\n return obj.name_;\n }\n if (obj.constructor && obj.constructor.name) {\n return obj.constructor.name;\n }\n return typeof obj;\n};\n\n/**\n * Returns whether or not an object has had the evented mixin applied.\n *\n * @param {Object} object\n * An object to test.\n *\n * @return {boolean}\n * Whether or not the object appears to be evented.\n */\nconst isEvented = object => object instanceof EventTarget$2 || !!object.eventBusEl_ && ['on', 'one', 'off', 'trigger'].every(k => typeof object[k] === 'function');\n\n/**\n * Adds a callback to run after the evented mixin applied.\n *\n * @param {Object} target\n * An object to Add\n * @param {Function} callback\n * The callback to run.\n */\nconst addEventedCallback = (target, callback) => {\n if (isEvented(target)) {\n callback();\n } else {\n if (!target.eventedCallbacks) {\n target.eventedCallbacks = [];\n }\n target.eventedCallbacks.push(callback);\n }\n};\n\n/**\n * Whether a value is a valid event type - non-empty string or array.\n *\n * @private\n * @param {string|Array} type\n * The type value to test.\n *\n * @return {boolean}\n * Whether or not the type is a valid event type.\n */\nconst isValidEventType = type =>\n// The regex here verifies that the `type` contains at least one non-\n// whitespace character.\ntypeof type === 'string' && /\\S/.test(type) || Array.isArray(type) && !!type.length;\n\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the target does not appear to be a valid event target.\n *\n * @param {Object} target\n * The object to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\nconst validateTarget = (target, obj, fnName) => {\n if (!target || !target.nodeName && !isEvented(target)) {\n throw new Error(`Invalid target for ${objName(obj)}#${fnName}; must be a DOM node or evented object.`);\n }\n};\n\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the type does not appear to be a valid event type.\n *\n * @param {string|Array} type\n * The type to test.\n *\n * @param {Object} obj\n* The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\nconst validateEventType = (type, obj, fnName) => {\n if (!isValidEventType(type)) {\n throw new Error(`Invalid event type for ${objName(obj)}#${fnName}; must be a non-empty string or array.`);\n }\n};\n\n/**\n * Validates a value to determine if it is a valid listener. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the listener is not a function.\n *\n * @param {Function} listener\n * The listener to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\nconst validateListener = (listener, obj, fnName) => {\n if (typeof listener !== 'function') {\n throw new Error(`Invalid listener for ${objName(obj)}#${fnName}; must be a function.`);\n }\n};\n\n/**\n * Takes an array of arguments given to `on()` or `one()`, validates them, and\n * normalizes them into an object.\n *\n * @private\n * @param {Object} self\n * The evented object on which `on()` or `one()` was called. This\n * object will be bound as the `this` value for the listener.\n *\n * @param {Array} args\n * An array of arguments passed to `on()` or `one()`.\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n *\n * @return {Object}\n * An object containing useful values for `on()` or `one()` calls.\n */\nconst normalizeListenArgs = (self, args, fnName) => {\n // If the number of arguments is less than 3, the target is always the\n // evented object itself.\n const isTargetingSelf = args.length < 3 || args[0] === self || args[0] === self.eventBusEl_;\n let target;\n let type;\n let listener;\n if (isTargetingSelf) {\n target = self.eventBusEl_;\n\n // Deal with cases where we got 3 arguments, but we are still listening to\n // the evented object itself.\n if (args.length >= 3) {\n args.shift();\n }\n [type, listener] = args;\n } else {\n // This was `[target, type, listener] = args;` but this block needs more than\n // one statement to produce minified output compatible with Chrome 53.\n // See https://github.com/videojs/video.js/pull/8810\n target = args[0];\n type = args[1];\n listener = args[2];\n }\n validateTarget(target, self, fnName);\n validateEventType(type, self, fnName);\n validateListener(listener, self, fnName);\n listener = bind_(self, listener);\n return {\n isTargetingSelf,\n target,\n type,\n listener\n };\n};\n\n/**\n * Adds the listener to the event type(s) on the target, normalizing for\n * the type of target.\n *\n * @private\n * @param {Element|Object} target\n * A DOM node or evented object.\n *\n * @param {string} method\n * The event binding method to use (\"on\" or \"one\").\n *\n * @param {string|Array} type\n * One or more event type(s).\n *\n * @param {Function} listener\n * A listener function.\n */\nconst listen = (target, method, type, listener) => {\n validateTarget(target, target, method);\n if (target.nodeName) {\n Events[method](target, type, listener);\n } else {\n target[method](type, listener);\n }\n};\n\n/**\n * Contains methods that provide event capabilities to an object which is passed\n * to {@link module:evented|evented}.\n *\n * @mixin EventedMixin\n */\nconst EventedMixin = {\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n on(...args) {\n const {\n isTargetingSelf,\n target,\n type,\n listener\n } = normalizeListenArgs(this, args, 'on');\n listen(target, 'on', type, listener);\n\n // If this object is listening to another evented object.\n if (!isTargetingSelf) {\n // If this object is disposed, remove the listener.\n const removeListenerOnDispose = () => this.off(target, type, listener);\n\n // Use the same function ID as the listener so we can remove it later it\n // using the ID of the original listener.\n removeListenerOnDispose.guid = listener.guid;\n\n // Add a listener to the target's dispose event as well. This ensures\n // that if the target is disposed BEFORE this object, we remove the\n // removal listener that was just added. Otherwise, we create a memory leak.\n const removeRemoverOnTargetDispose = () => this.off('dispose', removeListenerOnDispose);\n\n // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n removeRemoverOnTargetDispose.guid = listener.guid;\n listen(this, 'on', 'dispose', removeListenerOnDispose);\n listen(target, 'on', 'dispose', removeRemoverOnTargetDispose);\n }\n },\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will be called once per event and then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n one(...args) {\n const {\n isTargetingSelf,\n target,\n type,\n listener\n } = normalizeListenArgs(this, args, 'one');\n\n // Targeting this evented object.\n if (isTargetingSelf) {\n listen(target, 'one', type, listener);\n\n // Targeting another evented object.\n } else {\n // TODO: This wrapper is incorrect! It should only\n // remove the wrapper for the event type that called it.\n // Instead all listeners are removed on the first trigger!\n // see https://github.com/videojs/video.js/issues/5962\n const wrapper = (...largs) => {\n this.off(target, type, wrapper);\n listener.apply(null, largs);\n };\n\n // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n wrapper.guid = listener.guid;\n listen(target, 'one', type, wrapper);\n }\n },\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will only be called once for the first event that is triggered\n * then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n any(...args) {\n const {\n isTargetingSelf,\n target,\n type,\n listener\n } = normalizeListenArgs(this, args, 'any');\n\n // Targeting this evented object.\n if (isTargetingSelf) {\n listen(target, 'any', type, listener);\n\n // Targeting another evented object.\n } else {\n const wrapper = (...largs) => {\n this.off(target, type, wrapper);\n listener.apply(null, largs);\n };\n\n // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n wrapper.guid = listener.guid;\n listen(target, 'any', type, wrapper);\n }\n },\n /**\n * Removes listener(s) from event(s) on an evented object.\n *\n * @param {string|Array|Element|Object} [targetOrType]\n * If this is a string or array, it represents the event type(s).\n *\n * Another evented object can be passed here instead, in which case\n * ALL 3 arguments are _required_.\n *\n * @param {string|Array|Function} [typeOrListener]\n * If the first argument was a string or array, this may be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function; otherwise, _all_ listeners bound to the\n * event type(s) will be removed.\n */\n off(targetOrType, typeOrListener, listener) {\n // Targeting this evented object.\n if (!targetOrType || isValidEventType(targetOrType)) {\n off(this.eventBusEl_, targetOrType, typeOrListener);\n\n // Targeting another evented object.\n } else {\n const target = targetOrType;\n const type = typeOrListener;\n\n // Fail fast and in a meaningful way!\n validateTarget(target, this, 'off');\n validateEventType(type, this, 'off');\n validateListener(listener, this, 'off');\n\n // Ensure there's at least a guid, even if the function hasn't been used\n listener = bind_(this, listener);\n\n // Remove the dispose listener on this evented object, which was given\n // the same guid as the event listener in on().\n this.off('dispose', listener);\n if (target.nodeName) {\n off(target, type, listener);\n off(target, 'dispose', listener);\n } else if (isEvented(target)) {\n target.off(type, listener);\n target.off('dispose', listener);\n }\n }\n },\n /**\n * Fire an event on this evented object, causing its listeners to be called.\n *\n * @param {string|Object} event\n * An event type or an object with a type property.\n *\n * @param {Object} [hash]\n * An additional object to pass along to listeners.\n *\n * @return {boolean}\n * Whether or not the default behavior was prevented.\n */\n trigger(event, hash) {\n validateTarget(this.eventBusEl_, this, 'trigger');\n const type = event && typeof event !== 'string' ? event.type : event;\n if (!isValidEventType(type)) {\n throw new Error(`Invalid event type for ${objName(this)}#trigger; ` + 'must be a non-empty string or object with a type key that has a non-empty value.');\n }\n return trigger(this.eventBusEl_, event, hash);\n }\n};\n\n/**\n * Applies {@link module:evented~EventedMixin|EventedMixin} to a target object.\n *\n * @param {Object} target\n * The object to which to add event methods.\n *\n * @param {Object} [options={}]\n * Options for customizing the mixin behavior.\n *\n * @param {string} [options.eventBusKey]\n * By default, adds a `eventBusEl_` DOM element to the target object,\n * which is used as an event bus. If the target object already has a\n * DOM element that should be used, pass its key here.\n *\n * @return {Object}\n * The target object.\n */\nfunction evented(target, options = {}) {\n const {\n eventBusKey\n } = options;\n\n // Set or create the eventBusEl_.\n if (eventBusKey) {\n if (!target[eventBusKey].nodeName) {\n throw new Error(`The eventBusKey \"${eventBusKey}\" does not refer to an element.`);\n }\n target.eventBusEl_ = target[eventBusKey];\n } else {\n target.eventBusEl_ = createEl('span', {\n className: 'vjs-event-bus'\n });\n }\n Object.assign(target, EventedMixin);\n if (target.eventedCallbacks) {\n target.eventedCallbacks.forEach(callback => {\n callback();\n });\n }\n\n // When any evented object is disposed, it removes all its listeners.\n target.on('dispose', () => {\n target.off();\n [target, target.el_, target.eventBusEl_].forEach(function (val) {\n if (val && DomData.has(val)) {\n DomData.delete(val);\n }\n });\n window$1.setTimeout(() => {\n target.eventBusEl_ = null;\n }, 0);\n });\n return target;\n}\n\n/**\n * @file mixins/stateful.js\n * @module stateful\n */\n\n/**\n * Contains methods that provide statefulness to an object which is passed\n * to {@link module:stateful}.\n *\n * @mixin StatefulMixin\n */\nconst StatefulMixin = {\n /**\n * A hash containing arbitrary keys and values representing the state of\n * the object.\n *\n * @type {Object}\n */\n state: {},\n /**\n * Set the state of an object by mutating its\n * {@link module:stateful~StatefulMixin.state|state} object in place.\n *\n * @fires module:stateful~StatefulMixin#statechanged\n * @param {Object|Function} stateUpdates\n * A new set of properties to shallow-merge into the plugin state.\n * Can be a plain object or a function returning a plain object.\n *\n * @return {Object|undefined}\n * An object containing changes that occurred. If no changes\n * occurred, returns `undefined`.\n */\n setState(stateUpdates) {\n // Support providing the `stateUpdates` state as a function.\n if (typeof stateUpdates === 'function') {\n stateUpdates = stateUpdates();\n }\n let changes;\n each(stateUpdates, (value, key) => {\n // Record the change if the value is different from what's in the\n // current state.\n if (this.state[key] !== value) {\n changes = changes || {};\n changes[key] = {\n from: this.state[key],\n to: value\n };\n }\n this.state[key] = value;\n });\n\n // Only trigger \"statechange\" if there were changes AND we have a trigger\n // function. This allows us to not require that the target object be an\n // evented object.\n if (changes && isEvented(this)) {\n /**\n * An event triggered on an object that is both\n * {@link module:stateful|stateful} and {@link module:evented|evented}\n * indicating that its state has changed.\n *\n * @event module:stateful~StatefulMixin#statechanged\n * @type {Object}\n * @property {Object} changes\n * A hash containing the properties that were changed and\n * the values they were changed `from` and `to`.\n */\n this.trigger({\n changes,\n type: 'statechanged'\n });\n }\n return changes;\n }\n};\n\n/**\n * Applies {@link module:stateful~StatefulMixin|StatefulMixin} to a target\n * object.\n *\n * If the target object is {@link module:evented|evented} and has a\n * `handleStateChanged` method, that method will be automatically bound to the\n * `statechanged` event on itself.\n *\n * @param {Object} target\n * The object to be made stateful.\n *\n * @param {Object} [defaultState]\n * A default set of properties to populate the newly-stateful object's\n * `state` property.\n *\n * @return {Object}\n * Returns the `target`.\n */\nfunction stateful(target, defaultState) {\n Object.assign(target, StatefulMixin);\n\n // This happens after the mixing-in because we need to replace the `state`\n // added in that step.\n target.state = Object.assign({}, target.state, defaultState);\n\n // Auto-bind the `handleStateChanged` method of the target object if it exists.\n if (typeof target.handleStateChanged === 'function' && isEvented(target)) {\n target.on('statechanged', target.handleStateChanged);\n }\n return target;\n}\n\n/**\n * @file str.js\n * @module to-lower-case\n */\n\n/**\n * Lowercase the first letter of a string.\n *\n * @param {string} string\n * String to be lowercased\n *\n * @return {string}\n * The string with a lowercased first letter\n */\nconst toLowerCase = function (string) {\n if (typeof string !== 'string') {\n return string;\n }\n return string.replace(/./, w => w.toLowerCase());\n};\n\n/**\n * Uppercase the first letter of a string.\n *\n * @param {string} string\n * String to be uppercased\n *\n * @return {string}\n * The string with an uppercased first letter\n */\nconst toTitleCase$1 = function (string) {\n if (typeof string !== 'string') {\n return string;\n }\n return string.replace(/./, w => w.toUpperCase());\n};\n\n/**\n * Compares the TitleCase versions of the two strings for equality.\n *\n * @param {string} str1\n * The first string to compare\n *\n * @param {string} str2\n * The second string to compare\n *\n * @return {boolean}\n * Whether the TitleCase versions of the strings are equal\n */\nconst titleCaseEquals = function (str1, str2) {\n return toTitleCase$1(str1) === toTitleCase$1(str2);\n};\n\nvar Str = /*#__PURE__*/Object.freeze({\n __proto__: null,\n toLowerCase: toLowerCase,\n toTitleCase: toTitleCase$1,\n titleCaseEquals: titleCaseEquals\n});\n\n/**\n * Player Component - Base class for all UI objects\n *\n * @file component.js\n */\n\n/** @import Player from './player' */\n\n/**\n * A callback to be called if and when the component is ready.\n * `this` will be the Component instance.\n *\n * @callback ReadyCallback\n * @returns {void}\n */\n\n/**\n * Base class for all UI Components.\n * Components are UI objects which represent both a javascript object and an element\n * in the DOM. They can be children of other components, and can have\n * children themselves.\n *\n * Components can also use methods from {@link EventTarget}\n */\nclass Component$1 {\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of component options.\n *\n * @param {Object[]} [options.children]\n * An array of children objects to initialize this component with. Children objects have\n * a name property that will be used if more than one component of the same type needs to be\n * added.\n *\n * @param {string} [options.className]\n * A class or space separated list of classes to add the component\n *\n * @param {ReadyCallback} [ready]\n * Function that gets called when the `Component` is ready.\n */\n constructor(player, options, ready) {\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n this.isDisposed_ = false;\n\n // Hold the reference to the parent component via `addChild` method\n this.parentComponent_ = null;\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = merge$1({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = merge$1(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || options.el && options.el.id;\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n const id = player && player.id && player.id() || 'no_player';\n this.id_ = `${id}_component_${newGUID()}`;\n }\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n if (options.className && this.el_) {\n options.className.split(' ').forEach(c => this.addClass(c));\n }\n\n // Remove the placeholder event methods. If the component is evented, the\n // real methods are added next\n ['on', 'off', 'one', 'any', 'trigger'].forEach(fn => {\n this[fn] = undefined;\n });\n\n // if evented is anything except false, we want to mixin in evented\n if (options.evented !== false) {\n // Make this an evented object and use `el_`, if available, as its event bus\n evented(this, {\n eventBusKey: this.el_ ? 'el_' : null\n });\n this.handleLanguagechange = this.handleLanguagechange.bind(this);\n this.on(this.player_, 'languagechange', this.handleLanguagechange);\n }\n stateful(this, this.constructor.defaultState);\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n this.setTimeoutIds_ = new Set();\n this.setIntervalIds_ = new Set();\n this.rafIds_ = new Set();\n this.namedRafs_ = new Map();\n this.clearingTimersOnDispose_ = false;\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n // Don't want to trigger ready here or it will go before init is actually\n // finished for all children that run this constructor\n this.ready(ready);\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n // `on`, `off`, `one`, `any` and `trigger` are here so tsc includes them in definitions.\n // They are replaced or removed in the constructor\n\n /**\n * Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a\n * function that will get called when an event with a certain name gets triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to call with `EventTarget`s\n */\n\n /**\n * Removes an `event listener` for a specific event from an instance of `EventTarget`.\n * This makes it so that the `event listener` will no longer get called when the\n * named event happens.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} [fn]\n * The function to remove. If not specified, all listeners managed by Video.js will be removed.\n */\n\n /**\n * This function will add an `event listener` that gets triggered only once. After the\n * first trigger it will get removed. This is like adding an `event listener`\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on itself.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to be called once for each event name.\n */\n\n /**\n * This function will add an `event listener` that gets triggered only once and is\n * removed from all events. This is like adding an array of `event listener`s\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on all events the\n * first time it is triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to be called once for each event name.\n */\n\n /**\n * This function causes an event to happen. This will then cause any `event listeners`\n * that are waiting for that event, to get called. If there are no `event listeners`\n * for an event then nothing will happen.\n *\n * If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`.\n * Trigger will also call the `on` + `uppercaseEventName` function.\n *\n * Example:\n * 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call\n * `onClick` if it exists.\n *\n * @param {string|Event|Object} event\n * The name of the event, an `Event`, or an object with a key of type set to\n * an event name.\n *\n * @param {Object} [hash]\n * Optionally extra argument to pass through to an event listener\n */\n\n /**\n * Dispose of the `Component` and all child components.\n *\n * @fires Component#dispose\n *\n * @param {Object} options\n * @param {Element} options.originalEl element with which to replace player element\n */\n dispose(options = {}) {\n // Bail out if the component has already been disposed.\n if (this.isDisposed_) {\n return;\n }\n if (this.readyQueue_) {\n this.readyQueue_.length = 0;\n }\n\n /**\n * Triggered when a `Component` is disposed.\n *\n * @event Component#dispose\n * @type {Event}\n *\n * @property {boolean} [bubbles=false]\n * set to false so that the dispose event does not\n * bubble up\n */\n this.trigger({\n type: 'dispose',\n bubbles: false\n });\n this.isDisposed_ = true;\n\n // Dispose all children.\n if (this.children_) {\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n this.parentComponent_ = null;\n if (this.el_) {\n // Remove element from DOM\n if (this.el_.parentNode) {\n if (options.restoreEl) {\n this.el_.parentNode.replaceChild(options.restoreEl, this.el_);\n } else {\n this.el_.parentNode.removeChild(this.el_);\n }\n }\n this.el_ = null;\n }\n\n // remove reference to the player after disposing of the element\n this.player_ = null;\n }\n\n /**\n * Determine whether or not this component has been disposed.\n *\n * @return {boolean}\n * If the component has been disposed, will be `true`. Otherwise, `false`.\n */\n isDisposed() {\n return Boolean(this.isDisposed_);\n }\n\n /**\n * Return the {@link Player} that the `Component` has attached to.\n *\n * @return {Player}\n * The player that this `Component` has attached to.\n */\n player() {\n return this.player_;\n }\n\n /**\n * Deep merge of options objects with new options.\n * > Note: When both `obj` and `options` contain properties whose values are objects.\n * The two properties get merged using {@link module:obj.merge}\n *\n * @param {Object} obj\n * The object that contains new options.\n *\n * @return {Object}\n * A new object of `this.options_` and `obj` merged together.\n */\n options(obj) {\n if (!obj) {\n return this.options_;\n }\n this.options_ = merge$1(this.options_, obj);\n return this.options_;\n }\n\n /**\n * Get the `Component`s DOM element\n *\n * @return {Element}\n * The DOM element for this `Component`.\n */\n el() {\n return this.el_;\n }\n\n /**\n * Create the `Component`s DOM element.\n *\n * @param {string} [tagName]\n * Element's DOM node type. e.g. 'div'\n *\n * @param {Object} [properties]\n * An object of properties that should be set.\n *\n * @param {Object} [attributes]\n * An object of attributes that should be set.\n *\n * @return {Element}\n * The element that gets created.\n */\n createEl(tagName, properties, attributes) {\n return createEl(tagName, properties, attributes);\n }\n\n /**\n * Localize a string given the string in english.\n *\n * If tokens are provided, it'll try and run a simple token replacement on the provided string.\n * The tokens it looks for look like `{1}` with the index being 1-indexed into the tokens array.\n *\n * If a `defaultValue` is provided, it'll use that over `string`,\n * if a value isn't found in provided language files.\n * This is useful if you want to have a descriptive key for token replacement\n * but have a succinct localized string and not require `en.json` to be included.\n *\n * Currently, it is used for the progress bar timing.\n * ```js\n * {\n * \"progress bar timing: currentTime={1} duration={2}\": \"{1} of {2}\"\n * }\n * ```\n * It is then used like so:\n * ```js\n * this.localize('progress bar timing: currentTime={1} duration{2}',\n * [this.player_.currentTime(), this.player_.duration()],\n * '{1} of {2}');\n * ```\n *\n * Which outputs something like: `01:23 of 24:56`.\n *\n *\n * @param {string} string\n * The string to localize and the key to lookup in the language files.\n * @param {string[]} [tokens]\n * If the current item has token replacements, provide the tokens here.\n * @param {string} [defaultValue]\n * Defaults to `string`. Can be a default value to use for token replacement\n * if the lookup key is needed to be separate.\n *\n * @return {string}\n * The localized string or if no localization exists the english string.\n */\n localize(string, tokens, defaultValue = string) {\n const code = this.player_.language && this.player_.language();\n const languages = this.player_.languages && this.player_.languages();\n const language = languages && languages[code];\n const primaryCode = code && code.split('-')[0];\n const primaryLang = languages && languages[primaryCode];\n let localizedString = defaultValue;\n if (language && language[string]) {\n localizedString = language[string];\n } else if (primaryLang && primaryLang[string]) {\n localizedString = primaryLang[string];\n }\n if (tokens) {\n localizedString = localizedString.replace(/\\{(\\d+)\\}/g, function (match, index) {\n const value = tokens[index - 1];\n let ret = value;\n if (typeof value === 'undefined') {\n ret = match;\n }\n return ret;\n });\n }\n return localizedString;\n }\n\n /**\n * Handles language change for the player in components. Should be overridden by sub-components.\n *\n * @abstract\n */\n handleLanguagechange() {}\n\n /**\n * Return the `Component`s DOM element. This is where children get inserted.\n * This will usually be the the same as the element returned in {@link Component#el}.\n *\n * @return {Element}\n * The content element for this `Component`.\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get this `Component`s ID\n *\n * @return {string}\n * The id of this `Component`\n */\n id() {\n return this.id_;\n }\n\n /**\n * Get the `Component`s name. The name gets used to reference the `Component`\n * and is set during registration.\n *\n * @return {string}\n * The name of this `Component`.\n */\n name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n *\n * @return {Array}\n * The children\n */\n children() {\n return this.children_;\n }\n\n /**\n * Returns the child `Component` with the given `id`.\n *\n * @param {string} id\n * The id of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `id` or undefined.\n */\n getChildById(id) {\n return this.childIndex_[id];\n }\n\n /**\n * Returns the child `Component` with the given `name`.\n *\n * @param {string} name\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `name` or undefined.\n */\n getChild(name) {\n if (!name) {\n return;\n }\n return this.childNameIndex_[name];\n }\n\n /**\n * Returns the descendant `Component` following the givent\n * descendant `names`. For instance ['foo', 'bar', 'baz'] would\n * try to get 'foo' on the current component, 'bar' on the 'foo'\n * component and 'baz' on the 'bar' component and return undefined\n * if any of those don't exist.\n *\n * @param {...string[]|...string} names\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The descendant `Component` following the given descendant\n * `names` or undefined.\n */\n getDescendant(...names) {\n // flatten array argument into the main array\n names = names.reduce((acc, n) => acc.concat(n), []);\n let currentChild = this;\n for (let i = 0; i < names.length; i++) {\n currentChild = currentChild.getChild(names[i]);\n if (!currentChild || !currentChild.getChild) {\n return;\n }\n }\n return currentChild;\n }\n\n /**\n * Adds an SVG icon element to another element or component.\n *\n * @param {string} iconName\n * The name of icon. A list of all the icon names can be found at 'sandbox/svg-icons.html'\n *\n * @param {Element} [el=this.el()]\n * Element to set the title on. Defaults to the current Component's element.\n *\n * @return {Element}\n * The newly created icon element.\n */\n setIcon(iconName, el = this.el()) {\n // TODO: In v9 of video.js, we will want to remove font icons entirely.\n // This means this check, as well as the others throughout the code, and\n // the unecessary CSS for font icons, will need to be removed.\n // See https://github.com/videojs/video.js/pull/8260 as to which components\n // need updating.\n if (!this.player_.options_.experimentalSvgIcons) {\n return;\n }\n const xmlnsURL = 'http://www.w3.org/2000/svg';\n\n // The below creates an element in the format of:\n // ....\n const iconContainer = createEl('span', {\n className: 'vjs-icon-placeholder vjs-svg-icon'\n }, {\n 'aria-hidden': 'true'\n });\n const svgEl = document$1.createElementNS(xmlnsURL, 'svg');\n svgEl.setAttributeNS(null, 'viewBox', '0 0 512 512');\n const useEl = document$1.createElementNS(xmlnsURL, 'use');\n svgEl.appendChild(useEl);\n useEl.setAttributeNS(null, 'href', `#vjs-icon-${iconName}`);\n iconContainer.appendChild(svgEl);\n\n // Replace a pre-existing icon if one exists.\n if (this.iconIsSet_) {\n el.replaceChild(iconContainer, el.querySelector('.vjs-icon-placeholder'));\n } else {\n el.appendChild(iconContainer);\n }\n this.iconIsSet_ = true;\n return iconContainer;\n }\n\n /**\n * Add a child `Component` inside the current `Component`.\n *\n * @param {string|Component} child\n * The name or instance of a child to add.\n *\n * @param {Object} [options={}]\n * The key/value store of options that will get passed to children of\n * the child.\n *\n * @param {number} [index=this.children_.length]\n * The index to attempt to add a child into.\n *\n *\n * @return {Component}\n * The `Component` that gets added as a child. When using a string the\n * `Component` will get created by this process.\n */\n addChild(child, options = {}, index = this.children_.length) {\n let component;\n let componentName;\n\n // If child is a string, create component with options\n if (typeof child === 'string') {\n componentName = toTitleCase$1(child);\n const componentClassName = options.componentClass || componentName;\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n const ComponentClass = Component$1.getComponent(componentClassName);\n if (!ComponentClass) {\n throw new Error(`Component ${componentClassName} does not exist`);\n }\n\n // data stored directly on the videojs object may be\n // misidentified as a component to retain\n // backwards-compatibility with 4.x. check to make sure the\n // component class can be instantiated.\n if (typeof ComponentClass !== 'function') {\n return null;\n }\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n if (component.parentComponent_) {\n component.parentComponent_.removeChild(component);\n }\n this.children_.splice(index, 0, component);\n component.parentComponent_ = this;\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || component.name && toTitleCase$1(component.name());\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n this.childNameIndex_[toLowerCase(componentName)] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n // If inserting before a component, insert before that component's element\n let refNode = null;\n if (this.children_[index + 1]) {\n // Most children are components, but the video tech is an HTML element\n if (this.children_[index + 1].el_) {\n refNode = this.children_[index + 1].el_;\n } else if (isEl(this.children_[index + 1])) {\n refNode = this.children_[index + 1];\n }\n }\n this.contentEl().insertBefore(component.el(), refNode);\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n }\n\n /**\n * Remove a child `Component` from this `Component`s list of children. Also removes\n * the child `Component`s element from this `Component`s element.\n *\n * @param {Component} component\n * The child `Component` to remove.\n */\n removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n if (!component || !this.children_) {\n return;\n }\n let childFound = false;\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n if (!childFound) {\n return;\n }\n component.parentComponent_ = null;\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[toTitleCase$1(component.name())] = null;\n this.childNameIndex_[toLowerCase(component.name())] = null;\n const compEl = component.el();\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n\n /**\n * Add and initialize default child `Component`s based upon options.\n */\n initChildren() {\n const children = this.options_.children;\n if (children) {\n // `this` is `parent`\n const parentOptions = this.options_;\n const handleAdd = child => {\n const name = child.name;\n let opts = child.opts;\n\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options\n // to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n const newChild = this.addChild(name, opts);\n if (newChild) {\n this[name] = newChild;\n }\n };\n\n // Allow for an array of children details to passed in the options\n let workingChildren;\n const Tech = Component$1.getComponent('Tech');\n if (Array.isArray(children)) {\n workingChildren = children;\n } else {\n workingChildren = Object.keys(children);\n }\n workingChildren\n // children that are in this.options_ but also in workingChildren would\n // give us extra children we do not want. So, we want to filter them out.\n .concat(Object.keys(this.options_).filter(function (child) {\n return !workingChildren.some(function (wchild) {\n if (typeof wchild === 'string') {\n return child === wchild;\n }\n return child === wchild.name;\n });\n })).map(child => {\n let name;\n let opts;\n if (typeof child === 'string') {\n name = child;\n opts = children[name] || this.options_[name] || {};\n } else {\n name = child.name;\n opts = child;\n }\n return {\n name,\n opts\n };\n }).filter(child => {\n // we have to make sure that child.name isn't in the techOrder since\n // techs are registered as Components but can't aren't compatible\n // See https://github.com/videojs/video.js/issues/2772\n const c = Component$1.getComponent(child.opts.componentClass || toTitleCase$1(child.name));\n return c && !Tech.isTech(c);\n }).forEach(handleAdd);\n }\n }\n\n /**\n * Builds the default DOM class name. Should be overridden by sub-components.\n *\n * @return {string}\n * The DOM class name for this object.\n *\n * @abstract\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @param {ReadyCallback} fn\n * Function that gets called when the `Component` is ready.\n */\n ready(fn, sync = false) {\n if (!fn) {\n return;\n }\n if (!this.isReady_) {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n return;\n }\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n }\n\n /**\n * Trigger all the ready listeners for this `Component`.\n *\n * @fires Component#ready\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggered asynchronously\n this.setTimeout(function () {\n const readyQueue = this.readyQueue_;\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function (fn) {\n fn.call(this);\n }, this);\n }\n\n // Allow for using event listeners also\n /**\n * Triggered when a `Component` is ready.\n *\n * @event Component#ready\n * @type {Event}\n */\n this.trigger('ready');\n }, 1);\n }\n\n /**\n * Find a single DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {Element|null}\n * the dom element that was found, or null\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n $(selector, context) {\n return $(selector, context || this.contentEl());\n }\n\n /**\n * Finds all DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {NodeList}\n * a list of dom elements that were found\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n $$(selector, context) {\n return $$(selector, context || this.contentEl());\n }\n\n /**\n * Check if a component's element has a CSS class name.\n *\n * @param {string} classToCheck\n * CSS class name to check.\n *\n * @return {boolean}\n * - True if the `Component` has the class.\n * - False if the `Component` does not have the class`\n */\n hasClass(classToCheck) {\n return hasClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the `Component`s element.\n *\n * @param {...string} classesToAdd\n * One or more CSS class name to add.\n */\n addClass(...classesToAdd) {\n addClass(this.el_, ...classesToAdd);\n }\n\n /**\n * Remove a CSS class name from the `Component`s element.\n *\n * @param {...string} classesToRemove\n * One or more CSS class name to remove.\n */\n removeClass(...classesToRemove) {\n removeClass(this.el_, ...classesToRemove);\n }\n\n /**\n * Add or remove a CSS class name from the component's element.\n * - `classToToggle` gets added when {@link Component#hasClass} would return false.\n * - `classToToggle` gets removed when {@link Component#hasClass} would return true.\n *\n * @param {string} classToToggle\n * The class to add or remove. Passed to DOMTokenList's toggle()\n *\n * @param {boolean|Dom.PredicateCallback} [predicate]\n * A boolean or function that returns a boolean. Passed to DOMTokenList's toggle().\n */\n toggleClass(classToToggle, predicate) {\n toggleClass(this.el_, classToToggle, predicate);\n }\n\n /**\n * Show the `Component`s element if it is hidden by removing the\n * 'vjs-hidden' class name from it.\n */\n show() {\n this.removeClass('vjs-hidden');\n }\n\n /**\n * Hide the `Component`s element if it is currently showing by adding the\n * 'vjs-hidden` class name to it.\n */\n hide() {\n this.addClass('vjs-hidden');\n }\n\n /**\n * Lock a `Component`s element in its visible state by adding the 'vjs-lock-showing'\n * class name to it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n lockShowing() {\n this.addClass('vjs-lock-showing');\n }\n\n /**\n * Unlock a `Component`s element from its visible state by removing the 'vjs-lock-showing'\n * class name from it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n unlockShowing() {\n this.removeClass('vjs-lock-showing');\n }\n\n /**\n * Get the value of an attribute on the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to get the value from.\n *\n * @return {string|null}\n * - The value of the attribute that was asked for.\n * - Can be an empty string on some browsers if the attribute does not exist\n * or has no value\n * - Most browsers will return null if the attribute does not exist or has\n * no value.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute}\n */\n getAttribute(attribute) {\n return getAttribute(this.el_, attribute);\n }\n\n /**\n * Set the value of an attribute on the `Component`'s element\n *\n * @param {string} attribute\n * Name of the attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute}\n */\n setAttribute(attribute, value) {\n setAttribute(this.el_, attribute, value);\n }\n\n /**\n * Remove an attribute from the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to remove.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute}\n */\n removeAttribute(attribute) {\n removeAttribute(this.el_, attribute);\n }\n\n /**\n * Get or set the width of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The width that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|undefined}\n * The width when getting, zero if there is no width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n\n /**\n * Get or set the height of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The height that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|undefined}\n * The height when getting, zero if there is no height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n\n /**\n * Set both the width and height of the `Component` element at the same time.\n *\n * @param {number|string} width\n * Width to set the `Component`s element to.\n *\n * @param {number|string} height\n * Height to set the `Component`s element to.\n */\n dimensions(width, height) {\n // Skip componentresize listeners on width for optimization\n this.width(width, true);\n this.height(height);\n }\n\n /**\n * Get or set width or height of the `Component` element. This is the shared code\n * for the {@link Component#width} and {@link Component#height}.\n *\n * Things to know:\n * - If the width or height in an number this will return the number postfixed with 'px'.\n * - If the width/height is a percent this will return the percent postfixed with '%'\n * - Hidden elements have a width of 0 with `window.getComputedStyle`. This function\n * defaults to the `Component`s `style.width` and falls back to `window.getComputedStyle`.\n * See [this]{@link http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/}\n * for more information\n * - If you want the computed style of the component, use {@link Component#currentWidth}\n * and {@link {Component#currentHeight}\n *\n * @fires Component#componentresize\n *\n * @param {string} widthOrHeight\n 8 'width' or 'height'\n *\n * @param {number|string} [num]\n 8 New dimension\n *\n * @param {boolean} [skipListeners]\n * Skip componentresize event trigger\n *\n * @return {number|undefined}\n * The dimension when getting or 0 if unset\n */\n dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n /**\n * Triggered when a component is resized.\n *\n * @event Component#componentresize\n * @type {Event}\n */\n this.trigger('componentresize');\n }\n return;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n const val = this.el_.style[widthOrHeight];\n const pxIndex = val.indexOf('px');\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase$1(widthOrHeight)], 10);\n }\n\n /**\n * Get the computed width or the height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @param {string} widthOrHeight\n * A string containing 'width' or 'height'. Whichever one you want to get.\n *\n * @return {number}\n * The dimension that gets asked for or 0 if nothing was set\n * for that dimension.\n */\n currentDimension(widthOrHeight) {\n let computedWidthOrHeight = 0;\n if (widthOrHeight !== 'width' && widthOrHeight !== 'height') {\n throw new Error('currentDimension only accepts width or height value');\n }\n computedWidthOrHeight = computedStyle(this.el_, widthOrHeight);\n\n // remove 'px' from variable and parse as integer\n computedWidthOrHeight = parseFloat(computedWidthOrHeight);\n\n // if the computed value is still 0, it's possible that the browser is lying\n // and we want to check the offset values.\n // This code also runs wherever getComputedStyle doesn't exist.\n if (computedWidthOrHeight === 0 || isNaN(computedWidthOrHeight)) {\n const rule = `offset${toTitleCase$1(widthOrHeight)}`;\n computedWidthOrHeight = this.el_[rule];\n }\n return computedWidthOrHeight;\n }\n\n /**\n * An object that contains width and height values of the `Component`s\n * computed style. Uses `window.getComputedStyle`.\n *\n * @typedef {Object} Component~DimensionObject\n *\n * @property {number} width\n * The width of the `Component`s computed style.\n *\n * @property {number} height\n * The height of the `Component`s computed style.\n */\n\n /**\n * Get an object that contains computed width and height values of the\n * component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {Component~DimensionObject}\n * The computed dimensions of the component's element.\n */\n currentDimensions() {\n return {\n width: this.currentDimension('width'),\n height: this.currentDimension('height')\n };\n }\n\n /**\n * Get the computed width of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed width of the component's element.\n */\n currentWidth() {\n return this.currentDimension('width');\n }\n\n /**\n * Get the computed height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed height of the component's element.\n */\n currentHeight() {\n return this.currentDimension('height');\n }\n\n /**\n * Retrieves the position and size information of the component's element.\n *\n * @return {Object} An object with `boundingClientRect` and `center` properties.\n * - `boundingClientRect`: An object with properties `x`, `y`, `width`,\n * `height`, `top`, `right`, `bottom`, and `left`, representing\n * the bounding rectangle of the element.\n * - `center`: An object with properties `x` and `y`, representing\n * the center point of the element. `width` and `height` are set to 0.\n */\n getPositions() {\n const rect = this.el_.getBoundingClientRect();\n\n // Creating objects that mirror DOMRectReadOnly for boundingClientRect and center\n const boundingClientRect = {\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left\n };\n\n // Calculating the center position\n const center = {\n x: rect.left + rect.width / 2,\n y: rect.top + rect.height / 2,\n width: 0,\n height: 0,\n top: rect.top + rect.height / 2,\n right: rect.left + rect.width / 2,\n bottom: rect.top + rect.height / 2,\n left: rect.left + rect.width / 2\n };\n return {\n boundingClientRect,\n center\n };\n }\n\n /**\n * Set the focus to this component\n */\n focus() {\n this.el_.focus();\n }\n\n /**\n * Remove the focus from this component\n */\n blur() {\n this.el_.blur();\n }\n\n /**\n * When this Component receives a `keydown` event which it does not process,\n * it passes the event to the Player for handling.\n *\n * @param {KeyboardEvent} event\n * The `keydown` event that caused this function to be called.\n */\n handleKeyDown(event) {\n if (this.player_) {\n // We only stop propagation here because we want unhandled events to fall\n // back to the browser. Exclude Tab for focus trapping, exclude also when spatialNavigation is enabled.\n if (event.key !== 'Tab' && !(this.player_.options_.playerOptions.spatialNavigation && this.player_.options_.playerOptions.spatialNavigation.enabled)) {\n event.stopPropagation();\n }\n this.player_.handleKeyDown(event);\n }\n }\n\n /**\n * Many components used to have a `handleKeyPress` method, which was poorly\n * named because it listened to a `keydown` event. This method name now\n * delegates to `handleKeyDown`. This means anyone calling `handleKeyPress`\n * will not see their method calls stop working.\n *\n * @param {KeyboardEvent} event\n * The event that caused this function to be called.\n */\n handleKeyPress(event) {\n this.handleKeyDown(event);\n }\n\n /**\n * Emit a 'tap' events when touch event support gets detected. This gets used to\n * support toggling the controls through a tap on the video. They get enabled\n * because every sub-component would have extra overhead otherwise.\n *\n * @protected\n * @fires Component#tap\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchleave\n * @listens Component#touchcancel\n * @listens Component#touchend\n */\n emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15,\n // so 10 seems like a nice, round number.\n const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n let couldBeTap;\n this.on('touchstart', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy pageX/pageY from the object\n firstTouch = {\n pageX: event.touches[0].pageX,\n pageY: event.touches[0].pageY\n };\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = window$1.performance.now();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n this.on('touchmove', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n const noTap = function () {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function (event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n const touchTime = window$1.performance.now() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n /**\n * Triggered when a `Component` is tapped.\n *\n * @event Component#tap\n * @type {MouseEvent}\n */\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n\n /**\n * This function reports user activity whenever touch events happen. This can get\n * turned off by any sub-components that wants touch events to act another way.\n *\n * Report user touch activity when touch events occur. User activity gets used to\n * determine when controls should show/hide. It is simple when it comes to mouse\n * events, because any mouse event should show the controls. So we capture mouse\n * events that bubble up to the player and report activity when that happens.\n * With touch events it isn't as easy as `touchstart` and `touchend` toggle player\n * controls. So touch events can't help us at the player level either.\n *\n * User activity gets checked asynchronously. So what could happen is a tap event\n * on the video turns the controls off. Then the `touchend` event bubbles up to\n * the player. Which, if it reported user activity, would turn the controls right\n * back on. We also don't want to completely block touch events from bubbling up.\n * Furthermore a `touchmove` event and anything other than a tap, should not turn\n * controls back on.\n *\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchend\n * @listens Component#touchcancel\n */\n enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n const report = bind_(this.player(), this.player().reportUserActivity);\n let touchHolding;\n this.on('touchstart', function () {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n const touchEnd = function (event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n\n /**\n * A callback that has no parameters and is bound into `Component`s context.\n *\n * @callback Component~GenericCallback\n * @this Component\n */\n\n /**\n * Creates a function that runs after an `x` millisecond timeout. This function is a\n * wrapper around `window.setTimeout`. There are a few reasons to use this one\n * instead though:\n * 1. It gets cleared via {@link Component#clearTimeout} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will gets turned into a {@link Component~GenericCallback}\n *\n * > Note: You can't use `window.clearTimeout` on the id returned by this function. This\n * will cause its dispose listener not to get cleaned up! Please use\n * {@link Component#clearTimeout} or {@link Component#dispose} instead.\n *\n * @param {Component~GenericCallback} fn\n * The function that will be run after `timeout`.\n *\n * @param {number} timeout\n * Timeout in milliseconds to delay before executing the specified function.\n *\n * @return {number}\n * Returns a timeout ID that gets used to identify the timeout. It can also\n * get used in {@link Component#clearTimeout} to clear the timeout that\n * was set.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout}\n */\n setTimeout(fn, timeout) {\n // declare as variables so they are properly available in timeout function\n // eslint-disable-next-line\n var timeoutId;\n fn = bind_(this, fn);\n this.clearTimersOnDispose_();\n timeoutId = window$1.setTimeout(() => {\n if (this.setTimeoutIds_.has(timeoutId)) {\n this.setTimeoutIds_.delete(timeoutId);\n }\n fn();\n }, timeout);\n this.setTimeoutIds_.add(timeoutId);\n return timeoutId;\n }\n\n /**\n * Clears a timeout that gets created via `window.setTimeout` or\n * {@link Component#setTimeout}. If you set a timeout via {@link Component#setTimeout}\n * use this function instead of `window.clearTimout`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} timeoutId\n * The id of the timeout to clear. The return value of\n * {@link Component#setTimeout} or `window.setTimeout`.\n *\n * @return {number}\n * Returns the timeout id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearTimeout}\n */\n clearTimeout(timeoutId) {\n if (this.setTimeoutIds_.has(timeoutId)) {\n this.setTimeoutIds_.delete(timeoutId);\n window$1.clearTimeout(timeoutId);\n }\n return timeoutId;\n }\n\n /**\n * Creates a function that gets run every `x` milliseconds. This function is a wrapper\n * around `window.setInterval`. There are a few reasons to use this one instead though.\n * 1. It gets cleared via {@link Component#clearInterval} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will be a {@link Component~GenericCallback}\n *\n * @param {Component~GenericCallback} fn\n * The function to run every `x` seconds.\n *\n * @param {number} interval\n * Execute the specified function every `x` milliseconds.\n *\n * @return {number}\n * Returns an id that can be used to identify the interval. It can also be be used in\n * {@link Component#clearInterval} to clear the interval.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval}\n */\n setInterval(fn, interval) {\n fn = bind_(this, fn);\n this.clearTimersOnDispose_();\n const intervalId = window$1.setInterval(fn, interval);\n this.setIntervalIds_.add(intervalId);\n return intervalId;\n }\n\n /**\n * Clears an interval that gets created via `window.setInterval` or\n * {@link Component#setInterval}. If you set an interval via {@link Component#setInterval}\n * use this function instead of `window.clearInterval`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} intervalId\n * The id of the interval to clear. The return value of\n * {@link Component#setInterval} or `window.setInterval`.\n *\n * @return {number}\n * Returns the interval id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval}\n */\n clearInterval(intervalId) {\n if (this.setIntervalIds_.has(intervalId)) {\n this.setIntervalIds_.delete(intervalId);\n window$1.clearInterval(intervalId);\n }\n return intervalId;\n }\n\n /**\n * Queues up a callback to be passed to requestAnimationFrame (rAF), but\n * with a few extra bonuses:\n *\n * - Supports browsers that do not support rAF by falling back to\n * {@link Component#setTimeout}.\n *\n * - The callback is turned into a {@link Component~GenericCallback} (i.e.\n * bound to the component).\n *\n * - Automatic cancellation of the rAF callback is handled if the component\n * is disposed before it is called.\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n *\n * @return {number}\n * Returns an rAF ID that gets used to identify the timeout. It can\n * also be used in {@link Component#cancelAnimationFrame} to cancel\n * the animation frame callback.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame}\n */\n requestAnimationFrame(fn) {\n this.clearTimersOnDispose_();\n\n // declare as variables so they are properly available in rAF function\n // eslint-disable-next-line\n var id;\n fn = bind_(this, fn);\n id = window$1.requestAnimationFrame(() => {\n if (this.rafIds_.has(id)) {\n this.rafIds_.delete(id);\n }\n fn();\n });\n this.rafIds_.add(id);\n return id;\n }\n\n /**\n * Request an animation frame, but only one named animation\n * frame will be queued. Another will never be added until\n * the previous one finishes.\n *\n * @param {string} name\n * The name to give this requestAnimationFrame\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n */\n requestNamedAnimationFrame(name, fn) {\n if (this.namedRafs_.has(name)) {\n this.cancelNamedAnimationFrame(name);\n }\n this.clearTimersOnDispose_();\n fn = bind_(this, fn);\n const id = this.requestAnimationFrame(() => {\n fn();\n if (this.namedRafs_.has(name)) {\n this.namedRafs_.delete(name);\n }\n });\n this.namedRafs_.set(name, id);\n return name;\n }\n\n /**\n * Cancels a current named animation frame if it exists.\n *\n * @param {string} name\n * The name of the requestAnimationFrame to cancel.\n */\n cancelNamedAnimationFrame(name) {\n if (!this.namedRafs_.has(name)) {\n return;\n }\n this.cancelAnimationFrame(this.namedRafs_.get(name));\n this.namedRafs_.delete(name);\n }\n\n /**\n * Cancels a queued callback passed to {@link Component#requestAnimationFrame}\n * (rAF).\n *\n * If you queue an rAF callback via {@link Component#requestAnimationFrame},\n * use this function instead of `window.cancelAnimationFrame`. If you don't,\n * your dispose listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} id\n * The rAF ID to clear. The return value of {@link Component#requestAnimationFrame}.\n *\n * @return {number}\n * Returns the rAF ID that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/cancelAnimationFrame}\n */\n cancelAnimationFrame(id) {\n if (this.rafIds_.has(id)) {\n this.rafIds_.delete(id);\n window$1.cancelAnimationFrame(id);\n }\n return id;\n }\n\n /**\n * A function to setup `requestAnimationFrame`, `setTimeout`,\n * and `setInterval`, clearing on dispose.\n *\n * > Previously each timer added and removed dispose listeners on it's own.\n * For better performance it was decided to batch them all, and use `Set`s\n * to track outstanding timer ids.\n *\n * @private\n */\n clearTimersOnDispose_() {\n if (this.clearingTimersOnDispose_) {\n return;\n }\n this.clearingTimersOnDispose_ = true;\n this.one('dispose', () => {\n [['namedRafs_', 'cancelNamedAnimationFrame'], ['rafIds_', 'cancelAnimationFrame'], ['setTimeoutIds_', 'clearTimeout'], ['setIntervalIds_', 'clearInterval']].forEach(([idName, cancelName]) => {\n // for a `Set` key will actually be the value again\n // so forEach((val, val) =>` but for maps we want to use\n // the key.\n this[idName].forEach((val, key) => this[cancelName](key));\n });\n this.clearingTimersOnDispose_ = false;\n });\n }\n\n /**\n * Decide whether an element is actually disabled or not.\n *\n * @function isActuallyDisabled\n * @param element {Node}\n * @return {boolean}\n *\n * @see {@link https://html.spec.whatwg.org/multipage/semantics-other.html#concept-element-disabled}\n */\n getIsDisabled() {\n return Boolean(this.el_.disabled);\n }\n\n /**\n * Decide whether the element is expressly inert or not.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/interaction.html#expressly-inert}\n * @function isExpresslyInert\n * @param element {Node}\n * @return {boolean}\n */\n getIsExpresslyInert() {\n return this.el_.inert && !this.el_.ownerDocument.documentElement.inert;\n }\n\n /**\n * Determine whether or not this component can be considered as focusable component.\n *\n * @param {HTMLElement} el - The HTML element representing the component.\n * @return {boolean}\n * If the component can be focused, will be `true`. Otherwise, `false`.\n */\n getIsFocusable(el) {\n const element = el || this.el_;\n return element.tabIndex >= 0 && !(this.getIsDisabled() || this.getIsExpresslyInert());\n }\n\n /**\n * Determine whether or not this component is currently visible/enabled/etc...\n *\n * @param {HTMLElement} el - The HTML element representing the component.\n * @return {boolean}\n * If the component can is currently visible & enabled, will be `true`. Otherwise, `false`.\n */\n getIsAvailableToBeFocused(el) {\n /**\n * Decide the style property of this element is specified whether it's visible or not.\n *\n * @function isVisibleStyleProperty\n * @param element {CSSStyleDeclaration}\n * @return {boolean}\n */\n function isVisibleStyleProperty(element) {\n const elementStyle = window$1.getComputedStyle(element, null);\n const thisVisibility = elementStyle.getPropertyValue('visibility');\n const thisDisplay = elementStyle.getPropertyValue('display');\n const invisibleStyle = ['hidden', 'collapse'];\n return thisDisplay !== 'none' && !invisibleStyle.includes(thisVisibility);\n }\n\n /**\n * Decide whether the element is being rendered or not.\n * 1. If an element has the style as \"visibility: hidden | collapse\" or \"display: none\", it is not being rendered.\n * 2. If an element has the style as \"opacity: 0\", it is not being rendered.(that is, invisible).\n * 3. If width and height of an element are explicitly set to 0, it is not being rendered.\n * 4. If a parent element is hidden, an element itself is not being rendered.\n * (CSS visibility property and display property are inherited.)\n *\n * @see {@link https://html.spec.whatwg.org/multipage/rendering.html#being-rendered}\n * @function isBeingRendered\n * @param element {Node}\n * @return {boolean}\n */\n function isBeingRendered(element) {\n if (!isVisibleStyleProperty(element.parentElement)) {\n return false;\n }\n if (!isVisibleStyleProperty(element) || element.style.opacity === '0' || window$1.getComputedStyle(element).height === '0px' || window$1.getComputedStyle(element).width === '0px') {\n return false;\n }\n return true;\n }\n\n /**\n * Determine if the element is visible for the user or not.\n * 1. If an element sum of its offsetWidth, offsetHeight, height and width is less than 1 is not visible.\n * 2. If elementCenter.x is less than is not visible.\n * 3. If elementCenter.x is more than the document's width is not visible.\n * 4. If elementCenter.y is less than 0 is not visible.\n * 5. If elementCenter.y is the document's height is not visible.\n *\n * @function isVisible\n * @param element {Node}\n * @return {boolean}\n */\n function isVisible(element) {\n if (element.offsetWidth + element.offsetHeight + element.getBoundingClientRect().height + element.getBoundingClientRect().width === 0) {\n return false;\n }\n\n // Define elementCenter object with props of x and y\n // x: Left position relative to the viewport plus element's width (no margin) divided between 2.\n // y: Top position relative to the viewport plus element's height (no margin) divided between 2.\n const elementCenter = {\n x: element.getBoundingClientRect().left + element.offsetWidth / 2,\n y: element.getBoundingClientRect().top + element.offsetHeight / 2\n };\n if (elementCenter.x < 0) {\n return false;\n }\n if (elementCenter.x > (document$1.documentElement.clientWidth || window$1.innerWidth)) {\n return false;\n }\n if (elementCenter.y < 0) {\n return false;\n }\n if (elementCenter.y > (document$1.documentElement.clientHeight || window$1.innerHeight)) {\n return false;\n }\n let pointContainer = document$1.elementFromPoint(elementCenter.x, elementCenter.y);\n while (pointContainer) {\n if (pointContainer === element) {\n return true;\n }\n if (pointContainer.parentNode) {\n pointContainer = pointContainer.parentNode;\n } else {\n return false;\n }\n }\n }\n\n // If no DOM element was passed as argument use this component's element.\n if (!el) {\n el = this.el();\n }\n\n // If element is visible, is being rendered & either does not have a parent element or its tabIndex is not negative.\n if (isVisible(el) && isBeingRendered(el) && (!el.parentElement || el.tabIndex >= 0)) {\n return true;\n }\n return false;\n }\n\n /**\n * Register a `Component` with `videojs` given the name and the component.\n *\n * > NOTE: {@link Tech}s should not be registered as a `Component`. {@link Tech}s\n * should be registered using {@link Tech.registerTech} or\n * {@link videojs:videojs.registerTech}.\n *\n * > NOTE: This function can also be seen on videojs as\n * {@link videojs:videojs.registerComponent}.\n *\n * @param {string} name\n * The name of the `Component` to register.\n *\n * @param {Component} ComponentToRegister\n * The `Component` class to register.\n *\n * @return {Component}\n * The `Component` that was registered.\n */\n static registerComponent(name, ComponentToRegister) {\n if (typeof name !== 'string' || !name) {\n throw new Error(`Illegal component name, \"${name}\"; must be a non-empty string.`);\n }\n const Tech = Component$1.getComponent('Tech');\n\n // We need to make sure this check is only done if Tech has been registered.\n const isTech = Tech && Tech.isTech(ComponentToRegister);\n const isComp = Component$1 === ComponentToRegister || Component$1.prototype.isPrototypeOf(ComponentToRegister.prototype);\n if (isTech || !isComp) {\n let reason;\n if (isTech) {\n reason = 'techs must be registered using Tech.registerTech()';\n } else {\n reason = 'must be a Component subclass';\n }\n throw new Error(`Illegal component, \"${name}\"; ${reason}.`);\n }\n name = toTitleCase$1(name);\n if (!Component$1.components_) {\n Component$1.components_ = {};\n }\n const Player = Component$1.getComponent('Player');\n if (name === 'Player' && Player && Player.players) {\n const players = Player.players;\n const playerNames = Object.keys(players);\n\n // If we have players that were disposed, then their name will still be\n // in Players.players. So, we must loop through and verify that the value\n // for each item is null. This allows registration of the Player component\n // after all players have been disposed or before any were created.\n if (players && playerNames.length > 0) {\n for (let i = 0; i < playerNames.length; i++) {\n if (players[playerNames[i]] !== null) {\n throw new Error('Can not register Player component after player has been created.');\n }\n }\n }\n }\n Component$1.components_[name] = ComponentToRegister;\n Component$1.components_[toLowerCase(name)] = ComponentToRegister;\n return ComponentToRegister;\n }\n\n /**\n * Get a `Component` based on the name it was registered with.\n *\n * @param {string} name\n * The Name of the component to get.\n *\n * @return {typeof Component}\n * The `Component` that got registered under the given name.\n */\n static getComponent(name) {\n if (!name || !Component$1.components_) {\n return;\n }\n return Component$1.components_[name];\n }\n}\nComponent$1.registerComponent('Component', Component$1);\n\n/**\n * @file time.js\n * @module time\n */\n\n/**\n * Returns the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @typedef {Function} TimeRangeIndex\n *\n * @param {number} [index=0]\n * The range number to return the time for.\n *\n * @return {number}\n * The time offset at the specified index.\n *\n * @deprecated The index argument must be provided.\n * In the future, leaving it out will throw an error.\n */\n\n/**\n * An object that contains ranges of time, which mimics {@link TimeRanges}.\n *\n * @typedef {Object} TimeRange\n *\n * @property {number} length\n * The number of time ranges represented by this object.\n *\n * @property {module:time~TimeRangeIndex} start\n * Returns the time offset at which a specified time range begins.\n *\n * @property {module:time~TimeRangeIndex} end\n * Returns the time offset at which a specified time range ends.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges\n */\n\n/**\n * Check if any of the time ranges are over the maximum index.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {number} index\n * The index to check\n *\n * @param {number} maxIndex\n * The maximum possible index\n *\n * @throws {Error} if the timeRanges provided are over the maxIndex\n */\nfunction rangeCheck(fnName, index, maxIndex) {\n if (typeof index !== 'number' || index < 0 || index > maxIndex) {\n throw new Error(`Failed to execute '${fnName}' on 'TimeRanges': The index provided (${index}) is non-numeric or out of bounds (0-${maxIndex}).`);\n }\n}\n\n/**\n * Get the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {string} valueIndex\n * The property that should be used to get the time. should be\n * 'start' or 'end'\n *\n * @param {Array} ranges\n * An array of time ranges\n *\n * @param {Array} [rangeIndex=0]\n * The index to start the search at\n *\n * @return {number}\n * The time that offset at the specified index.\n *\n * @deprecated rangeIndex must be set to a value, in the future this will throw an error.\n * @throws {Error} if rangeIndex is more than the length of ranges\n */\nfunction getRange(fnName, valueIndex, ranges, rangeIndex) {\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n\n/**\n * Create a time range object given ranges of time.\n *\n * @private\n * @param {Array} [ranges]\n * An array of time ranges.\n *\n * @return {TimeRange}\n */\nfunction createTimeRangesObj(ranges) {\n let timeRangesObj;\n if (ranges === undefined || ranges.length === 0) {\n timeRangesObj = {\n length: 0,\n start() {\n throw new Error('This TimeRanges object is empty');\n },\n end() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n } else {\n timeRangesObj = {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n }\n if (window$1.Symbol && window$1.Symbol.iterator) {\n timeRangesObj[window$1.Symbol.iterator] = () => (ranges || []).values();\n }\n return timeRangesObj;\n}\n\n/**\n * Create a `TimeRange` object which mimics an\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges|HTML5 TimeRanges instance}.\n *\n * @param {number|Array[]} start\n * The start of a single range (a number) or an array of ranges (an\n * array of arrays of two numbers each).\n *\n * @param {number} end\n * The end of a single range. Cannot be used with the array form of\n * the `start` argument.\n *\n * @return {TimeRange}\n */\nfunction createTimeRanges$1(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n return createTimeRangesObj([[start, end]]);\n}\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS. Supplying a guide (in\n * seconds) will force a number of leading zeros to cover the length of the\n * guide.\n *\n * @private\n * @param {number} seconds\n * Number of seconds to be turned into a string\n *\n * @param {number} guide\n * Number (in seconds) to model the string after\n *\n * @return {string}\n * Time formatted as H:MM:SS or M:SS\n */\nconst defaultImplementation = function (seconds, guide) {\n seconds = seconds < 0 ? 0 : seconds;\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = h > 0 || gh > 0 ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = ((h || gm >= 10) && m < 10 ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = s < 10 ? '0' + s : s;\n return h + m + s;\n};\n\n// Internal pointer to the current implementation.\nlet implementation = defaultImplementation;\n\n/**\n * Replaces the default formatTime implementation with a custom implementation.\n *\n * @param {Function} customImplementation\n * A function which will be used in place of the default formatTime\n * implementation. Will receive the current time in seconds and the\n * guide (in seconds) as arguments.\n */\nfunction setFormatTime(customImplementation) {\n implementation = customImplementation;\n}\n\n/**\n * Resets formatTime to the default implementation.\n */\nfunction resetFormatTime() {\n implementation = defaultImplementation;\n}\n\n/**\n * Delegates to either the default time formatting function or a custom\n * function supplied via `setFormatTime`.\n *\n * Formats seconds as a time string (H:MM:SS or M:SS). Supplying a\n * guide (in seconds) will force a number of leading zeros to cover the\n * length of the guide.\n *\n * @example formatTime(125, 600) === \"02:05\"\n * @param {number} seconds\n * Number of seconds to be turned into a string\n *\n * @param {number} guide\n * Number (in seconds) to model the string after\n *\n * @return {string}\n * Time formatted as H:MM:SS or M:SS\n */\nfunction formatTime(seconds, guide = seconds) {\n return implementation(seconds, guide);\n}\n\nvar Time = /*#__PURE__*/Object.freeze({\n __proto__: null,\n createTimeRanges: createTimeRanges$1,\n createTimeRange: createTimeRanges$1,\n setFormatTime: setFormatTime,\n resetFormatTime: resetFormatTime,\n formatTime: formatTime\n});\n\n/**\n * @file buffer.js\n * @module buffer\n */\n\n/** @import { TimeRange } from './time' */\n\n/**\n * Compute the percentage of the media that has been buffered.\n *\n * @param {TimeRange} buffered\n * The current `TimeRanges` object representing buffered time ranges\n *\n * @param {number} duration\n * Total duration of the media\n *\n * @return {number}\n * Percent buffered of the total duration in decimal form.\n */\nfunction bufferedPercent(buffered, duration) {\n let bufferedDuration = 0;\n let start;\n let end;\n if (!duration) {\n return 0;\n }\n if (!buffered || !buffered.length) {\n buffered = createTimeRanges$1(0, 0);\n }\n for (let i = 0; i < buffered.length; i++) {\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n bufferedDuration += end - start;\n }\n return bufferedDuration / duration;\n}\n\n/**\n * @file media-error.js\n */\n\n/**\n * A Custom `MediaError` class which mimics the standard HTML5 `MediaError` class.\n *\n * @param {number|string|Object|MediaError} value\n * This can be of multiple types:\n * - number: should be a standard error code\n * - string: an error message (the code will be 0)\n * - Object: arbitrary properties\n * - `MediaError` (native): used to populate a video.js `MediaError` object\n * - `MediaError` (video.js): will return itself if it's already a\n * video.js `MediaError` object.\n *\n * @see [MediaError Spec]{@link https://dev.w3.org/html5/spec-author-view/video.html#mediaerror}\n * @see [Encrypted MediaError Spec]{@link https://www.w3.org/TR/2013/WD-encrypted-media-20130510/#error-codes}\n *\n * @class MediaError\n */\nfunction MediaError(value) {\n // Allow redundant calls to this constructor to avoid having `instanceof`\n // checks peppered around the code.\n if (value instanceof MediaError) {\n return value;\n }\n if (typeof value === 'number') {\n this.code = value;\n } else if (typeof value === 'string') {\n // default code is zero, so this is a custom error\n this.message = value;\n } else if (isObject(value)) {\n // We assign the `code` property manually because native `MediaError` objects\n // do not expose it as an own/enumerable property of the object.\n if (typeof value.code === 'number') {\n this.code = value.code;\n }\n Object.assign(this, value);\n }\n if (!this.message) {\n this.message = MediaError.defaultMessages[this.code] || '';\n }\n}\n\n/**\n * The error code that refers two one of the defined `MediaError` types\n *\n * @type {Number}\n */\nMediaError.prototype.code = 0;\n\n/**\n * An optional message that to show with the error. Message is not part of the HTML5\n * video spec but allows for more informative custom errors.\n *\n * @type {String}\n */\nMediaError.prototype.message = '';\n\n/**\n * An optional status code that can be set by plugins to allow even more detail about\n * the error. For example a plugin might provide a specific HTTP status code and an\n * error message for that code. Then when the plugin gets that error this class will\n * know how to display an error message for it. This allows a custom message to show\n * up on the `Player` error overlay.\n *\n * @type {Array}\n */\nMediaError.prototype.status = null;\n\n/**\n * An object containing an error type, as well as other information regarding the error.\n *\n * @typedef {{errorType: string, [key: string]: any}} ErrorMetadata\n */\n\n/**\n * An optional object to give more detail about the error. This can be used to give\n * a higher level of specificity to an error versus the more generic MediaError codes.\n * `metadata` expects an `errorType` string that should align with the values from videojs.Error.\n *\n * @type {ErrorMetadata}\n */\nMediaError.prototype.metadata = null;\n\n/**\n * Errors indexed by the W3C standard. The order **CANNOT CHANGE**! See the\n * specification listed under {@link MediaError} for more information.\n *\n * @enum {array}\n * @readonly\n * @property {string} 0 - MEDIA_ERR_CUSTOM\n * @property {string} 1 - MEDIA_ERR_ABORTED\n * @property {string} 2 - MEDIA_ERR_NETWORK\n * @property {string} 3 - MEDIA_ERR_DECODE\n * @property {string} 4 - MEDIA_ERR_SRC_NOT_SUPPORTED\n * @property {string} 5 - MEDIA_ERR_ENCRYPTED\n */\nMediaError.errorTypes = ['MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED'];\n\n/**\n * The default `MediaError` messages based on the {@link MediaError.errorTypes}.\n *\n * @type {Array}\n * @constant\n */\nMediaError.defaultMessages = {\n 1: 'You aborted the media playback',\n 2: 'A network error caused the media download to fail part-way.',\n 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.',\n 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.',\n 5: 'The media is encrypted and we do not have the keys to decrypt it.'\n};\n\n/**\n * W3C error code for any custom error.\n *\n * @member MediaError#MEDIA_ERR_CUSTOM\n * @constant {number}\n * @default 0\n */\nMediaError.MEDIA_ERR_CUSTOM = 0;\n\n/**\n * W3C error code for any custom error.\n *\n * @member MediaError.MEDIA_ERR_CUSTOM\n * @constant {number}\n * @default 0\n */\nMediaError.prototype.MEDIA_ERR_CUSTOM = 0;\n\n/**\n * W3C error code for media error aborted.\n *\n * @member MediaError#MEDIA_ERR_ABORTED\n * @constant {number}\n * @default 1\n */\nMediaError.MEDIA_ERR_ABORTED = 1;\n\n/**\n * W3C error code for media error aborted.\n *\n * @member MediaError.MEDIA_ERR_ABORTED\n * @constant {number}\n * @default 1\n */\nMediaError.prototype.MEDIA_ERR_ABORTED = 1;\n\n/**\n * W3C error code for any network error.\n *\n * @member MediaError#MEDIA_ERR_NETWORK\n * @constant {number}\n * @default 2\n */\nMediaError.MEDIA_ERR_NETWORK = 2;\n\n/**\n * W3C error code for any network error.\n *\n * @member MediaError.MEDIA_ERR_NETWORK\n * @constant {number}\n * @default 2\n */\nMediaError.prototype.MEDIA_ERR_NETWORK = 2;\n\n/**\n * W3C error code for any decoding error.\n *\n * @member MediaError#MEDIA_ERR_DECODE\n * @constant {number}\n * @default 3\n */\nMediaError.MEDIA_ERR_DECODE = 3;\n\n/**\n * W3C error code for any decoding error.\n *\n * @member MediaError.MEDIA_ERR_DECODE\n * @constant {number}\n * @default 3\n */\nMediaError.prototype.MEDIA_ERR_DECODE = 3;\n\n/**\n * W3C error code for any time that a source is not supported.\n *\n * @member MediaError#MEDIA_ERR_SRC_NOT_SUPPORTED\n * @constant {number}\n * @default 4\n */\nMediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\n/**\n * W3C error code for any time that a source is not supported.\n *\n * @member MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED\n * @constant {number}\n * @default 4\n */\nMediaError.prototype.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\n/**\n * W3C error code for any time that a source is encrypted.\n *\n * @member MediaError#MEDIA_ERR_ENCRYPTED\n * @constant {number}\n * @default 5\n */\nMediaError.MEDIA_ERR_ENCRYPTED = 5;\n\n/**\n * W3C error code for any time that a source is encrypted.\n *\n * @member MediaError.MEDIA_ERR_ENCRYPTED\n * @constant {number}\n * @default 5\n */\nMediaError.prototype.MEDIA_ERR_ENCRYPTED = 5;\n\n/**\n * Returns whether an object is `Promise`-like (i.e. has a `then` method).\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n *\n * @return {boolean}\n * Whether or not the object is `Promise`-like.\n */\nfunction isPromise(value) {\n return value !== undefined && value !== null && typeof value.then === 'function';\n}\n\n/**\n * Silence a Promise-like object.\n *\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n */\nfunction silencePromise(value) {\n if (isPromise(value)) {\n value.then(null, e => {});\n }\n}\n\n/**\n * @file text-track-list-converter.js Utilities for capturing text track state and\n * re-creating tracks based on a capture.\n *\n * @module text-track-list-converter\n */\n\n/** @import Tech from '../tech/tech' */\n\n/**\n * Examine a single {@link TextTrack} and return a JSON-compatible javascript object that\n * represents the {@link TextTrack}'s state.\n *\n * @param {TextTrack} track\n * The text track to query.\n *\n * @return {Object}\n * A serializable javascript representation of the TextTrack.\n * @private\n */\nconst trackToJson_ = function (track) {\n const ret = ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce((acc, prop, i) => {\n if (track[prop]) {\n acc[prop] = track[prop];\n }\n return acc;\n }, {\n cues: track.cues && Array.prototype.map.call(track.cues, function (cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n })\n });\n return ret;\n};\n\n/**\n * Examine a {@link Tech} and return a JSON-compatible javascript array that represents the\n * state of all {@link TextTrack}s currently configured. The return array is compatible with\n * {@link text-track-list-converter:jsonToTextTracks}.\n *\n * @param {Tech} tech\n * The tech object to query\n *\n * @return {Array}\n * A serializable javascript representation of the {@link Tech}s\n * {@link TextTrackList}.\n */\nconst textTracksToJson = function (tech) {\n const trackEls = tech.$$('track');\n const trackObjs = Array.prototype.map.call(trackEls, t => t.track);\n const tracks = Array.prototype.map.call(trackEls, function (trackEl) {\n const json = trackToJson_(trackEl.track);\n if (trackEl.src) {\n json.src = trackEl.src;\n }\n return json;\n });\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function (track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Create a set of remote {@link TextTrack}s on a {@link Tech} based on an array of javascript\n * object {@link TextTrack} representations.\n *\n * @param {Array} json\n * An array of `TextTrack` representation objects, like those that would be\n * produced by `textTracksToJson`.\n *\n * @param {Tech} tech\n * The `Tech` to create the `TextTrack`s on.\n */\nconst jsonToTextTracks = function (json, tech) {\n json.forEach(function (track) {\n const addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach(cue => addedTrack.addCue(cue));\n }\n });\n return tech.textTracks();\n};\nvar textTrackConverter = {\n textTracksToJson,\n jsonToTextTracks,\n trackToJson_\n};\n\n/**\n * @file modal-dialog.js\n */\n\n/** @import Player from './player' */\n/** @import { ContentDescriptor } from './utils/dom' */\n\nconst MODAL_CLASS_NAME = 'vjs-modal-dialog';\n\n/**\n * The `ModalDialog` displays over the video and its controls, which blocks\n * interaction with the player until it is closed.\n *\n * Modal dialogs include a \"Close\" button and will close when that button\n * is activated - or when ESC is pressed anywhere.\n *\n * @extends Component\n */\nclass ModalDialog extends Component$1 {\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {ContentDescriptor} [options.content=undefined]\n * Provide customized content for this modal.\n *\n * @param {string} [options.description]\n * A text description for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.fillAlways=false]\n * Normally, modals are automatically filled only the first time\n * they open. This tells the modal to refresh its content\n * every time it opens.\n *\n * @param {string} [options.label]\n * A text label for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.pauseOnOpen=true]\n * If `true`, playback will will be paused if playing when\n * the modal opens, and resumed when it closes.\n *\n * @param {boolean} [options.temporary=true]\n * If `true`, the modal can only be opened once; it will be\n * disposed as soon as it's closed.\n *\n * @param {boolean} [options.uncloseable=false]\n * If `true`, the user will not be able to close the modal\n * through the UI in the normal ways. Programmatic closing is\n * still possible.\n */\n constructor(player, options) {\n super(player, options);\n this.handleKeyDown_ = e => this.handleKeyDown(e);\n this.close_ = e => this.close(e);\n this.opened_ = this.hasBeenOpened_ = this.hasBeenFilled_ = false;\n this.closeable(!this.options_.uncloseable);\n this.content(this.options_.content);\n\n // Make sure the contentEl is defined AFTER any children are initialized\n // because we only want the contents of the modal in the contentEl\n // (not the UI elements like the close button).\n this.contentEl_ = createEl('div', {\n className: `${MODAL_CLASS_NAME}-content`\n }, {\n role: 'document'\n });\n this.descEl_ = createEl('p', {\n className: `${MODAL_CLASS_NAME}-description vjs-control-text`,\n id: this.el().getAttribute('aria-describedby')\n });\n textContent(this.descEl_, this.description());\n this.el_.appendChild(this.descEl_);\n this.el_.appendChild(this.contentEl_);\n }\n\n /**\n * Create the `ModalDialog`'s DOM element\n *\n * @return {Element}\n * The DOM element that gets created.\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass(),\n tabIndex: -1\n }, {\n 'aria-describedby': `${this.id()}_description`,\n 'aria-hidden': 'true',\n 'aria-label': this.label(),\n 'role': 'dialog',\n 'aria-live': 'polite'\n });\n }\n dispose() {\n this.contentEl_ = null;\n this.descEl_ = null;\n this.previouslyActiveEl_ = null;\n super.dispose();\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n buildCSSClass() {\n return `${MODAL_CLASS_NAME} vjs-hidden ${super.buildCSSClass()}`;\n }\n\n /**\n * Returns the label string for this modal. Primarily used for accessibility.\n *\n * @return {string}\n * the localized or raw label of this modal.\n */\n label() {\n return this.localize(this.options_.label || 'Modal Window');\n }\n\n /**\n * Returns the description string for this modal. Primarily used for\n * accessibility.\n *\n * @return {string}\n * The localized or raw description of this modal.\n */\n description() {\n let desc = this.options_.description || this.localize('This is a modal window.');\n\n // Append a universal closeability message if the modal is closeable.\n if (this.closeable()) {\n desc += ' ' + this.localize('This modal can be closed by pressing the Escape key or activating the close button.');\n }\n return desc;\n }\n\n /**\n * Opens the modal.\n *\n * @fires ModalDialog#beforemodalopen\n * @fires ModalDialog#modalopen\n */\n open() {\n if (this.opened_) {\n if (this.options_.fillAlways) {\n this.fill();\n }\n return;\n }\n const player = this.player();\n\n /**\n * Fired just before a `ModalDialog` is opened.\n *\n * @event ModalDialog#beforemodalopen\n * @type {Event}\n */\n this.trigger('beforemodalopen');\n this.opened_ = true;\n\n // Fill content if the modal has never opened before and\n // never been filled.\n if (this.options_.fillAlways || !this.hasBeenOpened_ && !this.hasBeenFilled_) {\n this.fill();\n }\n\n // If the player was playing, pause it and take note of its previously\n // playing state.\n this.wasPlaying_ = !player.paused();\n if (this.options_.pauseOnOpen && this.wasPlaying_) {\n player.pause();\n }\n this.on('keydown', this.handleKeyDown_);\n\n // Hide controls and note if they were enabled.\n this.hadControls_ = player.controls();\n player.controls(false);\n this.show();\n this.conditionalFocus_();\n this.el().setAttribute('aria-hidden', 'false');\n\n /**\n * Fired just after a `ModalDialog` is opened.\n *\n * @event ModalDialog#modalopen\n * @type {Event}\n */\n this.trigger('modalopen');\n this.hasBeenOpened_ = true;\n }\n\n /**\n * If the `ModalDialog` is currently open or closed.\n *\n * @param {boolean} [value]\n * If given, it will open (`true`) or close (`false`) the modal.\n *\n * @return {boolean}\n * the current open state of the modaldialog\n */\n opened(value) {\n if (typeof value === 'boolean') {\n this[value ? 'open' : 'close']();\n }\n return this.opened_;\n }\n\n /**\n * Closes the modal, does nothing if the `ModalDialog` is\n * not open.\n *\n * @fires ModalDialog#beforemodalclose\n * @fires ModalDialog#modalclose\n */\n close() {\n if (!this.opened_) {\n return;\n }\n const player = this.player();\n\n /**\n * Fired just before a `ModalDialog` is closed.\n *\n * @event ModalDialog#beforemodalclose\n * @type {Event}\n */\n this.trigger('beforemodalclose');\n this.opened_ = false;\n if (this.wasPlaying_ && this.options_.pauseOnOpen) {\n player.play();\n }\n this.off('keydown', this.handleKeyDown_);\n if (this.hadControls_) {\n player.controls(true);\n }\n this.hide();\n this.el().setAttribute('aria-hidden', 'true');\n\n /**\n * Fired just after a `ModalDialog` is closed.\n *\n * @event ModalDialog#modalclose\n * @type {Event}\n *\n * @property {boolean} [bubbles=true]\n */\n this.trigger({\n type: 'modalclose',\n bubbles: true\n });\n this.conditionalBlur_();\n if (this.options_.temporary) {\n this.dispose();\n }\n }\n\n /**\n * Check to see if the `ModalDialog` is closeable via the UI.\n *\n * @param {boolean} [value]\n * If given as a boolean, it will set the `closeable` option.\n *\n * @return {boolean}\n * Returns the final value of the closable option.\n */\n closeable(value) {\n if (typeof value === 'boolean') {\n const closeable = this.closeable_ = !!value;\n let close = this.getChild('closeButton');\n\n // If this is being made closeable and has no close button, add one.\n if (closeable && !close) {\n // The close button should be a child of the modal - not its\n // content element, so temporarily change the content element.\n const temp = this.contentEl_;\n this.contentEl_ = this.el_;\n close = this.addChild('closeButton', {\n controlText: 'Close Modal Dialog'\n });\n this.contentEl_ = temp;\n this.on(close, 'close', this.close_);\n }\n\n // If this is being made uncloseable and has a close button, remove it.\n if (!closeable && close) {\n this.off(close, 'close', this.close_);\n this.removeChild(close);\n close.dispose();\n }\n }\n return this.closeable_;\n }\n\n /**\n * Fill the modal's content element with the modal's \"content\" option.\n * The content element will be emptied before this change takes place.\n */\n fill() {\n this.fillWith(this.content());\n }\n\n /**\n * Fill the modal's content element with arbitrary content.\n * The content element will be emptied before this change takes place.\n *\n * @fires ModalDialog#beforemodalfill\n * @fires ModalDialog#modalfill\n *\n * @param {ContentDescriptor} [content]\n * The same rules apply to this as apply to the `content` option.\n */\n fillWith(content) {\n const contentEl = this.contentEl();\n const parentEl = contentEl.parentNode;\n const nextSiblingEl = contentEl.nextSibling;\n\n /**\n * Fired just before a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#beforemodalfill\n * @type {Event}\n */\n this.trigger('beforemodalfill');\n this.hasBeenFilled_ = true;\n\n // Detach the content element from the DOM before performing\n // manipulation to avoid modifying the live DOM multiple times.\n parentEl.removeChild(contentEl);\n this.empty();\n insertContent(contentEl, content);\n /**\n * Fired just after a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#modalfill\n * @type {Event}\n */\n this.trigger('modalfill');\n\n // Re-inject the re-filled content element.\n if (nextSiblingEl) {\n parentEl.insertBefore(contentEl, nextSiblingEl);\n } else {\n parentEl.appendChild(contentEl);\n }\n\n // make sure that the close button is last in the dialog DOM\n const closeButton = this.getChild('closeButton');\n if (closeButton) {\n parentEl.appendChild(closeButton.el_);\n }\n\n /**\n * Fired after `ModalDialog` is re-filled with content & close button is appended.\n *\n * @event ModalDialog#aftermodalfill\n * @type {Event}\n */\n this.trigger('aftermodalfill');\n }\n\n /**\n * Empties the content element. This happens anytime the modal is filled.\n *\n * @fires ModalDialog#beforemodalempty\n * @fires ModalDialog#modalempty\n */\n empty() {\n /**\n * Fired just before a `ModalDialog` is emptied.\n *\n * @event ModalDialog#beforemodalempty\n * @type {Event}\n */\n this.trigger('beforemodalempty');\n emptyEl(this.contentEl());\n\n /**\n * Fired just after a `ModalDialog` is emptied.\n *\n * @event ModalDialog#modalempty\n * @type {Event}\n */\n this.trigger('modalempty');\n }\n\n /**\n * Gets or sets the modal content, which gets normalized before being\n * rendered into the DOM.\n *\n * This does not update the DOM or fill the modal, but it is called during\n * that process.\n *\n * @param {ContentDescriptor} [value]\n * If defined, sets the internal content value to be used on the\n * next call(s) to `fill`. This value is normalized before being\n * inserted. To \"clear\" the internal content value, pass `null`.\n *\n * @return {ContentDescriptor}\n * The current content of the modal dialog\n */\n content(value) {\n if (typeof value !== 'undefined') {\n this.content_ = value;\n }\n return this.content_;\n }\n\n /**\n * conditionally focus the modal dialog if focus was previously on the player.\n *\n * @private\n */\n conditionalFocus_() {\n const activeEl = document$1.activeElement;\n const playerEl = this.player_.el_;\n this.previouslyActiveEl_ = null;\n if (playerEl.contains(activeEl) || playerEl === activeEl) {\n this.previouslyActiveEl_ = activeEl;\n this.focus();\n }\n }\n\n /**\n * conditionally blur the element and refocus the last focused element\n *\n * @private\n */\n conditionalBlur_() {\n if (this.previouslyActiveEl_) {\n this.previouslyActiveEl_.focus();\n this.previouslyActiveEl_ = null;\n }\n }\n\n /**\n * Keydown handler. Attached when modal is focused.\n *\n * @listens keydown\n */\n handleKeyDown(event) {\n /**\n * Fired a custom keyDown event that bubbles.\n *\n * @event ModalDialog#modalKeydown\n * @type {Event}\n */\n this.trigger({\n type: 'modalKeydown',\n originalEvent: event,\n target: this,\n bubbles: true\n });\n // Do not allow keydowns to reach out of the modal dialog.\n event.stopPropagation();\n if (event.key === 'Escape' && this.closeable()) {\n event.preventDefault();\n this.close();\n return;\n }\n\n // exit early if it isn't a tab key\n if (event.key !== 'Tab') {\n return;\n }\n const focusableEls = this.focusableEls_();\n const activeEl = this.el_.querySelector(':focus');\n let focusIndex;\n for (let i = 0; i < focusableEls.length; i++) {\n if (activeEl === focusableEls[i]) {\n focusIndex = i;\n break;\n }\n }\n if (document$1.activeElement === this.el_) {\n focusIndex = 0;\n }\n if (event.shiftKey && focusIndex === 0) {\n focusableEls[focusableEls.length - 1].focus();\n event.preventDefault();\n } else if (!event.shiftKey && focusIndex === focusableEls.length - 1) {\n focusableEls[0].focus();\n event.preventDefault();\n }\n }\n\n /**\n * get all focusable elements\n *\n * @private\n */\n focusableEls_() {\n const allChildren = this.el_.querySelectorAll('*');\n return Array.prototype.filter.call(allChildren, child => {\n return (child instanceof window$1.HTMLAnchorElement || child instanceof window$1.HTMLAreaElement) && child.hasAttribute('href') || (child instanceof window$1.HTMLInputElement || child instanceof window$1.HTMLSelectElement || child instanceof window$1.HTMLTextAreaElement || child instanceof window$1.HTMLButtonElement) && !child.hasAttribute('disabled') || child instanceof window$1.HTMLIFrameElement || child instanceof window$1.HTMLObjectElement || child instanceof window$1.HTMLEmbedElement || child.hasAttribute('tabindex') && child.getAttribute('tabindex') !== -1 || child.hasAttribute('contenteditable');\n });\n }\n}\n\n/**\n * Default options for `ModalDialog` default options.\n *\n * @type {Object}\n * @private\n */\nModalDialog.prototype.options_ = {\n pauseOnOpen: true,\n temporary: true\n};\nComponent$1.registerComponent('ModalDialog', ModalDialog);\n\n/**\n * @file track-list.js\n */\n\n/** @import Track from './track' */\n\n/**\n * Common functionaliy between {@link TextTrackList}, {@link AudioTrackList}, and\n * {@link VideoTrackList}\n *\n * @extends EventTarget\n */\nclass TrackList extends EventTarget$2 {\n /**\n * Create an instance of this class\n *\n * @param { Track[] } tracks\n * A list of tracks to initialize the list with.\n *\n * @abstract\n */\n constructor(tracks = []) {\n super();\n this.tracks_ = [];\n\n /**\n * @memberof TrackList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n Object.defineProperty(this, 'length', {\n get() {\n return this.tracks_.length;\n }\n });\n for (let i = 0; i < tracks.length; i++) {\n this.addTrack(tracks[i]);\n }\n }\n\n /**\n * Add a {@link Track} to the `TrackList`\n *\n * @param {Track} track\n * The audio, video, or text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n addTrack(track) {\n const index = this.tracks_.length;\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get() {\n return this.tracks_[index];\n }\n });\n }\n\n // Do not add duplicate tracks\n if (this.tracks_.indexOf(track) === -1) {\n this.tracks_.push(track);\n /**\n * Triggered when a track is added to a track list.\n *\n * @event TrackList#addtrack\n * @type {Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n this.trigger({\n track,\n type: 'addtrack',\n target: this\n });\n }\n\n /**\n * Triggered when a track label is changed.\n *\n * @event TrackList#addtrack\n * @type {Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n track.labelchange_ = () => {\n this.trigger({\n track,\n type: 'labelchange',\n target: this\n });\n };\n if (isEvented(track)) {\n track.addEventListener('labelchange', track.labelchange_);\n }\n }\n\n /**\n * Remove a {@link Track} from the `TrackList`\n *\n * @param {Track} rtrack\n * The audio, video, or text track to remove from the list.\n *\n * @fires TrackList#removetrack\n */\n removeTrack(rtrack) {\n let track;\n for (let i = 0, l = this.length; i < l; i++) {\n if (this[i] === rtrack) {\n track = this[i];\n if (track.off) {\n track.off();\n }\n this.tracks_.splice(i, 1);\n break;\n }\n }\n if (!track) {\n return;\n }\n\n /**\n * Triggered when a track is removed from track list.\n *\n * @event TrackList#removetrack\n * @type {Event}\n * @property {Track} track\n * A reference to track that was removed.\n */\n this.trigger({\n track,\n type: 'removetrack',\n target: this\n });\n }\n\n /**\n * Get a Track from the TrackList by a tracks id\n *\n * @param {string} id - the id of the track to get\n * @method getTrackById\n * @return {Track}\n * @private\n */\n getTrackById(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n const track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n return result;\n }\n}\n\n/**\n * Triggered when a different track is selected/enabled.\n *\n * @event TrackList#change\n * @type {Event}\n */\n\n/**\n * Events that can be called with on + eventName. See {@link EventHandler}.\n *\n * @property {Object} TrackList#allowedEvents_\n * @protected\n */\nTrackList.prototype.allowedEvents_ = {\n change: 'change',\n addtrack: 'addtrack',\n removetrack: 'removetrack',\n labelchange: 'labelchange'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (const event in TrackList.prototype.allowedEvents_) {\n TrackList.prototype['on' + event] = null;\n}\n\n/**\n * @file audio-track-list.js\n */\n\n/** @import AudioTrack from './audio-track' */\n\n/**\n * Anywhere we call this function we diverge from the spec\n * as we only support one enabled audiotrack at a time\n *\n * @param {AudioTrackList} list\n * list to work on\n *\n * @param {AudioTrack} track\n * The track to skip\n *\n * @private\n */\nconst disableOthers$1 = function (list, track) {\n for (let i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n }\n // another audio track is enabled, disable it\n list[i].enabled = false;\n }\n};\n\n/**\n * The current list of {@link AudioTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist}\n * @extends TrackList\n */\nclass AudioTrackList extends TrackList {\n /**\n * Create an instance of this class.\n *\n * @param {AudioTrack[]} [tracks=[]]\n * A list of `AudioTrack` to instantiate the list with.\n */\n constructor(tracks = []) {\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (let i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].enabled) {\n disableOthers$1(tracks, tracks[i]);\n break;\n }\n }\n super(tracks);\n this.changing_ = false;\n }\n\n /**\n * Add an {@link AudioTrack} to the `AudioTrackList`.\n *\n * @param {AudioTrack} track\n * The AudioTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n addTrack(track) {\n if (track.enabled) {\n disableOthers$1(this, track);\n }\n super.addTrack(track);\n // native tracks don't have this\n if (!track.addEventListener) {\n return;\n }\n track.enabledChange_ = () => {\n // when we are disabling other tracks (since we don't support\n // more than one track at a time) we will set changing_\n // to true so that we don't trigger additional change events\n if (this.changing_) {\n return;\n }\n this.changing_ = true;\n disableOthers$1(this, track);\n this.changing_ = false;\n this.trigger('change');\n };\n\n /**\n * @listens AudioTrack#enabledchange\n * @fires TrackList#change\n */\n track.addEventListener('enabledchange', track.enabledChange_);\n }\n removeTrack(rtrack) {\n super.removeTrack(rtrack);\n if (rtrack.removeEventListener && rtrack.enabledChange_) {\n rtrack.removeEventListener('enabledchange', rtrack.enabledChange_);\n rtrack.enabledChange_ = null;\n }\n }\n}\n\n/**\n * @file video-track-list.js\n */\n\n/** @import VideoTrack from './video-track' */\n\n/**\n * Un-select all other {@link VideoTrack}s that are selected.\n *\n * @param {VideoTrackList} list\n * list to work on\n *\n * @param {VideoTrack} track\n * The track to skip\n *\n * @private\n */\nconst disableOthers = function (list, track) {\n for (let i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n }\n // another video track is enabled, disable it\n list[i].selected = false;\n }\n};\n\n/**\n * The current list of {@link VideoTrack} for a video.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist}\n * @extends TrackList\n */\nclass VideoTrackList extends TrackList {\n /**\n * Create an instance of this class.\n *\n * @param {VideoTrack[]} [tracks=[]]\n * A list of `VideoTrack` to instantiate the list with.\n */\n constructor(tracks = []) {\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (let i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].selected) {\n disableOthers(tracks, tracks[i]);\n break;\n }\n }\n super(tracks);\n this.changing_ = false;\n\n /**\n * @member {number} VideoTrackList#selectedIndex\n * The current index of the selected {@link VideoTrack`}.\n */\n Object.defineProperty(this, 'selectedIndex', {\n get() {\n for (let i = 0; i < this.length; i++) {\n if (this[i].selected) {\n return i;\n }\n }\n return -1;\n },\n set() {}\n });\n }\n\n /**\n * Add a {@link VideoTrack} to the `VideoTrackList`.\n *\n * @param {VideoTrack} track\n * The VideoTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n addTrack(track) {\n if (track.selected) {\n disableOthers(this, track);\n }\n super.addTrack(track);\n // native tracks don't have this\n if (!track.addEventListener) {\n return;\n }\n track.selectedChange_ = () => {\n if (this.changing_) {\n return;\n }\n this.changing_ = true;\n disableOthers(this, track);\n this.changing_ = false;\n this.trigger('change');\n };\n\n /**\n * @listens VideoTrack#selectedchange\n * @fires TrackList#change\n */\n track.addEventListener('selectedchange', track.selectedChange_);\n }\n removeTrack(rtrack) {\n super.removeTrack(rtrack);\n if (rtrack.removeEventListener && rtrack.selectedChange_) {\n rtrack.removeEventListener('selectedchange', rtrack.selectedChange_);\n rtrack.selectedChange_ = null;\n }\n }\n}\n\n/**\n * @file text-track-list.js\n */\n\n/** @import TextTrack from './text-track' */\n\n/**\n * The current list of {@link TextTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist}\n * @extends TrackList\n */\nclass TextTrackList extends TrackList {\n /**\n * Add a {@link TextTrack} to the `TextTrackList`\n *\n * @param {TextTrack} track\n * The text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n addTrack(track) {\n super.addTrack(track);\n if (!this.queueChange_) {\n this.queueChange_ = () => this.queueTrigger('change');\n }\n if (!this.triggerSelectedlanguagechange) {\n this.triggerSelectedlanguagechange_ = () => this.trigger('selectedlanguagechange');\n }\n\n /**\n * @listens TextTrack#modechange\n * @fires TrackList#change\n */\n track.addEventListener('modechange', this.queueChange_);\n const nonLanguageTextTrackKind = ['metadata', 'chapters'];\n if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) {\n track.addEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n }\n removeTrack(rtrack) {\n super.removeTrack(rtrack);\n\n // manually remove the event handlers we added\n if (rtrack.removeEventListener) {\n if (this.queueChange_) {\n rtrack.removeEventListener('modechange', this.queueChange_);\n }\n if (this.selectedlanguagechange_) {\n rtrack.removeEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n }\n }\n}\n\n/**\n * @file html-track-element-list.js\n */\n\n/**\n * The current list of {@link HtmlTrackElement}s.\n */\nclass HtmlTrackElementList {\n /**\n * Create an instance of this class.\n *\n * @param {HtmlTrackElement[]} [tracks=[]]\n * A list of `HtmlTrackElement` to instantiate the list with.\n */\n constructor(trackElements = []) {\n this.trackElements_ = [];\n\n /**\n * @memberof HtmlTrackElementList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n Object.defineProperty(this, 'length', {\n get() {\n return this.trackElements_.length;\n }\n });\n for (let i = 0, length = trackElements.length; i < length; i++) {\n this.addTrackElement_(trackElements[i]);\n }\n }\n\n /**\n * Add an {@link HtmlTrackElement} to the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to add to the list.\n *\n * @private\n */\n addTrackElement_(trackElement) {\n const index = this.trackElements_.length;\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get() {\n return this.trackElements_[index];\n }\n });\n }\n\n // Do not add duplicate elements\n if (this.trackElements_.indexOf(trackElement) === -1) {\n this.trackElements_.push(trackElement);\n }\n }\n\n /**\n * Get an {@link HtmlTrackElement} from the `HtmlTrackElementList` given an\n * {@link TextTrack}.\n *\n * @param {TextTrack} track\n * The track associated with a track element.\n *\n * @return {HtmlTrackElement|undefined}\n * The track element that was found or undefined.\n *\n * @private\n */\n getTrackElementByTrack_(track) {\n let trackElement_;\n for (let i = 0, length = this.trackElements_.length; i < length; i++) {\n if (track === this.trackElements_[i].track) {\n trackElement_ = this.trackElements_[i];\n break;\n }\n }\n return trackElement_;\n }\n\n /**\n * Remove a {@link HtmlTrackElement} from the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to remove from the list.\n *\n * @private\n */\n removeTrackElement_(trackElement) {\n for (let i = 0, length = this.trackElements_.length; i < length; i++) {\n if (trackElement === this.trackElements_[i]) {\n if (this.trackElements_[i].track && typeof this.trackElements_[i].track.off === 'function') {\n this.trackElements_[i].track.off();\n }\n if (typeof this.trackElements_[i].off === 'function') {\n this.trackElements_[i].off();\n }\n this.trackElements_.splice(i, 1);\n break;\n }\n }\n }\n}\n\n/**\n * @file text-track-cue-list.js\n */\n\n/**\n * @typedef {Object} TextTrackCueList~TextTrackCue\n *\n * @property {string} id\n * The unique id for this text track cue\n *\n * @property {number} startTime\n * The start time for this text track cue\n *\n * @property {number} endTime\n * The end time for this text track cue\n *\n * @property {boolean} pauseOnExit\n * Pause when the end time is reached if true.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcue}\n */\n\n/**\n * A List of TextTrackCues.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist}\n */\nclass TextTrackCueList {\n /**\n * Create an instance of this class..\n *\n * @param {Array} cues\n * A list of cues to be initialized with\n */\n constructor(cues) {\n TextTrackCueList.prototype.setCues_.call(this, cues);\n\n /**\n * @memberof TextTrackCueList\n * @member {number} length\n * The current number of `TextTrackCue`s in the TextTrackCueList.\n * @instance\n */\n Object.defineProperty(this, 'length', {\n get() {\n return this.length_;\n }\n });\n }\n\n /**\n * A setter for cues in this list. Creates getters\n * an an index for the cues.\n *\n * @param {Array} cues\n * An array of cues to set\n *\n * @private\n */\n setCues_(cues) {\n const oldLength = this.length || 0;\n let i = 0;\n const l = cues.length;\n this.cues_ = cues;\n this.length_ = cues.length;\n const defineProp = function (index) {\n if (!('' + index in this)) {\n Object.defineProperty(this, '' + index, {\n get() {\n return this.cues_[index];\n }\n });\n }\n };\n if (oldLength < l) {\n i = oldLength;\n for (; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n }\n\n /**\n * Get a `TextTrackCue` that is currently in the `TextTrackCueList` by id.\n *\n * @param {string} id\n * The id of the cue that should be searched for.\n *\n * @return {TextTrackCueList~TextTrackCue|null}\n * A single cue or null if none was found.\n */\n getCueById(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n const cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n return result;\n }\n}\n\n/**\n * @file track-kinds.js\n */\n\n/**\n * All possible `VideoTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-kind\n * @typedef VideoTrack~Kind\n * @enum\n */\nconst VideoTrackKind = {\n alternative: 'alternative',\n captions: 'captions',\n main: 'main',\n sign: 'sign',\n subtitles: 'subtitles',\n commentary: 'commentary'\n};\n\n/**\n * All possible `AudioTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-kind\n * @typedef AudioTrack~Kind\n * @enum\n */\nconst AudioTrackKind = {\n 'alternative': 'alternative',\n 'descriptions': 'descriptions',\n 'main': 'main',\n 'main-desc': 'main-desc',\n 'translation': 'translation',\n 'commentary': 'commentary'\n};\n\n/**\n * All possible `TextTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-texttrack-kind\n * @typedef TextTrack~Kind\n * @enum\n */\nconst TextTrackKind = {\n subtitles: 'subtitles',\n captions: 'captions',\n descriptions: 'descriptions',\n chapters: 'chapters',\n metadata: 'metadata'\n};\n\n/**\n * All possible `TextTrackMode`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n * @typedef TextTrack~Mode\n * @enum\n */\nconst TextTrackMode = {\n disabled: 'disabled',\n hidden: 'hidden',\n showing: 'showing'\n};\n\n/**\n * @file track.js\n */\n\n/**\n * A Track class that contains all of the common functionality for {@link AudioTrack},\n * {@link VideoTrack}, and {@link TextTrack}.\n *\n * > Note: This class should not be used directly\n *\n * @see {@link https://html.spec.whatwg.org/multipage/embedded-content.html}\n * @extends EventTarget\n * @abstract\n */\nclass Track extends EventTarget$2 {\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid kind for the track type you are creating.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @abstract\n */\n constructor(options = {}) {\n super();\n const trackProps = {\n id: options.id || 'vjs_track_' + newGUID(),\n kind: options.kind || '',\n language: options.language || ''\n };\n let label = options.label || '';\n\n /**\n * @memberof Track\n * @member {string} id\n * The id of this track. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} kind\n * The kind of track that this is. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} language\n * The two letter language code for this track. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n\n for (const key in trackProps) {\n Object.defineProperty(this, key, {\n get() {\n return trackProps[key];\n },\n set() {}\n });\n }\n\n /**\n * @memberof Track\n * @member {string} label\n * The label of this track. Cannot be changed after creation.\n * @instance\n *\n * @fires Track#labelchange\n */\n Object.defineProperty(this, 'label', {\n get() {\n return label;\n },\n set(newLabel) {\n if (newLabel !== label) {\n label = newLabel;\n\n /**\n * An event that fires when label changes on this track.\n *\n * > Note: This is not part of the spec!\n *\n * @event Track#labelchange\n * @type {Event}\n */\n this.trigger('labelchange');\n }\n }\n });\n }\n}\n\n/**\n * @file url.js\n * @module url\n */\n\n/**\n * Resolve and parse the elements of a URL.\n *\n * @function\n * @param {string} url\n * The url to parse\n *\n * @return {URL}\n * An object of url details\n */\nconst parseUrl = function (url) {\n return new URL(url, document$1.baseURI);\n};\n\n/**\n * Get absolute version of relative URL.\n *\n * @function\n * @param {string} url\n * URL to make absolute\n *\n * @return {string}\n * Absolute URL\n */\nconst getAbsoluteURL = function (url) {\n return new URL(url, document$1.baseURI).href;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string\n * if passed an invalid path.\n *\n * @function\n * @param {string} path\n * The fileName path like '/path/to/file.mp4'\n *\n * @return {string}\n * The extension in lower case or an empty string if no\n * extension could be found.\n */\nconst getFileExtension = function (path) {\n if (typeof path === 'string') {\n const splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/;\n const pathParts = splitPathRe.exec(path);\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n return '';\n};\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @function\n * @param {string} url\n * The url to check.\n *\n * @param {URL} [winLoc]\n * the domain to check the url against, defaults to window.location\n *\n * @return {boolean}\n * Whether it is a cross domain request or not.\n */\nconst isCrossOrigin = function (url, winLoc = window$1.location) {\n return parseUrl(url).origin !== winLoc.origin;\n};\n\nvar Url = /*#__PURE__*/Object.freeze({\n __proto__: null,\n parseUrl: parseUrl,\n getAbsoluteURL: getAbsoluteURL,\n getFileExtension: getFileExtension,\n isCrossOrigin: isCrossOrigin\n});\n\n/**\n * @file text-track.js\n */\n\n/** @import Tech from '../tech/tech' */\n\n/**\n * Takes a webvtt file contents and parses it into cues\n *\n * @param {string} srcContent\n * webVTT file contents\n *\n * @param {TextTrack} track\n * TextTrack to add cues to. Cues come from the srcContent.\n *\n * @private\n */\nconst parseCues = function (srcContent, track) {\n const parser = new window$1.WebVTT.Parser(window$1, window$1.vttjs, window$1.WebVTT.StringDecoder());\n const errors = [];\n parser.oncue = function (cue) {\n track.addCue(cue);\n };\n parser.onparsingerror = function (error) {\n errors.push(error);\n };\n parser.onflush = function () {\n track.trigger({\n type: 'loadeddata',\n target: track\n });\n };\n parser.parse(srcContent);\n if (errors.length > 0) {\n if (window$1.console && window$1.console.groupCollapsed) {\n window$1.console.groupCollapsed(`Text Track parsing errors for ${track.src}`);\n }\n errors.forEach(error => log$1.error(error));\n if (window$1.console && window$1.console.groupEnd) {\n window$1.console.groupEnd();\n }\n }\n parser.flush();\n};\n\n/**\n * Load a `TextTrack` from a specified url.\n *\n * @param {string} src\n * Url to load track from.\n *\n * @param {TextTrack} track\n * Track to add cues to. Comes from the content at the end of `url`.\n *\n * @private\n */\nconst loadTrack = function (src, track) {\n const opts = {\n uri: src\n };\n const crossOrigin = isCrossOrigin(src);\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n const withCredentials = track.tech_.crossOrigin() === 'use-credentials';\n if (withCredentials) {\n opts.withCredentials = withCredentials;\n }\n XHR(opts, bind_(this, function (err, response, responseBody) {\n if (err) {\n return log$1.error(err, response);\n }\n track.loaded_ = true;\n\n // Make sure that vttjs has loaded, otherwise, wait till it finished loading\n // NOTE: this is only used for the alt/video.novtt.js build\n if (typeof window$1.WebVTT !== 'function') {\n if (track.tech_) {\n // to prevent use before define eslint error, we define loadHandler\n // as a let here\n track.tech_.any(['vttjsloaded', 'vttjserror'], event => {\n if (event.type === 'vttjserror') {\n log$1.error(`vttjs failed to load, stopping trying to process ${track.src}`);\n return;\n }\n return parseCues(responseBody, track);\n });\n }\n } else {\n parseCues(responseBody, track);\n }\n }));\n};\n\n/**\n * A representation of a single `TextTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack}\n * @extends Track\n */\nclass TextTrack extends Track {\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this TextTrack.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * version of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n constructor(options = {}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n const settings = merge$1(options, {\n kind: TextTrackKind[options.kind] || 'subtitles',\n language: options.language || options.srclang || ''\n });\n let mode = TextTrackMode[settings.mode] || 'disabled';\n const default_ = settings.default;\n if (settings.kind === 'metadata' || settings.kind === 'chapters') {\n mode = 'hidden';\n }\n super(settings);\n this.tech_ = settings.tech;\n this.cues_ = [];\n this.activeCues_ = [];\n this.preload_ = this.tech_.preloadTextTracks !== false;\n const cues = new TextTrackCueList(this.cues_);\n const activeCues = new TextTrackCueList(this.activeCues_);\n let changed = false;\n this.timeupdateHandler = bind_(this, function (event = {}) {\n if (this.tech_.isDisposed()) {\n return;\n }\n if (!this.tech_.isReady_) {\n if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n return;\n }\n\n // Accessing this.activeCues for the side-effects of updating itself\n // due to its nature as a getter function. Do not remove or cues will\n // stop updating!\n // Use the setter to prevent deletion from uglify (pure_getters rule)\n this.activeCues = this.activeCues;\n if (changed) {\n this.trigger('cuechange');\n changed = false;\n }\n if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n });\n const disposeHandler = () => {\n this.stopTracking();\n };\n this.tech_.one('dispose', disposeHandler);\n if (mode !== 'disabled') {\n this.startTracking();\n }\n Object.defineProperties(this, {\n /**\n * @memberof TextTrack\n * @member {boolean} default\n * If this track was set to be on or off by default. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n default: {\n get() {\n return default_;\n },\n set() {}\n },\n /**\n * @memberof TextTrack\n * @member {string} mode\n * Set the mode of this TextTrack to a valid {@link TextTrack~Mode}. Will\n * not be set if setting to an invalid mode.\n * @instance\n *\n * @fires TextTrack#modechange\n */\n mode: {\n get() {\n return mode;\n },\n set(newMode) {\n if (!TextTrackMode[newMode]) {\n return;\n }\n if (mode === newMode) {\n return;\n }\n mode = newMode;\n if (!this.preload_ && mode !== 'disabled' && this.cues.length === 0) {\n // On-demand load.\n loadTrack(this.src, this);\n }\n this.stopTracking();\n if (mode !== 'disabled') {\n this.startTracking();\n }\n /**\n * An event that fires when mode changes on this track. This allows\n * the TextTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec!\n *\n * @event TextTrack#modechange\n * @type {Event}\n */\n this.trigger('modechange');\n }\n },\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} cues\n * The text track cue list for this TextTrack.\n * @instance\n */\n cues: {\n get() {\n if (!this.loaded_) {\n return null;\n }\n return cues;\n },\n set() {}\n },\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} activeCues\n * The list text track cues that are currently active for this TextTrack.\n * @instance\n */\n activeCues: {\n get() {\n if (!this.loaded_) {\n return null;\n }\n\n // nothing to do\n if (this.cues.length === 0) {\n return activeCues;\n }\n const ct = this.tech_.currentTime();\n const active = [];\n for (let i = 0, l = this.cues.length; i < l; i++) {\n const cue = this.cues[i];\n if (cue.startTime <= ct && cue.endTime >= ct) {\n active.push(cue);\n }\n }\n changed = false;\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (this.activeCues_.indexOf(active[i]) === -1) {\n changed = true;\n }\n }\n }\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n return activeCues;\n },\n // /!\\ Keep this setter empty (see the timeupdate handler above)\n set() {}\n }\n });\n if (settings.src) {\n this.src = settings.src;\n if (!this.preload_) {\n // Tracks will load on-demand.\n // Act like we're loaded for other purposes.\n this.loaded_ = true;\n }\n if (this.preload_ || settings.kind !== 'subtitles' && settings.kind !== 'captions') {\n loadTrack(this.src, this);\n }\n } else {\n this.loaded_ = true;\n }\n }\n startTracking() {\n // More precise cues based on requestVideoFrameCallback with a requestAnimationFram fallback\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n // Also listen to timeupdate in case rVFC/rAF stops (window in background, audio in video el)\n this.tech_.on('timeupdate', this.timeupdateHandler);\n }\n stopTracking() {\n if (this.rvf_) {\n this.tech_.cancelVideoFrameCallback(this.rvf_);\n this.rvf_ = undefined;\n }\n this.tech_.off('timeupdate', this.timeupdateHandler);\n }\n\n /**\n * Add a cue to the internal list of cues.\n *\n * @param {TextTrack~Cue} cue\n * The cue to add to our internal list\n */\n addCue(originalCue) {\n let cue = originalCue;\n\n // Testing if the cue is a VTTCue in a way that survives minification\n if (!('getCueAsHTML' in cue)) {\n cue = new window$1.vttjs.VTTCue(originalCue.startTime, originalCue.endTime, originalCue.text);\n for (const prop in originalCue) {\n if (!(prop in cue)) {\n cue[prop] = originalCue[prop];\n }\n }\n\n // make sure that `id` is copied over\n cue.id = originalCue.id;\n cue.originalCue_ = originalCue;\n }\n const tracks = this.tech_.textTracks();\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n this.cues_.push(cue);\n this.cues.setCues_(this.cues_);\n }\n\n /**\n * Remove a cue from our internal list\n *\n * @param {TextTrack~Cue} removeCue\n * The cue to remove from our internal list\n */\n removeCue(removeCue) {\n let i = this.cues_.length;\n while (i--) {\n const cue = this.cues_[i];\n if (cue === removeCue || cue.originalCue_ && cue.originalCue_ === removeCue) {\n this.cues_.splice(i, 1);\n this.cues.setCues_(this.cues_);\n break;\n }\n }\n }\n}\n\n/**\n * cuechange - One or more cues in the track have become active or stopped being active.\n *\n * @protected\n */\nTextTrack.prototype.allowedEvents_ = {\n cuechange: 'cuechange'\n};\n\n/**\n * A representation of a single `AudioTrack`. If it is part of an {@link AudioTrackList}\n * only one `AudioTrack` in the list will be enabled at a time.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotrack}\n * @extends Track\n */\nclass AudioTrack extends Track {\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {AudioTrack~Kind} [options.kind='']\n * A valid audio track kind\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.enabled]\n * If this track is the one that is currently playing. If this track is part of\n * an {@link AudioTrackList}, only one {@link AudioTrack} will be enabled.\n */\n constructor(options = {}) {\n const settings = merge$1(options, {\n kind: AudioTrackKind[options.kind] || ''\n });\n super(settings);\n let enabled = false;\n\n /**\n * @memberof AudioTrack\n * @member {boolean} enabled\n * If this `AudioTrack` is enabled or not. When setting this will\n * fire {@link AudioTrack#enabledchange} if the state of enabled is changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n Object.defineProperty(this, 'enabled', {\n get() {\n return enabled;\n },\n set(newEnabled) {\n // an invalid or unchanged value\n if (typeof newEnabled !== 'boolean' || newEnabled === enabled) {\n return;\n }\n enabled = newEnabled;\n\n /**\n * An event that fires when enabled changes on this track. This allows\n * the AudioTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event AudioTrack#enabledchange\n * @type {Event}\n */\n this.trigger('enabledchange');\n }\n });\n\n // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n if (settings.enabled) {\n this.enabled = settings.enabled;\n }\n this.loaded_ = true;\n }\n}\n\n/**\n * A representation of a single `VideoTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotrack}\n * @extends Track\n */\nclass VideoTrack extends Track {\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid {@link VideoTrack~Kind}\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.selected]\n * If this track is the one that is currently playing.\n */\n constructor(options = {}) {\n const settings = merge$1(options, {\n kind: VideoTrackKind[options.kind] || ''\n });\n super(settings);\n let selected = false;\n\n /**\n * @memberof VideoTrack\n * @member {boolean} selected\n * If this `VideoTrack` is selected or not. When setting this will\n * fire {@link VideoTrack#selectedchange} if the state of selected changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n Object.defineProperty(this, 'selected', {\n get() {\n return selected;\n },\n set(newSelected) {\n // an invalid or unchanged value\n if (typeof newSelected !== 'boolean' || newSelected === selected) {\n return;\n }\n selected = newSelected;\n\n /**\n * An event that fires when selected changes on this track. This allows\n * the VideoTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event VideoTrack#selectedchange\n * @type {Event}\n */\n this.trigger('selectedchange');\n }\n });\n\n // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n if (settings.selected) {\n this.selected = settings.selected;\n }\n }\n}\n\n/**\n * @file html-track-element.js\n */\n\n/** @import Tech from '../tech/tech' */\n\n/**\n * A single track represented in the DOM.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement}\n * @extends EventTarget\n */\nclass HTMLTrackElement extends EventTarget$2 {\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this HTMLTrackElement.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * version of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n constructor(options = {}) {\n super();\n let readyState;\n const track = new TextTrack(options);\n this.kind = track.kind;\n this.src = track.src;\n this.srclang = track.language;\n this.label = track.label;\n this.default = track.default;\n Object.defineProperties(this, {\n /**\n * @memberof HTMLTrackElement\n * @member {HTMLTrackElement~ReadyState} readyState\n * The current ready state of the track element.\n * @instance\n */\n readyState: {\n get() {\n return readyState;\n }\n },\n /**\n * @memberof HTMLTrackElement\n * @member {TextTrack} track\n * The underlying TextTrack object.\n * @instance\n *\n */\n track: {\n get() {\n return track;\n }\n }\n });\n readyState = HTMLTrackElement.NONE;\n\n /**\n * @listens TextTrack#loadeddata\n * @fires HTMLTrackElement#load\n */\n track.addEventListener('loadeddata', () => {\n readyState = HTMLTrackElement.LOADED;\n this.trigger({\n type: 'load',\n target: this\n });\n });\n }\n}\n\n/**\n * @protected\n */\nHTMLTrackElement.prototype.allowedEvents_ = {\n load: 'load'\n};\n\n/**\n * The text track not loaded state.\n *\n * @type {number}\n * @static\n */\nHTMLTrackElement.NONE = 0;\n\n/**\n * The text track loading state.\n *\n * @type {number}\n * @static\n */\nHTMLTrackElement.LOADING = 1;\n\n/**\n * The text track loaded state.\n *\n * @type {number}\n * @static\n */\nHTMLTrackElement.LOADED = 2;\n\n/**\n * The text track failed to load state.\n *\n * @type {number}\n * @static\n */\nHTMLTrackElement.ERROR = 3;\n\n/*\n * This file contains all track properties that are used in\n * player.js, tech.js, html5.js and possibly other techs in the future.\n */\n\nconst NORMAL = {\n audio: {\n ListClass: AudioTrackList,\n TrackClass: AudioTrack,\n capitalName: 'Audio'\n },\n video: {\n ListClass: VideoTrackList,\n TrackClass: VideoTrack,\n capitalName: 'Video'\n },\n text: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'Text'\n }\n};\nObject.keys(NORMAL).forEach(function (type) {\n NORMAL[type].getterName = `${type}Tracks`;\n NORMAL[type].privateName = `${type}Tracks_`;\n});\nconst REMOTE = {\n remoteText: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'RemoteText',\n getterName: 'remoteTextTracks',\n privateName: 'remoteTextTracks_'\n },\n remoteTextEl: {\n ListClass: HtmlTrackElementList,\n TrackClass: HTMLTrackElement,\n capitalName: 'RemoteTextTrackEls',\n getterName: 'remoteTextTrackEls',\n privateName: 'remoteTextTrackEls_'\n }\n};\nconst ALL = Object.assign({}, NORMAL, REMOTE);\nREMOTE.names = Object.keys(REMOTE);\nNORMAL.names = Object.keys(NORMAL);\nALL.names = [].concat(REMOTE.names).concat(NORMAL.names);\n\n/**\n * @file tech.js\n */\n\n/** @import { TimeRange } from '../utils/time' */\n\n/**\n * An Object containing a structure like: `{src: 'url', type: 'mimetype'}` or string\n * that just contains the src url alone.\n * * `var SourceObject = {src: 'http://ex.com/video.mp4', type: 'video/mp4'};`\n * `var SourceString = 'http://example.com/some-video.mp4';`\n *\n * @typedef {Object|string} SourceObject\n *\n * @property {string} src\n * The url to the source\n *\n * @property {string} type\n * The mime type of the source\n */\n\n/**\n * A function used by {@link Tech} to create a new {@link TextTrack}.\n *\n * @private\n *\n * @param {Tech} self\n * An instance of the Tech class.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @param {Object} [options={}]\n * An object with additional text track options\n *\n * @return {TextTrack}\n * The text track that was created.\n */\nfunction createTrackHelper(self, kind, label, language, options = {}) {\n const tracks = self.textTracks();\n options.kind = kind;\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n const track = new ALL.text.TrackClass(options);\n tracks.addTrack(track);\n return track;\n}\n\n/**\n * This is the base class for media playback technology controllers, such as\n * {@link HTML5}\n *\n * @extends Component\n */\nclass Tech extends Component$1 {\n /**\n * Create an instance of this Tech.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Function} [ready]\n * Callback function to call when the `HTML5` Tech is ready.\n */\n constructor(options = {}, ready = function () {}) {\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n super(null, options, ready);\n this.onDurationChange_ = e => this.onDurationChange(e);\n this.trackProgress_ = e => this.trackProgress(e);\n this.trackCurrentTime_ = e => this.trackCurrentTime(e);\n this.stopTrackingCurrentTime_ = e => this.stopTrackingCurrentTime(e);\n this.disposeSourceHandler_ = e => this.disposeSourceHandler(e);\n this.queuedHanders_ = new Set();\n\n // keep track of whether the current source has played at all to\n // implement a very limited played()\n this.hasStarted_ = false;\n this.on('playing', function () {\n this.hasStarted_ = true;\n });\n this.on('loadstart', function () {\n this.hasStarted_ = false;\n });\n ALL.names.forEach(name => {\n const props = ALL[name];\n if (options && options[props.getterName]) {\n this[props.privateName] = options[props.getterName];\n }\n });\n\n // Manually track progress in cases where the browser/tech doesn't report it.\n if (!this.featuresProgressEvents) {\n this.manualProgressOn();\n }\n\n // Manually track timeupdates in cases where the browser/tech doesn't report it.\n if (!this.featuresTimeupdateEvents) {\n this.manualTimeUpdatesOn();\n }\n ['Text', 'Audio', 'Video'].forEach(track => {\n if (options[`native${track}Tracks`] === false) {\n this[`featuresNative${track}Tracks`] = false;\n }\n });\n if (options.nativeCaptions === false || options.nativeTextTracks === false) {\n this.featuresNativeTextTracks = false;\n } else if (options.nativeCaptions === true || options.nativeTextTracks === true) {\n this.featuresNativeTextTracks = true;\n }\n if (!this.featuresNativeTextTracks) {\n this.emulateTextTracks();\n }\n this.preloadTextTracks = options.preloadTextTracks !== false;\n this.autoRemoteTextTracks_ = new ALL.text.ListClass();\n this.initTrackListeners();\n\n // Turn on component tap events only if not using native controls\n if (!options.nativeControlsForTouch) {\n this.emitTapEvents();\n }\n if (this.constructor) {\n this.name_ = this.constructor.name || 'Unknown Tech';\n }\n }\n\n /**\n * A special function to trigger source set in a way that will allow player\n * to re-trigger if the player or tech are not ready yet.\n *\n * @fires Tech#sourceset\n * @param {string} src The source string at the time of the source changing.\n */\n triggerSourceset(src) {\n if (!this.isReady_) {\n // on initial ready we have to trigger source set\n // 1ms after ready so that player can watch for it.\n this.one('ready', () => this.setTimeout(() => this.triggerSourceset(src), 1));\n }\n\n /**\n * Fired when the source is set on the tech causing the media element\n * to reload.\n *\n * @see {@link Player#event:sourceset}\n * @event Tech#sourceset\n * @type {Event}\n */\n this.trigger({\n src,\n type: 'sourceset'\n });\n }\n\n /* Fallbacks for unsupported event types\n ================================================================================ */\n\n /**\n * Polyfill the `progress` event for browsers that don't support it natively.\n *\n * @see {@link Tech#trackProgress}\n */\n manualProgressOn() {\n this.on('durationchange', this.onDurationChange_);\n this.manualProgress = true;\n\n // Trigger progress watching when a source begins loading\n this.one('ready', this.trackProgress_);\n }\n\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n */\n manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n this.off('durationchange', this.onDurationChange_);\n }\n\n /**\n * This is used to trigger a `progress` event when the buffered percent changes. It\n * sets an interval function that will be called every 500 milliseconds to check if the\n * buffer end percent has changed.\n *\n * > This function is called by {@link Tech#manualProgressOn}\n *\n * @param {Event} event\n * The `ready` event that caused this to run.\n *\n * @listens Tech#ready\n * @fires Tech#progress\n */\n trackProgress(event) {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(bind_(this, function () {\n // Don't trigger unless buffered amount is greater than last time\n\n const numBufferedPercent = this.bufferedPercent();\n if (this.bufferedPercent_ !== numBufferedPercent) {\n /**\n * See {@link Player#progress}\n *\n * @event Tech#progress\n * @type {Event}\n */\n this.trigger('progress');\n }\n this.bufferedPercent_ = numBufferedPercent;\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n\n /**\n * Update our internal duration on a `durationchange` event by calling\n * {@link Tech#duration}.\n *\n * @param {Event} event\n * The `durationchange` event that caused this to run.\n *\n * @listens Tech#durationchange\n */\n onDurationChange(event) {\n this.duration_ = this.duration();\n }\n\n /**\n * Get and create a `TimeRange` object for buffering.\n *\n * @return {TimeRange}\n * The time range object that was created.\n */\n buffered() {\n return createTimeRanges$1(0, 0);\n }\n\n /**\n * Get the percentage of the current video that is currently buffered.\n *\n * @return {number}\n * A number from 0 to 1 that represents the decimal percentage of the\n * video that is buffered.\n *\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n * Stop manually tracking progress events by clearing the interval that was set in\n * {@link Tech#trackProgress}.\n */\n stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n\n /**\n * Polyfill the `timeupdate` event for browsers that don't support it.\n *\n * @see {@link Tech#trackCurrentTime}\n */\n manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n this.on('play', this.trackCurrentTime_);\n this.on('pause', this.stopTrackingCurrentTime_);\n }\n\n /**\n * Turn off the polyfill for `timeupdate` events that was created in\n * {@link Tech#manualTimeUpdatesOn}\n */\n manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime_);\n this.off('pause', this.stopTrackingCurrentTime_);\n }\n\n /**\n * Sets up an interval function to track current time and trigger `timeupdate` every\n * 250 milliseconds.\n *\n * @listens Tech#play\n * @triggers Tech#timeupdate\n */\n trackCurrentTime() {\n if (this.currentTimeInterval) {\n this.stopTrackingCurrentTime();\n }\n this.currentTimeInterval = this.setInterval(function () {\n /**\n * Triggered at an interval of 250ms to indicated that time is passing in the video.\n *\n * @event Tech#timeupdate\n * @type {Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n\n // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }, 250);\n }\n\n /**\n * Stop the interval function created in {@link Tech#trackCurrentTime} so that the\n * `timeupdate` event is no longer triggered.\n *\n * @listens {Tech#pause}\n */\n stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval);\n\n // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n\n /**\n * Turn off all event polyfills, clear the `Tech`s {@link AudioTrackList},\n * {@link VideoTrackList}, and {@link TextTrackList}, and dispose of this Tech.\n *\n * @fires Component#dispose\n */\n dispose() {\n // clear out all tracks because we can't reuse them between techs\n this.clearTracks(NORMAL.names);\n\n // Turn off any manual progress or timeupdate tracking\n if (this.manualProgress) {\n this.manualProgressOff();\n }\n if (this.manualTimeUpdates) {\n this.manualTimeUpdatesOff();\n }\n super.dispose();\n }\n\n /**\n * Clear out a single `TrackList` or an array of `TrackLists` given their names.\n *\n * > Note: Techs without source handlers should call this between sources for `video`\n * & `audio` tracks. You don't want to use them between tracks!\n *\n * @param {string[]|string} types\n * TrackList names to clear, valid names are `video`, `audio`, and\n * `text`.\n */\n clearTracks(types) {\n types = [].concat(types);\n // clear out all tracks because we can't reuse them between techs\n types.forEach(type => {\n const list = this[`${type}Tracks`]() || [];\n let i = list.length;\n while (i--) {\n const track = list[i];\n if (type === 'text') {\n this.removeRemoteTextTrack(track);\n }\n list.removeTrack(track);\n }\n });\n }\n\n /**\n * Remove any TextTracks added via addRemoteTextTrack that are\n * flagged for automatic garbage collection\n */\n cleanupAutoTextTracks() {\n const list = this.autoRemoteTextTracks_ || [];\n let i = list.length;\n while (i--) {\n const track = list[i];\n this.removeRemoteTextTrack(track);\n }\n }\n\n /**\n * Reset the tech, which will removes all sources and reset the internal readyState.\n *\n * @abstract\n */\n reset() {}\n\n /**\n * Get the value of `crossOrigin` from the tech.\n *\n * @abstract\n *\n * @see {Html5#crossOrigin}\n */\n crossOrigin() {}\n\n /**\n * Set the value of `crossOrigin` on the tech.\n *\n * @abstract\n *\n * @param {string} crossOrigin the crossOrigin value\n * @see {Html5#setCrossOrigin}\n */\n setCrossOrigin() {}\n\n /**\n * Get or set an error on the Tech.\n *\n * @param {MediaError} [err]\n * Error to set on the Tech\n *\n * @return {MediaError|null}\n * The current error object on the tech, or null if there isn't one.\n */\n error(err) {\n if (err !== undefined) {\n this.error_ = new MediaError(err);\n this.trigger('error');\n }\n return this.error_;\n }\n\n /**\n * Returns the `TimeRange`s that have been played through for the current source.\n *\n * > NOTE: This implementation is incomplete. It does not track the played `TimeRange`.\n * It only checks whether the source has played at all or not.\n *\n * @return {TimeRange}\n * - A single time range if this video has played\n * - An empty set of ranges if not.\n */\n played() {\n if (this.hasStarted_) {\n return createTimeRanges$1(0, 0);\n }\n return createTimeRanges$1();\n }\n\n /**\n * Start playback\n *\n * @abstract\n *\n * @see {Html5#play}\n */\n play() {}\n\n /**\n * Set whether we are scrubbing or not\n *\n * @abstract\n * @param {boolean} _isScrubbing\n * - true for we are currently scrubbing\n * - false for we are no longer scrubbing\n *\n * @see {Html5#setScrubbing}\n */\n setScrubbing(_isScrubbing) {}\n\n /**\n * Get whether we are scrubbing or not\n *\n * @abstract\n *\n * @see {Html5#scrubbing}\n */\n scrubbing() {}\n\n /**\n * Causes a manual time update to occur if {@link Tech#manualTimeUpdatesOn} was\n * previously called.\n *\n * @param {number} _seconds\n * Set the current time of the media to this.\n * @fires Tech#timeupdate\n */\n setCurrentTime(_seconds) {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) {\n /**\n * A manual `timeupdate` event.\n *\n * @event Tech#timeupdate\n * @type {Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n }\n\n /**\n * Turn on listeners for {@link VideoTrackList}, {@link {AudioTrackList}, and\n * {@link TextTrackList} events.\n *\n * This adds {@link EventTarget~EventListeners} for `addtrack`, and `removetrack`.\n *\n * @fires Tech#audiotrackchange\n * @fires Tech#videotrackchange\n * @fires Tech#texttrackchange\n */\n initTrackListeners() {\n /**\n * Triggered when tracks are added or removed on the Tech {@link AudioTrackList}\n *\n * @event Tech#audiotrackchange\n * @type {Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link VideoTrackList}\n *\n * @event Tech#videotrackchange\n * @type {Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link TextTrackList}\n *\n * @event Tech#texttrackchange\n * @type {Event}\n */\n NORMAL.names.forEach(name => {\n const props = NORMAL[name];\n const trackListChanges = () => {\n this.trigger(`${name}trackchange`);\n };\n const tracks = this[props.getterName]();\n tracks.addEventListener('removetrack', trackListChanges);\n tracks.addEventListener('addtrack', trackListChanges);\n this.on('dispose', () => {\n tracks.removeEventListener('removetrack', trackListChanges);\n tracks.removeEventListener('addtrack', trackListChanges);\n });\n });\n }\n\n /**\n * Emulate TextTracks using vtt.js if necessary\n *\n * @fires Tech#vttjsloaded\n * @fires Tech#vttjserror\n */\n addWebVttScript_() {\n if (window$1.WebVTT) {\n return;\n }\n\n // Initially, Tech.el_ is a child of a dummy-div wait until the Component system\n // signals that the Tech is ready at which point Tech.el_ is part of the DOM\n // before inserting the WebVTT script\n if (document$1.body.contains(this.el())) {\n // load via require if available and vtt.js script location was not passed in\n // as an option. novtt builds will turn the above require call into an empty object\n // which will cause this if check to always fail.\n if (!this.options_['vtt.js'] && isPlain(vtt) && Object.keys(vtt).length > 0) {\n this.trigger('vttjsloaded');\n return;\n }\n\n // load vtt.js via the script location option or the cdn of no location was\n // passed in\n const script = document$1.createElement('script');\n script.src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js';\n script.onload = () => {\n /**\n * Fired when vtt.js is loaded.\n *\n * @event Tech#vttjsloaded\n * @type {Event}\n */\n this.trigger('vttjsloaded');\n };\n script.onerror = () => {\n /**\n * Fired when vtt.js was not loaded due to an error\n *\n * @event Tech#vttjsloaded\n * @type {Event}\n */\n this.trigger('vttjserror');\n };\n this.on('dispose', () => {\n script.onload = null;\n script.onerror = null;\n });\n // but have not loaded yet and we set it to true before the inject so that\n // we don't overwrite the injected window.WebVTT if it loads right away\n window$1.WebVTT = true;\n this.el().parentNode.appendChild(script);\n } else {\n this.ready(this.addWebVttScript_);\n }\n }\n\n /**\n * Emulate texttracks\n *\n */\n emulateTextTracks() {\n const tracks = this.textTracks();\n const remoteTracks = this.remoteTextTracks();\n const handleAddTrack = e => tracks.addTrack(e.track);\n const handleRemoveTrack = e => tracks.removeTrack(e.track);\n remoteTracks.on('addtrack', handleAddTrack);\n remoteTracks.on('removetrack', handleRemoveTrack);\n this.addWebVttScript_();\n const updateDisplay = () => this.trigger('texttrackchange');\n const textTracksChanges = () => {\n updateDisplay();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n };\n textTracksChanges();\n tracks.addEventListener('change', textTracksChanges);\n tracks.addEventListener('addtrack', textTracksChanges);\n tracks.addEventListener('removetrack', textTracksChanges);\n this.on('dispose', function () {\n remoteTracks.off('addtrack', handleAddTrack);\n remoteTracks.off('removetrack', handleRemoveTrack);\n tracks.removeEventListener('change', textTracksChanges);\n tracks.removeEventListener('addtrack', textTracksChanges);\n tracks.removeEventListener('removetrack', textTracksChanges);\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n }\n });\n }\n\n /**\n * Create and returns a remote {@link TextTrack} object.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @return {TextTrack}\n * The TextTrack that gets created.\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Create an emulated TextTrack for use by addRemoteTextTrack\n *\n * This is intended to be overridden by classes that inherit from\n * Tech in order to create native or custom TextTracks.\n *\n * @param {Object} options\n * The object should contain the options to initialize the TextTrack with.\n *\n * @param {string} [options.kind]\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata).\n *\n * @param {string} [options.label].\n * Label to identify the text track\n *\n * @param {string} [options.language]\n * Two letter language abbreviation.\n *\n * @return {HTMLTrackElement}\n * The track element that gets created.\n */\n createRemoteTextTrack(options) {\n const track = merge$1(options, {\n tech: this\n });\n return new REMOTE.remoteTextEl.TrackClass(track);\n }\n\n /**\n * Creates a remote text track object and returns an html track element.\n *\n * > Note: This can be an emulated {@link HTMLTrackElement} or a native one.\n *\n * @param {Object} options\n * See {@link Tech#createRemoteTextTrack} for more detailed properties.\n *\n * @param {boolean} [manualCleanup=false]\n * - When false: the TextTrack will be automatically removed from the video\n * element whenever the source changes\n * - When True: The TextTrack will have to be cleaned up manually\n *\n * @return {HTMLTrackElement}\n * An Html Track Element.\n *\n */\n addRemoteTextTrack(options = {}, manualCleanup) {\n const htmlTrackElement = this.createRemoteTextTrack(options);\n if (typeof manualCleanup !== 'boolean') {\n manualCleanup = false;\n }\n\n // store HTMLTrackElement and TextTrack to remote list\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack(htmlTrackElement.track);\n if (manualCleanup === false) {\n // create the TextTrackList if it doesn't exist\n this.ready(() => this.autoRemoteTextTracks_.addTrack(htmlTrackElement.track));\n }\n return htmlTrackElement;\n }\n\n /**\n * Remove a remote text track from the remote `TextTrackList`.\n *\n * @param {TextTrack} track\n * `TextTrack` to remove from the `TextTrackList`\n */\n removeRemoteTextTrack(track) {\n const trackElement = this.remoteTextTrackEls().getTrackElementByTrack_(track);\n\n // remove HTMLTrackElement and TextTrack from remote list\n this.remoteTextTrackEls().removeTrackElement_(trackElement);\n this.remoteTextTracks().removeTrack(track);\n this.autoRemoteTextTracks_.removeTrack(track);\n }\n\n /**\n * Gets available media playback quality metrics as specified by the W3C's Media\n * Playback Quality API.\n *\n * @see [Spec]{@link https://wicg.github.io/media-playback-quality}\n *\n * @return {Object}\n * An object with supported media playback quality metrics\n *\n * @abstract\n */\n getVideoPlaybackQuality() {\n return {};\n }\n\n /**\n * Attempt to create a floating video window always on top of other windows\n * so that users may continue consuming media while they interact with other\n * content sites, or applications on their device.\n *\n * @see [Spec]{@link https://wicg.github.io/picture-in-picture}\n *\n * @return {Promise|undefined}\n * A promise with a Picture-in-Picture window if the browser supports\n * Promises (or one was passed in as an option). It returns undefined\n * otherwise.\n *\n * @abstract\n */\n requestPictureInPicture() {\n return Promise.reject();\n }\n\n /**\n * A method to check for the value of the 'disablePictureInPicture'