{"version":3,"file":"js/VideoScripts.min.js","mappings":"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","sources":["webpack://business-finland/webpack/universalModuleDefinition","webpack://business-finland/./node_modules/@videojs/xhr/lib/http-handler.js","webpack://business-finland/./node_modules/@videojs/xhr/lib/index.js","webpack://business-finland/./node_modules/@xmldom/xmldom/lib/conventions.js","webpack://business-finland/./node_modules/@xmldom/xmldom/lib/dom-parser.js","webpack://business-finland/./node_modules/@xmldom/xmldom/lib/dom.js","webpack://business-finland/./node_modules/@xmldom/xmldom/lib/entities.js","webpack://business-finland/./node_modules/@xmldom/xmldom/lib/index.js","webpack://business-finland/./node_modules/@xmldom/xmldom/lib/sax.js","webpack://business-finland/./node_modules/global/document.js","webpack://business-finland/./node_modules/global/window.js","webpack://business-finland/./node_modules/is-function/index.js","webpack://business-finland/./node_modules/keycode/index.js","webpack://business-finland/./node_modules/mux.js/lib/tools/parse-sidx.js","webpack://business-finland/./node_modules/mux.js/lib/utils/clock.js","webpack://business-finland/./node_modules/mux.js/lib/utils/numbers.js","webpack://business-finland/./node_modules/safe-json-parse/tuple.js","webpack://business-finland/./node_modules/url-toolkit/src/url-toolkit.js","webpack://business-finland/./node_modules/videojs-vtt.js/lib/browser-index.js","webpack://business-finland/./node_modules/videojs-vtt.js/lib/vtt.js","webpack://business-finland/./node_modules/videojs-vtt.js/lib/vttcue.js","webpack://business-finland/./node_modules/videojs-vtt.js/lib/vttregion.js","webpack://business-finland/./node_modules/@babel/runtime/helpers/extends.js","webpack://business-finland/webpack/bootstrap","webpack://business-finland/webpack/runtime/compat get default export","webpack://business-finland/webpack/runtime/define property getters","webpack://business-finland/webpack/runtime/global","webpack://business-finland/webpack/runtime/hasOwnProperty shorthand","webpack://business-finland/webpack/runtime/make namespace object","webpack://business-finland/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://business-finland/./node_modules/@videojs/vhs-utils/es/resolve-url.js","webpack://business-finland/./node_modules/m3u8-parser/node_modules/@videojs/vhs-utils/es/stream.js","webpack://business-finland/./node_modules/m3u8-parser/node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js","webpack://business-finland/./node_modules/m3u8-parser/dist/m3u8-parser.es.js","webpack://business-finland/./node_modules/@videojs/vhs-utils/es/codecs.js","webpack://business-finland/./node_modules/@videojs/vhs-utils/es/byte-helpers.js","webpack://business-finland/./node_modules/@videojs/vhs-utils/es/media-types.js","webpack://business-finland/./node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js","webpack://business-finland/./node_modules/mpd-parser/dist/mpd-parser.es.js","webpack://business-finland/./node_modules/@videojs/vhs-utils/es/media-groups.js","webpack://business-finland/./node_modules/@videojs/vhs-utils/es/mp4-helpers.js","webpack://business-finland/./node_modules/@videojs/vhs-utils/es/id3-helpers.js","webpack://business-finland/./node_modules/@videojs/vhs-utils/es/opus-helpers.js","webpack://business-finland/./node_modules/@videojs/vhs-utils/es/ebml-helpers.js","webpack://business-finland/./node_modules/@videojs/vhs-utils/es/nal-helpers.js","webpack://business-finland/./node_modules/@videojs/vhs-utils/es/containers.js","webpack://business-finland/./node_modules/video.js/dist/video.es.js","webpack://business-finland/./wwwroot/js/video.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VideoScripts\"] = factory();\n\telse\n\t\troot[\"VideoScripts\"] = factory();\n})(self, () => {\nreturn ","\"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 window = require(\"global/window\");\n\nvar _extends = require(\"@babel/runtime/helpers/extends\");\n\nvar isFunction = require('is-function');\n\ncreateXHR.httpHandler = require('./http-handler.js');\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 }\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 if (xhr.readyState === 4) {\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\n if (!(evt instanceof Error)) {\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\"));\n }\n\n evt.statusCode = 0;\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\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 }\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 };\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() {}","'use strict'\n\n/**\n * Ponyfill for `Array.prototype.find` which is only available in ES6 runtimes.\n *\n * Works with anything that has a `length` property and index access properties, including NodeList.\n *\n * @template {unknown} T\n * @param {Array | ({length:number, [number]: T})} list\n * @param {function (item: T, index: number, list:Array | ({length:number, [number]: T})):boolean} predicate\n * @param {Partial>?} ac `Array.prototype` by default,\n * \t\t\t\tallows injecting a custom implementation in tests\n * @returns {T | undefined}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * @see https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find\n */\nfunction find(list, predicate, ac) {\n\tif (ac === undefined) {\n\t\tac = Array.prototype;\n\t}\n\tif (list && typeof ac.find === 'function') {\n\t\treturn ac.find.call(list, predicate);\n\t}\n\tfor (var i = 0; i < list.length; i++) {\n\t\tif (Object.prototype.hasOwnProperty.call(list, i)) {\n\t\t\tvar item = list[i];\n\t\t\tif (predicate.call(undefined, item, i, list)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * @template T\n * @param {T} object the object to freeze\n * @param {Pick = Object} oc `Object` by default,\n * \t\t\t\tallows to inject custom object constructor for tests\n * @returns {Readonly}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\n}\n\n/**\n * Since we can not rely on `Object.assign` we provide a simplified version\n * that is sufficient for our needs.\n *\n * @param {Object} target\n * @param {Object | null | undefined} source\n *\n * @returns {Object} target\n * @throws TypeError if target is not an object\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n * @see https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.assign\n */\nfunction assign(target, source) {\n\tif (target === null || typeof target !== 'object') {\n\t\tthrow new TypeError('target is not an object')\n\t}\n\tfor (var key in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\ttarget[key] = source[key]\n\t\t}\n\t}\n\treturn target\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\n * @see DOMParser.prototype.parseFromString\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see DOMParser.SupportedType.isHTML\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * Helper method to check a mime type if it indicates an HTML document\n\t *\n\t * @param {string} [value]\n\t * @returns {boolean}\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \t */\n\tisHTML: function (value) {\n\t\treturn value === MIME_TYPE.HTML\n\t},\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/html`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n})\n\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * Checks if `uri` equals `NAMESPACE.HTML`.\n\t *\n\t * @param {string} [uri]\n\t *\n\t * @see NAMESPACE.HTML\n\t */\n\tisHTML: function (uri) {\n\t\treturn uri === NAMESPACE.HTML\n\t},\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n})\n\nexports.assign = assign;\nexports.find = find;\nexports.freeze = freeze;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n","var conventions = require(\"./conventions\");\nvar dom = require('./dom')\nvar entities = require('./entities');\nvar sax = require('./sax');\n\nvar DOMImplementation = dom.DOMImplementation;\n\nvar NAMESPACE = conventions.NAMESPACE;\n\nvar ParseError = sax.ParseError;\nvar XMLReader = sax.XMLReader;\n\n/**\n * Normalizes line ending according to https://www.w3.org/TR/xml11/#sec-line-ends:\n *\n * > 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","var conventions = require(\"./conventions\");\n\nvar find = conventions.find;\nvar NAMESPACE = conventions.NAMESPACE;\n\n/**\n * A prerequisite for `[].filter`, to drop elements that are empty\n * @param {string} input\n * @returns {boolean}\n */\nfunction notEmptyString (input) {\n\treturn input !== ''\n}\n/**\n * @see https://infra.spec.whatwg.org/#split-on-ascii-whitespace\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * @param {string} input\n * @returns {string[]} (can be empty)\n */\nfunction splitOnASCIIWhitespace(input) {\n\t// U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, U+0020 SPACE\n\treturn input ? input.split(/[\\t\\n\\f\\r ]+/).filter(notEmptyString) : []\n}\n\n/**\n * Adds element as a key to current if it is not already present.\n *\n * @param {Record} current\n * @param {string} element\n * @returns {Record}\n */\nfunction orderedSetReducer (current, element) {\n\tif (!current.hasOwnProperty(element)) {\n\t\tcurrent[element] = true;\n\t}\n\treturn current;\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ordered-set\n * @param {string} input\n * @returns {string[]}\n */\nfunction toOrderedSet(input) {\n\tif (!input) return [];\n\tvar list = splitOnASCIIWhitespace(input);\n\treturn Object.keys(list.reduce(orderedSetReducer, {}))\n}\n\n/**\n * Uses `list.indexOf` to implement something like `Array.prototype.includes`,\n * which we can not rely on being available.\n *\n * @param {any[]} list\n * @returns {function(any): boolean}\n */\nfunction arrayIncludes (list) {\n\treturn function(element) {\n\t\treturn list && list.indexOf(element) !== -1;\n\t}\n}\n\nfunction copy(src,dest){\n\tfor(var p in src){\n\t\tif (Object.prototype.hasOwnProperty.call(src, p)) {\n\t\t\tdest[p] = src[p];\n\t\t}\n\t}\n}\n\n/**\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*((?:.*\\{\\s*?[\\r\\n][\\s\\S]*?^})|\\S.*?(?=[;\\r\\n]));?\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*(\\S.*?(?=[;\\r\\n]));?\n */\nfunction _extends(Class,Super){\n\tvar pt = Class.prototype;\n\tif(!(pt instanceof Super)){\n\t\tfunction t(){};\n\t\tt.prototype = Super.prototype;\n\t\tt = new t();\n\t\tcopy(pt,t);\n\t\tClass.prototype = pt = t;\n\t}\n\tif(pt.constructor != Class){\n\t\tif(typeof Class != 'function'){\n\t\t\tconsole.error(\"unknown Class:\"+Class)\n\t\t}\n\t\tpt.constructor = Class\n\t}\n}\n\n// Node Types\nvar NodeType = {}\nvar ELEMENT_NODE = NodeType.ELEMENT_NODE = 1;\nvar ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2;\nvar TEXT_NODE = NodeType.TEXT_NODE = 3;\nvar CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4;\nvar ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5;\nvar ENTITY_NODE = NodeType.ENTITY_NODE = 6;\nvar PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;\nvar COMMENT_NODE = NodeType.COMMENT_NODE = 8;\nvar DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9;\nvar DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10;\nvar DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11;\nvar NOTATION_NODE = NodeType.NOTATION_NODE = 12;\n\n// ExceptionCode\nvar ExceptionCode = {}\nvar ExceptionMessage = {};\nvar INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]=\"Index size error\"),1);\nvar DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]=\"DOMString size error\"),2);\nvar HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]=\"Hierarchy request error\"),3);\nvar WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]=\"Wrong document\"),4);\nvar INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]=\"Invalid character\"),5);\nvar NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]=\"No data allowed\"),6);\nvar NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]=\"No modification allowed\"),7);\nvar NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]=\"Not found\"),8);\nvar NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]=\"Not supported\"),9);\nvar INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]=\"Attribute in use\"),10);\n//level2\nvar INVALID_STATE_ERR \t= ExceptionCode.INVALID_STATE_ERR \t= ((ExceptionMessage[11]=\"Invalid state\"),11);\nvar SYNTAX_ERR \t= ExceptionCode.SYNTAX_ERR \t= ((ExceptionMessage[12]=\"Syntax error\"),12);\nvar INVALID_MODIFICATION_ERR \t= ExceptionCode.INVALID_MODIFICATION_ERR \t= ((ExceptionMessage[13]=\"Invalid modification\"),13);\nvar NAMESPACE_ERR \t= ExceptionCode.NAMESPACE_ERR \t= ((ExceptionMessage[14]=\"Invalid namespace\"),14);\nvar INVALID_ACCESS_ERR \t= ExceptionCode.INVALID_ACCESS_ERR \t= ((ExceptionMessage[15]=\"Invalid access\"),15);\n\n/**\n * DOM Level 2\n * Object DOMException\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html\n * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html\n */\nfunction DOMException(code, message) {\n\tif(message instanceof Error){\n\t\tvar error = message;\n\t}else{\n\t\terror = this;\n\t\tError.call(this, ExceptionMessage[code]);\n\t\tthis.message = ExceptionMessage[code];\n\t\tif(Error.captureStackTrace) Error.captureStackTrace(this, DOMException);\n\t}\n\terror.code = code;\n\tif(message) this.message = this.message + \": \" + message;\n\treturn error;\n};\nDOMException.prototype = Error.prototype;\ncopy(ExceptionCode,DOMException)\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177\n * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.\n * The items in the NodeList are accessible via an integral index, starting from 0.\n */\nfunction NodeList() {\n};\nNodeList.prototype = {\n\t/**\n\t * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.\n\t * @standard level1\n\t */\n\tlength:0,\n\t/**\n\t * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.\n\t * @standard level1\n\t * @param index unsigned long\n\t * Index into the collection.\n\t * @return Node\n\t * \tThe node at the indexth position in the NodeList, or null if that is not a valid index.\n\t */\n\titem: function(index) {\n\t\treturn index >= 0 && index < this.length ? this[index] : null;\n\t},\n\ttoString:function(isHTML,nodeFilter){\n\t\tfor(var buf = [], i = 0;i=0){\n\t\tvar lastIndex = list.length-1\n\t\twhile(i0 || key == 'xmlns'){\n//\t\t\treturn null;\n//\t\t}\n\t\t//console.log()\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar attr = this[i];\n\t\t\t//console.log(attr.nodeName,key)\n\t\t\tif(attr.nodeName == key){\n\t\t\t\treturn attr;\n\t\t\t}\n\t\t}\n\t},\n\tsetNamedItem: function(attr) {\n\t\tvar el = attr.ownerElement;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\tvar oldAttr = this.getNamedItem(attr.nodeName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\t/* returns Node */\n\tsetNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR\n\t\tvar el = attr.ownerElement, oldAttr;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\toldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\n\t/* returns Node */\n\tremoveNamedItem: function(key) {\n\t\tvar attr = this.getNamedItem(key);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\n\n\t},// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR\n\n\t//for level2\n\tremoveNamedItemNS:function(namespaceURI,localName){\n\t\tvar attr = this.getNamedItemNS(namespaceURI,localName);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\t},\n\tgetNamedItemNS: function(namespaceURI, localName) {\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar node = this[i];\n\t\t\tif(node.localName == localName && node.namespaceURI == namespaceURI){\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n};\n\n/**\n * The DOMImplementation interface represents an object providing methods\n * which are not dependent on any particular document.\n * Such an object is returned by the `Document.implementation` property.\n *\n * __The individual methods describe the differences compared to the specs.__\n *\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation MDN\n * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 DOM Level 1 Core (Initial)\n * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-102161490 DOM Level 2 Core\n * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-102161490 DOM Level 3 Core\n * @see https://dom.spec.whatwg.org/#domimplementation DOM Living Standard\n */\nfunction DOMImplementation() {\n}\n\nDOMImplementation.prototype = {\n\t/**\n\t * The DOMImplementation.hasFeature() method returns a Boolean flag indicating if a given feature is supported.\n\t * The different implementations fairly diverged in what kind of features were reported.\n\t * The latest version of the spec settled to force this method to always return true, where the functionality was accurate and in use.\n\t *\n\t * @deprecated It is deprecated and modern browsers return true in all cases.\n\t *\n\t * @param {string} feature\n\t * @param {string} [version]\n\t * @returns {boolean} always true\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature MDN\n\t * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5CED94D7 DOM Level 1 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature DOM Living Standard\n\t */\n\thasFeature: function(feature, version) {\n\t\t\treturn true;\n\t},\n\t/**\n\t * Creates an XML Document object of the specified type with its document element.\n\t *\n\t * __It behaves slightly different from the description in the living standard__:\n\t * - There is no interface/class `XMLDocument`, it returns a `Document` instance.\n\t * - `contentType`, `encoding`, `mode`, `origin`, `url` fields are currently not declared.\n\t * - this implementation is not validating names or qualified names\n\t * (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string|null} namespaceURI\n\t * @param {string} qualifiedName\n\t * @param {DocumentType=null} doctype\n\t * @returns {Document}\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocument DOM Level 2 Core (initial)\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument DOM Level 2 Core\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocument: function(namespaceURI, qualifiedName, doctype){\n\t\tvar doc = new Document();\n\t\tdoc.implementation = this;\n\t\tdoc.childNodes = new NodeList();\n\t\tdoc.doctype = doctype || null;\n\t\tif (doctype){\n\t\t\tdoc.appendChild(doctype);\n\t\t}\n\t\tif (qualifiedName){\n\t\t\tvar root = doc.createElementNS(namespaceURI, qualifiedName);\n\t\t\tdoc.appendChild(root);\n\t\t}\n\t\treturn doc;\n\t},\n\t/**\n\t * Returns a doctype, with the given `qualifiedName`, `publicId`, and `systemId`.\n\t *\n\t * __This behavior is slightly different from the in the specs__:\n\t * - this implementation is not validating names or qualified names\n\t * (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string} qualifiedName\n\t * @param {string} [publicId]\n\t * @param {string} [systemId]\n\t * @returns {DocumentType} which can either be used with `DOMImplementation.createDocument` upon document creation\n\t * \t\t\t\t or can be put into the document via methods like `Node.insertBefore()` or `Node.replaceChild()`\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocumentType MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocType DOM Level 2 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype DOM Living Standard\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocumentType: function(qualifiedName, publicId, systemId){\n\t\tvar node = new DocumentType();\n\t\tnode.name = qualifiedName;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.publicId = publicId || '';\n\t\tnode.systemId = systemId || '';\n\n\t\treturn node;\n\t}\n};\n\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247\n */\n\nfunction Node() {\n};\n\nNode.prototype = {\n\tfirstChild : null,\n\tlastChild : null,\n\tpreviousSibling : null,\n\tnextSibling : null,\n\tattributes : null,\n\tparentNode : null,\n\tchildNodes : null,\n\townerDocument : null,\n\tnodeValue : null,\n\tnamespaceURI : null,\n\tprefix : null,\n\tlocalName : null,\n\t// Modified in DOM Level 2:\n\tinsertBefore:function(newChild, refChild){//raises\n\t\treturn _insertBefore(this,newChild,refChild);\n\t},\n\treplaceChild:function(newChild, oldChild){//raises\n\t\t_insertBefore(this, newChild,oldChild, assertPreReplacementValidityInDocument);\n\t\tif(oldChild){\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t},\n\tremoveChild:function(oldChild){\n\t\treturn _removeChild(this,oldChild);\n\t},\n\tappendChild:function(newChild){\n\t\treturn this.insertBefore(newChild,null);\n\t},\n\thasChildNodes:function(){\n\t\treturn this.firstChild != null;\n\t},\n\tcloneNode:function(deep){\n\t\treturn cloneNode(this.ownerDocument||this,this,deep);\n\t},\n\t// Modified in DOM Level 2:\n\tnormalize:function(){\n\t\tvar child = this.firstChild;\n\t\twhile(child){\n\t\t\tvar next = child.nextSibling;\n\t\t\tif(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){\n\t\t\t\tthis.removeChild(next);\n\t\t\t\tchild.appendData(next.data);\n\t\t\t}else{\n\t\t\t\tchild.normalize();\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t}\n\t},\n \t// Introduced in DOM Level 2:\n\tisSupported:function(feature, version){\n\t\treturn this.ownerDocument.implementation.hasFeature(feature,version);\n\t},\n // Introduced in DOM Level 2:\n hasAttributes:function(){\n \treturn this.attributes.length>0;\n },\n\t/**\n\t * Look up the prefix associated to the given namespace URI, starting from this node.\n\t * **The default namespace declarations are ignored by this method.**\n\t * See Namespace Prefix Lookup for details on the algorithm used by this method.\n\t *\n\t * _Note: The implementation seems to be incomplete when compared to the algorithm described in the specs._\n\t *\n\t * @param {string | null} namespaceURI\n\t * @returns {string | null}\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/namespaces-algorithms.html#lookupNamespacePrefixAlgo\n\t * @see https://dom.spec.whatwg.org/#dom-node-lookupprefix\n\t * @see https://github.com/xmldom/xmldom/issues/322\n\t */\n lookupPrefix:function(namespaceURI){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tfor(var n in map){\n\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(map, n) && map[n] === namespaceURI) {\n\t\t\t\t\t\t\treturn n;\n\t\t\t\t\t\t}\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n lookupNamespaceURI:function(prefix){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tif(Object.prototype.hasOwnProperty.call(map, prefix)){\n \t\t\t\treturn map[prefix] ;\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n isDefaultNamespace:function(namespaceURI){\n \tvar prefix = this.lookupPrefix(namespaceURI);\n \treturn prefix == null;\n }\n};\n\n\nfunction _xmlEncoder(c){\n\treturn c == '<' && '<' ||\n c == '>' && '>' ||\n c == '&' && '&' ||\n c == '\"' && '"' ||\n '&#'+c.charCodeAt()+';'\n}\n\n\ncopy(NodeType,Node);\ncopy(NodeType,Node.prototype);\n\n/**\n * @param callback return true for continue,false for break\n * @return boolean true: break visit;\n */\nfunction _visitNode(node,callback){\n\tif(callback(node)){\n\t\treturn true;\n\t}\n\tif(node = node.firstChild){\n\t\tdo{\n\t\t\tif(_visitNode(node,callback)){return true}\n }while(node=node.nextSibling)\n }\n}\n\n\n\nfunction Document(){\n\tthis.ownerDocument = this;\n}\n\nfunction _onAddAttribute(doc,el,newAttr){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tel._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value\n\t}\n}\n\nfunction _onRemoveAttribute(doc,el,newAttr,remove){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tdelete el._nsMap[newAttr.prefix?newAttr.localName:'']\n\t}\n}\n\n/**\n * Updates `el.childNodes`, updating the indexed items and it's `length`.\n * Passing `newChild` means it will be appended.\n * Otherwise it's assumed that an item has been removed,\n * and `el.firstNode` and it's `.nextSibling` are used\n * to walk the current list of child nodes.\n *\n * @param {Document} doc\n * @param {Node} el\n * @param {Node} [newChild]\n * @private\n */\nfunction _onUpdateChild (doc, el, newChild) {\n\tif(doc && doc._inc){\n\t\tdoc._inc++;\n\t\t//update childNodes\n\t\tvar cs = el.childNodes;\n\t\tif (newChild) {\n\t\t\tcs[cs.length++] = newChild;\n\t\t} else {\n\t\t\tvar child = el.firstChild;\n\t\t\tvar i = 0;\n\t\t\twhile (child) {\n\t\t\t\tcs[i++] = child;\n\t\t\t\tchild = child.nextSibling;\n\t\t\t}\n\t\t\tcs.length = i;\n\t\t\tdelete cs[cs.length];\n\t\t}\n\t}\n}\n\n/**\n * Removes the connections between `parentNode` and `child`\n * and any existing `child.previousSibling` or `child.nextSibling`.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n *\n * @param {Node} parentNode\n * @param {Node} child\n * @returns {Node} the child that was removed.\n * @private\n */\nfunction _removeChild (parentNode, child) {\n\tvar previous = child.previousSibling;\n\tvar next = child.nextSibling;\n\tif (previous) {\n\t\tprevious.nextSibling = next;\n\t} else {\n\t\tparentNode.firstChild = next;\n\t}\n\tif (next) {\n\t\tnext.previousSibling = previous;\n\t} else {\n\t\tparentNode.lastChild = previous;\n\t}\n\tchild.parentNode = null;\n\tchild.previousSibling = null;\n\tchild.nextSibling = null;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode);\n\treturn child;\n}\n\n/**\n * Returns `true` if `node` can be a parent for insertion.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasValidParentNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE || node.nodeType === Node.ELEMENT_NODE)\n\t);\n}\n\n/**\n * Returns `true` if `node` can be inserted according to it's `nodeType`.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasInsertableNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(isElementNode(node) ||\n\t\t\tisTextNode(node) ||\n\t\t\tisDocTypeNode(node) ||\n\t\t\tnode.nodeType === Node.DOCUMENT_FRAGMENT_NODE ||\n\t\t\tnode.nodeType === Node.COMMENT_NODE ||\n\t\t\tnode.nodeType === Node.PROCESSING_INSTRUCTION_NODE)\n\t);\n}\n\n/**\n * Returns true if `node` is a DOCTYPE node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isDocTypeNode(node) {\n\treturn node && node.nodeType === Node.DOCUMENT_TYPE_NODE;\n}\n\n/**\n * Returns true if the node is an element\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isElementNode(node) {\n\treturn node && node.nodeType === Node.ELEMENT_NODE;\n}\n/**\n * Returns true if `node` is a text node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isTextNode(node) {\n\treturn node && node.nodeType === Node.TEXT_NODE;\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Document} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementInsertionPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\tif (find(parentChildNodes, isElementNode) || isDocTypeNode(child)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Node} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementReplacementPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\n\tfunction hasElementChildThatIsNotChild(node) {\n\t\treturn isElementNode(node) && node !== child;\n\t}\n\n\tif (find(parentChildNodes, hasElementChildThatIsNotChild)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * @private\n * Steps 1-5 of the checks before inserting and before replacing a child are the same.\n *\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidity1to5(parent, node, child) {\n\t// 1. If `parent` is not a Document, DocumentFragment, or Element node, then throw a \"HierarchyRequestError\" DOMException.\n\tif (!hasValidParentNodeType(parent)) {\n\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Unexpected parent node type ' + parent.nodeType);\n\t}\n\t// 2. If `node` is a host-including inclusive ancestor of `parent`, then throw a \"HierarchyRequestError\" DOMException.\n\t// not implemented!\n\t// 3. If `child` is non-null and its parent is not `parent`, then throw a \"NotFoundError\" DOMException.\n\tif (child && child.parentNode !== parent) {\n\t\tthrow new DOMException(NOT_FOUND_ERR, 'child not in parent');\n\t}\n\tif (\n\t\t// 4. If `node` is not a DocumentFragment, DocumentType, Element, or CharacterData node, then throw a \"HierarchyRequestError\" DOMException.\n\t\t!hasInsertableNodeType(node) ||\n\t\t// 5. If either `node` is a Text node and `parent` is a document,\n\t\t// the sax parser currently adds top level text nodes, this will be fixed in 0.9.0\n\t\t// || (node.nodeType === Node.TEXT_NODE && parent.nodeType === Node.DOCUMENT_NODE)\n\t\t// or `node` is a doctype and `parent` is not a document, then throw a \"HierarchyRequestError\" DOMException.\n\t\t(isDocTypeNode(node) && parent.nodeType !== Node.DOCUMENT_NODE)\n\t) {\n\t\tthrow new DOMException(\n\t\t\tHIERARCHY_REQUEST_ERR,\n\t\t\t'Unexpected node type ' + node.nodeType + ' for parent node type ' + parent.nodeType\n\t\t);\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If node has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child,\n\t\t// `child` is a doctype, or `child` is non-null and a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child, `child` is a doctype,\n\t\t// or `child` is non-null and a doctype is following `child`.\n\t\tif (!isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\t// `parent` has a doctype child,\n\t\tif (find(parentChildNodes, isDocTypeNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// `child` is non-null and an element is preceding `child`,\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t\t// or `child` is null and `parent` has an element child.\n\t\tif (!child && parentElementChild) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can not be appended since element is present');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreReplacementValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If `node` has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (!isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\tfunction hasDoctypeChildThatIsNotChild(node) {\n\t\t\treturn isDocTypeNode(node) && node !== child;\n\t\t}\n\n\t\t// `parent` has a doctype child that is not `child`,\n\t\tif (find(parentChildNodes, hasDoctypeChildThatIsNotChild)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// or an element is preceding `child`.\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction _insertBefore(parent, node, child, _inDocumentAssertion) {\n\t// To ensure pre-insertion validity of a node into a parent before a child, run these steps:\n\tassertPreInsertionValidity1to5(parent, node, child);\n\n\t// If parent is a document, and any of the statements below, switched on the interface node implements,\n\t// are true, then throw a \"HierarchyRequestError\" DOMException.\n\tif (parent.nodeType === Node.DOCUMENT_NODE) {\n\t\t(_inDocumentAssertion || assertPreInsertionValidityInDocument)(parent, node, child);\n\t}\n\n\tvar cp = node.parentNode;\n\tif(cp){\n\t\tcp.removeChild(node);//remove and update\n\t}\n\tif(node.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\tvar newFirst = node.firstChild;\n\t\tif (newFirst == null) {\n\t\t\treturn node;\n\t\t}\n\t\tvar newLast = node.lastChild;\n\t}else{\n\t\tnewFirst = newLast = node;\n\t}\n\tvar pre = child ? child.previousSibling : parent.lastChild;\n\n\tnewFirst.previousSibling = pre;\n\tnewLast.nextSibling = child;\n\n\n\tif(pre){\n\t\tpre.nextSibling = newFirst;\n\t}else{\n\t\tparent.firstChild = newFirst;\n\t}\n\tif(child == null){\n\t\tparent.lastChild = newLast;\n\t}else{\n\t\tchild.previousSibling = newLast;\n\t}\n\tdo{\n\t\tnewFirst.parentNode = parent;\n\t}while(newFirst !== newLast && (newFirst= newFirst.nextSibling))\n\t_onUpdateChild(parent.ownerDocument||parent, parent);\n\t//console.log(parent.lastChild.nextSibling == null)\n\tif (node.nodeType == DOCUMENT_FRAGMENT_NODE) {\n\t\tnode.firstChild = node.lastChild = null;\n\t}\n\treturn node;\n}\n\n/**\n * Appends `newChild` to `parentNode`.\n * If `newChild` is already connected to a `parentNode` it is first removed from it.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n * @param {Node} parentNode\n * @param {Node} newChild\n * @returns {Node}\n * @private\n */\nfunction _appendSingleChild (parentNode, newChild) {\n\tif (newChild.parentNode) {\n\t\tnewChild.parentNode.removeChild(newChild);\n\t}\n\tnewChild.parentNode = parentNode;\n\tnewChild.previousSibling = parentNode.lastChild;\n\tnewChild.nextSibling = null;\n\tif (newChild.previousSibling) {\n\t\tnewChild.previousSibling.nextSibling = newChild;\n\t} else {\n\t\tparentNode.firstChild = newChild;\n\t}\n\tparentNode.lastChild = newChild;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode, newChild);\n\treturn newChild;\n}\n\nDocument.prototype = {\n\t//implementation : null,\n\tnodeName : '#document',\n\tnodeType : DOCUMENT_NODE,\n\t/**\n\t * The DocumentType node of the document.\n\t *\n\t * @readonly\n\t * @type DocumentType\n\t */\n\tdoctype : null,\n\tdocumentElement : null,\n\t_inc : 1,\n\n\tinsertBefore : function(newChild, refChild){//raises\n\t\tif(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){\n\t\t\tvar child = newChild.firstChild;\n\t\t\twhile(child){\n\t\t\t\tvar next = child.nextSibling;\n\t\t\t\tthis.insertBefore(child,refChild);\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t\treturn newChild;\n\t\t}\n\t\t_insertBefore(this, newChild, refChild);\n\t\tnewChild.ownerDocument = this;\n\t\tif (this.documentElement === null && newChild.nodeType === ELEMENT_NODE) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\n\t\treturn newChild;\n\t},\n\tremoveChild : function(oldChild){\n\t\tif(this.documentElement == oldChild){\n\t\t\tthis.documentElement = null;\n\t\t}\n\t\treturn _removeChild(this,oldChild);\n\t},\n\treplaceChild: function (newChild, oldChild) {\n\t\t//raises\n\t\t_insertBefore(this, newChild, oldChild, assertPreReplacementValidityInDocument);\n\t\tnewChild.ownerDocument = this;\n\t\tif (oldChild) {\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t\tif (isElementNode(newChild)) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\t},\n\t// Introduced in DOM Level 2:\n\timportNode : function(importedNode,deep){\n\t\treturn importNode(this,importedNode,deep);\n\t},\n\t// Introduced in DOM Level 2:\n\tgetElementById :\tfunction(id){\n\t\tvar rtv = null;\n\t\t_visitNode(this.documentElement,function(node){\n\t\t\tif(node.nodeType == ELEMENT_NODE){\n\t\t\t\tif(node.getAttribute('id') == id){\n\t\t\t\t\trtv = node;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\treturn rtv;\n\t},\n\n\t/**\n\t * The `getElementsByClassName` method of `Document` interface returns an array-like object\n\t * of all child elements which have **all** of the given class name(s).\n\t *\n\t * Returns an empty list if `classeNames` is an empty string or only contains HTML white space characters.\n\t *\n\t *\n\t * Warning: This is a live LiveNodeList.\n\t * Changes in the DOM will reflect in the array as the changes occur.\n\t * If an element selected by this array no longer qualifies for the selector,\n\t * it will automatically be removed. Be aware of this for iteration purposes.\n\t *\n\t * @param {string} classNames is a string representing the class name(s) to match; multiple class names are separated by (ASCII-)whitespace\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName\n\t * @see https://dom.spec.whatwg.org/#concept-getelementsbyclassname\n\t */\n\tgetElementsByClassName: function(classNames) {\n\t\tvar classNamesSet = toOrderedSet(classNames)\n\t\treturn new LiveNodeList(this, function(base) {\n\t\t\tvar ls = [];\n\t\t\tif (classNamesSet.length > 0) {\n\t\t\t\t_visitNode(base.documentElement, function(node) {\n\t\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE) {\n\t\t\t\t\t\tvar nodeClassNames = node.getAttribute('class')\n\t\t\t\t\t\t// can be null if the attribute does not exist\n\t\t\t\t\t\tif (nodeClassNames) {\n\t\t\t\t\t\t\t// before splitting and iterating just compare them for the most common case\n\t\t\t\t\t\t\tvar matches = classNames === nodeClassNames;\n\t\t\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\t\t\tvar nodeClassNamesSet = toOrderedSet(nodeClassNames)\n\t\t\t\t\t\t\t\tmatches = classNamesSet.every(arrayIncludes(nodeClassNamesSet))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(matches) {\n\t\t\t\t\t\t\t\tls.push(node);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ls;\n\t\t});\n\t},\n\n\t//document factory method:\n\tcreateElement :\tfunction(tagName){\n\t\tvar node = new Element();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = tagName;\n\t\tnode.tagName = tagName;\n\t\tnode.localName = tagName;\n\t\tnode.childNodes = new NodeList();\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\tcreateDocumentFragment :\tfunction(){\n\t\tvar node = new DocumentFragment();\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\treturn node;\n\t},\n\tcreateTextNode :\tfunction(data){\n\t\tvar node = new Text();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateComment :\tfunction(data){\n\t\tvar node = new Comment();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateCDATASection :\tfunction(data){\n\t\tvar node = new CDATASection();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateProcessingInstruction :\tfunction(target,data){\n\t\tvar node = new ProcessingInstruction();\n\t\tnode.ownerDocument = this;\n\t\tnode.tagName = node.nodeName = node.target = target;\n\t\tnode.nodeValue = node.data = data;\n\t\treturn node;\n\t},\n\tcreateAttribute :\tfunction(name){\n\t\tvar node = new Attr();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.name = name;\n\t\tnode.nodeName\t= name;\n\t\tnode.localName = name;\n\t\tnode.specified = true;\n\t\treturn node;\n\t},\n\tcreateEntityReference :\tfunction(name){\n\t\tvar node = new EntityReference();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.nodeName\t= name;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateElementNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Element();\n\t\tvar pl = qualifiedName.split(':');\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tnode.childNodes = new NodeList();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.tagName = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateAttributeNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Attr();\n\t\tvar pl = qualifiedName.split(':');\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.name = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tnode.specified = true;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\treturn node;\n\t}\n};\n_extends(Document,Node);\n\n\nfunction Element() {\n\tthis._nsMap = {};\n};\nElement.prototype = {\n\tnodeType : ELEMENT_NODE,\n\thasAttribute : function(name){\n\t\treturn this.getAttributeNode(name)!=null;\n\t},\n\tgetAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name);\n\t\treturn attr && attr.value || '';\n\t},\n\tgetAttributeNode : function(name){\n\t\treturn this.attributes.getNamedItem(name);\n\t},\n\tsetAttribute : function(name, value){\n\t\tvar attr = this.ownerDocument.createAttribute(name);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tremoveAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name)\n\t\tattr && this.removeAttributeNode(attr);\n\t},\n\n\t//four real opeartion method\n\tappendChild:function(newChild){\n\t\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\t\treturn this.insertBefore(newChild,null);\n\t\t}else{\n\t\t\treturn _appendSingleChild(this,newChild);\n\t\t}\n\t},\n\tsetAttributeNode : function(newAttr){\n\t\treturn this.attributes.setNamedItem(newAttr);\n\t},\n\tsetAttributeNodeNS : function(newAttr){\n\t\treturn this.attributes.setNamedItemNS(newAttr);\n\t},\n\tremoveAttributeNode : function(oldAttr){\n\t\t//console.log(this == oldAttr.ownerElement)\n\t\treturn this.attributes.removeNamedItem(oldAttr.nodeName);\n\t},\n\t//get real attribute name,and remove it by removeAttributeNode\n\tremoveAttributeNS : function(namespaceURI, localName){\n\t\tvar old = this.getAttributeNodeNS(namespaceURI, localName);\n\t\told && this.removeAttributeNode(old);\n\t},\n\n\thasAttributeNS : function(namespaceURI, localName){\n\t\treturn this.getAttributeNodeNS(namespaceURI, localName)!=null;\n\t},\n\tgetAttributeNS : function(namespaceURI, localName){\n\t\tvar attr = this.getAttributeNodeNS(namespaceURI, localName);\n\t\treturn attr && attr.value || '';\n\t},\n\tsetAttributeNS : function(namespaceURI, qualifiedName, value){\n\t\tvar attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tgetAttributeNodeNS : function(namespaceURI, localName){\n\t\treturn this.attributes.getNamedItemNS(namespaceURI, localName);\n\t},\n\n\tgetElementsByTagName : function(tagName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t});\n\t},\n\tgetElementsByTagNameNS : function(namespaceURI, localName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\n\t\t});\n\t}\n};\nDocument.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;\nDocument.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;\n\n\n_extends(Element,Node);\nfunction Attr() {\n};\nAttr.prototype.nodeType = ATTRIBUTE_NODE;\n_extends(Attr,Node);\n\n\nfunction CharacterData() {\n};\nCharacterData.prototype = {\n\tdata : '',\n\tsubstringData : function(offset, count) {\n\t\treturn this.data.substring(offset, offset+count);\n\t},\n\tappendData: function(text) {\n\t\ttext = this.data+text;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t},\n\tinsertData: function(offset,text) {\n\t\tthis.replaceData(offset,0,text);\n\n\t},\n\tappendChild:function(newChild){\n\t\tthrow new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR])\n\t},\n\tdeleteData: function(offset, count) {\n\t\tthis.replaceData(offset,count,\"\");\n\t},\n\treplaceData: function(offset, count, text) {\n\t\tvar start = this.data.substring(0,offset);\n\t\tvar end = this.data.substring(offset+count);\n\t\ttext = start + text + end;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t}\n}\n_extends(CharacterData,Node);\nfunction Text() {\n};\nText.prototype = {\n\tnodeName : \"#text\",\n\tnodeType : TEXT_NODE,\n\tsplitText : function(offset) {\n\t\tvar text = this.data;\n\t\tvar newText = text.substring(offset);\n\t\ttext = text.substring(0, offset);\n\t\tthis.data = this.nodeValue = text;\n\t\tthis.length = text.length;\n\t\tvar newNode = this.ownerDocument.createTextNode(newText);\n\t\tif(this.parentNode){\n\t\t\tthis.parentNode.insertBefore(newNode, this.nextSibling);\n\t\t}\n\t\treturn newNode;\n\t}\n}\n_extends(Text,CharacterData);\nfunction Comment() {\n};\nComment.prototype = {\n\tnodeName : \"#comment\",\n\tnodeType : COMMENT_NODE\n}\n_extends(Comment,CharacterData);\n\nfunction CDATASection() {\n};\nCDATASection.prototype = {\n\tnodeName : \"#cdata-section\",\n\tnodeType : CDATA_SECTION_NODE\n}\n_extends(CDATASection,CharacterData);\n\n\nfunction DocumentType() {\n};\nDocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;\n_extends(DocumentType,Node);\n\nfunction Notation() {\n};\nNotation.prototype.nodeType = NOTATION_NODE;\n_extends(Notation,Node);\n\nfunction Entity() {\n};\nEntity.prototype.nodeType = ENTITY_NODE;\n_extends(Entity,Node);\n\nfunction EntityReference() {\n};\nEntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;\n_extends(EntityReference,Node);\n\nfunction DocumentFragment() {\n};\nDocumentFragment.prototype.nodeName =\t\"#document-fragment\";\nDocumentFragment.prototype.nodeType =\tDOCUMENT_FRAGMENT_NODE;\n_extends(DocumentFragment,Node);\n\n\nfunction ProcessingInstruction() {\n}\nProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;\n_extends(ProcessingInstruction,Node);\nfunction XMLSerializer(){}\nXMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){\n\treturn nodeSerializeToString.call(node,isHtml,nodeFilter);\n}\nNode.prototype.toString = nodeSerializeToString;\nfunction nodeSerializeToString(isHtml,nodeFilter){\n\tvar buf = [];\n\tvar refNode = this.nodeType == 9 && this.documentElement || this;\n\tvar prefix = refNode.prefix;\n\tvar uri = refNode.namespaceURI;\n\n\tif(uri && prefix == null){\n\t\t//console.log(prefix)\n\t\tvar prefix = refNode.lookupPrefix(uri);\n\t\tif(prefix == null){\n\t\t\t//isHTML = true;\n\t\t\tvar visibleNamespaces=[\n\t\t\t{namespace:uri,prefix:null}\n\t\t\t//{namespace:uri,prefix:''}\n\t\t\t]\n\t\t}\n\t}\n\tserializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces);\n\t//console.log('###',this.nodeType,uri,prefix,buf.join(''))\n\treturn buf.join('');\n}\n\nfunction needNamespaceDefine(node, isHTML, visibleNamespaces) {\n\tvar prefix = node.prefix || '';\n\tvar uri = node.namespaceURI;\n\t// According to [Namespaces in XML 1.0](https://www.w3.org/TR/REC-xml-names/#ns-using) ,\n\t// and more specifically https://www.w3.org/TR/REC-xml-names/#nsc-NoPrefixUndecl :\n\t// > In a namespace declaration for a prefix [...], the attribute value MUST NOT be empty.\n\t// in a similar manner [Namespaces in XML 1.1](https://www.w3.org/TR/xml-names11/#ns-using)\n\t// and more specifically https://www.w3.org/TR/xml-names11/#nsc-NSDeclared :\n\t// > [...] Furthermore, the attribute value [...] must not be an empty string.\n\t// so serializing empty namespace value like xmlns:ds=\"\" would produce an invalid XML document.\n\tif (!uri) {\n\t\treturn false;\n\t}\n\tif (prefix === \"xml\" && uri === NAMESPACE.XML || uri === NAMESPACE.XMLNS) {\n\t\treturn false;\n\t}\n\n\tvar i = visibleNamespaces.length\n\twhile (i--) {\n\t\tvar ns = visibleNamespaces[i];\n\t\t// get namespace prefix\n\t\tif (ns.prefix === prefix) {\n\t\t\treturn ns.namespace !== uri;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n * Well-formed constraint: No < in Attribute Values\n * > The replacement text of any entity referred to directly or indirectly\n * > in an attribute value must not contain a <.\n * @see https://www.w3.org/TR/xml11/#CleanAttrVals\n * @see https://www.w3.org/TR/xml11/#NT-AttValue\n *\n * Literal whitespace other than space that appear in attribute values\n * are serialized as their entity references, so they will be preserved.\n * (In contrast to whitespace literals in the input which are normalized to spaces)\n * @see https://www.w3.org/TR/xml11/#AVNormalize\n * @see https://w3c.github.io/DOM-Parsing/#serializing-an-element-s-attributes\n */\nfunction addSerializedAttribute(buf, qualifiedName, value) {\n\tbuf.push(' ', qualifiedName, '=\"', value.replace(/[<>&\"\\t\\n\\r]/g, _xmlEncoder), '\"')\n}\n\nfunction serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){\n\tif (!visibleNamespaces) {\n\t\tvisibleNamespaces = [];\n\t}\n\n\tif(nodeFilter){\n\t\tnode = nodeFilter(node);\n\t\tif(node){\n\t\t\tif(typeof node == 'string'){\n\t\t\t\tbuf.push(node);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}else{\n\t\t\treturn;\n\t\t}\n\t\t//buf.sort.apply(attrs, attributeSorter);\n\t}\n\n\tswitch(node.nodeType){\n\tcase ELEMENT_NODE:\n\t\tvar attrs = node.attributes;\n\t\tvar len = attrs.length;\n\t\tvar child = node.firstChild;\n\t\tvar nodeName = node.tagName;\n\n\t\tisHTML = NAMESPACE.isHTML(node.namespaceURI) || isHTML\n\n\t\tvar prefixedNodeName = nodeName\n\t\tif (!isHTML && !node.prefix && node.namespaceURI) {\n\t\t\tvar defaultNS\n\t\t\t// lookup current default ns from `xmlns` attribute\n\t\t\tfor (var ai = 0; ai < attrs.length; ai++) {\n\t\t\t\tif (attrs.item(ai).name === 'xmlns') {\n\t\t\t\t\tdefaultNS = attrs.item(ai).value\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!defaultNS) {\n\t\t\t\t// lookup current default ns in visibleNamespaces\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.prefix === '' && namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tdefaultNS = namespace.namespace\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (defaultNS !== node.namespaceURI) {\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tif (namespace.prefix) {\n\t\t\t\t\t\t\tprefixedNodeName = namespace.prefix + ':' + nodeName\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbuf.push('<', prefixedNodeName);\n\n\t\tfor(var i=0;i');\n\t\t\t//if is cdata child node\n\t\t\tif(isHTML && /^script$/i.test(nodeName)){\n\t\t\t\twhile(child){\n\t\t\t\t\tif(child.data){\n\t\t\t\t\t\tbuf.push(child.data);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\t}\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}else\n\t\t\t{\n\t\t\t\twhile(child){\n\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuf.push('');\n\t\t}else{\n\t\t\tbuf.push('/>');\n\t\t}\n\t\t// remove added visible namespaces\n\t\t//visibleNamespaces.length = startVisibleNamespaces;\n\t\treturn;\n\tcase DOCUMENT_NODE:\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t\treturn;\n\tcase ATTRIBUTE_NODE:\n\t\treturn addSerializedAttribute(buf, node.name, node.value);\n\tcase TEXT_NODE:\n\t\t/**\n\t\t * The ampersand character (&) and the left angle bracket (<) must not appear in their literal form,\n\t\t * except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section.\n\t\t * If they are needed elsewhere, they must be escaped using either numeric character references or the strings\n\t\t * `&` and `<` respectively.\n\t\t * The right angle bracket (>) may be represented using the string \" > \", and must, for compatibility,\n\t\t * be escaped using either `>` or a character reference when it appears in the string `]]>` in content,\n\t\t * when that string is not marking the end of a CDATA section.\n\t\t *\n\t\t * In the content of elements, character data is any string of characters\n\t\t * which does not contain the start-delimiter of any markup\n\t\t * and does not include the CDATA-section-close delimiter, `]]>`.\n\t\t *\n\t\t * @see https://www.w3.org/TR/xml/#NT-CharData\n\t\t * @see https://w3c.github.io/DOM-Parsing/#xml-serializing-a-text-node\n\t\t */\n\t\treturn buf.push(node.data\n\t\t\t.replace(/[<&>]/g,_xmlEncoder)\n\t\t);\n\tcase CDATA_SECTION_NODE:\n\t\treturn buf.push( '');\n\tcase COMMENT_NODE:\n\t\treturn buf.push( \"\");\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',\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","var dom = require('./dom')\nexports.DOMImplementation = dom.DOMImplementation\nexports.XMLSerializer = dom.XMLSerializer\nexports.DOMParser = require('./dom-parser').DOMParser\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)//\") { // (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","/**\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","/**\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","function _extends() {\n return (module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\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 URLToolkit from 'url-toolkit';\nimport window from 'global/window';\nvar DEFAULT_LOCATION = 'http://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 } // IE11 supports URL but not the URL constructor\n // feature detect the behavior we want\n\n\n var nativeURL = typeof window.URL === 'function';\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 if (nativeURL) {\n baseUrl = new window.URL(baseUrl, window.location || DEFAULT_LOCATION);\n } else if (!/\\/\\//i.test(baseUrl)) {\n baseUrl = URLToolkit.buildAbsoluteURL(window.location && window.location.href || '', baseUrl);\n }\n\n if (nativeURL) {\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\n return URLToolkit.buildAbsoluteURL(baseUrl, relativeUrl);\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.1.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 * 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 const split = event.attributes.RESOLUTION.split('x');\n const resolution = {};\n\n if (split[0]) {\n resolution.width = parseInt(split[0], 10);\n }\n\n if (split[1]) {\n resolution.height = parseInt(split[1], 10);\n }\n\n event.attributes.RESOLUTION = 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-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 } // 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 * @extends Stream\n */\n\n\nclass Parser extends Stream {\n constructor() {\n super();\n this.lineStream = new LineStream();\n this.parseStream = new ParseStream();\n this.lineStream.pipe(this.parseStream);\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 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;\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 'content-steering'() {\n this.manifest.contentSteering = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-CONTENT-STEERING', entry.attributes, ['SERVER-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 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};\nexport var browserSupportsCodec = function browserSupportsCodec(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n return window.MediaSource && window.MediaSource.isTypeSupported && window.MediaSource.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};","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 mpd-parser @version 1.3.0 @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.0\";\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\n if (!a[label]) {\n a[label] = {\n language: label,\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.10.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 from 'global/document';\nimport keycode from 'keycode';\nimport safeParseTuple from 'safe-json-parse/tuple';\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.10.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) {\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 const log = function (...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 `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 * 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 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_SAFARI = /Safari/i.test(USER_AGENT) && !IS_CHROME && !IS_ANDROID && !IS_EDGE;\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 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 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 === 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[method](null);\n }\n if (isNonBlankString(context)) {\n context = document.querySelector(context);\n }\n const ctx = isEl(context) ? context : document;\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.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 module:dom~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`. If `false`, the `classToToggle` will be removed from\n * the `element`. If `undefined`, the callback will be ignored.\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|module:dom~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.body.focus();\n document.onselectstart = function () {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking.\n */\nfunction unblockTextSelection() {\n document.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[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 item = item.parentNode;\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.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 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.styleSheets].forEach(styleSheet => {\n try {\n const cssRules = [...styleSheet.cssRules].map(rule => rule.cssText).join('');\n const style = document.createElement('style');\n style.textContent = cssRules;\n win.document.head.appendChild(style);\n } catch (e) {\n const link = document.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.getElementsByTagName('video'));\n const audios = Array.prototype.slice.call(document.getElementsByTagName('audio'));\n const divs = Array.prototype.slice.call(document.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.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.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 // TODO: Probably best to create a whitelist of event props\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 (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' && key !== 'webkitMovementX' && key !== 'webkitMovementY' && key !== 'path') {\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;\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.documentElement;\n const body = document.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\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 = 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\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 [target, type, listener] = args;\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/**\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 * A callback that is called when a component is ready. Does not have any\n * parameters and any callback value will be ignored.\n *\n * @callback ReadyCallback\n * @this Component\n */\n\n /**\n * Creates an instance of this class.\n *\n * @param { import('./player').default } 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 on(type, fn) {}\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 off(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\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\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 trigger(event, hash) {}\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 { import('./player').default }\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.createElementNS(xmlnsURL, 'svg');\n svgEl.setAttributeNS(null, 'viewBox', '0 0 512 512');\n const useEl = document.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 * @return {Component}\n * Returns itself; method can be chained.\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 based on (@link Component#hasClass}\n *\n * @param {boolean|Dom~predicate} [predicate]\n * An {@link Dom~predicate} function or a boolean\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 * 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.\n if (!keycode.isEventKey(event, 'Tab')) {\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 return;\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 * 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 not 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 && playerNames.map(pname => players[pname]).every(Boolean)) {\n throw new Error('Can not register Player component after player has been created.');\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/**\n * Compute the percentage of the media that has been buffered.\n *\n * @param { import('./time').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 * 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// Add types as properties on MediaError\n// e.g. MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\nfor (let errNum = 0; errNum < MediaError.errorTypes.length; errNum++) {\n MediaError[MediaError.errorTypes[errNum]] = errNum;\n // values should be accessible on both the class and instance\n MediaError.prototype[MediaError.errorTypes[errNum]] = errNum;\n}\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/**\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 { import('../tech/tech').default } 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 */\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 * Create an instance of this class.\n *\n * @param { import('./player').default } 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 { import('./utils/dom').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 });\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 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 /**\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 this.trigger('modalclose');\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 { import('./utils/dom').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 /**\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 { import('./utils/dom').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 { import('./utils/dom').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.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 // Do not allow keydowns to reach out of the modal dialog.\n event.stopPropagation();\n if (keycode.isEventKey(event, '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 (!keycode.isEventKey(event, '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.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/**\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 { import('./track').default[] } 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 { import('./track').default } 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 { import('./track').default } 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 { import('./track').default }\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/**\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 { import('./audio-track').default } 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 { import('./audio-track').default[] } [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 { import('./audio-track').default } 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/**\n * Un-select all other {@link VideoTrack}s that are selected.\n *\n * @param {VideoTrackList} list\n * list to work on\n *\n * @param { import('./video-track').default } 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 { import('./video-track').default } 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/**\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 { import('./text-track').default } 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 * @typedef {Object} url:URLObject\n *\n * @property {string} protocol\n * The protocol of the url that was parsed.\n *\n * @property {string} hostname\n * The hostname of the url that was parsed.\n *\n * @property {string} port\n * The port of the url that was parsed.\n *\n * @property {string} pathname\n * The pathname of the url that was parsed.\n *\n * @property {string} search\n * The search query of the url that was parsed.\n *\n * @property {string} hash\n * The hash of the url that was parsed.\n *\n * @property {string} host\n * The host of the url that was parsed.\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:URLObject}\n * An object of url details\n */\nconst parseUrl = function (url) {\n // This entire method can be replace with URL once we are able to drop IE11\n\n const props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n const a = document.createElement('a');\n a.href = url;\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE because the anchor loses its\n // properties when it's removed from the dom\n const details = {};\n for (let i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n if (!details.protocol) {\n details.protocol = window$1.location.protocol;\n }\n\n /* istanbul ignore if */\n if (!details.host) {\n details.host = window$1.location.host;\n }\n return details;\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 *\n * @see http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n */\nconst getAbsoluteURL = function (url) {\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Add the url to an anchor and let the browser parse it to convert to an absolute url\n const a = document.createElement('a');\n a.href = url;\n url = a.href;\n }\n return url;\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 {Object} [winLoc]\n * the domain to check the url against, defaults to window.location\n *\n * @param {string} [winLoc.protocol]\n * The window location protocol defaults to window.location.protocol\n *\n * @param {string} [winLoc.host]\n * The window location host defaults to window.location.host\n *\n * @return {boolean}\n * Whether it is a cross domain request or not.\n */\nconst isCrossOrigin = function (url, winLoc = window$1.location) {\n const urlInfo = parseUrl(url);\n\n // IE8 protocol relative urls will return ':' for protocol\n const srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol;\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n const crossOrigin = srcProtocol + urlInfo.host !== winLoc.protocol + winLoc.host;\n return crossOrigin;\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/**\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 { import('../tech/tech').default } 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 * @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/**\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 { import('../tech/tech').default } 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/**\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 { import('../utils/time').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 { import('../utils/time').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.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.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'