From 475c57c4409c6fa9a7b793bc0e003c3f0ecff372 Mon Sep 17 00:00:00 2001 From: helloxujingliang <3225043@qq.com> Date: Sat, 23 Nov 2024 16:16:58 +0800 Subject: [PATCH] merge --- EasyPlayer-element.min.js | 115970 +++++++++++++++ EasyPlayer.wasm | Bin 0 -> 3034592 bytes index.html | 5 + package.json | 1 + src/components/MapboxMaps/lib/splitpolygon.ts | 22 +- src/views/sys/exception/Converge.vue | 115 +- .../exception/Converge/MonitoringData.json | 16 + src/views/sys/exception/Converge/index.vue | 178 +- src/views/sys/exception/Converge/src/MP.ts | 554 + .../Converge/src/WktGeojsonTransform.ts | 18 + .../sys/exception/Converge/src/config.ts | 80 + .../sys/exception/Converge/src/index.css | 22 + .../sys/exception/Converge/src/index.less | 27 + src/views/sys/exception/Converge/src/tool.ts | 62 + src/views/sys/exception/VideoSupervision.vue | 28 +- .../VideoSupervision/layers/index.vue | 223 + .../VideoSupervision/map/MonitoringData.json | 16 + .../exception/VideoSupervision/map/map.vue | 12 +- .../VideoSupervision/monitor/index.vue | 112 +- .../VideoSupervision/tiflist/index.vue | 31 +- .../exception/mapComponent/layers/index.vue | 290 + .../exception/mapComponent/monitor/index.vue | 156 + 22 files changed, 117867 insertions(+), 71 deletions(-) create mode 100644 EasyPlayer-element.min.js create mode 100644 EasyPlayer.wasm create mode 100644 src/views/sys/exception/Converge/MonitoringData.json create mode 100644 src/views/sys/exception/Converge/src/MP.ts create mode 100644 src/views/sys/exception/Converge/src/WktGeojsonTransform.ts create mode 100644 src/views/sys/exception/Converge/src/config.ts create mode 100644 src/views/sys/exception/Converge/src/index.css create mode 100644 src/views/sys/exception/Converge/src/index.less create mode 100644 src/views/sys/exception/Converge/src/tool.ts create mode 100644 src/views/sys/exception/VideoSupervision/layers/index.vue create mode 100644 src/views/sys/exception/VideoSupervision/map/MonitoringData.json create mode 100644 src/views/sys/exception/mapComponent/layers/index.vue create mode 100644 src/views/sys/exception/mapComponent/monitor/index.vue diff --git a/EasyPlayer-element.min.js b/EasyPlayer-element.min.js new file mode 100644 index 00000000..d04ffe3c --- /dev/null +++ b/EasyPlayer-element.min.js @@ -0,0 +1,115970 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +var R = typeof Reflect === 'object' ? Reflect : null +var ReflectApply = R && typeof R.apply === 'function' + ? R.apply + : function ReflectApply(target, receiver, args) { + return Function.prototype.apply.call(target, receiver, args); + } + +var ReflectOwnKeys +if (R && typeof R.ownKeys === 'function') { + ReflectOwnKeys = R.ownKeys +} else if (Object.getOwnPropertySymbols) { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target) + .concat(Object.getOwnPropertySymbols(target)); + }; +} else { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target); + }; +} + +function ProcessEmitWarning(warning) { + if (console && console.warn) console.warn(warning); +} + +var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { + return value !== value; +} + +function EventEmitter() { + EventEmitter.init.call(this); +} +// module.exports = EventEmitter; +// module.exports.once = once; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._eventsCount = 0; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +var defaultMaxListeners = 10; + +function checkListener(listener) { + if (typeof listener !== 'function') { + throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); + } +} + +Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function() { + return defaultMaxListeners; + }, + set: function(arg) { + if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { + throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); + } + defaultMaxListeners = arg; + } +}); + +EventEmitter.init = function() { + + if (this._events === undefined || + this._events === Object.getPrototypeOf(this)._events) { + this._events = Object.create(null); + this._eventsCount = 0; + } + + this._maxListeners = this._maxListeners || undefined; +}; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { + throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); + } + this._maxListeners = n; + return this; +}; + +function _getMaxListeners(that) { + if (that._maxListeners === undefined) + return EventEmitter.defaultMaxListeners; + return that._maxListeners; +} + +EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return _getMaxListeners(this); +}; + +EventEmitter.prototype.emit = function emit(type) { + var args = []; + for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); + var doError = (type === 'error'); + + var events = this._events; + if (events !== undefined) + doError = (doError && events.error === undefined); + else if (!doError) + return false; + + // If there is no 'error' event listener then throw. + if (doError) { + var er; + if (args.length > 0) + er = args[0]; + if (er instanceof Error) { + // Note: The comments on the `throw` lines are intentional, they show + // up in Node's output if this results in an unhandled exception. + throw er; // Unhandled 'error' event + } + // At least give some kind of context to the user + var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); + err.context = er; + throw err; // Unhandled 'error' event + } + + var handler = events[type]; + + if (handler === undefined) + return false; + + if (typeof handler === 'function') { + ReflectApply(handler, this, args); + } else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + ReflectApply(listeners[i], this, args); + } + + return true; +}; + +function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; + + checkListener(listener); + + events = target._events; + if (events === undefined) { + events = target._events = Object.create(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener !== undefined) { + target.emit('newListener', type, + listener.listener ? listener.listener : listener); + + // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } + + if (existing === undefined) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = + prepend ? [listener, existing] : [existing, listener]; + // If we've already got an array, just append. + } else if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + + // Check for listener leak + m = _getMaxListeners(target); + if (m > 0 && existing.length > m && !existing.warned) { + existing.warned = true; + // No error code for this since it is a Warning + // eslint-disable-next-line no-restricted-syntax + var w = new Error('Possible EventEmitter memory leak detected. ' + + existing.length + ' ' + String(type) + ' listeners ' + + 'added. Use emitter.setMaxListeners() to ' + + 'increase limit'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + ProcessEmitWarning(w); + } + } + + return target; +} + +EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.prependListener = + function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; + +function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + if (arguments.length === 0) + return this.listener.call(this.target); + return this.listener.apply(this.target, arguments); + } +} + +function _onceWrap(target, type, listener) { + var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; + var wrapped = onceWrapper.bind(state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; +} + +EventEmitter.prototype.once = function once(type, listener) { + checkListener(listener); + this.on(type, _onceWrap(this, type, listener)); + return this; +}; + +EventEmitter.prototype.prependOnceListener = + function prependOnceListener(type, listener) { + checkListener(listener); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; + +// Emits a 'removeListener' event if and only if the listener was removed. +EventEmitter.prototype.removeListener = + function removeListener(type, listener) { + var list, events, position, i, originalListener; + + checkListener(listener); + + events = this._events; + if (events === undefined) + return this; + + list = events[type]; + if (list === undefined) + return this; + + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else { + delete events[type]; + if (events.removeListener) + this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + + for (i = list.length - 1; i >= 0; i--) { + if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + } + + if (position < 0) + return this; + + if (position === 0) + list.shift(); + else { + spliceOne(list, position); + } + + if (list.length === 1) + events[type] = list[0]; + + if (events.removeListener !== undefined) + this.emit('removeListener', type, originalListener || listener); + } + + return this; + }; + +EventEmitter.prototype.off = EventEmitter.prototype.removeListener; + +EventEmitter.prototype.removeAllListeners = + function removeAllListeners(type) { + var listeners, events, i; + + events = this._events; + if (events === undefined) + return this; + + // not listening for removeListener, no need to emit + if (events.removeListener === undefined) { + if (arguments.length === 0) { + this._events = Object.create(null); + this._eventsCount = 0; + } else if (events[type] !== undefined) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else + delete events[type]; + } + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = Object.keys(events); + var key; + for (i = 0; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = Object.create(null); + this._eventsCount = 0; + return this; + } + + listeners = events[type]; + + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners !== undefined) { + // LIFO order + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } + } + + return this; + }; + +function _listeners(target, type, unwrap) { + var events = target._events; + + if (events === undefined) + return []; + + var evlistener = events[type]; + if (evlistener === undefined) + return []; + + if (typeof evlistener === 'function') + return unwrap ? [evlistener.listener || evlistener] : [evlistener]; + + return unwrap ? + unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); +} + +EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); +}; + +EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); +}; + +EventEmitter.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); + } +}; + +EventEmitter.prototype.listenerCount = listenerCount; +function listenerCount(type) { + var events = this._events; + + if (events !== undefined) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { + return 1; + } else if (evlistener !== undefined) { + return evlistener.length; + } + } + + return 0; +} + +EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; +}; + +function arrayClone(arr, n) { + var copy = new Array(n); + for (var i = 0; i < n; ++i) + copy[i] = arr[i]; + return copy; +} + +function spliceOne(list, index) { + for (; index + 1 < list.length; index++) + list[index] = list[index + 1]; + list.pop(); +} + +function unwrapListeners(arr) { + var ret = new Array(arr.length); + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + return ret; +} + +function once(emitter, name) { + return new Promise(function (resolve, reject) { + function errorListener(err) { + emitter.removeListener(name, resolver); + reject(err); + } + + function resolver() { + if (typeof emitter.removeListener === 'function') { + emitter.removeListener('error', errorListener); + } + resolve([].slice.call(arguments)); + }; + + eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); + if (name !== 'error') { + addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); + } + }); +} + +function addErrorHandlerIfEventEmitter(emitter, handler, flags) { + if (typeof emitter.on === 'function') { + eventTargetAgnosticAddListener(emitter, 'error', handler, flags); + } +} + +function eventTargetAgnosticAddListener(emitter, name, listener, flags) { + if (typeof emitter.on === 'function') { + if (flags.once) { + emitter.once(name, listener); + } else { + emitter.on(name, listener); + } + } else if (typeof emitter.addEventListener === 'function') { + // EventTarget does not have `error` event semantics like Node + // EventEmitters, we do not listen for `error` events here. + emitter.addEventListener(name, function wrapListener(arg) { + // IE does not have builtin `{ once: true }` support so we + // have to do it manually. + if (flags.once) { + emitter.removeEventListener(name, wrapListener); + } + listener(arg); + }); + } else { + throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); + } +} +/** + * @license + * Video.js 8.3.0 + * Copyright Brightcove, Inc. + * Available under Apache License Version 2.0 + * + * + * Includes vtt.js + * Available under Apache License Version 2.0 + * + */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).videojs=t()}(this,function(){"use strict";var R="8.3.0";const U={},B=function(e,t){return U[e]=U[e]||[],t&&(U[e]=U[e].concat(t)),U[e]};function F(e,t){return!((t=B(e).indexOf(t))<=-1||(U[e]=U[e].slice(),U[e].splice(t,1),0))}const j={prefixed:!0};var H=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror","fullscreen"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror","-webkit-full-screen"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror","-moz-full-screen"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError","-ms-fullscreen"]],q=H[0];let V;for(let e=0;e{var e,i=o.levels[i],r=new RegExp(`^(${i})$`);if("log"!==t&&s.unshift(t.toUpperCase()+":"),s.unshift(a+":"),l&&(l.push([].concat(s)),e=l.length-1e3,l.splice(0,0t(i+": "+e),n.levels={all:"debug|log|warn|error",off:"",debug:"debug|log|warn|error",info:"log|warn|error",warn:"warn|error",error:"error",DEFAULT:s},n.level=e=>{if("string"==typeof e){if(!n.levels.hasOwnProperty(e))throw new Error(`"${e}" in not a valid log level`);s=e}return s},n.history=()=>l?[].concat(l):[],n.history.filter=t=>(l||[]).filter(e=>new RegExp(`.*${t}.*`).test(e[0])),n.history.clear=()=>{l&&(l.length=0)},n.history.disable=()=>{null!==l&&(l.length=0,l=null)},n.history.enable=()=>{null===l&&(l=[])},n.error=(...e)=>r("error",s,e),n.warn=(...e)=>r("warn",s,e),n.debug=(...e)=>r("debug",s,e),n}("VIDEOJS"),W=d.createLogger,G=Object.prototype.toString;function z(t,i){$(t).forEach(e=>i(t[e],e))}function X(i,s,e=0){return $(i).reduce((e,t)=>s(e,i[t],t),e)}function K(e){return!!e&&"object"==typeof e}function Y(e){return K(e)&&"[object Object]"===G.call(e)&&e.constructor===Object}function h(...e){const i={};return e.forEach(e=>{e&&z(e,(e,t)=>{Y(e)?(Y(i[t])||(i[t]={}),i[t]=h(i[t],e)):i[t]=e})}),i}function Q(t,i,s,e=!0){const r=e=>Object.defineProperty(t,i,{value:e,enumerable:!0,writable:!0});var n={configurable:!0,enumerable:!0,get(){var e=s();return r(e),e}};return e&&(n.set=r),Object.defineProperty(t,i,n)}var J=Object.freeze({__proto__:null,each:z,reduce:X,isObject:K,isPlain:Y,merge:h,defineLazyProperty:Q});let Z=!1,ee=null,te=!1,ie,se=!1,re=!1,ne=!1,ae=!1,oe=null,le=null,de=null,he=!1,ue=!1,ce=!1,pe=!1;const me=Boolean(_e()&&("ontouchstart"in window||window.navigator.maxTouchPoints||window.DocumentTouch&&window.document instanceof window.DocumentTouch));var ge,e=window.navigator&&window.navigator.userAgentData;if(e&&(te="Android"===e.platform,re=Boolean(e.brands.find(e=>"Microsoft Edge"===e.brand)),ne=Boolean(e.brands.find(e=>"Chromium"===e.brand)),ae=!re&&ne,oe=le=(e.brands.find(e=>"Chromium"===e.brand)||{}).version||null,ue="Windows"===e.platform),!ne){const M=window.navigator&&window.navigator.userAgent||"";Z=/iPod/i.test(M),ee=(e=M.match(/OS (\d+)_/i))&&e[1]?e[1]:null,te=/Android/i.test(M),ie=(e=M.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i))?(mt=e[1]&&parseFloat(e[1]),ge=e[2]&&parseFloat(e[2]),mt&&ge?parseFloat(e[1]+"."+e[2]):mt||null):null,se=/Firefox/i.test(M),re=/Edg/i.test(M),ne=/Chrome/i.test(M)||/CriOS/i.test(M),ae=!re&&ne,oe=le=(ge=M.match(/(Chrome|CriOS)\/(\d+)/))&&ge[2]?parseFloat(ge[2]):null,de=function(){var e=/MSIE\s(\d+)\.\d/.exec(M);let t=e&&parseFloat(e[1]);return t=!t&&/Trident\/7.0/i.test(M)&&/rv:11.0/.test(M)?11:t}(),he=/Safari/i.test(M)&&!ae&&!te&&!re,ue=/Windows/i.test(M),ce=/iPad/i.test(M)||he&&me&&!/iPhone/i.test(M),pe=/iPhone/i.test(M)&&!ce}const u=pe||ce||Z,fe=(he||u)&&!ae;e=Object.freeze({__proto__:null,get IS_IPOD(){return Z},get IOS_VERSION(){return ee},get IS_ANDROID(){return te},get ANDROID_VERSION(){return ie},get IS_FIREFOX(){return se},get IS_EDGE(){return re},get IS_CHROMIUM(){return ne},get IS_CHROME(){return ae},get CHROMIUM_VERSION(){return oe},get CHROME_VERSION(){return le},get IE_VERSION(){return de},get IS_SAFARI(){return he},get IS_WINDOWS(){return ue},get IS_IPAD(){return ce},get IS_IPHONE(){return pe},TOUCH_ENABLED:me,IS_IOS:u,IS_ANY_SAFARI:fe});function ye(e){return"string"==typeof e&&Boolean(e.trim())}function _e(){return document===window.document}function ve(e){return K(e)&&1===e.nodeType}function be(){try{return window.parent!==window.self}catch(e){return!0}}function Te(i){return function(e,t){return ye(e)?(t=ve(t=ye(t)?document.querySelector(t):t)?t:document)[i]&&t[i](e):document[i](null)}}function o(e="div",i={},t={},s){const r=document.createElement(e);return Object.getOwnPropertyNames(i).forEach(function(e){var t=i[e];"textContent"===e?Se(r,t):r[e]===t&&"tabIndex"!==e||(r[e]=t)}),Object.getOwnPropertyNames(t).forEach(function(e){r.setAttribute(e,t[e])}),s&&He(r,s),r}function Se(e,t){return"undefined"==typeof e.textContent?e.innerText=t:e.textContent=t,e}function we(e,t){t.firstChild?t.insertBefore(e,t.firstChild):t.appendChild(e)}function Ee(e,t){if(0<=t.indexOf(" "))throw new Error("class has illegal whitespace characters");return e.classList.contains(t)}function ke(e,...t){return e.classList.add(...t.reduce((e,t)=>e.concat(t.split(/\s+/)),[])),e}function Ce(e,...t){return e?(e.classList.remove(...t.reduce((e,t)=>e.concat(t.split(/\s+/)),[])),e):(d.warn("removeClass was called with an element that doesn't exist"),null)}function Ie(t,e,i){return"boolean"!=typeof(i="function"==typeof i?i(t,e):i)&&(i=void 0),e.split(/\s+/).forEach(e=>t.classList.toggle(e,i)),t}function xe(i,s){Object.getOwnPropertyNames(s).forEach(function(e){var t=s[e];null===t||"undefined"==typeof t||!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)})}function Ae(i){var s={};if(i&&i.attributes&&0{void 0!==t[e]&&(i[e]=t[e])}),i.height||(i.height=parseFloat(Ge(e,"height"))),i.width||(i.width=parseFloat(Ge(e,"width"))),i}}function Re(e){if(!e||!e.offsetParent)return{left:0,top:0,width:0,height:0};var t=e.offsetWidth,i=e.offsetHeight;let s=0,r=0;for(;e.offsetParent&&e!==document[j.fullscreenElement];)s+=e.offsetLeft,r+=e.offsetTop,e=e.offsetParent;return{left:s,top:r,width:t,height:i}}function Ue(t,e){var i={x:0,y:0};if(u){let e=t;for(;e&&"html"!==e.nodeName.toLowerCase();){var s,r=Ge(e,"transform");/^matrix/.test(r)?(s=r.slice(7,-1).split(/,\s/).map(Number),i.x+=s[4],i.y+=s[5]):/^matrix3d/.test(r)&&(s=r.slice(9,-1).split(/,\s/).map(Number),i.x+=s[12],i.y+=s[13]),e=e.parentNode}}var n={},a=Re(e.target),t=Re(t),o=t.width,l=t.height;let d=e.offsetY-(t.top-a.top),h=e.offsetX-(t.left-a.left);return e.changedTouches&&(h=e.changedTouches[0].pageX-t.left,d=e.changedTouches[0].pageY+t.top,u)&&(h-=i.x,d-=i.y),n.y=1-Math.max(0,Math.min(1,d/l)),n.x=Math.max(0,Math.min(1,h/o)),n}function Be(e){return K(e)&&3===e.nodeType}function Fe(e){for(;e.firstChild;)e.removeChild(e.firstChild);return e}function je(e){return"function"==typeof e&&(e=e()),(Array.isArray(e)?e:[e]).map(e=>ve(e="function"==typeof e?e():e)||Be(e)?e:"string"==typeof e&&/\S/.test(e)?document.createTextNode(e):void 0).filter(e=>e)}function He(t,e){return je(e).forEach(e=>t.appendChild(e)),t}function qe(e,t){return He(Fe(e),t)}function Ve(e){return void 0===e.button&&void 0===e.buttons||0===e.button&&void 0===e.buttons||"mouseup"===e.type&&0===e.button&&0===e.buttons||0===e.button&&1===e.buttons}const $e=Te("querySelector"),We=Te("querySelectorAll");function Ge(t,i){if(!t||!i)return"";if("function"!=typeof window.getComputedStyle)return"";{let e;try{e=window.getComputedStyle(t)}catch(e){return""}return e?e.getPropertyValue(i)||e[i]:""}}var ze=Object.freeze({__proto__:null,isReal:_e,isEl:ve,isInFrame:be,createEl:o,textContent:Se,prependTo:we,hasClass:Ee,addClass:ke,removeClass:Ce,toggleClass:Ie,setAttributes:xe,getAttributes:Ae,getAttribute:Pe,setAttribute:Le,removeAttribute:Oe,blockTextSelection:De,unblockTextSelection:Ne,getBoundingClientRect:Me,findPosition:Re,getPointerPosition:Ue,isTextNode:Be,emptyEl:Fe,normalizeContent:je,appendContent:He,insertContent:qe,isSingleLeftClick:Ve,$:$e,$$:We,computedStyle:Ge});let Xe=!1,Ke;function Ye(){if(!1!==Ke.options.autoSetup){var e=Array.prototype.slice.call(document.getElementsByTagName("video")),t=Array.prototype.slice.call(document.getElementsByTagName("audio")),i=Array.prototype.slice.call(document.getElementsByTagName("video-js")),s=e.concat(t,i);if(s&&0=s&&(i(...e),r=t)}}function pt(s,r,n,a=window){let o;function e(){const e=this,t=arguments;let i=function(){o=null,i=null,n||s.apply(e,t)};!o&&n&&s.apply(e,t),a.clearTimeout(o),o=a.setTimeout(i,r)}return e.cancel=()=>{a.clearTimeout(o),o=null},e}var mt=Object.freeze({__proto__:null,UPDATE_REFRESH_INTERVAL:30,bind_:m,throttle:ct,debounce:pt});let gt;class ft{on(e,t){var i=this.addEventListener;this.addEventListener=()=>{},ot(this,e,t),this.addEventListener=i}off(e,t){p(this,e,t)}one(e,t){var i=this.addEventListener;this.addEventListener=()=>{},dt(this,e,t),this.addEventListener=i}any(e,t){var i=this.addEventListener;this.addEventListener=()=>{},ht(this,e,t),this.addEventListener=i}trigger(e){var t=e.type||e;e=rt(e="string"==typeof e?{type:t}:e),this.allowedEvents_[t]&&this["on"+t]&&this["on"+t](e),lt(this,e)}queueTrigger(e){gt=gt||new Map;const t=e.type||e;let i=gt.get(this);i||(i=new Map,gt.set(this,i));var s=i.get(t),s=(i.delete(t),window.clearTimeout(s),window.setTimeout(()=>{i.delete(t),0===i.size&&(i=null,gt.delete(this)),this.trigger(e)},0));i.set(t,s)}}ft.prototype.allowedEvents_={},ft.prototype.addEventListener=ft.prototype.on,ft.prototype.removeEventListener=ft.prototype.off,ft.prototype.dispatchEvent=ft.prototype.trigger;const yt=e=>"function"==typeof e.name?e.name():"string"==typeof e.name?e.name:e.name_||(e.constructor&&e.constructor.name?e.constructor.name:typeof e),_t=t=>t instanceof ft||!!t.eventBusEl_&&["on","one","off","trigger"].every(e=>"function"==typeof t[e]),vt=e=>"string"==typeof e&&/\S/.test(e)||Array.isArray(e)&&!!e.length,bt=(e,t,i)=>{if(!e||!e.nodeName&&!_t(e))throw new Error(`Invalid target for ${yt(t)}#${i}; must be a DOM node or evented object.`)},Tt=(e,t,i)=>{if(!vt(e))throw new Error(`Invalid event type for ${yt(t)}#${i}; must be a non-empty string or array.`)},St=(e,t,i)=>{if("function"!=typeof e)throw new Error(`Invalid listener for ${yt(t)}#${i}; must be a function.`)},wt=(e,t,i)=>{var s=t.length<3||t[0]===e||t[0]===e.eventBusEl_;let r,n,a;return s?(r=e.eventBusEl_,3<=t.length&&t.shift(),[n,a]=t):[r,n,a]=t,bt(r,e,i),Tt(n,e,i),St(a,e,i),a=m(e,a),{isTargetingSelf:s,target:r,type:n,listener:a}},Et=(e,t,i,s)=>{bt(e,e,t),e.nodeName?ut[t](e,i,s):e[t](i,s)},kt={on(...e){const{isTargetingSelf:t,target:i,type:s,listener:r}=wt(this,e,"on");if(Et(i,"on",s,r),!t){const n=()=>this.off(i,s,r);n.guid=r.guid;e=()=>this.off("dispose",n);e.guid=r.guid,Et(this,"on","dispose",n),Et(i,"on","dispose",e)}},one(...e){const{isTargetingSelf:t,target:i,type:s,listener:r}=wt(this,e,"one");if(t)Et(i,"one",s,r);else{const n=(...e)=>{this.off(i,s,n),r.apply(null,e)};n.guid=r.guid,Et(i,"one",s,n)}},any(...e){const{isTargetingSelf:t,target:i,type:s,listener:r}=wt(this,e,"any");if(t)Et(i,"any",s,r);else{const n=(...e)=>{this.off(i,s,n),r.apply(null,e)};n.guid=r.guid,Et(i,"any",s,n)}},off(e,t,i){!e||vt(e)?p(this.eventBusEl_,e,t):(e=e,t=t,bt(e,this,"off"),Tt(t,this,"off"),St(i,this,"off"),i=m(this,i),this.off("dispose",i),e.nodeName?(p(e,t,i),p(e,"dispose",i)):_t(e)&&(e.off(t,i),e.off("dispose",i)))},trigger(e,t){bt(this.eventBusEl_,this,"trigger");var i=e&&"string"!=typeof e?e.type:e;if(vt(i))return lt(this.eventBusEl_,e,t);throw new Error(`Invalid event type for ${yt(this)}#trigger; `+"must be a non-empty string or object with a type key that has a non-empty value.")}};function Ct(e,t={}){t=t.eventBusKey;if(t){if(!e[t].nodeName)throw new Error(`The eventBusKey "${t}" does not refer to an element.`);e.eventBusEl_=e[t]}else e.eventBusEl_=o("span",{className:"vjs-event-bus"});Object.assign(e,kt),e.eventedCallbacks&&e.eventedCallbacks.forEach(e=>{e()}),e.on("dispose",()=>{e.off(),[e,e.el_,e.eventBusEl_].forEach(function(e){e&&c.has(e)&&c.delete(e)}),window.setTimeout(()=>{e.eventBusEl_=null},0)})}const It={state:{},setState(e){"function"==typeof e&&(e=e());let i;return z(e,(e,t)=>{this.state[t]!==e&&((i=i||{})[t]={from:this.state[t],to:e}),this.state[t]=e}),i&&_t(this)&&this.trigger({changes:i,type:"statechanged"}),i}};function xt(e,t){Object.assign(e,It),e.state=Object.assign({},e.state,t),"function"==typeof e.handleStateChanged&&_t(e)&&e.on("statechanged",e.handleStateChanged)}function At(e){return"string"!=typeof e?e:e.replace(/./,e=>e.toLowerCase())}function g(e){return"string"!=typeof e?e:e.replace(/./,e=>e.toUpperCase())}function Pt(e,t){return g(e)===g(t)}var Lt=Object.freeze({__proto__:null,toLowerCase:At,toTitleCase:g,titleCaseEquals:Pt}),Ot="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Dt(e,t){return e(t={exports:{}},t.exports),t.exports}var r=Dt(function(e,t){function i(e){var t;return"number"==typeof(e=e&&"object"==typeof e&&(t=e.which||e.keyCode||e.charCode)?t:e)?o[e]:(t=String(e),s[t.toLowerCase()]||r[t.toLowerCase()]||(1===t.length?t.charCodeAt(0):void 0))}i.isEventKey=function(e,t){if(e&&"object"==typeof e){e=e.which||e.keyCode||e.charCode;if(null!=e)if("string"==typeof t){var i=s[t.toLowerCase()];if(i)return i===e;if(i=r[t.toLowerCase()])return i===e}else if("number"==typeof t)return t===e;return!1}};for(var s=(t=e.exports=i).code=t.codes={backspace:8,tab:9,enter:13,shift:16,ctrl:17,alt:18,"pause/break":19,"caps lock":20,esc:27,space:32,"page up":33,"page down":34,end:35,home:36,left:37,up:38,right:39,down:40,insert:45,delete:46,command:91,"left command":91,"right command":93,"numpad *":106,"numpad +":107,"numpad -":109,"numpad .":110,"numpad /":111,"num lock":144,"scroll lock":145,"my computer":182,"my calculator":183,";":186,"=":187,",":188,"-":189,".":190,"/":191,"`":192,"[":219,"\\":220,"]":221,"'":222},r=t.aliases={windows:91,"⇧":16,"⌥":18,"⌃":17,"⌘":91,ctl:17,control:17,option:18,pause:19,break:19,caps:20,return:13,escape:27,spc:32,spacebar:32,pgup:33,pgdn:34,ins:45,del:46,cmd:91},n=97;n<123;n++)s[String.fromCharCode(n)]=n-32;for(var n=48;n<58;n++)s[n-48]=n;for(n=1;n<13;n++)s["f"+n]=n+111;for(n=0;n<10;n++)s["numpad "+n]=n+96;var a,o=t.names=t.title={};for(n in s)o[s[n]]=n;for(a in r)s[a]=r[a]});r.code,r.codes,r.aliases,r.names,r.title;class f{constructor(e,t,i){!e&&this.play?this.player_=e=this:this.player_=e,this.isDisposed_=!1,this.parentComponent_=null,this.options_=h({},this.options_),t=this.options_=h(this.options_,t),this.id_=t.id||t.el&&t.el.id,this.id_||(e=e&&e.id&&e.id()||"no_player",this.id_=e+"_component_"+tt++),this.name_=t.name||null,t.el?this.el_=t.el:!1!==t.createEl&&(this.el_=this.createEl()),t.className&&this.el_&&t.className.split(" ").forEach(e=>this.addClass(e)),["on","off","one","any","trigger"].forEach(e=>{this[e]=void 0}),!1!==t.evented&&(Ct(this,{eventBusKey:this.el_?"el_":null}),this.handleLanguagechange=this.handleLanguagechange.bind(this),this.on(this.player_,"languagechange",this.handleLanguagechange)),xt(this,this.constructor.defaultState),this.children_=[],this.childIndex_={},this.childNameIndex_={},this.setTimeoutIds_=new Set,this.setIntervalIds_=new Set,this.rafIds_=new Set,this.namedRafs_=new Map,(this.clearingTimersOnDispose_=!1)!==t.initChildren&&this.initChildren(),this.ready(i),!1!==t.reportTouchActivity&&this.enableTouchActivity()}on(e,t){}off(e,t){}one(e,t){}any(e,t){}trigger(e){}dispose(e={}){if(!this.isDisposed_){if(this.readyQueue_&&(this.readyQueue_.length=0),this.trigger({type:"dispose",bubbles:!1}),this.isDisposed_=!0,this.children_)for(let e=this.children_.length-1;0<=e;e--)this.children_[e].dispose&&this.children_[e].dispose();this.children_=null,this.childIndex_=null,this.childNameIndex_=null,this.parentComponent_=null,this.el_&&(this.el_.parentNode&&(e.restoreEl?this.el_.parentNode.replaceChild(e.restoreEl,this.el_):this.el_.parentNode.removeChild(this.el_)),this.el_=null),this.player_=null}}isDisposed(){return Boolean(this.isDisposed_)}player(){return this.player_}options(e){return e&&(this.options_=h(this.options_,e)),this.options_}el(){return this.el_}createEl(e,t,i){return o(e,t,i)}localize(e,s,t=e){var i=this.player_.language&&this.player_.language(),r=this.player_.languages&&this.player_.languages(),n=r&&r[i],i=i&&i.split("-")[0],r=r&&r[i];let a=t;return n&&n[e]?a=n[e]:r&&r[e]&&(a=r[e]),a=s?a.replace(/\{(\d+)\}/g,function(e,t){t=s[t-1];let i="undefined"==typeof t?e:t;return i}):a}handleLanguagechange(){}contentEl(){return this.contentEl_||this.el_}id(){return this.id_}name(){return this.name_}children(){return this.children_}getChildById(e){return this.childIndex_[e]}getChild(e){if(e)return this.childNameIndex_[e]}getDescendant(...t){t=t.reduce((e,t)=>e.concat(t),[]);let i=this;for(let e=0;e{let t,i;return i="string"==typeof e?(t=e,s[t]||this.options_[t]||{}):(t=e.name,e),{name:t,opts:i}}).filter(e=>{e=f.getComponent(e.opts.componentClass||g(e.name));return e&&!t.isTech(e)}).forEach(e=>{var t=e.name;let i=e.opts;!1!==(i=void 0!==r[t]?r[t]:i)&&((i=!0===i?{}:i).playerOptions=this.options_.playerOptions,e=this.addChild(t,i))&&(this[t]=e)})}}buildCSSClass(){return""}ready(e,t=!1){e&&(this.isReady_?t?e.call(this):this.setTimeout(e,1):(this.readyQueue_=this.readyQueue_||[],this.readyQueue_.push(e)))}triggerReady(){this.isReady_=!0,this.setTimeout(function(){var e=this.readyQueue_;this.readyQueue_=[],e&&0{this.setTimeoutIds_.has(i)&&this.setTimeoutIds_.delete(i),e()},t),this.setTimeoutIds_.add(i),i}clearTimeout(e){return this.setTimeoutIds_.has(e)&&(this.setTimeoutIds_.delete(e),window.clearTimeout(e)),e}setInterval(e,t){e=m(this,e),this.clearTimersOnDispose_();e=window.setInterval(e,t);return this.setIntervalIds_.add(e),e}clearInterval(e){return this.setIntervalIds_.has(e)&&(this.setIntervalIds_.delete(e),window.clearInterval(e)),e}requestAnimationFrame(e){var t;return this.clearTimersOnDispose_(),e=m(this,e),t=window.requestAnimationFrame(()=>{this.rafIds_.has(t)&&this.rafIds_.delete(t),e()}),this.rafIds_.add(t),t}requestNamedAnimationFrame(e,t){var i;if(!this.namedRafs_.has(e))return this.clearTimersOnDispose_(),t=m(this,t),i=this.requestAnimationFrame(()=>{t(),this.namedRafs_.has(e)&&this.namedRafs_.delete(e)}),this.namedRafs_.set(e,i),e}cancelNamedAnimationFrame(e){this.namedRafs_.has(e)&&(this.cancelAnimationFrame(this.namedRafs_.get(e)),this.namedRafs_.delete(e))}cancelAnimationFrame(e){return this.rafIds_.has(e)&&(this.rafIds_.delete(e),window.cancelAnimationFrame(e)),e}clearTimersOnDispose_(){this.clearingTimersOnDispose_||(this.clearingTimersOnDispose_=!0,this.one("dispose",()=>{[["namedRafs_","cancelNamedAnimationFrame"],["rafIds_","cancelAnimationFrame"],["setTimeoutIds_","clearTimeout"],["setIntervalIds_","clearInterval"]].forEach(([e,i])=>{this[e].forEach((e,t)=>this[i](t))}),this.clearingTimersOnDispose_=!1}))}static registerComponent(t,e){if("string"!=typeof t||!t)throw new Error(`Illegal component name, "${t}"; must be a non-empty string.`);var i=f.getComponent("Tech"),i=i&&i.isTech(e),s=f===e||f.prototype.isPrototypeOf(e.prototype);if(i||!s){let e;throw e=i?"techs must be registered using Tech.registerTech()":"must be a Component subclass",new Error(`Illegal component, "${t}"; ${e}.`)}t=g(t),f.components_||(f.components_={});s=f.getComponent("Player");if("Player"===t&&s&&s.players){const r=s.players;i=Object.keys(r);if(r&&0r[e]).every(Boolean))throw new Error("Can not register Player component after player has been created.")}return f.components_[t]=e,f.components_[At(t)]=e}static getComponent(e){if(e&&f.components_)return f.components_[e]}}function Nt(e,t,i,s){var r=s,n=i.length-1;if("number"!=typeof r||r<0||n(e||[]).values()),t}function Rt(e,t){return Array.isArray(e)?Mt(e):void 0===e||void 0===t?Mt():Mt([[e,t]])}f.registerComponent("Component",f);function Ut(e,t){e=e<0?0:e;let i=Math.floor(e%60),s=Math.floor(e/60%60),r=Math.floor(e/3600);var n=Math.floor(t/60%60),t=Math.floor(t/3600);return r=0<(r=!isNaN(e)&&e!==1/0?r:s=i="-")||0i&&(n=i),s+=n-r;return s/i}function i(e){if(e instanceof i)return e;"number"==typeof e?this.code=e:"string"==typeof e?this.message=e:K(e)&&("number"==typeof e.code&&(this.code=e.code),Object.assign(this,e)),this.message||(this.message=i.defaultMessages[this.code]||"")}i.prototype.code=0,i.prototype.message="",i.prototype.status=null,i.errorTypes=["MEDIA_ERR_CUSTOM","MEDIA_ERR_ABORTED","MEDIA_ERR_NETWORK","MEDIA_ERR_DECODE","MEDIA_ERR_SRC_NOT_SUPPORTED","MEDIA_ERR_ENCRYPTED"],i.defaultMessages={1:"You aborted the media playback",2:"A network error caused the media download to fail part-way.",3:"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.",4:"The media could not be loaded, either because the server or network failed or because the format is not supported.",5:"The media is encrypted and we do not have the keys to decrypt it."};for(let e=0;e{})}function zt(s){return["kind","label","language","id","inBandMetadataTrackDispatchType","mode","src"].reduce((e,t,i)=>(s[t]&&(e[t]=s[t]),e),{cues:s.cues&&Array.prototype.map.call(s.cues,function(e){return{startTime:e.startTime,endTime:e.endTime,text:e.text,id:e.id}})})}var Xt=function(e){var t=e.$$("track");const i=Array.prototype.map.call(t,e=>e.track);return Array.prototype.map.call(t,function(e){var t=zt(e.track);return e.src&&(t.src=e.src),t}).concat(Array.prototype.filter.call(e.textTracks(),function(e){return-1===i.indexOf(e)}).map(zt))},Kt=function(e,i){return e.forEach(function(e){const t=i.addRemoteTextTrack(e).track;!e.src&&e.cues&&e.cues.forEach(e=>t.addCue(e))}),i.textTracks()};zt;const Yt="vjs-modal-dialog";class Qt extends f{constructor(e,t){super(e,t),this.handleKeyDown_=e=>this.handleKeyDown(e),this.close_=e=>this.close(e),this.opened_=this.hasBeenOpened_=this.hasBeenFilled_=!1,this.closeable(!this.options_.uncloseable),this.content(this.options_.content),this.contentEl_=o("div",{className:Yt+"-content"},{role:"document"}),this.descEl_=o("p",{className:Yt+"-description vjs-control-text",id:this.el().getAttribute("aria-describedby")}),Se(this.descEl_,this.description()),this.el_.appendChild(this.descEl_),this.el_.appendChild(this.contentEl_)}createEl(){return super.createEl("div",{className:this.buildCSSClass(),tabIndex:-1},{"aria-describedby":this.id()+"_description","aria-hidden":"true","aria-label":this.label(),role:"dialog"})}dispose(){this.contentEl_=null,this.descEl_=null,this.previouslyActiveEl_=null,super.dispose()}buildCSSClass(){return Yt+" vjs-hidden "+super.buildCSSClass()}label(){return this.localize(this.options_.label||"Modal Window")}description(){let e=this.options_.description||this.localize("This is a modal window.");return this.closeable()&&(e+=" "+this.localize("This modal can be closed by pressing the Escape key or activating the close button.")),e}open(){var e;this.opened_||(e=this.player(),this.trigger("beforemodalopen"),this.opened_=!0,!this.options_.fillAlways&&(this.hasBeenOpened_||this.hasBeenFilled_)||this.fill(),this.wasPlaying_=!e.paused(),this.options_.pauseOnOpen&&this.wasPlaying_&&e.pause(),this.on("keydown",this.handleKeyDown_),this.hadControls_=e.controls(),e.controls(!1),this.show(),this.conditionalFocus_(),this.el().setAttribute("aria-hidden","false"),this.trigger("modalopen"),this.hasBeenOpened_=!0)}opened(e){return"boolean"==typeof e&&this[e?"open":"close"](),this.opened_}close(){var e;this.opened_&&(e=this.player(),this.trigger("beforemodalclose"),this.opened_=!1,this.wasPlaying_&&this.options_.pauseOnOpen&&e.play(),this.off("keydown",this.handleKeyDown_),this.hadControls_&&e.controls(!0),this.hide(),this.el().setAttribute("aria-hidden","true"),this.trigger("modalclose"),this.conditionalBlur_(),this.options_.temporary)&&this.dispose()}closeable(t){if("boolean"==typeof t){var i,t=this.closeable_=!!t;let e=this.getChild("closeButton");t&&!e&&(i=this.contentEl_,this.contentEl_=this.el_,e=this.addChild("closeButton",{controlText:"Close Modal Dialog"}),this.contentEl_=i,this.on(e,"close",this.close_)),!t&&e&&(this.off(e,"close",this.close_),this.removeChild(e),e.dispose())}return this.closeable_}fill(){this.fillWith(this.content())}fillWith(e){var t=this.contentEl(),i=t.parentNode,s=t.nextSibling,e=(this.trigger("beforemodalfill"),this.hasBeenFilled_=!0,i.removeChild(t),this.empty(),qe(t,e),this.trigger("modalfill"),s?i.insertBefore(t,s):i.appendChild(t),this.getChild("closeButton"));e&&i.appendChild(e.el_)}empty(){this.trigger("beforemodalempty"),Fe(this.contentEl()),this.trigger("modalempty")}content(e){return"undefined"!=typeof e&&(this.content_=e),this.content_}conditionalFocus_(){var e=document.activeElement,t=this.player_.el_;this.previouslyActiveEl_=null,!t.contains(e)&&t!==e||(this.previouslyActiveEl_=e,this.focus())}conditionalBlur_(){this.previouslyActiveEl_&&(this.previouslyActiveEl_.focus(),this.previouslyActiveEl_=null)}handleKeyDown(e){if(e.stopPropagation(),r.isEventKey(e,"Escape")&&this.closeable())e.preventDefault(),this.close();else if(r.isEventKey(e,"Tab")){var i=this.focusableEls_(),s=this.el_.querySelector(":focus");let t;for(let e=0;e(e instanceof window.HTMLAnchorElement||e instanceof window.HTMLAreaElement)&&e.hasAttribute("href")||(e instanceof window.HTMLInputElement||e instanceof window.HTMLSelectElement||e instanceof window.HTMLTextAreaElement||e instanceof window.HTMLButtonElement)&&!e.hasAttribute("disabled")||e instanceof window.HTMLIFrameElement||e instanceof window.HTMLObjectElement||e instanceof window.HTMLEmbedElement||e.hasAttribute("tabindex")&&-1!==e.getAttribute("tabindex")||e.hasAttribute("contenteditable"))}}Qt.prototype.options_={pauseOnOpen:!0,temporary:!0},f.registerComponent("ModalDialog",Qt);class Jt extends ft{constructor(t=[]){super(),this.tracks_=[],Object.defineProperty(this,"length",{get(){return this.tracks_.length}});for(let e=0;e{this.trigger({track:e,type:"labelchange",target:this})},_t(e)&&e.addEventListener("labelchange",e.labelchange_)}removeTrack(i){let s;for(let e=0,t=this.length;ethis.queueTrigger("change")),this.triggerSelectedlanguagechange||(this.triggerSelectedlanguagechange_=()=>this.trigger("selectedlanguagechange")),e.addEventListener("modechange",this.queueChange_);-1===["metadata","chapters"].indexOf(e.kind)&&e.addEventListener("modechange",this.triggerSelectedlanguagechange_)}removeTrack(e){super.removeTrack(e),e.removeEventListener&&(this.queueChange_&&e.removeEventListener("modechange",this.queueChange_),this.selectedlanguagechange_)&&e.removeEventListener("modechange",this.triggerSelectedlanguagechange_)}}class ii{constructor(e){ii.prototype.setCues_.call(this,e),Object.defineProperty(this,"length",{get(){return this.length_}})}setCues_(e){var t=this.length||0;let i=0;function s(e){""+e in this||Object.defineProperty(this,""+e,{get(){return this.cues_[e]}})}var r=e.length;this.cues_=e,this.length_=e.length;if(td.error(e)),window.console)&&window.console.groupEnd&&window.console.groupEnd(),i.flush()}function xi(e,s){var t={uri:e};(e=hi(e))&&(t.cors=e),(e="use-credentials"===s.tech_.crossOrigin())&&(t.withCredentials=e),bi(t,m(this,function(e,t,i){if(e)return d.error(e,t);s.loaded_=!0,"function"!=typeof window.WebVTT?s.tech_&&s.tech_.any(["vttjsloaded","vttjserror"],e=>{if("vttjserror"!==e.type)return Ii(i,s);d.error("vttjs failed to load, stopping trying to process "+s.src)}):Ii(i,s)}))}class Ai extends oi{constructor(e={}){if(!e.tech)throw new Error("A tech was not provided.");e=h(e,{kind:ni[e.kind]||"subtitles",language:e.language||e.srclang||""});let t=ai[e.mode]||"disabled";const i=e.default,s=("metadata"!==e.kind&&"chapters"!==e.kind||(t="hidden"),super(e),this.tech_=e.tech,this.cues_=[],this.activeCues_=[],this.preload_=!1!==this.tech_.preloadTextTracks,new ii(this.cues_)),n=new ii(this.activeCues_);let a=!1;this.timeupdateHandler=m(this,function(e={}){this.tech_.isDisposed()||(this.tech_.isReady_&&(this.activeCues=this.activeCues,a)&&(this.trigger("cuechange"),a=!1),"timeupdate"!==e.type&&(this.rvf_=this.tech_.requestVideoFrameCallback(this.timeupdateHandler)))});this.tech_.one("dispose",()=>{this.stopTracking()}),"disabled"!==t&&this.startTracking(),Object.defineProperties(this,{default:{get(){return i},set(){}},mode:{get(){return t},set(e){ai[e]&&t!==e&&(t=e,this.preload_||"disabled"===t||0!==this.cues.length||xi(this.src,this),this.stopTracking(),"disabled"!==t&&this.startTracking(),this.trigger("modechange"))}},cues:{get(){return this.loaded_?s:null},set(){}},activeCues:{get(){if(!this.loaded_)return null;if(0!==this.cues.length){var i=this.tech_.currentTime(),s=[];for(let e=0,t=this.cues.length;e=i&&s.push(r)}if(a=!1,s.length!==this.activeCues_.length)a=!0;else for(let e=0;e{t=Oi.LOADED,this.trigger({type:"load",target:this})})}}Oi.prototype.allowedEvents_={load:"load"},Oi.NONE=0,Oi.LOADING=1,Oi.LOADED=2,Oi.ERROR=3;const Di={audio:{ListClass:class extends Jt{constructor(t=[]){for(let e=t.length-1;0<=e;e--)if(t[e].enabled){Zt(t,t[e]);break}super(t),this.changing_=!1}addTrack(e){e.enabled&&Zt(this,e),super.addTrack(e),e.addEventListener&&(e.enabledChange_=()=>{this.changing_||(this.changing_=!0,Zt(this,e),this.changing_=!1,this.trigger("change"))},e.addEventListener("enabledchange",e.enabledChange_))}removeTrack(e){super.removeTrack(e),e.removeEventListener&&e.enabledChange_&&(e.removeEventListener("enabledchange",e.enabledChange_),e.enabledChange_=null)}},TrackClass:Pi,capitalName:"Audio"},video:{ListClass:class extends Jt{constructor(t=[]){for(let e=t.length-1;0<=e;e--)if(t[e].selected){ei(t,t[e]);break}super(t),this.changing_=!1,Object.defineProperty(this,"selectedIndex",{get(){for(let e=0;e{this.changing_||(this.changing_=!0,ei(this,e),this.changing_=!1,this.trigger("change"))},e.addEventListener("selectedchange",e.selectedChange_))}removeTrack(e){super.removeTrack(e),e.removeEventListener&&e.selectedChange_&&(e.removeEventListener("selectedchange",e.selectedChange_),e.selectedChange_=null)}},TrackClass:Li,capitalName:"Video"},text:{ListClass:ti,TrackClass:Ai,capitalName:"Text"}},Ni=(Object.keys(Di).forEach(function(e){Di[e].getterName=e+"Tracks",Di[e].privateName=e+"Tracks_"}),{remoteText:{ListClass:ti,TrackClass:Ai,capitalName:"RemoteText",getterName:"remoteTextTracks",privateName:"remoteTextTracks_"},remoteTextEl:{ListClass:class{constructor(i=[]){this.trackElements_=[],Object.defineProperty(this,"length",{get(){return this.trackElements_.length}});for(let e=0,t=i.length;e]*>?)?/))[1]||o[2],t=t.substr(o.length),o):null);)"<"===o[0]?"/"===o[1]?h.length&&h[h.length-1]===o.substr(2).replace(">","")&&(h.pop(),d=d.parentNode):(s=Fi(o.substr(1,o.length-2)))?(i=e.document.createProcessingInstruction("timestamp",s),d.appendChild(i)):(s=o.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/))&&(r=s[1],n=s[3],a=void 0,a=Vi[r],i=a?(a=e.document.createElement(a),(r=Wi[r])&&n&&(a[r]=n.trim()),a):null)&&(r=d,Gi[(n=i).localName]&&Gi[n.localName]!==r.localName||(s[2]&&((a=s[2].split(".")).forEach(function(e){var t=/^bg_/.test(e),e=t?e.slice(3):e;$i.hasOwnProperty(e)&&(e=$i[e],i.style[t?"background-color":"color"]=e)}),i.className=a.join(" ")),h.push(s[1]),d.appendChild(i),d=i)):d.appendChild(e.document.createTextNode((n=o,qi.innerHTML=n,n=qi.textContent,qi.textContent="",n)));return l}var Xi=[[1470,1470],[1472,1472],[1475,1475],[1478,1478],[1488,1514],[1520,1524],[1544,1544],[1547,1547],[1549,1549],[1563,1563],[1566,1610],[1645,1647],[1649,1749],[1765,1766],[1774,1775],[1786,1805],[1807,1808],[1810,1839],[1869,1957],[1969,1969],[1984,2026],[2036,2037],[2042,2042],[2048,2069],[2074,2074],[2084,2084],[2088,2088],[2096,2110],[2112,2136],[2142,2142],[2208,2208],[2210,2220],[8207,8207],[64285,64285],[64287,64296],[64298,64310],[64312,64316],[64318,64318],[64320,64321],[64323,64324],[64326,64449],[64467,64829],[64848,64911],[64914,64967],[65008,65020],[65136,65140],[65142,65276],[67584,67589],[67592,67592],[67594,67637],[67639,67640],[67644,67644],[67647,67669],[67671,67679],[67840,67867],[67872,67897],[67903,67903],[67968,68023],[68030,68031],[68096,68096],[68112,68115],[68117,68119],[68121,68147],[68160,68167],[68176,68184],[68192,68223],[68352,68405],[68416,68437],[68440,68466],[68472,68479],[68608,68680],[126464,126467],[126469,126495],[126497,126498],[126500,126500],[126503,126503],[126505,126514],[126516,126519],[126521,126521],[126523,126523],[126530,126530],[126535,126535],[126537,126537],[126539,126539],[126541,126543],[126545,126546],[126548,126548],[126551,126551],[126553,126553],[126555,126555],[126557,126557],[126559,126559],[126561,126562],[126564,126564],[126567,126570],[126572,126578],[126580,126583],[126585,126588],[126590,126590],[126592,126601],[126603,126619],[126625,126627],[126629,126633],[126635,126651],[1114109,1114109]];function Ki(e){var t=[],i="";if(e&&e.childNodes)for(n(t,e);i=function e(t){var i,s,r;return t&&t.length?(s=(i=t.pop()).textContent||i.innerText)?(r=s.match(/^.*(\n|\r)/))?r[t.length=0]:s:"ruby"===i.tagName?e(t):i.childNodes?(n(t,i),e(t)):void 0:null}(t);)for(var s=0;s=i[0]&&e<=i[1])return 1}}(i.charCodeAt(s)))return"rtl";return"ltr";function n(e,t){for(var i=t.childNodes.length-1;0<=i;i--)e.push(t.childNodes[i])}}function Yi(){}function Qi(e,t,i){Yi.call(this),this.cue=t,this.cueDiv=zi(e,t.text);var s={color:"rgba(255, 255, 255, 1)",backgroundColor:"rgba(0, 0, 0, 0.8)",position:"relative",left:0,right:0,top:0,bottom:0,display:"inline",writingMode:""===t.vertical?"horizontal-tb":"lr"===t.vertical?"vertical-lr":"vertical-rl",unicodeBidi:"plaintext"},r=(this.applyStyles(s,this.cueDiv),this.div=e.document.createElement("div"),s={direction:Ki(this.cueDiv),writingMode:""===t.vertical?"horizontal-tb":"lr"===t.vertical?"vertical-lr":"vertical-rl",unicodeBidi:"plaintext",textAlign:"middle"===t.align?"center":t.align,font:i.font,whiteSpace:"pre-line",position:"absolute"},this.applyStyles(s),this.div.appendChild(this.cueDiv),0);switch(t.positionAlign){case"start":r=t.position;break;case"center":r=t.position-t.size/2;break;case"end":r=t.position-t.size}""===t.vertical?this.applyStyles({left:this.formatStyle(r,"%"),width:this.formatStyle(t.size,"%")}):this.applyStyles({top:this.formatStyle(r,"%"),height:this.formatStyle(t.size,"%")}),this.move=function(e){this.applyStyles({top:this.formatStyle(e.top,"px"),bottom:this.formatStyle(e.bottom,"px"),left:this.formatStyle(e.left,"px"),right:this.formatStyle(e.right,"px"),height:this.formatStyle(e.height,"px"),width:this.formatStyle(e.width,"px")})}}function y(e){var t,i,s,r;e.div&&(t=e.div.offsetHeight,i=e.div.offsetWidth,s=e.div.offsetTop,r=(r=(r=e.div.childNodes)&&r[0])&&r.getClientRects&&r.getClientRects(),e=e.div.getBoundingClientRect(),r=r?Math.max(r[0]&&r[0].height||0,e.height/r.length):0),this.left=e.left,this.right=e.right,this.top=e.top||s,this.height=e.height||t,this.bottom=e.bottom||s+(e.height||t),this.width=e.width||i,this.lineHeight=void 0!==r?r:e.lineHeight}function Ji(e,t,o,l){var i,s=new y(t),r=t.cue,n=function(e){if("number"==typeof e.line&&(e.snapToLines||0<=e.line&&e.line<=100))return e.line;if(!e.track||!e.track.textTrackList||!e.track.textTrackList.mediaElement)return-1;for(var t=e.track,i=t.textTrackList,s=0,r=0;ru&&(h=h<0?-1:1,h*=Math.ceil(u/d)*d),n<0&&(h+=""===r.vertical?o.height:o.width,a=a.reverse()),s.move(c,h)}else{var p=s.lineHeight/o.height*100;switch(r.lineAlign){case"center":n-=p/2;break;case"end":n-=p}switch(r.vertical){case"":t.applyStyles({top:t.formatStyle(n,"%")});break;case"rl":t.applyStyles({left:t.formatStyle(n,"%")});break;case"lr":t.applyStyles({right:t.formatStyle(n,"%")})}a=["+y","-x","+x","-y"],s=new y(t)}u=function(e,t){for(var i,s=new y(e),r=1,n=0;ne.left&&this.tope.top},y.prototype.overlapsAny=function(e){for(var t=0;t=e.top&&this.bottom<=e.bottom&&this.left>=e.left&&this.right<=e.right},y.prototype.overlapsOppositeAxis=function(e,t){switch(t){case"+x":return this.lefte.right;case"+y":return this.tope.bottom}},y.prototype.intersectPercentage=function(e){return Math.max(0,Math.min(this.right,e.right)-Math.max(this.left,e.left))*Math.max(0,Math.min(this.bottom,e.bottom)-Math.max(this.top,e.top))/(this.height*this.width)},y.prototype.toCSSCompatValues=function(e){return{top:this.top-e.top,bottom:e.bottom-this.bottom,left:this.left-e.left,right:e.right-this.right,height:this.height,width:this.width}},y.getSimpleBoxPosition=function(e){var t=e.div?e.div.offsetHeight:e.tagName?e.offsetHeight:0,i=e.div?e.div.offsetWidth:e.tagName?e.offsetWidth:0,s=e.div?e.div.offsetTop:e.tagName?e.offsetTop:0;return{left:(e=e.div?e.div.getBoundingClientRect():e.tagName?e.getBoundingClientRect():e).left,right:e.right,top:e.top||s,height:e.height||t,bottom:e.bottom||s+(e.height||t),width:e.width||i}},Zi.StringDecoder=function(){return{decode:function(e){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}},Zi.convertCueToDOMTree=function(e,t){return e&&t?zi(e,t):null};Zi.processCues=function(e,t,i){if(!e||!t||!i)return null;for(;i.firstChild;)i.removeChild(i.firstChild);var s=e.document.createElement("div");if(s.style.position="absolute",s.style.left="0",s.style.right="0",s.style.top="0",s.style.bottom="0",s.style.margin="1.5%",i.appendChild(s),function(e){for(var t=0;tthis.onDurationChange(e),this.trackProgress_=e=>this.trackProgress(e),this.trackCurrentTime_=e=>this.trackCurrentTime(e),this.stopTrackingCurrentTime_=e=>this.stopTrackingCurrentTime(e),this.disposeSourceHandler_=e=>this.disposeSourceHandler(e),this.queuedHanders_=new Set,this.hasStarted_=!1,this.on("playing",function(){this.hasStarted_=!0}),this.on("loadstart",function(){this.hasStarted_=!1}),a.names.forEach(e=>{e=a[e];t&&t[e.getterName]&&(this[e.privateName]=t[e.getterName])}),this.featuresProgressEvents||this.manualProgressOn(),this.featuresTimeupdateEvents||this.manualTimeUpdatesOn(),["Text","Audio","Video"].forEach(e=>{!1===t[`native${e}Tracks`]&&(this[`featuresNative${e}Tracks`]=!1)}),!1===t.nativeCaptions||!1===t.nativeTextTracks?this.featuresNativeTextTracks=!1:!0!==t.nativeCaptions&&!0!==t.nativeTextTracks||(this.featuresNativeTextTracks=!0),this.featuresNativeTextTracks||this.emulateTextTracks(),this.preloadTextTracks=!1!==t.preloadTextTracks,this.autoRemoteTextTracks_=new a.text.ListClass,this.initTrackListeners(),t.nativeControlsForTouch||this.emitTapEvents(),this.constructor&&(this.name_=this.constructor.name||"Unknown Tech")}triggerSourceset(e){this.isReady_||this.one("ready",()=>this.setTimeout(()=>this.triggerSourceset(e),1)),this.trigger({src:e,type:"sourceset"})}manualProgressOn(){this.on("durationchange",this.onDurationChange_),this.manualProgress=!0,this.one("ready",this.trackProgress_)}manualProgressOff(){this.manualProgress=!1,this.stopTrackingProgress(),this.off("durationchange",this.onDurationChange_)}trackProgress(e){this.stopTrackingProgress(),this.progressInterval=this.setInterval(m(this,function(){var e=this.bufferedPercent();this.bufferedPercent_!==e&&this.trigger("progress"),1===(this.bufferedPercent_=e)&&this.stopTrackingProgress()}),500)}onDurationChange(e){this.duration_=this.duration()}buffered(){return Rt(0,0)}bufferedPercent(){return Vt(this.buffered(),this.duration_)}stopTrackingProgress(){this.clearInterval(this.progressInterval)}manualTimeUpdatesOn(){this.manualTimeUpdates=!0,this.on("play",this.trackCurrentTime_),this.on("pause",this.stopTrackingCurrentTime_)}manualTimeUpdatesOff(){this.manualTimeUpdates=!1,this.stopTrackingCurrentTime(),this.off("play",this.trackCurrentTime_),this.off("pause",this.stopTrackingCurrentTime_)}trackCurrentTime(){this.currentTimeInterval&&this.stopTrackingCurrentTime(),this.currentTimeInterval=this.setInterval(function(){this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})},250)}stopTrackingCurrentTime(){this.clearInterval(this.currentTimeInterval),this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})}dispose(){this.clearTracks(Di.names),this.manualProgress&&this.manualProgressOff(),this.manualTimeUpdates&&this.manualTimeUpdatesOff(),super.dispose()}clearTracks(e){(e=[].concat(e)).forEach(e=>{var t=this[e+"Tracks"]()||[];let i=t.length;for(;i--;){var s=t[i];"text"===e&&this.removeRemoteTextTrack(s),t.removeTrack(s)}})}cleanupAutoTextTracks(){var e=this.autoRemoteTextTracks_||[];let t=e.length;for(;t--;){var i=e[t];this.removeRemoteTextTrack(i)}}reset(){}crossOrigin(){}setCrossOrigin(){}error(e){return void 0!==e&&(this.error_=new i(e),this.trigger("error")),this.error_}played(){return this.hasStarted_?Rt(0,0):Rt()}play(){}setScrubbing(e){}scrubbing(){}setCurrentTime(e){this.manualTimeUpdates&&this.trigger({type:"timeupdate",target:this,manuallyTriggered:!0})}initTrackListeners(){Di.names.forEach(e=>{var t=Di[e];const i=()=>{this.trigger(e+"trackchange")},s=this[t.getterName]();s.addEventListener("removetrack",i),s.addEventListener("addtrack",i),this.on("dispose",()=>{s.removeEventListener("removetrack",i),s.removeEventListener("addtrack",i)})})}addWebVttScript_(){if(!window.WebVTT)if(document.body.contains(this.el()))if(!this.options_["vtt.js"]&&Y(ds)&&0{this.trigger("vttjsloaded")},e.onerror=()=>{this.trigger("vttjserror")},this.on("dispose",()=>{e.onload=null,e.onerror=null}),window.WebVTT=!0,this.el().parentNode.appendChild(e)}else this.ready(this.addWebVttScript_)}emulateTextTracks(){const i=this.textTracks(),e=this.remoteTextTracks(),t=e=>i.addTrack(e.track),s=e=>i.removeTrack(e.track),r=(e.on("addtrack",t),e.on("removetrack",s),this.addWebVttScript_(),()=>this.trigger("texttrackchange")),n=()=>{r();for(let e=0;ethis.autoRemoteTextTracks_.addTrack(i.track)),i}removeRemoteTextTrack(e){var t=this.remoteTextTrackEls().getTrackElementByTrack_(e);this.remoteTextTrackEls().removeTrackElement_(t),this.remoteTextTracks().removeTrack(e),this.autoRemoteTextTracks_.removeTrack(e)}getVideoPlaybackQuality(){return{}}requestPictureInPicture(){return Promise.reject()}disablePictureInPicture(){return!0}setDisablePictureInPicture(){}requestVideoFrameCallback(e){const t=tt++;return!this.isReady_||this.paused()?(this.queuedHanders_.add(t),this.one("playing",()=>{this.queuedHanders_.has(t)&&(this.queuedHanders_.delete(t),e())})):this.requestNamedAnimationFrame(t,e),t}cancelVideoFrameCallback(e){this.queuedHanders_.has(e)?this.queuedHanders_.delete(e):this.cancelNamedAnimationFrame(e)}setPoster(){}playsinline(){}setPlaysinline(){}overrideNativeAudioTracks(e){}overrideNativeVideoTracks(e){}canPlayType(e){return""}static canPlayType(e){return""}static canPlaySource(e,t){return _.canPlayType(e.type)}static isTech(e){return e.prototype instanceof _||e instanceof _||e===_}static registerTech(e,t){if(_.techs_||(_.techs_={}),!_.isTech(t))throw new Error(`Tech ${e} must be a Tech`);if(!_.canPlayType)throw new Error("Techs must have a static canPlayType method on them");if(_.canPlaySource)return e=g(e),_.techs_[e]=t,_.techs_[At(e)]=t,"Tech"!==e&&_.defaultTechOrder_.push(e),t;throw new Error("Techs must have a static canPlaySource method on them")}static getTech(e){if(e)return _.techs_&&_.techs_[e]?_.techs_[e]:(e=g(e),window&&window.videojs&&window.videojs[e]?(d.warn(`The ${e} tech was added to the videojs object when it should be registered using videojs.registerTech(name, tech)`),window.videojs[e]):void 0)}}a.names.forEach(function(e){const t=a[e];_.prototype[t.getterName]=function(){return this[t.privateName]=this[t.privateName]||new t.ListClass,this[t.privateName]}}),_.prototype.featuresVolumeControl=!0,_.prototype.featuresMuteControl=!0,_.prototype.featuresFullscreenResize=!1,_.prototype.featuresPlaybackRate=!1,_.prototype.featuresProgressEvents=!1,_.prototype.featuresSourceset=!1,_.prototype.featuresTimeupdateEvents=!1,_.prototype.featuresNativeTextTracks=!1,_.prototype.featuresVideoFrameCallback=!1,_.withSourceHandlers=function(r){r.registerSourceHandler=function(e,t){let i=r.sourceHandlers;i=i||(r.sourceHandlers=[]),void 0===t&&(t=i.length),i.splice(t,0,e)},r.canPlayType=function(t){var i,s=r.sourceHandlers||[];for(let e=0;efunction i(s={},e=[],r,n,a=[],o=!1){const[t,...l]=e;if("string"==typeof t)i(s,hs[t],r,n,a,o);else if(t){const d=vs(n,t);if(!d.setSource)return a.push(d),i(s,l,r,n,a,o);d.setSource(Object.assign({},s),function(e,t){if(e)return i(s,l,r,n,a,o);a.push(d),i(t,s.type===t.type?l:hs[t.type],r,n,a,o)})}else l.length?i(s,l,r,n,a,o):o?r(s,a):i(s,hs["*"],r,n,a,!0)}(t,hs[t.type],i,e),1)}function ms(e,t,i,s=null){var r="call"+g(i),r=e.reduce(_s(r),s),s=r===cs,t=s?null:t[i](r),n=e,a=i,o=t,l=s;for(let e=n.length-1;0<=e;e--){var d=n[e];d[a]&&d[a](l,o)}return t}const gs={buffered:1,currentTime:1,duration:1,muted:1,played:1,paused:1,seekable:1,volume:1,ended:1},fs={setCurrentTime:1,setMuted:1,setVolume:1},ys={play:1,pause:1};function _s(i){return(e,t)=>e===cs?cs:t[i]?t[i](e):e}function vs(e,t){var i=us[e.id()];let s=null;if(null==i)s=t(e),us[e.id()]=[[t,s]];else{for(let e=0;ethis.handleMouseOver(e),this.handleMouseOut_=e=>this.handleMouseOut(e),this.handleClick_=e=>this.handleClick(e),this.handleKeyDown_=e=>this.handleKeyDown(e),this.emitTapEvents(),this.enable()}createEl(e="div",t={},i={}){t=Object.assign({className:this.buildCSSClass(),tabIndex:0},t),"button"===e&&d.error(`Creating a ClickableComponent with an HTML element of ${e} is not supported; use a Button instead.`),i=Object.assign({role:"button"},i),this.tabIndex_=t.tabIndex;e=o(e,t,i);return e.appendChild(o("span",{className:"vjs-icon-placeholder"},{"aria-hidden":!0})),this.createControlTextEl(e),e}dispose(){this.controlTextEl_=null,super.dispose()}createControlTextEl(e){return this.controlTextEl_=o("span",{className:"vjs-control-text"},{"aria-live":"polite"}),e&&e.appendChild(this.controlTextEl_),this.controlText(this.controlText_,e),this.controlTextEl_}controlText(e,t=this.el()){if(void 0===e)return this.controlText_||"Need Text";var i=this.localize(e);this.controlText_=e,Se(this.controlTextEl_,i),this.nonIconControl||this.player_.options_.noUITitleAttributes||t.setAttribute("title",i)}buildCSSClass(){return"vjs-control vjs-button "+super.buildCSSClass()}enable(){this.enabled_||(this.enabled_=!0,this.removeClass("vjs-disabled"),this.el_.setAttribute("aria-disabled","false"),"undefined"!=typeof this.tabIndex_&&this.el_.setAttribute("tabIndex",this.tabIndex_),this.on(["tap","click"],this.handleClick_),this.on("keydown",this.handleKeyDown_))}disable(){this.enabled_=!1,this.addClass("vjs-disabled"),this.el_.setAttribute("aria-disabled","true"),"undefined"!=typeof this.tabIndex_&&this.el_.removeAttribute("tabIndex"),this.off("mouseover",this.handleMouseOver_),this.off("mouseout",this.handleMouseOut_),this.off(["tap","click"],this.handleClick_),this.off("keydown",this.handleKeyDown_)}handleLanguagechange(){this.controlText(this.controlText_)}handleClick(e){this.options_.clickHandler&&this.options_.clickHandler.call(this,arguments)}handleKeyDown(e){r.isEventKey(e,"Space")||r.isEventKey(e,"Enter")?(e.preventDefault(),e.stopPropagation(),this.trigger("click")):super.handleKeyDown(e)}}f.registerComponent("ClickableComponent",ks);class Cs extends ks{constructor(e,t){super(e,t),this.update(),this.update_=e=>this.update(e),e.on("posterchange",this.update_)}dispose(){this.player().off("posterchange",this.update_),super.dispose()}createEl(){return o("div",{className:"vjs-poster"})}crossOrigin(e){if("undefined"==typeof e)return this.$("img")?this.$("img").crossOrigin:this.player_.tech_&&this.player_.tech_.isReady_?this.player_.crossOrigin():this.player_.options_.crossOrigin||this.player_.options_.crossorigin||null;null!==e&&"anonymous"!==e&&"use-credentials"!==e?this.player_.log.warn(`crossOrigin must be null, "anonymous" or "use-credentials", given "${e}"`):this.$("img")&&(this.$("img").crossOrigin=e)}update(e){var t=this.player().poster();this.setSrc(t),t?this.show():this.hide()}setSrc(e){e?(this.$("img")||this.el_.appendChild(o("picture",{className:"vjs-poster",tabIndex:-1},{},o("img",{loading:"lazy",crossOrigin:this.crossOrigin()},{alt:""}))),this.$("img").src=e):this.el_.textContent=""}handleClick(e){this.player_.controls()&&(this.player_.tech(!0)&&this.player_.tech(!0).focus(),this.player_.paused()?Gt(this.player_.play()):this.player_.pause())}}Cs.prototype.crossorigin=Cs.prototype.crossOrigin,f.registerComponent("PosterImage",Cs);const Is={monospace:"monospace",sansSerif:"sans-serif",serif:"serif",monospaceSansSerif:'"Andale Mono", "Lucida Console", monospace',monospaceSerif:'"Courier New", monospace',proportionalSansSerif:"sans-serif",proportionalSerif:"serif",casual:'"Comic Sans MS", Impact, fantasy',script:'"Monotype Corsiva", cursive',smallcaps:'"Andale Mono", "Lucida Console", monospace, sans-serif'};function xs(e,t){let i;if(4===e.length)i=e[1]+e[1]+e[2]+e[2]+e[3]+e[3];else{if(7!==e.length)throw new Error("Invalid color code provided, "+e+"; must be formatted as e.g. #f0e or #f604e2.");i=e.slice(1)}return"rgba("+parseInt(i.slice(0,2),16)+","+parseInt(i.slice(2,4),16)+","+parseInt(i.slice(4,6),16)+","+t+")"}function As(e,t,i){try{e.style[t]=i}catch(e){}}class Ps extends f{constructor(s,e,t){super(s,e,t);const r=e=>this.updateDisplay(e);s.on("loadstart",e=>this.toggleDisplay(e)),s.on("texttrackchange",r),s.on("loadedmetadata",e=>this.preselectTrack(e)),s.ready(m(this,function(){if(s.tech_&&s.tech_.featuresNativeTextTracks)this.hide();else{s.on("fullscreenchange",r),s.on("playerresize",r);const e=window.screen.orientation||window,i=window.screen.orientation?"change":"orientationchange";e.addEventListener(i,r),s.on("dispose",()=>e.removeEventListener(i,r));var t=this.options_.playerOptions.tracks||[];for(let e=0;e!e.activeCues)){var t=[];for(let e=0;ethis.handleMouseDown(e))}buildCSSClass(){return"vjs-big-play-button"}handleClick(e){var t=this.player_.play();if(this.mouseused_&&e.clientX&&e.clientY)Gt(t),this.player_.tech(!0)&&this.player_.tech(!0).focus();else{var e=this.player_.getChild("controlBar");const i=e&&e.getChild("playToggle");i?(e=()=>i.focus(),Wt(t)?t.then(e,()=>{}):this.setTimeout(e,1)):this.player_.tech(!0).focus()}}handleKeyDown(e){this.mouseused_=!1,super.handleKeyDown(e)}handleMouseDown(e){this.mouseused_=!0}}Os.prototype.controlText_="Play Video",f.registerComponent("BigPlayButton",Os);s;f.registerComponent("CloseButton",class extends s{constructor(e,t){super(e,t),this.controlText(t&&t.controlText||this.localize("Close"))}buildCSSClass(){return"vjs-close-button "+super.buildCSSClass()}handleClick(e){this.trigger({type:"close",bubbles:!1})}handleKeyDown(e){r.isEventKey(e,"Esc")?(e.preventDefault(),e.stopPropagation(),this.trigger("click")):super.handleKeyDown(e)}});class Ds extends s{constructor(e,t={}){super(e,t),t.replay=void 0===t.replay||t.replay,this.on(e,"play",e=>this.handlePlay(e)),this.on(e,"pause",e=>this.handlePause(e)),t.replay&&this.on(e,"ended",e=>this.handleEnded(e))}buildCSSClass(){return"vjs-play-control "+super.buildCSSClass()}handleClick(e){this.player_.paused()?Gt(this.player_.play()):this.player_.pause()}handleSeeked(e){this.removeClass("vjs-ended"),this.player_.paused()?this.handlePause(e):this.handlePlay(e)}handlePlay(e){this.removeClass("vjs-ended","vjs-paused"),this.addClass("vjs-playing"),this.controlText("Pause")}handlePause(e){this.removeClass("vjs-playing"),this.addClass("vjs-paused"),this.controlText("Play")}handleEnded(e){this.removeClass("vjs-playing"),this.addClass("vjs-ended"),this.controlText("Replay"),this.one(this.player_,"seeked",e=>this.handleSeeked(e))}}Ds.prototype.controlText_="Play",f.registerComponent("PlayToggle",Ds);class Ns extends f{constructor(e,t){super(e,t),this.on(e,["timeupdate","ended"],e=>this.updateContent(e)),this.updateTextNode_()}createEl(){var e=this.buildCSSClass(),t=super.createEl("div",{className:e+" vjs-time-control vjs-control"}),i=o("span",{className:"vjs-control-text",textContent:this.localize(this.labelText_)+" "},{role:"presentation"});return t.appendChild(i),this.contentEl_=o("span",{className:e+"-display"},{role:"presentation"}),t.appendChild(this.contentEl_),t}dispose(){this.contentEl_=null,this.textNode_=null,super.dispose()}updateTextNode_(e=0){e=Ht(e),this.formattedTime_!==e&&(this.formattedTime_=e,this.requestNamedAnimationFrame("TimeDisplay#updateTextNode_",()=>{if(this.contentEl_){let e=this.textNode_;e&&this.contentEl_.firstChild!==e&&(e=null,d.warn("TimeDisplay#updateTextnode_: Prevented replacement of text node element since it was no longer a child of this node. Appending a new node instead.")),this.textNode_=document.createTextNode(this.formattedTime_),this.textNode_&&(e?this.contentEl_.replaceChild(this.textNode_,e):this.contentEl_.appendChild(this.textNode_))}}))}updateContent(e){}}Ns.prototype.labelText_="Time",Ns.prototype.controlText_="Time",f.registerComponent("TimeDisplay",Ns);class Ms extends Ns{buildCSSClass(){return"vjs-current-time"}updateContent(e){let t;t=this.player_.ended()?this.player_.duration():this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime(),this.updateTextNode_(t)}}Ms.prototype.labelText_="Current Time",Ms.prototype.controlText_="Current Time",f.registerComponent("CurrentTimeDisplay",Ms);class Rs extends Ns{constructor(e,t){super(e,t);t=e=>this.updateContent(e);this.on(e,"durationchange",t),this.on(e,"loadstart",t),this.on(e,"loadedmetadata",t)}buildCSSClass(){return"vjs-duration"}updateContent(e){var t=this.player_.duration();this.updateTextNode_(t)}}Rs.prototype.labelText_="Duration",Rs.prototype.controlText_="Duration",f.registerComponent("DurationDisplay",Rs);class Us extends f{createEl(){var e=super.createEl("div",{className:"vjs-time-control vjs-time-divider"},{"aria-hidden":!0}),t=super.createEl("div"),i=super.createEl("span",{textContent:"/"});return t.appendChild(i),e.appendChild(t),e}}f.registerComponent("TimeDivider",Us);class Bs extends Ns{constructor(e,t){super(e,t),this.on(e,"durationchange",e=>this.updateContent(e))}buildCSSClass(){return"vjs-remaining-time"}createEl(){var e=super.createEl();return!1!==this.options_.displayNegative&&e.insertBefore(o("span",{},{"aria-hidden":!0},"-"),this.contentEl_),e}updateContent(e){if("number"==typeof this.player_.duration()){let e;e=this.player_.ended()?0:this.player_.remainingTimeDisplay?this.player_.remainingTimeDisplay():this.player_.remainingTime(),this.updateTextNode_(e)}}}Bs.prototype.labelText_="Remaining Time",Bs.prototype.controlText_="Remaining Time",f.registerComponent("RemainingTimeDisplay",Bs);class Fs extends f{constructor(e,t){super(e,t),this.updateShowing(),this.on(this.player(),"durationchange",e=>this.updateShowing(e))}createEl(){var e=super.createEl("div",{className:"vjs-live-control vjs-control"});return this.contentEl_=o("div",{className:"vjs-live-display"},{"aria-live":"off"}),this.contentEl_.appendChild(o("span",{className:"vjs-control-text",textContent:this.localize("Stream Type")+" "})),this.contentEl_.appendChild(document.createTextNode(this.localize("LIVE"))),e.appendChild(this.contentEl_),e}dispose(){this.contentEl_=null,super.dispose()}updateShowing(e){this.player().duration()===1/0?this.show():this.hide()}}f.registerComponent("LiveDisplay",Fs);class js extends s{constructor(e,t){super(e,t),this.updateLiveEdgeStatus(),this.player_.liveTracker&&(this.updateLiveEdgeStatusHandler_=e=>this.updateLiveEdgeStatus(e),this.on(this.player_.liveTracker,"liveedgechange",this.updateLiveEdgeStatusHandler_))}createEl(){var e=super.createEl("button",{className:"vjs-seek-to-live-control vjs-control"});return this.textEl_=o("span",{className:"vjs-seek-to-live-text",textContent:this.localize("LIVE")},{"aria-hidden":"true"}),e.appendChild(this.textEl_),e}updateLiveEdgeStatus(){!this.player_.liveTracker||this.player_.liveTracker.atLiveEdge()?(this.setAttribute("aria-disabled",!0),this.addClass("vjs-at-live-edge"),this.controlText("Seek to live, currently playing live")):(this.setAttribute("aria-disabled",!1),this.removeClass("vjs-at-live-edge"),this.controlText("Seek to live, currently behind live"))}handleClick(){this.player_.liveTracker.seekToLiveEdge()}dispose(){this.player_.liveTracker&&this.off(this.player_.liveTracker,"liveedgechange",this.updateLiveEdgeStatusHandler_),this.textEl_=null,super.dispose()}}function Hs(e,t,i){return e=Number(e),Math.min(i,Math.max(t,isNaN(e)?t:e))}js.prototype.controlText_="Seek to live, currently playing live",f.registerComponent("SeekToLive",js);pi=Object.freeze({__proto__:null,clamp:Hs});class qs extends f{constructor(e,t){super(e,t),this.handleMouseDown_=e=>this.handleMouseDown(e),this.handleMouseUp_=e=>this.handleMouseUp(e),this.handleKeyDown_=e=>this.handleKeyDown(e),this.handleClick_=e=>this.handleClick(e),this.handleMouseMove_=e=>this.handleMouseMove(e),this.update_=e=>this.update(e),this.bar=this.getChild(this.options_.barName),this.vertical(!!this.options_.vertical),this.enable()}enabled(){return this.enabled_}enable(){this.enabled()||(this.on("mousedown",this.handleMouseDown_),this.on("touchstart",this.handleMouseDown_),this.on("keydown",this.handleKeyDown_),this.on("click",this.handleClick_),this.on(this.player_,"controlsvisible",this.update),this.playerEvent&&this.on(this.player_,this.playerEvent,this.update),this.removeClass("disabled"),this.setAttribute("tabindex",0),this.enabled_=!0)}disable(){var e;this.enabled()&&(e=this.bar.el_.ownerDocument,this.off("mousedown",this.handleMouseDown_),this.off("touchstart",this.handleMouseDown_),this.off("keydown",this.handleKeyDown_),this.off("click",this.handleClick_),this.off(this.player_,"controlsvisible",this.update_),this.off(e,"mousemove",this.handleMouseMove_),this.off(e,"mouseup",this.handleMouseUp_),this.off(e,"touchmove",this.handleMouseMove_),this.off(e,"touchend",this.handleMouseUp_),this.removeAttribute("tabindex"),this.addClass("disabled"),this.playerEvent&&this.off(this.player_,this.playerEvent,this.update),this.enabled_=!1)}createEl(e,t={},i={}){return t.className=t.className+" vjs-slider",t=Object.assign({tabIndex:0},t),i=Object.assign({role:"slider","aria-valuenow":0,"aria-valuemin":0,"aria-valuemax":100},i),super.createEl(e,t,i)}handleMouseDown(e){var t=this.bar.el_.ownerDocument;"mousedown"===e.type&&e.preventDefault(),"touchstart"!==e.type||ae||e.preventDefault(),De(),this.addClass("vjs-sliding"),this.trigger("slideractive"),this.on(t,"mousemove",this.handleMouseMove_),this.on(t,"mouseup",this.handleMouseUp_),this.on(t,"touchmove",this.handleMouseMove_),this.on(t,"touchend",this.handleMouseUp_),this.handleMouseMove(e,!0)}handleMouseMove(e){}handleMouseUp(e){var t=this.bar.el_.ownerDocument;Ne(),this.removeClass("vjs-sliding"),this.trigger("sliderinactive"),this.off(t,"mousemove",this.handleMouseMove_),this.off(t,"mouseup",this.handleMouseUp_),this.off(t,"touchmove",this.handleMouseMove_),this.off(t,"touchend",this.handleMouseUp_),this.update()}update(){if(this.el_&&this.bar){const t=this.getProgress();return t!==this.progress_&&(this.progress_=t,this.requestNamedAnimationFrame("Slider#update",()=>{var e=this.vertical()?"height":"width";this.bar.el().style[e]=(100*t).toFixed(2)+"%"})),t}}getProgress(){return Number(Hs(this.getPercent(),0,1).toFixed(4))}calculateDistance(e){e=Ue(this.el_,e);return this.vertical()?e.y:e.x}handleKeyDown(e){r.isEventKey(e,"Left")||r.isEventKey(e,"Down")?(e.preventDefault(),e.stopPropagation(),this.stepBack()):r.isEventKey(e,"Right")||r.isEventKey(e,"Up")?(e.preventDefault(),e.stopPropagation(),this.stepForward()):super.handleKeyDown(e)}handleClick(e){e.stopPropagation(),e.preventDefault()}vertical(e){if(void 0===e)return this.vertical_||!1;this.vertical_=!!e,this.vertical_?this.addClass("vjs-slider-vertical"):this.addClass("vjs-slider-horizontal")}}f.registerComponent("Slider",qs);const Vs=(e,t)=>Hs(e/t*100,0,100).toFixed(2)+"%";class $s extends f{constructor(e,t){super(e,t),this.partEls_=[],this.on(e,"progress",e=>this.update(e))}createEl(){var e=super.createEl("div",{className:"vjs-load-progress"}),t=o("span",{className:"vjs-control-text"}),i=o("span",{textContent:this.localize("Loaded")}),s=document.createTextNode(": ");return this.percentageEl_=o("span",{className:"vjs-control-text-loaded-percentage",textContent:"0%"}),e.appendChild(t),t.appendChild(i),t.appendChild(s),t.appendChild(this.percentageEl_),e}dispose(){this.partEls_=null,this.percentageEl_=null,super.dispose()}update(e){this.requestNamedAnimationFrame("LoadProgressBar#update",()=>{var e=this.player_.liveTracker,i=this.player_.buffered(),e=e&&e.isLive()?e.seekableEnd():this.player_.duration(),s=this.player_.bufferedEnd(),r=this.partEls_,e=Vs(s,e);this.percent_!==e&&(this.el_.style.width=e,Se(this.percentageEl_,e),this.percent_=e);for(let t=0;ti.length;e--)this.el_.removeChild(r[e-1]);r.length=i.length})}}f.registerComponent("LoadProgressBar",$s);class Ws extends f{constructor(e,t){super(e,t),this.update=ct(m(this,this.update),30)}createEl(){return super.createEl("div",{className:"vjs-time-tooltip"},{"aria-hidden":"true"})}update(t,i,s){var r=Re(this.el_),n=Me(this.player_.el()),i=t.width*i;if(n&&r){var a=t.left-n.left+i,i=t.width-i+(n.right-t.right);let e=r.width/2;ar.width&&(e=r.width),e=Math.round(e),this.el_.style.right=`-${e}px`,this.write(s)}}write(e){Se(this.el_,e)}updateTime(r,n,a,o){this.requestNamedAnimationFrame("TimeTooltip#updateTime",()=>{let e;var t,i,s=this.player_.duration();e=this.player_.liveTracker&&this.player_.liveTracker.isLive()?((i=(t=this.player_.liveTracker.liveWindow())-n*t)<1?"":"-")+Ht(i,t):Ht(a,s),this.update(r,n,e),o&&o()})}}f.registerComponent("TimeTooltip",Ws);class Gs extends f{constructor(e,t){super(e,t),this.update=ct(m(this,this.update),30)}createEl(){return super.createEl("div",{className:"vjs-play-progress vjs-slider-bar"},{"aria-hidden":"true"})}update(e,t){var i,s=this.getChild("timeTooltip");s&&(i=this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime(),s.updateTime(e,t,i))}}Gs.prototype.options_={children:[]},u||te||Gs.prototype.options_.children.push("timeTooltip"),f.registerComponent("PlayProgressBar",Gs);class zs extends f{constructor(e,t){super(e,t),this.update=ct(m(this,this.update),30)}createEl(){return super.createEl("div",{className:"vjs-mouse-display"})}update(e,t){var i=t*this.player_.duration();this.getChild("timeTooltip").updateTime(e,t,i,()=>{this.el_.style.left=e.width*t+"px"})}}zs.prototype.options_={children:["timeTooltip"]},f.registerComponent("MouseTimeDisplay",zs);class Xs extends qs{constructor(e,t){super(e,t),this.setEventHandlers_()}setEventHandlers_(){this.update_=m(this,this.update),this.update=ct(this.update_,30),this.on(this.player_,["ended","durationchange","timeupdate"],this.update),this.player_.liveTracker&&this.on(this.player_.liveTracker,"liveedgechange",this.update),this.updateInterval=null,this.enableIntervalHandler_=e=>this.enableInterval_(e),this.disableIntervalHandler_=e=>this.disableInterval_(e),this.on(this.player_,["playing"],this.enableIntervalHandler_),this.on(this.player_,["ended","pause","waiting"],this.disableIntervalHandler_),"hidden"in document&&"visibilityState"in document&&this.on(document,"visibilitychange",this.toggleVisibility_)}toggleVisibility_(e){"hidden"===document.visibilityState?(this.cancelNamedAnimationFrame("SeekBar#update"),this.cancelNamedAnimationFrame("Slider#update"),this.disableInterval_(e)):(this.player_.ended()||this.player_.paused()||this.enableInterval_(),this.update())}enableInterval_(){this.updateInterval||(this.updateInterval=this.setInterval(this.update,30))}disableInterval_(e){this.player_.liveTracker&&this.player_.liveTracker.isLive()&&e&&"ended"!==e.type||this.updateInterval&&(this.clearInterval(this.updateInterval),this.updateInterval=null)}createEl(){return super.createEl("div",{className:"vjs-progress-holder"},{"aria-label":this.localize("Progress Bar")})}update(e){if("hidden"!==document.visibilityState){const s=super.update();return this.requestNamedAnimationFrame("SeekBar#update",()=>{var e=this.player_.ended()?this.player_.duration():this.getCurrentTime_(),t=this.player_.liveTracker;let i=this.player_.duration();t&&t.isLive()&&(i=this.player_.liveTracker.liveCurrentTime()),this.percent_!==s&&(this.el_.setAttribute("aria-valuenow",(100*s).toFixed(2)),this.percent_=s),this.currentTime_===e&&this.duration_===i||(this.el_.setAttribute("aria-valuetext",this.localize("progress bar timing: currentTime={1} duration={2}",[Ht(e,i),Ht(i,i)],"{1} of {2}")),this.currentTime_=e,this.duration_=i),this.bar&&this.bar.update(Me(this.el()),this.getProgress())}),s}}userSeek_(e){this.player_.liveTracker&&this.player_.liveTracker.isLive()&&this.player_.liveTracker.nextSeekedFromUser(),this.player_.currentTime(e)}getCurrentTime_(){return this.player_.scrubbing()?this.player_.getCache().currentTime:this.player_.currentTime()}getPercent(){var e=this.getCurrentTime_();let t;var i=this.player_.liveTracker;return i&&i.isLive()?(t=(e-i.seekableStart())/i.liveWindow(),i.atLiveEdge()&&(t=1)):t=e/this.player_.duration(),t}handleMouseDown(e){Ve(e)&&(e.stopPropagation(),this.videoWasPlaying=!this.player_.paused(),this.player_.pause(),super.handleMouseDown(e))}handleMouseMove(t,i=!1){if(Ve(t)){i||this.player_.scrubbing()||this.player_.scrubbing(!0);let e;i=this.calculateDistance(t),t=this.player_.liveTracker;if(t&&t.isLive()){if(.99<=i)return void t.seekToLiveEdge();var s=t.seekableStart(),r=t.liveCurrentTime();if((e=(e=(e=s+i*t.liveWindow())>=r?r:e)<=s?s+.1:e)===1/0)return}else(e=i*this.player_.duration())===this.player_.duration()&&(e-=.1);this.userSeek_(e)}}enable(){super.enable();var e=this.getChild("mouseTimeDisplay");e&&e.show()}disable(){super.disable();var e=this.getChild("mouseTimeDisplay");e&&e.hide()}handleMouseUp(e){super.handleMouseUp(e),e&&e.stopPropagation(),this.player_.scrubbing(!1),this.player_.trigger({type:"timeupdate",target:this,manuallyTriggered:!0}),this.videoWasPlaying?Gt(this.player_.play()):this.update_()}stepForward(){this.userSeek_(this.player_.currentTime()+5)}stepBack(){this.userSeek_(this.player_.currentTime()-5)}handleAction(e){this.player_.paused()?this.player_.play():this.player_.pause()}handleKeyDown(e){var t,i=this.player_.liveTracker;r.isEventKey(e,"Space")||r.isEventKey(e,"Enter")?(e.preventDefault(),e.stopPropagation(),this.handleAction(e)):r.isEventKey(e,"Home")?(e.preventDefault(),e.stopPropagation(),this.userSeek_(0)):r.isEventKey(e,"End")?(e.preventDefault(),e.stopPropagation(),i&&i.isLive()?this.userSeek_(i.liveCurrentTime()):this.userSeek_(this.player_.duration())):/^[0-9]$/.test(r(e))?(e.preventDefault(),e.stopPropagation(),t=10*(r.codes[r(e)]-r.codes[0])/100,i&&i.isLive()?this.userSeek_(i.seekableStart()+i.liveWindow()*t):this.userSeek_(this.player_.duration()*t)):r.isEventKey(e,"PgDn")?(e.preventDefault(),e.stopPropagation(),this.userSeek_(this.player_.currentTime()-60)):r.isEventKey(e,"PgUp")?(e.preventDefault(),e.stopPropagation(),this.userSeek_(this.player_.currentTime()+60)):super.handleKeyDown(e)}dispose(){this.disableInterval_(),this.off(this.player_,["ended","durationchange","timeupdate"],this.update),this.player_.liveTracker&&this.off(this.player_.liveTracker,"liveedgechange",this.update),this.off(this.player_,["playing"],this.enableIntervalHandler_),this.off(this.player_,["ended","pause","waiting"],this.disableIntervalHandler_),"hidden"in document&&"visibilityState"in document&&this.off(document,"visibilitychange",this.toggleVisibility_),super.dispose()}}Xs.prototype.options_={children:["loadProgressBar","playProgressBar"],barName:"playProgressBar"},u||te||Xs.prototype.options_.children.splice(1,0,"mouseTimeDisplay"),f.registerComponent("SeekBar",Xs);class Ks extends f{constructor(e,t){super(e,t),this.handleMouseMove=ct(m(this,this.handleMouseMove),30),this.throttledHandleMouseSeek=ct(m(this,this.handleMouseSeek),30),this.handleMouseUpHandler_=e=>this.handleMouseUp(e),this.handleMouseDownHandler_=e=>this.handleMouseDown(e),this.enable()}createEl(){return super.createEl("div",{className:"vjs-progress-control vjs-control"})}handleMouseMove(e){var t,i,s,r,n=this.getChild("seekBar");n&&(t=n.getChild("playProgressBar"),i=n.getChild("mouseTimeDisplay"),t||i)&&(s=Re(r=n.el()),r=Hs(r=Ue(r,e).x,0,1),i&&i.update(s,r),t)&&t.update(s,n.getProgress())}handleMouseSeek(e){var t=this.getChild("seekBar");t&&t.handleMouseMove(e)}enabled(){return this.enabled_}disable(){var e;this.children().forEach(e=>e.disable&&e.disable()),this.enabled()&&(this.off(["mousedown","touchstart"],this.handleMouseDownHandler_),this.off(this.el_,"mousemove",this.handleMouseMove),this.removeListenersAddedOnMousedownAndTouchstart(),this.addClass("disabled"),this.enabled_=!1,this.player_.scrubbing())&&(e=this.getChild("seekBar"),this.player_.scrubbing(!1),e.videoWasPlaying)&&Gt(this.player_.play())}enable(){this.children().forEach(e=>e.enable&&e.enable()),this.enabled()||(this.on(["mousedown","touchstart"],this.handleMouseDownHandler_),this.on(this.el_,"mousemove",this.handleMouseMove),this.removeClass("disabled"),this.enabled_=!0)}removeListenersAddedOnMousedownAndTouchstart(){var e=this.el_.ownerDocument;this.off(e,"mousemove",this.throttledHandleMouseSeek),this.off(e,"touchmove",this.throttledHandleMouseSeek),this.off(e,"mouseup",this.handleMouseUpHandler_),this.off(e,"touchend",this.handleMouseUpHandler_)}handleMouseDown(e){var t=this.el_.ownerDocument,i=this.getChild("seekBar");i&&i.handleMouseDown(e),this.on(t,"mousemove",this.throttledHandleMouseSeek),this.on(t,"touchmove",this.throttledHandleMouseSeek),this.on(t,"mouseup",this.handleMouseUpHandler_),this.on(t,"touchend",this.handleMouseUpHandler_)}handleMouseUp(e){var t=this.getChild("seekBar");t&&t.handleMouseUp(e),this.removeListenersAddedOnMousedownAndTouchstart()}}Ks.prototype.options_={children:["seekBar"]},f.registerComponent("ProgressControl",Ks);class Ys extends s{constructor(e,t){super(e,t),this.on(e,["enterpictureinpicture","leavepictureinpicture"],e=>this.handlePictureInPictureChange(e)),this.on(e,["disablepictureinpicturechanged","loadedmetadata"],e=>this.handlePictureInPictureEnabledChange(e)),this.on(e,["loadedmetadata","audioonlymodechange","audiopostermodechange"],()=>{"audio"===e.currentType().substring(0,5)||e.audioPosterMode()||e.audioOnlyMode()?(e.isInPictureInPicture()&&e.exitPictureInPicture(),this.hide()):this.show()}),this.disable()}buildCSSClass(){return"vjs-picture-in-picture-control "+super.buildCSSClass()}handlePictureInPictureEnabledChange(){document.pictureInPictureEnabled&&!1===this.player_.disablePictureInPicture()||this.player_.options_.enableDocumentPictureInPicture&&"documentPictureInPicture"in window?this.enable():this.disable()}handlePictureInPictureChange(e){this.player_.isInPictureInPicture()?this.controlText("Exit Picture-in-Picture"):this.controlText("Picture-in-Picture"),this.handlePictureInPictureEnabledChange()}handleClick(e){this.player_.isInPictureInPicture()?this.player_.exitPictureInPicture():this.player_.requestPictureInPicture()}}Ys.prototype.controlText_="Picture-in-Picture",f.registerComponent("PictureInPictureToggle",Ys);class Qs extends s{constructor(e,t){super(e,t),this.on(e,"fullscreenchange",e=>this.handleFullscreenChange(e)),!1===document[e.fsApi_.fullscreenEnabled]&&this.disable()}buildCSSClass(){return"vjs-fullscreen-control "+super.buildCSSClass()}handleFullscreenChange(e){this.player_.isFullscreen()?this.controlText("Exit Fullscreen"):this.controlText("Fullscreen")}handleClick(e){this.player_.isFullscreen()?this.player_.exitFullscreen():this.player_.requestFullscreen()}}Qs.prototype.controlText_="Fullscreen",f.registerComponent("FullscreenToggle",Qs);class Js extends f{createEl(){var e=super.createEl("div",{className:"vjs-volume-level"});return e.appendChild(super.createEl("span",{className:"vjs-control-text"})),e}}f.registerComponent("VolumeLevel",Js);class Zs extends f{constructor(e,t){super(e,t),this.update=ct(m(this,this.update),30)}createEl(){return super.createEl("div",{className:"vjs-volume-tooltip"},{"aria-hidden":"true"})}update(t,i,s,e){if(!s){var s=Me(this.el_),r=Me(this.player_.el()),i=t.width*i;if(!r||!s)return;var n=t.left-r.left+i,i=t.width-i+(r.right-t.right);let e=s.width/2;ns.width&&(e=s.width),this.el_.style.right=`-${e}px`}this.write(e+"%")}write(e){Se(this.el_,e)}updateVolume(e,t,i,s,r){this.requestNamedAnimationFrame("VolumeLevelTooltip#updateVolume",()=>{this.update(e,t,i,s.toFixed(0)),r&&r()})}}f.registerComponent("VolumeLevelTooltip",Zs);class er extends f{constructor(e,t){super(e,t),this.update=ct(m(this,this.update),30)}createEl(){return super.createEl("div",{className:"vjs-mouse-display"})}update(e,t,i){var s=100*t;this.getChild("volumeLevelTooltip").updateVolume(e,t,i,s,()=>{i?this.el_.style.bottom=e.height*t+"px":this.el_.style.left=e.width*t+"px"})}}er.prototype.options_={children:["volumeLevelTooltip"]},f.registerComponent("MouseVolumeLevelDisplay",er);class tr extends qs{constructor(e,t){super(e,t),this.on("slideractive",e=>this.updateLastVolume_(e)),this.on(e,"volumechange",e=>this.updateARIAAttributes(e)),e.ready(()=>this.updateARIAAttributes())}createEl(){return super.createEl("div",{className:"vjs-volume-bar vjs-slider-bar"},{"aria-label":this.localize("Volume Level"),"aria-live":"polite"})}handleMouseDown(e){Ve(e)&&super.handleMouseDown(e)}handleMouseMove(e){var t,i,s,r=this.getChild("mouseVolumeLevelDisplay");r&&(t=Me(s=this.el()),i=this.vertical(),s=Ue(s,e),s=Hs(s=i?s.y:s.x,0,1),r.update(t,s,i)),Ve(e)&&(this.checkMuted(),this.player_.volume(this.calculateDistance(e)))}checkMuted(){this.player_.muted()&&this.player_.muted(!1)}getPercent(){return this.player_.muted()?0:this.player_.volume()}stepForward(){this.checkMuted(),this.player_.volume(this.player_.volume()+.1)}stepBack(){this.checkMuted(),this.player_.volume(this.player_.volume()-.1)}updateARIAAttributes(e){var t=this.player_.muted()?0:this.volumeAsPercentage_();this.el_.setAttribute("aria-valuenow",t),this.el_.setAttribute("aria-valuetext",t+"%")}volumeAsPercentage_(){return Math.round(100*this.player_.volume())}updateLastVolume_(){const e=this.player_.volume();this.one("sliderinactive",()=>{0===this.player_.volume()&&this.player_.lastVolume_(e)})}}tr.prototype.options_={children:["volumeLevel"],barName:"volumeLevel"},u||te||tr.prototype.options_.children.splice(0,0,"mouseVolumeLevelDisplay"),tr.prototype.playerEvent="volumechange",f.registerComponent("VolumeBar",tr);class ir extends f{constructor(e,t={}){var i,s;t.vertical=t.vertical||!1,"undefined"!=typeof t.volumeBar&&!Y(t.volumeBar)||(t.volumeBar=t.volumeBar||{},t.volumeBar.vertical=t.vertical),super(e,t),i=this,(s=e).tech_&&!s.tech_.featuresVolumeControl&&i.addClass("vjs-hidden"),i.on(s,"loadstart",function(){s.tech_.featuresVolumeControl?i.removeClass("vjs-hidden"):i.addClass("vjs-hidden")}),this.throttledHandleMouseMove=ct(m(this,this.handleMouseMove),30),this.handleMouseUpHandler_=e=>this.handleMouseUp(e),this.on("mousedown",e=>this.handleMouseDown(e)),this.on("touchstart",e=>this.handleMouseDown(e)),this.on("mousemove",e=>this.handleMouseMove(e)),this.on(this.volumeBar,["focus","slideractive"],()=>{this.volumeBar.addClass("vjs-slider-active"),this.addClass("vjs-slider-active"),this.trigger("slideractive")}),this.on(this.volumeBar,["blur","sliderinactive"],()=>{this.volumeBar.removeClass("vjs-slider-active"),this.removeClass("vjs-slider-active"),this.trigger("sliderinactive")})}createEl(){let e="vjs-volume-horizontal";return this.options_.vertical&&(e="vjs-volume-vertical"),super.createEl("div",{className:"vjs-volume-control vjs-control "+e})}handleMouseDown(e){var t=this.el_.ownerDocument;this.on(t,"mousemove",this.throttledHandleMouseMove),this.on(t,"touchmove",this.throttledHandleMouseMove),this.on(t,"mouseup",this.handleMouseUpHandler_),this.on(t,"touchend",this.handleMouseUpHandler_)}handleMouseUp(e){var t=this.el_.ownerDocument;this.off(t,"mousemove",this.throttledHandleMouseMove),this.off(t,"touchmove",this.throttledHandleMouseMove),this.off(t,"mouseup",this.handleMouseUpHandler_),this.off(t,"touchend",this.handleMouseUpHandler_)}handleMouseMove(e){this.volumeBar.handleMouseMove(e)}}ir.prototype.options_={children:["volumeBar"]},f.registerComponent("VolumeControl",ir);class sr extends s{constructor(e,t){var i,s;super(e,t),i=this,(s=e).tech_&&!s.tech_.featuresMuteControl&&i.addClass("vjs-hidden"),i.on(s,"loadstart",function(){s.tech_.featuresMuteControl?i.removeClass("vjs-hidden"):i.addClass("vjs-hidden")}),this.on(e,["loadstart","volumechange"],e=>this.update(e))}buildCSSClass(){return"vjs-mute-control "+super.buildCSSClass()}handleClick(e){var t=this.player_.volume(),i=this.player_.lastVolume_();0===t?(this.player_.volume(i<.1?.1:i),this.player_.muted(!1)):this.player_.muted(!this.player_.muted())}update(e){this.updateIcon_(),this.updateControlText_()}updateIcon_(){var e=this.player_.volume();let t=3;u&&this.player_.tech_&&this.player_.tech_.el_&&this.player_.muted(this.player_.tech_.el_.muted),0===e||this.player_.muted()?t=0:e<.33?t=1:e<.67&&(t=2),Ce(this.el_,[0,1,2,3].reduce((e,t)=>e+`${t?" ":""}vjs-vol-`+t,"")),ke(this.el_,"vjs-vol-"+t)}updateControlText_(){var e=this.player_.muted()||0===this.player_.volume()?"Unmute":"Mute";this.controlText()!==e&&this.controlText(e)}}sr.prototype.controlText_="Mute",f.registerComponent("MuteToggle",sr);class rr extends f{constructor(e,t={}){"undefined"!=typeof t.inline?t.inline=t.inline:t.inline=!0,"undefined"!=typeof t.volumeControl&&!Y(t.volumeControl)||(t.volumeControl=t.volumeControl||{},t.volumeControl.vertical=!t.inline),super(e,t),this.handleKeyPressHandler_=e=>this.handleKeyPress(e),this.on(e,["loadstart"],e=>this.volumePanelState_(e)),this.on(this.muteToggle,"keyup",e=>this.handleKeyPress(e)),this.on(this.volumeControl,"keyup",e=>this.handleVolumeControlKeyUp(e)),this.on("keydown",e=>this.handleKeyPress(e)),this.on("mouseover",e=>this.handleMouseOver(e)),this.on("mouseout",e=>this.handleMouseOut(e)),this.on(this.volumeControl,["slideractive"],this.sliderActive_),this.on(this.volumeControl,["sliderinactive"],this.sliderInactive_)}sliderActive_(){this.addClass("vjs-slider-active")}sliderInactive_(){this.removeClass("vjs-slider-active")}volumePanelState_(){this.volumeControl.hasClass("vjs-hidden")&&this.muteToggle.hasClass("vjs-hidden")&&this.addClass("vjs-hidden"),this.volumeControl.hasClass("vjs-hidden")&&!this.muteToggle.hasClass("vjs-hidden")&&this.addClass("vjs-mute-toggle-only")}createEl(){let e="vjs-volume-panel-horizontal";return this.options_.inline||(e="vjs-volume-panel-vertical"),super.createEl("div",{className:"vjs-volume-panel vjs-control "+e})}dispose(){this.handleMouseOut(),super.dispose()}handleVolumeControlKeyUp(e){r.isEventKey(e,"Esc")&&this.muteToggle.focus()}handleMouseOver(e){this.addClass("vjs-hover"),ot(document,"keyup",this.handleKeyPressHandler_)}handleMouseOut(e){this.removeClass("vjs-hover"),p(document,"keyup",this.handleKeyPressHandler_)}handleKeyPress(e){r.isEventKey(e,"Esc")&&this.handleMouseOut()}}rr.prototype.options_={children:["muteToggle","volumeControl"]},f.registerComponent("VolumePanel",rr);s;f.registerComponent("SkipForward",class extends s{constructor(e,t){super(e,t),this.validOptions=[5,10,30],this.skipTime=this.getSkipForwardTime(),this.skipTime&&this.validOptions.includes(this.skipTime)?(this.controlText(this.localize("Skip forward {1} seconds",[this.skipTime])),this.show()):this.hide()}getSkipForwardTime(){var e=this.options_.playerOptions;return e.controlBar&&e.controlBar.skipButtons&&e.controlBar.skipButtons.forward}buildCSSClass(){return`vjs-skip-forward-${this.getSkipForwardTime()} `+super.buildCSSClass()}handleClick(e){var t=this.player_.currentTime(),i=this.player_.liveTracker,i=i&&i.isLive()?i.seekableEnd():this.player_.duration();let s;s=t+this.skipTime<=i?t+this.skipTime:i,this.player_.currentTime(s)}handleLanguagechange(){this.controlText(this.localize("Skip forward {1} seconds",[this.skipTime]))}});class nr extends s{constructor(e,t){super(e,t),this.validOptions=[5,10,30],this.skipTime=this.getSkipBackwardTime(),this.skipTime&&this.validOptions.includes(this.skipTime)?(this.controlText(this.localize("Skip backward {1} seconds",[this.skipTime])),this.show()):this.hide()}getSkipBackwardTime(){var e=this.options_.playerOptions;return e.controlBar&&e.controlBar.skipButtons&&e.controlBar.skipButtons.backward}buildCSSClass(){return`vjs-skip-backward-${this.getSkipBackwardTime()} `+super.buildCSSClass()}handleClick(e){var t=this.player_.currentTime(),i=this.player_.liveTracker,i=i&&i.isLive()&&i.seekableStart();let s;s=i&&t-this.skipTime<=i?i:t>=this.skipTime?t-this.skipTime:0,this.player_.currentTime(s)}handleLanguagechange(){this.controlText(this.localize("Skip backward {1} seconds",[this.skipTime]))}}nr.prototype.controlText_="Skip Backward",f.registerComponent("SkipBackward",nr);class ar extends f{constructor(e,t){super(e,t),t&&(this.menuButton_=t.menuButton),this.focusedChild_=-1,this.on("keydown",e=>this.handleKeyDown(e)),this.boundHandleBlur_=e=>this.handleBlur(e),this.boundHandleTapClick_=e=>this.handleTapClick(e)}addEventListenerForItem(e){e instanceof f&&(this.on(e,"blur",this.boundHandleBlur_),this.on(e,["tap","click"],this.boundHandleTapClick_))}removeEventListenerForItem(e){e instanceof f&&(this.off(e,"blur",this.boundHandleBlur_),this.off(e,["tap","click"],this.boundHandleTapClick_))}removeChild(e){"string"==typeof e&&(e=this.getChild(e)),this.removeEventListenerForItem(e),super.removeChild(e)}addItem(e){e=this.addChild(e);e&&this.addEventListenerForItem(e)}createEl(){var e=this.options_.contentElType||"ul",e=(this.contentEl_=o(e,{className:"vjs-menu-content"}),this.contentEl_.setAttribute("role","menu"),super.createEl("div",{append:this.contentEl_,className:"vjs-menu"}));return e.appendChild(this.contentEl_),ot(e,"click",function(e){e.preventDefault(),e.stopImmediatePropagation()}),e}dispose(){this.contentEl_=null,this.boundHandleBlur_=null,this.boundHandleTapClick_=null,super.dispose()}handleBlur(e){const t=e.relatedTarget||document.activeElement;this.children().some(e=>e.el()===t)||(e=this.menuButton_)&&e.buttonPressed_&&t!==e.el().firstChild&&e.unpressButton()}handleTapClick(t){var e;this.menuButton_&&(this.menuButton_.unpressButton(),e=this.children(),Array.isArray(e))&&(e=e.filter(e=>e.el()===t.target)[0])&&"CaptionSettingsMenuItem"!==e.name()&&this.menuButton_.focus()}handleKeyDown(e){r.isEventKey(e,"Left")||r.isEventKey(e,"Down")?(e.preventDefault(),e.stopPropagation(),this.stepForward()):(r.isEventKey(e,"Right")||r.isEventKey(e,"Up"))&&(e.preventDefault(),e.stopPropagation(),this.stepBack())}stepForward(){let e=0;void 0!==this.focusedChild_&&(e=this.focusedChild_+1),this.focus(e)}stepBack(){let e=0;void 0!==this.focusedChild_&&(e=this.focusedChild_-1),this.focus(e)}focus(e=0){var t=this.children().slice();t.length&&t[0].hasClass("vjs-menu-title")&&t.shift(),0=t.length&&(e=t.length-1),t[this.focusedChild_=e].el_.focus())}}f.registerComponent("Menu",ar);class or extends f{constructor(e,t={}){super(e,t),this.menuButton_=new s(e,t),this.menuButton_.controlText(this.controlText_),this.menuButton_.el_.setAttribute("aria-haspopup","true");e=s.prototype.buildCSSClass(),this.menuButton_.el_.className=this.buildCSSClass()+" "+e,this.menuButton_.removeClass("vjs-control"),this.addChild(this.menuButton_),this.update(),this.enabled_=!0,t=e=>this.handleClick(e);this.handleMenuKeyUp_=e=>this.handleMenuKeyUp(e),this.on(this.menuButton_,"tap",t),this.on(this.menuButton_,"click",t),this.on(this.menuButton_,"keydown",e=>this.handleKeyDown(e)),this.on(this.menuButton_,"mouseenter",()=>{this.addClass("vjs-hover"),this.menu.show(),ot(document,"keyup",this.handleMenuKeyUp_)}),this.on("mouseleave",e=>this.handleMouseLeave(e)),this.on("keydown",e=>this.handleSubmenuKeyDown(e))}update(){var e=this.createMenu();this.menu&&(this.menu.dispose(),this.removeChild(this.menu)),this.menu=e,this.addChild(e),this.buttonPressed_=!1,this.menuButton_.el_.setAttribute("aria-expanded","false"),this.items&&this.items.length<=this.hideThreshold_?(this.hide(),this.menu.contentEl_.removeAttribute("role")):(this.show(),this.menu.contentEl_.setAttribute("role","menu"))}createMenu(){var e,t=new ar(this.player_,{menuButton:this});if(this.hideThreshold_=0,this.options_.title&&(e=o("li",{className:"vjs-menu-title",textContent:g(this.options_.title),tabIndex:-1}),e=new f(this.player_,{el:e}),t.addItem(e)),this.items=this.createItems(),this.items)for(let e=0;er.isEventKey(t,e))||super.handleKeyDown(t)}handleClick(e){this.selected(!0)}selected(e){this.selectable&&(e?(this.addClass("vjs-selected"),this.el_.setAttribute("aria-checked","true"),this.controlText(", selected"),this.isSelected_=!0):(this.removeClass("vjs-selected"),this.el_.setAttribute("aria-checked","false"),this.controlText(""),this.isSelected_=!1))}}f.registerComponent("MenuItem",hr);class ur extends hr{constructor(e,t){var i=t.track;const s=e.textTracks(),r=(t.label=i.label||i.language||"Unknown",t.selected="showing"===i.mode,super(e,t),this.track=i,this.kinds=(t.kinds||[t.kind||this.track.kind]).filter(Boolean),(...e)=>{this.handleTracksChange.apply(this,e)}),n=(...e)=>{this.handleSelectedLanguageChange.apply(this,e)};if(e.on(["loadstart","texttrackchange"],r),s.addEventListener("change",r),s.addEventListener("selectedlanguagechange",n),this.on("dispose",function(){e.off(["loadstart","texttrackchange"],r),s.removeEventListener("change",r),s.removeEventListener("selectedlanguagechange",n)}),void 0===s.onchange){let e;this.on(["tap","click"],function(){if("object"!=typeof window.Event)try{e=new window.Event("change")}catch(e){}e||(e=document.createEvent("Event")).initEvent("change",!0,!0),s.dispatchEvent(e)})}this.handleTracksChange()}handleClick(e){var t=this.track,i=this.player_.textTracks();if(super.handleClick(e),i)for(let e=0;e{this.items.forEach(e=>{e.selected(this.track_.activeCues[0]===e.cue)})}}buildCSSClass(){return"vjs-chapters-button "+super.buildCSSClass()}buildWrapperCSSClass(){return"vjs-chapters-button "+super.buildWrapperCSSClass()}update(e){e&&e.track&&"chapters"!==e.track.kind||((e=this.findChaptersTrack())!==this.track_?(this.setTrack(e),super.update()):(!this.items||e&&e.cues&&e.cues.length!==this.items.length)&&super.update())}setTrack(e){var t;this.track_!==e&&(this.updateHandler_||(this.updateHandler_=this.update.bind(this)),this.track_&&((t=this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_))&&t.removeEventListener("load",this.updateHandler_),this.track_.removeEventListener("cuechange",this.selectCurrentItem_),this.track_=null),this.track_=e,this.track_)&&(this.track_.mode="hidden",(t=this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_))&&t.addEventListener("load",this.updateHandler_),this.track_.addEventListener("cuechange",this.selectCurrentItem_))}findChaptersTrack(){var t=this.player_.textTracks()||[];for(let e=t.length-1;0<=e;e--){var i=t[e];if(i.kind===this.kind_)return i}}getMenuCaption(){return this.track_&&this.track_.label?this.track_.label:this.localize(g(this.kind_))}createMenu(){return this.options_.title=this.getMenuCaption(),super.createMenu()}createItems(){var i=[];if(this.track_){var s=this.track_.cues;if(s)for(let e=0,t=s.length;e{this.handleTracksChange.apply(this,e)});s.addEventListener("change",r),this.on("dispose",()=>{s.removeEventListener("change",r)})}createEl(e,t,i){e=super.createEl(e,t,i),t=e.querySelector(".vjs-menu-item-text");return"main-desc"===this.options_.track.kind&&(t.appendChild(o("span",{className:"vjs-icon-placeholder"},{"aria-hidden":!0})),t.appendChild(o("span",{className:"vjs-control-text",textContent:" "+this.localize("Descriptions")}))),e}handleClick(e){if(super.handleClick(e),this.track.enabled=!0,this.player_.tech_.featuresNativeAudioTracks){var t=this.player_.audioTracks();for(let e=0;ethis.update(e))}handleClick(e){super.handleClick(),this.player().playbackRate(this.rate)}update(e){this.selected(this.player().playbackRate()===this.rate)}}Er.prototype.contentElType="button",f.registerComponent("PlaybackRateMenuItem",Er);class kr extends or{constructor(e,t){super(e,t),this.menuButton_.el_.setAttribute("aria-describedby",this.labelElId_),this.updateVisibility(),this.updateLabel(),this.on(e,"loadstart",e=>this.updateVisibility(e)),this.on(e,"ratechange",e=>this.updateLabel(e)),this.on(e,"playbackrateschange",e=>this.handlePlaybackRateschange(e))}createEl(){var e=super.createEl();return this.labelElId_="vjs-playback-rate-value-label-"+this.id_,this.labelEl_=o("div",{className:"vjs-playback-rate-value",id:this.labelElId_,textContent:"1x"}),e.appendChild(this.labelEl_),e}dispose(){this.labelEl_=null,super.dispose()}buildCSSClass(){return"vjs-playback-rate "+super.buildCSSClass()}buildWrapperCSSClass(){return"vjs-playback-rate "+super.buildWrapperCSSClass()}createItems(){var t=this.playbackRates(),i=[];for(let e=t.length-1;0<=e;e--)i.push(new Er(this.player(),{rate:t[e]+"x"}));return i}handlePlaybackRateschange(e){this.update()}playbackRates(){var e=this.player();return e.playbackRates&&e.playbackRates()||[]}playbackRateSupported(){return this.player().tech_&&this.player().tech_.featuresPlaybackRate&&this.playbackRates()&&0this.open(e))}buildCSSClass(){return"vjs-error-display "+super.buildCSSClass()}content(){var e=this.player().error();return e?this.localize(e.message):""}}xr.prototype.options_=Object.assign({},Qt.prototype.options_,{pauseOnOpen:!1,fillAlways:!0,temporary:!1,uncloseable:!0}),f.registerComponent("ErrorDisplay",xr);const Ar="vjs-text-track-settings";var Mi=["#000","Black"],Ot=["#00F","Blue"],Pr=["#0FF","Cyan"],Lr=["#0F0","Green"],t=["#F0F","Magenta"],Or=["#F00","Red"],Dr=["#FFF","White"],n=["#FF0","Yellow"],Nr=["1","Opaque"],Mr=["0.5","Semi-Transparent"],Rr=["0","Transparent"];const Ur={backgroundColor:{selector:".vjs-bg-color > select",id:"captions-background-color-%s",label:"Color",options:[Mi,Dr,Or,Lr,Ot,n,t,Pr]},backgroundOpacity:{selector:".vjs-bg-opacity > select",id:"captions-background-opacity-%s",label:"Opacity",options:[Nr,Mr,Rr]},color:{selector:".vjs-text-color > select",id:"captions-foreground-color-%s",label:"Color",options:[Dr,Mi,Or,Lr,Ot,n,t,Pr]},edgeStyle:{selector:".vjs-edge-style > select",id:"%s",label:"Text Edge Style",options:[["none","None"],["raised","Raised"],["depressed","Depressed"],["uniform","Uniform"],["dropshadow","Dropshadow"]]},fontFamily:{selector:".vjs-font-family > select",id:"captions-font-family-%s",label:"Font Family",options:[["proportionalSansSerif","Proportional Sans-Serif"],["monospaceSansSerif","Monospace Sans-Serif"],["proportionalSerif","Proportional Serif"],["monospaceSerif","Monospace Serif"],["casual","Casual"],["script","Script"],["small-caps","Small Caps"]]},fontPercent:{selector:".vjs-font-percent > select",id:"captions-font-size-%s",label:"Font Size",options:[["0.50","50%"],["0.75","75%"],["1.00","100%"],["1.25","125%"],["1.50","150%"],["1.75","175%"],["2.00","200%"],["3.00","300%"],["4.00","400%"]],default:2,parser:e=>"1.00"===e?null:Number(e)},textOpacity:{selector:".vjs-text-opacity > select",id:"captions-foreground-opacity-%s",label:"Opacity",options:[Nr,Mr]},windowColor:{selector:".vjs-window-color > select",id:"captions-window-color-%s",label:"Color"},windowOpacity:{selector:".vjs-window-opacity > select",id:"captions-window-opacity-%s",label:"Opacity",options:[Rr,Mr,Nr]}};function Br(e,t){if((e=t?t(e):e)&&"none"!==e)return e}Ur.windowColor.options=Ur.backgroundColor.options;class Fr extends Qt{constructor(e,t){t.temporary=!1,super(e,t),this.updateDisplay=this.updateDisplay.bind(this),this.fill(),this.hasBeenOpened_=this.hasBeenFilled_=!0,this.endDialog=o("p",{className:"vjs-control-text",textContent:this.localize("End of dialog window.")}),this.el().appendChild(this.endDialog),this.setDefaults(),void 0===t.persistTextTrackSettings&&(this.options_.persistTextTrackSettings=this.options_.playerOptions.persistTextTrackSettings),this.on(this.$(".vjs-done-button"),"click",()=>{this.saveSettings(),this.close()}),this.on(this.$(".vjs-default-button"),"click",()=>{this.setDefaults(),this.updateDisplay()}),z(Ur,e=>{this.on(this.$(e.selector),"change",this.updateDisplay)}),this.options_.persistTextTrackSettings&&this.restoreSettings()}dispose(){this.endDialog=null,super.dispose()}createElSelect_(e,t="",i="label"){e=Ur[e];const s=e.id.replace("%s",this.id_),r=[t,s].join(" ").trim();return[`<${i} id="${s}" class="${"label"===i?"vjs-label":""}">`,this.localize(e.label),``,`").join("")}createElFgColor_(){var e="captions-text-legend-"+this.id_;return['
',``,this.localize("Text"),"",'',this.createElSelect_("color",e),"",'',this.createElSelect_("textOpacity",e),"","
"].join("")}createElBgColor_(){var e="captions-background-"+this.id_;return['
',``,this.localize("Text Background"),"",'',this.createElSelect_("backgroundColor",e),"",'',this.createElSelect_("backgroundOpacity",e),"","
"].join("")}createElWinColor_(){var e="captions-window-"+this.id_;return['
',``,this.localize("Caption Area Background"),"",'',this.createElSelect_("windowColor",e),"",'',this.createElSelect_("windowOpacity",e),"","
"].join("")}createElColors_(){return o("div",{className:"vjs-track-settings-colors",innerHTML:[this.createElFgColor_(),this.createElBgColor_(),this.createElWinColor_()].join("")})}createElFont_(){return o("div",{className:"vjs-track-settings-font",innerHTML:['
',this.createElSelect_("fontPercent","","legend"),"
",'
',this.createElSelect_("edgeStyle","","legend"),"
",'
',this.createElSelect_("fontFamily","","legend"),"
"].join("")})}createElControls_(){var e=this.localize("restore all settings to the default values");return o("div",{className:"vjs-track-settings-controls",innerHTML:[`",``].join("")})}content(){return[this.createElColors_(),this.createElFont_(),this.createElControls_()]}label(){return this.localize("Caption Settings Dialog")}description(){return this.localize("Beginning of dialog window. Escape will cancel and close the window.")}buildCSSClass(){return super.buildCSSClass()+" vjs-text-track-settings"}getValues(){return X(Ur,(e,t,i)=>{s=this.$(t.selector),t=t.parser;var s=Br(s.options[s.options.selectedIndex].value,t);return void 0!==s&&(e[i]=s),e},{})}setValues(n){z(Ur,(e,t)=>{var i=this.$(e.selector),s=n[t],r=e.parser;if(s)for(let e=0;e{var t=e.hasOwnProperty("default")?e.default:0;this.$(e.selector).selectedIndex=t})}restoreSettings(){let e;try{e=JSON.parse(window.localStorage.getItem(Ar))}catch(e){d.warn(e)}e&&this.setValues(e)}saveSettings(){if(this.options_.persistTextTrackSettings){var e=this.getValues();try{Object.keys(e).length?window.localStorage.setItem(Ar,JSON.stringify(e)):window.localStorage.removeItem(Ar)}catch(e){d.warn(e)}}}updateDisplay(){var e=this.player_.getChild("textTrackDisplay");e&&e.updateDisplay()}conditionalBlur_(){this.previouslyActiveEl_=null;var e=this.player_.controlBar,t=e&&e.subsCapsButton,e=e&&e.captionsButton;t?t.focus():e&&e.focus()}handleLanguagechange(){this.fill()}}f.registerComponent("TextTrackSettings",Fr);class jr extends f{constructor(e,t){let i=t.ResizeObserver||window.ResizeObserver;super(e,h({createEl:!(i=null===t.ResizeObserver?!1:i),reportTouchActivity:!1},t)),this.ResizeObserver=t.ResizeObserver||window.ResizeObserver,this.loadListener_=null,this.resizeObserver_=null,this.debouncedHandler_=pt(()=>{this.resizeHandler()},100,!1,this),i?(this.resizeObserver_=new this.ResizeObserver(this.debouncedHandler_),this.resizeObserver_.observe(e.el())):(this.loadListener_=()=>{if(this.el_&&this.el_.contentWindow){const t=this.debouncedHandler_;let e=this.unloadListener_=function(){p(this,"resize",t),p(this,"unload",e),e=null};ot(this.el_.contentWindow,"unload",e),ot(this.el_.contentWindow,"resize",t)}},this.one("load",this.loadListener_))}createEl(){return super.createEl("iframe",{className:"vjs-resize-manager",tabIndex:-1,title:this.localize("No content")},{"aria-hidden":"true"})}resizeHandler(){this.player_&&this.player_.trigger&&this.player_.trigger("playerresize")}dispose(){this.debouncedHandler_&&this.debouncedHandler_.cancel(),this.resizeObserver_&&(this.player_.el()&&this.resizeObserver_.unobserve(this.player_.el()),this.resizeObserver_.disconnect()),this.loadListener_&&this.off("load",this.loadListener_),this.el_&&this.el_.contentWindow&&this.unloadListener_&&this.unloadListener_.call(this.el_.contentWindow),this.ResizeObserver=null,this.resizeObserver=null,this.debouncedHandler_=null,this.loadListener_=null,super.dispose()}}f.registerComponent("ResizeManager",jr);const Hr={trackingThreshold:20,liveTolerance:15};class qr extends f{constructor(e,t){super(e,h(Hr,t,{createEl:!1})),this.trackLiveHandler_=()=>this.trackLive_(),this.handlePlay_=e=>this.handlePlay(e),this.handleFirstTimeupdate_=e=>this.handleFirstTimeupdate(e),this.handleSeeked_=e=>this.handleSeeked(e),this.seekToLiveEdge_=e=>this.seekToLiveEdge(e),this.reset_(),this.on(this.player_,"durationchange",e=>this.handleDurationchange(e)),this.on(this.player_,"canplay",()=>this.toggleTracking())}trackLive_(){var t=this.player_.seekable();if(t&&t.length){var t=Number(window.performance.now().toFixed(4)),i=-1===this.lastTime_?0:(t-this.lastTime_)/1e3,t=(this.lastTime_=t,this.pastSeekEnd_=this.pastSeekEnd()+i,this.liveCurrentTime()),i=this.player_.currentTime();let e=this.player_.paused()||this.seekedBehindLive_||Math.abs(t-i)>this.options_.liveTolerance;(e=this.timeupdateSeen_&&t!==1/0?e:!1)!==this.behindLiveEdge_&&(this.behindLiveEdge_=e,this.trigger("liveedgechange"))}}handleDurationchange(){this.toggleTracking()}toggleTracking(){this.player_.duration()===1/0&&this.liveWindow()>=this.options_.trackingThreshold?(this.player_.options_.liveui&&this.player_.addClass("vjs-liveui"),this.startTracking()):(this.player_.removeClass("vjs-liveui"),this.stopTracking())}startTracking(){this.isTracking()||(this.timeupdateSeen_||(this.timeupdateSeen_=this.player_.hasStarted()),this.trackingInterval_=this.setInterval(this.trackLiveHandler_,30),this.trackLive_(),this.on(this.player_,["play","pause"],this.trackLiveHandler_),this.timeupdateSeen_?this.on(this.player_,"seeked",this.handleSeeked_):(this.one(this.player_,"play",this.handlePlay_),this.one(this.player_,"timeupdate",this.handleFirstTimeupdate_)))}handleFirstTimeupdate(){this.timeupdateSeen_=!0,this.on(this.player_,"seeked",this.handleSeeked_)}handleSeeked(){var e=Math.abs(this.liveCurrentTime()-this.player_.currentTime());this.seekedBehindLive_=this.nextSeekedFromUser_&&2this.updateDom_()),this.updateDom_()}createEl(){return this.els={title:o("div",{className:"vjs-title-bar-title",id:"vjs-title-bar-title-"+tt++}),description:o("div",{className:"vjs-title-bar-description",id:"vjs-title-bar-description-"+tt++})},o("div",{className:"vjs-title-bar"},{},Object.values(this.els))}updateDom_(){var e=this.player_.tech_;const s=e&&e.el_,r={title:"aria-labelledby",description:"aria-describedby"};["title","description"].forEach(e=>{var t=this.state[e],i=this.els[e],e=r[e];Fe(i),t&&Se(i,t),s&&(s.removeAttribute(e),t)&&s.setAttribute(e,i.id)}),this.state.title||this.state.description?this.show():this.hide()}update(e){this.setState(e)}dispose(){var e=this.player_.tech_,e=e&&e.el_;e&&(e.removeAttribute("aria-labelledby"),e.removeAttribute("aria-describedby")),super.dispose(),this.els=null}}f.registerComponent("TitleBar",Vr);function $r(i){const s=i.el();if(!s.resetSourceWatch_){const t={},e=Kr(i),r=t=>(...e)=>{e=t.apply(s,e);return Gr(i),e};["append","appendChild","insertAdjacentHTML"].forEach(e=>{s[e]&&(t[e]=s[e],s[e]=r(t[e]))}),Object.defineProperty(s,"innerHTML",h(e,{set:r(e.set)})),s.resetSourceWatch_=()=>{s.resetSourceWatch_=null,Object.keys(t).forEach(e=>{s[e]=t[e]}),Object.defineProperty(s,"innerHTML",e)},i.one("sourceset",s.resetSourceWatch_)}}function Wr(i){if(i.featuresSourceset){const s=i.el();if(!s.resetSourceset_){e=i;const t=Xr([e.el(),window.HTMLMediaElement.prototype,Yr],"src");var e;const r=s.setAttribute,n=s.load;Object.defineProperty(s,"src",h(t,{set:e=>{e=t.set.call(s,e);return i.triggerSourceset(s.src),e}})),s.setAttribute=(e,t)=>{t=r.call(s,e,t);return/src/i.test(e)&&i.triggerSourceset(s.src),t},s.load=()=>{var e=n.call(s);return Gr(i)||(i.triggerSourceset(""),$r(i)),e},s.currentSrc?i.triggerSourceset(s.currentSrc):Gr(i)||$r(i),s.resetSourceset_=()=>{s.resetSourceset_=null,s.load=n,s.setAttribute=r,Object.defineProperty(s,"src",t),s.resetSourceWatch_&&s.resetSourceWatch_()}}}}const Gr=t=>{var e=t.el();if(e.hasAttribute("src"))t.triggerSourceset(e.src);else{var i=t.$$("source"),s=[];let e="";if(!i.length)return!1;for(let e=0;e{let s={};for(let e=0;eXr([e.el(),window.HTMLMediaElement.prototype,window.Element.prototype,zr],"innerHTML"),Yr=Object.defineProperty({},"src",{get(){return this.hasAttribute("src")?di(window.Element.prototype.getAttribute.call(this,"src")):""},set(e){return window.Element.prototype.setAttribute.call(this,"src",e),e}});class v extends _{constructor(e,t){super(e,t);t=e.source;let i=!1;if(this.featuresVideoFrameCallback=this.featuresVideoFrameCallback&&"VIDEO"===this.el_.tagName,t&&(this.el_.currentSrc!==t.src||e.tag&&3===e.tag.initNetworkState_)?this.setSource(t):this.handleLateInit_(this.el_),e.enableSourceset&&this.setupSourcesetHandling_(),this.isScrubbing_=!1,this.el_.hasChildNodes()){var s=this.el_.childNodes;let e=s.length;for(var r=[];e--;){var n=s[e];"track"===n.nodeName.toLowerCase()&&(this.featuresNativeTextTracks?(this.remoteTextTrackEls().addTrackElement_(n),this.remoteTextTracks().addTrack(n.track),this.textTracks().addTrack(n.track),i||this.el_.hasAttribute("crossorigin")||!hi(n.src)||(i=!0)):r.push(n))}for(let e=0;e{s=[];for(let e=0;ei.removeEventListener("change",e)),()=>{for(let e=0;e{i.removeEventListener("change",e),i.removeEventListener("change",r),i.addEventListener("change",r)}),this.on("webkitendfullscreen",()=>{i.removeEventListener("change",e),i.addEventListener("change",e),i.removeEventListener("change",r)})}overrideNative_(e,t){if(t===this[`featuresNative${e}Tracks`]){const i=e.toLowerCase();this[i+"TracksListeners_"]&&Object.keys(this[i+"TracksListeners_"]).forEach(e=>{this.el()[i+"Tracks"].removeEventListener(e,this[i+"TracksListeners_"][e])}),this[`featuresNative${e}Tracks`]=!t,this[i+"TracksListeners_"]=null,this.proxyNativeTracksForType_(i)}}overrideNativeAudioTracks(e){this.overrideNative_("Audio",e)}overrideNativeVideoTracks(e){this.overrideNative_("Video",e)}proxyNativeTracksForType_(i){var e=Di[i];const s=this.el()[e.getterName],r=this[e.getterName]();if(this[`featuresNative${e.capitalName}Tracks`]&&s&&s.addEventListener){const n={change:e=>{var t={type:"change",target:r,currentTarget:r,srcElement:r};r.trigger(t),"text"===i&&this[Ni.remoteText.getterName]().trigger(t)},addtrack(e){r.addTrack(e.track)},removetrack(e){r.removeTrack(e.track)}},t=function(){var e=[];for(let i=0;i{const i=n[t];s.addEventListener(t,i),this.on("dispose",e=>s.removeEventListener(t,i))}),this.on("loadstart",t),this.on("dispose",e=>this.off("loadstart",t))}}proxyNativeTracks_(){Di.names.forEach(e=>{this.proxyNativeTracksForType_(e)})}createEl(){let t=this.options_.tag;t&&(this.options_.playerElIngest||this.movingMediaElementInDOM)||(t?(e=t.cloneNode(!0),t.parentNode&&t.parentNode.insertBefore(e,t),v.disposeMediaElement(t),t=e):(t=document.createElement("video"),e=h({},this.options_.tag&&Ae(this.options_.tag)),me&&!0===this.options_.nativeControlsForTouch||delete e.controls,xe(t,Object.assign(e,{id:this.options_.techId,class:"vjs-tech"}))),t.playerId=this.options_.playerId),"undefined"!=typeof this.options_.preload&&Le(t,"preload",this.options_.preload),void 0!==this.options_.disablePictureInPicture&&(t.disablePictureInPicture=this.options_.disablePictureInPicture);var e,i=["loop","muted","playsinline","autoplay"];for(let e=0;e{0{this.off("webkitbeginfullscreen",t),this.off("webkitendfullscreen",e)})}}supportsFullScreen(){return"function"==typeof this.el_.webkitEnterFullScreen}enterFullScreen(){const e=this.el_;if(e.paused&&e.networkState<=e.HAVE_METADATA)Gt(this.el_.play()),this.setTimeout(function(){e.pause();try{e.webkitEnterFullScreen()}catch(e){this.trigger("fullscreenerror",e)}},0);else try{e.webkitEnterFullScreen()}catch(e){this.trigger("fullscreenerror",e)}}exitFullScreen(){this.el_.webkitDisplayingFullscreen?this.el_.webkitExitFullScreen():this.trigger("fullscreenerror",new Error("The video is not fullscreen"))}requestPictureInPicture(){return this.el_.requestPictureInPicture()}requestVideoFrameCallback(e){return this.featuresVideoFrameCallback&&!this.el_.webkitKeys?this.el_.requestVideoFrameCallback(e):super.requestVideoFrameCallback(e)}cancelVideoFrameCallback(e){this.featuresVideoFrameCallback&&!this.el_.webkitKeys?this.el_.cancelVideoFrameCallback(e):super.cancelVideoFrameCallback(e)}src(e){if(void 0===e)return this.el_.src;this.setSrc(e)}reset(){v.resetMediaElement(this.el_)}currentSrc(){return this.currentSource_?this.currentSource_.src:this.el_.currentSrc}setControls(e){this.el_.controls=!!e}addTextTrack(e,t,i){return this.featuresNativeTextTracks?this.el_.addTextTrack(e,t,i):super.addTextTrack(e,t,i)}createRemoteTextTrack(e){var t;return this.featuresNativeTextTracks?(t=document.createElement("track"),e.kind&&(t.kind=e.kind),e.label&&(t.label=e.label),(e.language||e.srclang)&&(t.srclang=e.language||e.srclang),e.default&&(t.default=e.default),e.id&&(t.id=e.id),e.src&&(t.src=e.src),t):super.createRemoteTextTrack(e)}addRemoteTextTrack(e,t){e=super.addRemoteTextTrack(e,t);return this.featuresNativeTextTracks&&this.el().appendChild(e),e}removeRemoteTextTrack(t){if(super.removeRemoteTextTrack(t),this.featuresNativeTextTracks){var i=this.$$("track");let e=i.length;for(;e--;)t!==i[e]&&t!==i[e].track||this.el().removeChild(i[e])}}getVideoPlaybackQuality(){var e;return"function"==typeof this.el().getVideoPlaybackQuality?this.el().getVideoPlaybackQuality():(e={},"undefined"!=typeof this.el().webkitDroppedFrameCount&&"undefined"!=typeof this.el().webkitDecodedFrameCount&&(e.droppedVideoFrames=this.el().webkitDroppedFrameCount,e.totalVideoFrames=this.el().webkitDecodedFrameCount),window.performance&&(e.creationTime=window.performance.now()),e)}}Q(v,"TEST_VID",function(){var e,t;if(_e())return e=document.createElement("video"),(t=document.createElement("track")).kind="captions",t.srclang="en",t.label="English",e.appendChild(t),e}),v.isSupported=function(){try{v.TEST_VID.volume=.5}catch(e){return!1}return!(!v.TEST_VID||!v.TEST_VID.canPlayType)},v.canPlayType=function(e){return v.TEST_VID.canPlayType(e)},v.canPlaySource=function(e,t){return v.canPlayType(e.type)},v.canControlVolume=function(){try{const t=v.TEST_VID.volume;v.TEST_VID.volume=t/2+.1;var e=t!==v.TEST_VID.volume;return e&&u?(window.setTimeout(()=>{v&&v.prototype&&(v.prototype.featuresVolumeControl=t!==v.TEST_VID.volume)}),!1):e}catch(e){return!1}},v.canMuteVolume=function(){try{var e=v.TEST_VID.muted;return v.TEST_VID.muted=!e,v.TEST_VID.muted?Le(v.TEST_VID,"muted","muted"):Oe(v.TEST_VID,"muted"),e!==v.TEST_VID.muted}catch(e){return!1}},v.canControlPlaybackRate=function(){if(te&&ae&&le<58)return!1;try{var e=v.TEST_VID.playbackRate;return v.TEST_VID.playbackRate=e/2+.1,e!==v.TEST_VID.playbackRate}catch(e){return!1}},v.canOverrideAttributes=function(){try{var e=()=>{};Object.defineProperty(document.createElement("video"),"src",{get:e,set:e}),Object.defineProperty(document.createElement("audio"),"src",{get:e,set:e}),Object.defineProperty(document.createElement("video"),"innerHTML",{get:e,set:e}),Object.defineProperty(document.createElement("audio"),"innerHTML",{get:e,set:e})}catch(e){return!1}return!0},v.supportsNativeTextTracks=function(){return fe||u&&ae},v.supportsNativeVideoTracks=function(){return!(!v.TEST_VID||!v.TEST_VID.videoTracks)},v.supportsNativeAudioTracks=function(){return!(!v.TEST_VID||!v.TEST_VID.audioTracks)},v.Events=["loadstart","suspend","abort","error","emptied","stalled","loadedmetadata","loadeddata","canplay","canplaythrough","playing","waiting","seeking","seeked","ended","durationchange","timeupdate","progress","play","pause","ratechange","resize","volumechange"],[["featuresMuteControl","canMuteVolume"],["featuresPlaybackRate","canControlPlaybackRate"],["featuresSourceset","canOverrideAttributes"],["featuresNativeTextTracks","supportsNativeTextTracks"],["featuresNativeVideoTracks","supportsNativeVideoTracks"],["featuresNativeAudioTracks","supportsNativeAudioTracks"]].forEach(function([e,t]){Q(v.prototype,e,()=>v[t](),!0)}),v.prototype.featuresVolumeControl=v.canControlVolume(),v.prototype.movingMediaElementInDOM=!u,v.prototype.featuresFullscreenResize=!0,v.prototype.featuresProgressEvents=!0,v.prototype.featuresTimeupdateEvents=!0,v.prototype.featuresVideoFrameCallback=!(!v.TEST_VID||!v.TEST_VID.requestVideoFrameCallback),v.disposeMediaElement=function(e){if(e){for(e.parentNode&&e.parentNode.removeChild(e);e.hasChildNodes();)e.removeChild(e.firstChild);if(e.removeAttribute("src"),"function"==typeof e.load)try{e.load()}catch(e){}}},v.resetMediaElement=function(t){if(t){var i=t.querySelectorAll("source");let e=i.length;for(;e--;)t.removeChild(i[e]);if(t.removeAttribute("src"),"function"==typeof t.load)try{t.load()}catch(e){}}},["muted","defaultMuted","autoplay","controls","loop","playsinline"].forEach(function(e){v.prototype[e]=function(){return this.el_[e]||this.el_.hasAttribute(e)}}),["muted","defaultMuted","autoplay","loop","playsinline"].forEach(function(t){v.prototype["set"+g(t)]=function(e){(this.el_[t]=e)?this.el_.setAttribute(t,t):this.el_.removeAttribute(t)}}),["paused","currentTime","buffered","volume","poster","preload","error","seeking","seekable","ended","playbackRate","defaultPlaybackRate","disablePictureInPicture","played","networkState","readyState","videoWidth","videoHeight","crossOrigin"].forEach(function(e){v.prototype[e]=function(){return this.el_[e]}}),["volume","src","poster","preload","playbackRate","defaultPlaybackRate","disablePictureInPicture","crossOrigin"].forEach(function(t){v.prototype["set"+g(t)]=function(e){this.el_[t]=e}}),["pause","load","play"].forEach(function(e){v.prototype[e]=function(){return this.el_[e]()}}),_.withSourceHandlers(v),v.nativeSourceHandler={},v.nativeSourceHandler.canPlayType=function(e){try{return v.TEST_VID.canPlayType(e)}catch(e){return""}},v.nativeSourceHandler.canHandleSource=function(e,t){return e.type?v.nativeSourceHandler.canPlayType(e.type):e.src?(e=ui(e.src),v.nativeSourceHandler.canPlayType("video/"+e)):""},v.nativeSourceHandler.handleSource=function(e,t,i){t.setSrc(e.src)},v.nativeSourceHandler.dispose=function(){},v.registerSourceHandler(v.nativeSourceHandler),_.registerTech("Html5",v);const Qr=["progress","abort","suspend","emptied","stalled","loadedmetadata","loadeddata","timeupdate","resize","volumechange","texttrackchange"],Jr={canplay:"CanPlay",canplaythrough:"CanPlayThrough",playing:"Playing",seeked:"Seeked"},Zr=["tiny","xsmall","small","medium","large","xlarge","huge"],en={},tn=(Zr.forEach(e=>{var t="x"===e.charAt(0)?"x-"+e.substring(1):e;en[e]="vjs-layout-"+t}),{tiny:210,xsmall:320,small:425,medium:768,large:1440,xlarge:2560,huge:1/0});class b extends f{constructor(e,t,i){if(e.id=e.id||t.id||"vjs_video_"+tt++,(t=Object.assign(b.getTagSettings(e),t)).initChildren=!1,t.createEl=!1,t.evented=!1,t.reportTouchActivity=!1,t.language||(s=e.closest("[lang]"))&&(t.language=s.getAttribute("lang")),super(null,t,i),this.boundDocumentFullscreenChange_=e=>this.documentFullscreenChange_(e),this.boundFullWindowOnEscKey_=e=>this.fullWindowOnEscKey(e),this.boundUpdateStyleEl_=e=>this.updateStyleEl_(e),this.boundApplyInitTime_=e=>this.applyInitTime_(e),this.boundUpdateCurrentBreakpoint_=e=>this.updateCurrentBreakpoint_(e),this.boundHandleTechClick_=e=>this.handleTechClick_(e),this.boundHandleTechDoubleClick_=e=>this.handleTechDoubleClick_(e),this.boundHandleTechTouchStart_=e=>this.handleTechTouchStart_(e),this.boundHandleTechTouchMove_=e=>this.handleTechTouchMove_(e),this.boundHandleTechTouchEnd_=e=>this.handleTechTouchEnd_(e),this.boundHandleTechTap_=e=>this.handleTechTap_(e),this.isFullscreen_=!1,this.log=W(this.id_),this.fsApi_=j,this.isPosterFromTech_=!1,this.queuedCallbacks_=[],this.isReady_=!1,this.hasStarted_=!1,this.userActive_=!1,this.debugEnabled_=!1,this.audioOnlyMode_=!1,this.audioPosterMode_=!1,this.audioOnlyCache_={playerHeight:null,hiddenChildren:[]},!this.options_||!this.options_.techOrder||!this.options_.techOrder.length)throw new Error("No techOrder specified. Did you overwrite videojs.options instead of just changing the properties you want to override?");if(this.tag=e,this.tagAttributes=e&&Ae(e),this.language(this.options_.language),t.languages){const r={};Object.getOwnPropertyNames(t.languages).forEach(function(e){r[e.toLowerCase()]=t.languages[e]}),this.languages_=r}else this.languages_=b.prototype.options_.languages;this.resetCache_(),this.poster_=t.poster||"",this.controls_=!!t.controls,e.controls=!1,e.removeAttribute("controls"),this.changingSrc_=!1,this.playCallbacks_=[],this.playTerminatedQueue_=[],e.hasAttribute("autoplay")?this.autoplay(!0):this.autoplay(this.options_.autoplay),t.plugins&&Object.keys(t.plugins).forEach(e=>{if("function"!=typeof this[e])throw new Error(`plugin "${e}" does not exist`)}),this.scrubbing_=!1,this.el_=this.createEl(),Ct(this,{eventBusKey:"el_"}),this.fsApi_.requestFullscreen&&(ot(document,this.fsApi_.fullscreenchange,this.boundDocumentFullscreenChange_),this.on(this.fsApi_.fullscreenchange,this.boundDocumentFullscreenChange_)),this.fluid_&&this.on(["playerreset","resize"],this.boundUpdateStyleEl_);var s=h(this.options_),i=(t.plugins&&Object.keys(t.plugins).forEach(e=>{this[e](t.plugins[e])}),t.debug&&this.debug(!0),this.options_.playerOptions=s,this.middleware_=[],this.playbackRates(t.playbackRates),this.initChildren(),this.isAudio("audio"===e.nodeName.toLowerCase()),this.controls()?this.addClass("vjs-controls-enabled"):this.addClass("vjs-controls-disabled"),this.el_.setAttribute("role","region"),this.isAudio()?this.el_.setAttribute("aria-label",this.localize("Audio Player")):this.el_.setAttribute("aria-label",this.localize("Video Player")),this.isAudio()&&this.addClass("vjs-audio"),me&&this.addClass("vjs-touch-enabled"),u||this.addClass("vjs-workinghover"),b.players[this.id_]=this,R.split(".")[0]);this.addClass("vjs-v"+i),this.userActive(!0),this.reportUserActivity(),this.one("play",e=>this.listenForUserActivity_(e)),this.on("keydown",e=>this.handleKeyDown(e)),this.on("languagechange",e=>this.handleLanguagechange(e)),this.breakpoints(this.options_.breakpoints),this.responsive(this.options_.responsive),this.on("ready",()=>{this.audioPosterMode(this.options_.audioPosterMode),this.audioOnlyMode(this.options_.audioOnlyMode)})}dispose(){var e;this.trigger("dispose"),this.off("dispose"),p(document,this.fsApi_.fullscreenchange,this.boundDocumentFullscreenChange_),p(document,"keydown",this.boundFullWindowOnEscKey_),this.styleEl_&&this.styleEl_.parentNode&&(this.styleEl_.parentNode.removeChild(this.styleEl_),this.styleEl_=null),b.players[this.id_]=null,this.tag&&this.tag.player&&(this.tag.player=null),this.el_&&this.el_.player&&(this.el_.player=null),this.tech_&&(this.tech_.dispose(),this.isPosterFromTech_=!1,this.poster_=""),this.playerElIngest_&&(this.playerElIngest_=null),this.tag&&(this.tag=null),e=this,us[e.id()]=null,a.names.forEach(e=>{e=this[a[e].getterName]();e&&e.off&&e.off()}),super.dispose({restoreEl:this.options_.restoreEl})}createEl(){let t=this.tag,i,e=this.playerElIngest_=t.parentNode&&t.parentNode.hasAttribute&&t.parentNode.hasAttribute("data-vjs-player");const s="video-js"===this.tag.tagName.toLowerCase(),r=(e?i=this.el_=t.parentNode:s||(i=this.el_=super.createEl("div")),Ae(t));if(s){for(i=this.el_=t,t=this.tag=document.createElement("video");i.children.length;)t.appendChild(i.firstChild);Ee(i,"video-js")||ke(i,"video-js"),i.appendChild(t),e=this.playerElIngest_=i,Object.keys(i).forEach(e=>{try{t[e]=i[e]}catch(e){}})}t.setAttribute("tabindex","-1"),r.tabindex="-1",ae&&ue&&(t.setAttribute("role","application"),r.role="application"),t.removeAttribute("width"),t.removeAttribute("height"),"width"in r&&delete r.width,"height"in r&&delete r.height,Object.getOwnPropertyNames(r).forEach(function(e){s&&"class"===e||i.setAttribute(e,r[e]),s&&t.setAttribute(e,r[e])}),t.playerId=t.id,t.id+="_html5_api",t.className="vjs-tech",(t.player=i.player=this).addClass("vjs-paused"),!0!==window.VIDEOJS_NO_DYNAMIC_STYLE&&(this.styleEl_=Ze("vjs-styles-dimensions"),n=$e(".vjs-styles-defaults"),(a=$e("head")).insertBefore(this.styleEl_,n?n.nextSibling:a.firstChild)),this.fill_=!1,this.fluid_=!1,this.width(this.options_.width),this.height(this.options_.height),this.fill(this.options_.fill),this.fluid(this.options_.fluid),this.aspectRatio(this.options_.aspectRatio),this.crossOrigin(this.options_.crossOrigin||this.options_.crossorigin);var n,a,o=t.getElementsByTagName("a");for(let e=0;e{this.on(["playerreset","resize"],this.boundUpdateStyleEl_)},_t(e)?t():(e.eventedCallbacks||(e.eventedCallbacks=[]),e.eventedCallbacks.push(t))):this.removeClass("vjs-fluid"),this.updateStyleEl_()}fill(e){if(void 0===e)return!!this.fill_;this.fill_=!!e,e?(this.addClass("vjs-fill"),this.fluid(!1)):this.removeClass("vjs-fill")}aspectRatio(e){if(void 0===e)return this.aspectRatio_;if(!/^\d+\:\d+$/.test(e))throw new Error("Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.");this.aspectRatio_=e,this.fluid(!0),this.updateStyleEl_()}updateStyleEl_(){if(!0===window.VIDEOJS_NO_DYNAMIC_STYLE){const e="number"==typeof this.width_?this.width_:this.options_.width,t="number"==typeof this.height_?this.height_:this.options_.height;var r=this.tech_&&this.tech_.el();void(r&&(0<=e&&(r.width=e),0<=t)&&(r.height=t))}else{let e,t,i,s;r=(i=void 0!==this.aspectRatio_&&"auto"!==this.aspectRatio_?this.aspectRatio_:0{e=a[e];n[e.getterName]=this[e.privateName]}),Object.assign(n,this.options_[i]),Object.assign(n,this.options_[s]),Object.assign(n,this.options_[e.toLowerCase()]),this.tag&&(n.tag=this.tag),t&&t.src===this.cache_.src&&0{this.on(this.tech_,t,e=>this[`handleTech${g(t)}_`](e))}),Object.keys(Jr).forEach(t=>{this.on(this.tech_,t,e=>{0===this.tech_.playbackRate()&&this.tech_.seeking()?this.queuedCallbacks_.push({callback:this[`handleTech${Jr[t]}_`].bind(this),event:e}):this[`handleTech${Jr[t]}_`](e)})}),this.on(this.tech_,"loadstart",e=>this.handleTechLoadStart_(e)),this.on(this.tech_,"sourceset",e=>this.handleTechSourceset_(e)),this.on(this.tech_,"waiting",e=>this.handleTechWaiting_(e)),this.on(this.tech_,"ended",e=>this.handleTechEnded_(e)),this.on(this.tech_,"seeking",e=>this.handleTechSeeking_(e)),this.on(this.tech_,"play",e=>this.handleTechPlay_(e)),this.on(this.tech_,"pause",e=>this.handleTechPause_(e)),this.on(this.tech_,"durationchange",e=>this.handleTechDurationChange_(e)),this.on(this.tech_,"fullscreenchange",(e,t)=>this.handleTechFullscreenChange_(e,t)),this.on(this.tech_,"fullscreenerror",(e,t)=>this.handleTechFullscreenError_(e,t)),this.on(this.tech_,"enterpictureinpicture",e=>this.handleTechEnterPictureInPicture_(e)),this.on(this.tech_,"leavepictureinpicture",e=>this.handleTechLeavePictureInPicture_(e)),this.on(this.tech_,"error",e=>this.handleTechError_(e)),this.on(this.tech_,"posterchange",e=>this.handleTechPosterChange_(e)),this.on(this.tech_,"textdata",e=>this.handleTechTextData_(e)),this.on(this.tech_,"ratechange",e=>this.handleTechRateChange_(e)),this.on(this.tech_,"loadedmetadata",this.boundUpdateStyleEl_),this.usingNativeControls(this.techGet_("controls")),this.controls()&&!this.usingNativeControls()&&this.addTechControlsListeners_(),this.tech_.el().parentNode===this.el()||"Html5"===i&&this.tag||we(this.tech_.el(),this.el()),this.tag&&(this.tag.player=null,this.tag=null)}unloadTech_(){a.names.forEach(e=>{e=a[e];this[e.privateName]=this[e.getterName]()}),this.textTracksJson_=Xt(this.tech_),this.isReady_=!1,this.tech_.dispose(),this.tech_=!1,this.isPosterFromTech_&&(this.poster_="",this.trigger("posterchange")),this.isPosterFromTech_=!1}tech(e){return void 0===e&&d.warn("Using the tech directly can be dangerous. I hope you know what you're doing.\nSee https://github.com/videojs/video.js/issues/2617 for more info.\n"),this.tech_}addTechControlsListeners_(){this.removeTechControlsListeners_(),this.on(this.tech_,"click",this.boundHandleTechClick_),this.on(this.tech_,"dblclick",this.boundHandleTechDoubleClick_),this.on(this.tech_,"touchstart",this.boundHandleTechTouchStart_),this.on(this.tech_,"touchmove",this.boundHandleTechTouchMove_),this.on(this.tech_,"touchend",this.boundHandleTechTouchEnd_),this.on(this.tech_,"tap",this.boundHandleTechTap_)}removeTechControlsListeners_(){this.off(this.tech_,"tap",this.boundHandleTechTap_),this.off(this.tech_,"touchstart",this.boundHandleTechTouchStart_),this.off(this.tech_,"touchmove",this.boundHandleTechTouchMove_),this.off(this.tech_,"touchend",this.boundHandleTechTouchEnd_),this.off(this.tech_,"click",this.boundHandleTechClick_),this.off(this.tech_,"dblclick",this.boundHandleTechDoubleClick_)}handleTechReady_(){this.triggerReady(),this.cache_.volume&&this.techCall_("setVolume",this.cache_.volume),this.handleTechPosterChange_(),this.handleTechDurationChange_()}handleTechLoadStart_(){this.removeClass("vjs-ended","vjs-seeking"),this.error(null),this.handleTechDurationChange_(),this.paused()&&this.hasStarted(!1),this.trigger("loadstart"),this.manualAutoplay_(!0===this.autoplay()&&this.options_.normalizeAutoplay?"play":this.autoplay())}manualAutoplay_(t){if(this.tech_&&"string"==typeof t){var i=()=>{const e=this.muted(),t=(this.muted(!0),()=>{this.muted(e)});this.playTerminatedQueue_.push(t);var i=this.play();if(Wt(i))return i.catch(e=>{throw t(),new Error("Rejection at manualAutoplay. Restoring muted value. "+(e||""))})};let e;if("any"!==t||this.muted()?e="muted"!==t||this.muted()?this.play():i():Wt(e=this.play())&&(e=e.catch(i)),Wt(e))return e.then(()=>{this.trigger({type:"autoplay-success",autoplay:t})}).catch(()=>{this.trigger({type:"autoplay-failure",autoplay:t})})}}updateSourceCaches_(e=""){let t=e,i="";"string"!=typeof t&&(t=e.src,i=e.type),this.cache_.source=this.cache_.source||{},this.cache_.sources=this.cache_.sources||[],t&&!i&&(i=((e,t)=>{if(!t)return"";if(e.cache_.source.src===t&&e.cache_.source.type)return e.cache_.source.type;var i=e.cache_.sources.filter(e=>e.src===t);if(i.length)return i[0].type;var s=e.$$("source");for(let e=0;ee.src&&e.src===t),s=[],r=this.$$("source"),n=[];for(let e=0;ethis.updateSourceCaches_(e);var i=this.currentSource().src,s=t.src;(e=!i||/^blob:/.test(i)||!/^blob:/.test(s)||this.lastSource_&&(this.lastSource_.tech===s||this.lastSource_.player===i)?e:()=>{})(s),t.src||this.tech_.any(["sourceset","loadstart"],e=>{"sourceset"!==e.type&&(e=this.techGet("currentSrc"),this.lastSource_.tech=e,this.updateSourceCaches_(e))})}this.lastSource_={player:this.currentSource().src,tech:t.src},this.trigger({src:t.src,type:"sourceset"})}hasStarted(e){if(void 0===e)return this.hasStarted_;e!==this.hasStarted_&&(this.hasStarted_=e,this.hasStarted_?this.addClass("vjs-has-started"):this.removeClass("vjs-has-started"))}handleTechPlay_(){this.removeClass("vjs-ended","vjs-paused"),this.addClass("vjs-playing"),this.hasStarted(!0),this.trigger("play")}handleTechRateChange_(){0e.callback(e.event)),this.queuedCallbacks_=[]),this.cache_.lastPlaybackRate=this.tech_.playbackRate(),this.trigger("ratechange")}handleTechWaiting_(){this.addClass("vjs-waiting"),this.trigger("waiting");const e=this.currentTime(),t=()=>{e!==this.currentTime()&&(this.removeClass("vjs-waiting"),this.off("timeupdate",t))};this.on("timeupdate",t)}handleTechCanPlay_(){this.removeClass("vjs-waiting"),this.trigger("canplay")}handleTechCanPlayThrough_(){this.removeClass("vjs-waiting"),this.trigger("canplaythrough")}handleTechPlaying_(){this.removeClass("vjs-waiting"),this.trigger("playing")}handleTechSeeking_(){this.addClass("vjs-seeking"),this.trigger("seeking")}handleTechSeeked_(){this.removeClass("vjs-seeking","vjs-ended"),this.trigger("seeked")}handleTechPause_(){this.removeClass("vjs-playing"),this.addClass("vjs-paused"),this.trigger("pause")}handleTechEnded_(){this.addClass("vjs-ended"),this.removeClass("vjs-waiting"),this.options_.loop?(this.currentTime(0),this.play()):this.paused()||this.pause(),this.trigger("ended")}handleTechDurationChange_(){this.duration(this.techGet_("duration"))}handleTechClick_(e){!this.controls_||void 0!==this.options_&&void 0!==this.options_.userActions&&void 0!==this.options_.userActions.click&&!1===this.options_.userActions.click||(void 0!==this.options_&&void 0!==this.options_.userActions&&"function"==typeof this.options_.userActions.click?this.options_.userActions.click.call(this,e):this.paused()?Gt(this.play()):this.pause())}handleTechDoubleClick_(t){!this.controls_||Array.prototype.some.call(this.$$(".vjs-control-bar, .vjs-modal-dialog"),e=>e.contains(t.target))||void 0!==this.options_&&void 0!==this.options_.userActions&&void 0!==this.options_.userActions.doubleClick&&!1===this.options_.userActions.doubleClick||(void 0!==this.options_&&void 0!==this.options_.userActions&&"function"==typeof this.options_.userActions.doubleClick?this.options_.userActions.doubleClick.call(this,t):this.isFullscreen()?this.exitFullscreen():this.requestFullscreen())}handleTechTap_(){this.userActive(!this.userActive())}handleTechTouchStart_(){this.userWasActive=this.userActive()}handleTechTouchMove_(){this.userWasActive&&this.reportUserActivity()}handleTechTouchEnd_(e){e.cancelable&&e.preventDefault()}toggleFullscreenClass_(){this.isFullscreen()?this.addClass("vjs-fullscreen"):this.removeClass("vjs-fullscreen")}documentFullscreenChange_(t){t=t.target.player;if(!t||t===this){t=this.el();let e=document[this.fsApi_.fullscreenElement]===t;!e&&t.matches?e=t.matches(":"+this.fsApi_.fullscreen):!e&&t.msMatchesSelector&&(e=t.msMatchesSelector(":"+this.fsApi_.fullscreen)),this.isFullscreen(e)}}handleTechFullscreenChange_(e,t){t&&(t.nativeIOSFullscreen&&(this.addClass("vjs-ios-native-fs"),this.tech_.one("webkitendfullscreen",()=>{this.removeClass("vjs-ios-native-fs")})),this.isFullscreen(t.isFullscreen))}handleTechFullscreenError_(e,t){this.trigger("fullscreenerror",t)}togglePictureInPictureClass_(){this.isInPictureInPicture()?this.addClass("vjs-picture-in-picture"):this.removeClass("vjs-picture-in-picture")}handleTechEnterPictureInPicture_(e){this.isInPictureInPicture(!0)}handleTechLeavePictureInPicture_(e){this.isInPictureInPicture(!1)}handleTechError_(){var e=this.tech_.error();this.error(e)}handleTechTextData_(){let e=1{this.play_(e)})}play_(e=Gt){this.playCallbacks_.push(e);var t,e=Boolean(!this.changingSrc_&&(this.src()||this.currentSrc())),i=Boolean(fe||u);this.waitToPlay_&&(this.off(["ready","loadstart"],this.waitToPlay_),this.waitToPlay_=null),this.isReady_&&e?(t=this.techGet_("play"),i&&this.hasClass("vjs-ended")&&this.resetProgressBar_(),null===t?this.runPlayTerminatedQueue_():this.runPlayCallbacks_(t)):(this.waitToPlay_=e=>{this.play_()},this.one(["ready","loadstart"],this.waitToPlay_),!e&&i&&this.load())}runPlayTerminatedQueue_(){var e=this.playTerminatedQueue_.slice(0);this.playTerminatedQueue_=[],e.forEach(function(e){e()})}runPlayCallbacks_(t){var e=this.playCallbacks_.slice(0);this.playCallbacks_=[],this.playTerminatedQueue_=[],e.forEach(function(e){e(t)})}pause(){this.techCall_("pause")}paused(){return!1!==this.techGet_("paused")}played(){return this.techGet_("played")||Rt(0,0)}scrubbing(e){if("undefined"==typeof e)return this.scrubbing_;this.scrubbing_=!!e,this.techCall_("setScrubbing",this.scrubbing_),e?this.addClass("vjs-scrubbing"):this.removeClass("vjs-scrubbing")}currentTime(e){return"undefined"!=typeof e?(e<0&&(e=0),this.isReady_&&!this.changingSrc_&&this.tech_&&this.tech_.isReady_?(this.techCall_("setCurrentTime",e),void(this.cache_.initTime=0)):(this.cache_.initTime=e,this.off("canplay",this.boundApplyInitTime_),void this.one("canplay",this.boundApplyInitTime_))):(this.cache_.currentTime=this.techGet_("currentTime")||0,this.cache_.currentTime)}applyInitTime_(){this.currentTime(this.cache_.initTime)}duration(e){if(void 0===e)return void 0!==this.cache_.duration?this.cache_.duration:NaN;(e=(e=parseFloat(e))<0?1/0:e)!==this.cache_.duration&&((this.cache_.duration=e)===1/0?this.addClass("vjs-live"):this.removeClass("vjs-live"),isNaN(e)||this.trigger("durationchange"))}remainingTime(){return this.duration()-this.currentTime()}remainingTimeDisplay(){return Math.floor(this.duration())-Math.floor(this.currentTime())}buffered(){let e=this.techGet_("buffered");return e=e&&e.length?e:Rt(0,0)}bufferedPercent(){return Vt(this.buffered(),this.duration())}bufferedEnd(){var e=this.buffered(),t=this.duration();let i=e.end(e.length-1);return i=i>t?t:i}volume(e){let t;if(void 0===e)return t=parseFloat(this.techGet_("volume")),isNaN(t)?1:t;t=Math.max(0,Math.min(1,parseFloat(e))),this.cache_.volume=t,this.techCall_("setVolume",t),0{function s(){o.off("fullscreenerror",r),o.off("fullscreenchange",t)}function t(){s(),e()}function r(e,t){s(),i(t)}o.one("fullscreenchange",t),o.one("fullscreenerror",r);var n=o.requestFullscreenHelper_(a);n&&(n.then(s,s),n.then(e,i))})}requestFullscreenHelper_(e){let t;if(this.fsApi_.prefixed||(t=this.options_.fullscreen&&this.options_.fullscreen.options||{},void 0!==e&&(t=e)),this.fsApi_.requestFullscreen)return(e=this.el_[this.fsApi_.requestFullscreen](t))&&e.then(()=>this.isFullscreen(!0),()=>this.isFullscreen(!1)),e;this.tech_.supportsFullScreen()&&!0==!this.options_.preferFullWindow?this.techCall_("enterFullScreen"):this.enterFullWindow()}exitFullscreen(){const a=this;return new Promise((e,i)=>{function s(){a.off("fullscreenerror",r),a.off("fullscreenchange",t)}function t(){s(),e()}function r(e,t){s(),i(t)}a.one("fullscreenchange",t),a.one("fullscreenerror",r);var n=a.exitFullscreenHelper_();n&&(n.then(s,s),n.then(e,i))})}exitFullscreenHelper_(){var e;if(this.fsApi_.requestFullscreen)return(e=document[this.fsApi_.exitFullscreen]())&&Gt(e.then(()=>this.isFullscreen(!1))),e;this.tech_.supportsFullScreen()&&!0==!this.options_.preferFullWindow?this.techCall_("exitFullScreen"):this.exitFullWindow()}enterFullWindow(){this.isFullscreen(!0),this.isFullWindow=!0,this.docOrigOverflow=document.documentElement.style.overflow,ot(document,"keydown",this.boundFullWindowOnEscKey_),document.documentElement.style.overflow="hidden",ke(document.body,"vjs-full-window"),this.trigger("enterFullWindow")}fullWindowOnEscKey(e){r.isEventKey(e,"Esc")&&!0===this.isFullscreen()&&(this.isFullWindow?this.exitFullWindow():this.exitFullscreen())}exitFullWindow(){this.isFullscreen(!1),this.isFullWindow=!1,p(document,"keydown",this.boundFullWindowOnEscKey_),document.documentElement.style.overflow=this.docOrigOverflow,Ce(document.body,"vjs-full-window"),this.trigger("exitFullWindow")}disablePictureInPicture(e){if(void 0===e)return this.techGet_("disablePictureInPicture");this.techCall_("setDisablePictureInPicture",e),this.options_.disablePictureInPicture=e,this.trigger("disablepictureinpicturechanged")}isInPictureInPicture(e){if(void 0===e)return!!this.isInPictureInPicture_;this.isInPictureInPicture_=!!e,this.togglePictureInPictureClass_()}requestPictureInPicture(){if(this.options_.enableDocumentPictureInPicture&&window.documentPictureInPicture){const t=document.createElement(this.el().tagName);return t.classList=this.el().classList,t.classList.add("vjs-pip-container"),this.posterImage&&t.appendChild(this.posterImage.el().cloneNode(!0)),this.titleBar&&t.appendChild(this.titleBar.el().cloneNode(!0)),t.appendChild(o("p",{className:"vjs-pip-text"},{},this.localize("Playing in picture-in-picture"))),window.documentPictureInPicture.requestWindow({initialAspectRatio:this.videoWidth()/this.videoHeight(),copyStyleSheets:!0}).then(e=>(this.el_.parentNode.insertBefore(t,this.el_),e.document.body.append(this.el_),e.document.body.classList.add("vjs-pip-window"),this.player_.isInPictureInPicture(!0),this.player_.trigger("enterpictureinpicture"),e.addEventListener("unload",e=>{e=e.target.querySelector(".video-js");t.replaceWith(e),this.player_.isInPictureInPicture(!1),this.player_.trigger("leavepictureinpicture")}),e))}return"pictureInPictureEnabled"in document&&!1===this.disablePictureInPicture()?this.techGet_("requestPictureInPicture"):Promise.reject("No PiP mode is available")}exitPictureInPicture(){return window.documentPictureInPicture&&window.documentPictureInPicture.window?(window.documentPictureInPicture.window.close(),Promise.resolve()):"pictureInPictureEnabled"in document?document.exitPictureInPicture():void 0}handleKeyDown(e){var t,i,s=this.options_["userActions"];s&&s.hotkeys&&(t=this.el_.ownerDocument.activeElement,i=t.tagName.toLowerCase(),t.isContentEditable||("input"===i?-1===["button","checkbox","hidden","radio","reset","submit"].indexOf(t.type):-1!==["textarea"].indexOf(i))||("function"==typeof s.hotkeys?s.hotkeys.call(this,e):this.handleHotkeys(e)))}handleHotkeys(e){var{fullscreenKey:t=e=>r.isEventKey(e,"f"),muteKey:i=e=>r.isEventKey(e,"m"),playPauseKey:s=e=>r.isEventKey(e,"k")||r.isEventKey(e,"Space")}=this.options_.userActions?this.options_.userActions.hotkeys:{};t.call(this,e)?(e.preventDefault(),e.stopPropagation(),t=f.getComponent("FullscreenToggle"),!1!==document[this.fsApi_.fullscreenEnabled]&&t.prototype.handleClick.call(this,e)):i.call(this,e)?(e.preventDefault(),e.stopPropagation(),f.getComponent("MuteToggle").prototype.handleClick.call(this,e)):s.call(this,e)&&(e.preventDefault(),e.stopPropagation(),f.getComponent("PlayToggle").prototype.handleClick.call(this,e))}canPlayType(s){var r;for(let t=0,i=this.options_.techOrder;ti.some(e=>{if(r=s(t,e))return!0})),r}var i=this.options_.techOrder.map(e=>[e,_.getTech(e)]).filter(([e,t])=>t?t.isSupported():(d.error(`The "${e}" tech is undefined. Skipped browser support check for that tech.`),!1));let s;var r,n=([e,t],i)=>{if(t.canPlaySource(i,this.options_[e.toLowerCase()]))return{source:i,tech:e}};return(s=this.options_.sourceOrder?t(e,i,(r=n,(e,t)=>r(t,e))):t(i,e,n))||!1}handleSrc_(e,s){if("undefined"==typeof e)return this.cache_.src||"";this.resetRetryOnError_&&this.resetRetryOnError_();const r=bs(e);if(r.length){if(this.changingSrc_=!0,s||(this.cache_.sources=r),this.updateSourceCaches_(r[0]),ps(this,r[0],(e,t)=>{var i;if(this.middleware_=t,s||(this.cache_.sources=r),this.updateSourceCaches_(e),this.src_(e))return 1e.setTech&&e.setTech(i))}),1{this.error(null),this.handleSrc_(r.slice(1),!0)},i=()=>{this.off("error",t)};this.one("error",t),this.one("playing",i),this.resetRetryOnError_=()=>{this.off("error",t),this.off("playing",i)}}}else this.setTimeout(function(){this.error({code:4,message:this.options_.notSupportedMessage})},0)}src(e){return this.handleSrc_(e,!1)}src_(e){var t=this.selectSource([e]);return!t||(Pt(t.tech,this.techName_)?this.ready(function(){this.tech_.constructor.prototype.hasOwnProperty("setSource")?this.techCall_("setSource",e):this.techCall_("src",e.src),this.changingSrc_=!1},!0):(this.changingSrc_=!0,this.loadTech_(t.tech,t.source),this.tech_.ready(()=>{this.changingSrc_=!1})),!1)}load(){this.techCall_("load")}reset(){this.paused()?this.doReset_():Gt(this.play().then(()=>this.doReset_()))}doReset_(){this.tech_&&this.tech_.clearTracks("text"),this.resetCache_(),this.poster(""),this.loadTech_(this.options_.techOrder[0],null),this.techCall_("reset"),this.resetControlBarUI_(),_t(this)&&this.trigger("playerreset")}resetControlBarUI_(){this.resetProgressBar_(),this.resetPlaybackRate_(),this.resetVolumeBar_()}resetProgressBar_(){this.currentTime(0);var{currentTimeDisplay:e,durationDisplay:t,progressControl:i,remainingTimeDisplay:s}=this.controlBar||{},i=(i||{})["seekBar"];e&&e.updateContent(),t&&t.updateContent(),s&&s.updateContent(),i&&(i.update(),i.loadProgressBar)&&i.loadProgressBar.update()}resetPlaybackRate_(){this.playbackRate(this.defaultPlaybackRate()),this.handleTechRateChange_()}resetVolumeBar_(){this.volume(1),this.trigger("volumechange")}currentSources(){var e=this.currentSource(),t=[];return 0!==Object.keys(e).length&&t.push(e),this.cache_.sources||t}currentSource(){return this.cache_.source||{}}currentSrc(){return this.currentSource()&&this.currentSource().src||""}currentType(){return this.currentSource()&&this.currentSource().type||""}preload(e){if(void 0===e)return this.techGet_("preload");this.techCall_("setPreload",e),this.options_.preload=e}autoplay(e){if(void 0===e)return this.options_.autoplay||!1;let t;"string"==typeof e&&/(any|play|muted)/.test(e)||!0===e&&this.options_.normalizeAutoplay?(this.options_.autoplay=e,this.manualAutoplay_("string"==typeof e?e:"play"),t=!1):this.options_.autoplay=!!e,t="undefined"==typeof t?this.options_.autoplay:t,this.tech_&&this.techCall_("setAutoplay",t)}playsinline(e){return void 0!==e?(this.techCall_("setPlaysinline",e),this.options_.playsinline=e,this):this.techGet_("playsinline")}loop(e){if(void 0===e)return this.techGet_("loop");this.techCall_("setLoop",e),this.options_.loop=e}poster(e){if(void 0===e)return this.poster_;(e=e||"")!==this.poster_&&(this.poster_=e,this.techCall_("setPoster",e),this.isPosterFromTech_=!1,this.trigger("posterchange"))}handleTechPosterChange_(){var e;(!this.poster_||this.options_.techCanOverridePoster)&&this.tech_&&this.tech_.poster&&(e=this.tech_.poster()||"")!==this.poster_&&(this.poster_=e,this.isPosterFromTech_=!0,this.trigger("posterchange"))}controls(e){if(void 0===e)return!!this.controls_;this.controls_!==(e=!!e)&&(this.controls_=e,this.usingNativeControls()&&this.techCall_("setControls",e),this.controls_?(this.removeClass("vjs-controls-disabled"),this.addClass("vjs-controls-enabled"),this.trigger("controlsenabled"),this.usingNativeControls()||this.addTechControlsListeners_()):(this.removeClass("vjs-controls-enabled"),this.addClass("vjs-controls-disabled"),this.trigger("controlsdisabled"),this.usingNativeControls()||this.removeTechControlsListeners_()))}usingNativeControls(e){if(void 0===e)return!!this.usingNativeControls_;this.usingNativeControls_!==(e=!!e)&&(this.usingNativeControls_=e,this.usingNativeControls_?(this.addClass("vjs-using-native-controls"),this.trigger("usingnativecontrols")):(this.removeClass("vjs-using-native-controls"),this.trigger("usingcustomcontrols")))}error(t){if(void 0===t)return this.error_||null;if(B("beforeerror").forEach(e=>{e=e(this,t);K(e)&&!Array.isArray(e)||"string"==typeof e||"number"==typeof e||null===e?t=e:this.log.error("please return a value that MediaError expects in beforeerror hooks")}),this.options_.suppressNotSupportedError&&t&&4===t.code){const e=function(){this.error(t)};this.options_.suppressNotSupportedError=!1,this.any(["click","touchstart"],e),void this.one("loadstart",function(){this.off(["click","touchstart"],e)})}else null===t?(this.error_=t,this.removeClass("vjs-error"),this.errorDisplay&&this.errorDisplay.close()):(this.error_=new i(t),this.addClass("vjs-error"),d.error(`(CODE:${this.error_.code} ${i.errorTypes[this.error_.code]})`,this.error_.message,this.error_),this.trigger("error"),B("error").forEach(e=>e(this,this.error_)))}reportUserActivity(e){this.userActivity_=!0}userActive(e){if(void 0===e)return this.userActive_;(e=!!e)!==this.userActive_&&(this.userActive_=e,this.userActive_?(this.userActivity_=!0,this.removeClass("vjs-user-inactive"),this.addClass("vjs-user-active"),this.trigger("useractive")):(this.tech_&&this.tech_.one("mousemove",function(e){e.stopPropagation(),e.preventDefault()}),this.userActivity_=!1,this.removeClass("vjs-user-active"),this.addClass("vjs-user-inactive"),this.trigger("userinactive")))}listenForUserActivity_(){let t,i,s;const r=m(this,this.reportUserActivity);function e(e){r(),this.clearInterval(t)}this.on("mousedown",function(){r(),this.clearInterval(t),t=this.setInterval(r,250)}),this.on("mousemove",function(e){e.screenX===i&&e.screenY===s||(i=e.screenX,s=e.screenY,r())}),this.on("mouseup",e),this.on("mouseleave",e);var n=this.getChild("controlBar");!n||u||te||(n.on("mouseenter",function(e){0!==this.player().options_.inactivityTimeout&&(this.player().cache_.inactivityTimeout=this.player().options_.inactivityTimeout),this.player().options_.inactivityTimeout=0}),n.on("mouseleave",function(e){this.player().options_.inactivityTimeout=this.player().cache_.inactivityTimeout})),this.on("keydown",r),this.on("keyup",r);let a;this.setInterval(function(){var e;this.userActivity_&&(this.userActivity_=!1,this.userActive(!0),this.clearTimeout(a),(e=this.options_.inactivityTimeout)<=0||(a=this.setTimeout(function(){this.userActivity_||this.userActive(!1)},e)))},250)}playbackRate(e){if(void 0===e)return this.tech_&&this.tech_.featuresPlaybackRate?this.cache_.lastPlaybackRate||this.techGet_("playbackRate"):1;this.techCall_("setPlaybackRate",e)}defaultPlaybackRate(e){return void 0!==e?this.techCall_("setDefaultPlaybackRate",e):this.tech_&&this.tech_.featuresPlaybackRate?this.techGet_("defaultPlaybackRate"):1}isAudio(e){if(void 0===e)return!!this.isAudio_;this.isAudio_=!!e}enableAudioOnlyUI_(){this.addClass("vjs-audio-only-mode");var e=this.children();const t=this.getChild("ControlBar");var i=t&&t.currentHeight();e.forEach(e=>{e!==t&&e.el_&&!e.hasClass("vjs-hidden")&&(e.hide(),this.audioOnlyCache_.hiddenChildren.push(e))}),this.audioOnlyCache_.playerHeight=this.currentHeight(),this.height(i),this.trigger("audioonlymodechange")}disableAudioOnlyUI_(){this.removeClass("vjs-audio-only-mode"),this.audioOnlyCache_.hiddenChildren.forEach(e=>e.show()),this.height(this.audioOnlyCache_.playerHeight),this.trigger("audioonlymodechange")}audioOnlyMode(e){return"boolean"!=typeof e||e===this.audioOnlyMode_?this.audioOnlyMode_:(this.audioOnlyMode_=e)?(e=[],this.isInPictureInPicture()&&e.push(this.exitPictureInPicture()),this.isFullscreen()&&e.push(this.exitFullscreen()),this.audioPosterMode()&&e.push(this.audioPosterMode(!1)),Promise.all(e).then(()=>this.enableAudioOnlyUI_())):Promise.resolve().then(()=>this.disableAudioOnlyUI_())}enablePosterModeUI_(){(this.tech_&&this.tech_).hide(),this.addClass("vjs-audio-poster-mode"),this.trigger("audiopostermodechange")}disablePosterModeUI_(){(this.tech_&&this.tech_).show(),this.removeClass("vjs-audio-poster-mode"),this.trigger("audiopostermodechange")}audioPosterMode(e){return"boolean"!=typeof e||e===this.audioPosterMode_?this.audioPosterMode_:(this.audioPosterMode_=e)?(this.audioOnlyMode()?this.audioOnlyMode(!1):Promise.resolve()).then(()=>{this.enablePosterModeUI_()}):Promise.resolve().then(()=>{this.disablePosterModeUI_()})}addTextTrack(e,t,i){if(this.tech_)return this.tech_.addTextTrack(e,t,i)}addRemoteTextTrack(e,t){if(this.tech_)return this.tech_.addRemoteTextTrack(e,t)}removeRemoteTextTrack(e={}){let t=e["track"];if(t=t||e,this.tech_)return this.tech_.removeRemoteTextTrack(t)}getVideoPlaybackQuality(){return this.techGet_("getVideoPlaybackQuality")}videoWidth(){return this.tech_&&this.tech_.videoWidth&&this.tech_.videoWidth()||0}videoHeight(){return this.tech_&&this.tech_.videoHeight&&this.tech_.videoHeight()||0}language(e){if(void 0===e)return this.language_;this.language_!==String(e).toLowerCase()&&(this.language_=String(e).toLowerCase(),_t(this))&&this.trigger("languagechange")}languages(){return h(b.prototype.options_.languages,this.languages_)}toJSON(){var t=h(this.options_),i=t.tracks;t.tracks=[];for(let e=0;e{this.removeChild(i)}),i.open(),i}updateCurrentBreakpoint_(){if(this.responsive()){var t=this.currentBreakpoint(),i=this.currentWidth();for(let e=0;ethis.addRemoteTextTrack(e,!1)),this.titleBar&&this.titleBar.update({title:o,description:s||e||""}),this.ready(t))}getMedia(){var e,t;return this.cache_.media?h(this.cache_.media):(e=this.poster(),t={src:this.currentSources(),textTracks:Array.prototype.map.call(this.remoteTextTracks(),e=>({kind:e.kind,label:e.label,language:e.language,src:e.src}))},e&&(t.poster=e,t.artwork=[{src:t.poster,type:Ss(t.poster)}]),t)}static getTagSettings(e){var t,i={sources:[],tracks:[]},s=Ae(e),r=s["data-setup"];if(Ee(e,"vjs-fill")&&(s.fill=!0),Ee(e,"vjs-fluid")&&(s.fluid=!0),null!==r&&([r,t]=$t(r||"{}"),r&&d.error(r),Object.assign(s,t)),Object.assign(i,s),e.hasChildNodes()){var n=e.childNodes;for(let e=0,t=n.length;e"number"==typeof e)&&(this.cache_.playbackRates=e,this.trigger("playbackrateschange"))}}a.names.forEach(function(e){const t=a[e];b.prototype[t.getterName]=function(){return this.tech_?this.tech_[t.getterName]():(this[t.privateName]=this[t.privateName]||new t.ListClass,this[t.privateName])}}),b.prototype.crossorigin=b.prototype.crossOrigin,b.players={};Dr=window.navigator;b.prototype.options_={techOrder:_.defaultTechOrder_,html5:{},enableSourceset:!0,inactivityTimeout:2e3,playbackRates:[],liveui:!1,children:["mediaLoader","posterImage","titleBar","textTrackDisplay","loadingSpinner","bigPlayButton","liveTracker","controlBar","errorDisplay","textTrackSettings","resizeManager"],language:Dr&&(Dr.languages&&Dr.languages[0]||Dr.userLanguage||Dr.language)||"en",languages:{},notSupportedMessage:"No compatible source was found for this media.",normalizeAutoplay:!1,fullscreen:{options:{navigationUI:"hide"}},breakpoints:{},responsive:!1,audioOnlyMode:!1,audioPosterMode:!1},["ended","seeking","seekable","networkState","readyState"].forEach(function(e){b.prototype[e]=function(){return this.techGet_(e)}}),Qr.forEach(function(e){b.prototype[`handleTech${g(e)}_`]=function(){return this.trigger(e)}}),f.registerComponent("Player",b);function sn(t,i){function s(){hn(this,{name:t,plugin:i,instance:null},!0);var e=i.apply(this,arguments);return dn(this,t),hn(this,{name:t,plugin:i,instance:e}),e}return Object.keys(i).forEach(function(e){s[e]=i[e]}),s}const rn="plugin",nn="activePlugins_",an={},on=e=>an.hasOwnProperty(e),ln=e=>on(e)?an[e]:void 0,dn=(e,t)=>{e[nn]=e[nn]||{},e[nn][t]=!0},hn=(e,t,i)=>{i=(i?"before":"")+"pluginsetup";e.trigger(i,t),e.trigger(i+":"+t.name,t)},un=(i,s)=>(s.prototype.name=i,function(...e){hn(this,{name:i,plugin:s,instance:null},!0);const t=new s(this,...e);return this[i]=()=>t,hn(this,t.getEventHash()),t});class cn{constructor(e){if(this.constructor===cn)throw new Error("Plugin must be sub-classed; not directly instantiated.");this.player=e,this.log||(this.log=this.player.log.createLogger(this.name)),Ct(this),delete this.trigger,xt(this,this.constructor.defaultState),dn(e,this.name),this.dispose=this.dispose.bind(this),e.on("dispose",this.dispose)}version(){return this.constructor.VERSION}getEventHash(e={}){return e.name=this.name,e.plugin=this.constructor,e.instance=this,e}trigger(e,t={}){return lt(this.eventBusEl_,e,this.getEventHash(t))}handleStateChanged(e){}dispose(){var{name:e,player:t}=this;this.trigger("dispose"),this.off(),t.off("dispose",this.dispose),t[nn][e]=!1,this.player=this.state=null,t[e]=un(e,an[e])}static isBasic(e){e="string"==typeof e?ln(e):e;return"function"==typeof e&&!cn.prototype.isPrototypeOf(e.prototype)}static registerPlugin(e,t){if("string"!=typeof e)throw new Error(`Illegal plugin name, "${e}", must be a string, was ${typeof e}.`);if(on(e))d.warn(`A plugin named "${e}" already exists. You may want to avoid re-registering plugins!`);else if(b.prototype.hasOwnProperty(e))throw new Error(`Illegal plugin name, "${e}", cannot share a name with an existing player method!`);if("function"!=typeof t)throw new Error(`Illegal plugin for "${e}", must be a function, was ${typeof t}.`);return an[e]=t,e!==rn&&(cn.isBasic(t)?b.prototype[e]=sn(e,t):b.prototype[e]=un(e,t)),t}static deregisterPlugin(e){if(e===rn)throw new Error("Cannot de-register base plugin.");on(e)&&(delete an[e],delete b.prototype[e])}static getPlugins(e=Object.keys(an)){let i;return e.forEach(e=>{var t=ln(e);t&&((i=i||{})[e]=t)}),i}static getPluginVersion(e){e=ln(e);return e&&e.VERSION||""}}function pn(e,i,s,r){{var n=i+` is deprecated and will be removed in ${e}.0; please use ${s} instead.`,a=r;let t=!1;return function(...e){return t||d.warn(n),t=!0,a.apply(this,e)}}}cn.getPlugin=ln,cn.BASE_PLUGIN_NAME=rn,cn.registerPlugin(rn,cn),b.prototype.usingPlugin=function(e){return!!this[nn]&&!0===this[nn][e]},b.prototype.hasPlugin=function(e){return!!on(e)};const mn=e=>0===e.indexOf("#")?e.slice(1):e;function T(e,t,i){let s=T.getPlayer(e);if(s)t&&d.warn(`Player "${e}" is already initialised. Options will not be applied.`),i&&s.ready(i);else{const r="string"==typeof e?$e("#"+mn(e)):e;if(!ve(r))throw new TypeError("The element or ID supplied is not valid. (videojs)");r.ownerDocument.defaultView&&r.ownerDocument.body.contains(r)||d.warn("The element supplied is not included in the DOM"),!0===(t=t||{}).restoreEl&&(t.restoreEl=(r.parentNode&&r.parentNode.hasAttribute("data-vjs-player")?r.parentNode:r).cloneNode(!0)),B("beforesetup").forEach(e=>{e=e(r,h(t));!K(e)||Array.isArray(e)?d.error("please return an object in beforesetup hooks"):t=h(t,e)});e=f.getComponent("Player");s=new e(r,t,i),B("setup").forEach(e=>e(s))}return s}T.hooks_=U,T.hooks=B,T.hook=function(e,t){B(e,t)},T.hookOnce=function(s,e){B(s,[].concat(e).map(t=>{const i=(...e)=>(F(s,i),t(...e));return i}))},T.removeHook=F,!0!==window.VIDEOJS_NO_DYNAMIC_STYLE&&_e()&&!(Mi=$e(".vjs-styles-defaults"))&&(Mi=Ze("vjs-styles-defaults"),(Or=$e("head"))&&Or.insertBefore(Mi,Or.firstChild),et(Mi,` + .video-js { + width: 300px; + height: 150px; + } + + .vjs-fluid:not(.vjs-audio-only-mode) { + padding-top: 56.25% + } + `)),Qe(1,T),T.VERSION=R,T.options=b.prototype.options_,T.getPlayers=()=>b.players,T.getPlayer=e=>{var t=b.players;let i;if("string"==typeof e){var s=mn(e),r=t[s];if(r)return r;i=$e("#"+s)}else i=e;if(ve(i)){var{player:r,playerId:s}=i;if(r||t[s])return r||t[s]}},T.getAllPlayers=()=>Object.keys(b.players).map(e=>b.players[e]).filter(Boolean),T.players=b.players,T.getComponent=f.getComponent,T.registerComponent=(e,t)=>{_.isTech(t)&&d.warn(`The ${e} tech was registered as a component. It should instead be registered using videojs.registerTech(name, tech)`),f.registerComponent.call(f,e,t)},T.getTech=_.getTech,T.registerTech=_.registerTech,T.use=function(e,t){hs[e]=hs[e]||[],hs[e].push(t)},Object.defineProperty(T,"middleware",{value:{},writeable:!1,enumerable:!0}),Object.defineProperty(T.middleware,"TERMINATOR",{value:cs,writeable:!1,enumerable:!0}),T.browser=e,T.obj=J,T.mergeOptions=pn(9,"videojs.mergeOptions","videojs.obj.merge",h),T.defineLazyProperty=pn(9,"videojs.defineLazyProperty","videojs.obj.defineLazyProperty",Q),T.bind=pn(9,"videojs.bind","native Function.prototype.bind",m),T.registerPlugin=cn.registerPlugin,T.deregisterPlugin=cn.deregisterPlugin,T.plugin=(e,t)=>(d.warn("videojs.plugin() is deprecated; use videojs.registerPlugin() instead"),cn.registerPlugin(e,t)),T.getPlugins=cn.getPlugins,T.getPlugin=cn.getPlugin,T.getPluginVersion=cn.getPluginVersion,T.addLanguage=function(e,t){return e=(""+e).toLowerCase(),T.options.languages=h(T.options.languages,{[e]:t}),T.options.languages[e]},T.log=d,T.createLogger=W,T.time=qt,T.createTimeRange=pn(9,"videojs.createTimeRange","videojs.time.createTimeRanges",Rt),T.createTimeRanges=pn(9,"videojs.createTimeRanges","videojs.time.createTimeRanges",Rt),T.formatTime=pn(9,"videojs.formatTime","videojs.time.formatTime",Ht),T.setFormatTime=pn(9,"videojs.setFormatTime","videojs.time.setFormatTime",Ft),T.resetFormatTime=pn(9,"videojs.resetFormatTime","videojs.time.resetFormatTime",jt),T.parseUrl=pn(9,"videojs.parseUrl","videojs.url.parseUrl",li),T.isCrossOrigin=pn(9,"videojs.isCrossOrigin","videojs.url.isCrossOrigin",hi),T.EventTarget=ft,T.any=ht,T.on=ot,T.one=dt,T.off=p,T.trigger=lt,T.xhr=bi,T.TextTrack=Ai,T.AudioTrack=Pi,T.VideoTrack=Li,["isEl","isTextNode","createEl","hasClass","addClass","removeClass","toggleClass","setAttributes","getAttributes","emptyEl","appendContent","insertContent"].forEach(e=>{T[e]=function(){return d.warn(`videojs.${e}() is deprecated; use videojs.dom.${e}() instead`),ze[e].apply(null,arguments)}}),T.computedStyle=pn(9,"videojs.computedStyle","videojs.dom.computedStyle",Ge),T.dom=ze,T.fn=mt,T.num=pi,T.str=Lt,T.url=ci,Dt(function(e,t){ +/*! @name videojs-contrib-quality-levels @version 3.0.0 @license Apache-2.0 */ +e.exports=function(e){function t(e){return e&&typeof e==="object"&&"default"in e?e:{default:e}}var i=t(e);class s{constructor(e){let t=this;t.id=e.id;t.label=t.id;t.width=e.width;t.height=e.height;t.bitrate=e.bandwidth;t.frameRate=e.frameRate;t.enabled_=e.enabled;Object.defineProperty(t,"enabled",{get(){return t.enabled_()},set(e){t.enabled_(e)}});return t}}class n extends i["default"].EventTarget{constructor(){super();let e=this;e.levels_=[];e.selectedIndex_=-1;Object.defineProperty(e,"selectedIndex",{get(){return e.selectedIndex_}});Object.defineProperty(e,"length",{get(){return e.levels_.length}});return e}addQualityLevel(e){let t=this.getQualityLevelById(e.id);if(t)return t;const i=this.levels_.length;t=new s(e);if(!(""+i in this))Object.defineProperty(this,i,{get(){return this.levels_[i]}});this.levels_.push(t);this.trigger({qualityLevel:t,type:"addqualitylevel"});return t}removeQualityLevel(i){let s=null;for(let e=0,t=this.length;ee)this.selectedIndex_--;break}if(s)this.trigger({qualityLevel:i,type:"removequalitylevel"});return s}getQualityLevelById(i){for(let e=0,t=this.length;es;e.qualityLevels.VERSION=a;return s},l=function(e){return o(this,i["default"].mergeOptions({},e))};return r("qualityLevels",l),l.VERSION=a,l}(T)});var gn=Dt(function(e,t){var i,n,s,r,a;i=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,n=/^(?=([^\/?#]*))\1([^]*)$/,s=/(?:\/|^)\.(?=\/)/g,r=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,a={buildAbsoluteURL:function(e,t,i){if(i=i||{},e=e.trim(),!(t=t.trim())){if(!i.alwaysNormalize)return e;var s=a.parseURL(e);if(s)return s.path=a.normalizePath(s.path),a.buildURLFromParts(s);throw new Error("Error trying to parse base URL.")}s=a.parseURL(t);if(!s)throw new Error("Error trying to parse relative URL.");if(s.scheme)return i.alwaysNormalize?(s.path=a.normalizePath(s.path),a.buildURLFromParts(s)):t;t=a.parseURL(e);if(!t)throw new Error("Error trying to parse base URL.");!t.netLoc&&t.path&&"/"!==t.path[0]&&(e=n.exec(t.path),t.netLoc=e[1],t.path=e[2]),t.netLoc&&!t.path&&(t.path="/");var r,e={scheme:t.scheme,netLoc:s.netLoc,path:null,params:s.params,query:s.query,fragment:s.fragment};return s.netLoc||(e.netLoc=t.netLoc,"/"!==s.path[0]&&(s.path?(r=(r=t.path).substring(0,r.lastIndexOf("/")+1)+s.path,e.path=a.normalizePath(r)):(e.path=t.path,s.params||(e.params=t.params,s.query)||(e.query=t.query)))),null===e.path&&(e.path=i.alwaysNormalize?a.normalizePath(s.path):s.path),a.buildURLFromParts(e)},parseURL:function(e){e=i.exec(e);return e?{scheme:e[1]||"",netLoc:e[2]||"",path:e[3]||"",params:e[4]||"",query:e[5]||"",fragment:e[6]||""}:null},normalizePath:function(e){for(e=e.split("").reverse().join("").replace(s,"");e.length!==(e=e.replace(r,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},e.exports=a}),fn="http://example.com",Lr=function(){function e(){this.listeners={}}var t=e.prototype;return t.on=function(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)},t.off=function(e,t){return!!this.listeners[e]&&(t=this.listeners[e].indexOf(t),this.listeners[e]=this.listeners[e].slice(0),this.listeners[e].splice(t,1),-1{t=t(i);return t===i?e:e.concat([t])},[i]).forEach(t=>{for(let e=0;ee),this.customParsers.push(e=>{if(t.exec(e))return this.trigger("data",{type:"custom",data:s(e),customType:i,segment:r}),!0})}addTagMapper({expression:t,map:i}){this.tagMappers.push(e=>t.test(e)?i(e):e)}}function wn(t){const i={};return Object.keys(t).forEach(function(e){i[e.toLowerCase().replace(/-(\w)/g,e=>e[1].toUpperCase())]=t[e]}),i}function En(e){var t,i,s,r,n,{serverControl:e,targetDuration:a,partTargetDuration:o}=e;e&&(t="#EXT-X-SERVER-CONTROL",i="holdBack",s="partHoldBack",r=a&&3*a,n=o&&2*o,a&&!e.hasOwnProperty(i)&&(e[i]=r,this.trigger("info",{message:t+` defaulting HOLD-BACK to targetDuration * 3 (${r}).`})),r&&e[i]{a.uri||!a.parts&&!a.preloadHints||(!a.map&&r&&(a.map=r),!a.key&&o&&(a.key=o),a.timeline||"number"!=typeof h||(a.timeline=h),this.manifest.preloadSegment=a)}),this.parseStream.on("data",function(n){let t,i;({tag(){({version(){n.version&&(this.manifest.version=n.version)},"allow-cache"(){this.manifest.allowCache=n.allowed,"allowed"in n||(this.trigger("info",{message:"defaulting allowCache to YES"}),this.manifest.allowCache=!0)},byterange(){var e={};"length"in n&&((a.byterange=e).length=n.length,"offset"in n||(n.offset=u)),"offset"in n&&((a.byterange=e).offset=n.offset),u=e.offset+e.length},endlist(){this.manifest.endList=!0},inf(){"mediaSequence"in this.manifest||(this.manifest.mediaSequence=0,this.trigger("info",{message:"defaulting media sequence to zero"})),"discontinuitySequence"in this.manifest||(this.manifest.discontinuitySequence=0,this.trigger("info",{message:"defaulting discontinuity sequence to zero"})),0{e.hasOwnProperty("lastPart")||this.trigger("warn",{message:`#EXT-X-RENDITION-REPORT #${t} lacks required attribute(s): LAST-PART`})})},"server-control"(){var e=this.manifest.serverControl=wn(n.attributes);e.hasOwnProperty("canBlockReload")||(e.canBlockReload=!1,this.trigger("info",{message:"#EXT-X-SERVER-CONTROL defaulting CAN-BLOCK-RELOAD to false"})),En.call(this,this.manifest),e.canSkipDateranges&&!e.hasOwnProperty("canSkipUntil")&&this.trigger("warn",{message:"#EXT-X-SERVER-CONTROL lacks required attribute CAN-SKIP-UNTIL which is required when CAN-SKIP-DATERANGES is set"})},"preload-hint"(){var t=this.manifest.segments.length,i=wn(n.attributes),e=i.type&&"PART"===i.type,s=(a.preloadHints=a.preloadHints||[],a.preloadHints.push(i),!i.byterange||i.byterange.hasOwnProperty("offset")||(i.byterange.offset=e?c:0,e&&(c=i.byterange.offset+i.byterange.length)),a.preloadHints.length-1);if(this.warnOnMissingAttributes_(`#EXT-X-PRELOAD-HINT #${s} for segment #`+t,n.attributes,["TYPE","URI"]),i.type)for(let e=0;e=e.length&&t.call(e,function(e,t){return e===(n[t]?n[t]&i[r+t]:i[r+t])})},Wn="http://example.com";function Gn(e){e=e;for(var t=window.atob?window.atob(e):Buffer.from(e,"base64").toString("binary"),i=new Uint8Array(t.length),s=0;s"==e&&">")||("&"==e?"&":'"'==e&&""")||"&#"+e.charCodeAt()+";"}function ga(e,t){if(t(e))return 1;if(e=e.firstChild)do{if(ga(e,t))return 1}while(e=e.nextSibling)}function fa(){this.ownerDocument=this}function ya(e,t,i){e&&e._inc++,i.namespaceURI===Jn.XMLNS&&delete t._nsMap[i.prefix?i.localName:""]}function _a(e,t,i){if(e&&e._inc){e._inc++;var s=t.childNodes;if(i)s[s.length++]=i;else{for(var r=t.firstChild,n=0;r;)r=(s[n++]=r).nextSibling;s.length=n,delete s[s.length]}}}function va(e,t){var i=t.previousSibling,s=t.nextSibling;return i?i.nextSibling=s:e.firstChild=s,s?s.previousSibling=i:e.lastChild=i,t.parentNode=null,t.previousSibling=null,t.nextSibling=null,_a(e.ownerDocument,e),t}function ba(e){return e&&e.nodeType===I.DOCUMENT_TYPE_NODE}function Ta(e){return e&&e.nodeType===I.ELEMENT_NODE}function Sa(e){return e&&e.nodeType===I.TEXT_NODE}function wa(e,t){var i,e=e.childNodes||[];if(!Qn(e,Ta)&&!ba(t))return i=Qn(e,ba),!(t&&i&&e.indexOf(i)>e.indexOf(t))}function Ea(e,t){var i,e=e.childNodes||[];if(!Qn(e,function(e){return Ta(e)&&e!==t}))return i=Qn(e,ba),!(t&&i&&e.indexOf(i)>e.indexOf(t))}function ka(e,t,i){if(!(s=e)||s.nodeType!==I.DOCUMENT_NODE&&s.nodeType!==I.DOCUMENT_FRAGMENT_NODE&&s.nodeType!==I.ELEMENT_NODE)throw new C(ra,"Unexpected parent node type "+e.nodeType);var s;if(i&&i.parentNode!==e)throw new C(na,"child not in parent");if(!(s=t)||!(Ta(s)||Sa(s)||ba(s)||s.nodeType===I.DOCUMENT_FRAGMENT_NODE||s.nodeType===I.COMMENT_NODE||s.nodeType===I.PROCESSING_INSTRUCTION_NODE)||ba(t)&&e.nodeType!==I.DOCUMENT_NODE)throw new C(ra,"Unexpected node type "+t.nodeType+" for parent node type "+e.nodeType)}function Ca(e,t,i){var s=e.childNodes||[],r=t.childNodes||[];if(t.nodeType===I.DOCUMENT_FRAGMENT_NODE){var n=r.filter(Ta);if(1"),i&&/^script$/i.test(l))for(;o;)o.data?t.push(o.data):Wa(o,t,i,s,r.slice()),o=o.nextSibling;else for(;o;)Wa(o,t,i,s,r.slice()),o=o.nextSibling;t.push("")}else t.push("/>");return;case 9:case 11:for(o=e.firstChild;o;)Wa(o,t,i,s,r.slice()),o=o.nextSibling;return;case 2:return $a(t,e.name,e.value);case 3:return t.push(e.data.replace(/[<&>]/g,ma));case 4:return t.push("");case 8:return t.push("\x3c!--",e.data,"--\x3e");case 10:var _=e.publicId,v=e.systemId;return t.push("")):v&&"."!=v?t.push(" SYSTEM ",v,">"):((_=e.internalSubset)&&t.push(" [",_,"]"),t.push(">")));case 7:return t.push("");case 5:return t.push("&",e.nodeName,";");default:t.push("??",e.nodeName)}}function Ga(e,t,i){e[t]=i}t.INVALID_STATE_ERR=(k[11]="Invalid state",11),t.SYNTAX_ERR=(k[12]="Syntax error",12),t.INVALID_MODIFICATION_ERR=(k[13]="Invalid modification",13),t.NAMESPACE_ERR=(k[14]="Invalid namespace",14),t.INVALID_ACCESS_ERR=(k[15]="Invalid access",15),C.prototype=Error.prototype,ia(t,C),aa.prototype={length:0,item:function(e){return this[e]||null},toString:function(e,t){for(var i=[],s=0;s",lt:"<",quot:'"'}),t.HTML_ENTITIES=i({lt:"<",gt:">",amp:"&",quot:'"',apos:"'",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",times:"×",divide:"÷",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",euro:"€",trade:"™",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦"}),t.entityMap=t.HTML_ENTITIES}),Xa=(za.XML_ENTITIES,za.HTML_ENTITIES,za.entityMap,Yn.NAMESPACE),Rr=/[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]/,Mr=new RegExp("[\\-\\.0-9"+Rr.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),Ka=new RegExp("^"+Rr.source+Mr.source+"*(?::"+Rr.source+Mr.source+"*)?$"),Ya=0,Qa=1,Ja=2,Za=3,eo=4,to=5,io=6,so=7;function ro(e,t){this.message=e,this.locator=t,Error.captureStackTrace&&Error.captureStackTrace(this,ro)}function no(){}function ao(e,t){return t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}function oo(e,t,i){for(var s=e.tagName,r=null,n=e.length;n--;){var a=e[n],o=a.qName,l=a.value,o=0<(h=o.indexOf(":"))?(d=a.prefix=o.slice(0,h),u=o.slice(h+1),"xmlns"===d&&u):(d=null,"xmlns"===(u=o)&&"");a.localName=u,!1!==o&&(null==r&&(r={},lo(i,i={})),i[o]=r[o]=l,a.uri=Xa.XMLNS,t.startPrefixMapping(o,l))}for(var d,n=e.length;n--;)(d=(a=e[n]).prefix)&&("xml"===d&&(a.uri=Xa.XML),"xmlns"!==d)&&(a.uri=i[d||""]);var h,u=0<(h=s.indexOf(":"))?(d=e.prefix=s.slice(0,h),e.localName=s.slice(h+1)):(d=null,e.localName=s),c=e.uri=i[d||""];if(t.startElement(c,u,s,e),!e.closed)return e.currentNSMap=i,e.localNSMap=r,1;if(t.endElement(c,u,s),r)for(d in r)Object.prototype.hasOwnProperty.call(r,d)&&t.endPrefixMapping(d)}function lo(e,t){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])}function ho(){this.attributeNames={}}(ro.prototype=new Error).name=ro.name,no.prototype={parse:function(e,t,i){var s=this.domBuilder;s.startDocument(),lo(t,t={}),function(i,e,s,r,n){function a(e){var t=e.slice(1,-1);return Object.hasOwnProperty.call(s,t)?s[t]:"#"===t.charAt(0)?65535<(t=parseInt(t.substr(1).replace("x","0x")))?(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t))):String.fromCharCode(t):(n.error("entity not found:"+e),e)}function t(e){var t;m",y+3),v=i.substring(y+2,_).replace(/[ \t\n\r]+$/g,""),b=c.pop(),T=(_<0?(v=i.substring(y+2).replace(/[\s<].*/,""),n.error("end tag name: "+v+" is not complete:"+b.tagName),_=y+1+v.length):v.match(/\s",t);if(s){e=e.substring(t,s).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);if(e)return e[0].length,i.processingInstruction(e[1],e[2]),s+2}return-1}(i,y,r);break;case"!":u&&o(y),_=function(e,t,i,s){{if("-"===e.charAt(t+2))return"-"===e.charAt(t+3)?(n=e.indexOf("--\x3e",t+4),t",t+9),i.startCDATA(),i.characters(e,t+9,n-t-9),i.endCDATA(),n+3;var r,s=function(e,t){var i,s=[],r=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;r.lastIndex=t,r.exec(e);for(;i=r.exec(e);)if(s.push(i),i[1])return s}(e,t),n=s.length;if(1":switch(d){case Ya:s.setTagName(e.slice(t,l));case to:case io:case so:break;case eo:case Qa:"/"===(u=e.slice(t,l)).slice(-1)&&(s.closed=!0,u=u.slice(0,-1));case Ja:d===Ja&&(u=o),d==eo?(n.warning('attribute "'+u+'" missed quot(")!'),a(o,u,t)):(Xa.isHTML(i[""])&&u.match(/^(?:disabled|checked|selected)$/i)||n.warning('attribute "'+u+'" missed value!! "'+u+'" instead!!'),a(u,u,t));break;case Za:throw new Error("attribute value missed!!")}return l;case"€":h=" ";default:if(h<=" ")switch(d){case Ya:s.setTagName(e.slice(t,l)),d=io;break;case Qa:o=e.slice(t,l),d=Ja;break;case eo:var u=e.slice(t,l);n.warning('attribute "'+u+'" missed quot(")!!'),a(o,u,t);case to:d=io}else switch(d){case Ja:s.tagName,Xa.isHTML(i[""])&&o.match(/^(?:disabled|checked|selected)$/i)||n.warning('attribute "'+o+'" missed value!! "'+o+'" instead2!!'),a(o,o,t),t=l,d=Qa;break;case to:n.warning('attribute space is required"'+o+'"!!');case io:d=Qa,t=l;break;case Za:d=eo,t=l;break;case so:throw new Error("elements closed character '/' and '>' must be connected to")}}l++}}(i,y,E,k,a,n),C=E.length;if(!E.closed&&function(e,t,i,s){var r=s[i];null==r&&((r=e.lastIndexOf(""))",t),e=e.substring(t+1,n);if(/[&<]/.test(e))return/^script$/i.test(i)?r.characters(e,0,e.length):(e=e.replace(/&#?\w+;/g,s),r.characters(e,0,e.length)),n}return t+1}(i,_,E.tagName,a,r):_++}}catch(e){if(e instanceof ro)throw e;n.error("element parse error: "+e),_=-1}m<_?m=_:t(Math.max(y,m)+1)}}(e,t,i,s,this.errorHandler),s.endDocument()}},ho.prototype={setTagName:function(e){if(!Ka.test(e))throw new Error("invalid tagName:"+e);this.tagName=e},addValue:function(e,t,i){if(!Ka.test(e))throw new Error("invalid attribute:"+e);this.attributeNames[e]=this.length,this[this.length++]={qName:e,value:t,offset:i}},length:0,getLocalName:function(e){return this[e].localName},getLocator:function(e){return this[e].locator},getQName:function(e){return this[e].qName},getURI:function(e){return this[e].uri},getValue:function(e){return this[e].value}};var Nr={XMLReader:no,ParseError:ro},uo=Pr.DOMImplementation,co=Yn.NAMESPACE,po=Nr.ParseError,mo=Nr.XMLReader;function go(e){return e.replace(/\r[\n\u0085]/g,"\n").replace(/[\r\u0085\u2028]/g,"\n")}function fo(e){this.options=e||{locator:{}}}function yo(){this.cdata=!1}function _o(e,t){t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber}function vo(e){if(e)return"\n@"+(e.systemId||"")+"#[line:"+e.lineNumber+",col:"+e.columnNumber+"]"}function bo(e,t,i){return"string"==typeof e?e.substr(t,i):e.length>=t+i||t?new java.lang.String(e,t,i)+"":e}function To(e,t){(e.currentElement||e.doc).appendChild(t)}fo.prototype.parseFromString=function(e,t){var i=this.options,s=new mo,r=i.domBuilder||new yo,n=i.errorHandler,a=i.locator,o=i.xmlns||{},t=/\/x?html?$/.test(t),l=t?za.HTML_ENTITIES:za.XML_ENTITIES,n=(a&&r.setDocumentLocator(a),s.errorHandler=function(s,e,r){if(!s){if(e instanceof yo)return e;s=e}var n={},a=s instanceof Function;function t(t){var i=s[t];!i&&a&&(i=2==s.length?function(e){s(t,e)}:s),n[t]=i?function(e){i("[xmldom "+t+"]\t"+e+vo(r))}:function(){}}return r=r||{},t("warning"),t("error"),t("fatalError"),n}(n,r,a),s.domBuilder=i.domBuilder||r,t&&(o[""]=co.HTML),o.xml=o.xml||co.XML,i.normalizeLineEndings||go);return e&&"string"==typeof e?s.parse(n(e),o,l):s.errorHandler.error("invalid doc source"),r.doc},yo.prototype={startDocument:function(){this.doc=(new uo).createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId)},startElement:function(e,t,i,s){var r=this.doc,n=r.createElementNS(e,i||t),a=s.length;To(this,n),this.currentElement=n,this.locator&&_o(this.locator,n);for(var o=0;o!!e&&"object"==typeof e,x=(...e)=>e.reduce((t,i)=>("object"==typeof i&&Object.keys(i).forEach(e=>{Array.isArray(t[e])&&Array.isArray(i[e])?t[e]=t[e].concat(i[e]):wo(t[e])&&wo(i[e])?t[e]=x(t[e],i[e]):t[e]=i[e]}),t),{}),Eo=t=>Object.keys(t).map(e=>t[e]),ko=e=>e.reduce((e,t)=>e.concat(t),[]),Co=t=>{if(!t.length)return[];var i=[];for(let e=0;e{s={uri:r,resolvedUri:On(s||"",r)};if(n||a){r=(n||a).split("-");let e=window.BigInt?window.BigInt(r[0]):parseInt(r[0],10),t=window.BigInt?window.BigInt(r[1]):parseInt(r[1],10);e(e&&"number"!=typeof e&&(e=parseInt(e,10)),isNaN(e)?null:e),Po={static(e){var{duration:t,timescale:i=1,sourceDuration:s,periodDuration:r}=e,e=Ao(e.endNumber),t=t/i;return"number"==typeof e?{start:0,end:e}:"number"==typeof r?{start:0,end:r/t}:{start:0,end:s/t}},dynamic(e){var{NOW:t,clientOffset:i,availabilityStartTime:s,timescale:r=1,duration:n,periodStart:a=0,minimumUpdatePeriod:o=0,timeShiftBufferDepth:l=1/0}=e,e=Ao(e.endNumber),t=(t+i)/1e3,i=s+a,s=Math.ceil((t+o-i)*r/n),a=Math.floor((t-i-l)*r/n),o=Math.floor((t-i)*r/n);return{start:Math.max(0,a),end:"number"==typeof e?e:Math.min(s,o)}}},Lo=e=>{var n,{type:t,duration:i,timescale:s=1,periodDuration:r,sourceDuration:a}=e,{start:o,end:l}=Po[t](e),o=((t,i)=>{var s=[];for(let e=t;e{var{duration:t,timescale:i=1,periodStart:s,startNumber:r=1}=n;return{number:r+e,duration:t/i,timeline:s,time:e*t}}));return"static"===t&&(o[l=o.length-1].duration=("number"==typeof r?r:a)-i/s*l),o},Oo=e=>{var{baseUrl:t,initialization:i={},sourceDuration:s,indexRange:r="",periodStart:n,presentationTime:a,number:o=0,duration:l}=e;if(t)return i=xo({baseUrl:t,source:i.sourceURL,range:i.range}),(t=xo({baseUrl:t,source:t,indexRange:r})).map=i,l?(r=Lo(e)).length&&(t.duration=r[0].duration,t.timeline=r[0].timeline):s&&(t.duration=s,t.timeline=n),t.presentationTime=a||n,t.number=o,[t];throw new Error(Io.NO_BASE_URL)},Do=(e,i,s)=>{var r=e.sidx.map||null,n=e.sidx.duration,a=e.timeline||0,t=e.sidx.byterange,t=t.offset+t.length,o=i.timescale,l=i.references.filter(e=>1!==e.referenceType),d=[],h=e.endList?"static":"dynamic",u=e.sidx.timeline;let c=u,p=e.mediaSequence||0,m;m="bigint"==typeof i.firstOffset?window.BigInt(t)+i.firstOffset:t+i.firstOffset;for(let t=0;t{return e=e,i=({timeline:e})=>e,Eo(e.reduce((t,e)=>(e.forEach(e=>{t[i(e)]=e}),t),{})).sort((e,t)=>e.timeline>t.timeline?1:-1);var i},Ro=e=>{let r=[];var n,a;return n=e,e=No,a=(e,t,i,s)=>{r=r.concat(e.playlists||[])},e.forEach(function(e){for(var t in n.mediaGroups[e])for(var i in n.mediaGroups[e][t]){var s=n.mediaGroups[e][t][i];a(s,e,t,i)}}),r},Uo=({playlist:i,mediaSequence:e})=>{i.mediaSequence=e,i.segments.forEach((e,t)=>{e.number=i.mediaSequence+t})},Bo=({oldManifest:e,newManifest:t})=>{var r,n,i=e.playlists.concat(Ro(e)),s=t.playlists.concat(Ro(t));return t.timelineStarts=Mo([e.timelineStarts,t.timelineStarts]),{oldPlaylists:r,newPlaylists:e,timelineStarts:n}=[{oldPlaylists:i,newPlaylists:s,timelineStarts:t.timelineStarts}][0],e.forEach(t=>{t.discontinuitySequence=n.findIndex(function({timeline:e}){return e===t.timeline});var e=((t,i)=>{for(let e=0;ee.timeline||e.segments.length&&t.timeline>e.segments[e.segments.length-1].timeline)&&t.discontinuitySequence--):(e.segments[i].discontinuity&&!s.discontinuity&&(s.discontinuity=!0,t.discontinuityStarts.unshift(0),t.discontinuitySequence--),Uo({playlist:t,mediaSequence:e.segments[i].number}))}}),t},Fo=e=>e&&e.uri+"-"+(e=>{let t;return t="bigint"==typeof e.offset||"bigint"==typeof e.length?window.BigInt(e.offset)+window.BigInt(e.length)-window.BigInt(1):e.offset+e.length-1,e.offset+"-"+t})(e.byterange),jo=e=>{return Eo(e.reduce((e,t)=>{var i=t.attributes.id+(t.attributes.lang||"");return e[i]?(t.segments&&(t.segments[0]&&(t.segments[0].discontinuity=!0),e[i].segments.push(...t.segments)),t.attributes.contentProtection&&(e[i].attributes.contentProtection=t.attributes.contentProtection)):(e[i]=t,e[i].attributes.timelineStarts=[]),e[i].attributes.timelineStarts.push({start:t.attributes.periodStart,timeline:t.attributes.periodStart}),e},{})).map(e=>{var t,s;return e.discontinuityStarts=(t=e.segments||[],s="discontinuity",t.reduce((e,t,i)=>(t[s]&&e.push(i),e),[])),e})},Ho=(e,t)=>{var i=Fo(e.sidx),t=i&&t[i]&&t[i].sidx;return t&&Do(e,t,e.sidx.resolvedUri),e},qo=(e,o={})=>e.reduce((e,t)=>{var i,s,r,n,a=t.attributes.lang||"text";return e[a]||(e[a]={language:a,default:!1,autoselect:!1,playlists:[],uri:""}),e[a].playlists.push(Ho(({attributes:a,segments:t,mediaSequence:i,discontinuityStarts:s,discontinuitySequence:r}=[t][0],"undefined"==typeof t&&(t=[{uri:a.baseUrl,timeline:a.periodStart,resolvedUri:a.baseUrl||"",duration:a.sourceDuration,number:0}],a.duration=a.sourceDuration),n={NAME:a.id,BANDWIDTH:a.bandwidth,"PROGRAM-ID":1},a.codecs&&(n.CODECS=a.codecs),{attributes:n,uri:"",endList:"static"===a.type,timeline:a.periodStart,resolvedUri:a.baseUrl||"",targetDuration:a.duration,timelineStarts:a.timelineStarts,discontinuityStarts:s,discontinuitySequence:r,mediaSequence:i,segments:t}),o)),e},{}),Vo=({attributes:e,segments:t,sidx:i,discontinuityStarts:s})=>{s={attributes:{NAME:e.id,AUDIO:"audio",SUBTITLES:"subs",RESOLUTION:{width:e.width,height:e.height},CODECS:e.codecs,BANDWIDTH:e.bandwidth,"PROGRAM-ID":1},uri:"",endList:"static"===e.type,timeline:e.periodStart,resolvedUri:"",targetDuration:e.duration,discontinuityStarts:s,timelineStarts:e.timelineStarts,segments:t};return e.frameRate&&(s.attributes["FRAME-RATE"]=e.frameRate),e.contentProtection&&(s.contentProtection=e.contentProtection),i&&(s.sidx=i),s},$o=({attributes:e})=>"video/mp4"===e.mimeType||"video/webm"===e.mimeType||"video"===e.contentType,Wo=({attributes:e})=>"audio/mp4"===e.mimeType||"audio/webm"===e.mimeType||"audio"===e.contentType,Go=({attributes:e})=>"text/vtt"===e.mimeType||"text"===e.contentType,zo=i=>i?Object.keys(i).reduce((e,t)=>{t=i[t];return e.concat(t.playlists)},[]):[],Xo=({dashPlaylists:e,locations:t,sidxMapping:i={},previousManifest:s})=>{var r,n,a,o,l,d,h,u;return e.length?({sourceDuration:a,type:l,suggestedPresentationDelay:d,minimumUpdatePeriod:o}=e[0].attributes,r=jo(e.filter($o)).map(Vo),h=jo(e.filter(Wo)),n=jo(e.filter(Go)),e=e.map(e=>e.attributes.captionServices).filter(Boolean),a={allowCache:!0,discontinuityStarts:[],segments:[],endList:!0,mediaGroups:{AUDIO:{},VIDEO:{},"CLOSED-CAPTIONS":{},SUBTITLES:{}},uri:"",duration:a,playlists:((e,t={})=>{if(Object.keys(t).length)for(const i in e)e[i]=Ho(e[i],t);return e})(r,i)},0<=o&&(a.minimumUpdatePeriod=1e3*o),t&&(a.locations=t),"dynamic"===l&&(a.suggestedPresentationDelay=d),o=0===a.playlists.length,t=h.length?((e,n={},a)=>{let o;e=e.reduce((e,t)=>{var i=t.attributes.role&&t.attributes.role.value||"",s=t.attributes.lang||"";let r=t.attributes.label||"main";e[r=s&&!t.attributes.label?t.attributes.lang+(i?` (${i})`:""):r]||(e[r]={language:s,autoselect:!0,default:"main"===i,playlists:[],uri:""});s=Ho((({attributes:e,segments:t,sidx:i,mediaSequence:s,discontinuitySequence:r,discontinuityStarts:n},a)=>{r={attributes:{NAME:e.id,BANDWIDTH:e.bandwidth,CODECS:e.codecs,"PROGRAM-ID":1},uri:"",endList:"static"===e.type,timeline:e.periodStart,resolvedUri:"",targetDuration:e.duration,discontinuitySequence:r,discontinuityStarts:n,timelineStarts:e.timelineStarts,mediaSequence:s,segments:t};return e.contentProtection&&(r.contentProtection=e.contentProtection),i&&(r.sidx=i),a&&(r.attributes.AUDIO="audio",r.attributes.SUBTITLES="subs"),r})(t,a),n);return e[r].playlists.push(s),"undefined"==typeof o&&"main"===i&&((o=t).default=!0),e},{});return o||(e[Object.keys(e)[0]].default=!0),e})(h,i,o):null,l=n.length?qo(n,i):null,h=(d=r.concat(zo(t),zo(l))).map(({timelineStarts:e})=>e),a.timelineStarts=Mo(h),u=a.timelineStarts,d.forEach(t=>{t.mediaSequence=0,t.discontinuitySequence=u.findIndex(function({timeline:e}){return e===t.timeline}),t.segments&&t.segments.forEach((e,t)=>{e.number=t})}),t&&(a.mediaGroups.AUDIO.audio=t),l&&(a.mediaGroups.SUBTITLES.subs=l),e.length&&(a.mediaGroups["CLOSED-CAPTIONS"].cc=e.reduce((s,e)=>(e&&e.forEach(e=>{var{channel:t,language:i}=e;s[i]={autoselect:!1,default:!1,instreamId:t,language:i},e.hasOwnProperty("aspectRatio")&&(s[i].aspectRatio=e.aspectRatio),e.hasOwnProperty("easyReader")&&(s[i].easyReader=e.easyReader),e.hasOwnProperty("3D")&&(s[i]["3D"]=e["3D"])}),s),{})),s?Bo({oldManifest:s,newManifest:a}):a):{}},Ko=(s,r)=>{var{type:n,minimumUpdatePeriod:a=0,media:o="",sourceDuration:l,timescale:d=1,startNumber:h=1,periodStart:u}=s,c=[];let p=-1;for(let i=0;ip&&(p=m);let e;e=f<0?(m=i+1)===r.length?"dynamic"===n&&0{var{NOW:e,clientOffset:s,availabilityStartTime:r,timescale:n=1,periodStart:a=0,minimumUpdatePeriod:o=0}=e;return Math.ceil((((e+s)/1e3+o-(r+a))*n-t)/i)})(s,p,g):(l*d-p)/g:(r[m].t-p)/g:f+1;var y=h+c.length+e;let t=h+c.length;for(;t{return e.replace(Yo,(r=t,(e,t,i,s)=>{return"$$"===e?"$":"undefined"==typeof r[t]?e:(e=""+r[t],"RepresentationID"===t||(s=i?parseInt(s,10):1)<=e.length?e:new Array(s-e.length+1).join("0")+e)}));var r},Jo=(r,e)=>{const n={RepresentationID:r.id,Bandwidth:r.bandwidth||0};var{initialization:t={sourceURL:"",range:""}}=r;const a=xo({baseUrl:r.baseUrl,source:Qo(t.sourceURL,n),range:t.range});return t=e,((e=r).duration||t?e.duration?Lo(e):Ko(e,t):[{number:e.startNumber||1,duration:e.sourceDuration,time:0,timeline:e.periodStart}]).map(e=>{n.Number=e.number,n.Time=e.time;var t=Qo(r.media||"",n),i=r.timescale||1,s=r.presentationTimeOffset||0,s=r.periodStart+(e.time-s)/i;return{uri:t,timeline:e.timeline,duration:e.duration,resolvedUri:On(r.baseUrl||"",t),map:a,number:e.number,presentationTime:s}})},Zo=(r,e)=>{const{duration:t,segmentUrls:i=[],periodStart:n}=r;if(!t&&!e||t&&e)throw new Error(Io.SEGMENT_TIME_UNSPECIFIED);const a=i.map(e=>{var{baseUrl:t,initialization:i={}}=t=r,i=xo({baseUrl:t,source:i.sourceURL,range:i.range});return(t=xo({baseUrl:t,source:e.media,range:e.mediaRange})).map=i,t});let s;return t&&(s=Lo(r)),(s=e?Ko(r,e):s).map((e,t)=>{var i,s;if(a[t])return t=a[t],i=r.timescale||1,s=r.presentationTimeOffset||0,t.timeline=e.timeline,t.duration=e.duration,t.number=e.number,t.presentationTime=n+(e.time-s)/i,t}).filter(e=>e)},el=({attributes:e,segmentInfo:t})=>{let i,s;t.template?(s=Jo,i=x(e,t.template)):t.base?(s=Oo,i=x(e,t.base)):t.list&&(s=Zo,i=x(e,t.list));var r,n,a,e={attributes:e};return s&&(r=s(i,t.segmentTimeline),i.duration?({duration:n,timescale:a=1}=i,i.duration=n/a):r.length?i.duration=r.reduce((e,t)=>Math.max(e,Math.ceil(t.duration)),0):i.duration=0,e.attributes=i,e.segments=r,t.base)&&i.indexRange&&(e.sidx=r[0],e.segments=[]),e},tl=e=>e.map(el),A=(e,t)=>Co(e.childNodes).filter(({tagName:e})=>e===t),il=e=>e.textContent.trim(),sl=e=>{var t,i,s,r,n,e=/P(?:(\d*)Y)?(?:(\d*)M)?(?:(\d*)D)?(?:T(?:(\d*)H)?(?:(\d*)M)?(?:([\d.]*)S)?)?/.exec(e);return e?([e,t,i,s,r,n]=e.slice(1),31536e3*parseFloat(e||0)+2592e3*parseFloat(t||0)+86400*parseFloat(i||0)+3600*parseFloat(s||0)+60*parseFloat(r||0)+parseFloat(n||0)):0},rl={mediaPresentationDuration(e){return sl(e)},availabilityStartTime(e){return/^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/.test(e=e)&&(e+="Z"),Date.parse(e)/1e3},minimumUpdatePeriod(e){return sl(e)},suggestedPresentationDelay(e){return sl(e)},type(e){return e},timeShiftBufferDepth(e){return sl(e)},start(e){return sl(e)},width(e){return parseInt(e,10)},height(e){return parseInt(e,10)},bandwidth(e){return parseInt(e,10)},frameRate(e){return parseFloat(e.split("/").reduce((e,t)=>e/t))},startNumber(e){return parseInt(e,10)},timescale(e){return parseInt(e,10)},presentationTimeOffset(e){return parseInt(e,10)},duration(e){var t=parseInt(e,10);return isNaN(t)?sl(e):t},d(e){return parseInt(e,10)},t(e){return parseInt(e,10)},r(e){return parseInt(e,10)},DEFAULT(e){return e}},P=e=>e&&e.attributes?Co(e.attributes).reduce((e,t)=>{var i=rl[t.name]||rl.DEFAULT;return e[t.name]=i(t.value),e},{}):{},nl={"urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b":"org.w3.clearkey","urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed":"com.widevine.alpha","urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95":"com.microsoft.playready","urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb":"com.adobe.primetime"},al=(e,i)=>i.length?ko(e.map(function(t){return i.map(function(e){return On(t,il(e))})})):e,ol=e=>{var t=A(e,"SegmentTemplate")[0],i=A(e,"SegmentList")[0],s=i&&A(i,"SegmentURL").map(e=>x({tag:"SegmentURL"},P(e))),e=A(e,"SegmentBase")[0],r=i||t,r=r&&A(r,"SegmentTimeline")[0],n=i||e||t,n=n&&A(n,"Initialization")[0],t=t&&P(t);t&&n?t.initialization=n&&P(n):t&&t.initialization&&(t.initialization={sourceURL:t.initialization});const a={template:t,segmentTimeline:r&&A(r,"S").map(e=>P(e)),list:i&&x(P(i),{segmentUrls:s,initialization:P(n)}),base:e&&x(P(e),{initialization:P(n)})};return Object.keys(a).forEach(e=>{a[e]||delete a[e]}),a},ll=(l,d,h)=>e=>{var t=P(e),i=al(d,A(e,"BaseURL")),s=A(e,"Role")[0],s={role:P(s)};let r=x(l,t,s);var n,a,o,t=A(e,"Accessibility")[0],t="urn:scte:dash:cc:cea-608:2015"===(s=P(t)).schemeIdUri?("string"!=typeof s.value?[]:s.value.split(";")).map(e=>{let t,i;return i=e,/^CC\d=/.test(e)?[t,i]=e.split("="):/^CC\d$/.test(e)&&(t=e),{channel:t,language:i}}):"urn:scte:dash:cc:cea-708:2015"===s.schemeIdUri?("string"!=typeof s.value?[]:s.value.split(";")).map(e=>{const i={channel:void 0,language:void 0,aspectRatio:1,easyReader:0,"3D":0};var t,s;return/=/.test(e)?([t,s=""]=e.split("="),i.channel=t,i.language=e,s.split(",").forEach(e=>{var[e,t]=e.split(":");"lang"===e?i.language=t:"er"===e?i.easyReader=Number(t):"war"===e?i.aspectRatio=Number(t):"3D"===e&&(i["3D"]=Number(t))})):i.language=e,i.channel&&(i.channel="SERVICE"+i.channel),i}):void 0,s=(t&&(r=x(r,{captionServices:t})),A(e,"Label")[0]),s=(s&&s.childNodes.length&&(t=s.childNodes[0].nodeValue.trim(),r=x(r,{label:t})),A(e,"ContentProtection").reduce((e,t)=>{var i=P(t),s=(i.schemeIdUri&&(i.schemeIdUri=i.schemeIdUri.toLowerCase()),nl[i.schemeIdUri]);return s&&(e[s]={attributes:i},i=A(t,"cenc:pssh")[0])&&(t=il(i),e[s].pssh=t&&Gn(t)),e},{})),t=(Object.keys(s).length&&(r=x(r,{contentProtection:s})),ol(e)),s=A(e,"Representation"),e=x(h,t);return ko(s.map((n=r,a=i,o=e,e=>{var t=A(e,"BaseURL"),t=al(a,t);const i=x(n,P(e)),s=ol(e);return t.map(e=>({segmentInfo:x(o,s),attributes:x(i,{baseUrl:e})}))})))},dl=(e,t={})=>{var{manifestUri:t="",NOW:i=Date.now(),clientOffset:s=0}=t,r=A(e,"Period");if(!r.length)throw new Error(Io.INVALID_NUMBER_OF_PERIOD);var n=A(e,"Location");const a=P(e);var o,l,t=al([t],A(e,"BaseURL"));a.type=a.type||"static",a.sourceDuration=a.mediaPresentationDuration||0,a.NOW=i,a.clientOffset=s,n.length&&(a.locations=n.map(il));const d=[];return r.forEach((e,t)=>{var i,s,r=P(e),t=d[t-1];r.start=({attributes:t,priorPeriodAttributes:i,mpdType:s}=[{attributes:r,priorPeriodAttributes:t?t.attributes:null,mpdType:a.type}][0],"number"==typeof t.start?t.start:i&&"number"==typeof i.start&&"number"==typeof i.duration?i.start+i.duration:i||"static"!==s?null:0),d.push({node:e,attributes:r})}),{locations:a.locations,representationInfo:ko(d.map((o=a,l=t,(e,t)=>{var i=al(l,A(e.node,"BaseURL")),s=x(o,{periodStart:e.attributes.start}),r=("number"==typeof e.attributes.duration&&(s.periodDuration=e.attributes.duration),A(e.node,"AdaptationSet")),e=ol(e.node);return ko(r.map(ll(s,i,e)))})))}},hl=e=>{if(""===e)throw new Error(Io.DASH_EMPTY_MANIFEST);var t,i=new So;let s;try{t=i.parseFromString(e,"application/xml"),s=t&&"MPD"===t.documentElement.tagName?t.documentElement:null}catch(e){}if(!s||s&&0{e=hl(e);if(!(e=A(e,"UTCTiming")[0]))return null;var t=P(e);switch(t.schemeIdUri){case"urn:mpeg:dash:utc:http-head:2014":case"urn:mpeg:dash:utc:http-head:2012":t.method="HEAD";break;case"urn:mpeg:dash:utc:http-xsdate:2014":case"urn:mpeg:dash:utc:http-iso:2014":case"urn:mpeg:dash:utc:http-xsdate:2012":case"urn:mpeg:dash:utc:http-iso:2012":t.method="GET";break;case"urn:mpeg:dash:utc:direct:2014":case"urn:mpeg:dash:utc:direct:2012":t.method="DIRECT",t.value=Date.parse(t.value);break;default:throw new Error(Io.UNSUPPORTED_UTC_TIMING_SCHEME)}return t};function cl(e,t){var i,s,r;return void 0===t&&(t=0),(e=S(e)).length-t<10||!E(e,Sl,{offset:t})?t:(t+=(void 0===(s=t)&&(s=0),r=(i=S(i=e))[s+5],i=i[s+6]<<21|i[s+7]<<14|i[s+8]<<7|i[s+9],(16&r)>>4?20+i:10+i),cl(e,t))}function pl(e){return"string"==typeof e?Ln(e):e}function ml(e,t,i){void 0===i&&(i=!1),s=t,t=Array.isArray(s)?s.map(pl):[pl(s)],e=S(e);var s,r=[];if(t.length)for(var n=0;n>>0,o=e.subarray(n+4,n+8);if(0==a)break;a=n+a;if(a>e.length){if(i)break;a=e.length}var l=e.subarray(n+8,a);E(o,t[0])&&(1===t.length?r.push(l):r.push.apply(r,ml(l,t.slice(1),i))),n=a}return r}function gl(e,t,i){var s;return i>=t.length?t.length:(s=Cl(t,i,!1),E(e.bytes,s.bytes)?i:gl(e,t,i+(e=Cl(t,i+s.length)).length+e.value+s.length))}function fl(e,t){i=t,t=Array.isArray(i)?i.map(function(e){return Il(e)}):[Il(i)],e=S(e);var i,s=[];if(t.length)for(var r=0;re.length?e.length:o+a.value),o=e.subarray(o,l);E(t[0],n.bytes)&&(1===t.length?s.push(o):s=s.concat(fl(o,t.slice(1)))),r+=n.length+a.length+o.length}return s}function yl(e,t,i,s){void 0===s&&(s=1/0),e=S(e),i=[].concat(i);for(var r,n=0,a=0;n>1&63),-1!==i.indexOf(l)&&(r=n+o),n+=o+("h264"===t?1:2)}else n++}return e.subarray(0,0)}function _l(e){e=S(e);for(var t=0;t>>7,referencedSize:2147483647&t.getUint32(s),subsegmentDuration:t.getUint32(s+4),startsWithSap:!!(128&e[s+8]),sapType:(112&e[s+8])>>>4,sapDeltaTime:268435455&t.getUint32(s+8)});return i},Sl=S([73,68,51]),wl={EBML:S([26,69,223,163]),DocType:S([66,130]),Segment:S([24,83,128,103]),SegmentInfo:S([21,73,169,102]),Tracks:S([22,84,174,107]),Track:S([174]),TrackNumber:S([215]),DefaultDuration:S([35,227,131]),TrackEntry:S([174]),TrackType:S([131]),FlagDefault:S([136]),CodecID:S([134]),CodecPrivate:S([99,162]),VideoTrack:S([224]),AudioTrack:S([225]),Cluster:S([31,67,182,117]),Timestamp:S([231]),TimestampScale:S([42,215,177]),BlockGroup:S([160]),BlockDuration:S([155]),Block:S([161]),SimpleBlock:S([163])},El=[128,64,32,16,8,4,2,1],kl=function(e){for(var t=1,i=0;it&&t.responseURL&&e!==t.responseURL?t.responseURL:e,Bl=e=>T.log.debug?T.log.debug.bind(T,"VHS:",e+" >"):function(){};function O(...e){var t=T.obj||T;return(t.merge||t.mergeOptions).apply(t,e)}function Fl(...e){var t=T.time||T;return(t.createTimeRanges||t.createTimeRanges).apply(t,e)}function jl(e,i){return Xl(e,function(e,t){return e-zl<=i&&t+zl>=i})}function Hl(e,t){return Xl(e,function(e){return e-Gl>=t})}function ql(e){if(e&&e.length&&e.end)return e.end(e.length-1)}function Vl(t,i){let s=0;if(t&&t.length)for(let e=0;e{var i=[];if(!t||!t.length)return"";for(let e=0;e "+t.end(e));return i.join(", ")},Yl=t=>{var i=[];for(let e=0;e{if(!e.preload)return e.duration;let i=0;return(e.parts||[]).forEach(function(e){i+=e.duration}),(e.preloadHints||[]).forEach(function(e){"PART"===e.type&&(i+=t.partTargetDuration)}),i},Jl=e=>(e.segments||[]).reduce((i,s,r)=>(s.parts?s.parts.forEach(function(e,t){i.push({duration:e.duration,segmentIndex:r,partIndex:t,part:e,segment:s})}):i.push({duration:s.duration,segmentIndex:r,partIndex:null,segment:s,part:null}),i),[]),Zl=e=>{e=e.segments&&e.segments.length&&e.segments[e.segments.length-1];return e&&e.parts||[]},ed=({preloadSegment:e})=>{var t;if(e)return{parts:e,preloadHints:t}=e,(t||[]).reduce((e,t)=>e+("PART"===t.type?1:0),0)+(e&&e.length?e.length:0)},td=(e,t)=>{return t.endList?0:e&&e.suggestedPresentationDelay?e.suggestedPresentationDelay:(e=0Date.now()}function od(e){return e.excludeUntil&&e.excludeUntil===1/0}function ld(e){var t=ad(e);return!e.disabled&&!t}function dd(e,t){return t.attributes&&t.attributes[e]}function hd(e,t){var i=e&&e.mediaGroups&&e.mediaGroups.AUDIO||{};let s=!1;for(const r in i){for(const n in i[r])if(s=t(i[r][n]))break;if(s)break}return!!s}const ud=(e,t)=>{if(1===e.playlists.length)return!0;const i=t.attributes.BANDWIDTH||Number.MAX_VALUE;return 0===e.playlists.filter(e=>!!ld(e)&&(e.attributes.BANDWIDTH||0)!(!e&&!t||!e&&t||e&&!t||e!==t&&(!e.id||!t.id||e.id!==t.id)&&(!e.resolvedUri||!t.resolvedUri||e.resolvedUri!==t.resolvedUri)&&(!e.uri||!t.uri||e.uri!==t.uri)),pd=t=>{if(!t||!t.playlists||!t.playlists.length)return hd(t,e=>e.playlists&&e.playlists.length||e.uri);for(let e=0;eCn(e))){i=hd(t,e=>cd(s,e));if(!i)return!1}}return!0};var md={liveEdgeDelay:td,duration:nd,seekable:function(e,t,i){var s=t||0,e=Wl(e,t,!0,i);return null===e?Fl():Fl(s,e)},getMediaInfoForTime:function({playlist:t,currentTime:i,startingSegmentIndex:s,startingPartIndex:r,startTime:n,exactManifestTimings:a}){let o=i-n;var l=Jl(t);let d=0;for(let e=0;ee+"-"+t,yd=(r,n)=>{r.mediaGroups&&["AUDIO","SUBTITLES"].forEach(e=>{if(r.mediaGroups[e])for(const i in r.mediaGroups[e])for(const s in r.mediaGroups[e][i]){var t=r.mediaGroups[e][i][s];n(t,e,i,s)}})},_d=({playlist:e,uri:t,id:i})=>{e.id=i,e.playlistErrors_=0,t&&(e.uri=t),e.attributes=e.attributes||{}},vd=(o,e,l=(e,t,i)=>`placeholder-uri-${e}-${t}-`+i)=>{o.uri=e;for(let e=0;e{if(!e.playlists||!e.playlists.length){if(i&&"AUDIO"===r&&!e.uri)for(let e=0;e{e.uri&&(e.resolvedUri=Rl(n.uri,e.uri))})};Dr=T.EventTarget;function bd(e){var t=e.segments||[],i=e.preloadSegment;if(i&&i.parts&&i.parts.length){if(i.preloadHints)for(let e=0;e{if(!t)return i;var s=O(t,i);if(t.preloadHints&&!i.preloadHints&&delete s.preloadHints,t.parts&&!i.parts)delete s.parts;else if(t.parts&&i.parts)for(let e=0;e{!e.resolvedUri&&e.uri&&(e.resolvedUri=Rl(t,e.uri)),e.key&&!e.key.resolvedUri&&(e.key.resolvedUri=Rl(t,e.key.uri)),e.map&&!e.map.resolvedUri&&(e.map.resolvedUri=Rl(t,e.map.uri)),e.map&&e.map.key&&!e.map.key.resolvedUri&&(e.map.key.resolvedUri=Rl(t,e.map.key.uri)),e.parts&&e.parts.length&&e.parts.forEach(e=>{e.resolvedUri||(e.resolvedUri=Rl(t,e.uri))}),e.preloadHints&&e.preloadHints.length&&e.preloadHints.forEach(e=>{e.resolvedUri||(e.resolvedUri=Rl(t,e.uri))})},wd=(e,t)=>e===t||e.segments&&t.segments&&e.segments.length===t.segments.length&&e.endList===t.endList&&e.mediaSequence===t.mediaSequence&&e.preloadSegment===t.preloadSegment,Ed=(e,r,t=wd)=>{var i=O(e,{}),s=i.playlists[r.id];if(!s)return null;if(t(s,r))return null;r.segments=bd(r);const n=O(s,r);if(n.preloadSegment&&!r.preloadSegment&&delete n.preloadSegment,s.segments){if(r.skip){r.segments=r.segments||[];for(let e=0;e{var s=e.slice(),r=t.slice(),n=(i=i||0,[]);let a;for(let e=0;e{Sd(e,n.resolvedUri)});for(let e=0;e{if(t.playlists)for(let e=0;e{var i=e.segments||[],i=i[i.length-1],s=i&&i.parts&&i.parts[i.parts.length-1],s=s&&s.duration||i&&i.duration;return t&&s?1e3*s:500*(e.partTargetDuration||e.targetDuration||10)};class Cd extends Dr{constructor(e,t,i={}){if(super(),!e)throw new Error("A non-empty playlist URL or object is required");this.logger_=Bl("PlaylistLoader");var{withCredentials:i=!1}=i,e=(this.src=e,this.vhs_=t,this.withCredentials=i,t.options_);this.customTagParsers=e&&e.customTagParsers||[],this.customTagMappers=e&&e.customTagMappers||[],this.llhls=e&&e.llhls,this.state="HAVE_NOTHING",this.handleMediaupdatetimeout_=this.handleMediaupdatetimeout_.bind(this),this.on("mediaupdatetimeout",this.handleMediaupdatetimeout_)}handleMediaupdatetimeout_(){if("HAVE_METADATA"===this.state){var t=this.media();let e=Rl(this.main.uri,t.uri);this.llhls&&(e=((e,t)=>{if(!t.endList&&t.serverControl){const r={};if(t.serverControl.canBlockReload){var i,s=t["preloadSegment"];let e=t.mediaSequence+t.segments.length;s&&(s=s.parts||[],-1<(i=ed(t)-1)&&i!=s.length-1&&(r._HLS_part=i),-1{if(this.request)return e?this.playlistRequestError(this.request,this.media(),"HAVE_METADATA"):void this.haveMetadata({playlistString:this.request.responseText,url:this.media().uri,id:this.media().id})})}}playlistRequestError(e,t,i){var{uri:t,id:s}=t;this.request=null,i&&(this.state=i),this.error={playlist:this.main.playlists[s],status:e.status,message:`HLS playlist request error at URL: ${t}.`,responseText:e.responseText,code:500<=e.status?4:2},this.trigger("error")}parseManifest_({url:t,manifestString:i}){{var[{onwarn:i,oninfo:e,manifestString:s,customTagParsers:r=[],customTagMappers:n=[],llhls:a}]=[{onwarn:({message:e})=>this.logger_(`m3u8-parser warn for ${t}: `+e),oninfo:({message:e})=>this.logger_(`m3u8-parser info for ${t}: `+e),manifestString:i,customTagParsers:this.customTagParsers,customTagMappers:this.customTagMappers,llhls:this.llhls}];const o=new kn,l=(i&&o.on("warn",i),e&&o.on("info",e),r.forEach(e=>o.addParser(e)),n.forEach(e=>o.addTagMapper(e)),o.push(s),o.end(),o.manifest);if(a||(["preloadSegment","skip","serverControl","renditionReports","partInf","partTargetDuration"].forEach(function(e){l.hasOwnProperty(e)&&delete l[e]}),l.segments&&l.segments.forEach(function(t){["parts","preloadHints"].forEach(function(e){t.hasOwnProperty(e)&&delete t[e]})})),!l.targetDuration){let e=10;l.segments&&l.segments.length&&(e=l.segments.reduce((e,t)=>Math.max(e,t.duration),0)),i&&i("manifest has no targetDuration defaulting to "+e),l.targetDuration=e}return(e=Zl(l)).length&&!l.partTargetDuration&&(r=e.reduce((e,t)=>Math.max(e,t.duration),0),i&&(i("manifest has no partTargetDuration defaulting to "+r),gd.error("LL-HLS manifest has parts but lacks required #EXT-X-PART-INF:PART-TARGET value. See https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-09#section-4.4.3.7. Playback is not guaranteed.")),l.partTargetDuration=r),l}}haveMetadata({playlistString:e,playlistObject:t,url:i,id:s}){this.request=null,this.state="HAVE_METADATA";t=t||this.parseManifest_({url:i,manifestString:e}),t.lastRequest=Date.now(),_d({playlist:t,uri:i,id:s}),e=Ed(this.main,t);this.targetDuration=t.partTargetDuration||t.targetDuration,this.pendingMedia_=null,e?(this.main=e,this.media_=this.main.playlists[s]):this.trigger("playlistunchanged"),this.updateMediaUpdateTimeout_(kd(this.media(),!!e)),this.trigger("loadedplaylist")}dispose(){this.trigger("dispose"),this.stopRequest(),window.clearTimeout(this.mediaUpdateTimeout),window.clearTimeout(this.finalRenditionTimeout),this.off()}stopRequest(){var e;this.request&&(e=this.request,this.request=null,e.onreadystatechange=null,e.abort())}media(i,e){if(!i)return this.media_;if("HAVE_NOTHING"===this.state)throw new Error("Cannot switch media playlist from "+this.state);if("string"==typeof i){if(!this.main.playlists[i])throw new Error("Unknown playlist URI: "+i);i=this.main.playlists[i]}if(window.clearTimeout(this.finalRenditionTimeout),e)e=(i.partTargetDuration||i.targetDuration)/2*1e3||5e3,this.finalRenditionTimeout=window.setTimeout(this.media.bind(this,i,!1),e);else{const s=this.state;var e=!this.media_||i.id!==this.media_.id,t=this.main.playlists[i.id];if(t&&t.endList||i.endList&&i.segments.length)this.request&&(this.request.onreadystatechange=null,this.request.abort(),this.request=null),this.state="HAVE_METADATA",this.media_=i,e&&(this.trigger("mediachanging"),"HAVE_MAIN_MANIFEST"===s?this.trigger("loadedmetadata"):this.trigger("mediachange"));else if(this.updateMediaUpdateTimeout_(kd(i,!0)),e){if(this.state="SWITCHING_MEDIA",this.request){if(i.resolvedUri===this.request.url)return;this.request.onreadystatechange=null,this.request.abort(),this.request=null}this.media_&&this.trigger("mediachanging"),this.pendingMedia_=i,this.request=this.vhs_.xhr({uri:i.resolvedUri,withCredentials:this.withCredentials},(e,t)=>{if(this.request){if(i.lastRequest=Date.now(),i.resolvedUri=Ul(i.resolvedUri,t),e)return this.playlistRequestError(this.request,i,s);this.haveMetadata({playlistString:t.responseText,url:i.uri,id:i.id}),"HAVE_MAIN_MANIFEST"===s?this.trigger("loadedmetadata"):this.trigger("mediachange")}})}}}pause(){this.mediaUpdateTimeout&&(window.clearTimeout(this.mediaUpdateTimeout),this.mediaUpdateTimeout=null),this.stopRequest(),"HAVE_NOTHING"===this.state&&(this.started=!1),"SWITCHING_MEDIA"===this.state?this.media_?this.state="HAVE_METADATA":this.state="HAVE_MAIN_MANIFEST":"HAVE_CURRENT_METADATA"===this.state&&(this.state="HAVE_METADATA")}load(e){this.mediaUpdateTimeout&&(window.clearTimeout(this.mediaUpdateTimeout),this.mediaUpdateTimeout=null);var t=this.media();e?(e=t?(t.partTargetDuration||t.targetDuration)/2*1e3:5e3,this.mediaUpdateTimeout=window.setTimeout(()=>{this.mediaUpdateTimeout=null,this.load()},e)):this.started?t&&!t.endList?this.trigger("mediaupdatetimeout"):this.trigger("loadedplaylist"):this.start()}updateMediaUpdateTimeout_(e){this.mediaUpdateTimeout&&(window.clearTimeout(this.mediaUpdateTimeout),this.mediaUpdateTimeout=null),this.media()&&!this.media().endList&&(this.mediaUpdateTimeout=window.setTimeout(()=>{this.mediaUpdateTimeout=null,this.trigger("mediaupdatetimeout"),this.updateMediaUpdateTimeout_(e)},e))}start(){this.started=!0,"object"==typeof this.src?(this.src.uri||(this.src.uri=window.location.href),this.src.resolvedUri=this.src.uri,setTimeout(()=>{this.setupInitialPlaylist(this.src)},0)):this.request=this.vhs_.xhr({uri:this.src,withCredentials:this.withCredentials},(e,t)=>{if(this.request){if(this.request=null,e)return this.error={status:t.status,message:`HLS playlist request error at URL: ${this.src}.`,responseText:t.responseText,code:2},"HAVE_NOTHING"===this.state&&(this.started=!1),this.trigger("error");this.src=Ul(this.src,t);e=this.parseManifest_({manifestString:t.responseText,url:this.src});this.setupInitialPlaylist(e)}})}srcUri(){return"string"==typeof this.src?this.src:this.src.uri}setupInitialPlaylist(e){var t,i,s,r;this.state="HAVE_MAIN_MANIFEST",e.playlists?(this.main=e,vd(this.main,this.srcUri()),e.playlists.forEach(t=>{t.segments=bd(t),t.segments.forEach(e=>{Sd(e,t.resolvedUri)})}),this.trigger("loadedplaylist"),this.request||this.media(this.main.playlists[0])):(t=this.srcUri()||window.location.href,this.main=(i=t,s=fd(0,i),(r={mediaGroups:{AUDIO:{},VIDEO:{},"CLOSED-CAPTIONS":{},SUBTITLES:{}},uri:window.location.href,resolvedUri:window.location.href,playlists:[{uri:i,id:s,resolvedUri:i,attributes:{}}]}).playlists[s]=r.playlists[0],r.playlists[i]=r.playlists[0],r),this.haveMetadata({playlistObject:e,url:t,id:this.main.playlists[0].id}),this.trigger("loadedmetadata"))}}function Id(e,t,i,s){var r="arraybuffer"===e.responseType?e.response:e.responseText;!t&&r&&(e.responseTime=Date.now(),e.roundTripTime=e.responseTime-e.requestTime,e.bytesReceived=r.byteLength||r.length,e.bandwidth||(e.bandwidth=Math.floor(e.bytesReceived/e.roundTripTime*8*1e3))),i.headers&&(e.responseHeaders=i.headers),t&&"ETIMEDOUT"===t.code&&(e.timedout=!0),s(t=t||e.aborted||200===i.statusCode||206===i.statusCode||0===i.statusCode?t:new Error("XHR Failed with a response of: "+(e&&(r||e.responseText))),e)}function xd(){function n(e,i){e=O({timeout:45e3},e);var t=n.beforeRequest||T.Vhs.xhr.beforeRequest;t&&"function"==typeof t&&(t=t(e))&&(e=t);const s=(!0===T.Vhs.xhr.original?Md:T.Vhs.xhr)(e,function(e,t){return Id(s,e,t,i)}),r=s.abort;return s.abort=function(){return s.aborted=!0,r.apply(s,arguments)},s.uri=e.uri,s.requestTime=Date.now(),s}return n.original=!0,n}function Ad(e){var t={};return e.byterange&&(t.Range=function(e){let t;return"bytes="+e.offset+"-"+(t="bigint"==typeof e.offset||"bigint"==typeof e.length?window.BigInt(e.offset)+window.BigInt(e.length)-window.BigInt(1):e.offset+e.length-1)}(e.byterange)),t}function Pd(e,t){return e=e.toString(16),"00".substring(0,2-e.length)+e+(t%2?" ":"")}function Ld(e){return 32<=e&&e<126?String.fromCharCode(e):"."}function Od(i){const s={};return Object.keys(i).forEach(e=>{var t=i[e];qn(t)?s[e]={bytes:t.buffer,byteOffset:t.byteOffset,byteLength:t.byteLength}:s[e]=t}),s}function Dd(e){var t=e.byterange||{length:1/0,offset:0};return[t.length,t.offset,e.resolvedUri].join(",")}function Nd(e){return e.resolvedUri}const Md=T["xhr"],Rd=e=>{var t,i,s=Array.prototype.slice.call(e);let r="";for(let e=0;eRd(e),textRanges:e=>{let t="",i;for(i=0;ie.transmuxedPresentationEnd-e.transmuxedPresentationStart-e.transmuxerPrependedSeconds,Fd=({playlist:e,time:t=void 0,callback:i})=>{var s,r;if(i)return e&&void 0!==t?(e=((t,i)=>{if(!i||!i.segments||0===i.segments.length)return null;let s=0,r;for(let e=0;es){if(t>s+e.duration*Ud)return null;r=e}return{segment:r,estimatedStart:r.videoTimingInfo?r.videoTimingInfo.transmuxedPresentationStart:s-r.duration,type:r.videoTimingInfo?"accurate":"estimate"}})(t,e))?"estimate"===e.type?i({message:"Accurate programTime could not be determined. Please seek to e.seekTime and try again",seekTime:e.estimatedStart}):(s={mediaSeconds:t},t=t,(r=(e=e.segment).dateTimeObject?(r=e.videoTimingInfo.transmuxerPrependedSeconds,t=t-(e.videoTimingInfo.transmuxedPresentationStart+r),new Date(e.dateTimeObject.getTime()+1e3*t)):null)&&(s.programDateTime=r.toISOString()),i(null,s)):i({message:"valid programTime was not found"}):i({message:"getProgramTime: playlist and time must be provided"});throw new Error("getProgramTime: callback must be provided")},jd=({programTime:e,playlist:t,retryCount:i=2,seekTo:s,pauseAfterSeek:r=!0,tech:n,callback:a})=>{var o,l,d;if(a)return"undefined"!=typeof e&&t&&s?t.endList||n.hasStarted_?(t=>{if(!t.segments||0===t.segments.length)return!1;for(let e=0;e{let i;try{i=new Date(e)}catch(e){return null}if(!t||!t.segments||0===t.segments.length)return null;let s=t.segments[0];if(ia?null:{segment:s=i>n?e:s,estimatedStart:s.videoTimingInfo?s.videoTimingInfo.transmuxedPresentationStart:md.duration(t,t.mediaSequence+t.segments.indexOf(s)),type:s.videoTimingInfo?"accurate":"estimate"}})(e,t))?(l=((e,t)=>{let i,s;try{i=new Date(e),s=new Date(t)}catch(e){}e=i.getTime();return(s.getTime()-e)/1e3})((o=d.segment).dateTimeObject,e),"estimate"===d.type?0===i?a({message:e+" is not buffered yet. Try again"}):(s(d.estimatedStart+l),void n.one("seeked",()=>{jd({programTime:e,playlist:t,retryCount:i-1,seekTo:s,pauseAfterSeek:r,tech:n,callback:a})})):(d=o.start+l,n.one("seeked",()=>a(null,n.currentTime())),r&&n.pause(),void s(d))):a({message:e+" was not found in the stream"}):a({message:"programDateTime tags must be provided in the manifest "+t.resolvedUri}):a({message:"player must be playing a live stream to start buffering"}):a({message:"seekToProgramTime: programTime, seekTo and playlist must be provided"});throw new Error("seekToProgramTime: callback must be provided")},Hd=(e,t)=>{if(4===e.readyState)return t()},qd=(e,t,r)=>{let s=[],n,a=!1;function o(e,t,i,s){return t.abort(),a=!0,r(e,t,i,s)}function i(e,t){var i;if(!a)return e?o(e,t,"",s):(i=t.responseText.substring(s&&s.byteLength||0,t.responseText.length),s=function(){for(var e,t,i,s=arguments.length,r=new Array(s),n=0;no(e,t,"",s)):o(null,t,i,s))}const l=t({uri:e,beforeSend(e){e.overrideMimeType("text/plain; charset=x-user-defined"),e.addEventListener("progress",function({}){return Id(e,null,{statusCode:e.status},i)})}},function(e,t){return Id(l,e,t,i)});return l};Mi=T.EventTarget;function Vd(t,i){if(!wd(t,i))return!1;if(t.sidx&&i.sidx&&(t.sidx.offset!==i.sidx.offset||t.sidx.length!==i.sidx.length))return!1;if(!t.sidx&&i.sidx||t.sidx&&!i.sidx)return!1;if(t.segments&&!i.segments||!t.segments&&i.segments)return!1;if(t.segments||i.segments)for(let e=0;e{return`placeholder-uri-${e}-${t}-`+(s.attributes.NAME||i)},Wd=({mainXml:e,srcUrl:t,clientOffset:i,sidxMapping:s,previousManifest:r})=>{e=e,i={manifestUri:t,clientOffset:i,sidxMapping:s,previousManifest:r},e=dl(hl(e),i),s=tl(e.representationInfo);r=Xo({dashPlaylists:s,locations:e.locations,sidxMapping:i.sidxMapping,previousManifest:i.previousManifest});return vd(r,t,$d),r},Gd=(e,t,i)=>{let a=!0,o=O(e,{duration:t.duration,minimumUpdatePeriod:t.minimumUpdatePeriod,timelineStarts:t.timelineStarts});for(let e=0;e{var r,n;e.playlists&&e.playlists.length&&(r=e.playlists[0].id,n=Ed(o,e.playlists[0],Vd))&&(s in(o=n).mediaGroups[t][i]||(o.mediaGroups[t][i][s]=e),o.mediaGroups[t][i][s].playlists[0]=o.playlists[r],a=!1)}),n=o,l=t,yd(n,(e,t,i,s)=>{s in l.mediaGroups[t][i]||delete n.mediaGroups[t][i][s]}),(a=t.minimumUpdatePeriod===e.minimumUpdatePeriod&&a)?null:o},zd=(e,t)=>{return(Boolean(!e.map&&!t.map)||Boolean(e.map&&t.map&&e.map.byterange.offset===t.map.byterange.offset&&e.map.byterange.length===t.map.byterange.length))&&e.uri===t.uri&&e.byterange.offset===t.byterange.offset&&e.byterange.length===t.byterange.length},Xd=(e,t)=>{var i={};for(const a in e){var s=e[a].sidx;if(s){var r=Fo(s);if(!t[r])break;var n=t[r].sidxInfo;zd(n,s)&&(i[r]=t[r])}}return i};class Kd extends Mi{constructor(e,t,i={},s){super(),this.mainPlaylistLoader_=s||this,s||(this.isMain_=!0);var{withCredentials:s=!1}=i;if(this.vhs_=t,this.withCredentials=s,!e)throw new Error("A non-empty playlist URL or object is required");this.on("minimumUpdatePeriod",()=>{this.refreshXml_()}),this.on("mediaupdatetimeout",()=>{this.refreshMedia_(this.media().id)}),this.state="HAVE_NOTHING",this.loadedPlaylists_={},this.logger_=Bl("DashPlaylistLoader"),this.isMain_?(this.mainPlaylistLoader_.srcUrl=e,this.mainPlaylistLoader_.sidxMapping_={}):this.childPlaylist_=e}requestErrored_(e,t,i){return!this.request||(this.request=null,e?(this.error="object"!=typeof e||e instanceof Error?{status:t.status,message:"DASH request error at URL: "+t.uri,response:t.response,code:2}:e,i&&(this.state=i),this.trigger("error"),!0):void 0)}addSidxSegments_(a,s,r){const n=a.sidx&&Fo(a.sidx);if(a.sidx&&n&&!this.mainPlaylistLoader_.sidxMapping_[n]){const o=Ul(a.sidx.resolvedUri),l=(t,i)=>{if(!this.requestErrored_(t,i,s)){t=this.mainPlaylistLoader_.sidxMapping_;let e;try{e=Tl(S(i.response).subarray(8))}catch(e){return void this.requestErrored_(e,i,s)}return t[n]={sidxInfo:a.sidx,sidx:e},Do(a,e,a.sidx.resolvedUri),r(!0)}};this.request=qd(o,this.vhs_.xhr,(e,t,i,s)=>{var r,n;return e?l(e,t):i&&"mp4"===i?({offset:r,length:n}=a.sidx.byterange,s.length>=n+r?l(e,{response:s.subarray(r,r+n),status:t.status,uri:t.uri}):void(this.request=this.vhs_.xhr({uri:o,responseType:"arraybuffer",headers:Ad({byterange:a.sidx.byterange})},l))):l({status:t.status,message:`Unsupported ${i||"unknown"} container type for sidx segment at URL: `+o,response:"",playlist:a,internal:!0,playlistExclusionDuration:1/0,code:2},t)})}else this.mediaRequest_=window.setTimeout(()=>r(!1),0)}dispose(){this.trigger("dispose"),this.stopRequest(),this.loadedPlaylists_={},window.clearTimeout(this.minimumUpdatePeriodTimeout_),window.clearTimeout(this.mediaRequest_),window.clearTimeout(this.mediaUpdateTimeout),this.mediaUpdateTimeout=null,this.mediaRequest_=null,this.minimumUpdatePeriodTimeout_=null,this.mainPlaylistLoader_.createMupOnMedia_&&(this.off("loadedmetadata",this.mainPlaylistLoader_.createMupOnMedia_),this.mainPlaylistLoader_.createMupOnMedia_=null),this.off()}hasPendingRequest(){return this.request||this.mediaRequest_}stopRequest(){var e;this.request&&(e=this.request,this.request=null,e.onreadystatechange=null,e.abort())}media(t){if(!t)return this.media_;if("HAVE_NOTHING"===this.state)throw new Error("Cannot switch media playlist from "+this.state);const i=this.state;if("string"==typeof t){if(!this.mainPlaylistLoader_.main.playlists[t])throw new Error("Unknown playlist URI: "+t);t=this.mainPlaylistLoader_.main.playlists[t]}var e=!this.media_||t.id!==this.media_.id;e&&this.loadedPlaylists_[t.id]&&this.loadedPlaylists_[t.id].endList?(this.state="HAVE_METADATA",this.media_=t,e&&(this.trigger("mediachanging"),this.trigger("mediachange"))):e&&(this.media_&&this.trigger("mediachanging"),this.addSidxSegments_(t,i,e=>{this.haveMetadata({startingState:i,playlist:t})}))}haveMetadata({startingState:e,playlist:t}){this.state="HAVE_METADATA",this.loadedPlaylists_[t.id]=t,this.mediaRequest_=null,this.refreshMedia_(t.id),"HAVE_MAIN_MANIFEST"===e?this.trigger("loadedmetadata"):this.trigger("mediachange")}pause(){this.mainPlaylistLoader_.createMupOnMedia_&&(this.off("loadedmetadata",this.mainPlaylistLoader_.createMupOnMedia_),this.mainPlaylistLoader_.createMupOnMedia_=null),this.stopRequest(),window.clearTimeout(this.mediaUpdateTimeout),this.mediaUpdateTimeout=null,this.isMain_&&(window.clearTimeout(this.mainPlaylistLoader_.minimumUpdatePeriodTimeout_),this.mainPlaylistLoader_.minimumUpdatePeriodTimeout_=null),"HAVE_NOTHING"===this.state&&(this.started=!1)}load(e){window.clearTimeout(this.mediaUpdateTimeout),this.mediaUpdateTimeout=null;var t=this.media();e?(e=t?t.targetDuration/2*1e3:5e3,this.mediaUpdateTimeout=window.setTimeout(()=>this.load(),e)):this.started?t&&!t.endList?(this.isMain_&&!this.minimumUpdatePeriodTimeout_&&(this.trigger("minimumUpdatePeriod"),this.updateMinimumUpdatePeriodTimeout_()),this.trigger("mediaupdatetimeout")):this.trigger("loadedplaylist"):this.start()}start(){this.started=!0,this.isMain_?this.requestMain_((e,t)=>{this.haveMain_(),this.hasPendingRequest()||this.media_||this.media(this.mainPlaylistLoader_.main.playlists[0])}):this.mediaRequest_=window.setTimeout(()=>this.haveMain_(),0)}requestMain_(s){this.request=this.vhs_.xhr({uri:this.mainPlaylistLoader_.srcUrl,withCredentials:this.withCredentials},(e,t)=>{if(this.requestErrored_(e,t))"HAVE_NOTHING"===this.state&&(this.started=!1);else{const i=t.responseText!==this.mainPlaylistLoader_.mainXml_;if(this.mainPlaylistLoader_.mainXml_=t.responseText,t.responseHeaders&&t.responseHeaders.date?this.mainLoaded_=Date.parse(t.responseHeaders.date):this.mainLoaded_=Date.now(),this.mainPlaylistLoader_.srcUrl=Ul(this.mainPlaylistLoader_.srcUrl,t),!i)return s(t,i);this.handleMain_(),this.syncClientServerClock_(()=>s(t,i))}})}syncClientServerClock_(s){const r=ul(this.mainPlaylistLoader_.mainXml_);return null===r?(this.mainPlaylistLoader_.clientOffset_=this.mainLoaded_-Date.now(),s()):"DIRECT"===r.method?(this.mainPlaylistLoader_.clientOffset_=r.value-Date.now(),s()):void(this.request=this.vhs_.xhr({uri:Rl(this.mainPlaylistLoader_.srcUrl,r.value),method:r.method,withCredentials:this.withCredentials},(t,i)=>{if(this.request){if(t)return this.mainPlaylistLoader_.clientOffset_=this.mainLoaded_-Date.now(),s();let e;e="HEAD"===r.method?i.responseHeaders&&i.responseHeaders.date?Date.parse(i.responseHeaders.date):this.mainLoaded_:Date.parse(i.responseText),this.mainPlaylistLoader_.clientOffset_=e-Date.now(),s()}}))}haveMain_(){this.state="HAVE_MAIN_MANIFEST",this.isMain_?this.trigger("loadedplaylist"):this.media_||this.media(this.childPlaylist_)}handleMain_(){this.mediaRequest_=null;var e=this.mainPlaylistLoader_.main;let t=Wd({mainXml:this.mainPlaylistLoader_.mainXml_,srcUrl:this.mainPlaylistLoader_.srcUrl,clientOffset:this.mainPlaylistLoader_.clientOffset_,sidxMapping:this.mainPlaylistLoader_.sidxMapping_,previousManifest:e});e&&(t=Gd(e,t,this.mainPlaylistLoader_.sidxMapping_)),this.mainPlaylistLoader_.main=t||e;var i=this.mainPlaylistLoader_.main.locations&&this.mainPlaylistLoader_.main.locations[0];return i&&i!==this.mainPlaylistLoader_.srcUrl&&(this.mainPlaylistLoader_.srcUrl=i),(!e||t&&t.minimumUpdatePeriod!==e.minimumUpdatePeriod)&&this.updateMinimumUpdatePeriodTimeout_(),Boolean(t)}updateMinimumUpdatePeriodTimeout_(){var e=this.mainPlaylistLoader_;e.createMupOnMedia_&&(e.off("loadedmetadata",e.createMupOnMedia_),e.createMupOnMedia_=null),e.minimumUpdatePeriodTimeout_&&(window.clearTimeout(e.minimumUpdatePeriodTimeout_),e.minimumUpdatePeriodTimeout_=null);let t=e.main&&e.main.minimumUpdatePeriod;0===t&&(e.media()?t=1e3*e.media().targetDuration:(e.createMupOnMedia_=e.updateMinimumUpdatePeriodTimeout_,e.one("loadedmetadata",e.createMupOnMedia_))),"number"!=typeof t||t<=0?t<0&&this.logger_(`found invalid minimumUpdatePeriod of ${t}, not setting a timeout`):this.createMUPTimeout_(t)}createMUPTimeout_(e){const t=this.mainPlaylistLoader_;t.minimumUpdatePeriodTimeout_=window.setTimeout(()=>{t.minimumUpdatePeriodTimeout_=null,t.trigger("minimumUpdatePeriod"),t.createMUPTimeout_(e)},e)}refreshXml_(){this.requestMain_((e,t)=>{t&&(this.media_&&(this.media_=this.mainPlaylistLoader_.main.playlists[this.media_.id]),this.mainPlaylistLoader_.sidxMapping_=((e,r)=>{let n=Xd(e.playlists,r);return yd(e,(e,t,i,s)=>{e.playlists&&e.playlists.length&&(e=e.playlists,n=O(n,Xd(e,r)))}),n})(this.mainPlaylistLoader_.main,this.mainPlaylistLoader_.sidxMapping_),this.addSidxSegments_(this.media(),this.state,e=>{this.refreshMedia_(this.media().id)}))})}refreshMedia_(e){if(!e)throw new Error("refreshMedia_ must take a media id");this.media_&&this.isMain_&&this.handleMain_();var t=this.mainPlaylistLoader_.main.playlists;const i=!this.media_||this.media_!==t[e];if(i?this.media_=t[e]:this.trigger("playlistunchanged"),!this.mediaUpdateTimeout){const s=()=>{this.media().endList||(this.mediaUpdateTimeout=window.setTimeout(()=>{this.trigger("mediaupdatetimeout"),s()},kd(this.media(),Boolean(i))))};s()}this.trigger("loadedplaylist")}}var D={GOAL_BUFFER_LENGTH:30,MAX_GOAL_BUFFER_LENGTH:60,BACK_BUFFER_LENGTH:30,GOAL_BUFFER_LENGTH_RATE:1,INITIAL_BANDWIDTH:4194304,BANDWIDTH_VARIANCE:1.2,BUFFER_LOW_WATER_LINE:0,MAX_BUFFER_LOW_WATER_LINE:30,EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE:16,BUFFER_LOW_WATER_LINE_RATE:1,BUFFER_HIGH_WATER_LINE:30};function Yd(e){return e.on=e.addEventListener,e.off=e.removeEventListener,e}const Qd=t=>{var i=new Uint8Array(new ArrayBuffer(t.length));for(let e=0;e>>1,e.samplingfrequencyindex<<7|e.channelcount<<3,6,1,2]))},X=function(e){return l(d.hdlr,re[e])},z=function(e){var t=new Uint8Array([0,0,0,0,0,0,0,2,0,0,0,3,0,1,95,144,e.duration>>>24&255,e.duration>>>16&255,e.duration>>>8&255,255&e.duration,85,196,0,0]);return e.samplerate&&(t[12]=e.samplerate>>>24&255,t[13]=e.samplerate>>>16&255,t[14]=e.samplerate>>>8&255,t[15]=255&e.samplerate),l(d.mdhd,t)},G=function(e){return l(d.mdia,z(e),X(e.type),j(e))},F=function(e){return l(d.mfhd,new Uint8Array([0,0,0,0,(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e]))},j=function(e){return l(d.minf,"video"===e.type?l(d.vmhd,ne):l(d.smhd,ae),R(),Y(e))},q=function(e){for(var t=e.length,i=[];t--;)i[t]=Z(e[t]);return l.apply(null,[d.mvex].concat(i))},V=function(e){e=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,2,0,1,95,144,(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return l(d.mvhd,e)},K=function(e){for(var t,i=e.samples||[],s=new Uint8Array(4+i.length),r=0;r>>8),n.push(255&s[o].byteLength),n=n.concat(Array.prototype.slice.call(s[o]));for(o=0;o>>8),a.push(255&r[o].byteLength),a=a.concat(Array.prototype.slice.call(r[o]));return t=[d.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(65280&e.width)>>8,255&e.width,(65280&e.height)>>8,255&e.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,19,118,105,100,101,111,106,115,45,99,111,110,116,114,105,98,45,104,108,115,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),l(d.avcC,new Uint8Array([1,e.profileIdc,e.profileCompatibility,e.levelIdc,255].concat([s.length],n,[r.length],a))),l(d.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192]))],e.sarRatio&&(i=e.sarRatio[0],e=e.sarRatio[1],t.push(l(d.pasp,new Uint8Array([(4278190080&i)>>24,(16711680&i)>>16,(65280&i)>>8,255&i,(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])))),l.apply(null,t)},ce=function(e){return l(d.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,(65280&e.channelcount)>>8,255&e.channelcount,(65280&e.samplesize)>>8,255&e.samplesize,0,0,0,0,(65280&e.samplerate)>>8,255&e.samplerate,0,0]),U(e))},W=function(e){e=new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,(4278190080&e.id)>>24,(16711680&e.id)>>16,(65280&e.id)>>8,255&e.id,0,0,0,0,(4278190080&e.duration)>>24,(16711680&e.duration)>>16,(65280&e.duration)>>8,255&e.duration,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,(65280&e.width)>>8,255&e.width,0,0,(65280&e.height)>>8,255&e.height,0,0]);return l(d.tkhd,e)},J=function(e){var t,i=l(d.tfhd,new Uint8Array([0,0,0,58,(4278190080&e.id)>>24,(16711680&e.id)>>16,(65280&e.id)>>8,255&e.id,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0])),s=Math.floor(e.baseMediaDecodeTime/ve),r=Math.floor(e.baseMediaDecodeTime%ve),s=l(d.tfdt,new Uint8Array([1,0,0,0,s>>>24&255,s>>>16&255,s>>>8&255,255&s,r>>>24&255,r>>>16&255,r>>>8&255,255&r]));return"audio"===e.type?(t=ee(e,92),l(d.traf,i,s,t)):(r=K(e),t=ee(e,r.length+92),l(d.traf,i,s,t,r))},$=function(e){return e.duration=e.duration||4294967295,l(d.trak,W(e),G(e))},Z=function(e){var t=new Uint8Array([0,0,0,0,(4278190080&e.id)>>24,(16711680&e.id)>>16,(65280&e.id)>>8,255&e.id,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return"video"!==e.type&&(t[t.length-1]=0),l(d.trex,t)},pe=function(e,t){var i=0,s=0,r=0,n=0;return e.length&&(void 0!==e[0].duration&&(i=1),void 0!==e[0].size&&(s=2),void 0!==e[0].flags&&(r=4),void 0!==e[0].compositionTimeOffset)&&(n=8),[0,0,i|s|r|n,1,(4278190080&e.length)>>>24,(16711680&e.length)>>>16,(65280&e.length)>>>8,255&e.length,(4278190080&t)>>>24,(16711680&t)>>>16,(65280&t)>>>8,255&t]},me=function(e,t){var i,s,r,n,a=e.samples||[];for(t+=20+16*a.length,e=pe(a,t),(s=new Uint8Array(e.length+16*a.length)).set(e),i=e.length,n=0;n>>24,s[i++]=(16711680&r.duration)>>>16,s[i++]=(65280&r.duration)>>>8,s[i++]=255&r.duration,s[i++]=(4278190080&r.size)>>>24,s[i++]=(16711680&r.size)>>>16,s[i++]=(65280&r.size)>>>8,s[i++]=255&r.size,s[i++]=r.flags.isLeading<<2|r.flags.dependsOn,s[i++]=r.flags.isDependedOn<<6|r.flags.hasRedundancy<<4|r.flags.paddingValue<<1|r.flags.isNonSyncSample,s[i++]=61440&r.flags.degradationPriority,s[i++]=15&r.flags.degradationPriority,s[i++]=(4278190080&r.compositionTimeOffset)>>>24,s[i++]=(16711680&r.compositionTimeOffset)>>>16,s[i++]=(65280&r.compositionTimeOffset)>>>8,s[i++]=255&r.compositionTimeOffset;return l(d.trun,s)},ge=function(e,t){var i,s,r,n,a=e.samples||[];for(t+=20+8*a.length,e=pe(a,t),(i=new Uint8Array(e.length+8*a.length)).set(e),s=e.length,n=0;n>>24,i[s++]=(16711680&r.duration)>>>16,i[s++]=(65280&r.duration)>>>8,i[s++]=255&r.duration,i[s++]=(4278190080&r.size)>>>24,i[s++]=(16711680&r.size)>>>16,i[s++]=(65280&r.size)>>>8,i[s++]=255&r.size;return l(d.trun,i)},ee=function(e,t){return("audio"===e.type?ge:me)(e,t)};function be(e,t){var i=Ie();return i.dataOffset=t,i.compositionTimeOffset=e.pts-e.dts,i.duration=e.duration,i.size=4*e.length,i.size+=e.byteLength,e.keyFrame&&(i.flags.dependsOn=2,i.flags.isNonSyncSample=0),i}function r(e){for(var t=[];e--;)t.push(0);return t}function n(e){e=e||{},n.prototype.init.call(this),this.parse708captions_="boolean"!=typeof e.parse708captions||e.parse708captions,this.captionPackets_=[],this.ccStreams_=[new g(0,0),new g(0,1),new g(1,0),new g(1,1)],this.parse708captions_&&(this.cc708Stream_=new m({captionServices:e.captionServices})),this.reset(),this.ccStreams_.forEach(function(e){e.on("data",this.trigger.bind(this,"data")),e.on("partialdone",this.trigger.bind(this,"partialdone")),e.on("done",this.trigger.bind(this,"done"))},this),this.parse708captions_&&(this.cc708Stream_.on("data",this.trigger.bind(this,"data")),this.cc708Stream_.on("partialdone",this.trigger.bind(this,"partialdone")),this.cc708Stream_.on("done",this.trigger.bind(this,"done")))}function o(e){return 32<=e&&e<=127||160<=e&&e<=255}function a(e){this.windowNum=e,this.reset()}function Te(e,t,i){this.serviceNum=e,this.text="",this.currentWindow=new a(-1),this.windows=[],this.stream=i,"string"==typeof t&&this.createTextDecoder(t)}function Se(e){return null===e?"":(e=Fe[e]||e,String.fromCharCode(e))}function h(){for(var e=[],t=je+1;t--;)e.push("");return e}function we(e,t){var i=1;for(tWe;)e+=i*$e;return e}function Ee(e){var t,i;Ee.prototype.init.call(this),this.type_=e||"shared",this.push=function(e){"shared"!==this.type_&&e.type!==this.type_||(void 0===i&&(i=e.dts),e.dts=we(e.dts,i),e.pts=we(e.pts,i),t=e.dts,this.trigger("data",e))},this.flush=function(){i=t,this.trigger("done")},this.endTimeline=function(){this.flush(),this.trigger("endedtimeline")},this.discontinuity=function(){t=i=void 0},this.reset=function(){this.discontinuity(),this.trigger("reset")}}var ke,Ce={ftyp:B=function(){return l(d.ftyp,te,ie,te,se)},mdat:function(e){return l(d.mdat,e)},moof:function(e,t){for(var i=[],s=t.length;s--;)i[s]=J(t[s]);return l.apply(null,[d.moof,F(e)].concat(i))},moov:H=function(e){for(var t=e.length,i=[];t--;)i[t]=$(e[t]);return l.apply(null,[d.moov,V(4294967295)].concat(i).concat(q(e)))},initSegment:function(e){var t=B(),e=H(e),i=new Uint8Array(t.byteLength+e.byteLength);return i.set(t),i.set(e,t.byteLength),i}},Ie=function(){return{size:0,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0,degradationPriority:0,isNonSyncSample:1}}},xe={groupNalsIntoFrames:function(e){var t,i,s=[],r=[];for(r.byteLength=0,r.nalCount=0,t=s.byteLength=r.duration=0;tMe.ONE_SECOND_IN_TS/2))){for(a=(a=Ne()[e.samplerate])||t[0].data,o=0;o=i?e:(t.minSegmentDts=1/0,e.filter(function(e){return e.dts>=i&&(t.minSegmentDts=Math.min(t.minSegmentDts,e.dts),t.minSegmentPts=t.minSegmentDts,!0)}))},generateSampleTable:function(e){for(var t,i=[],s=0;s=this.virtualRowCount&&"function"==typeof this.beforeRowOverflow&&this.beforeRowOverflow(e),0this.virtualRowCount;)this.rows.shift(),this.rowIdx--},a.prototype.isEmpty=function(){return 0===this.rows.length||1===this.rows.length&&""===this.rows[0]},a.prototype.addText=function(e){this.rows[this.rowIdx]+=e},a.prototype.backspace=function(){var e;this.isEmpty()||(e=this.rows[this.rowIdx],this.rows[this.rowIdx]=e.substr(0,e.length-1))},Te.prototype.init=function(e,t){this.startPts=e;for(var i=0;i<8;i++)this.windows[i]=new a(i),"function"==typeof t&&(this.windows[i].beforeRowOverflow=t)},Te.prototype.setCurrentWindow=function(e){this.currentWindow=this.windows[e]},Te.prototype.createTextDecoder=function(t){if("undefined"==typeof TextDecoder)this.stream.trigger("log",{level:"warn",message:"The `encoding` option is unsupported without TextDecoder support"});else try{this.textDecoder_=new TextDecoder(t)}catch(e){this.stream.trigger("log",{level:"warn",message:"TextDecoder could not be created with "+t+" encoding. "+e})}},function(e){e=e||{},m.prototype.init.call(this);var t,i=this,s=e.captionServices||{},r={};Object.keys(s).forEach(e=>{t=s[e],/^SERVICE/.test(e)&&(r[e]=t.encoding)}),this.serviceEncodings=r,this.current708Packet=null,this.services={},this.push=function(e){(3===e.type||null===i.current708Packet)&&i.new708Packet(),i.add708Bytes(e)}}),Fe=(m.prototype=new p,m.prototype.new708Packet=function(){null!==this.current708Packet&&this.push708Packet(),this.current708Packet={data:[],ptsVals:[]}},m.prototype.add708Bytes=function(e){var t=e.ccData,i=t>>>8,t=255&t;this.current708Packet.ptsVals.push(e.pts),this.current708Packet.data.push(i),this.current708Packet.data.push(t)},m.prototype.push708Packet=function(){var e,t=this.current708Packet,i=t.data,s=null,r=0,n=i[r++];for(t.seq=n>>6,t.sizeCode=63&n;r>5)&&0>5,t.rowLock=(16&s)>>4,t.columnLock=(8&s)>>3,t.priority=7&s,s=i[++e],t.relativePositioning=(128&s)>>7,t.anchorVertical=127&s,s=i[++e],t.anchorHorizontal=s,s=i[++e],t.anchorPoint=(240&s)>>4,t.rowCount=15&s,s=i[++e],t.columnCount=63&s,s=i[++e],t.windowStyle=(56&s)>>3,t.penStyle=7&s,t.virtualRowCount=t.rowCount+1,e},m.prototype.setWindowAttributes=function(e,t){var i=this.current708Packet.data,t=(i[e],t.currentWindow.winAttr),s=i[++e];return t.fillOpacity=(192&s)>>6,t.fillRed=(48&s)>>4,t.fillGreen=(12&s)>>2,t.fillBlue=3&s,s=i[++e],t.borderType=(192&s)>>6,t.borderRed=(48&s)>>4,t.borderGreen=(12&s)>>2,t.borderBlue=3&s,s=i[++e],t.borderType+=(128&s)>>5,t.wordWrap=(64&s)>>6,t.printDirection=(48&s)>>4,t.scrollDirection=(12&s)>>2,t.justify=3&s,s=i[++e],t.effectSpeed=(240&s)>>4,t.effectDirection=(12&s)>>2,t.displayEffect=3&s,e},m.prototype.flushDisplayed=function(e,t){for(var i=[],s=0;s<8;s++)t.windows[s].visible&&!t.windows[s].isEmpty()&&i.push(t.windows[s].getText());t.endPts=e,t.text=i.join("\n\n"),this.pushCaption(t),t.startPts=e},m.prototype.pushCaption=function(e){""!==e.text&&(this.trigger("data",{startPts:e.startPts,endPts:e.endPts,text:e.text,stream:"cc708_"+e.serviceNum}),e.text="",e.startPts=e.endPts)},m.prototype.displayWindows=function(e,t){var i=this.current708Packet.data[++e],s=this.getPts(e);this.flushDisplayed(s,t);for(var r=0;r<8;r++)i&1<>4,t.offset=(12&s)>>2,t.penSize=3&s,s=i[++e],t.italics=(128&s)>>7,t.underline=(64&s)>>6,t.edgeType=(56&s)>>3,t.fontStyle=7&s,e},m.prototype.setPenColor=function(e,t){var i=this.current708Packet.data,t=(i[e],t.currentWindow.penColor),s=i[++e];return t.fgOpacity=(192&s)>>6,t.fgRed=(48&s)>>4,t.fgGreen=(12&s)>>2,t.fgBlue=3&s,s=i[++e],t.bgOpacity=(192&s)>>6,t.bgRed=(48&s)>>4,t.bgGreen=(12&s)>>2,t.bgBlue=3&s,s=i[++e],t.edgeRed=(48&s)>>4,t.edgeGreen=(12&s)>>2,t.edgeBlue=3&s,e},m.prototype.setPenLocation=function(e,t){var i=this.current708Packet.data,s=(i[e],t.currentWindow.penLoc);return t.currentWindow.pendingNewLine=!0,t=i[++e],s.row=15&t,t=i[++e],s.column=63&t,e},m.prototype.reset=function(e,t){var i=this.getPts(e);return this.flushDisplayed(i,t),this.initService(t.serviceNum,e)},{42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,304:174,305:176,306:189,307:191,308:8482,309:162,310:163,311:9834,312:224,313:160,314:232,315:226,316:234,317:238,318:244,319:251,544:193,545:201,546:211,547:218,548:220,549:252,550:8216,551:161,552:42,553:39,554:8212,555:169,556:8480,557:8226,558:8220,559:8221,560:192,561:194,562:199,563:200,564:202,565:203,566:235,567:206,568:207,569:239,570:212,571:217,572:249,573:219,574:171,575:187,800:195,801:227,802:205,803:204,804:236,805:210,806:242,807:213,808:245,809:123,810:125,811:92,812:94,813:95,814:124,815:126,816:196,817:228,818:214,819:246,820:223,821:165,822:164,823:9474,824:197,825:229,826:216,827:248,828:9484,829:9488,830:9492,831:9496}),je=14,He=[4352,4384,4608,4640,5376,5408,5632,5664,5888,5920,4096,4864,4896,5120,5152],g=function(e,t){g.prototype.init.call(this),this.field_=e||0,this.dataChannel_=t||0,this.name_="CC"+(1+(this.field_<<1|this.dataChannel_)),this.setConstants(),this.reset(),this.push=function(e){var t,i,s,r,n=32639&e.ccData;n===this.lastControlCode_?this.lastControlCode_=null:(4096==(61440&n)?this.lastControlCode_=n:n!==this.PADDING_&&(this.lastControlCode_=null),t=n>>>8,i=255&n,n!==this.PADDING_&&(n===this.RESUME_CAPTION_LOADING_?this.mode_="popOn":n===this.END_OF_CAPTION_?(this.mode_="popOn",this.clearFormatting(e.pts),this.flushDisplayed(e.pts),r=this.displayed_,this.displayed_=this.nonDisplayed_,this.nonDisplayed_=r,this.startPts_=e.pts):n===this.ROLL_UP_2_ROWS_?(this.rollUpRows_=2,this.setRollUp(e.pts)):n===this.ROLL_UP_3_ROWS_?(this.rollUpRows_=3,this.setRollUp(e.pts)):n===this.ROLL_UP_4_ROWS_?(this.rollUpRows_=4,this.setRollUp(e.pts)):n===this.CARRIAGE_RETURN_?(this.clearFormatting(e.pts),this.flushDisplayed(e.pts),this.shiftRowsUp_(),this.startPts_=e.pts):n===this.BACKSPACE_?"popOn"===this.mode_?this.nonDisplayed_[this.row_]=this.nonDisplayed_[this.row_].slice(0,-1):this.displayed_[this.row_]=this.displayed_[this.row_].slice(0,-1):n===this.ERASE_DISPLAYED_MEMORY_?(this.flushDisplayed(e.pts),this.displayed_=h()):n===this.ERASE_NON_DISPLAYED_MEMORY_?this.nonDisplayed_=h():n===this.RESUME_DIRECT_CAPTIONING_?("paintOn"!==this.mode_&&(this.flushDisplayed(e.pts),this.displayed_=h()),this.mode_="paintOn",this.startPts_=e.pts):this.isSpecialCharacter(t,i)?(s=Se((t=(3&t)<<8)|i),this[this.mode_](e.pts,s),this.column_++):this.isExtCharacter(t,i)?("popOn"===this.mode_?this.nonDisplayed_[this.row_]=this.nonDisplayed_[this.row_].slice(0,-1):this.displayed_[this.row_]=this.displayed_[this.row_].slice(0,-1),s=Se((t=(3&t)<<8)|i),this[this.mode_](e.pts,s),this.column_++):this.isMidRowCode(t,i)?(this.clearFormatting(e.pts),this[this.mode_](e.pts," "),this.column_++,14==(14&i)&&this.addFormatting(e.pts,["i"]),1==(1&i)&&this.addFormatting(e.pts,["u"])):this.isOffsetControlCode(t,i)?this.column_+=3&i:this.isPAC(t,i)?(r=He.indexOf(7968&n),"rollUp"===this.mode_&&(r-this.rollUpRows_+1<0&&(r=this.rollUpRows_-1),this.setRollUp(e.pts,r)),r!==this.row_&&(this.clearFormatting(e.pts),this.row_=r),1&i&&-1===this.formatting_.indexOf("u")&&this.addFormatting(e.pts,["u"]),16==(16&n)&&(this.column_=4*((14&n)>>1)),this.isColorPAC(i)&&14==(14&i)&&this.addFormatting(e.pts,["i"])):this.isNormalChar(t)&&(0===i&&(i=null),s=Se(t),s+=Se(i),this[this.mode_](e.pts,s),this.column_+=s.length)))}},p=(g.prototype=new p,g.prototype.flushDisplayed=function(e){var t=this.displayed_.map(function(e,t){try{return e.trim()}catch(e){return this.trigger("log",{level:"warn",message:"Skipping a malformed 608 caption at index "+t+"."}),""}},this).join("\n").replace(/^\n+|\n+$/g,"");t.length&&this.trigger("data",{startPts:this.startPts_,endPts:e,text:t,stream:this.name_})},g.prototype.reset=function(){this.mode_="popOn",this.topRow_=0,this.startPts_=0,this.displayed_=h(),this.nonDisplayed_=h(),this.lastControlCode_=null,this.column_=0,this.row_=je,this.rollUpRows_=2,this.formatting_=[]},g.prototype.setConstants=function(){0===this.dataChannel_?(this.BASE_=16,this.EXT_=17,this.CONTROL_=(20|this.field_)<<8,this.OFFSET_=23):1===this.dataChannel_&&(this.BASE_=24,this.EXT_=25,this.CONTROL_=(28|this.field_)<<8,this.OFFSET_=31),this.PADDING_=0,this.RESUME_CAPTION_LOADING_=32|this.CONTROL_,this.END_OF_CAPTION_=47|this.CONTROL_,this.ROLL_UP_2_ROWS_=37|this.CONTROL_,this.ROLL_UP_3_ROWS_=38|this.CONTROL_,this.ROLL_UP_4_ROWS_=39|this.CONTROL_,this.CARRIAGE_RETURN_=45|this.CONTROL_,this.RESUME_DIRECT_CAPTIONING_=41|this.CONTROL_,this.BACKSPACE_=33|this.CONTROL_,this.ERASE_DISPLAYED_MEMORY_=44|this.CONTROL_,this.ERASE_NON_DISPLAYED_MEMORY_=46|this.CONTROL_},g.prototype.isSpecialCharacter=function(e,t){return e===this.EXT_&&48<=t&&t<=63},g.prototype.isExtCharacter=function(e,t){return(e===this.EXT_+1||e===this.EXT_+2)&&32<=t&&t<=63},g.prototype.isMidRowCode=function(e,t){return e===this.EXT_&&32<=t&&t<=47},g.prototype.isOffsetControlCode=function(e,t){return e===this.OFFSET_&&33<=t&&t<=35},g.prototype.isPAC=function(e,t){return e>=this.BASE_&&e"},"");this[this.mode_](e,t)},g.prototype.clearFormatting=function(e){var t;this.formatting_.length&&(t=this.formatting_.reverse().reduce(function(e,t){return e+""},""),this.formatting_=[],this[this.mode_](e,t))},g.prototype.popOn=function(e,t){var i=this.nonDisplayed_[this.row_];this.nonDisplayed_[this.row_]=i+=t},g.prototype.rollUp=function(e,t){var i=this.displayed_[this.row_];this.displayed_[this.row_]=i+=t},g.prototype.shiftRowsUp_=function(){for(var e=0;e{if(e)for(var s=i;s>>2,a=(a*=4)+(3&n[7]),o.timeStamp=a,void 0===t.pts&&void 0===t.dts&&(t.pts=o.timeStamp,t.dts=o.timeStamp),this.trigger("timestamp",o)),t.frames.push(o),(i=i+10+s)>>4&&(i+=e[i]+1),0===t.pid)t.type="pat",s(e.subarray(i),t),this.trigger("data",t);else if(t.pid===this.pmtPid)for(t.type="pmt",s(e.subarray(i),t),this.trigger("data",t);this.packetsWaitingForPmt.length;)this.processPes_.apply(this,this.packetsWaitingForPmt.shift());else void 0===this.programMapTable?this.packetsWaitingForPmt.push([e,i,t]):this.processPes_(e,i,t)},this.processPes_=function(e,t,i){i.pid===this.programMapTable.video?i.streamType=w.H264_STREAM_TYPE:i.pid===this.programMapTable.audio?i.streamType=w.ADTS_STREAM_TYPE:i.streamType=this.programMapTable["timed-metadata"][i.pid],i.type="pes",i.data=e.subarray(t),this.trigger("data",i)}}).prototype=new T,ze.STREAM_TYPES={h264:27,adts:15},(Xe=function(){function s(e,t,i){var s,r=new Uint8Array(e.size),n={type:t},a=0,o=0;if(e.data.length&&!(e.size<9)){for(n.trackId=e.data[0].pid,a=0;a>>3,t.pts*=4,t.pts+=(6&e[13])>>>1,t.dts=t.pts,64&i)&&(t.dts=(14&e[14])<<27|(255&e[15])<<20|(254&e[16])<<12|(255&e[17])<<5|(254&e[18])>>>3,t.dts*=4,t.dts+=(6&e[18])>>>1),t.data=e.subarray(9+e[8]))};Xe.prototype.init.call(this),this.push=function(i){({pat:function(){},pes:function(){var e,t;switch(i.streamType){case w.H264_STREAM_TYPE:e=n,t="video";break;case w.ADTS_STREAM_TYPE:e=a,t="audio";break;case w.METADATA_STREAM_TYPE:e=o,t="timed-metadata";break;default:return}i.payloadUnitStartIndicator&&s(e,t,!0),e.data.push(i),e.size+=i.data.byteLength},pmt:function(){var e={type:"metadata",tracks:[]};null!==(t=i.programMapTable).video&&e.tracks.push({timelineStartInfo:{baseMediaDecodeTime:0},id:+t.video,codec:"avc",type:"video"}),null!==t.audio&&e.tracks.push({timelineStartInfo:{baseMediaDecodeTime:0},id:+t.audio,codec:"adts",type:"audio"}),r=!0,l.trigger("data",e)}})[i.type]()},this.reset=function(){n.size=0,n.data.length=0,a.size=0,a.data.length=0,this.trigger("reset")},this.flushStreams_=function(){s(n,"video"),s(a,"audio"),s(o,"timed-metadata")},this.flush=function(){var e;!r&&t&&(e={type:"metadata",tracks:[]},null!==t.video&&e.tracks.push({timelineStartInfo:{baseMediaDecodeTime:0},id:+t.video,codec:"avc",type:"video"}),null!==t.audio&&e.tracks.push({timelineStartInfo:{baseMediaDecodeTime:0},id:+t.audio,codec:"adts",type:"audio"}),l.trigger("data",e)),r=!1,this.flushStreams_(),this.trigger("done")}}).prototype=new T,{PAT_PID:0,MP2T_PACKET_LENGTH:188,TransportPacketStream:it,TransportParseStream:ze,ElementaryStream:Xe,TimestampRolloverStream:Ve,CaptionStream:tt.CaptionStream,Cea608Stream:tt.Cea608Stream,Cea708Stream:tt.Cea708Stream,MetadataStream:b});for(Ke in w)w.hasOwnProperty(Ke)&&(st[Ke]=w[Ke]);var rt,nt,T=st,Ve=i,at=c.ONE_SECOND_IN_TS,ot=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],lt=function(l){var d,h=0;lt.prototype.init.call(this),this.skipWarn_=function(e,t){this.trigger("log",{level:"warn",message:`adts skiping bytes ${e} to ${t} in frame ${h} outside syncword`})},this.push=function(e){var t,i,s,r,n,a,o=0;if(l||(h=0),"audio"===e.type){for(d&&d.length?(s=d,(d=new Uint8Array(s.byteLength+e.data.byteLength)).set(s),d.set(e.data,s.byteLength)):d=e.data;o+7>5,n=(r=1024*(1+(3&d[o+6])))*at/ot[(60&d[o+2])>>>2],d.byteLength-o>>6&3),channelcount:(1&d[o+2])<<2|(192&d[o+3])>>>6,samplerate:ot[(60&d[o+2])>>>2],samplingfrequencyindex:(60&d[o+2])>>>2,samplesize:16,data:d.subarray(o+7+i,o+t)}),h++,o+=t}"number"==typeof a&&(this.skipWarn_(a,o),a=null),d=d.subarray(o)}},this.flush=function(){h=0,this.trigger("done")},this.reset=function(){d=void 0,this.trigger("reset")},this.endTimeline=function(){d=void 0,this.trigger("endedtimeline")}},tt=(lt.prototype=new Ve,lt),b=i,dt=function(s){var r=s.byteLength,n=0,a=0;this.length=function(){return 8*r},this.bitsAvailable=function(){return 8*r+a},this.loadWord=function(){var e=s.byteLength-r,t=new Uint8Array(4),i=Math.min(4,r);if(0===i)throw new Error("no bytes available");t.set(s.subarray(e,e+i)),n=new DataView(t.buffer).getUint32(0),a=8*i,r-=i},this.skipBits=function(e){var t;e>>32-t;return 0<(a-=t)?n<<=t:0>>e))return n<<=e,a-=e,e;return this.loadWord(),e+this.skipLeadingZeros()},this.skipUnsignedExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())},this.skipExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())},this.readUnsignedExpGolomb=function(){var e=this.skipLeadingZeros();return this.readBits(e+1)-1},this.readExpGolomb=function(){var e=this.readUnsignedExpGolomb();return 1&e?1+e>>>1:-1*(e>>>1)},this.readBoolean=function(){return 1===this.readBits(1)},this.readUnsignedByte=function(){return this.readBits(8)},this.loadWord()},ht=function(){var s,r,n=0;ht.prototype.init.call(this),this.push=function(e){for(var t,i=(r=r?((t=new Uint8Array(r.byteLength+e.data.byteLength)).set(r),t.set(e.data,r.byteLength),t):e.data).byteLength;n>4?20+i:10+i},mt=function(e,t){return e.length-t<10||e[t]!=="I".charCodeAt(0)||e[t+1]!=="D".charCodeAt(0)||e[t+2]!=="3".charCodeAt(0)?t:(t+=pt(e,t),mt(e,t))},gt=function(e,t,i){for(var s="",r=t;r=t+2&&255==(255&e[t])&&240==(240&e[t+1])&&16==(22&e[t+1])},parseId3TagSize:pt,parseAdtsSize:function(e,t){var i=(224&e[t+5])>>5,s=e[t+4]<<3;return 6144&e[t+3]|s|i},parseType:function(e,t){return e[t]==="I".charCodeAt(0)&&e[t+1]==="D".charCodeAt(0)&&e[t+2]==="3".charCodeAt(0)?"timed-metadata":!0&e[t]&&240==(240&e[t+1])?"audio":null},parseSampleRate:function(e){for(var t=0;t+5>>2];t++}return null},parseAacTimestamp:function(e){var t,i=10;64&e[5]&&(i=(i+=4)+ut(e.subarray(10,14)));do{if((t=ut(e.subarray(i+4,i+8)))<1)return null;if("PRIV"===String.fromCharCode(e[i],e[i+1],e[i+2],e[i+3]))for(var s,r,n=e.subarray(i+10,i+t+10),a=0;a>>2,(r*=4)+(3&s[7]);break}}while((i=i+10+t)n.length)break;t={type:"timed-metadata",data:n.subarray(r,r+s)},this.trigger("data",t),r+=s}else if(255==(255&n[r])&&240==(240&n[r+1])){if(n.length-r<7)break;if(r+(s=ft.parseAdtsSize(n,r))>n.length)break;t={type:"audio",data:n.subarray(r,r+s),pts:a,dts:a},this.trigger("data",t),r+=s}else r++;i=n.length-r,n=0i.pts?l++:(t++,n-=s.byteLength,a-=s.nalCount,o-=s.duration);return 0===t?e:t===e.length?null:((r=e.slice(t)).byteLength=n,r.duration=o,r.nalCount=a,r.pts=r[0].pts,r.dts=r[0].dts,r)},this.alignGopsAtEnd_=function(e){for(var t,i,s,r,n=d.length-1,a=e.length-1,o=null,l=!1;0<=n&&0<=a;){if(t=d[n],i=e[a],t.pts===i.pts){l=!0;break}t.pts>i.pts?n--:(n===d.length-1&&(o=a),a--)}return l||null!==o?0===(s=l?a:o)?e:(r=(s=e.slice(s)).reduce(function(e,t){return e.byteLength+=t.byteLength,e.duration+=t.duration,e.nalCount+=t.nalCount,e},{byteLength:0,duration:0,nalCount:0}),s.byteLength=r.byteLength,s.duration=r.duration,s.nalCount=r.nalCount,s.pts=s[0].pts,s.dts=s[0].dts,s):null},this.alignGopsWith=function(e){d=e}}).prototype=new E,((k=function(e,t){this.numberOfTracks=0,this.metadataStream=t,"undefined"!=typeof(e=e||{}).remux?this.remuxTracks=!!e.remux:this.remuxTracks=!0,"boolean"==typeof e.keepOriginalTimestamps?this.keepOriginalTimestamps=e.keepOriginalTimestamps:this.keepOriginalTimestamps=!1,this.pendingTracks=[],this.videoTrack=null,this.pendingBoxes=[],this.pendingCaptions=[],this.pendingMetadata=[],this.pendingBytes=0,this.emittedTracks=0,k.prototype.init.call(this),this.push=function(e){return e.text?this.pendingCaptions.push(e):e.frames?this.pendingMetadata.push(e):(this.pendingTracks.push(e.track),this.pendingBytes+=e.boxes.byteLength,"video"===e.track.type&&(this.videoTrack=e.track,this.pendingBoxes.push(e.boxes)),void("audio"===e.track.type&&(this.audioTrack=e.track,this.pendingBoxes.unshift(e.boxes))))}}).prototype=new E).flush=function(e){var t,i,s,r=0,n={captions:[],captionStreams:{},metadata:[],info:{}},a=0;if(this.pendingTracks.length=this.numberOfTracks&&(this.trigger("done"),this.emittedTracks=0))}if(this.videoTrack?(a=this.videoTrack.timelineStartInfo.pts,Lt.forEach(function(e){n.info[e]=this.videoTrack[e]},this)):this.audioTrack&&(a=this.audioTrack.timelineStartInfo.pts,Pt.forEach(function(e){n.info[e]=this.audioTrack[e]},this)),this.videoTrack||this.audioTrack){for(1===this.pendingTracks.length?n.type=this.pendingTracks[0].type:n.type="combined",this.emittedTracks+=this.pendingTracks.length,e=C.initSegment(this.pendingTracks),n.initSegment=new Uint8Array(e.byteLength),n.initSegment.set(e),n.data=new Uint8Array(this.pendingBytes),s=0;s=this.numberOfTracks&&(this.trigger("done"),this.emittedTracks=0)},k.prototype.setRemux=function(e){this.remuxTracks=e},(St=function(s){var r,n,a=this,i=!0;St.prototype.init.call(this),s=s||{},this.baseMediaDecodeTime=s.baseMediaDecodeTime||0,this.transmuxPipeline_={},this.setupAacPipeline=function(){var t={};(this.transmuxPipeline_=t).type="aac",t.metadataStream=new A.MetadataStream,t.aacStream=new It,t.audioTimestampRolloverStream=new A.TimestampRolloverStream("audio"),t.timedMetadataTimestampRolloverStream=new A.TimestampRolloverStream("timed-metadata"),t.adtsStream=new kt,t.coalesceStream=new k(s,t.metadataStream),t.headOfPipeline=t.aacStream,t.aacStream.pipe(t.audioTimestampRolloverStream).pipe(t.adtsStream),t.aacStream.pipe(t.timedMetadataTimestampRolloverStream).pipe(t.metadataStream).pipe(t.coalesceStream),t.metadataStream.on("timestamp",function(e){t.aacStream.setTimestamp(e.timeStamp)}),t.aacStream.on("data",function(e){"timed-metadata"!==e.type&&"audio"!==e.type||t.audioSegmentStream||(n=n||{timelineStartInfo:{baseMediaDecodeTime:a.baseMediaDecodeTime},codec:"adts",type:"audio"},t.coalesceStream.numberOfTracks++,t.audioSegmentStream=new Dt(n,s),t.audioSegmentStream.on("log",a.getLogTrigger_("audioSegmentStream")),t.audioSegmentStream.on("timingInfo",a.trigger.bind(a,"audioTimingInfo")),t.adtsStream.pipe(t.audioSegmentStream).pipe(t.coalesceStream),a.trigger("trackinfo",{hasAudio:!!n,hasVideo:!!r}))}),t.coalesceStream.on("data",this.trigger.bind(this,"data")),t.coalesceStream.on("done",this.trigger.bind(this,"done")),_t(this,t)},this.setupTsPipeline=function(){var i={};(this.transmuxPipeline_=i).type="ts",i.metadataStream=new A.MetadataStream,i.packetStream=new A.TransportPacketStream,i.parseStream=new A.TransportParseStream,i.elementaryStream=new A.ElementaryStream,i.timestampRolloverStream=new A.TimestampRolloverStream,i.adtsStream=new kt,i.h264Stream=new Ct,i.captionStream=new A.CaptionStream(s),i.coalesceStream=new k(s,i.metadataStream),i.headOfPipeline=i.packetStream,i.packetStream.pipe(i.parseStream).pipe(i.elementaryStream).pipe(i.timestampRolloverStream),i.timestampRolloverStream.pipe(i.h264Stream),i.timestampRolloverStream.pipe(i.adtsStream),i.timestampRolloverStream.pipe(i.metadataStream).pipe(i.coalesceStream),i.h264Stream.pipe(i.captionStream).pipe(i.coalesceStream),i.elementaryStream.on("data",function(e){var t;if("metadata"===e.type){for(t=e.tracks.length;t--;)r||"video"!==e.tracks[t].type?n||"audio"!==e.tracks[t].type||((n=e.tracks[t]).timelineStartInfo.baseMediaDecodeTime=a.baseMediaDecodeTime):(r=e.tracks[t]).timelineStartInfo.baseMediaDecodeTime=a.baseMediaDecodeTime;r&&!i.videoSegmentStream&&(i.coalesceStream.numberOfTracks++,i.videoSegmentStream=new Tt(r,s),i.videoSegmentStream.on("log",a.getLogTrigger_("videoSegmentStream")),i.videoSegmentStream.on("timelineStartInfo",function(e){n&&!s.keepOriginalTimestamps&&(n.timelineStartInfo=e,i.audioSegmentStream.setEarliestDts(e.dts-a.baseMediaDecodeTime))}),i.videoSegmentStream.on("processedGopsInfo",a.trigger.bind(a,"gopInfo")),i.videoSegmentStream.on("segmentTimingInfo",a.trigger.bind(a,"videoSegmentTimingInfo")),i.videoSegmentStream.on("baseMediaDecodeTime",function(e){n&&i.audioSegmentStream.setVideoBaseMediaDecodeTime(e)}),i.videoSegmentStream.on("timingInfo",a.trigger.bind(a,"videoTimingInfo")),i.h264Stream.pipe(i.videoSegmentStream).pipe(i.coalesceStream)),n&&!i.audioSegmentStream&&(i.coalesceStream.numberOfTracks++,i.audioSegmentStream=new Dt(n,s),i.audioSegmentStream.on("log",a.getLogTrigger_("audioSegmentStream")),i.audioSegmentStream.on("timingInfo",a.trigger.bind(a,"audioTimingInfo")),i.audioSegmentStream.on("segmentTimingInfo",a.trigger.bind(a,"audioSegmentTimingInfo")),i.adtsStream.pipe(i.audioSegmentStream).pipe(i.coalesceStream)),a.trigger("trackinfo",{hasAudio:!!n,hasVideo:!!r})}}),i.coalesceStream.on("data",this.trigger.bind(this,"data")),i.coalesceStream.on("id3Frame",function(e){e.dispatchType=i.metadataStream.dispatchType,a.trigger("id3Frame",e)}),i.coalesceStream.on("caption",this.trigger.bind(this,"caption")),i.coalesceStream.on("done",this.trigger.bind(this,"done")),_t(this,i)},this.setBaseMediaDecodeTime=function(e){var t=this.transmuxPipeline_;s.keepOriginalTimestamps||(this.baseMediaDecodeTime=e),n&&(n.timelineStartInfo.dts=void 0,n.timelineStartInfo.pts=void 0,x.clearDtsInfo(n),t.audioTimestampRolloverStream)&&t.audioTimestampRolloverStream.discontinuity(),r&&(t.videoSegmentStream&&(t.videoSegmentStream.gopCache_=[]),r.timelineStartInfo.dts=void 0,r.timelineStartInfo.pts=void 0,x.clearDtsInfo(r),t.captionStream.reset()),t.timestampRolloverStream&&t.timestampRolloverStream.discontinuity()},this.setAudioAppendStart=function(e){n&&this.transmuxPipeline_.audioSegmentStream.setAudioAppendStart(e)},this.setRemux=function(e){var t=this.transmuxPipeline_;s.remux=e,t&&t.coalesceStream&&t.coalesceStream.setRemux(e)},this.alignGopsWith=function(e){r&&this.transmuxPipeline_.videoSegmentStream&&this.transmuxPipeline_.videoSegmentStream.alignGopsWith(e)},this.getLogTrigger_=function(t){var i=this;return function(e){e.stream=t,i.trigger("log",e)}},this.push=function(e){var t;i&&((t=xt(e))&&"aac"!==this.transmuxPipeline_.type?this.setupAacPipeline():t||"ts"===this.transmuxPipeline_.type||this.setupTsPipeline(),i=!1),this.transmuxPipeline_.headOfPipeline.push(e)},this.flush=function(){i=!0,this.transmuxPipeline_.headOfPipeline.flush()},this.endTimeline=function(){this.transmuxPipeline_.headOfPipeline.endTimeline()},this.reset=function(){this.transmuxPipeline_.headOfPipeline&&this.transmuxPipeline_.headOfPipeline.reset()},this.resetCaptions=function(){this.transmuxPipeline_.captionStream&&this.transmuxPipeline_.captionStream.reset()}}).prototype=new E;function Nt(e){var t="";return(t+=String.fromCharCode(e[0]))+String.fromCharCode(e[1])+String.fromCharCode(e[2])+String.fromCharCode(e[3])}function Mt(e,t){var i,s,r,n=[];if(!t.length)return null;for(i=0;i>>4&&(t+=e[4]+1),t}function qt(e){switch(e){case 5:return"slice_layer_without_partitioning_rbsp_idr";case 6:return"sei_rbsp";case 7:return"seq_parameter_set_rbsp";case 8:return"pic_parameter_set_rbsp";case 9:return"access_unit_delimiter_rbsp";default:return null}}var Vt=St,i=function(e){return e>>>0},Pe=function(e){return("00"+e.toString(16)).slice(-2)},$t=i,Wt=Nt,Gt=i,zt=_e.getUint64,Xt=function(e){return{isLeading:(12&e[0])>>>2,dependsOn:3&e[0],isDependedOn:(192&e[1])>>>6,hasRedundancy:(48&e[1])>>>4,paddingValue:(14&e[1])>>>1,isNonSyncSample:1&e[1],degradationPriority:e[2]<<8|e[3]}},Le="undefined"!=typeof window?window:"undefined"!=typeof fe?fe:"undefined"!=typeof self?self:{},T=Le,Kt=De.discardEmulationPreventionBytes,Yt=p.CaptionStream,P=Mt,Qt=Rt,Jt=Ut,Zt=Bt,ei=T,ti=function(e,h){var i=P(e,["moof","traf"]),e=P(e,["mdat"]),u={},s=[];return e.forEach(function(e,t){t=i[t];s.push({mdat:e,traf:t})}),s.forEach(function(e){var t,i,s,r,n,a=e.mdat,e=e.traf,o=P(e,["tfhd"]),o=Zt(o[0]),l=o.trackId,d=P(e,["tfdt"]),d=0>>2&63).replace(/^0/,"")):i.codec="mp4a.40.2"):i.codec=i.codec.toLowerCase()),O(e,["mdia","mdhd"])[0]);s&&(i.timescale=oi(s)),n.push(i)}),n},hi=qe,ui=qe,D=Ye,N={},M=(N.ts={parseType:function(e,t){e=Ft(e);return 0===e?"pat":e===t?"pmt":t?"pes":null},parsePat:function(e){var t=jt(e),i=4+Ht(e);return t&&(i+=e[i]+1),(31&e[i+10])<<8|e[i+11]},parsePmt:function(e){var t={},i=jt(e),s=4+Ht(e);if(i&&(s+=e[s]+1),1&e[s+5]){for(var r=3+((15&e[s+1])<<8|e[s+2])-4,n=12+((15&e[s+10])<<8|e[s+11]);n=e.byteLength?null:(i=null,192&(s=e[t+7])&&((i={}).pts=(14&e[t+9])<<27|(255&e[t+10])<<20|(254&e[t+11])<<12|(255&e[t+12])<<5|(254&e[t+13])>>>3,i.pts*=4,i.pts+=(6&e[t+13])>>>1,i.dts=i.pts,64&s)&&(i.dts=(14&e[t+14])<<27|(255&e[t+15])<<20|(254&e[t+16])<<12|(255&e[t+17])<<5|(254&e[t+18])>>>3,i.dts*=4,i.dts+=(6&e[t+18])>>>1),i)},videoPacketContainsKeyFrame:function(e){for(var t=4+Ht(e),i=e.subarray(t),s=0,r=0,n=!1;re.length?s=!0:(null===a&&(t=e.subarray(l,l+o),a=N.aac.parseAacTimestamp(t)),l+=o);break;case"audio":e.length-l<7?s=!0:(o=N.aac.parseAdtsSize(e,l))>e.length?s=!0:(null===n&&(t=e.subarray(l,l+o),n=N.aac.parseSampleRate(t)),r++,l+=o);break;default:l++}if(s)return null}return null===n||null===a?null:{audio:[{type:"audio",dts:a,pts:a},{type:"audio",dts:a+1024*r*(i=M/n),pts:a+1024*r*i}]}}:function(e){var t,i={pid:null,table:null},s={};for(t in ci(e,i),i.table)if(i.table.hasOwnProperty(t))switch(i.table[t]){case ui.H264_STREAM_TYPE:s.video=[],mi(e,i,s),0===s.video.length&&delete s.video;break;case ui.ADTS_STREAM_TYPE:s.audio=[],pi(e,i,s),0===s.audio.length&&delete s.audio}return s})(e);return e&&(e.audio||e.video)?(t=t,(i=e).audio&&i.audio.length&&("undefined"!=typeof(s=t)&&!isNaN(s)||(s=i.audio[0].dts),i.audio.forEach(function(e){e.dts=D(e.dts,s),e.pts=D(e.pts,s),e.dtsTime=e.dts/M,e.ptsTime=e.pts/M})),i.video&&i.video.length&&("undefined"!=typeof(r=t)&&!isNaN(r)||(r=i.video[0].dts),i.video.forEach(function(e){e.dts=D(e.dts,r),e.pts=D(e.pts,r),e.dtsTime=e.dts/M,e.ptsTime=e.pts/M}),i.firstKeyFrame)&&((t=i.firstKeyFrame).dts=D(t.dts,r),t.pts=D(t.pts,r),t.dtsTime=t.dts/M,t.ptsTime=t.pts/M),e):null};class fi{constructor(e,t){this.options=t||{},this.self=e,this.init()}init(){var i,e;this.transmuxer&&this.transmuxer.dispose(),this.transmuxer=new Vt(this.options),i=this.self,(e=this.transmuxer).on("data",function(e){var t=e.initSegment,t=(e.initSegment={data:t.buffer,byteOffset:t.byteOffset,byteLength:t.byteLength},e.data);e.data=t.buffer,i.postMessage({action:"data",segment:e,byteOffset:t.byteOffset,byteLength:t.byteLength},[e.data])}),e.on("done",function(e){i.postMessage({action:"done"})}),e.on("gopInfo",function(e){i.postMessage({action:"gopInfo",gopInfo:e})}),e.on("videoSegmentTimingInfo",function(e){var t={start:{decode:c.videoTsToSeconds(e.start.dts),presentation:c.videoTsToSeconds(e.start.pts)},end:{decode:c.videoTsToSeconds(e.end.dts),presentation:c.videoTsToSeconds(e.end.pts)},baseMediaDecodeTime:c.videoTsToSeconds(e.baseMediaDecodeTime)};e.prependedContentDuration&&(t.prependedContentDuration=c.videoTsToSeconds(e.prependedContentDuration)),i.postMessage({action:"videoSegmentTimingInfo",videoSegmentTimingInfo:t})}),e.on("audioSegmentTimingInfo",function(e){var t={start:{decode:c.videoTsToSeconds(e.start.dts),presentation:c.videoTsToSeconds(e.start.pts)},end:{decode:c.videoTsToSeconds(e.end.dts),presentation:c.videoTsToSeconds(e.end.pts)},baseMediaDecodeTime:c.videoTsToSeconds(e.baseMediaDecodeTime)};e.prependedContentDuration&&(t.prependedContentDuration=c.videoTsToSeconds(e.prependedContentDuration)),i.postMessage({action:"audioSegmentTimingInfo",audioSegmentTimingInfo:t})}),e.on("id3Frame",function(e){i.postMessage({action:"id3Frame",id3Frame:e})}),e.on("caption",function(e){i.postMessage({action:"caption",caption:e})}),e.on("trackinfo",function(e){i.postMessage({action:"trackinfo",trackInfo:e})}),e.on("audioTimingInfo",function(e){i.postMessage({action:"audioTimingInfo",audioTimingInfo:{start:c.videoTsToSeconds(e.start),end:c.videoTsToSeconds(e.end)}})}),e.on("videoTimingInfo",function(e){i.postMessage({action:"videoTimingInfo",videoTimingInfo:{start:c.videoTsToSeconds(e.start),end:c.videoTsToSeconds(e.end)}})}),e.on("log",function(e){i.postMessage({action:"log",log:e})})}pushMp4Captions(e){this.captionParser||(this.captionParser=new ii,this.captionParser.init());var t=new Uint8Array(e.data,e.byteOffset,e.byteLength),e=this.captionParser.parse(t,e.trackIds,e.timescales);this.self.postMessage({action:"mp4Captions",captions:e&&e.captions||[],logs:e&&e.logs||[],data:t.buffer},[t.buffer])}probeMp4StartTime({timescales:e,data:t}){e=li(e,t);this.self.postMessage({action:"probeMp4StartTime",startTime:e,data:t},[t.buffer])}probeMp4Tracks({data:e}){var t=di(e);this.self.postMessage({action:"probeMp4Tracks",tracks:t,data:e},[e.buffer])}probeTs({data:e,baseStartTime:t}){t="number"!=typeof t||isNaN(t)?void 0:t*c.ONE_SECOND_IN_TS,t=gi(e,t);let i=null;t&&((i={hasVideo:t.video&&2===t.video.length||!1,hasAudio:t.audio&&2===t.audio.length||!1}).hasVideo&&(i.videoStart=t.video[0].ptsTime),i.hasAudio)&&(i.audioStart=t.audio[0].ptsTime),this.self.postMessage({action:"probeTs",result:i,data:e},[e.buffer])}clearAllMp4Captions(){this.captionParser&&this.captionParser.clearAllCaptions()}clearParsedMp4Captions(){this.captionParser&&this.captionParser.clearParsedCaptions()}push(e){e=new Uint8Array(e.data,e.byteOffset,e.byteLength);this.transmuxer.push(e)}reset(){this.transmuxer.reset()}setTimestampOffset(e){e=e.timestampOffset||0;this.transmuxer.setBaseMediaDecodeTime(Math.round(c.secondsToVideoTs(e)))}setAudioAppendStart(e){this.transmuxer.setAudioAppendStart(Math.ceil(c.secondsToVideoTs(e.appendStart)))}setRemux(e){this.transmuxer.setRemux(e.remux)}flush(e){this.transmuxer.flush(),self.postMessage({action:"done",type:"transmuxed"})}endTimeline(){this.transmuxer.endTimeline(),self.postMessage({action:"endedtimeline",type:"transmuxed"})}alignGopsWith(e){this.transmuxer.alignGopsWith(e.gopsToAlignWith.slice())}}self.onmessage=function(e){"init"===e.data.action&&e.data.options?this.messageHandlers=new fi(self,e.data.options):(this.messageHandlers||(this.messageHandlers=new fi(self)),e.data&&e.data.action&&"init"!==e.data.action&&this.messageHandlers[e.data.action]&&this.messageHandlers[e.data.action](e.data))}})));const ih=(e,t,i)=>{var{type:s,initSegment:r,captions:n,captionStreams:a,metadata:o,videoFrameDtsTime:l,videoFramePtsTime:d}=e.data.segment,t=(t.buffer.push({captions:n,captionStreams:a,metadata:o}),e.data.segment.boxes||{data:e.data.segment.data}),n={type:s,data:new Uint8Array(t.data,t.data.byteOffset,t.data.byteLength),initSegment:new Uint8Array(r.data,r.byteOffset,r.byteLength)};"undefined"!=typeof l&&(n.videoFrameDtsTime=l),"undefined"!=typeof d&&(n.videoFramePtsTime=d),i(n)},sh=({transmuxedData:e,callback:t})=>{e.buffer=[],t(e)},rh=(e,t)=>{t.gopInfo=e.data.gopInfo},nh=t=>{const{transmuxer:i,bytes:e,audioAppendStart:s,gopsToAlignWith:r,remux:n,onData:a,onTrackInfo:o,onAudioTimingInfo:l,onVideoTimingInfo:d,onVideoSegmentTimingInfo:h,onAudioSegmentTimingInfo:u,onId3:c,onCaptions:p,onDone:m,onEndedTimeline:g,onTransmuxerLog:f,isEndOfTimeline:y}=t,_={buffer:[]};let v=y;var b,T;i.onmessage=e=>{i.currentTransmux!==t||("data"===e.data.action&&ih(e,_,a),"trackinfo"===e.data.action&&o(e.data.trackInfo),"gopInfo"===e.data.action&&rh(e,_),"audioTimingInfo"===e.data.action&&l(e.data.audioTimingInfo),"videoTimingInfo"===e.data.action&&d(e.data.videoTimingInfo),"videoSegmentTimingInfo"===e.data.action&&h(e.data.videoSegmentTimingInfo),"audioSegmentTimingInfo"===e.data.action&&u(e.data.audioSegmentTimingInfo),"id3Frame"===e.data.action&&c([e.data.id3Frame],e.data.id3Frame.dispatchType),"caption"===e.data.action&&p(e.data.caption),"endedtimeline"===e.data.action&&(v=!1,g()),"log"===e.data.action&&f(e.data.log),"transmuxed"!==e.data.type)||v||(i.onmessage=null,sh({transmuxedData:_,callback:m}),ah(i))},s&&i.postMessage({action:"setAudioAppendStart",appendStart:s}),Array.isArray(r)&&i.postMessage({action:"alignGopsWith",gopsToAlignWith:r}),"undefined"!=typeof n&&i.postMessage({action:"setRemux",remux:n}),e.byteLength&&(b=e instanceof ArrayBuffer?e:e.buffer,T=e instanceof ArrayBuffer?0:e.byteOffset,i.postMessage({action:"push",data:b,byteOffset:T,byteLength:e.byteLength},[b])),y&&i.postMessage({action:"endTimeline"}),i.postMessage({action:"flush"})},ah=e=>{e.currentTransmux=null,e.transmuxQueue.length&&(e.currentTransmux=e.transmuxQueue.shift(),"function"==typeof e.currentTransmux?e.currentTransmux():nh(e.currentTransmux))},oh=(e,t)=>{e.postMessage({action:t}),ah(e)},lh=(e,t)=>{t.currentTransmux?t.transmuxQueue.push(oh.bind(null,t,e)):(t.currentTransmux=e,oh(t,e))};const dh=e=>{e.transmuxer.currentTransmux?e.transmuxer.transmuxQueue.push(e):(e.transmuxer.currentTransmux=e,nh(e))};var hh=e=>{lh("reset",e)},uh=(dh,e=>{const t=new th,i=(t.currentTransmux=null,t.transmuxQueue=[],t.terminate);return t.terminate=()=>(t.currentTransmux=null,t.transmuxQueue.length=0,i.call(t)),t.postMessage({action:"init",options:e}),t});function ch(t){const i=t.transmuxer,s=t.endAction||t.action,r=t.callback;var e,n=fi({},t,{endAction:null,transmuxer:null,callback:null});const a=e=>{e.data.action===s&&(i.removeEventListener("message",a),e.data.data&&(e.data.data=new Uint8Array(e.data.data,t.byteOffset||0,t.byteLength||e.data.data.byteLength),t.data)&&(t.data=e.data.data),r(e.data))};i.addEventListener("message",a),t.data?(e=t.data instanceof ArrayBuffer,n.byteOffset=e?0:t.data.byteOffset,n.byteLength=t.data.byteLength,e=[e?t.data:t.data.buffer],i.postMessage(n,e)):i.postMessage(n)}function ph(e){let t=0;return e.audio&&t++,e.video&&t++,t}function mh(e,t){var i=t.attributes||{},s=Lh(function(e){e=e.attributes||{};if(e.CODECS)return Un(e.CODECS)}(t)||[]);return!Ph(e,t)||s.audio||((e,t)=>{if(!Ph(e,t))return!0;var t=t.attributes||{},i=e.mediaGroups.AUDIO[t.AUDIO];for(const s in i)if(!i[s].uri&&!i[s].playlists)return!0;return!1})(e,t)||(t=Lh(function(e,t){if(e.mediaGroups.AUDIO&&t){var i=e.mediaGroups.AUDIO[t];if(i)for(var s in i){s=i[s];if(s.default&&s.playlists)return Un(s.playlists[0].attributes.CODECS)}}return null}(e,i.AUDIO)||[])).audio&&(s.audio=t.audio),s}function gh(e,t){return(e=e&&window.getComputedStyle(e))?e[t]:""}function fh(e,t){let i,s;return i=(i=e.attributes.BANDWIDTH?e.attributes.BANDWIDTH:i)||window.Number.MAX_VALUE,s=(s=t.attributes.BANDWIDTH?t.attributes.BANDWIDTH:s)||window.Number.MAX_VALUE,i-s}const yh={FAILURE:2,TIMEOUT:-101,ABORTED:-102},_h=e=>{e.forEach(e=>{e.abort()})},vh=e=>({bandwidth:e.bandwidth,bytesReceived:e.bytesReceived||0,roundTripTime:e.roundTripTime||0}),bh=e=>{var t=e.target,t={bandwidth:1/0,bytesReceived:0,roundTripTime:Date.now()-t.requestTime||0};return t.bytesReceived=e.loaded,t.bandwidth=Math.floor(t.bytesReceived/t.roundTripTime*8*1e3),t},Th=(e,t)=>t.timedout?{status:t.status,message:"HLS request timed-out at URL: "+t.uri,code:yh.TIMEOUT,xhr:t}:t.aborted?{status:t.status,message:"HLS request aborted at URL: "+t.uri,code:yh.ABORTED,xhr:t}:e?{status:t.status,message:"HLS request errored at URL: "+t.uri,code:yh.FAILURE,xhr:t}:"arraybuffer"===t.responseType&&0===t.response.byteLength?{status:t.status,message:"Empty HLS response at URL: "+t.uri,code:yh.FAILURE,xhr:t}:null,Sh=(r,n,a)=>(e,t)=>{var i=t.response,e=Th(e,t);if(e)return a(e,r);if(16!==i.byteLength)return a({status:t.status,message:"Invalid HLS key at URL: "+t.uri,code:yh.FAILURE,xhr:t},r);var e=new DataView(i),s=new Uint32Array([e.getUint32(0),e.getUint32(4),e.getUint32(8),e.getUint32(12)]);for(let e=0;e{var e,t=_l(i.map.bytes);if("mp4"!==t)return e=i.map.resolvedUri||i.map.uri,s({internal:!0,message:`Found unsupported ${t||"unknown"} container for initialization segment at URL: `+e,code:yh.FAILURE});ch({action:"probeMp4Tracks",data:i.map.bytes,transmuxer:i.transmuxer,callback:({tracks:e,data:t})=>(i.map.bytes=t,e.forEach(function(e){i.map.tracks=i.map.tracks||{},i.map.tracks[e.type]||"number"==typeof(i.map.tracks[e.type]=e).id&&e.timescale&&(i.map.timescales=i.map.timescales||{},i.map.timescales[e.id]=e.timescale)}),s(null))})},Eh=({segment:i,bytes:t,trackInfoFn:s,timingInfoFn:e,videoSegmentTimingInfoFn:r,audioSegmentTimingInfoFn:n,id3Fn:a,captionsFn:o,isEndOfTimeline:l,endedTimelineFn:d,dataFn:h,doneFn:u,onTransmuxerLog:c})=>{var p=i.map&&i.map.tracks||{};const m=Boolean(p.audio&&p.video);let g=e.bind(null,i,"audio","start");const f=e.bind(null,i,"audio","end");let y=e.bind(null,i,"video","start");const _=e.bind(null,i,"video","end");ch({action:"probeTs",transmuxer:i.transmuxer,data:t,baseStartTime:i.baseStartTime,callback:e=>{i.bytes=t=e.data;e=e.result;e&&(s(i,{hasAudio:e.hasAudio,hasVideo:e.hasVideo,isMuxed:m}),s=null,e.hasAudio&&!m&&g(e.audioStart),e.hasVideo&&y(e.videoStart),g=null,y=null),dh({bytes:t,transmuxer:i.transmuxer,audioAppendStart:i.audioAppendStart,gopsToAlignWith:i.gopsToAlignWith,remux:m,onData:e=>{e.type="combined"===e.type?"video":e.type,h(i,e)},onTrackInfo:e=>{s&&(m&&(e.isMuxed=!0),s(i,e))},onAudioTimingInfo:e=>{g&&"undefined"!=typeof e.start&&(g(e.start),g=null),f&&"undefined"!=typeof e.end&&f(e.end)},onVideoTimingInfo:e=>{y&&"undefined"!=typeof e.start&&(y(e.start),y=null),_&&"undefined"!=typeof e.end&&_(e.end)},onVideoSegmentTimingInfo:e=>{r(e)},onAudioSegmentTimingInfo:e=>{n(e)},onId3:(e,t)=>{a(i,e,t)},onCaptions:e=>{o(i,[e])},isEndOfTimeline:l,onEndedTimeline:()=>{d()},onTransmuxerLog:c,onDone:e=>{u&&(e.type="combined"===e.type?"video":e.type,u(null,i,e))}})}})},kh=({segment:i,bytes:s,trackInfoFn:e,timingInfoFn:r,videoSegmentTimingInfoFn:t,audioSegmentTimingInfoFn:n,id3Fn:a,captionsFn:o,isEndOfTimeline:l,endedTimelineFn:d,dataFn:h,doneFn:u,onTransmuxerLog:c})=>{let p=new Uint8Array(s);if(m=p,0{h(i,{data:p,type:f.hasAudio&&!f.isMuxed?"audio":"video"}),e&&e.length&&o(i,e),u(null,i,{})});void ch({action:"probeMp4StartTime",timescales:i.map.timescales,data:p,transmuxer:i.transmuxer,callback:({data:e,startTime:t})=>{s=e.buffer,i.bytes=p=e,f.hasAudio&&!f.isMuxed&&r(i,"audio","start",t),f.hasVideo&&r(i,"video","start",t),g.video&&e.byteLength&&i.transmuxer?ch({action:"pushMp4Captions",endAction:"mp4Captions",transmuxer:i.transmuxer,data:p,timescales:i.map.timescales,trackIds:[g.video.id],callback:e=>{s=e.data.buffer,i.bytes=p=e.data,e.logs.forEach(function(e){c(O(e,{stream:"mp4CaptionParser"}))}),y(e.captions)}}):y()}})}else{var m;i.transmuxer?("undefined"==typeof i.container&&(i.container=_l(p)),"ts"!==i.container&&"aac"!==i.container?(e(i,{hasAudio:!1,hasVideo:!1}),u(null,i,{})):Eh({segment:i,bytes:s,trackInfoFn:e,timingInfoFn:r,videoSegmentTimingInfoFn:t,audioSegmentTimingInfoFn:n,id3Fn:a,captionsFn:o,isEndOfTimeline:l,endedTimelineFn:d,dataFn:h,doneFn:u,onTransmuxerLog:c})):u(null,i,{})}},Ch=function({id:t,key:e,encryptedBytes:i,decryptionWorker:s},r){const n=e=>{e.data.source===t&&(s.removeEventListener("message",n),e=e.data.decrypted,r(new Uint8Array(e.bytes,e.byteOffset,e.byteLength)))};s.addEventListener("message",n);let a;a=e.bytes.slice?e.bytes.slice():new Uint32Array(Array.prototype.slice.call(e.bytes)),s.postMessage(Od({source:t,encrypted:i,key:a,iv:e.iv}),[i.buffer,a.buffer])},Ih=({decryptionWorker:e,segment:t,trackInfoFn:i,timingInfoFn:s,videoSegmentTimingInfoFn:r,audioSegmentTimingInfoFn:n,id3Fn:a,captionsFn:o,isEndOfTimeline:l,endedTimelineFn:d,dataFn:h,doneFn:u,onTransmuxerLog:c})=>{Ch({id:t.requestId,key:t.key,encryptedBytes:t.encryptedBytes,decryptionWorker:e},e=>{t.bytes=e,kh({segment:t,bytes:t.bytes,trackInfoFn:i,timingInfoFn:s,videoSegmentTimingInfoFn:r,audioSegmentTimingInfoFn:n,id3Fn:a,captionsFn:o,isEndOfTimeline:l,endedTimelineFn:d,dataFn:h,doneFn:u,onTransmuxerLog:c})})},xh=({xhr:e,xhrOptions:t,decryptionWorker:i,segment:s,abortFn:r,progressFn:n,trackInfoFn:a,timingInfoFn:o,videoSegmentTimingInfoFn:l,audioSegmentTimingInfoFn:d,id3Fn:h,captionsFn:u,isEndOfTimeline:c,endedTimelineFn:p,dataFn:m,doneFn:g,onTransmuxerLog:f})=>{const y=[];var _,v,i=(({activeXhrs:s,decryptionWorker:r,trackInfoFn:n,timingInfoFn:a,videoSegmentTimingInfoFn:o,audioSegmentTimingInfoFn:l,id3Fn:d,captionsFn:h,isEndOfTimeline:u,endedTimelineFn:c,dataFn:p,doneFn:m,onTransmuxerLog:g})=>{let f=0,y=!1;return(e,t)=>{if(!y){if(e)return y=!0,_h(s),m(e,t);if((f+=1)===s.length){const i=function(){if(t.encryptedBytes)return Ih({decryptionWorker:r,segment:t,trackInfoFn:n,timingInfoFn:a,videoSegmentTimingInfoFn:o,audioSegmentTimingInfoFn:l,id3Fn:d,captionsFn:h,isEndOfTimeline:u,endedTimelineFn:c,dataFn:p,doneFn:m,onTransmuxerLog:g});kh({segment:t,bytes:t.bytes,trackInfoFn:n,timingInfoFn:a,videoSegmentTimingInfoFn:o,audioSegmentTimingInfoFn:l,id3Fn:d,captionsFn:h,isEndOfTimeline:u,endedTimelineFn:c,dataFn:p,doneFn:m,onTransmuxerLog:g})};if(t.endOfAllRequests=Date.now(),t.map&&t.map.encryptedBytes&&!t.map.bytes)return Ch({decryptionWorker:r,id:t.requestId+"-init",encryptedBytes:t.map.encryptedBytes,key:t.map.key},e=>{t.map.bytes=e,wh(t,e=>{if(e)return _h(s),m(e,t);i()})});i()}}}})({activeXhrs:y,decryptionWorker:i,trackInfoFn:a,timingInfoFn:o,videoSegmentTimingInfoFn:l,audioSegmentTimingInfoFn:d,id3Fn:h,captionsFn:u,isEndOfTimeline:c,endedTimelineFn:p,dataFn:m,doneFn:g,onTransmuxerLog:f}),u=(s.key&&!s.key.bytes&&(a=[s.key],s.map&&!s.map.bytes&&s.map.key&&s.map.key.resolvedUri===s.key.resolvedUri&&a.push(s.map.key),o=e(O(t,{uri:s.key.resolvedUri,responseType:"arraybuffer"}),Sh(s,a,i)),y.push(o)),s.map&&!s.map.bytes&&(!s.map.key||s.key&&s.key.resolvedUri===s.map.key.resolvedUri||(l=e(O(t,{uri:s.map.key.resolvedUri,responseType:"arraybuffer"}),Sh(s,[s.map.key],i)),y.push(l)),d=O(t,{uri:s.map.resolvedUri,responseType:"arraybuffer",headers:Ad(s.map)}),{segment:_,finishProcessingFn:v}=[{segment:s,finishProcessingFn:i}][0],h=e(d,(e,t)=>{var e=Th(e,t);return e?v(e,_):(e=new Uint8Array(t.response),_.map.key?(_.map.encryptedBytes=e,v(null,_)):(_.map.bytes=e,void wh(_,function(e){if(e)return e.xhr=t,e.status=t.status,v(e,_);v(null,_)})))}),y.push(h)),O(t,{uri:s.part&&s.part.resolvedUri||s.resolvedUri,responseType:"arraybuffer",headers:Ad(s)}));({segment:b,finishProcessingFn:T,responseType:S}={segment:s,finishProcessingFn:i,responseType:u.responseType});var b,T,S,w,E,c=e(u,(e,t)=>{var e=Th(e,t);return e?T(e,b):(e="arraybuffer"!==S&&t.responseText?Qd(t.responseText.substring(b.lastReachedChar||0)):t.response,b.stats=vh(t),b.key?b.encryptedBytes=new Uint8Array(e):b.bytes=new Uint8Array(e),T(null,b))});c.addEventListener("progress",({segment:w,progressFn:E}=[{segment:s,progressFn:n}][0],e=>{var t=e.target;if(!t.aborted)return w.stats=O(w.stats,bh(e)),!w.stats.firstBytesReceivedAt&&w.stats.bytesReceived&&(w.stats.firstBytesReceivedAt=Date.now()),E(e,w)})),y.push(c);const k={};return y.forEach(e=>{var t,i;e.addEventListener("loadend",({loadendState:t,abortFn:i}=[{loadendState:k,abortFn:r}][0],e=>{e.target.aborted&&i&&!t.calledAbortFn&&(i(),t.calledAbortFn=!0)}))}),()=>_h(y)},Ah=Bl("CodecUtils"),Ph=(e,t)=>{t=t.attributes||{};return e&&e.mediaGroups&&e.mediaGroups.AUDIO&&t.AUDIO&&e.mediaGroups.AUDIO[t.AUDIO]},Lh=function(e){const s={};return e.forEach(({mediaType:e,type:t,details:i})=>{s[e]=s[e]||[],s[e].push(Rn(""+t+i))}),Object.keys(s).forEach(function(e){1{var t=e.attributes&&e.attributes.RESOLUTION&&e.attributes.RESOLUTION.width,i=e.attributes&&e.attributes.RESOLUTION&&e.attributes.RESOLUTION.height,s=e.attributes&&e.attributes.BANDWIDTH;return{bandwidth:s||window.Number.MAX_VALUE,width:t,height:i,playlist:e}})),n=(Nh(r,(e,t)=>e.bandwidth-t.bandwidth),(r=r.filter(e=>!md.isIncompatible(e.playlist))).filter(e=>md.isEnabled(e.playlist)));o=(n=n.length?n:r.filter(e=>!md.isDisabled(e.playlist))).filter(e=>e.bandwidth*D.BANDWIDTH_VARIANCEe.bandwidth===a.bandwidth)[0];if(!1===h){const g=p||n[0]||r[0];if(g&&g.playlist){let e=p?"bandwidthBestRep":"sortedPlaylistReps";return n[0]&&(e="enabledPlaylistReps"),Oh(`choosing ${Dh(g)} using ${e} with options`,c),g.playlist}}else{var m,h=o.filter(e=>e.width&&e.height),o=(Nh(h,(e,t)=>e.width-t.width),h.filter(e=>e.width===l&&e.height===d)),o=(a=o[o.length-1],o.filter(e=>e.bandwidth===a.bandwidth)[0]);let t,i;o||(m=(t=h.filter(e=>e.width>l||e.height>d)).filter(e=>e.width===t[0].width&&e.height===t[0].height),a=m[m.length-1],i=m.filter(e=>e.bandwidth===a.bandwidth)[0]);let s;u.leastPixelDiffSelector&&(m=h.map(e=>(e.pixelDiff=Math.abs(e.width-l)+Math.abs(e.height-d),e)),Nh(m,(e,t)=>e.pixelDiff===t.pixelDiff?t.bandwidth-e.bandwidth:e.pixelDiff-t.pixelDiff),s=m[0]);const g=s||i||o||p||n[0]||r[0];if(g&&g.playlist){let e="sortedPlaylistReps";return s?e="leastPixelDiffRep":i?e="resolutionPlusOneRep":o?e="resolutionBestRep":p?e="bandwidthBestRep":n[0]&&(e="enabledPlaylistReps"),Oh(`choosing ${Dh(g)} using ${e} with options`,c),g.playlist}}return Oh("could not choose a playlist with options",c),null}}function Rh(){var e=this.useDevicePixelRatio&&window.devicePixelRatio||1;return Mh(this.playlists.main,this.systemBandwidth,parseInt(gh(this.tech_.el(),"width"),10)*e,parseInt(gh(this.tech_.el(),"height"),10)*e,this.limitRenditionByPlayerDimensions,this.playlistController_)}function Uh(e,t,i){let s;var r;if(i&&i.cues)for(s=i.cues.length;s--;)(r=i.cues[s]).startTime>=e&&r.endTime<=t&&i.removeCue(r)}const Bh=({inbandTextTracks:e,metadataArray:t,timestampOffset:i,videoDuration:s})=>{if(t){const a=window.WebKitDataCue||window.VTTCue,o=e.metadataTrack_;if(o&&(t.forEach(e=>{const s=e.cueTime+i;!("number"!=typeof s||window.isNaN(s)||s<0)&&s<1/0&&e.frames.forEach(e=>{var t,i=new a(s,s,e.value||e.url||e.data||"");i.frame=e,i.value=e,t=i,Object.defineProperties(t.frame,{id:{get(){return T.log.warn("cue.frame.id is deprecated. Use cue.value.key instead."),t.value.key}},value:{get(){return T.log.warn("cue.frame.value is deprecated. Use cue.value.data instead."),t.value.data}},privateData:{get(){return T.log.warn("cue.frame.privateData is deprecated. Use cue.value.data instead."),t.value.data}}}),o.addCue(i)})}),o.cues)&&o.cues.length){var r=o.cues,n=[];for(let e=0;e{var i=e[t.startTime]||[];return i.push(t),e[t.startTime]=i,e},{}),d=Object.keys(l).sort((e,t)=>Number(e)-Number(t));d.forEach((e,t)=>{e=l[e];const i=Number(d[t+1])||s;e.forEach(e=>{e.endTime=i})})}}},Fh=e=>"number"==typeof e&&isFinite(e),jh=e=>{var{startOfSegment:t,duration:i,segment:s,part:r,playlist:{mediaSequence:n,id:a,segments:o=[]},mediaIndex:l,partIndex:d,timeline:h}=e,o=o.length-1;let u="mediaIndex/partIndex increment";e.getMediaInfoForTime?u=`getMediaInfoForTime (${e.getMediaInfoForTime})`:e.isSyncRequest&&(u="getSyncSegmentCandidate (isSyncRequest)"),e.independent&&(u+=" with independent "+e.independent);var c="number"==typeof d,e=e.segment.uri?"segment":"pre-segment",p=c?ed({preloadSegment:s})-1:0;return e+` [${n+l}/${n+o}]`+(c?` part [${d}/${p}]`:"")+` segment start/end [${s.start} => ${s.end}]`+(c?` part start/end [${r.start} => ${r.end}]`:"")+` startOfSegment [${t}]`+` duration [${i}]`+` timeline [${h}]`+` selected by [${u}]`+` playlist [${a}]`},Hh=e=>e+"TimingInfo",qh=({timelineChangeController:e,currentTimeline:t,segmentTimeline:i,loaderType:s,audioDisabled:r})=>{return!(t===i||("audio"===s?(t=e.lastTimelineChange({type:"main"}))&&t.to===i:"main"!==s||!r||(t=e.pendingTimelineChange({type:"audio"}))&&t.to===i))},Vh=({segmentDuration:e,maxDuration:t})=>!!e&&Math.round(e)>t+Gl,$h=(e,t)=>{var i,s,r;return"hls"===t&&(t=(e=>{let s=0;return["video","audio"].forEach(function(t){t=e[t+"TimingInfo"];if(t){var{start:t,end:i}=t;let e;"bigint"==typeof t||"bigint"==typeof i?e=window.BigInt(i)-window.BigInt(t):"number"==typeof t&&"number"==typeof i&&(e=i-t),"undefined"!=typeof e&&e>s&&(s=e)}}),s="bigint"==typeof s&&sthis.trigger("syncinfoupdate"),this.syncController_.on("syncinfoupdate",this.triggerSyncInfoUpdate_),this.mediaSource_.addEventListener("sourceopen",()=>{this.isEndOfStream_()||(this.ended_=!1)}),this.fetchAtBuffer_=!1,this.logger_=Bl(`SegmentLoader[${this.loaderType_}]`),Object.defineProperty(this,"state",{get(){return this.state_},set(e){e!==this.state_&&(this.logger_(this.state_+" -> "+e),this.state_=e,this.trigger("statechange"))}}),this.sourceUpdater_.on("ready",()=>{this.hasEnoughInfoToAppend_()&&this.processCallQueue_()}),"main"===this.loaderType_&&this.timelineChangeController_.on("pendingtimelinechange",()=>{this.hasEnoughInfoToAppend_()&&this.processCallQueue_()}),"audio"===this.loaderType_&&this.timelineChangeController_.on("timelinechange",()=>{this.hasEnoughInfoToLoad_()&&this.processLoadQueue_(),this.hasEnoughInfoToAppend_()&&this.processCallQueue_()})}createTransmuxer_(){return uh({remux:!1,alignGopsAtEnd:this.safeAppend_,keepOriginalTimestamps:!0,parse708captions:this.parse708captions_,captionServices:this.captionServices_})}resetStats_(){this.mediaBytesTransferred=0,this.mediaRequests=0,this.mediaRequestsAborted=0,this.mediaRequestsTimedout=0,this.mediaRequestsErrored=0,this.mediaTransferDuration=0,this.mediaSecondsLoaded=0,this.mediaAppends=0}dispose(){this.trigger("dispose"),this.state="DISPOSED",this.pause(),this.abort_(),this.transmuxer_&&this.transmuxer_.terminate(),this.resetStats_(),this.checkBufferTimeout_&&window.clearTimeout(this.checkBufferTimeout_),this.syncController_&&this.triggerSyncInfoUpdate_&&this.syncController_.off("syncinfoupdate",this.triggerSyncInfoUpdate_),this.off()}setAudio(e){this.audioDisabled_=!e,e?this.appendInitSegment_.audio=!0:this.sourceUpdater_.removeAudio(0,this.duration_())}abort(){"WAITING"!==this.state?this.pendingSegment_&&(this.pendingSegment_=null):(this.abort_(),this.state="READY",this.paused()||this.monitorBuffer_())}abort_(){this.pendingSegment_&&this.pendingSegment_.abortRequests&&this.pendingSegment_.abortRequests(),this.pendingSegment_=null,this.callQueue_=[],this.loadQueue_=[],this.metadataQueue_.id3=[],this.metadataQueue_.caption=[],this.timelineChangeController_.clearPendingTimelineChange(this.loaderType_),this.waitingOnRemove_=!1,window.clearTimeout(this.quotaExceededErrorRetryTimeout_),this.quotaExceededErrorRetryTimeout_=null}checkForAbort_(e){return"APPENDING"!==this.state||this.pendingSegment_?!this.pendingSegment_||this.pendingSegment_.requestId!==e:(this.state="READY",!0)}error(e){return"undefined"!=typeof e&&(this.logger_("error occurred:",e),this.error_=e),this.pendingSegment_=null,this.error_}endOfStream(){this.ended_=!0,this.transmuxer_&&hh(this.transmuxer_),this.gopBuffer_.length=0,this.pause(),this.trigger("ended")}buffered_(){var e=this.getMediaInfo_();if(!this.sourceUpdater_||!e)return Fl();if("main"===this.loaderType_){var{hasAudio:e,hasVideo:t,isMuxed:i}=e;if(t&&e&&!this.audioDisabled_&&!i)return this.sourceUpdater_.buffered();if(t)return this.sourceUpdater_.videoBuffered()}return this.sourceUpdater_.audioBuffered()}initSegmentForMap(e,t=!1){if(!e)return null;var i=Dd(e);let s=this.initSegments_[i];return t&&!s&&e.bytes&&(this.initSegments_[i]=s={resolvedUri:e.resolvedUri,byterange:e.byterange,bytes:e.bytes,tracks:e.tracks,timescales:e.timescales}),s||e}segmentKey(e,t=!1){if(!e)return null;var i=Nd(e);let s=this.keyCache_[i];this.cacheEncryptionKeys_&&t&&!s&&e.bytes&&(this.keyCache_[i]=s={resolvedUri:e.resolvedUri,bytes:e.bytes});t={resolvedUri:(s||e).resolvedUri};return s&&(t.bytes=s.bytes),t}couldBeginLoading_(){return this.playlist_&&!this.paused()}load(){if(this.monitorBuffer_(),this.playlist_)return"INIT"===this.state&&this.couldBeginLoading_()?this.init_():void(!this.couldBeginLoading_()||"READY"!==this.state&&"INIT"!==this.state||(this.state="READY"))}init_(){return this.state="READY",this.resetEverything(),this.monitorBuffer_()}playlist(t,i={}){if(t){var s,r=this.playlist_,n=this.pendingSegment_;this.playlist_=t,this.xhrOptions_=i,"INIT"===this.state&&(t.syncInfo={mediaSequence:t.mediaSequence,time:0},"main"===this.loaderType_)&&this.syncController_.setDateTimeMappingForStart(t);let e=null;if(r&&(r.id?e=r.id:r.uri&&(e=r.uri)),this.logger_(`playlist update [${e} => ${t.id||t.uri}]`),this.trigger("syncinfoupdate"),"INIT"===this.state&&this.couldBeginLoading_())return this.init_();r&&r.uri===t.uri?(i=t.mediaSequence-r.mediaSequence,this.logger_(`live window shift [${i}]`),null!==this.mediaIndex&&(this.mediaIndex-=i,this.mediaIndex<0?(this.mediaIndex=null,this.partIndex=null):(s=this.playlist_.segments[this.mediaIndex],!this.partIndex||s.parts&&s.parts.length&&s.parts[this.partIndex]||(s=this.mediaIndex,this.logger_(`currently processing part (index ${this.partIndex}) no longer exists.`),this.resetLoader(),this.mediaIndex=s))),n&&(n.mediaIndex-=i,n.mediaIndex<0?(n.mediaIndex=null,n.partIndex=null):(0<=n.mediaIndex&&(n.segment=t.segments[n.mediaIndex]),0<=n.partIndex&&n.segment.parts&&(n.part=n.segment.parts[n.partIndex]))),this.syncController_.saveExpiredSegmentInfo(r,t)):(null!==this.mediaIndex&&(t.endList?this.resyncLoader():this.resetLoader()),this.currentMediaInfo_=void 0,this.trigger("playlistupdate"))}}pause(){this.checkBufferTimeout_&&(window.clearTimeout(this.checkBufferTimeout_),this.checkBufferTimeout_=null)}paused(){return null===this.checkBufferTimeout_}resetEverything(e){this.ended_=!1,this.activeInitSegmentId_=null,this.appendInitSegment_={audio:!0,video:!0},this.resetLoader(),this.remove(0,1/0,e),this.transmuxer_&&(this.transmuxer_.postMessage({action:"clearAllMp4Captions"}),this.transmuxer_.postMessage({action:"reset"}))}resetLoader(){this.fetchAtBuffer_=!1,this.resyncLoader()}resyncLoader(){this.transmuxer_&&hh(this.transmuxer_),this.mediaIndex=null,this.partIndex=null,this.syncPoint_=null,this.isPendingTimestampOffset_=!1,this.callQueue_=[],this.loadQueue_=[],this.metadataQueue_.id3=[],this.metadataQueue_.caption=[],this.abort(),this.transmuxer_&&this.transmuxer_.postMessage({action:"clearParsedMp4Captions"})}remove(t,i,s=()=>{},r=!1){if((i=i===1/0?this.duration_():i)<=t)this.logger_("skipping remove because end ${end} is <= start ${start}");else if(this.sourceUpdater_&&this.getMediaInfo_()){let e=1;var n=()=>{0===--e&&s()};!r&&this.audioDisabled_||(e++,this.sourceUpdater_.removeAudio(t,i,n)),!r&&"main"!==this.loaderType_||(this.gopBuffer_=((t,i,e,s)=>{var r=Math.ceil((i-s)*Ml),n=Math.ceil((e-s)*Ml),i=t.slice();let a=t.length;for(;a--&&!(t[a].pts<=n););if(-1!==a){let e=a+1;for(;e--&&!(t[e].pts<=r););e=Math.max(e,0),i.splice(e,a-e+1)}return i})(this.gopBuffer_,t,i,this.timeMapping_),e++,this.sourceUpdater_.removeVideo(t,i,n));for(const a in this.inbandTextTracks_)Uh(t,i,this.inbandTextTracks_[a]);Uh(t,i,this.segmentMetadataTrack_),n()}else this.logger_("skipping remove because no source updater or starting media info")}monitorBuffer_(){this.checkBufferTimeout_&&window.clearTimeout(this.checkBufferTimeout_),this.checkBufferTimeout_=window.setTimeout(this.monitorBufferTick_.bind(this),1)}monitorBufferTick_(){"READY"===this.state&&this.fillBuffer_(),this.checkBufferTimeout_&&window.clearTimeout(this.checkBufferTimeout_),this.checkBufferTimeout_=window.setTimeout(this.monitorBufferTick_.bind(this),500)}fillBuffer_(){var e;this.sourceUpdater_.updating()||(e=this.chooseNextRequest_())&&("number"==typeof e.timestampOffset&&(this.isPendingTimestampOffset_=!1,this.timelineChangeController_.pendingTimelineChange({type:this.loaderType_,from:this.currentTimeline_,to:e.timeline})),this.loadSegment_(e))}isEndOfStream_(e=this.mediaIndex,t=this.playlist_,i=this.partIndex){var s;return!(!t||!this.mediaSource_)&&(s="number"==typeof e&&t.segments[e],e=e+1===t.segments.length,i=!s||!s.parts||i+1===s.parts.length,t.endList)&&"open"===this.mediaSource_.readyState&&e&&i}chooseNextRequest_(){var e=this.buffered_(),t=ql(e)||0,e=Vl(e,this.currentTime_()),i=!this.hasPlayed_()&&1<=e,s=e>=this.goalBufferLength_(),r=this.playlist_.segments;if(!r.length||i||s)return null;this.syncPoint_=this.syncPoint_||this.syncController_.getSyncPoint(this.playlist_,this.duration_(),this.currentTimeline_,this.currentTime_());var n,i={partIndex:null,mediaIndex:null,startOfSegment:null,playlist:this.playlist_,isSyncRequest:Boolean(!this.syncPoint_)},t=(i.isSyncRequest?i.mediaIndex=function(t,i,s){i=i||[];var r=[];let n=0;for(let e=0;es))return e}return 0===r.length?0:r[r.length-1]}(this.currentTimeline_,r,t):null!==this.mediaIndex?(s=r[this.mediaIndex],n="number"==typeof this.partIndex?this.partIndex:-1,i.startOfSegment=s.end||t,s.parts&&s.parts[n+1]?(i.mediaIndex=this.mediaIndex,i.partIndex=n+1):i.mediaIndex=this.mediaIndex+1):({segmentIndex:s,startTime:n,partIndex:o}=md.getMediaInfoForTime({exactManifestTimings:this.exactManifestTimings,playlist:this.playlist_,currentTime:this.fetchAtBuffer_?t:this.currentTime_(),startingPartIndex:this.syncPoint_.partIndex,startingSegmentIndex:this.syncPoint_.segmentIndex,startTime:this.syncPoint_.time}),i.getMediaInfoForTime=this.fetchAtBuffer_?"bufferedEnd "+t:"currentTime "+this.currentTime_(),i.mediaIndex=s,i.startOfSegment=n,i.partIndex=o),r[i.mediaIndex]);let a=t&&"number"==typeof i.partIndex&&t.parts&&t.parts[i.partIndex];if(!t||"number"==typeof i.partIndex&&!a)return null;"number"!=typeof i.partIndex&&t.parts&&(i.partIndex=0,a=t.parts[0]),e||!a||a.independent||(0===i.partIndex?(n=(s=r[i.mediaIndex-1]).parts&&s.parts.length&&s.parts[s.parts.length-1])&&n.independent&&(--i.mediaIndex,i.partIndex=s.parts.length-1,i.independent="previous segment"):t.parts[i.partIndex-1].independent&&(--i.partIndex,i.independent="previous part"));var o=this.mediaSource_&&"ended"===this.mediaSource_.readyState;return i.mediaIndex>=r.length-1&&o&&!this.seeking_()?null:this.generateSegmentInfo_(i)}generateSegmentInfo_(e){var{independent:e,playlist:t,mediaIndex:i,startOfSegment:s,isSyncRequest:r,partIndex:n,forceTimestampOffset:a,getMediaInfoForTime:o}=e,l=t.segments[i],d="number"==typeof n&&l.parts[n],i={requestId:"segment-loader-"+Math.random(),uri:d&&d.resolvedUri||l.resolvedUri,mediaIndex:i,partIndex:d?n:null,isSyncRequest:r,startOfSegment:s,playlist:t,bytes:null,encryptedBytes:null,timestampOffset:null,timeline:l.timeline,duration:d&&d.duration||l.duration,segment:l,part:d,byteLength:0,transmuxer:this.transmuxer_,getMediaInfoForTime:o,independent:e},n="undefined"!=typeof a?a:this.isPendingTimestampOffset_,r=(i.timestampOffset=this.timestampOffsetForSegment_({segmentTimeline:l.timeline,currentTimeline:this.currentTimeline_,startOfSegment:s,buffered:this.buffered_(),overrideCheck:n}),ql(this.sourceUpdater_.audioBuffered()));return"number"==typeof r&&(i.audioAppendStart=r-this.sourceUpdater_.audioTimestampOffset()),this.sourceUpdater_.videoBuffered().length&&(i.gopsToAlignWith=((e,t,i)=>{if("undefined"==typeof t||null===t||!e.length)return[];var s=Math.ceil((t-i+3)*Ml);let r;for(r=0;rs);r++);return e.slice(r)})(this.gopBuffer_,this.currentTime_()-this.sourceUpdater_.videoTimestampOffset(),this.timeMapping_)),i}timestampOffsetForSegment_(e){return{segmentTimeline:e,currentTimeline:t,startOfSegment:i,buffered:s,overrideCheck:r}=[e][0],r||e!==t?!(e!md.isIncompatible(e));let d=e.filter(md.isEnabled);var e=(d=d.length?d:e.filter(e=>!md.isDisabled(e))).filter(md.hasAttribute.bind(null,"BANDWIDTH")).map(e=>{var t=l.getSyncPoint(e,r,o,i)?1:2;return{playlist:e,rebufferingImpact:md.estimateSegmentRequestTime(n,s,e)*t-a}}),h=e.filter(e=>e.rebufferingImpact<=0);return Nh(h,(e,t)=>fh(t.playlist,e.playlist)),h.length?h[0]:(Nh(e,(e,t)=>e.rebufferingImpact-t.rebufferingImpact),e[0]||null)}({main:this.vhs_.playlists.main,currentTime:e,bandwidth:i,duration:this.duration_(),segmentDuration:s,timeUntilRebuffer:r,currentTimeline:this.currentTimeline_,syncController:this.syncController_});if(n){var a=t-r-n.rebufferingImpact;let e=.5;r<=Gl&&(e=1),!n.playlist||n.playlist.uri===this.playlist_.uri||a{p[e.stream]=p[e.stream]||{startTime:1/0,captions:[],endTime:0};var t=p[e.stream];t.startTime=Math.min(t.startTime,e.startTime+c),t.endTime=Math.max(t.endTime,e.endTime+c),t.captions.push(e)}),Object.keys(p).forEach(e=>{var{startTime:t,endTime:i,captions:s}=p[e],r=this.inbandTextTracks_,n=(this.logger_(`adding cues from ${t} -> ${i} for `+e),r),a=this.vhs_.tech_,o=e;if(!n[o]){a.trigger({type:"usage",name:"vhs-608"});let s=o;/^cc708_/.test(o)&&(s="SERVICE"+o.split("_")[1]);var l=a.textTracks().getTrackById(s);if(l)n[o]=l;else{let e=o,t=o,i=!1;l=(a.options_.vhs&&a.options_.vhs.captionServices||{})[s];l&&(e=l.label,t=l.language,i=l.default),n[o]=a.addRemoteTextTrack({kind:"captions",id:s,default:i,label:e,language:t},!1).track}}Uh(t,i,r[e]);var{inbandTextTracks:d,captionArray:l,timestampOffset:h}={captionArray:s,inbandTextTracks:r,timestampOffset:c};if(l){const u=window.WebKitDataCue||window.VTTCue;l.forEach(e=>{var t=e.stream;d[t].addCue(new u(e.startTime+h,e.endTime+h,e.text))})}}),this.transmuxer_&&this.transmuxer_.postMessage({action:"clearParsedMp4Captions"})}else this.metadataQueue_.caption.push(this.handleCaptions_.bind(this,e,t))}handleId3_(e,t,i){var s,r,n,a;this.earlyAbortWhenNeeded_(e.stats),this.checkForAbort_(e.requestId)||(this.pendingSegment_.hasAppendedData_?(s=null===this.sourceUpdater_.videoTimestampOffset()?this.sourceUpdater_.audioTimestampOffset():this.sourceUpdater_.videoTimestampOffset(),r=this.inbandTextTracks_,n=i,a=this.vhs_.tech_,r.metadataTrack_||(r.metadataTrack_=a.addRemoteTextTrack({kind:"metadata",label:"Timed Metadata"},!1).track,r.metadataTrack_.inBandMetadataTrackDispatchType=n),Bh({inbandTextTracks:this.inbandTextTracks_,metadataArray:t,timestampOffset:s,videoDuration:this.duration_()})):this.metadataQueue_.id3.push(this.handleId3_.bind(this,e,t,i)))}processMetadataQueue_(){this.metadataQueue_.id3.forEach(e=>e()),this.metadataQueue_.caption.forEach(e=>e()),this.metadataQueue_.id3=[],this.metadataQueue_.caption=[]}processCallQueue_(){var e=this.callQueue_;this.callQueue_=[],e.forEach(e=>e())}processLoadQueue_(){var e=this.loadQueue_;this.loadQueue_=[],e.forEach(e=>e())}hasEnoughInfoToLoad_(){var e;return"audio"!==this.loaderType_||!(!(e=this.pendingSegment_)||this.getCurrentMediaInfo_()&&qh({timelineChangeController:this.timelineChangeController_,currentTimeline:this.currentTimeline_,segmentTimeline:e.timeline,loaderType:this.loaderType_,audioDisabled:this.audioDisabled_}))}getCurrentMediaInfo_(e=this.pendingSegment_){return e&&e.trackInfo||this.currentMediaInfo_}getMediaInfo_(e=this.pendingSegment_){return this.getCurrentMediaInfo_(e)||this.startingMediaInfo_}getPendingSegmentPlaylist(){return this.pendingSegment_?this.pendingSegment_.playlist:null}hasEnoughInfoToAppend_(){var e,t,i,s;return!!this.sourceUpdater_.ready()&&!(this.waitingOnRemove_||this.quotaExceededErrorRetryTimeout_||(e=this.pendingSegment_,t=this.getCurrentMediaInfo_(),!e)||!t||({hasAudio:t,hasVideo:i,isMuxed:s}=t,i&&!e.videoTimingInfo)||t&&!this.audioDisabled_&&!s&&!e.audioTimingInfo||qh({timelineChangeController:this.timelineChangeController_,currentTimeline:this.currentTimeline_,segmentTimeline:e.timeline,loaderType:this.loaderType_,audioDisabled:this.audioDisabled_}))}handleData_(t,e){if(this.earlyAbortWhenNeeded_(t.stats),!this.checkForAbort_(t.requestId))if(this.callQueue_.length||!this.hasEnoughInfoToAppend_())this.callQueue_.push(this.handleData_.bind(this,t,e));else{var i=this.pendingSegment_;if(this.setTimeMapping_(i.timeline),this.updateMediaSecondsLoaded_(i.part||i.segment),"closed"!==this.mediaSource_.readyState){if(t.map&&(t.map=this.initSegmentForMap(t.map,!0),i.segment.map=t.map),t.key&&this.segmentKey(t.key,!0),i.isFmp4=t.isFmp4,i.timingInfo=i.timingInfo||{},i.isFmp4)this.trigger("fmp4"),i.timingInfo.start=i[Hh(e.type)].start;else{t=this.getCurrentMediaInfo_(),t="main"===this.loaderType_&&t&&t.hasVideo;let e;t&&(e=i.videoTimingInfo.start),i.timingInfo.start=this.trueSegmentStart_({currentStart:i.timingInfo.start,playlist:i.playlist,mediaIndex:i.mediaIndex,currentVideoTimestampOffset:this.sourceUpdater_.videoTimestampOffset(),useVideoTimingInfo:t,firstVideoFrameTimeForData:e,videoTimingInfo:i.videoTimingInfo,audioTimingInfo:i.audioTimingInfo})}if(this.updateAppendInitSegmentStatus(i,e.type),this.updateSourceBufferTimestampOffset_(i),i.isSyncRequest){this.updateTimingInfoEnd_(i),this.syncController_.saveSegmentTimingInfo({segmentInfo:i,shouldSaveTimelineMapping:"main"===this.loaderType_});t=this.chooseNextRequest_();if(t.mediaIndex!==i.mediaIndex||t.partIndex!==i.partIndex)return void this.logger_("sync segment was incorrect, not appending");this.logger_("sync segment was correct, appending")}i.hasAppendedData_=!0,this.processMetadataQueue_(),this.appendData_(i,e)}}}updateAppendInitSegmentStatus(e,t){"main"!==this.loaderType_||"number"!=typeof e.timestampOffset||e.changedTimestampOffset||(this.appendInitSegment_={audio:!0,video:!0}),this.playlistOfLastInitSegment_[t]!==e.playlist&&(this.appendInitSegment_[t]=!0)}getInitSegmentAndUpdateState_({type:e,initSegment:t,map:i,playlist:s}){if(i){var r=Dd(i);if(this.activeInitSegmentId_===r)return null;t=this.initSegmentForMap(i,!0).bytes,this.activeInitSegmentId_=r}return t&&this.appendInitSegment_[e]?(this.playlistOfLastInitSegment_[e]=s,this.appendInitSegment_[e]=!1,this.activeInitSegmentId_=null,t):null}handleQuotaExceededError_({segmentInfo:e,type:t,bytes:i},s){var r=this.sourceUpdater_.audioBuffered(),n=this.sourceUpdater_.videoBuffered(),a=(1{this.logger_("On QUOTA_EXCEEDED_ERR, retrying append in 1s"),this.waitingOnRemove_=!1,this.quotaExceededErrorRetryTimeout_=window.setTimeout(()=>{this.logger_("On QUOTA_EXCEEDED_ERR, re-processing call queue"),this.quotaExceededErrorRetryTimeout_=null,this.processCallQueue_()},1e3)},!0))}handleAppendError_({segmentInfo:e,type:t,bytes:i},s){s&&(22===s.code?this.handleQuotaExceededError_({segmentInfo:e,type:t,bytes:i}):(this.logger_("Received non QUOTA_EXCEEDED_ERR on append",s),this.error(`${t} append of ${i.length}b failed for segment `+`#${e.mediaIndex} in playlist `+e.playlist.id),this.trigger("appenderror")))}appendToSourceBuffer_({segmentInfo:e,type:t,initSegment:i,data:s,bytes:r}){if(!r){var n=[s];let e=s.byteLength;i&&(n.unshift(i),e+=i.byteLength),r=(e=>{let t=0,i;return e.bytes&&(i=new Uint8Array(e.bytes),e.segments.forEach(e=>{i.set(e,t),t+=e.byteLength})),i})({bytes:e,segments:n})}this.sourceUpdater_.appendBuffer({segmentInfo:e,type:t,bytes:r},this.handleAppendError_.bind(this,{segmentInfo:e,type:t,bytes:r}))}handleSegmentTimingInfo_(e,t,i){this.pendingSegment_&&t===this.pendingSegment_.requestId&&((t=this.pendingSegment_.segment)[e=e+"TimingInfo"]||(t[e]={}),t[e].transmuxerPrependedSeconds=i.prependedContentDuration||0,t[e].transmuxedPresentationStart=i.start.presentation,t[e].transmuxedDecodeStart=i.start.decode,t[e].transmuxedPresentationEnd=i.end.presentation,t[e].transmuxedDecodeEnd=i.end.decode,t[e].baseMediaDecodeTime=i.baseMediaDecodeTime)}appendData_(e,t){var{type:i,data:s}=t;s&&s.byteLength&&("audio"===i&&this.audioDisabled_||(t=this.getInitSegmentAndUpdateState_({type:i,initSegment:t.initSegment,playlist:e.playlist,map:e.isFmp4?e.segment.map:null}),this.appendToSourceBuffer_({segmentInfo:e,type:i,initSegment:t,data:s})))}loadSegment_(t){this.state="WAITING",this.pendingSegment_=t,this.trimBackBuffer_(t),"number"==typeof t.timestampOffset&&this.transmuxer_&&this.transmuxer_.postMessage({action:"clearAllMp4Captions"}),this.hasEnoughInfoToLoad_()?this.updateTransmuxerAndRequestSegment_(t):this.loadQueue_.push(()=>{var e=fi({},t,{forceTimestampOffset:!0});fi(t,this.generateSegmentInfo_(e)),this.isPendingTimestampOffset_=!1,this.updateTransmuxerAndRequestSegment_(t)})}updateTransmuxerAndRequestSegment_(s){this.shouldUpdateTransmuxerTimestampOffset_(s.timestampOffset)&&(this.gopBuffer_.length=0,s.gopsToAlignWith=[],this.timeMapping_=0,this.transmuxer_.postMessage({action:"reset"}),this.transmuxer_.postMessage({action:"setTimestampOffset",timestampOffset:s.timestampOffset}));var e=this.createSimplifiedSegmentObj_(s),t=this.isEndOfStream_(s.mediaIndex,s.playlist,s.partIndex),i=null!==this.mediaIndex,r=s.timeline!==this.currentTimeline_&&0{this.logger_("received endedtimeline callback")},id3Fn:this.handleId3_.bind(this),dataFn:this.handleData_.bind(this),doneFn:this.segmentRequestFinished_.bind(this),onTransmuxerLog:({message:e,level:t,stream:i})=>{this.logger_(jh(s)+` logged from transmuxer stream ${i} as a ${t}: `+e)}})}trimBackBuffer_(e){var t=((e,t,i)=>{let s=t-D.BACK_BUFFER_LENGTH;return e.length&&(s=Math.max(s,e.start(0))),Math.min(t-i,s)})(this.seekable_(),this.currentTime_(),this.playlist_.targetDuration||10);0{if(!t.length)return e;if(i)return t.slice();var s=t[0].pts;let r=0;for(r;r=s);r++);return e.slice(0,r).concat(t)})(this.gopBuffer_,i.gopInfo,this.safeAppend_)),this.state="APPENDING",this.trigger("appending"),this.waitForAppendsToComplete_(e)}}setTimeMapping_(e){e=this.syncController_.mappingForTimeline(e);null!==e&&(this.timeMapping_=e)}updateMediaSecondsLoaded_(e){"number"==typeof e.start&&"number"==typeof e.end?this.mediaSecondsLoaded+=e.end-e.start:this.mediaSecondsLoaded+=e.duration}shouldUpdateTransmuxerTimestampOffset_(e){return null!==e&&("main"===this.loaderType_&&e!==this.sourceUpdater_.videoTimestampOffset()||!this.audioDisabled_&&e!==this.sourceUpdater_.audioTimestampOffset())}trueSegmentStart_({currentStart:e,playlist:t,mediaIndex:i,firstVideoFrameTimeForData:s,currentVideoTimestampOffset:r,useVideoTimingInfo:n,videoTimingInfo:a,audioTimingInfo:o}){return"undefined"!=typeof e?e:n?(e=t.segments[i-1],0!==i&&e&&"undefined"!=typeof e.start&&e.end===s+r?a.start:s):o.start}waitForAppendsToComplete_(e){var t,i,s=this.getCurrentMediaInfo_(e);s?({hasAudio:s,hasVideo:i,isMuxed:t}=s,i="main"===this.loaderType_&&i,s=!this.audioDisabled_&&s&&!t,e.waitingOnAppends=0,e.hasAppendedData_?(i&&e.waitingOnAppends++,s&&e.waitingOnAppends++,i&&this.sourceUpdater_.videoQueueCallback(this.checkAppendsDone_.bind(this,e)),s&&this.sourceUpdater_.audioQueueCallback(this.checkAppendsDone_.bind(this,e))):(e.timingInfo||"number"!=typeof e.timestampOffset||(this.isPendingTimestampOffset_=!0),e.timingInfo={start:0},e.waitingOnAppends++,this.isPendingTimestampOffset_||(this.updateSourceBufferTimestampOffset_(e),this.processMetadataQueue_()),this.checkAppendsDone_(e))):(this.error({message:"No starting media returned, likely due to an unsupported media format.",playlistExclusionDuration:1/0}),this.trigger("error"))}checkAppendsDone_(e){this.checkForAbort_(e.requestId)||(e.waitingOnAppends--,0===e.waitingOnAppends&&this.handleAppendsDone_())}checkForIllegalMediaSwitch(e){i=this.loaderType_,t=this.getCurrentMediaInfo_(),e=e;var t,i="main"===i&&t&&e?e.hasAudio||e.hasVideo?t.hasVideo&&!e.hasVideo?"Only audio found in segment when we expected video. We can't switch to audio only from a stream that had video. To get rid of this message, please add codec information to the manifest.":!t.hasVideo&&e.hasVideo?"Video found in segment when we expected only audio. We can't switch to a stream with video from an audio only stream. To get rid of this message, please add codec information to the manifest.":null:"Neither audio nor video found in segment.":null;return!!i&&(this.error({message:i,playlistExclusionDuration:1/0}),this.trigger("error"),!0)}updateSourceBufferTimestampOffset_(t){if(null!==t.timestampOffset&&"number"==typeof t.timingInfo.start&&!t.changedTimestampOffset&&"main"===this.loaderType_){let e=!1;t.timestampOffset-=this.getSegmentStartTimeForTimestampOffsetCalculation_({videoTimingInfo:t.segment.videoTimingInfo,audioTimingInfo:t.segment.audioTimingInfo,timingInfo:t.timingInfo}),t.changedTimestampOffset=!0,t.timestampOffset!==this.sourceUpdater_.videoTimestampOffset()&&(this.sourceUpdater_.videoTimestampOffset(t.timestampOffset),e=!0),t.timestampOffset!==this.sourceUpdater_.audioTimestampOffset()&&(this.sourceUpdater_.audioTimestampOffset(t.timestampOffset),e=!0),e&&this.trigger("timestampoffset")}}getSegmentStartTimeForTimestampOffsetCalculation_({videoTimingInfo:e,audioTimingInfo:t,timingInfo:i}){return this.useDtsForTimestampOffset_?e&&"number"==typeof e.transmuxedDecodeStart?e.transmuxedDecodeStart:t&&"number"==typeof t.transmuxedDecodeStart?t.transmuxedDecodeStart:i.start:i.start}updateTimingInfoEnd_(e){e.timingInfo=e.timingInfo||{};var t=this.getMediaInfo_(),t="main"===this.loaderType_&&t&&t.hasVideo&&e.videoTimingInfo?e.videoTimingInfo:e.audioTimingInfo;t&&(e.timingInfo.end="number"==typeof t.end?t.end:t.start+e.duration)}handleAppendsDone_(){var e,t,i;this.pendingSegment_&&this.trigger("appendsdone"),this.pendingSegment_?(e=this.pendingSegment_,this.updateTimingInfoEnd_(e),this.shouldSaveSegmentTimingInfo_&&this.syncController_.saveSegmentTimingInfo({segmentInfo:e,shouldSaveTimelineMapping:"main"===this.loaderType_}),(t=$h(e,this.sourceType_))&&("warn"===t.severity?T.log.warn(t.message):this.logger_(t.message)),this.recordThroughput_(e),this.pendingSegment_=null,this.state="READY",e.isSyncRequest&&(this.trigger("syncinfoupdate"),!e.hasAppendedData_)?this.logger_("Throwing away un-appended sync request "+jh(e)):(this.logger_("Appended "+jh(e)),this.addSegmentMetadataCue_(e),this.fetchAtBuffer_=!0,this.currentTimeline_!==e.timeline&&(this.timelineChangeController_.lastTimelineChange({type:this.loaderType_,from:this.currentTimeline_,to:e.timeline}),"main"!==this.loaderType_||this.audioDisabled_||this.timelineChangeController_.lastTimelineChange({type:"audio",from:this.currentTimeline_,to:e.timeline})),this.currentTimeline_=e.timeline,this.trigger("syncinfoupdate"),t=e.segment,i=e.part,t=t.end&&this.currentTime_()-t.end>3*e.playlist.targetDuration,i=i&&i.end&&this.currentTime_()-i.end>3*e.playlist.partTargetDuration,t||i?(this.logger_(`bad ${t?"segment":"part"} `+jh(e)),this.resetEverything()):(null!==this.mediaIndex&&this.trigger("bandwidthupdate"),this.trigger("progress"),this.mediaIndex=e.mediaIndex,this.partIndex=e.partIndex,this.isEndOfStream_(e.mediaIndex,e.playlist,e.partIndex)&&this.endOfStream(),this.trigger("appended"),e.hasAppendedData_&&this.mediaAppends++,this.paused()||this.monitorBuffer_()))):(this.state="READY",this.paused()||this.monitorBuffer_())}recordThroughput_(e){var t,i;e.duration<1/60?this.logger_("Ignoring segment's throughput because its duration of "+e.duration+" is less than the min to record "+1/60):(t=this.throughput.rate,i=Date.now()-e.endOfAllRequests+1,e=Math.floor(e.byteLength/i*8*1e3),this.throughput.rate+=(e-t)/++this.throughput.count)}addSegmentMetadataCue_(e){var t,i,s,r;this.segmentMetadataTrack_&&(t=(r=e.segment).start,i=r.end,Fh(t))&&Fh(i)&&(Uh(t,i,this.segmentMetadataTrack_),s=window.WebKitDataCue||window.VTTCue,r={custom:r.custom,dateTimeObject:r.dateTimeObject,dateTimeString:r.dateTimeString,bandwidth:e.playlist.attributes.BANDWIDTH,resolution:e.playlist.attributes.RESOLUTION,codecs:e.playlist.attributes.CODECS,byteLength:e.byteLength,uri:e.uri,timeline:e.timeline,playlist:e.playlist.id,start:t,end:i},(e=new s(t,i,JSON.stringify(r))).value=r,this.segmentMetadataTrack_.addCue(e))}}function Gh(){}function zh(e){return"string"!=typeof e?e:e.replace(/./,e=>e.toUpperCase())}const Xh=["video","audio"],Kh=(e,t)=>{var i=t[e+"Buffer"];return i&&i.updating||t.queuePending[e]},Yh=(i,s)=>{if(0!==s.queue.length){let e=0,t=s.queue[e];if("mediaSource"===t.type)s.updating()||"closed"===s.mediaSource.readyState||(s.queue.shift(),t.action(s),t.doneFn&&t.doneFn(),Yh("audio",s),Yh("video",s));else if("mediaSource"!==i&&s.ready()&&"closed"!==s.mediaSource.readyState&&!Kh(i,s)){if(t.type!==i){if(null===(e=((t,i)=>{for(let e=0;e{var i=t[e+"Buffer"],s=zh(e);i&&(i.removeEventListener("updateend",t[`on${s}UpdateEnd_`]),i.removeEventListener("error",t[`on${s}Error_`]),t.codecs[e]=null,t[e+"Buffer"]=null)},Jh=(e,t)=>e&&t&&-1!==Array.prototype.indexOf.call(e.sourceBuffers,t),Zh={appendBuffer:(s,r,n)=>(t,i)=>{var e=i[t+"Buffer"];if(Jh(i.mediaSource,e)){i.logger_(`Appending segment ${r.mediaIndex}'s ${s.length} bytes to ${t}Buffer`);try{e.appendBuffer(s)}catch(e){i.logger_(`Error with code ${e.code} `+(22===e.code?"(QUOTA_EXCEEDED_ERR) ":"")+`when appending segment ${r.mediaIndex} to ${t}Buffer`),i.queuePending[t]=null,n(e)}}},remove:(s,r)=>(t,i)=>{var e=i[t+"Buffer"];if(Jh(i.mediaSource,e)){i.logger_(`Removing ${s} to ${r} from ${t}Buffer`);try{e.remove(s,r)}catch(e){i.logger_(`Remove ${s} to ${r} from ${t}Buffer failed`)}}},timestampOffset:s=>(e,t)=>{var i=t[e+"Buffer"];Jh(t.mediaSource,i)&&(t.logger_(`Setting ${e}timestampOffset to `+s),i.timestampOffset=s)},callback:i=>(e,t)=>{i()},endOfStream:t=>e=>{if("open"===e.mediaSource.readyState){e.logger_(`Calling mediaSource endOfStream(${t||""})`);try{e.mediaSource.endOfStream(t)}catch(e){T.log.warn("Failed to call media source endOfStream",e)}}},duration:t=>e=>{e.logger_("Setting mediaSource duration to "+t);try{e.mediaSource.duration=t}catch(e){T.log.warn("Failed to set media source duration",e)}},abort:()=>(t,e)=>{if("open"===e.mediaSource.readyState){var i=e[t+"Buffer"];if(Jh(e.mediaSource,i)){e.logger_(`calling abort on ${t}Buffer`);try{i.abort()}catch(e){T.log.warn(`Failed to abort on ${t}Buffer`,e)}}}},addSourceBuffer:(s,r)=>e=>{var t=zh(s),i=Bn(r),i=(e.logger_(`Adding ${s}Buffer with codec ${r} to mediaSource`),e.mediaSource.addSourceBuffer(i));i.addEventListener("updateend",e[`on${t}UpdateEnd_`]),i.addEventListener("error",e[`on${t}Error_`]),e.codecs[s]=r,e[s+"Buffer"]=i},removeSourceBuffer:i=>e=>{var t=e[i+"Buffer"];if(Qh(i,e),Jh(e.mediaSource,t)){e.logger_(`Removing ${i}Buffer with codec ${e.codecs[i]} from mediaSource`);try{e.mediaSource.removeSourceBuffer(t)}catch(e){T.log.warn(`Failed to removeSourceBuffer ${i}Buffer`,e)}}},changeType:r=>(e,t)=>{var i=t[e+"Buffer"],s=Bn(r);Jh(t.mediaSource,i)&&t.codecs[e]!==r&&(t.logger_(`changing ${e}Buffer codec from ${t.codecs[e]} to `+r),i.changeType(s),t.codecs[e]=r)}},eu=({type:e,sourceUpdater:t,action:i,doneFn:s,name:r})=>{t.queue.push({type:e,action:i,doneFn:s,name:r}),Yh(e,t)},tu=(i,s)=>e=>{var t;s.queuePending[i]&&(t=s.queuePending[i].doneFn,s.queuePending[i]=null,t)&&t(s[i+"Error_"]),Yh(i,s)};class iu extends T.EventTarget{constructor(e){super(),this.mediaSource=e,this.sourceopenListener_=()=>Yh("mediaSource",this),this.mediaSource.addEventListener("sourceopen",this.sourceopenListener_),this.logger_=Bl("SourceUpdater"),this.audioTimestampOffset_=0,this.videoTimestampOffset_=0,this.queue=[],this.queuePending={audio:null,video:null},this.delayedAudioAppendQueue_=[],this.videoAppendQueued_=!1,this.codecs={},this.onVideoUpdateEnd_=tu("video",this),this.onAudioUpdateEnd_=tu("audio",this),this.onVideoError_=e=>{this.videoError_=e},this.onAudioError_=e=>{this.audioError_=e},this.createdSourceBuffers_=!1,this.initializedEme_=!1,this.triggeredReady_=!1}initializedEme(){this.initializedEme_=!0,this.triggerReady()}hasCreatedSourceBuffers(){return this.createdSourceBuffers_}hasInitializedAnyEme(){return this.initializedEme_}ready(){return this.hasCreatedSourceBuffers()&&this.hasInitializedAnyEme()}createSourceBuffers(e){this.hasCreatedSourceBuffers()||(this.addOrChangeSourceBuffers(e),this.createdSourceBuffers_=!0,this.trigger("createdsourcebuffers"),this.triggerReady())}triggerReady(){this.ready()&&!this.triggeredReady_&&(this.triggeredReady_=!0,this.trigger("ready"))}addSourceBuffer(e,t){eu({type:"mediaSource",sourceUpdater:this,action:Zh.addSourceBuffer(e,t),name:"addSourceBuffer"})}abort(e){eu({type:e,sourceUpdater:this,action:Zh.abort(e),name:"abort"})}removeSourceBuffer(e){this.canRemoveSourceBuffer()?eu({type:"mediaSource",sourceUpdater:this,action:Zh.removeSourceBuffer(e),name:"removeSourceBuffer"}):T.log.error("removeSourceBuffer is not supported!")}canRemoveSourceBuffer(){return!T.browser.IE_VERSION&&!T.browser.IS_FIREFOX&&window.MediaSource&&window.MediaSource.prototype&&"function"==typeof window.MediaSource.prototype.removeSourceBuffer}static canChangeType(){return window.SourceBuffer&&window.SourceBuffer.prototype&&"function"==typeof window.SourceBuffer.prototype.changeType}canChangeType(){return this.constructor.canChangeType()}changeType(e,t){this.canChangeType()?eu({type:e,sourceUpdater:this,action:Zh.changeType(t),name:"changeType"}):T.log.error("changeType is not supported!")}addOrChangeSourceBuffers(i){if(!i||"object"!=typeof i||0===Object.keys(i).length)throw new Error("Cannot addOrChangeSourceBuffers to undefined codecs");Object.keys(i).forEach(e=>{var t=i[e];if(!this.hasCreatedSourceBuffers())return this.addSourceBuffer(e,t);this.canChangeType()&&this.changeType(e,t)})}appendBuffer(e,t){var{segmentInfo:i,type:s,bytes:r}=e;this.processedAppend_=!0,"audio"===s&&this.videoBuffer&&!this.videoAppendQueued_?(this.delayedAudioAppendQueue_.push([e,t]),this.logger_(`delayed audio append of ${r.length} until video append`)):(e=t,eu({type:s,sourceUpdater:this,action:Zh.appendBuffer(r,i||{mediaIndex:-1},e),doneFn:t,name:"appendBuffer"}),"video"===s&&(this.videoAppendQueued_=!0,this.delayedAudioAppendQueue_.length)&&(r=this.delayedAudioAppendQueue_.slice(),this.logger_(`queuing delayed audio ${r.length} appendBuffers`),this.delayedAudioAppendQueue_.length=0,r.forEach(e=>{this.appendBuffer.apply(this,e)})))}audioBuffered(){return Jh(this.mediaSource,this.audioBuffer)&&this.audioBuffer.buffered||Fl()}videoBuffered(){return Jh(this.mediaSource,this.videoBuffer)&&this.videoBuffer.buffered||Fl()}buffered(){var e=Jh(this.mediaSource,this.videoBuffer)?this.videoBuffer:null,t=Jh(this.mediaSource,this.audioBuffer)?this.audioBuffer:null;if(t&&!e)return this.audioBuffered();if(e&&!t)return this.videoBuffered();{var r=this.audioBuffered();var n=this.videoBuffered();let e=null,t=null,i=0;var a=[],o=[];if(!(r&&r.length&&n&&n.length))return Fl();let s=r.length;for(;s--;)a.push({time:r.start(s),type:"start"}),a.push({time:r.end(s),type:"end"});for(s=n.length;s--;)a.push({time:n.start(s),type:"start"}),a.push({time:n.end(s),type:"end"});for(a.sort(function(e,t){return e.time-t.time}),s=0;s{this.abort(e),this.canRemoveSourceBuffer()?this.removeSourceBuffer(e):this[e+"QueueCallback"](()=>Qh(e,this))}),this.videoAppendQueued_=!1,this.delayedAudioAppendQueue_.length=0,this.sourceopenListener_&&this.mediaSource.removeEventListener("sourceopen",this.sourceopenListener_),this.off()}}const su=e=>decodeURIComponent(escape(String.fromCharCode.apply(null,e))),ru=new Uint8Array("\n\n".split("").map(e=>e.charCodeAt(0)));class nu extends Error{constructor(){super("Trying to parse received VTT cues, but there is no WebVTT. Make sure vtt.js is loaded.")}}class au extends Wh{constructor(e,t={}){super(e,t),this.mediaSource_=null,this.subtitlesTrack_=null,this.loaderType_="subtitle",this.featuresNativeTextTracks_=e.featuresNativeTextTracks,this.loadVttJs=e.loadVttJs,this.shouldSaveSegmentTimingInfo_=!1}createTransmuxer_(){return null}buffered_(){var e;return this.subtitlesTrack_&&this.subtitlesTrack_.cues&&this.subtitlesTrack_.cues.length?Fl([[(e=this.subtitlesTrack_.cues)[0].startTime,e[e.length-1].startTime]]):Fl()}initSegmentForMap(e,t=!1){if(!e)return null;var i=Dd(e);let s=this.initSegments_[i];return t&&!s&&e.bytes&&(t=ru.byteLength+e.bytes.byteLength,(t=new Uint8Array(t)).set(e.bytes),t.set(ru,e.bytes.byteLength),this.initSegments_[i]=s={resolvedUri:e.resolvedUri,byterange:e.byterange,bytes:t}),s||e}couldBeginLoading_(){return this.playlist_&&this.subtitlesTrack_&&!this.paused()}init_(){return this.state="READY",this.resetEverything(),this.monitorBuffer_()}track(e){return"undefined"!=typeof e&&(this.subtitlesTrack_=e,"INIT"===this.state&&this.couldBeginLoading_())&&this.init_(),this.subtitlesTrack_}remove(e,t){Uh(e,t,this.subtitlesTrack_)}fillBuffer_(){var e=this.chooseNextRequest_();e&&(null===this.syncController_.timestampOffsetForTimeline(e.timeline)?(this.syncController_.one("timestampoffset",()=>{this.state="READY",this.paused()||this.monitorBuffer_()}),this.state="WAITING_ON_TIMELINE"):this.loadSegment_(e))}timestampOffsetForSegment_(){return null}chooseNextRequest_(){return this.skipEmptySegments_(super.chooseNextRequest_())}skipEmptySegments_(e){for(;e&&e.segment.empty;){if(e.mediaIndex+1>=e.playlist.segments.length){e=null;break}e=this.generateSegmentInfo_({playlist:e.playlist,mediaIndex:e.mediaIndex+1,startOfSegment:e.startOfSegment+e.duration,isSyncRequest:e.isSyncRequest})}return e}stopForError(e){this.error(e),this.state="READY",this.pause(),this.trigger("error")}segmentRequestFinished_(e,t,i){if(this.subtitlesTrack_)if(this.saveTransferStats_(t.stats),this.pendingSegment_)if(e)e.code===yh.TIMEOUT&&this.handleTimeout_(),e.code===yh.ABORTED?this.mediaRequestsAborted+=1:this.mediaRequestsErrored+=1,this.stopForError(e);else{var s=this.pendingSegment_,r=(this.saveBandwidthRelatedStats_(s.duration,t.stats),t.key&&this.segmentKey(t.key,!0),this.state="APPENDING",this.trigger("appending"),s.segment);if(r.map&&(r.map.bytes=t.map.bytes),s.bytes=t.bytes,"function"!=typeof window.WebVTT&&"function"==typeof this.loadVttJs)this.state="WAITING_ON_VTTJS",this.loadVttJs().then(()=>this.segmentRequestFinished_(e,t,i),()=>this.stopForError({message:"Error loading vtt.js"}));else{r.requested=!0;try{this.parseVTTCues_(s)}catch(e){return void this.stopForError({message:e.message})}if(this.updateTimeMapping_(s,this.syncController_.timelines[s.timeline],this.playlist_),s.cues.length?s.timingInfo={start:s.cues[0].startTime,end:s.cues[s.cues.length-1].endTime}:s.timingInfo={start:s.startOfSegment,end:s.startOfSegment+s.duration},s.isSyncRequest)this.trigger("syncinfoupdate"),this.pendingSegment_=null,this.state="READY";else{s.byteLength=s.bytes.byteLength,this.mediaSecondsLoaded+=r.duration,s.cues.forEach(e=>{this.subtitlesTrack_.addCue(this.featuresNativeTextTracks_?new window.VTTCue(e.startTime,e.endTime,e.text):e)});var n=this.subtitlesTrack_,a=n.cues;if(a)for(let i=0;in.removeCue(e))}this.handleAppendsDone_()}}}else this.state="READY",this.mediaRequestsAborted+=1;else this.state="READY"}handleData_(){}updateTimingInfoEnd_(){}parseVTTCues_(t){let e,i=!1;if("function"!=typeof window.WebVTT)throw new nu;"function"==typeof window.TextDecoder?e=new window.TextDecoder("utf8"):(e=window.WebVTT.StringDecoder(),i=!0);var s=new window.WebVTT.Parser(window,window.vttjs,e);if(t.cues=[],t.timestampmap={MPEGTS:0,LOCAL:0},s.oncue=t.cues.push.bind(t.cues),s.ontimestampmap=e=>{t.timestampmap=e},s.onparsingerror=e=>{T.log.warn("Error encountered when parsing cues: "+e.message)},t.segment.map){let e=t.segment.map.bytes;i&&(e=su(e)),s.parse(e)}let r=t.bytes;i&&(r=su(r)),s.parse(r),s.flush()}updateTimeMapping_(e,t,i){var s=e.segment;if(t)if(e.cues.length){var r=e.timestampmap;const n=r.MPEGTS/Ml-r.LOCAL+t.mapping;e.cues.forEach(e=>{e.startTime+=n,e.endTime+=n}),i.syncInfo||(r=e.cues[0].startTime,t=e.cues[e.cues.length-1].startTime,i.syncInfo={mediaSequence:i.mediaSequence+e.mediaIndex,time:Math.min(r,t-s.duration)})}else s.empty=!0}}const ou=[{name:"VOD",run:(e,t,i,s,r)=>{return i!==1/0?{time:0,segmentIndex:0,partIndex:null}:null}},{name:"ProgramDateTime",run:(t,i,e,s,r)=>{if(!Object.keys(t.timelineToDatetimeMappings).length)return null;let n=null,a=null;var o=Jl(i);r=r||0;for(let e=0;e{let n=null,a=null;r=r||0;var o=Jl(t);for(let e=0;e=d)&&(a=d,n={time:h,segmentIndex:l.segmentIndex,partIndex:l.partIndex})}}return n}},{name:"Discontinuity",run:(i,s,e,t,r)=>{let n=null;if(r=r||0,s.discontinuityStarts&&s.discontinuityStarts.length){let t=null;for(let e=0;e=l)&&(t=l,n={time:o.time,segmentIndex:a,partIndex:null})}}}return n}},{name:"Playlist",run:(e,t,i,s,r)=>{return t.syncInfo?{time:t.syncInfo.time,segmentIndex:t.syncInfo.mediaSequence-t.mediaSequence,partIndex:null}:null}}];class lu extends T.EventTarget{constructor(e=0){super(),this.timelines=[],this.discontinuities=[],this.timelineToDatetimeMappings={},this.logger_=Bl("SyncController")}getSyncPoint(e,t,i,s){e=this.runStrategies_(e,t,i,s);return e.length?this.selectSyncPoint_(e,{key:"time",value:s}):null}getExpiredTime(e,t){return e&&e.segments&&(t=this.runStrategies_(e,t,e.discontinuitySequence,0)).length?(0<(t=this.selectSyncPoint_(t,{key:"segmentIndex",value:0})).segmentIndex&&(t.time*=-1),Math.abs(t.time+$l({defaultDuration:e.targetDuration,durationList:e.segments,startIndex:t.segmentIndex,endIndex:0}))):null}runStrategies_(t,i,s,r){var n=[];for(let e=0;eo){let e;e=a<0?s.start-$l({defaultDuration:i.targetDuration,durationList:i.segments,startIndex:t.mediaIndex,endIndex:r}):s.end+$l({defaultDuration:i.targetDuration,durationList:i.segments,startIndex:t.mediaIndex+1,endIndex:r}),this.discontinuities[n]={time:e,accuracy:o}}}}dispose(){this.trigger("dispose"),this.off()}}class du extends T.EventTarget{constructor(){super(),this.pendingTimelineChanges_={},this.lastTimelineChanges_={}}clearPendingTimelineChange(e){this.pendingTimelineChanges_[e]=null,this.trigger("pendingtimelinechange")}pendingTimelineChange({type:e,from:t,to:i}){return"number"==typeof t&&"number"==typeof i&&(this.pendingTimelineChanges_[e]={type:e,from:t,to:i},this.trigger("pendingtimelinechange")),this.pendingTimelineChanges_[e]}lastTimelineChange({type:e,from:t,to:i}){return"number"==typeof t&&"number"==typeof i&&(this.lastTimelineChanges_[e]={type:e,from:t,to:i},delete this.pendingTimelineChanges_[e],this.trigger("timelinechange")),this.lastTimelineChanges_[e]}dispose(){this.trigger("dispose"),this.pendingTimelineChanges_={},this.lastTimelineChanges_={},this.off()}}var hu=Jd(Zd(eh(function(){var e=function(){function e(){this.listeners={}}var t=e.prototype;return t.on=function(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)},t.off=function(e,t){return!!this.listeners[e]&&(t=this.listeners[e].indexOf(t),this.listeners[e]=this.listeners[e].slice(0),this.listeners[e].splice(t,1),-1>7))^n]=n;for(a=o=0;!s[a];a^=l||1,o=p[o]||1)for(u=(u=o^o<<1^o<<2^o<<3^o<<4)>>8^255&u^99,h=c[d=c[l=c[r[s[a]=u]=a]]],g=16843009*h^65537*d^257*l^16843008*a,m=257*c[u]^16843008*u,n=0;n<4;n++)t[n][a]=m=m<<24^m>>>8,i[n][u]=g=g<<24^g>>>8;for(n=0;n<5;n++)t[n]=t[n].slice(0),i[n]=i[n].slice(0);return e}(),this._tables=[[h[0][0].slice(),h[0][1].slice(),h[0][2].slice(),h[0][3].slice(),h[0][4].slice()],[h[1][0].slice(),h[1][1].slice(),h[1][2].slice(),h[1][3].slice(),h[1][4].slice()]];let t,i,s;var r=this._tables[0][4],n=this._tables[1],a=e.length;let o=1;if(4!==a&&6!==a&&8!==a)throw new Error("Invalid aes key size");var l=e.slice(0),d=[];for(this._key=[l,d],t=a;t<4*a+28;t++)s=l[t-1],(t%a==0||8===a&&t%a==4)&&(s=r[s>>>24]<<24^r[s>>16&255]<<16^r[s>>8&255]<<8^r[255&s],t%a==0)&&(s=s<<8^s>>>24^o<<24,o=o<<1^283*(o>>7)),l[t]=l[t-a]^s;for(i=0;t;i++,t--)s=l[3&i?t:t-4],t<=4||i<4?d[i]=s:d[i]=n[0][r[s>>>24]]^n[1][r[s>>16&255]]^n[2][r[s>>8&255]]^n[3][r[255&s]]}decrypt(e,t,i,s,r,n){var a,o,l=this._key[1];let d=e^l[0],h=s^l[1],u=i^l[2],c=t^l[3],p;var m=l.length/4-2;let g,f=4;var e=this._tables[1],y=e[0],_=e[1],v=e[2],b=e[3],T=e[4];for(g=0;g>>24]^_[h>>16&255]^v[u>>8&255]^b[255&c]^l[f],a=y[h>>>24]^_[u>>16&255]^v[c>>8&255]^b[255&d]^l[f+1],o=y[u>>>24]^_[c>>16&255]^v[d>>8&255]^b[255&h]^l[f+2],c=y[c>>>24]^_[d>>16&255]^v[h>>8&255]^b[255&u]^l[f+3],f+=4,d=p,h=a,u=o;for(g=0;g<4;g++)r[(3&-g)+n]=T[d>>>24]<<24^T[h>>16&255]<<16^T[u>>8&255]<<8^T[255&c]^l[f++],p=d,d=h,h=u,u=c,c=p}}class l extends e{constructor(){super(e),this.jobs=[],this.delay=1,this.timeout_=null}processJob_(){this.jobs.shift()(),this.jobs.length?this.timeout_=setTimeout(this.processJob_.bind(this),this.delay):this.timeout_=null}push(e){this.jobs.push(e),this.timeout_||(this.timeout_=setTimeout(this.processJob_.bind(this),this.delay))}}function f(e){return e<<24|(65280&e)<<8|(16711680&e)>>8|e>>>24}class d{constructor(e,t,i,s){var r=d.STEP,n=new Int32Array(e.buffer);const a=new Uint8Array(e.byteLength);let o=0;for(this.asyncStream_=new l,this.asyncStream_.push(this.decryptChunk_(n.subarray(o,o+r),t,i,a)),o=r;o>2),l=new g(Array.prototype.slice.call(t)),t=new Uint8Array(e.byteLength),d=new Int32Array(t.buffer);let h,u,c,p,m;for(h=i[0],u=i[1],c=i[2],p=i[3],m=0;m{var t,i=s[e];t=i,("function"===ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer instanceof ArrayBuffer)?r[e]={bytes:i.buffer,byteOffset:i.byteOffset,byteLength:i.byteLength}:r[e]=i}),r}self.onmessage=function(e){const i=e.data;var e=new Uint8Array(i.encrypted.bytes,i.encrypted.byteOffset,i.encrypted.byteLength),t=new Uint32Array(i.key.bytes,i.key.byteOffset,i.key.byteLength/4),s=new Uint32Array(i.iv.bytes,i.iv.byteOffset,i.iv.byteLength/4);new d(e,t,s,function(e,t){self.postMessage(r({source:i.source,decrypted:t}),[t.buffer])})}})));const uu=(e,t)=>{e.abort(),e.pause(),t&&t.activePlaylistLoader&&(t.activePlaylistLoader.pause(),t.activePlaylistLoader=null)},cu=(e,t)=>{(t.activePlaylistLoader=e).load()},pu={AUDIO:(a,o)=>()=>{var{segmentLoaders:{[a]:e},mediaTypes:{[a]:t},excludePlaylist:i}=o,e=(uu(e,t),t.activeTrack()),s=t.activeGroup(),s=(s.filter(e=>e.default)[0]||s[0]).id,r=t.tracks[s];if(e===r)i({error:{message:"Problem encountered loading the default audio track."}});else{T.log.warn("Problem encountered loading the alternate audio track.Switching back to default.");for(const n in t.tracks)t.tracks[n].enabled=t.tracks[n]===r;t.onTrackChanged()}},SUBTITLES:(i,s)=>()=>{var{segmentLoaders:{[i]:e},mediaTypes:{[i]:t}}=s,e=(T.log.warn("Problem encountered loading the subtitle track.Disabling subtitle track."),uu(e,t),t.activeTrack());e&&(e.mode="disabled"),t.onTrackChanged()}},mu={AUDIO:(e,t,i)=>{if(!t)return;const{tech:s,requestOptions:r,segmentLoaders:{[e]:n}}=i;t.on("loadedmetadata",()=>{var e=t.media();n.playlist(e,r),(!s.paused()||e.endList&&"none"!==s.preload())&&n.load()}),t.on("loadedplaylist",()=>{n.playlist(t.media(),r),s.paused()||n.load()}),t.on("error",pu[e](e,i))},SUBTITLES:(e,t,i)=>{const{tech:s,requestOptions:r,segmentLoaders:{[e]:n},mediaTypes:{[e]:a}}=i;t.on("loadedmetadata",()=>{var e=t.media();n.playlist(e,r),n.track(a.activeTrack()),(!s.paused()||e.endList&&"none"!==s.preload())&&n.load()}),t.on("loadedplaylist",()=>{n.playlist(t.media(),r),s.paused()||n.load()}),t.on("error",pu[e](e,i))}},gu={AUDIO:(i,s)=>{var r,{vhs:n,sourceType:a,segmentLoaders:{[i]:e},requestOptions:o,main:{mediaGroups:l},mediaTypes:{[i]:{groups:d,tracks:h,logger_:u}},mainPlaylistLoader:c}=s,p=pd(c.main);l[i]&&0!==Object.keys(l[i]).length||(l[i]={main:{default:{default:!0}}},p&&(l[i].main.default.playlists=c.main.playlists));for(const m in l[i]){d[m]||(d[m]=[]);for(const g in l[i][m]){let e=l[i][m][g],t;t=p?(u(`AUDIO group '${m}' label '${g}' is a main playlist`),e.isMainPlaylist=!0,null):"vhs-json"===a&&e.playlists?new Cd(e.playlists[0],n,o):e.resolvedUri?new Cd(e.resolvedUri,n,o):e.playlists&&"dash"===a?new Kd(e.playlists[0],n,o,c):null,e=O({id:g,playlistLoader:t},e),mu[i](i,e.playlistLoader,s),d[m].push(e),"undefined"==typeof h[g]&&(r=new T.AudioTrack({id:g,kind:(e=>{let t=e.default?"main":"alternative";return t=e.characteristics&&0<=e.characteristics.indexOf("public.accessibility.describes-video")?"main-desc":t})(e),enabled:!1,language:e.language,default:e.default,label:g}),h[g]=r)}}e.on("error",pu[i](i,s))},SUBTITLES:(i,s)=>{var r,{tech:n,vhs:a,sourceType:o,segmentLoaders:{[i]:e},requestOptions:l,main:{mediaGroups:d},mediaTypes:{[i]:{groups:h,tracks:u}},mainPlaylistLoader:c}=s;for(const p in d[i]){h[p]||(h[p]=[]);for(const m in d[i][p])if(!d[i][p][m].forced){let e=d[i][p][m],t;if("hls"===o)t=new Cd(e.resolvedUri,a,l);else if("dash"===o){if(!e.playlists.filter(e=>e.excludeUntil!==1/0).length)return;t=new Kd(e.playlists[0],a,l,c)}else"vhs-json"===o&&(t=new Cd(e.playlists?e.playlists[0]:e.resolvedUri,a,l));e=O({id:m,playlistLoader:t},e),mu[i](i,e.playlistLoader,s),h[p].push(e),"undefined"==typeof u[m]&&(r=n.addRemoteTextTrack({id:m,kind:"subtitles",default:e.default&&e.autoselect,language:e.language,label:m},!1).track,u[m]=r)}}e.on("error",pu[i](i,s))},"CLOSED-CAPTIONS":(e,t)=>{var{tech:i,main:{mediaGroups:s},mediaTypes:{[e]:{groups:r,tracks:n}}}=t;for(const l in s[e]){r[l]||(r[l]=[]);for(const d in s[e][l]){var a=s[e][l][d];if(/^(?:CC|SERVICE)/.test(a.instreamId)){var o=i.options_.vhs&&i.options_.vhs.captionServices||{};let e={label:d,language:a.language,instreamId:a.instreamId,default:a.default&&a.autoselect};void 0===(e=o[e.instreamId]?O(e,o[e.instreamId]):e).default&&delete e.default,r[l].push(O({id:d},a)),"undefined"==typeof n[d]&&(o=i.addRemoteTextTrack({id:e.instreamId,kind:"captions",default:e.default,language:e.language,label:e.label},!1).track,n[d]=o)}}}}},fu=(t,i)=>{for(let e=0;e()=>{var{[i]:{tracks:e}}=s["mediaTypes"];for(const t in e)if(e[t].enabled)return e[t];return null},SUBTITLES:(i,s)=>()=>{var{[i]:{tracks:e}}=s["mediaTypes"];for(const t in e)if("showing"===e[t].mode||"hidden"===e[t].mode)return e[t];return null}},_u=n=>{["AUDIO","SUBTITLES","CLOSED-CAPTIONS"].forEach(e=>{gu[e](e,n)});const{mediaTypes:a,mainPlaylistLoader:e,tech:t,vhs:i,segmentLoaders:{AUDIO:s,main:r}}=n;["AUDIO","SUBTITLES"].forEach(e=>{var o,l,d,h,i,s,u,c,t,r;a[e].activeGroup=(o=e,l=n,t=>{var{mainPlaylistLoader:e,mediaTypes:{[o]:{groups:i}}}=l,s=e.media();if(!s)return null;let r=null;s.attributes[o]&&(r=i[s.attributes[o]]);var n=Object.keys(i);if(!r)if("AUDIO"===o&&1e.id===t.id)[0]||null}),a[e].activeTrack=yu[e](e,n),a[e].onGroupChanged=(d=e,h=n,()=>{var{segmentLoaders:{[d]:e,main:t},mediaTypes:{[d]:i}}=h,s=i.activeTrack(),r=i.getActiveGroup(),n=i.activePlaylistLoader,a=i.lastGroup_;r&&a&&r.id===a.id||(i.lastGroup_=r,i.lastTrack_=s,uu(e,i),r&&!r.isMainPlaylist&&(r.playlistLoader?(e.resyncLoader(),cu(r.playlistLoader,i)):n&&t.resetEverything()))}),a[e].onGroupChanging=(i=e,s=n,()=>{var{segmentLoaders:{[i]:e},mediaTypes:{[i]:t}}=s;t.lastGroup_=null,e.abort(),e.pause()}),a[e].onTrackChanged=(u=e,c=n,()=>{var e,t,{mainPlaylistLoader:i,segmentLoaders:{[u]:s,main:r},mediaTypes:{[u]:n}}=c,a=n.activeTrack(),o=n.getActiveGroup(),l=n.activePlaylistLoader,d=n.lastTrack_;if((!d||!a||d.id!==a.id)&&(n.lastGroup_=o,n.lastTrack_=a,uu(s,n),o)){if(o.isMainPlaylist)return!a||!d||a.id===d.id||(t=(e=c.vhs.playlistController_).selectPlaylist(),e.media()===t)?void 0:(n.logger_(`track change. Switching main audio from ${d.id} to `+a.id),i.pause(),r.resetEverything(),void e.fastQualityChange_(t));if("AUDIO"===u){if(!o.playlistLoader)return r.setAudio(!0),void r.resetEverything();s.setAudio(!0),r.setAudio(!1)}l===o.playlistLoader||(s.track&&s.track(a),s.resetEverything()),cu(o.playlistLoader,n)}}),a[e].getActiveGroup=([t,r]=[e,n["mediaTypes"]],()=>{var e=r[t].activeTrack();return e?r[t].activeGroup(e):null})});var o=a.AUDIO.activeGroup();o&&(o=(o.filter(e=>e.default)[0]||o[0]).id,a.AUDIO.tracks[o].enabled=!0,a.AUDIO.onGroupChanged(),a.AUDIO.onTrackChanged(),(a.AUDIO.getActiveGroup().playlistLoader?(r.setAudio(!1),s):r).setAudio(!0)),e.on("mediachange",()=>{["AUDIO","SUBTITLES"].forEach(e=>a[e].onGroupChanged())}),e.on("mediachanging",()=>{["AUDIO","SUBTITLES"].forEach(e=>a[e].onGroupChanging())});const l=()=>{a.AUDIO.onTrackChanged(),t.trigger({type:"usage",name:"vhs-audio-change"})};t.audioTracks().addEventListener("change",l),t.remoteTextTracks().addEventListener("change",a.SUBTITLES.onTrackChanged),i.on("dispose",()=>{t.audioTracks().removeEventListener("change",l),t.remoteTextTracks().removeEventListener("change",a.SUBTITLES.onTrackChanged)}),t.clearTracks("audio");for(const d in a.AUDIO.tracks)t.audioTracks().addTrack(a.AUDIO.tracks[d])};let vu;const bu=["mediaRequests","mediaRequestsAborted","mediaRequestsTimedout","mediaRequestsErrored","mediaTransferDuration","mediaBytesTransferred","mediaAppends"];class Tu extends T.EventTarget{constructor(e){super();const{src:t,withCredentials:i,tech:r,bandwidth:s,externVhs:n,useCueTags:a,playlistExclusionDuration:o,enableLowInitialPlaylist:l,sourceType:d,cacheEncryptionKeys:h,bufferBasedABR:u,leastPixelDiffSelector:c,captionServices:p}=e;if(!t)throw new Error("A non-empty playlist URL or JSON manifest string is required");let m=e["maxPlaylistRetries"];null!==m&&"undefined"!=typeof m||(m=1/0),vu=n,this.bufferBasedABR=Boolean(u),this.leastPixelDiffSelector=Boolean(c),this.withCredentials=i,this.tech_=r,this.vhs_=r.vhs,this.sourceType_=d,this.useCueTags_=a,this.playlistExclusionDuration=o,this.maxPlaylistRetries=m,this.enableLowInitialPlaylist=l,this.useCueTags_&&(this.cueTagsTrack_=this.tech_.addTextTrack("metadata","ad-cues"),this.cueTagsTrack_.inBandMetadataTrackDispatchType=""),this.requestOptions_={withCredentials:i,maxPlaylistRetries:m,timeout:null},this.on("error",this.pauseLoading),this.mediaTypes_=(()=>{const t={};return["AUDIO","SUBTITLES","CLOSED-CAPTIONS"].forEach(e=>{t[e]={groups:{},tracks:{},activePlaylistLoader:null,activeGroup:Gh,activeTrack:Gh,getActiveGroup:Gh,onGroupChanged:Gh,onTrackChanged:Gh,lastTrack_:null,logger_:Bl(`MediaGroups[${e}]`)}}),t})(),this.mediaSource=new window.MediaSource,this.handleDurationChange_=this.handleDurationChange_.bind(this),this.handleSourceOpen_=this.handleSourceOpen_.bind(this),this.handleSourceEnded_=this.handleSourceEnded_.bind(this),this.mediaSource.addEventListener("durationchange",this.handleDurationChange_),this.mediaSource.addEventListener("sourceopen",this.handleSourceOpen_),this.mediaSource.addEventListener("sourceended",this.handleSourceEnded_),this.seekable_=Fl(),this.hasPlayed_=!1,this.syncController_=new lu(e),this.segmentMetadataTrack_=r.addRemoteTextTrack({kind:"metadata",label:"segment-metadata"},!1).track,this.decrypter_=new hu,this.sourceUpdater_=new iu(this.mediaSource),this.inbandTextTracks_={},this.timelineChangeController_=new du;var g={vhs:this.vhs_,parse708captions:e.parse708captions,useDtsForTimestampOffset:e.useDtsForTimestampOffset,captionServices:p,mediaSource:this.mediaSource,currentTime:this.tech_.currentTime.bind(this.tech_),seekable:()=>this.seekable(),seeking:()=>this.tech_.seeking(),duration:()=>this.duration(),hasPlayed:()=>this.hasPlayed_,goalBufferLength:()=>this.goalBufferLength(),bandwidth:s,syncController:this.syncController_,decrypter:this.decrypter_,sourceType:this.sourceType_,inbandTextTracks:this.inbandTextTracks_,cacheEncryptionKeys:h,sourceUpdater:this.sourceUpdater_,timelineChangeController:this.timelineChangeController_,exactManifestTimings:e.exactManifestTimings},g=(this.mainPlaylistLoader_=new("dash"===this.sourceType_?Kd:Cd)(t,this.vhs_,this.requestOptions_),this.setupMainPlaylistLoaderListeners_(),this.mainSegmentLoader_=new Wh(O(g,{segmentMetadataTrack:this.segmentMetadataTrack_,loaderType:"main"}),e),this.audioSegmentLoader_=new Wh(O(g,{loaderType:"audio"}),e),this.subtitleSegmentLoader_=new au(O(g,{loaderType:"vtt",featuresNativeTextTracks:this.tech_.featuresNativeTextTracks,loadVttJs:()=>new Promise((e,t)=>{function i(){r.off("vttjserror",s),e()}function s(){r.off("vttjsloaded",i),t()}r.one("vttjsloaded",i),r.one("vttjserror",s),r.addWebVttScript_()})}),e),this.setupSegmentLoaderListeners_(),this.bufferBasedABR&&(this.mainPlaylistLoader_.one("loadedplaylist",()=>this.startABRTimer_()),this.tech_.on("pause",()=>this.stopABRTimer_()),this.tech_.on("play",()=>this.startABRTimer_())),bu.forEach(e=>{this[e+"_"]=function(e){return this.audioSegmentLoader_[e]+this.mainSegmentLoader_[e]}.bind(this,e)}),this.logger_=Bl("pc"),this.triggeredFmp4Usage=!1,"none"===this.tech_.preload()?(this.loadOnPlay_=()=>{this.loadOnPlay_=null,this.mainPlaylistLoader_.load()},this.tech_.one("play",this.loadOnPlay_)):this.mainPlaylistLoader_.load(),this.timeToLoadedData__=-1,this.mainAppendsToLoadedData__=-1,this.audioAppendsToLoadedData__=-1,"none"===this.tech_.preload()?"play":"loadstart");this.tech_.one(g,()=>{const e=Date.now();this.tech_.one("loadeddata",()=>{this.timeToLoadedData__=Date.now()-e,this.mainAppendsToLoadedData__=this.mainSegmentLoader_.mediaAppends,this.audioAppendsToLoadedData__=this.audioSegmentLoader_.mediaAppends})})}mainAppendsToLoadedData_(){return this.mainAppendsToLoadedData__}audioAppendsToLoadedData_(){return this.audioAppendsToLoadedData__}appendsToLoadedData_(){var e=this.mainAppendsToLoadedData_(),t=this.audioAppendsToLoadedData_();return-1===e||-1===t?-1:e+t}timeToLoadedData_(){return this.timeToLoadedData__}checkABR_(e="abr"){var t=this.selectPlaylist();t&&this.shouldSwitchToMedia_(t)&&this.switchMedia_(t,e)}switchMedia_(e,t,i){var s=this.media(),s=s&&(s.id||s.uri),r=e.id||e.uri;s&&s!==r&&(this.logger_(`switch media ${s} -> ${r} from `+t),this.tech_.trigger({type:"usage",name:"vhs-rendition-change-"+t})),this.mainPlaylistLoader_.media(e,i)}startABRTimer_(){this.stopABRTimer_(),this.abrTimer_=window.setInterval(()=>this.checkABR_(),250)}stopABRTimer_(){this.tech_.scrubbing&&this.tech_.scrubbing()||(window.clearInterval(this.abrTimer_),this.abrTimer_=null)}getAudioTrackPlaylists_(){var t=this.main(),e=t&&t.playlists||[];if(!t||!t.mediaGroups||!t.mediaGroups.AUDIO)return e;var i=t.mediaGroups.AUDIO,s=Object.keys(i);let r;if(Object.keys(this.mediaTypes_.AUDIO.groups).length)r=this.mediaTypes_.AUDIO.activeTrack();else{var n=i.main||s.length&&i[s[0]];for(const d in n)if(n[d].default){r={label:d};break}}if(!r)return e;var a=[];for(const h in i)if(i[h][r.label]){var o=i[h][r.label];if(o.playlists&&o.playlists.length)a.push.apply(a,o.playlists);else if(o.uri)a.push(o);else if(t.playlists.length)for(let e=0;e{var e=this.mainPlaylistLoader_.media(),t=1.5*e.targetDuration*1e3;ud(this.mainPlaylistLoader_.main,this.mainPlaylistLoader_.media())?this.requestOptions_.timeout=0:this.requestOptions_.timeout=t,e.endList&&"none"!==this.tech_.preload()&&(this.mainSegmentLoader_.playlist(e,this.requestOptions_),this.mainSegmentLoader_.load()),_u({sourceType:this.sourceType_,segmentLoaders:{AUDIO:this.audioSegmentLoader_,SUBTITLES:this.subtitleSegmentLoader_,main:this.mainSegmentLoader_},tech:this.tech_,requestOptions:this.requestOptions_,mainPlaylistLoader:this.mainPlaylistLoader_,vhs:this.vhs_,main:this.main(),mediaTypes:this.mediaTypes_,excludePlaylist:this.excludePlaylist.bind(this)}),this.triggerPresenceUsage_(this.main(),e),this.setupFirstPlay(),!this.mediaTypes_.AUDIO.activePlaylistLoader||this.mediaTypes_.AUDIO.activePlaylistLoader.media()?this.trigger("selectedinitialmedia"):this.mediaTypes_.AUDIO.activePlaylistLoader.one("loadedmetadata",()=>{this.trigger("selectedinitialmedia")})}),this.mainPlaylistLoader_.on("loadedplaylist",()=>{this.loadOnPlay_&&this.tech_.off("play",this.loadOnPlay_);let t=this.mainPlaylistLoader_.media();if(!t){this.excludeUnsupportedVariants_();let e;if(!(e=(e=this.enableLowInitialPlaylist?this.selectInitialPlaylist():e)||this.selectPlaylist())||!this.shouldSwitchToMedia_(e))return;if(this.initialMedia_=e,this.switchMedia_(this.initialMedia_,"initial"),!("vhs-json"===this.sourceType_&&this.initialMedia_.segments))return;t=this.initialMedia_}this.handleUpdatedMediaPlaylist(t)}),this.mainPlaylistLoader_.on("error",()=>{var e=this.mainPlaylistLoader_.error;this.excludePlaylist({playlistToExclude:e.playlist,error:e})}),this.mainPlaylistLoader_.on("mediachanging",()=>{this.mainSegmentLoader_.abort(),this.mainSegmentLoader_.pause()}),this.mainPlaylistLoader_.on("mediachange",()=>{var e=this.mainPlaylistLoader_.media(),t=1.5*e.targetDuration*1e3;ud(this.mainPlaylistLoader_.main,this.mainPlaylistLoader_.media())?this.requestOptions_.timeout=0:this.requestOptions_.timeout=t,this.mainPlaylistLoader_.load(),this.mainSegmentLoader_.playlist(e,this.requestOptions_),this.mainSegmentLoader_.load(),this.tech_.trigger({type:"mediachange",bubbles:!0})}),this.mainPlaylistLoader_.on("playlistunchanged",()=>{var e=this.mainPlaylistLoader_.media();"playlist-unchanged"!==e.lastExcludeReason_&&this.stuckAtPlaylistEnd_(e)&&(this.excludePlaylist({error:{message:"Playlist no longer updating.",reason:"playlist-unchanged"}}),this.tech_.trigger("playliststuck"))}),this.mainPlaylistLoader_.on("renditiondisabled",()=>{this.tech_.trigger({type:"usage",name:"vhs-rendition-disabled"})}),this.mainPlaylistLoader_.on("renditionenabled",()=>{this.tech_.trigger({type:"usage",name:"vhs-rendition-enabled"})})}handleUpdatedMediaPlaylist(e){this.useCueTags_&&this.updateAdCues_(e),this.mainSegmentLoader_.playlist(e,this.requestOptions_),this.updateDuration(!e.endList),this.tech_.paused()||(this.mainSegmentLoader_.load(),this.audioSegmentLoader_&&this.audioSegmentLoader_.load())}triggerPresenceUsage_(e,t){var i=e.mediaGroups||{};let s=!0;e=Object.keys(i.AUDIO);for(const r in i.AUDIO)for(const n in i.AUDIO[r])i.AUDIO[r][n].uri||(s=!1);s&&this.tech_.trigger({type:"usage",name:"vhs-demuxed"}),Object.keys(i.SUBTITLES).length&&this.tech_.trigger({type:"usage",name:"vhs-webvtt"}),vu.Playlist.isAes(t)&&this.tech_.trigger({type:"usage",name:"vhs-aes"}),e.length&&1 `+s.id;if(!i)return l(d+" as current playlist is not set"),!0;if(s.id!==i.id){var h=Boolean(jl(e,t).length);if(!i.endList)return h||"number"!=typeof i.partTargetDuration?(l(d+" as current playlist is live"),!0):(l(`not ${d} as current playlist is live llhls, but currentTime isn't in buffered.`),!1);h=Vl(e,t),e=o?D.EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE:D.MAX_BUFFER_LOW_WATER_LINE;if(a= bufferLowWaterLine (${h} >= ${r})`;return o&&(e+=` and next bandwidth > current bandwidth (${t} > ${a})`),l(e),!0}l(`not ${d} as no switching criteria met`)}}else T.log.warn("We received no playlist to switch to. Please check your stream.");return!1}setupSegmentLoaderListeners_(){this.mainSegmentLoader_.on("bandwidthupdate",()=>{this.checkABR_("bandwidthupdate"),this.tech_.trigger("bandwidthupdate")}),this.mainSegmentLoader_.on("timeout",()=>{this.bufferBasedABR&&this.mainSegmentLoader_.load()}),this.bufferBasedABR||this.mainSegmentLoader_.on("progress",()=>{this.trigger("progress")}),this.mainSegmentLoader_.on("error",()=>{var e=this.mainSegmentLoader_.error();this.excludePlaylist({playlistToExclude:e.playlist,error:e})}),this.mainSegmentLoader_.on("appenderror",()=>{this.error=this.mainSegmentLoader_.error_,this.trigger("error")}),this.mainSegmentLoader_.on("syncinfoupdate",()=>{this.onSyncInfoUpdate_()}),this.mainSegmentLoader_.on("timestampoffset",()=>{this.tech_.trigger({type:"usage",name:"vhs-timestamp-offset"})}),this.audioSegmentLoader_.on("syncinfoupdate",()=>{this.onSyncInfoUpdate_()}),this.audioSegmentLoader_.on("appenderror",()=>{this.error=this.audioSegmentLoader_.error_,this.trigger("error")}),this.mainSegmentLoader_.on("ended",()=>{this.logger_("main segment loader ended"),this.onEndOfStream()}),this.mainSegmentLoader_.on("earlyabort",e=>{this.bufferBasedABR||(this.delegateLoaders_("all",["abort"]),this.excludePlaylist({error:{message:"Aborted early because there isn't enough bandwidth to complete the request without rebuffering."},playlistExclusionDuration:120}))});var e=()=>{if(!this.sourceUpdater_.hasCreatedSourceBuffers())return this.tryToCreateSourceBuffers_();var e=this.getCodecsOrExclude_();e&&this.sourceUpdater_.addOrChangeSourceBuffers(e)};this.mainSegmentLoader_.on("trackinfo",e),this.audioSegmentLoader_.on("trackinfo",e),this.mainSegmentLoader_.on("fmp4",()=>{this.triggeredFmp4Usage||(this.tech_.trigger({type:"usage",name:"vhs-fmp4"}),this.triggeredFmp4Usage=!0)}),this.audioSegmentLoader_.on("fmp4",()=>{this.triggeredFmp4Usage||(this.tech_.trigger({type:"usage",name:"vhs-fmp4"}),this.triggeredFmp4Usage=!0)}),this.audioSegmentLoader_.on("ended",()=>{this.logger_("audioSegmentLoader ended"),this.onEndOfStream()})}mediaSecondsLoaded_(){return Math.max(this.audioSegmentLoader_.mediaSecondsLoaded+this.mainSegmentLoader_.mediaSecondsLoaded)}load(){this.mainSegmentLoader_.load(),this.mediaTypes_.AUDIO.activePlaylistLoader&&this.audioSegmentLoader_.load(),this.mediaTypes_.SUBTITLES.activePlaylistLoader&&this.subtitleSegmentLoader_.load()}fastQualityChange_(e=this.selectPlaylist()){e===this.mainPlaylistLoader_.media()?this.logger_("skipping fastQualityChange because new media is same as old"):(this.switchMedia_(e,"fast-quality"),this.mainSegmentLoader_.resetEverything(()=>{T.browser.IE_VERSION||T.browser.IS_EDGE?this.tech_.setCurrentTime(this.tech_.currentTime()+.04):this.tech_.setCurrentTime(this.tech_.currentTime())}))}play(){var e;if(!this.setupFirstPlay())return this.tech_.ended()&&this.tech_.setCurrentTime(0),this.hasPlayed_&&this.load(),e=this.tech_.seekable(),this.tech_.duration()===1/0&&this.tech_.currentTime(){this.trigger("firstplay"),this.tech_.setCurrentTime(t.end(0)),this.hasPlayed_=!0}),!1;this.trigger("firstplay"),this.tech_.setCurrentTime(t.end(0))}return this.hasPlayed_=!0,this.load(),!0}handleSourceOpen_(){var e;this.tryToCreateSourceBuffers_(),this.tech_.autoplay()&&"undefined"!=typeof(e=this.tech_.play())&&"function"==typeof e.then&&e.then(null,e=>{}),this.trigger("sourceopen")}handleSourceEnded_(){var e,t;this.inbandTextTracks_.metadataTrack_&&(e=this.inbandTextTracks_.metadataTrack_.cues)&&e.length&&(t=this.duration(),e[e.length-1].endTime=isNaN(t)||Math.abs(t)===1/0?Number.MAX_VALUE:t)}handleDurationChange_(){this.tech_.trigger("durationchange")}onEndOfStream(){let e=this.mainSegmentLoader_.ended_;var t;this.mediaTypes_.AUDIO.activePlaylistLoader&&(t=this.mainSegmentLoader_.getCurrentMediaInfo_(),e=(t&&!t.hasVideo||e)&&this.audioSegmentLoader_.ended_),e&&(this.stopABRTimer_(),this.sourceUpdater_.endOfStream())}stuckAtPlaylistEnd_(e){var t,i;return!!this.seekable().length&&null!==(t=this.syncController_.getExpiredTime(e,this.duration()))&&(e=vu.Playlist.playlistEnd(e,t),t=this.tech_.currentTime(),(i=this.tech_.buffered()).length?(i=i.end(i.length-1))-t<=zl&&e-i<=zl:e-t<=zl)}excludePlaylist({playlistToExclude:s=this.mainPlaylistLoader_.media(),error:t={},playlistExclusionDuration:i}){if(s=s||this.mainPlaylistLoader_.media(),i=i||t.playlistExclusionDuration||this.playlistExclusionDuration,s){s.playlistErrors_++;var r=this.mainPlaylistLoader_.main.playlists,n=r.filter(ld),n=1===n.length&&n[0]===s;if(1===r.length&&i!==1/0)return T.log.warn(`Problem encountered with playlist ${s.id}. `+"Trying again since it is the only playlist."),this.tech_.trigger("retryplaylist"),this.mainPlaylistLoader_.load(n);if(n){let i=!1;r.forEach(e=>{var t;e!==s&&"undefined"!=typeof(t=e.excludeUntil)&&t!==1/0&&(i=!0,delete e.excludeUntil)}),i&&(T.log.warn("Removing other playlists from the exclusion list because the last rendition is about to be excluded."),this.tech_.trigger("retryplaylist"))}let e;e=s.playlistErrors_>this.maxPlaylistRetries?1/0:Date.now()+1e3*i,s.excludeUntil=e,t.reason&&(s.lastExcludeReason_=t.reason),this.tech_.trigger("excludeplaylist"),this.tech_.trigger({type:"usage",name:"vhs-rendition-excluded"});var a,r=this.selectPlaylist();if(r)return i=t.internal?this.logger_:T.log.warn,a=t.message?" "+t.message:"",i(`${t.internal?"Internal problem":"Problem"} encountered with playlist ${s.id}.`+a+` Switching to playlist ${r.id}.`),r.attributes.AUDIO!==s.attributes.AUDIO&&this.delegateLoaders_("audio",["abort","pause"]),r.attributes.SUBTITLES!==s.attributes.SUBTITLES&&this.delegateLoaders_("subtitle",["abort","pause"]),this.delegateLoaders_("main",["abort","pause"]),i=r.targetDuration/2*1e3||5e3,a="number"==typeof r.lastRequest&&Date.now()-r.lastRequest<=i,this.switchMedia_(r,"exclude",n||a);this.error="Playback cannot continue. No available working or supported playlists.",this.trigger("error")}else this.error=t,"open"!==this.mediaSource.readyState?this.trigger("error"):this.sourceUpdater_.endOfStream("network")}pauseLoading(){this.delegateLoaders_("all",["abort","pause"]),this.stopABRTimer_()}delegateLoaders_(i,e){const s=[];var t="all"===i,r=(!t&&"main"!==i||s.push(this.mainPlaylistLoader_),[]);!t&&"audio"!==i||r.push("AUDIO"),!t&&"subtitle"!==i||(r.push("CLOSED-CAPTIONS"),r.push("SUBTITLES")),r.forEach(e=>{e=this.mediaTypes_[e]&&this.mediaTypes_[e].activePlaylistLoader;e&&s.push(e)}),["main","audio","subtitle"].forEach(e=>{var t=this[e+"SegmentLoader_"];!t||i!==e&&"all"!==i||s.push(t)}),s.forEach(t=>e.forEach(e=>{"function"==typeof t[e]&&t[e]()}))}setCurrentTime(e){var t=jl(this.tech_.buffered(),e);return this.mainPlaylistLoader_&&this.mainPlaylistLoader_.media()&&this.mainPlaylistLoader_.media().segments?t&&t.length?e:(this.mainSegmentLoader_.resetEverything(),this.mainSegmentLoader_.abort(),this.mediaTypes_.AUDIO.activePlaylistLoader&&(this.audioSegmentLoader_.resetEverything(),this.audioSegmentLoader_.abort()),this.mediaTypes_.SUBTITLES.activePlaylistLoader&&(this.subtitleSegmentLoader_.resetEverything(),this.subtitleSegmentLoader_.abort()),void this.load()):0}duration(){var e;return this.mainPlaylistLoader_&&(e=this.mainPlaylistLoader_.media())?e.endList?this.mediaSource?this.mediaSource.duration:vu.Playlist.duration(e):1/0:0}seekable(){return this.seekable_}onSyncInfoUpdate_(){let i;if(this.mainPlaylistLoader_){var s=this.mainPlaylistLoader_.media();if(s){var r=this.syncController_.getExpiredTime(s,this.duration());if(null!==r){var n=this.mainPlaylistLoader_.main,a=vu.Playlist.seekable(s,r,vu.Playlist.liveEdgeDelay(n,s));if(0!==a.length){if(this.mediaTypes_.AUDIO.activePlaylistLoader){if(s=this.mediaTypes_.AUDIO.activePlaylistLoader.media(),null===(r=this.syncController_.getExpiredTime(s,this.duration())))return;if(0===(i=vu.Playlist.seekable(s,r,vu.Playlist.liveEdgeDelay(n,s))).length)return}let e,t;this.seekable_&&this.seekable_.length&&(e=this.seekable_.end(0),t=this.seekable_.start(0)),!i||i.start(0)>a.end(0)||a.start(0)>i.end(0)?this.seekable_=a:this.seekable_=Fl([[(i.start(0)>a.start(0)?i:a).start(0),(i.end(0){var t=this.mediaTypes_[e].groups;for(const i in t)t[i].forEach(e=>{e.playlistLoader&&e.playlistLoader.dispose()})}),this.audioSegmentLoader_.dispose(),this.subtitleSegmentLoader_.dispose(),this.sourceUpdater_.dispose(),this.timelineChangeController_.dispose(),this.stopABRTimer_(),this.updateDuration_&&this.mediaSource.removeEventListener("sourceopen",this.updateDuration_),this.mediaSource.removeEventListener("durationchange",this.handleDurationChange_),this.mediaSource.removeEventListener("sourceopen",this.handleSourceOpen_),this.mediaSource.removeEventListener("sourceended",this.handleSourceEnded_),this.off()}main(){return this.mainPlaylistLoader_.main}media(){return this.mainPlaylistLoader_.media()||this.initialMedia_}areMediaTypesKnown_(){var e=!!this.mediaTypes_.AUDIO.activePlaylistLoader,t=!!this.mainSegmentLoader_.getCurrentMediaInfo_(),e=!e||!!this.audioSegmentLoader_.getCurrentMediaInfo_();return t&&e}getCodecsOrExclude_(){const r={main:this.mainSegmentLoader_.getCurrentMediaInfo_()||{},audio:this.audioSegmentLoader_.getCurrentMediaInfo_()||{}},t=this.mainSegmentLoader_.getPendingSegmentPlaylist()||this.media();r.video=r.main;var e=mh(this.main(),t);const n={};var i=!!this.mediaTypes_.AUDIO.activePlaylistLoader;if(r.main.hasVideo&&(n.video=e.video||r.main.videoCodec||"avc1.4d400d"),r.main.isMuxed&&(n.video+=","+(e.audio||r.main.audioCodec||Fn)),(r.main.hasAudio&&!r.main.isMuxed||r.audio.hasAudio||i)&&(n.audio=e.audio||r.main.audioCodec||r.audio.audioCodec||Fn,r.audio.isFmp4=(r.main.hasAudio&&!r.main.isMuxed?r.main:r.audio).isFmp4),n.audio||n.video){const a={};let s;if(["video","audio"].forEach(function(e){var t,i;n.hasOwnProperty(e)&&(t=r[e].isFmp4,i=n[e],!(t?In:xn)(i))&&(t=r[e].isFmp4?"browser":"muxer",a[t]=a[t]||[],a[t].push(n[e]),"audio"===e&&(s=t))}),i&&s&&t.attributes.AUDIO){const o=t.attributes.AUDIO;this.main().playlists.forEach(e=>{(e.attributes&&e.attributes.AUDIO)===o&&e!==t&&(e.excludeUntil=1/0)}),this.logger_(`excluding audio group ${o} as ${s} does not support codec(s): "${n.audio}"`)}if(!Object.keys(a).length){if(this.sourceUpdater_.hasCreatedSourceBuffers()&&!this.sourceUpdater_.canChangeType()){const l=[];if(["video","audio"].forEach(e=>{var t=(Un(this.sourceUpdater_.codecs[e]||"")[0]||{}).type,i=(Un(n[e]||"")[0]||{}).type;t&&i&&t.toLowerCase()!==i.toLowerCase()&&l.push(`"${this.sourceUpdater_.codecs[e]}" -> "${n[e]}"`)}),l.length)return void this.excludePlaylist({playlistToExclude:t,error:{message:`Codec switching not supported: ${l.join(", ")}.`,internal:!0},playlistExclusionDuration:1/0})}return n}e=Object.keys(a).reduce((e,t)=>(e&&(e+=", "),e+=`${t} does not support codec(s): "${a[t].join(",")}"`),"")+".",this.excludePlaylist({playlistToExclude:t,error:{internal:!0,message:e},playlistExclusionDuration:1/0})}else this.excludePlaylist({playlistToExclude:t,error:{message:"Could not determine codecs for playlist."},playlistExclusionDuration:1/0})}tryToCreateSourceBuffers_(){var e;"open"!==this.mediaSource.readyState||this.sourceUpdater_.hasCreatedSourceBuffers()||this.areMediaTypesKnown_()&&(e=this.getCodecsOrExclude_())&&(this.sourceUpdater_.createSourceBuffers(e),e=[e.video,e.audio].filter(Boolean).join(","),this.excludeIncompatibleVariants_(e))}excludeUnsupportedVariants_(){const s=this.main().playlists,r=[];Object.keys(s).forEach(e=>{var t,i,e=s[e];-1===r.indexOf(e.id)&&(r.push(e.id),i=[],!(t=mh(this.main,e)).audio||xn(t.audio)||In(t.audio)||i.push("audio codec "+t.audio),!t.video||xn(t.video)||In(t.video)||i.push("video codec "+t.video),t.text&&"stpp.ttml.im1t"===t.text&&i.push("text codec "+t.text),i.length)&&(e.excludeUntil=1/0,this.logger_(`excluding ${e.id} for unsupported: `+i.join(", ")))})}excludeIncompatibleVariants_(e){const r=[],n=this.main().playlists;e=Lh(Un(e));const a=ph(e),o=e.video&&Un(e.video)[0]||null,l=e.audio&&Un(e.audio)[0]||null;Object.keys(n).forEach(e=>{var t,i,s,e=n[e];-1===r.indexOf(e.id)&&e.excludeUntil!==1/0&&(r.push(e.id),t=[],s=mh(this.mainPlaylistLoader_.main,e),i=ph(s),s.audio||s.video)&&(i!==a&&t.push(`codec count "${i}" !== "${a}"`),this.sourceUpdater_.canChangeType()||(i=s.video&&Un(s.video)[0]||null,s=s.audio&&Un(s.audio)[0]||null,i&&o&&i.type.toLowerCase()!==o.type.toLowerCase()&&t.push(`video codec "${i.type}" !== "${o.type}"`),s&&l&&s.type.toLowerCase()!==l.type.toLowerCase()&&t.push(`audio codec "${s.type}" !== "${l.type}"`)),t.length)&&(e.excludeUntil=1/0,this.logger_(`excluding ${e.id}: `+t.join(" && ")))})}updateAdCues_(e){let t=0;var s=this.seekable(),[r,n,s=0]=(s.length&&(t=s.start(0)),[e,this.cueTagsTrack_,t]);if(r.segments){let t=s,i;for(let e=0;e=s.adStartTime&&t<=s.adEndTime)return s}return null}(n,t+l.duration/2)){if("cueIn"in l){i.endTime=t,i.adEndTime=t,t+=l.duration,i=null;continue}if(t{var t=r.main.playlists[n],i=od(t),s=ld(t);return"undefined"==typeof e?s:(e?delete t.disabled:t.disabled=!0,e===s||i||(a(),e?r.trigger("renditionenabled"):r.trigger("renditiondisabled")),e)})}}const wu=["seeking","seeked","pause","playing","error"];class Eu{constructor(e){this.playlistController_=e.playlistController,this.tech_=e.tech,this.seekable=e.seekable,this.allowSeeksWithinUnsafeLiveWindow=e.allowSeeksWithinUnsafeLiveWindow,this.liveRangeSafeTimeDelta=e.liveRangeSafeTimeDelta,this.media=e.media,this.consecutiveUpdates=0,this.lastRecordedTime=null,this.checkCurrentTimeTimeout_=null,this.logger_=Bl("PlaybackWatcher"),this.logger_("initialize");const t=()=>this.monitorCurrentTime_(),i=()=>this.monitorCurrentTime_(),s=()=>this.techWaiting_(),r=()=>this.resetTimeUpdate_(),n=this.playlistController_,a=["main","subtitle","audio"],o={},l=(a.forEach(e=>{o[e]={reset:()=>this.resetSegmentDownloads_(e),updateend:()=>this.checkSegmentDownloads_(e)},n[e+"SegmentLoader_"].on("appendsdone",o[e].updateend),n[e+"SegmentLoader_"].on("playlistupdate",o[e].reset),this.tech_.on(["seeked","seeking"],o[e].reset)}),t=>{["main","audio"].forEach(e=>{n[e+"SegmentLoader_"][t]("appended",this.seekingAppendCheck_)})});this.seekingAppendCheck_=()=>{this.fixesBadSeeks_()&&(this.consecutiveUpdates=0,this.lastRecordedTime=this.tech_.currentTime(),l("off"))},this.clearSeekingAppendCheck_=()=>l("off"),this.watchForBadSeeking_=()=>{this.clearSeekingAppendCheck_(),l("on")},this.tech_.on("seeked",this.clearSeekingAppendCheck_),this.tech_.on("seeking",this.watchForBadSeeking_),this.tech_.on("waiting",s),this.tech_.on(wu,r),this.tech_.on("canplay",i),this.tech_.one("play",t),this.dispose=()=>{this.clearSeekingAppendCheck_(),this.logger_("dispose"),this.tech_.off("waiting",s),this.tech_.off(wu,r),this.tech_.off("canplay",i),this.tech_.off("play",t),this.tech_.off("seeking",this.watchForBadSeeking_),this.tech_.off("seeked",this.clearSeekingAppendCheck_),a.forEach(e=>{n[e+"SegmentLoader_"].off("appendsdone",o[e].updateend),n[e+"SegmentLoader_"].off("playlistupdate",o[e].reset),this.tech_.off(["seeked","seeking"],o[e].reset)}),this.checkCurrentTimeTimeout_&&window.clearTimeout(this.checkCurrentTimeTimeout_),this.resetTimeUpdate_()}}monitorCurrentTime_(){this.checkCurrentTime_(),this.checkCurrentTimeTimeout_&&window.clearTimeout(this.checkCurrentTimeTimeout_),this.checkCurrentTimeTimeout_=window.setTimeout(this.monitorCurrentTime_.bind(this),250)}resetSegmentDownloads_(e){var t=this.playlistController_[e+"SegmentLoader_"];0=t.end(t.length-1))?this.techWaiting_():void(5<=this.consecutiveUpdates&&e===this.lastRecordedTime?(this.consecutiveUpdates++,this.waiting_()):e===this.lastRecordedTime?this.consecutiveUpdates++:(this.consecutiveUpdates=0,this.lastRecordedTime=e))}resetTimeUpdate_(){this.consecutiveUpdates=0}fixesBadSeeks_(){if(!this.tech_.seeking())return!1;var e=this.seekable(),t=this.tech_.currentTime();let i;if(this.afterSeekableWindow_(e,t,this.media(),this.allowSeeksWithinUnsafeLiveWindow)&&(s=e.end(e.length-1),i=s),this.beforeSeekableWindow_(e,t)&&(s=e.start(0),i=s+(s===e.end(0)?0:zl)),"undefined"!=typeof i)this.logger_(`Trying to seek outside of seekable at time ${t} with `+`seekable range ${Kl(e)}. Seeking to `+i+".");else{var s=this.playlistController_.sourceUpdater_,e=this.tech_.buffered(),r=s.audioBuffer?s.audioBuffered():null,s=s.videoBuffer?s.videoBuffered():null,n=this.media(),a=n.partTargetDuration||2*(n.targetDuration-Gl),o=[r,s];for(let e=0;e ${t.end(0)}]. Attempting to resume `+"playback by seeking to the current time."),this.tech_.trigger({type:"usage",name:"vhs-unknown-waiting"})))}techWaiting_(){var e,t=this.seekable(),i=this.tech_.currentTime();return!!this.tech_.seeking()||(this.beforeSeekableWindow_(t,i)?(t=t.end(t.length-1),this.logger_(`Fell out of live window at time ${i}. Seeking to `+"live point (seekable end) "+t),this.resetTimeUpdate_(),this.tech_.setCurrentTime(t),this.tech_.trigger({type:"usage",name:"vhs-live-resync"}),!0):(t=this.tech_.vhs.playlistController_.sourceUpdater_,e=this.tech_.buffered(),this.videoUnderflow_({audioBuffered:t.audioBuffered(),videoBuffered:t.videoBuffered(),currentTime:i})?(this.resetTimeUpdate_(),this.tech_.setCurrentTime(i),this.tech_.trigger({type:"usage",name:"vhs-video-underflow"}),!0):0<(t=Hl(e,i)).length&&(this.logger_(`Stopped at ${i} and seeking to `+t.start(0)),this.resetTimeUpdate_(),this.skipTheGap_(i),!0)))}afterSeekableWindow_(e,t,i,s=!1){if(!e.length)return!1;let r=e.end(e.length-1)+zl;var n=!i.endList;return t>(r=n&&s?e.end(e.length-1)+3*i.targetDuration:r)}beforeSeekableWindow_(e,t){return!!(e.length&&0{t.trigger({type:"usage",name:"vhs-error-reload-initialized"})}),function(){s&&t.currentTime(s)});t.on("error",n),t.on("dispose",a),t.reloadSourceOnError=function(e){a(),Cu(t,e)}};function Iu(t,e){var i=e.media();let s=-1;for(let e=0;efh(e,t)),e.filter(e=>!!mh(this.playlists.main,e).video));return e[0]||null},lastBandwidthSelector:Rh,movingAverageBandwidthSelector:function(t){let i=-1,s=-1;if(t<0||1{Object.defineProperty(N,t,{get(){return T.log.warn(`using Vhs.${t} is UNSAFE be sure you know what you are doing`),D[t]},set(e){T.log.warn(`using Vhs.${t} is UNSAFE be sure you know what you are doing`),"number"!=typeof e||e<0?T.log.warn(`value of Vhs.${t} must be greater than or equal to 0`):D[t]=e}})}),"videojs-vhs"),Au=(N.canPlaySource=function(){return T.log.warn("VHS is no longer a tech. Please remove it from your player's techOrder.")},({player:s,sourceKeySystems:e,audioMedia:t,mainPlaylists:i})=>{if(!s.eme.initializeMediaKeys)return Promise.resolve();var r,t=t?i.concat([t]):i,t=(i=t,r=Object.keys(e),i.reduce((e,s)=>{var t;return s.contentProtection&&(t=r.reduce((e,t)=>{var i=s.contentProtection[t];return i&&i.pssh&&(e[t]={pssh:i.pssh}),e},{}),Object.keys(t).length)&&e.push(t),e},[]));const n=[],a=[];return t.forEach(e=>{a.push(new Promise((e,t)=>{s.tech_.one("keysessioncreated",e)})),n.push(new Promise((t,i)=>{s.eme.initializeMediaKeys({keySystems:e},e=>{e?i(e):t()})}))}),Promise.race([Promise.all(n),Promise.race(a)])}),Pu=({player:e,sourceKeySystems:t,media:i,audioMedia:s})=>{t=((e,t,i)=>{if(!e)return e;let s={};t&&t.attributes&&t.attributes.CODECS&&(s=Lh(Un(t.attributes.CODECS))),i&&i.attributes&&i.attributes.CODECS&&(s.audio=i.attributes.CODECS);var r=Bn(s.video),n=Bn(s.audio),a={};for(const o in e)a[o]={},n&&(a[o].audioContentType=n),r&&(a[o].videoContentType=r),t.contentProtection&&t.contentProtection[o]&&t.contentProtection[o].pssh&&(a[o].pssh=t.contentProtection[o].pssh),"string"==typeof e[o]&&(a[o].url=e[o]);return O(e,a)})(t,i,s);return!(!t||(e.currentSource().keySystems=t)&&!e.eme&&(T.log.warn("DRM encrypted source cannot be decrypted without a DRM plugin"),1))},Lu=()=>{if(!window.localStorage)return null;var e=window.localStorage.getItem(xu);if(!e)return null;try{return JSON.parse(e)}catch(e){return null}};N.supportsNativeHls=function(){if(!document||!document.createElement)return!1;const t=document.createElement("video");return!!T.getTech("Html5").isSupported()&&["application/vnd.apple.mpegurl","audio/mpegurl","audio/x-mpegurl","application/x-mpegurl","video/x-mpegurl","video/mpegurl","application/mpegurl"].some(function(e){return/maybe|probably/i.test(t.canPlayType(e))})}(),N.supportsNativeDash=!!(document&&document.createElement&&T.getTech("Html5").isSupported())&&/maybe|probably/i.test(document.createElement("video").canPlayType("application/dash+xml")),N.supportsTypeNatively=e=>"hls"===e?N.supportsNativeHls:"dash"===e&&N.supportsNativeDash,N.isSupported=function(){return T.log.warn("VHS is no longer a tech. Please remove it from your player's techOrder.")};class Ou extends T.getComponent("Component"){constructor(e,t,i){if(super(t,i.vhs),"number"==typeof i.initialBandwidth&&(this.options_.bandwidth=i.initialBandwidth),this.logger_=Bl("VhsHandler"),t.options_&&t.options_.playerId&&(i=T.getPlayer(t.options_.playerId),this.player_=i),this.tech_=t,this.source_=e,this.stats={},this.ignoreNextSeekingEvent_=!1,this.setOptions_(),this.options_.overrideNative&&t.overrideNativeAudioTracks&&t.overrideNativeVideoTracks)t.overrideNativeAudioTracks(!0),t.overrideNativeVideoTracks(!0);else if(this.options_.overrideNative&&(t.featuresNativeVideoTracks||t.featuresNativeAudioTracks))throw new Error("Overriding native VHS requires emulated tracks. See https://git.io/vMpjB");this.on(document,["fullscreenchange","webkitfullscreenchange","mozfullscreenchange","MSFullscreenChange"],e=>{var t=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;t&&t.contains(this.tech_.el())?this.playlistController_.fastQualityChange_():this.playlistController_.checkABR_()}),this.on(this.tech_,"seeking",function(){this.ignoreNextSeekingEvent_?this.ignoreNextSeekingEvent_=!1:this.setCurrentTime(this.tech_.currentTime())}),this.on(this.tech_,"error",function(){this.tech_.error()&&this.playlistController_&&this.playlistController_.pauseLoading()}),this.on(this.tech_,"play",this.play)}setOptions_(){var e;this.options_.withCredentials=this.options_.withCredentials||!1,this.options_.limitRenditionByPlayerDimensions=!1!==this.options_.limitRenditionByPlayerDimensions,this.options_.useDevicePixelRatio=this.options_.useDevicePixelRatio||!1,this.options_.useBandwidthFromLocalStorage="undefined"!=typeof this.source_.useBandwidthFromLocalStorage?this.source_.useBandwidthFromLocalStorage:this.options_.useBandwidthFromLocalStorage||!1,this.options_.useNetworkInformationApi=this.options_.useNetworkInformationApi||!1,this.options_.useDtsForTimestampOffset=this.options_.useDtsForTimestampOffset||!1,this.options_.customTagParsers=this.options_.customTagParsers||[],this.options_.customTagMappers=this.options_.customTagMappers||[],this.options_.cacheEncryptionKeys=this.options_.cacheEncryptionKeys||!1,this.options_.llhls=!1!==this.options_.llhls,this.options_.bufferBasedABR=this.options_.bufferBasedABR||!1,"number"!=typeof this.options_.playlistExclusionDuration&&(this.options_.playlistExclusionDuration=300),"number"!=typeof this.options_.bandwidth&&this.options_.useBandwidthFromLocalStorage&&((e=Lu())&&e.bandwidth&&(this.options_.bandwidth=e.bandwidth,this.tech_.trigger({type:"usage",name:"vhs-bandwidth-from-local-storage"})),e)&&e.throughput&&(this.options_.throughput=e.throughput,this.tech_.trigger({type:"usage",name:"vhs-throughput-from-local-storage"})),"number"!=typeof this.options_.bandwidth&&(this.options_.bandwidth=D.INITIAL_BANDWIDTH),this.options_.enableLowInitialPlaylist=this.options_.enableLowInitialPlaylist&&this.options_.bandwidth===D.INITIAL_BANDWIDTH,["withCredentials","useDevicePixelRatio","limitRenditionByPlayerDimensions","bandwidth","customTagParsers","customTagMappers","cacheEncryptionKeys","playlistSelector","initialPlaylistSelector","bufferBasedABR","liveRangeSafeTimeDelta","llhls","useNetworkInformationApi","useDtsForTimestampOffset","exactManifestTimings","leastPixelDiffSelector"].forEach(e=>{"undefined"!=typeof this.source_[e]&&(this.options_[e]=this.source_[e])}),this.limitRenditionByPlayerDimensions=this.options_.limitRenditionByPlayerDimensions,this.useDevicePixelRatio=this.options_.useDevicePixelRatio}src(e,t){e&&(this.setOptions_(),this.options_.src=0===(e=this.source_.src).toLowerCase().indexOf("data:application/vnd.videojs.vhs+json,")?JSON.parse(e.substring(e.indexOf(",")+1)):e,this.options_.tech=this.tech_,this.options_.externVhs=N,this.options_.sourceType=An(t),this.options_.seekTo=e=>{this.tech_.setCurrentTime(e)},this.playlistController_=new Tu(this.options_),e=O({liveRangeSafeTimeDelta:zl},this.options_,{seekable:()=>this.seekable(),media:()=>this.playlistController_.media(),playlistController:this.playlistController_}),this.playbackWatcher_=new Eu(e),this.playlistController_.on("error",()=>{var e=T.players[this.tech_.options_.playerId];let t=this.playlistController_.error;"object"!=typeof t||t.code?"string"==typeof t&&(t={message:t,code:3}):t.code=3,e.error(t)}),t=this.options_.bufferBasedABR?N.movingAverageBandwidthSelector(.55):N.STANDARD_PLAYLIST_SELECTOR,this.playlistController_.selectPlaylist=(this.selectPlaylist||t).bind(this),this.playlistController_.selectInitialPlaylist=N.INITIAL_PLAYLIST_SELECTOR.bind(this),this.playlists=this.playlistController_.mainPlaylistLoader_,this.mediaSource=this.playlistController_.mediaSource,Object.defineProperties(this,{selectPlaylist:{get(){return this.playlistController_.selectPlaylist},set(e){this.playlistController_.selectPlaylist=e.bind(this)}},throughput:{get(){return this.playlistController_.mainSegmentLoader_.throughput.rate},set(e){this.playlistController_.mainSegmentLoader_.throughput.rate=e,this.playlistController_.mainSegmentLoader_.throughput.count=1}},bandwidth:{get(){let e=this.playlistController_.mainSegmentLoader_.bandwidth;var t=window.navigator.connection||window.navigator.mozConnection||window.navigator.webkitConnection;return this.options_.useNetworkInformationApi&&t&&(t=1e3*t.downlink*1e3,e=1e7<=t&&1e7<=e?Math.max(e,t):t),e},set(e){this.playlistController_.mainSegmentLoader_.bandwidth=e,this.playlistController_.mainSegmentLoader_.throughput={rate:0,count:0}}},systemBandwidth:{get(){var e=1/(this.bandwidth||1);let t;return t=0this.bandwidth||0,enumerable:!0},mediaRequests:{get:()=>this.playlistController_.mediaRequests_()||0,enumerable:!0},mediaRequestsAborted:{get:()=>this.playlistController_.mediaRequestsAborted_()||0,enumerable:!0},mediaRequestsTimedout:{get:()=>this.playlistController_.mediaRequestsTimedout_()||0,enumerable:!0},mediaRequestsErrored:{get:()=>this.playlistController_.mediaRequestsErrored_()||0,enumerable:!0},mediaTransferDuration:{get:()=>this.playlistController_.mediaTransferDuration_()||0,enumerable:!0},mediaBytesTransferred:{get:()=>this.playlistController_.mediaBytesTransferred_()||0,enumerable:!0},mediaSecondsLoaded:{get:()=>this.playlistController_.mediaSecondsLoaded_()||0,enumerable:!0},mediaAppends:{get:()=>this.playlistController_.mediaAppends_()||0,enumerable:!0},mainAppendsToLoadedData:{get:()=>this.playlistController_.mainAppendsToLoadedData_()||0,enumerable:!0},audioAppendsToLoadedData:{get:()=>this.playlistController_.audioAppendsToLoadedData_()||0,enumerable:!0},appendsToLoadedData:{get:()=>this.playlistController_.appendsToLoadedData_()||0,enumerable:!0},timeToLoadedData:{get:()=>this.playlistController_.timeToLoadedData_()||0,enumerable:!0},buffered:{get:()=>Yl(this.tech_.buffered()),enumerable:!0},currentTime:{get:()=>this.tech_.currentTime(),enumerable:!0},currentSource:{get:()=>this.tech_.currentSource_,enumerable:!0},currentTech:{get:()=>this.tech_.name_,enumerable:!0},duration:{get:()=>this.tech_.duration(),enumerable:!0},main:{get:()=>this.playlists.main,enumerable:!0},playerDimensions:{get:()=>this.tech_.currentDimensions(),enumerable:!0},seekable:{get:()=>Yl(this.tech_.seekable()),enumerable:!0},timestamp:{get:()=>Date.now(),enumerable:!0},videoPlaybackQuality:{get:()=>this.tech_.getVideoPlaybackQuality(),enumerable:!0}}),this.tech_.one("canplay",this.playlistController_.setupFirstPlay.bind(this.playlistController_)),this.tech_.on("bandwidthupdate",()=>{if(this.options_.useBandwidthFromLocalStorage){var e={bandwidth:this.bandwidth,throughput:Math.round(this.throughput)};if(window.localStorage){var t=(t=Lu())?O(t,e):e;try{window.localStorage.setItem(xu,JSON.stringify(t))}catch(e){return}}}}),this.playlistController_.on("selectedinitialmedia",()=>{var i;(i=this).representations=()=>{var e=i.playlistController_.main(),e=pd(e)?i.playlistController_.getAudioTrackPlaylists_():e.playlists;return e?e.filter(e=>!od(e)).map((e,t)=>new Su(i,e,e.id)):[]}}),this.playlistController_.sourceUpdater_.on("createdsourcebuffers",()=>{this.setupEme_()}),this.on(this.playlistController_,"progress",function(){this.tech_.trigger("progress")}),this.on(this.playlistController_,"firstplay",function(){this.ignoreNextSeekingEvent_=!0}),this.setupQualityLevels_(),this.tech_.el())&&(this.mediaSourceUrl_=window.URL.createObjectURL(this.playlistController_.mediaSource),this.tech_.src(this.mediaSourceUrl_))}createKeySessions_(){var e=this.playlistController_.mediaTypes_.AUDIO.activePlaylistLoader;this.logger_("waiting for EME key session creation"),Au({player:this.player_,sourceKeySystems:this.source_.keySystems,audioMedia:e&&e.media(),mainPlaylists:this.playlists.main.playlists}).then(()=>{this.logger_("created EME key session"),this.playlistController_.sourceUpdater_.initializedEme()}).catch(e=>{this.logger_("error while creating EME key session",e),this.player_.error({message:"Failed to initialize media keys for EME",code:3})})}handleWaitingForKey_(){this.logger_("waitingforkey fired, attempting to create any new key sessions"),this.createKeySessions_()}setupEme_(){var e=this.playlistController_.mediaTypes_.AUDIO.activePlaylistLoader,e=Pu({player:this.player_,sourceKeySystems:this.source_.keySystems,media:this.playlists.media(),audioMedia:e&&e.media()});this.player_.tech_.on("keystatuschange",e=>{if("output-restricted"===e.status){e=this.playlistController_.main();if(e&&e.playlists){const t=[];e.playlists.forEach(e=>{e&&e.attributes&&e.attributes.RESOLUTION&&720<=e.attributes.RESOLUTION.height&&(!e.excludeUntil||e.excludeUntil<1/0)&&(e.excludeUntil=1/0,t.push(e))}),t.length&&(T.log.warn('DRM keystatus changed to "output-restricted." Removing the following HD playlists that will most likely fail to play and clearing the buffer. This may be due to HDCP restrictions on the stream and the capabilities of the current device.',...t),this.playlistController_.fastQualityChange_())}}}),this.handleWaitingForKey_=this.handleWaitingForKey_.bind(this),this.player_.tech_.on("waitingforkey",this.handleWaitingForKey_),11!==T.browser.IE_VERSION&&e?this.createKeySessions_():this.playlistController_.sourceUpdater_.initializedEme()}setupQualityLevels_(){var e=T.players[this.tech_.options_.playerId];e&&e.qualityLevels&&!this.qualityLevels_&&(this.qualityLevels_=e.qualityLevels(),this.playlistController_.on("selectedinitialmedia",()=>{var t,e;t=this.qualityLevels_,(e=this).representations().forEach(e=>{t.addQualityLevel(e)}),Iu(t,e.playlists)}),this.playlists.on("mediachange",()=>{Iu(this.qualityLevels_,this.playlists)}))}static version(){return{"@videojs/http-streaming":"3.0.2","mux.js":"6.3.0","mpd-parser":"1.0.1","m3u8-parser":"6.0.0","aes-decrypter":"4.0.1"}}version(){return this.constructor.version()}canChangeType(){return iu.canChangeType()}play(){this.playlistController_.play()}setCurrentTime(e){this.playlistController_.setCurrentTime(e)}duration(){return this.playlistController_.duration()}seekable(){return this.playlistController_.seekable()}dispose(){this.playbackWatcher_&&this.playbackWatcher_.dispose(),this.playlistController_&&this.playlistController_.dispose(),this.qualityLevels_&&this.qualityLevels_.dispose(),this.tech_&&this.tech_.vhs&&delete this.tech_.vhs,this.mediaSourceUrl_&&window.URL.revokeObjectURL&&(window.URL.revokeObjectURL(this.mediaSourceUrl_),this.mediaSourceUrl_=null),this.tech_&&this.tech_.off("waitingforkey",this.handleWaitingForKey_),super.dispose()}convertToProgramTime(e,t){return Fd({playlist:this.playlistController_.media(),time:e,callback:t})}seekToProgramTime(e,t,i=!0,s=2){return jd({programTime:e,playlist:this.playlistController_.media(),retryCount:s,pauseAfterSeek:i,seekTo:this.options_.seekTo,tech:this.options_.tech,callback:t})}}const Du={name:"videojs-http-streaming",VERSION:"3.0.2",canHandleSource(e,t={}){t=O(T.options,t);return Du.canPlayType(e.type,t)},handleSource(e,t,i={}){i=O(T.options,i);return t.vhs=new Ou(e,t,i),t.vhs.xhr=xd(),t.vhs.src(e.src,e.type),t.vhs},canPlayType(e,t){e=An(e);return e&&(t=Du.getOverrideNative(t),!N.supportsTypeNatively(e)||t)?"maybe":""},getOverrideNative(e={}){var{vhs:e={}}=e,t=!(T.browser.IS_ANY_SAFARI||T.browser.IS_IOS),{overrideNative:e=t}=e;return e}};return In("avc1.4d400d,mp4a.40.2")&&T.getTech("Html5").registerSourceHandler(Du,0),T.VhsHandler=Ou,T.VhsSourceHandler=Du,T.Vhs=N,T.use||T.registerComponent("Vhs",N),T.options.vhs=T.options.vhs||{},T.getPlugin&&T.getPlugin("reloadSourceOnError")||T.registerPlugin("reloadSourceOnError",function(e){Cu(this,e)}),T});!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.flvjs=t():e.flvjs=t()}(self,(function(){return function(){var e={264:function(e,t,i){ +/*! + * @overview es6-promise - a tiny implementation of Promises/A+. + * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) + * @license Licensed under MIT license + * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE + * @version v4.2.8+1e68dce6 + */ +e.exports=function(){"use strict";function e(e){var t=typeof e;return null!==e&&("object"===t||"function"===t)}function t(e){return"function"==typeof e}var n=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},r=0,s=void 0,o=void 0,a=function(e,t){E[r]=e,E[r+1]=t,2===(r+=2)&&(o?o(b):R())};function h(e){o=e}function u(e){a=e}var d="undefined"!=typeof window?window:void 0,l=d||{},c=l.MutationObserver||l.WebKitMutationObserver,_="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),f="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function p(){return function(){return process.nextTick(b)}}function m(){return void 0!==s?function(){s(b)}:y()}function g(){var e=0,t=new c(b),i=document.createTextNode("");return t.observe(i,{characterData:!0}),function(){i.data=e=++e%2}}function v(){var e=new MessageChannel;return e.port1.onmessage=b,function(){return e.port2.postMessage(0)}}function y(){var e=setTimeout;return function(){return e(b,1)}}var E=new Array(1e3);function b(){for(var e=0;e0&&o.length>r&&!o.warned){o.warned=!0;var d=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");d.name="MaxListenersExceededWarning",d.emitter=e,d.type=t,d.count=o.length,u=d,console&&console.warn&&console.warn(u)}return e}function d(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function l(e,t,i){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:i},r=d.bind(n);return r.listener=i,n.wrapFn=r,r}function c(e,t,i){var n=e._events;if(void 0===n)return[];var r=n[t];return void 0===r?[]:"function"==typeof r?i?[r.listener||r]:[r]:i?function(e){for(var t=new Array(e.length),i=0;i0&&(o=t[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var h=s[e];if(void 0===h)return!1;if("function"==typeof h)n(h,this,t);else{var u=h.length,d=f(h,u);for(i=0;i=0;s--)if(i[s]===t||i[s].listener===t){o=i[s].listener,r=s;break}if(r<0)return this;0===r?i.shift():function(e,t){for(;t+1=0;n--)this.removeListener(e,t[n]);return this},s.prototype.listeners=function(e){return c(this,e,!0)},s.prototype.rawListeners=function(e){return c(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):_.call(e,t)},s.prototype.listenerCount=_,s.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},397:function(e,t,i){function n(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.m=e,i.c=t,i.i=function(e){return e},i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},i.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/",i.oe=function(e){throw console.error(e),e};var n=i(i.s=ENTRY_MODULE);return n.default||n}var r="[\\.|\\-|\\+|\\w|/|@]+",s="\\(\\s*(/\\*.*?\\*/)?\\s*.*?("+r+").*?\\)";function o(e){return(e+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function a(e,t,n){var a={};a[n]=[];var h=t.toString(),u=h.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/);if(!u)return a;for(var d,l=u[1],c=new RegExp("(\\\\n|\\W)"+o(l)+s,"g");d=c.exec(h);)"dll-reference"!==d[3]&&a[n].push(d[3]);for(c=new RegExp("\\("+o(l)+'\\("(dll-reference\\s('+r+'))"\\)\\)'+s,"g");d=c.exec(h);)e[d[2]]||(a[n].push(d[1]),e[d[2]]=i(d[1]).m),a[d[2]]=a[d[2]]||[],a[d[2]].push(d[4]);for(var _,f=Object.keys(a),p=0;p0}),!1)}e.exports=function(e,t){t=t||{};var r={main:i.m},s=t.all?{main:Object.keys(r.main)}:function(e,t){for(var i={main:[t]},n={main:[]},r={main:{}};h(i);)for(var s=Object.keys(i),o=0;o=e[r]&&t0&&e[0].originalDts=t[r].dts&&et[n].lastSample.originalDts&&e=t[n].lastSample.originalDts&&(n===t.length-1||n0&&(r=this._searchNearestSegmentBefore(i.originalBeginDts)+1),this._lastAppendLocation=r,this._list.splice(r,0,i)},e.prototype.getLastSegmentBefore=function(e){var t=this._searchNearestSegmentBefore(e);return t>=0?this._list[t]:null},e.prototype.getLastSampleBefore=function(e){var t=this.getLastSegmentBefore(e);return null!=t?t.lastSample:null},e.prototype.getLastSyncPointBefore=function(e){for(var t=this._searchNearestSegmentBefore(e),i=this._list[t].syncPoints;0===i.length&&t>0;)t--,i=this._list[t].syncPoints;return i.length>0?i[i.length-1]:null},e}()},18:function(e,t,i){"use strict";i.d(t,{Z:function(){return O}});var n=i(716),r=i.n(n),s=i(300),o=i(538),a=i(118);function h(e,t,i){var n=e;if(t+i=128){t.push(String.fromCharCode(65535&s)),n+=2;continue}}else if(i[n]<240){if(h(i,n,2))if((s=(15&i[n])<<12|(63&i[n+1])<<6|63&i[n+2])>=2048&&55296!=(63488&s)){t.push(String.fromCharCode(65535&s)),n+=3;continue}}else if(i[n]<248){var s;if(h(i,n,3))if((s=(7&i[n])<<18|(63&i[n+1])<<12|(63&i[n+2])<<6|63&i[n+3])>65536&&s<1114112){s-=65536,t.push(String.fromCharCode(s>>>10|55296)),t.push(String.fromCharCode(1023&s|56320)),n+=4;continue}}t.push(String.fromCharCode(65533)),++n}return t.join("")},l=i(29),c=(u=new ArrayBuffer(2),new DataView(u).setInt16(0,256,!0),256===new Int16Array(u)[0]),_=function(){function e(){}return e.parseScriptData=function(t,i,n){var r={};try{var o=e.parseValue(t,i,n),a=e.parseValue(t,i+o.size,n-o.size);r[o.data]=a.data}catch(e){s.Z.e("AMF",e.toString())}return r},e.parseObject=function(t,i,n){if(n<3)throw new l.rT("Data not enough when parse ScriptDataObject");var r=e.parseString(t,i,n),s=e.parseValue(t,i+r.size,n-r.size),o=s.objectEnd;return{data:{name:r.data,value:s.data},size:r.size+s.size,objectEnd:o}},e.parseVariable=function(t,i,n){return e.parseObject(t,i,n)},e.parseString=function(e,t,i){if(i<2)throw new l.rT("Data not enough when parse String");var n=new DataView(e,t,i).getUint16(0,!c);return{data:n>0?d(new Uint8Array(e,t+2,n)):"",size:2+n}},e.parseLongString=function(e,t,i){if(i<4)throw new l.rT("Data not enough when parse LongString");var n=new DataView(e,t,i).getUint32(0,!c);return{data:n>0?d(new Uint8Array(e,t+4,n)):"",size:4+n}},e.parseDate=function(e,t,i){if(i<10)throw new l.rT("Data size invalid when parse Date");var n=new DataView(e,t,i),r=n.getFloat64(0,!c),s=n.getInt16(8,!c);return{data:new Date(r+=60*s*1e3),size:10}},e.parseValue=function(t,i,n){if(n<1)throw new l.rT("Data not enough when parse Value");var r,o=new DataView(t,i,n),a=1,h=o.getUint8(0),u=!1;try{switch(h){case 0:r=o.getFloat64(1,!c),a+=8;break;case 1:r=!!o.getUint8(1),a+=1;break;case 2:var d=e.parseString(t,i+1,n-1);r=d.data,a+=d.size;break;case 3:r={};var _=0;for(9==(16777215&o.getUint32(n-4,!c))&&(_=3);a32)throw new l.OC("ExpGolomb: readBits() bits exceeded max 32bits!");if(e<=this._current_word_bits_left){var t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}var i=this._current_word_bits_left?this._current_word:0;i>>>=32-this._current_word_bits_left;var n=e-this._current_word_bits_left;this._fillCurrentWord();var r=Math.min(n,this._current_word_bits_left),s=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,i=i<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()},e.prototype.readUEG=function(){var e=this._skipLeadingZero();return this.readBits(e+1)-1},e.prototype.readSEG=function(){var e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)},e}(),p=function(){function e(){}return e._ebsp2rbsp=function(e){for(var t=e,i=t.byteLength,n=new Uint8Array(i),r=0,s=0;s=2&&3===t[s]&&0===t[s-1]&&0===t[s-2]||(n[r]=t[s],r++);return new Uint8Array(n.buffer,0,r)},e.parseSPS=function(t){var i=e._ebsp2rbsp(t),n=new f(i);n.readByte();var r=n.readByte();n.readByte();var s=n.readByte();n.readUEG();var o=e.getProfileString(r),a=e.getLevelString(s),h=1,u=420,d=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(3===(h=n.readUEG())&&n.readBits(1),h<=3&&(u=[0,420,422,444][h]),d=n.readUEG()+8,n.readUEG(),n.readBits(1),n.readBool()))for(var l=3!==h?8:12,c=0;c0&&k<16?(A=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][k-1],L=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][k-1]):255===k&&(A=n.readByte()<<8|n.readByte(),L=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){var D=n.readBits(32),B=n.readBits(32);O=n.readBool(),w=(T=B)/(C=2*D)}}var I=1;1===A&&1===L||(I=A/L);var M=0,U=0;0===h?(M=1,U=2-y):(M=3===h?1:2,U=(1===h?2:1)*(2-y));var P=16*(g+1),x=16*(v+1)*(2-y);P-=(E+b)*M,x-=(S+R)*U;var N=Math.ceil(P*I);return n.destroy(),n=null,{profile_string:o,level_string:a,bit_depth:d,ref_frames:m,chroma_format:u,chroma_format_string:e.getChromaFormatString(u),frame_rate:{fixed:O,fps:w,fps_den:C,fps_num:T},sar_ratio:{width:A,height:L},codec_size:{width:P,height:x},present_size:{width:N,height:x}}},e._skipScalingList=function(e,t){for(var i=8,n=8,r=0;r32){for(var E=y/32,b=y%32,S=0;S0)for(h=i;h<8;h++)e.readBits(2);for(h=0;h=i)return-1;e.readBits(1),e.readUEG(),n[t]=0;for(var r=0;r<=n[t-1];r++){var s=0,o=e.readBits(1);o||(s=e.readBits(1)),(o||s)&&n[t]++}}else{var a=e.readUEG(),h=e.readUEG();n[t]=a+h;for(r=0;r1&&e.readSEG();for(var r=0;r0&&(t.fps=t.fps_num/t.fps_den);var i=0;e.readBits(1)&&(i=e.readUEG())>=0&&(t.fps/=i+1)},e._skip_hrd_parameters=function(t,i,n,r){var s=0,o=0;if(n&&(s=t.readBits(1),o=t.readBits(1),s||o)){var a=t.readBits(1);a&&t.readBits(19),t.readByte(),a&&t.readBits(4),t.readBits(15)}for(var h=0;h<=r;h++){var u=0,d=0,l=0,c=t.readBits(1);i.fps_fixed=c,c||(l=t.readBits(1)),l?t.readUEG():d=t.readBits(1),d||(u=t.readUEG(t)),s&&e._skip_sub_layer_hrd_parameters(t,u,0),o&&e._skip_sub_layer_hrd_parameters(t,u,0)}},e.getProfileString=function(e){switch(e){case 1:return"Main";case 2:return"Main10";case 3:return"MainSP";case 4:return"Rext";case 9:return"SCC";default:return"Unknown"}},e.getLevelString=function(e){return(e/30).toFixed(1)},e.getChromaFormatString=function(e){switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}},e}(),g=i(600);var v=function(){function e(e,t){this.TAG="FLVDemuxer",this._config=t,this._onError=null,this._onMediaInfo=null,this._onMetaDataArrived=null,this._onScriptDataArrived=null,this._onTrackMetadata=null,this._onDataAvailable=null,this._dataOffset=e.dataOffset,this._firstParse=!0,this._dispatch=!1,this._hasAudio=e.hasAudioTrack,this._hasVideo=e.hasVideoTrack,this._hasAudioFlagOverrided=!1,this._hasVideoFlagOverrided=!1,this._audioInitialMetadataDispatched=!1,this._videoInitialMetadataDispatched=!1,this._mediaInfo=new a.Z,this._mediaInfo.hasAudio=this._hasAudio,this._mediaInfo.hasVideo=this._hasVideo,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this._naluLengthSize=4,this._timestampBase=0,this._timescale=1e3,this._duration=0,this._durationOverrided=!1,this._referenceFrameRate={fixed:!0,fps:23.976,fps_num:23976,fps_den:1e3},this._flvSoundRateTable=[5500,11025,22050,44100,48e3],this._mpegSamplingRates=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],this._mpegAudioV10SampleRateTable=[44100,48e3,32e3,0],this._mpegAudioV20SampleRateTable=[22050,24e3,16e3,0],this._mpegAudioV25SampleRateTable=[11025,12e3,8e3,0],this._mpegAudioL1BitRateTable=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],this._mpegAudioL2BitRateTable=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],this._mpegAudioL3BitRateTable=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1],this._videoTrack={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this._audioTrack={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._littleEndian=function(){var e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}()}return e.prototype.destroy=function(){this._mediaInfo=null,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this._videoTrack=null,this._audioTrack=null,this._onError=null,this._onMediaInfo=null,this._onMetaDataArrived=null,this._onScriptDataArrived=null,this._onTrackMetadata=null,this._onDataAvailable=null},e.probe=function(e){var t=new Uint8Array(e),i={match:!1};if(t.byteLength<4)return i;if(70!==t[0]||76!==t[1]||86!==t[2]||1!==t[3])return i;var n,r,s=(4&t[4])>>>2!=0,o=0!=(1&t[4]),a=(n=t)[r=5]<<24|n[r+1]<<16|n[r+2]<<8|n[r+3];return a<9?i:{match:!0,consumed:a,dataOffset:a,hasAudioTrack:s,hasVideoTrack:o}},e.prototype.bindDataSource=function(e){return e.onDataArrival=this.parseChunks.bind(this),this},Object.defineProperty(e.prototype,"onTrackMetadata",{get:function(){return this._onTrackMetadata},set:function(e){this._onTrackMetadata=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onMediaInfo",{get:function(){return this._onMediaInfo},set:function(e){this._onMediaInfo=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onMetaDataArrived",{get:function(){return this._onMetaDataArrived},set:function(e){this._onMetaDataArrived=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onScriptDataArrived",{get:function(){return this._onScriptDataArrived},set:function(e){this._onScriptDataArrived=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onError",{get:function(){return this._onError},set:function(e){this._onError=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onDataAvailable",{get:function(){return this._onDataAvailable},set:function(e){this._onDataAvailable=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"timestampBase",{get:function(){return this._timestampBase},set:function(e){this._timestampBase=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"overridedDuration",{get:function(){return this._duration},set:function(e){this._durationOverrided=!0,this._duration=e,this._mediaInfo.duration=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"overridedHasAudio",{set:function(e){this._hasAudioFlagOverrided=!0,this._hasAudio=e,this._mediaInfo.hasAudio=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"overridedHasVideo",{set:function(e){this._hasVideoFlagOverrided=!0,this._hasVideo=e,this._mediaInfo.hasVideo=e},enumerable:!1,configurable:!0}),e.prototype.resetMediaInfo=function(){this._mediaInfo=new a.Z},e.prototype._isInitialMetadataDispatched=function(){return this._hasAudio&&this._hasVideo?this._audioInitialMetadataDispatched&&this._videoInitialMetadataDispatched:this._hasAudio&&!this._hasVideo?this._audioInitialMetadataDispatched:!(this._hasAudio||!this._hasVideo)&&this._videoInitialMetadataDispatched},e.prototype.parseChunks=function(t,i){if(!(this._onError&&this._onMediaInfo&&this._onTrackMetadata&&this._onDataAvailable))throw new l.rT("Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified");var n=0,r=this._littleEndian;if(0===i){if(!(t.byteLength>13))return 0;n=e.probe(t).dataOffset}this._firstParse&&(this._firstParse=!1,i+n!==this._dataOffset&&s.Z.w(this.TAG,"First time parsing but chunk byteStart invalid!"),0!==(o=new DataView(t,n)).getUint32(0,!r)&&s.Z.w(this.TAG,"PrevTagSize0 !== 0 !!!"),n+=4);for(;nt.byteLength)break;var a=o.getUint8(0),h=16777215&o.getUint32(0,!r);if(n+11+h+4>t.byteLength)break;if(8===a||9===a||18===a){var u=o.getUint8(4),d=o.getUint8(5),c=o.getUint8(6)|d<<8|u<<16|o.getUint8(7)<<24;0!==(16777215&o.getUint32(7,!r))&&s.Z.w(this.TAG,"Meet tag which has StreamID != 0!");var _=n+11;switch(a){case 8:this._parseAudioData(t,_,h,c);break;case 9:this._parseVideoData(t,_,h,c,i+n);break;case 18:this._parseScriptData(t,_,h)}var f=o.getUint32(11+h,!r);f!==11+h&&s.Z.w(this.TAG,"Invalid PrevTagSize ".concat(f)),n+=11+h+4}else s.Z.w(this.TAG,"Unsupported tag type ".concat(a,", skipped")),n+=11+h+4}return this._isInitialMetadataDispatched()&&this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack),n},e.prototype._parseScriptData=function(e,t,i){var n=_.parseScriptData(e,t,i);if(n.hasOwnProperty("onMetaData")){if(null==n.onMetaData||"object"!=typeof n.onMetaData)return void s.Z.w(this.TAG,"Invalid onMetaData structure!");this._metadata&&s.Z.w(this.TAG,"Found another onMetaData tag!"),this._metadata=n;var r=this._metadata.onMetaData;if(this._onMetaDataArrived&&this._onMetaDataArrived(Object.assign({},r)),"boolean"==typeof r.hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=r.hasAudio,this._mediaInfo.hasAudio=this._hasAudio),"boolean"==typeof r.hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=r.hasVideo,this._mediaInfo.hasVideo=this._hasVideo),"number"==typeof r.audiodatarate&&(this._mediaInfo.audioDataRate=r.audiodatarate),"number"==typeof r.videodatarate&&(this._mediaInfo.videoDataRate=r.videodatarate),"number"==typeof r.width&&(this._mediaInfo.width=r.width),"number"==typeof r.height&&(this._mediaInfo.height=r.height),"number"==typeof r.duration){if(!this._durationOverrided){var o=Math.floor(r.duration*this._timescale);this._duration=o,this._mediaInfo.duration=o}}else this._mediaInfo.duration=0;if("number"==typeof r.framerate){var a=Math.floor(1e3*r.framerate);if(a>0){var h=a/1e3;this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=h,this._referenceFrameRate.fps_num=a,this._referenceFrameRate.fps_den=1e3,this._mediaInfo.fps=h}}if("object"==typeof r.keyframes){this._mediaInfo.hasKeyframesIndex=!0;var u=r.keyframes;this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(u),r.keyframes=null}else this._mediaInfo.hasKeyframesIndex=!1;this._dispatch=!1,this._mediaInfo.metadata=r,s.Z.v(this.TAG,"Parsed onMetaData"),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}Object.keys(n).length>0&&this._onScriptDataArrived&&this._onScriptDataArrived(Object.assign({},n))},e.prototype._parseKeyframesIndex=function(e){for(var t=[],i=[],n=1;n>>4;if(2===o||10===o){var a=0,h=(12&r)>>>2;if(h>=0&&h<=4){a=this._flvSoundRateTable[h];var u=1&r,d=this._audioMetadata,l=this._audioTrack;if(d||(!1===this._hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),(d=this._audioMetadata={}).type="audio",d.id=l.id,d.timescale=this._timescale,d.duration=this._duration,d.audioSampleRate=a,d.channelCount=0===u?1:2),10===o){var c=this._parseAACAudioData(e,t+1,i-1);if(null==c)return;if(0===c.packetType){d.config&&s.Z.w(this.TAG,"Found another AudioSpecificConfig!");var _=c.data;d.audioSampleRate=_.samplingRate,d.channelCount=_.channelCount,d.codec=_.codec,d.originalCodec=_.originalCodec,d.config=_.config,d.refSampleDuration=1024/d.audioSampleRate*d.timescale,s.Z.v(this.TAG,"Parsed AudioSpecificConfig"),this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._audioInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("audio",d),(m=this._mediaInfo).audioCodec=d.originalCodec,m.audioSampleRate=d.audioSampleRate,m.audioChannelCount=d.channelCount,m.hasVideo?null!=m.videoCodec&&(m.mimeType='video/x-flv; codecs="'+m.videoCodec+","+m.audioCodec+'"'):m.mimeType='video/x-flv; codecs="'+m.audioCodec+'"',m.isComplete()&&this._onMediaInfo(m)}else if(1===c.packetType){var f=this._timestampBase+n,p={unit:c.data,length:c.data.byteLength,dts:f,pts:f};l.samples.push(p),l.length+=c.data.length}else s.Z.e(this.TAG,"Flv: Unsupported AAC data type ".concat(c.packetType))}else if(2===o){if(!d.codec){var m;if(null==(_=this._parseMP3AudioData(e,t+1,i-1,!0)))return;d.audioSampleRate=_.samplingRate,d.channelCount=_.channelCount,d.codec=_.codec,d.originalCodec=_.originalCodec,d.refSampleDuration=1152/d.audioSampleRate*d.timescale,s.Z.v(this.TAG,"Parsed MPEG Audio Frame Header"),this._audioInitialMetadataDispatched=!0,this._onTrackMetadata("audio",d),(m=this._mediaInfo).audioCodec=d.codec,m.audioSampleRate=d.audioSampleRate,m.audioChannelCount=d.channelCount,m.audioDataRate=_.bitRate,m.hasVideo?null!=m.videoCodec&&(m.mimeType='video/x-flv; codecs="'+m.videoCodec+","+m.audioCodec+'"'):m.mimeType='video/x-flv; codecs="'+m.audioCodec+'"',m.isComplete()&&this._onMediaInfo(m)}var v=this._parseMP3AudioData(e,t+1,i-1,!1);if(null==v)return;f=this._timestampBase+n;var y={unit:v,length:v.byteLength,dts:f,pts:f};l.samples.push(y),l.length+=v.length}}else this._onError(g.Z.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+h)}else this._onError(g.Z.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+o)}},e.prototype._parseAACAudioData=function(e,t,i){if(!(i<=1)){var n={},r=new Uint8Array(e,t,i);return n.packetType=r[0],0===r[0]?n.data=this._parseAACAudioSpecificConfig(e,t+1,i-1):n.data=r.subarray(1),n}s.Z.w(this.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!")},e.prototype._parseAACAudioSpecificConfig=function(e,t,i){var n,r,s=new Uint8Array(e,t,i),o=null,a=0,h=null;if(a=n=s[0]>>>3,(r=(7&s[0])<<1|s[1]>>>7)<0||r>=this._mpegSamplingRates.length)this._onError(g.Z.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");else{var u=this._mpegSamplingRates[r],d=(120&s[1])>>>3;if(!(d<0||d>=8)){5===a&&(h=(7&s[1])<<1|s[2]>>>7,(124&s[2])>>>2);var l=self.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?r>=6?(a=5,o=new Array(4),h=r-3):(a=2,o=new Array(2),h=r):-1!==l.indexOf("android")?(a=2,o=new Array(2),h=r):(a=5,h=r,o=new Array(4),r>=6?h=r-3:1===d&&(a=2,o=new Array(2),h=r)),o[0]=a<<3,o[0]|=(15&r)>>>1,o[1]=(15&r)<<7,o[1]|=(15&d)<<3,5===a&&(o[1]|=(15&h)>>>1,o[2]=(1&h)<<7,o[2]|=8,o[3]=0),{config:o,samplingRate:u,channelCount:d,codec:"mp4a.40."+a,originalCodec:"mp4a.40."+n}}this._onError(g.Z.FORMAT_ERROR,"Flv: AAC invalid channel configuration")}},e.prototype._parseMP3AudioData=function(e,t,i,n){if(!(i<4)){this._littleEndian;var r=new Uint8Array(e,t,i),o=null;if(n){if(255!==r[0])return;var a=r[1]>>>3&3,h=(6&r[1])>>1,u=(240&r[2])>>>4,d=(12&r[2])>>>2,l=3!==(r[3]>>>6&3)?2:1,c=0,_=0;switch(a){case 0:c=this._mpegAudioV25SampleRateTable[d];break;case 2:c=this._mpegAudioV20SampleRateTable[d];break;case 3:c=this._mpegAudioV10SampleRateTable[d]}switch(h){case 1:34,u>>4,h=15&o;if(7===h)this._parseAVCVideoPacket(e,t+1,i-1,n,r,a);else{if(12!==h)return void this._onError(g.Z.CODEC_UNSUPPORTED,"Flv: Unsupported codec in video frame: ".concat(h));this._parseHVCVideoPacket(e,t+1,i-1,n,r,a)}}},e.prototype._parseAVCVideoPacket=function(e,t,i,n,r,o){if(i<4)s.Z.w(this.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");else{var a=this._littleEndian,h=new DataView(e,t,i),u=h.getUint8(0),d=(16777215&h.getUint32(0,!a))<<8>>8;if(0===u)this._parseAVCDecoderConfigurationRecord(e,t+4,i-4);else if(1===u)this._parseAVCVideoData(e,t+4,i-4,n,r,o,d);else if(2!==u)return void this._onError(g.Z.FORMAT_ERROR,"Flv: Invalid video packet type ".concat(u))}},e.prototype._parseAVCDecoderConfigurationRecord=function(e,t,i){if(i<7)s.Z.w(this.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");else{var n=this._videoMetadata,r=this._videoTrack,o=this._littleEndian,a=new DataView(e,t,i);n?void 0!==n.avcc&&s.Z.w(this.TAG,"Found another AVCDecoderConfigurationRecord!"):(!1===this._hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),(n=this._videoMetadata={}).type="video",n.id=r.id,n.timescale=this._timescale,n.duration=this._duration);var h=a.getUint8(0),u=a.getUint8(1);a.getUint8(2),a.getUint8(3);if(1===h&&0!==u)if(this._naluLengthSize=1+(3&a.getUint8(4)),3===this._naluLengthSize||4===this._naluLengthSize){var d=31&a.getUint8(5);if(0!==d){d>1&&s.Z.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = ".concat(d));for(var l=6,c=0;c1&&s.Z.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = ".concat(L)),l++;for(c=0;c=i){s.Z.w(this.TAG,"Malformed Nalu near timestamp ".concat(f,", offset = ").concat(c,", dataSize = ").concat(i));break}var m=u.getUint32(c,!h);if(3===_&&(m>>>=8),m>i-_)return void s.Z.w(this.TAG,"Malformed Nalus near timestamp ".concat(f,", NaluSize > DataSize!"));var g=31&u.getUint8(c+_);5===g&&(p=!0);var v=new Uint8Array(e,t+c,_+m),y={type:g,data:v};d.push(y),l+=v.byteLength,c+=_+m}if(d.length){var E=this._videoTrack,b={units:d,length:l,isKeyframe:p,dts:f,cts:a,pts:f+a};p&&(b.fileposition=r),E.samples.push(b),E.length+=l}},e.prototype._parseHVCVideoPacket=function(e,t,i,n,r,o){if(i<4)s.Z.w(this.TAG,"Flv: Invalid HVC packet, missing HVCPacketType or/and CompositionTime");else{var a=this._littleEndian,h=new DataView(e,t,i),u=h.getUint8(0),d=(16777215&h.getUint32(0,!a))<<8>>8;if(0===u)this._parseHVCDecoderConfigurationRecord(e,t+4,i-4);else if(1===u)this._parseHVCVideoData(e,t+4,i-4,n,r,o,d);else if(2!==u)return void this._onError(g.Z.FORMAT_ERROR,"Flv: Invalid video packet type ".concat(u))}},e.prototype._parseHVCDecoderConfigurationRecord=function(e,t,i){if(i<23)s.Z.w(this.TAG,"Flv: Invalid HVCDecoderConfigurationRecord, lack of data!");else{var n=this._videoMetadata,r=this._videoTrack,o=this._littleEndian,a=new DataView(e,t,i);n?void 0!==n.hvcc&&s.Z.w(this.TAG,"Found another HVCDecoderConfigurationRecord!"):(!1===this._hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),(n=this._videoMetadata={}).type="video",n.id=r.id,n.timescale=this._timescale,n.duration=this._duration);var h=a.getUint8(0),u=31&a.getUint8(1);if(1===h&&0!==u)if(this._naluLengthSize=1+(3&a.getUint8(21)),3===this._naluLengthSize||4===this._naluLengthSize){for(var d,l,c,_=a.getUint8(22),f=23,p=[],v=0;v<_;v++){var y=63&a.getUint8(f++),E=a.getUint16(f,!o);if(f+=2,0!==E){switch(y){case 32:d+=E;break;case 33:l+=E;break;case 34:c+=E}for(var b=0;b1&&s.Z.w(this.TAG,"Flv: Strange HVCDecoderConfigurationRecord: VPS Count = ".concat(d)),0!==l)if(l>1&&s.Z.w(this.TAG,"Flv: Strange HVCDecoderConfigurationRecord: SPS Count = ".concat(l)),0!==c){c>1&&s.Z.w(this.TAG,"Flv: Strange HVCDecoderConfigurationRecord: PPS Count = ".concat(l));var A=p[0],L=m.parseSPS(A);n.codecWidth=L.codec_size.width,n.codecHeight=L.codec_size.height,n.presentWidth=L.present_size.width,n.presentHeight=L.present_size.height,n.profile=L.profile_string,n.level=L.level_string,n.profile_idc=L.profile_idc,n.level_idc=L.level_idc,n.bitDepth=L.bit_depth,n.chromaFormat=L.chroma_format,n.sarRatio=L.sar_ratio,n.frameRate=L.frame_rate,!1!==L.frame_rate.fixed&&0!==L.frame_rate.fps_num&&0!==L.frame_rate.fps_den||(n.frameRate=this._referenceFrameRate);var w=n.frameRate.fps_den,O=n.frameRate.fps_num;n.refSampleDuration=n.timescale*(w/O);var T="hvc1."+n.profile_idc+".1.L"+n.level_idc+".B0";n.codec=T;var C=this._mediaInfo;C.width=n.codecWidth,C.height=n.codecHeight,C.fps=n.frameRate.fps,C.profile=n.profile,C.level=n.level,C.refFrames=L.ref_frames,C.chromaFormat=L.chroma_format_string,C.sarNum=n.sarRatio.width,C.sarDen=n.sarRatio.height,C.videoCodec=T,C.hasAudio?null!=C.audioCodec&&(C.mimeType='video/x-flv; codecs="'+C.videoCodec+","+C.audioCodec+'"'):C.mimeType='video/x-flv; codecs="'+C.videoCodec+'"',C.isComplete()&&this._onMediaInfo(C),n.hvcc=new Uint8Array(i),n.hvcc.set(new Uint8Array(e,t,i),0),s.Z.v(this.TAG,"Parsed HVCDecoderConfigurationRecord"),this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._videoInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("video",n)}else this._onError(g.Z.FORMAT_ERROR,"Flv: Invalid HVCDecoderConfigurationRecord: No PPS");else this._onError(g.Z.FORMAT_ERROR,"Flv: Invalid HVCDecoderConfigurationRecord: No SPS");else this._onError(g.Z.FORMAT_ERROR,"Flv: Invalid HVCDecoderConfigurationRecord: No VPS")}else this._onError(g.Z.FORMAT_ERROR,"Flv: Strange NaluLengthSizeMinusOne: ".concat(this._naluLengthSize-1));else this._onError(g.Z.FORMAT_ERROR,"Flv: Invalid HVCDecoderConfigurationRecord")}},e.prototype._parseHVCVideoData=function(e,t,i,n,r,o,a){for(var h=this._littleEndian,u=new DataView(e,t,i),d=[],l=0,c=0,_=this._naluLengthSize,f=this._timestampBase+n,p=1===o;c=i){s.Z.w(this.TAG,"Malformed Nalu near timestamp ".concat(f,", offset = ").concat(c,", dataSize = ").concat(i));break}var m=u.getUint32(c,!h);if(3===_&&(m>>>=8),m>i-_)return void s.Z.w(this.TAG,"Malformed Nalus near timestamp ".concat(f,", NaluSize > DataSize!"));var g=u.getUint8(c+_)>>1&63;g>=16&&g<=23&&(p=!0);var v=new Uint8Array(e,t+c,_+m),y={type:g,data:v};d.push(y),l+=v.byteLength,c+=_+m}if(d.length){var E=this._videoTrack,b={units:d,length:l,isKeyframe:p,dts:f,cts:a,pts:f+a};p&&(b.fileposition=r),E.samples.push(b),E.length+=l}},e}(),y=v,E=function(){function e(){}return e.init=function(){for(var t in e.types={hvc1:[],hvcC:[],avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],pasp:[],".mp3":[]},e.types)e.types.hasOwnProperty(t)&&(e.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);var i=e.constants={};i.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),i.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),i.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),i.STSC=i.STCO=i.STTS,i.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),i.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),i.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),i.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),i.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),i.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])},e.box=function(e){for(var t=8,i=null,n=Array.prototype.slice.call(arguments,1),r=n.length,s=0;s>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);var o=8;for(s=0;s>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))},e.trak=function(t){return e.box(e.types.trak,e.tkhd(t),e.mdia(t))},e.tkhd=function(t){var i=t.id,n=t.duration,r=t.presentWidth,s=t.presentHeight;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,r>>>8&255,255&r,0,0,s>>>8&255,255&s,0,0]))},e.mdia=function(t){return e.box(e.types.mdia,e.mdhd(t),e.hdlr(t),e.minf(t))},e.mdhd=function(t){var i=t.timescale,n=t.duration;return e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,85,196,0,0]))},e.hdlr=function(t){var i=null;return i="audio"===t.type?e.constants.HDLR_AUDIO:e.constants.HDLR_VIDEO,e.box(e.types.hdlr,i)},e.minf=function(t){var i=null;return i="audio"===t.type?e.box(e.types.smhd,e.constants.SMHD):e.box(e.types.vmhd,e.constants.VMHD),e.box(e.types.minf,i,e.dinf(),e.stbl(t))},e.dinf=function(){return e.box(e.types.dinf,e.box(e.types.dref,e.constants.DREF))},e.stbl=function(t){return e.box(e.types.stbl,e.stsd(t),e.box(e.types.stts,e.constants.STTS),e.box(e.types.stsc,e.constants.STSC),e.box(e.types.stsz,e.constants.STSZ),e.box(e.types.stco,e.constants.STCO))},e.stsd=function(t){return"audio"===t.type?"mp3"===t.codec?e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp3(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp4a(t)):t.codec.indexOf("avc1")>=0?e.box(e.types.stsd,e.constants.STSD_PREFIX,e.avc1(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.hvc1(t))},e.mp3=function(t){var i=t.channelCount,n=t.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,i,0,16,0,0,0,0,n>>>8&255,255&n,0,0]);return e.box(e.types[".mp3"],r)},e.mp4a=function(t){var i=t.channelCount,n=t.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,i,0,16,0,0,0,0,n>>>8&255,255&n,0,0]);return e.box(e.types.mp4a,r,e.esds(t))},e.esds=function(t){var i=t.config||[],n=i.length,r=new Uint8Array([0,0,0,0,3,23+n,0,1,0,4,15+n,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([n]).concat(i).concat([6,1,2]));return e.box(e.types.esds,r)},e.avc1=function(t){var i=t.avcc,n=t.codecWidth,r=t.codecHeight,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,n>>>8&255,255&n,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return e.box(e.types.avc1,s,e.box(e.types.avcC,i))},e.hvc1=function(t){var i=t.hvcc,n=t.codecWidth,r=t.codecHeight,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,n>>>8&255,255&n,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return e.box(e.types.hvc1,s,e.box(e.types.hvcC,i))},e.mvex=function(t){return e.box(e.types.mvex,e.trex(t))},e.trex=function(t){var i=t.id,n=new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return e.box(e.types.trex,n)},e.moof=function(t,i){return e.box(e.types.moof,e.mfhd(t.sequenceNumber),e.traf(t,i))},e.mfhd=function(t){var i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]);return e.box(e.types.mfhd,i)},e.traf=function(t,i){var n=t.id,r=e.box(e.types.tfhd,new Uint8Array([0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n])),s=e.box(e.types.tfdt,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),o=e.sdtp(t),a=e.trun(t,o.byteLength+16+16+8+16+8+8);return e.box(e.types.traf,r,s,a,o)},e.sdtp=function(t){for(var i=t.samples||[],n=i.length,r=new Uint8Array(4+n),s=0;s>>24&255,r>>>16&255,r>>>8&255,255&r,i>>>24&255,i>>>16&255,i>>>8&255,255&i],0);for(var a=0;a>>24&255,h>>>16&255,h>>>8&255,255&h,u>>>24&255,u>>>16&255,u>>>8&255,255&u,d.isLeading<<2|d.dependsOn,d.isDependedOn<<6|d.hasRedundancy<<4|d.isNonSync,0,0,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*a)}return e.box(e.types.trun,o)},e.mdat=function(t){return e.box(e.types.mdat,t)},e}();E.init();var b=E,S=function(){function e(){}return e.getSilentFrame=function(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}return null},e}(),R=i(51),A=function(){function e(e){this.TAG="MP4Remuxer",this._config=e,this._isLive=!0===e.isLive,this._dtsBase=-1,this._dtsBaseInited=!1,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=void 0,this._videoNextDts=void 0,this._audioStashedLastSample=null,this._videoStashedLastSample=null,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList=new R.J1("audio"),this._videoSegmentInfoList=new R.J1("video"),this._onInitSegment=null,this._onMediaSegment=null,this._forceFirstIDR=!(!o.Z.chrome||!(o.Z.version.major<50||50===o.Z.version.major&&o.Z.version.build<2661)),this._fillSilentAfterSeek=o.Z.msedge||o.Z.msie,this._mp3UseMpegAudio=!o.Z.firefox,this._fillAudioTimestampGap=this._config.fixAudioTimestampGap}return e.prototype.destroy=function(){this._dtsBase=-1,this._dtsBaseInited=!1,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList.clear(),this._audioSegmentInfoList=null,this._videoSegmentInfoList.clear(),this._videoSegmentInfoList=null,this._onInitSegment=null,this._onMediaSegment=null},e.prototype.bindDataSource=function(e){return e.onDataAvailable=this.remux.bind(this),e.onTrackMetadata=this._onTrackMetadataReceived.bind(this),this},Object.defineProperty(e.prototype,"onInitSegment",{get:function(){return this._onInitSegment},set:function(e){this._onInitSegment=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onMediaSegment",{get:function(){return this._onMediaSegment},set:function(e){this._onMediaSegment=e},enumerable:!1,configurable:!0}),e.prototype.insertDiscontinuity=function(){this._audioNextDts=this._videoNextDts=void 0},e.prototype.seek=function(e){this._audioStashedLastSample=null,this._videoStashedLastSample=null,this._videoSegmentInfoList.clear(),this._audioSegmentInfoList.clear()},e.prototype.remux=function(e,t){if(!this._onMediaSegment)throw new l.rT("MP4Remuxer: onMediaSegment callback must be specificed!");this._dtsBaseInited||this._calculateDtsBase(e,t),this._remuxVideo(t),this._remuxAudio(e)},e.prototype._onTrackMetadataReceived=function(e,t){var i=null,n="mp4",r=t.codec;if("audio"===e)this._audioMeta=t,"mp3"===t.codec&&this._mp3UseMpegAudio?(n="mpeg",r="",i=new Uint8Array):i=b.generateInitSegment(t);else{if("video"!==e)return;this._videoMeta=t,i=b.generateInitSegment(t)}if(!this._onInitSegment)throw new l.rT("MP4Remuxer: onInitSegment callback must be specified!");this._onInitSegment(e,{type:e,data:i.buffer,codec:r,container:"".concat(e,"/").concat(n),mediaDuration:t.duration})},e.prototype._calculateDtsBase=function(e,t){this._dtsBaseInited||(e.samples&&e.samples.length&&(this._audioDtsBase=e.samples[0].dts),t.samples&&t.samples.length&&(this._videoDtsBase=t.samples[0].dts),this._dtsBase=Math.min(this._audioDtsBase,this._videoDtsBase),this._dtsBaseInited=!0)},e.prototype.flushStashedSamples=function(){var e=this._videoStashedLastSample,t=this._audioStashedLastSample,i={type:"video",id:1,sequenceNumber:0,samples:[],length:0};null!=e&&(i.samples.push(e),i.length=e.length);var n={type:"audio",id:2,sequenceNumber:0,samples:[],length:0};null!=t&&(n.samples.push(t),n.length=t.length),this._videoStashedLastSample=null,this._audioStashedLastSample=null,this._remuxVideo(i,!0),this._remuxAudio(n,!0)},e.prototype._remuxAudio=function(e,t){if(null!=this._audioMeta){var i,n=e,r=n.samples,a=void 0,h=-1,u=this._audioMeta.refSampleDuration,d="mp3"===this._audioMeta.codec&&this._mp3UseMpegAudio,l=this._dtsBaseInited&&void 0===this._audioNextDts,c=!1;if(r&&0!==r.length&&(1!==r.length||t)){var _=0,f=null,p=0;d?(_=0,p=n.length):(_=8,p=8+n.length);var m=null;if(r.length>1&&(p-=(m=r.pop()).length),null!=this._audioStashedLastSample){var g=this._audioStashedLastSample;this._audioStashedLastSample=null,r.unshift(g),p+=g.length}null!=m&&(this._audioStashedLastSample=m);var v=r[0].dts-this._dtsBase;if(this._audioNextDts)a=v-this._audioNextDts;else if(this._audioSegmentInfoList.isEmpty())a=0,this._fillSilentAfterSeek&&!this._videoSegmentInfoList.isEmpty()&&"mp3"!==this._audioMeta.originalCodec&&(c=!0);else{var y=this._audioSegmentInfoList.getLastSampleBefore(v);if(null!=y){var E=v-(y.originalDts+y.duration);E<=3&&(E=0),a=v-(y.dts+y.duration+E)}else a=0}if(c){var A=v-a,L=this._videoSegmentInfoList.getLastSegmentBefore(v);if(null!=L&&L.beginDts=3*u&&this._fillAudioTimestampGap&&!o.Z.safari){B=!0;var P,x=Math.floor(a/u);s.Z.w(this.TAG,"Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\n"+"originalDts: ".concat(D," ms, curRefDts: ").concat(U," ms, ")+"dtsCorrection: ".concat(Math.round(a)," ms, generate: ").concat(x," frames")),w=Math.floor(U),M=Math.floor(U+u)-w,null==(P=S.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount))&&(s.Z.w(this.TAG,"Unable to generate silent frame for "+"".concat(this._audioMeta.originalCodec," with ").concat(this._audioMeta.channelCount," channels, repeat last frame")),P=k),I=[];for(var N=0;N=1?T[T.length-1].duration:Math.floor(u);this._audioNextDts=w+M}-1===h&&(h=w),T.push({dts:w,pts:w,cts:0,unit:g.unit,size:g.unit.byteLength,duration:M,originalDts:D,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}),B&&T.push.apply(T,I)}}if(0===T.length)return n.samples=[],void(n.length=0);d?f=new Uint8Array(p):((f=new Uint8Array(p))[0]=p>>>24&255,f[1]=p>>>16&255,f[2]=p>>>8&255,f[3]=255&p,f.set(b.types.mdat,4));for(C=0;C1&&(l-=(c=s.pop()).length),null!=this._videoStashedLastSample){var _=this._videoStashedLastSample;this._videoStashedLastSample=null,s.unshift(_),l+=_.length}null!=c&&(this._videoStashedLastSample=c);var f=s[0].dts-this._dtsBase;if(this._videoNextDts)o=f-this._videoNextDts;else if(this._videoSegmentInfoList.isEmpty())o=0;else{var p=this._videoSegmentInfoList.getLastSampleBefore(f);if(null!=p){var m=f-(p.originalDts+p.duration);m<=3&&(m=0),o=f-(p.dts+p.duration+m)}else o=0}for(var g=new R.Yy,v=[],y=0;y=1?v[v.length-1].duration:Math.floor(this._videoMeta.refSampleDuration);if(S){var T=new R.Wk(A,w,O,_.dts,!0);T.fileposition=_.fileposition,g.appendSyncPoint(T)}v.push({dts:A,pts:w,cts:L,units:_.units,size:_.length,isKeyframe:S,duration:O,originalDts:E,flags:{isLeading:0,dependsOn:S?2:1,isDependedOn:S?1:0,hasRedundancy:0,isNonSync:S?0:1}})}(d=new Uint8Array(l))[0]=l>>>24&255,d[1]=l>>>16&255,d[2]=l>>>8&255,d[3]=255&l,d.set(b.types.mdat,4);for(y=0;y0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,r=this._demuxer.parseChunks(e,t);else if((n=y.probe(e)).match){this._demuxer=new y(n,this._config),this._remuxer||(this._remuxer=new A(this._config));var o=this._mediaDataSource;null==o.duration||isNaN(o.duration)||(this._demuxer.overridedDuration=o.duration),"boolean"==typeof o.hasAudio&&(this._demuxer.overridedHasAudio=o.hasAudio),"boolean"==typeof o.hasVideo&&(this._demuxer.overridedHasVideo=o.hasVideo),this._demuxer.timestampBase=o.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._demuxer.onMetaDataArrived=this._onMetaDataArrived.bind(this),this._demuxer.onScriptDataArrived=this._onScriptDataArrived.bind(this),this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this),r=this._demuxer.parseChunks(e,t)}else n=null,s.Z.e(this.TAG,"Non-FLV, Unsupported media type!"),Promise.resolve().then((function(){i._internalAbort()})),this._emitter.emit(w.Z.DEMUX_ERROR,g.Z.FORMAT_UNSUPPORTED,"Non-FLV, Unsupported media type"),r=0;return r},e.prototype._onMediaInfo=function(e){var t=this;null==this._mediaInfo&&(this._mediaInfo=Object.assign({},e),this._mediaInfo.keyframesIndex=null,this._mediaInfo.segments=[],this._mediaInfo.segmentCount=this._mediaDataSource.segments.length,Object.setPrototypeOf(this._mediaInfo,a.Z.prototype));var i=Object.assign({},e);Object.setPrototypeOf(i,a.Z.prototype),this._mediaInfo.segments[this._currentSegmentIndex]=i,this._reportSegmentMediaInfo(this._currentSegmentIndex),null!=this._pendingSeekTime&&Promise.resolve().then((function(){var e=t._pendingSeekTime;t._pendingSeekTime=null,t.seek(e)}))},e.prototype._onMetaDataArrived=function(e){this._emitter.emit(w.Z.METADATA_ARRIVED,e)},e.prototype._onScriptDataArrived=function(e){this._emitter.emit(w.Z.SCRIPTDATA_ARRIVED,e)},e.prototype._onIOSeeked=function(){this._remuxer.insertDiscontinuity()},e.prototype._onIOComplete=function(e){var t=e+1;t0&&i[0].originalDts===n&&(n=i[0].pts),this._emitter.emit(w.Z.RECOMMEND_SEEKPOINT,n)}},e.prototype._enableStatisticsReporter=function(){null==this._statisticsReporter&&(this._statisticsReporter=self.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval))},e.prototype._disableStatisticsReporter=function(){this._statisticsReporter&&(self.clearInterval(this._statisticsReporter),this._statisticsReporter=null)},e.prototype._reportSegmentMediaInfo=function(e){var t=this._mediaInfo.segments[e],i=Object.assign({},t);i.duration=this._mediaInfo.duration,i.segmentCount=this._mediaInfo.segmentCount,delete i.segments,delete i.keyframesIndex,this._emitter.emit(w.Z.MEDIA_INFO,i)},e.prototype._reportStatisticsInfo=function(){var e={};e.url=this._ioctl.currentURL,e.hasRedirect=this._ioctl.hasRedirect,e.hasRedirect&&(e.redirectedURL=this._ioctl.currentRedirectedURL),e.speed=this._ioctl.currentSpeed,e.loaderType=this._ioctl.loaderType,e.currentSegmentIndex=this._currentSegmentIndex,e.totalSegmentCount=this._mediaDataSource.segments.length,this._emitter.emit(w.Z.STATISTICS_INFO,e)},e}())},257:function(e,t){"use strict";t.Z={IO_ERROR:"io_error",DEMUX_ERROR:"demux_error",INIT_SEGMENT:"init_segment",MEDIA_SEGMENT:"media_segment",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",METADATA_ARRIVED:"metadata_arrived",SCRIPTDATA_ARRIVED:"scriptdata_arrived",STATISTICS_INFO:"statistics_info",RECOMMEND_SEEKPOINT:"recommend_seekpoint"}},82:function(e,t,i){"use strict";i(300),i(846),i(219),i(18),i(257)},600:function(e,t){"use strict";t.Z={OK:"OK",FORMAT_ERROR:"FormatError",FORMAT_UNSUPPORTED:"FormatUnsupported",CODEC_UNSUPPORTED:"CodecUnsupported"}},60:function(e,t,i){"use strict";i.d(t,{default:function(){return B}});var n=i(219),r=i(34),s={enableWorker:!1,enableStashBuffer:!0,stashInitialSize:void 0,isLive:!1,lazyLoad:!0,lazyLoadMaxDuration:180,lazyLoadRecoverDuration:30,deferLoadAfterSourceOpen:!0,autoCleanupMaxBackwardDuration:180,autoCleanupMinBackwardDuration:120,statisticsInfoReportInterval:600,fixAudioTimestampGap:!0,accurateSeek:!1,seekType:"range",seekParamStart:"bstart",seekParamEnd:"bend",rangeLoadZeroStart:!1,customSeekHandler:void 0,reuseRedirectedURL:!1,headers:void 0,customLoader:void 0};function o(){return Object.assign({},s)}var a=function(){function e(){}return e.supportMSEH264Playback=function(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')},e.supportMSEH265Playback=function(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="hvc1.1.6.L93.B0"')},e.supportNetworkStreamIO=function(){var e=new r.Z({},o()),t=e.loaderType;return e.destroy(),"fetch-stream-loader"==t||"xhr-moz-chunked-loader"==t},e.getNetworkLoaderTypeName=function(){var e=new r.Z({},o()),t=e.loaderType;return e.destroy(),t},e.supportNativeMediaPlayback=function(t){null==e.videoElement&&(e.videoElement=window.document.createElement("video"));var i=e.videoElement.canPlayType(t);return"probably"===i||"maybe"==i},e.getFeatureList=function(){var t={mseFlvPlayback:!1,mseLiveFlvPlayback:!1,networkStreamIO:!1,networkLoaderName:"",nativeMP4H264Playback:!1,nativeMP4H265Playback:!1,nativeWebmVP8Playback:!1,nativeWebmVP9Playback:!1};return t.mseFlvPlayback=e.supportMSEH264Playback(),t.networkStreamIO=e.supportNetworkStreamIO(),t.networkLoaderName=e.getNetworkLoaderTypeName(),t.mseLiveFlvPlayback=t.mseFlvPlayback&&t.networkStreamIO,t.nativeMP4H264Playback=e.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"'),t.nativeMP4H265Playback=e.supportNativeMediaPlayback('video/mp4; codecs="hvc1.1.6.L93.B0"'),t.nativeWebmVP8Playback=e.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"'),t.nativeWebmVP9Playback=e.supportNativeMediaPlayback('video/webm; codecs="vp9"'),t},e}(),h=a,u=i(939),d=i(716),l=i.n(d),c=i(300),_=i(538),f={ERROR:"error",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",METADATA_ARRIVED:"metadata_arrived",SCRIPTDATA_ARRIVED:"scriptdata_arrived",STATISTICS_INFO:"statistics_info",PROGRESS:"progress"},p=i(397),m=i.n(p),g=i(846),v=i(18),y=i(257),E=(i(82),i(118)),b=function(){function e(e,t){if(this.TAG="Transmuxer",this._emitter=new(l()),t.enableWorker&&"undefined"!=typeof Worker)try{this._worker=m()(82),this._workerDestroying=!1,this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",param:[e,t]}),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this)},g.Z.registerListener(this.e.onLoggingConfigChanged),this._worker.postMessage({cmd:"logging_config",param:g.Z.getConfig()})}catch(i){c.Z.e(this.TAG,"Error while initialize transmuxing worker, fallback to inline transmuxing"),this._worker=null,this._controller=new v.Z(e,t)}else this._controller=new v.Z(e,t);if(this._controller){var i=this._controller;i.on(y.Z.IO_ERROR,this._onIOError.bind(this)),i.on(y.Z.DEMUX_ERROR,this._onDemuxError.bind(this)),i.on(y.Z.INIT_SEGMENT,this._onInitSegment.bind(this)),i.on(y.Z.MEDIA_SEGMENT,this._onMediaSegment.bind(this)),i.on(y.Z.LOADING_COMPLETE,this._onLoadingComplete.bind(this)),i.on(y.Z.RECOVERED_EARLY_EOF,this._onRecoveredEarlyEof.bind(this)),i.on(y.Z.MEDIA_INFO,this._onMediaInfo.bind(this)),i.on(y.Z.METADATA_ARRIVED,this._onMetaDataArrived.bind(this)),i.on(y.Z.SCRIPTDATA_ARRIVED,this._onScriptDataArrived.bind(this)),i.on(y.Z.STATISTICS_INFO,this._onStatisticsInfo.bind(this)),i.on(y.Z.RECOMMEND_SEEKPOINT,this._onRecommendSeekpoint.bind(this))}}return e.prototype.destroy=function(){this._worker?this._workerDestroying||(this._workerDestroying=!0,this._worker.postMessage({cmd:"destroy"}),g.Z.removeListener(this.e.onLoggingConfigChanged),this.e=null):(this._controller.destroy(),this._controller=null),this._emitter.removeAllListeners(),this._emitter=null},e.prototype.on=function(e,t){this._emitter.addListener(e,t)},e.prototype.off=function(e,t){this._emitter.removeListener(e,t)},e.prototype.hasWorker=function(){return null!=this._worker},e.prototype.open=function(){this._worker?this._worker.postMessage({cmd:"start"}):this._controller.start()},e.prototype.close=function(){this._worker?this._worker.postMessage({cmd:"stop"}):this._controller.stop()},e.prototype.seek=function(e){this._worker?this._worker.postMessage({cmd:"seek",param:e}):this._controller.seek(e)},e.prototype.pause=function(){this._worker?this._worker.postMessage({cmd:"pause"}):this._controller.pause()},e.prototype.resume=function(){this._worker?this._worker.postMessage({cmd:"resume"}):this._controller.resume()},e.prototype._onInitSegment=function(e,t){var i=this;Promise.resolve().then((function(){i._emitter.emit(y.Z.INIT_SEGMENT,e,t)}))},e.prototype._onMediaSegment=function(e,t){var i=this;Promise.resolve().then((function(){i._emitter.emit(y.Z.MEDIA_SEGMENT,e,t)}))},e.prototype._onLoadingComplete=function(){var e=this;Promise.resolve().then((function(){e._emitter.emit(y.Z.LOADING_COMPLETE)}))},e.prototype._onRecoveredEarlyEof=function(){var e=this;Promise.resolve().then((function(){e._emitter.emit(y.Z.RECOVERED_EARLY_EOF)}))},e.prototype._onMediaInfo=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(y.Z.MEDIA_INFO,e)}))},e.prototype._onMetaDataArrived=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(y.Z.METADATA_ARRIVED,e)}))},e.prototype._onScriptDataArrived=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(y.Z.SCRIPTDATA_ARRIVED,e)}))},e.prototype._onStatisticsInfo=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(y.Z.STATISTICS_INFO,e)}))},e.prototype._onIOError=function(e,t){var i=this;Promise.resolve().then((function(){i._emitter.emit(y.Z.IO_ERROR,e,t)}))},e.prototype._onDemuxError=function(e,t){var i=this;Promise.resolve().then((function(){i._emitter.emit(y.Z.DEMUX_ERROR,e,t)}))},e.prototype._onRecommendSeekpoint=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(y.Z.RECOMMEND_SEEKPOINT,e)}))},e.prototype._onLoggingConfigChanged=function(e){this._worker&&this._worker.postMessage({cmd:"logging_config",param:e})},e.prototype._onWorkerMessage=function(e){var t=e.data,i=t.data;if("destroyed"===t.msg||this._workerDestroying)return this._workerDestroying=!1,this._worker.terminate(),void(this._worker=null);switch(t.msg){case y.Z.INIT_SEGMENT:case y.Z.MEDIA_SEGMENT:this._emitter.emit(t.msg,i.type,i.data);break;case y.Z.LOADING_COMPLETE:case y.Z.RECOVERED_EARLY_EOF:this._emitter.emit(t.msg);break;case y.Z.MEDIA_INFO:Object.setPrototypeOf(i,E.Z.prototype),this._emitter.emit(t.msg,i);break;case y.Z.METADATA_ARRIVED:case y.Z.SCRIPTDATA_ARRIVED:case y.Z.STATISTICS_INFO:this._emitter.emit(t.msg,i);break;case y.Z.IO_ERROR:case y.Z.DEMUX_ERROR:this._emitter.emit(t.msg,i.type,i.info);break;case y.Z.RECOMMEND_SEEKPOINT:this._emitter.emit(t.msg,i);break;case"logcat_callback":c.Z.emitter.emit("log",i.type,i.logcat)}},e}(),S={ERROR:"error",SOURCE_OPEN:"source_open",UPDATE_END:"update_end",BUFFER_FULL:"buffer_full",VIDEO_TYPE:"video_type"},R=i(51),A=i(29),L=function(){function e(e){this.TAG="MSEController",this._config=e,this._emitter=new(l()),this._config.isLive&&null==this._config.autoCleanupSourceBuffer&&(this._config.autoCleanupSourceBuffer=!0),this.e={onSourceOpen:this._onSourceOpen.bind(this),onSourceEnded:this._onSourceEnded.bind(this),onSourceClose:this._onSourceClose.bind(this),onSourceBufferError:this._onSourceBufferError.bind(this),onSourceBufferUpdateEnd:this._onSourceBufferUpdateEnd.bind(this)},this._mediaSource=null,this._mediaSourceObjectURL=null,this._mediaElement=null,this._isBufferFull=!1,this._hasPendingEos=!1,this._requireSetMediaDuration=!1,this._pendingMediaDuration=0,this._pendingSourceBufferInit=[],this._mimeTypes={video:null,audio:null},this._sourceBuffers={video:null,audio:null},this._lastInitSegments={video:null,audio:null},this._pendingSegments={video:[],audio:[]},this._pendingRemoveRanges={video:[],audio:[]},this._idrList=new R.Vn}return e.prototype.destroy=function(){(this._mediaElement||this._mediaSource)&&this.detachMediaElement(),this.e=null,this._emitter.removeAllListeners(),this._emitter=null},e.prototype.on=function(e,t){this._emitter.addListener(e,t)},e.prototype.off=function(e,t){this._emitter.removeListener(e,t)},e.prototype.attachMediaElement=function(e){if(this._mediaSource)throw new A.rT("MediaSource has been attached to an HTMLMediaElement!");var t=this._mediaSource=new window.MediaSource;t.addEventListener("sourceopen",this.e.onSourceOpen),t.addEventListener("sourceended",this.e.onSourceEnded),t.addEventListener("sourceclose",this.e.onSourceClose),this._mediaElement=e,this._mediaSourceObjectURL=window.URL.createObjectURL(this._mediaSource),e.src=this._mediaSourceObjectURL},e.prototype.detachMediaElement=function(){if(this._mediaSource){var e=this._mediaSource;for(var t in this._sourceBuffers){var i=this._pendingSegments[t];i.splice(0,i.length),this._pendingSegments[t]=null,this._pendingRemoveRanges[t]=null,this._lastInitSegments[t]=null;var n=this._sourceBuffers[t];if(n){if("closed"!==e.readyState){try{e.removeSourceBuffer(n)}catch(e){c.Z.e(this.TAG,e.message)}n.removeEventListener("error",this.e.onSourceBufferError),n.removeEventListener("updateend",this.e.onSourceBufferUpdateEnd)}this._mimeTypes[t]=null,this._sourceBuffers[t]=null}}if("open"===e.readyState)try{e.endOfStream()}catch(e){c.Z.e(this.TAG,e.message)}e.removeEventListener("sourceopen",this.e.onSourceOpen),e.removeEventListener("sourceended",this.e.onSourceEnded),e.removeEventListener("sourceclose",this.e.onSourceClose),this._pendingSourceBufferInit=[],this._isBufferFull=!1,this._idrList.clear(),this._mediaSource=null}this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement=null),this._mediaSourceObjectURL&&(window.URL.revokeObjectURL(this._mediaSourceObjectURL),this._mediaSourceObjectURL=null)},e.prototype.appendInitSegment=function(e,t){var i=this;if(!this._mediaSource||"open"!==this._mediaSource.readyState)return this._pendingSourceBufferInit.push(e),void this._pendingSegments[e.type].push(e);var n=e,r="".concat(n.container);n.codec&&n.codec.length>0&&(r+=";codecs=".concat(n.codec));var s=!1;if(c.Z.v(this.TAG,"Received Initialization Segment, mimeType: "+r),r.includes("video/mp4;")&&setTimeout((function(){return i._emitter.emit(S.VIDEO_TYPE,r)}),500),this._lastInitSegments[n.type]=n,r!==this._mimeTypes[n.type]){if(this._mimeTypes[n.type])c.Z.v(this.TAG,"Notice: ".concat(n.type," mimeType changed, origin: ").concat(this._mimeTypes[n.type],", target: ").concat(r));else{s=!0;try{var o=this._sourceBuffers[n.type]=this._mediaSource.addSourceBuffer(r);o.addEventListener("error",this.e.onSourceBufferError),o.addEventListener("updateend",this.e.onSourceBufferUpdateEnd)}catch(e){return c.Z.e(this.TAG,e.message),void this._emitter.emit(S.ERROR,{code:e.code,msg:e.message})}}this._mimeTypes[n.type]=r}t||this._pendingSegments[n.type].push(n),s||this._sourceBuffers[n.type]&&!this._sourceBuffers[n.type].updating&&this._doAppendSegments(),_.Z.safari&&"audio/mpeg"===n.container&&n.mediaDuration>0&&(this._requireSetMediaDuration=!0,this._pendingMediaDuration=n.mediaDuration/1e3,this._updateMediaSourceDuration())},e.prototype.appendMediaSegment=function(e){var t=e;this._pendingSegments[t.type].push(t),this._config.autoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer();var i=this._sourceBuffers[t.type];!i||i.updating||this._hasPendingRemoveRanges()||this._doAppendSegments()},e.prototype.seek=function(e){for(var t in this._sourceBuffers)if(this._sourceBuffers[t]){var i=this._sourceBuffers[t];if("open"===this._mediaSource.readyState)try{i.abort()}catch(e){c.Z.e(this.TAG,e.message)}this._idrList.clear();var n=this._pendingSegments[t];if(n.splice(0,n.length),"closed"!==this._mediaSource.readyState){for(var r=0;r=1&&e-n.start(0)>=this._config.autoCleanupMaxBackwardDuration)return!0}}return!1},e.prototype._doCleanupSourceBuffer=function(){var e=this._mediaElement.currentTime;for(var t in this._sourceBuffers){var i=this._sourceBuffers[t];if(i){for(var n=i.buffered,r=!1,s=0;s=this._config.autoCleanupMaxBackwardDuration){r=!0;var h=e-this._config.autoCleanupMinBackwardDuration;this._pendingRemoveRanges[t].push({start:o,end:h})}}else a0&&(isNaN(t)||i>t)&&(c.Z.v(this.TAG,"Update MediaSource duration from ".concat(t," to ").concat(i)),this._mediaSource.duration=i),this._requireSetMediaDuration=!1,this._pendingMediaDuration=0}},e.prototype._doRemoveRanges=function(){for(var e in this._pendingRemoveRanges)if(this._sourceBuffers[e]&&!this._sourceBuffers[e].updating)for(var t=this._sourceBuffers[e],i=this._pendingRemoveRanges[e];i.length&&!t.updating;){var n=i.shift();t.remove(n.start,n.end)}},e.prototype._doAppendSegments=function(){var e=this._pendingSegments;for(var t in e)if(this._sourceBuffers[t]&&!this._sourceBuffers[t].updating&&e[t].length>0){var i=e[t].shift();if(i.timestampOffset){var n=this._sourceBuffers[t].timestampOffset,r=i.timestampOffset/1e3;Math.abs(n-r)>.1&&(c.Z.v(this.TAG,"Update MPEG audio timestampOffset from ".concat(n," to ").concat(r)),this._sourceBuffers[t].timestampOffset=r),delete i.timestampOffset}if(!i.data||0===i.data.byteLength)continue;try{this._sourceBuffers[t].appendBuffer(i.data),this._isBufferFull=!1,"video"===t&&i.hasOwnProperty("info")&&this._idrList.appendArray(i.info.syncPoints)}catch(e){this._pendingSegments[t].unshift(i),22===e.code?(this._isBufferFull||this._emitter.emit(S.BUFFER_FULL),this._isBufferFull=!0):(c.Z.e(this.TAG,t,e.message),this._emitter.emit(S.ERROR,{code:e.code,msg:e.message}))}}},e.prototype._onSourceOpen=function(){if(c.Z.v(this.TAG,"MediaSource onSourceOpen"),this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._pendingSourceBufferInit.length>0)for(var e=this._pendingSourceBufferInit;e.length;){var t=e.shift();this.appendInitSegment(t,!0)}this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(S.SOURCE_OPEN)},e.prototype._onSourceEnded=function(){c.Z.v(this.TAG,"MediaSource onSourceEnded")},e.prototype._onSourceClose=function(){c.Z.v(this.TAG,"MediaSource onSourceClose"),this._mediaSource&&null!=this.e&&(this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._mediaSource.removeEventListener("sourceended",this.e.onSourceEnded),this._mediaSource.removeEventListener("sourceclose",this.e.onSourceClose))},e.prototype._hasPendingSegments=function(){var e=this._pendingSegments;return(e.video&&e.video.length)>0||e.audio&&e.audio.length>0},e.prototype._hasPendingRemoveRanges=function(){var e=this._pendingRemoveRanges;return(e.video&&e.video.length)>0||e.audio&&e.audio.length>0},e.prototype._onSourceBufferUpdateEnd=function(){this._requireSetMediaDuration?this._updateMediaSourceDuration():this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this._hasPendingEos&&this.endOfStream(),this._emitter.emit(S.UPDATE_END)},e.prototype._onSourceBufferError=function(e){c.Z.e(this.TAG,"SourceBuffer Error: ".concat(e))},e}(),w=i(600),O={NETWORK_ERROR:"NetworkError",MEDIA_ERROR:"MediaError",OTHER_ERROR:"OtherError"},T={NETWORK_EXCEPTION:u.nm.EXCEPTION,NETWORK_STATUS_CODE_INVALID:u.nm.HTTP_STATUS_CODE_INVALID,NETWORK_TIMEOUT:u.nm.CONNECTING_TIMEOUT,NETWORK_UNRECOVERABLE_EARLY_EOF:u.nm.UNRECOVERABLE_EARLY_EOF,MEDIA_MSE_ERROR:"MediaMSEError",MEDIA_FORMAT_ERROR:w.Z.FORMAT_ERROR,MEDIA_FORMAT_UNSUPPORTED:w.Z.FORMAT_UNSUPPORTED,MEDIA_CODEC_UNSUPPORTED:w.Z.CODEC_UNSUPPORTED},C=function(){function e(e,t){if(this.TAG="FlvPlayer",this._type="FlvPlayer",this._emitter=new(l()),this._config=o(),"object"==typeof t&&Object.assign(this._config,t),"flv"!==e.type.toLowerCase())throw new A.OC("FlvPlayer requires an flv MediaDataSource input!");!0===e.isLive&&(this._config.isLive=!0),this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this),onvSeeking:this._onvSeeking.bind(this),onvCanPlay:this._onvCanPlay.bind(this),onvStalled:this._onvStalled.bind(this),onvProgress:this._onvProgress.bind(this)},self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now,this._pendingSeekTime=null,this._requestSetTime=!1,this._seekpointRecord=null,this._progressChecker=null,this._mediaDataSource=e,this._mediaElement=null,this._msectl=null,this._transmuxer=null,this._mseSourceOpened=!1,this._hasPendingLoad=!1,this._receivedCanPlay=!1,this._mediaInfo=null,this._statisticsInfo=null;var i=_.Z.chrome&&(_.Z.version.major<50||50===_.Z.version.major&&_.Z.version.build<2661);this._alwaysSeekKeyframe=!!(i||_.Z.msedge||_.Z.msie),this._alwaysSeekKeyframe&&(this._config.accurateSeek=!1)}return e.prototype.destroy=function(){null!=this._progressChecker&&(window.clearInterval(this._progressChecker),this._progressChecker=null),this._transmuxer&&this.unload(),this._mediaElement&&this.detachMediaElement(),this.e=null,this._mediaDataSource=null,this._emitter.removeAllListeners(),this._emitter=null},e.prototype.on=function(e,t){var i=this;e===f.MEDIA_INFO?null!=this._mediaInfo&&Promise.resolve().then((function(){i._emitter.emit(f.MEDIA_INFO,i.mediaInfo)})):e===f.STATISTICS_INFO&&null!=this._statisticsInfo&&Promise.resolve().then((function(){i._emitter.emit(f.STATISTICS_INFO,i.statisticsInfo)})),this._emitter.addListener(e,t)},e.prototype.off=function(e,t){this._emitter.removeListener(e,t)},e.prototype.attachMediaElement=function(e){var t=this;if(this._mediaElement=e,e.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),e.addEventListener("seeking",this.e.onvSeeking),e.addEventListener("canplay",this.e.onvCanPlay),e.addEventListener("stalled",this.e.onvStalled),e.addEventListener("progress",this.e.onvProgress),this._msectl=new L(this._config),this._msectl.on(S.UPDATE_END,this._onmseUpdateEnd.bind(this)),this._msectl.on(S.BUFFER_FULL,this._onmseBufferFull.bind(this)),this._msectl.on(S.SOURCE_OPEN,(function(){t._mseSourceOpened=!0,t._hasPendingLoad&&(t._hasPendingLoad=!1,t.load())})),this._msectl.on(S.ERROR,(function(e){t._emitter.emit(f.ERROR,O.MEDIA_ERROR,T.MEDIA_MSE_ERROR,e)})),this._msectl.on(S.VIDEO_TYPE,(function(e){t._emitter.emit(S.VIDEO_TYPE,e)})),this._msectl.attachMediaElement(e),null!=this._pendingSeekTime)try{e.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(e){}},e.prototype.detachMediaElement=function(){this._mediaElement&&(this._msectl.detachMediaElement(),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement.removeEventListener("seeking",this.e.onvSeeking),this._mediaElement.removeEventListener("canplay",this.e.onvCanPlay),this._mediaElement.removeEventListener("stalled",this.e.onvStalled),this._mediaElement.removeEventListener("progress",this.e.onvProgress),this._mediaElement=null),this._msectl&&(this._msectl.destroy(),this._msectl=null)},e.prototype.load=function(){var e=this;if(!this._mediaElement)throw new A.rT("HTMLMediaElement must be attached before load()!");if(this._transmuxer)throw new A.rT("FlvPlayer.load() has been called, please call unload() first!");this._hasPendingLoad||(this._config.deferLoadAfterSourceOpen&&!1===this._mseSourceOpened?this._hasPendingLoad=!0:(this._mediaElement.readyState>0&&(this._requestSetTime=!0,this._mediaElement.currentTime=0),this._transmuxer=new b(this._mediaDataSource,this._config),this._transmuxer.on(y.Z.INIT_SEGMENT,(function(t,i){e._msectl.appendInitSegment(i)})),this._transmuxer.on(y.Z.MEDIA_SEGMENT,(function(t,i){if(e._msectl.appendMediaSegment(i),e._config.lazyLoad&&!e._config.isLive){var n=e._mediaElement.currentTime;i.info.endDts>=1e3*(n+e._config.lazyLoadMaxDuration)&&null==e._progressChecker&&(c.Z.v(e.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),e._suspendTransmuxer())}})),this._transmuxer.on(y.Z.LOADING_COMPLETE,(function(){e._msectl.endOfStream(),e._emitter.emit(f.LOADING_COMPLETE)})),this._transmuxer.on(y.Z.RECOVERED_EARLY_EOF,(function(){e._emitter.emit(f.RECOVERED_EARLY_EOF)})),this._transmuxer.on(y.Z.IO_ERROR,(function(t,i){e._emitter.emit(f.ERROR,O.NETWORK_ERROR,t,i)})),this._transmuxer.on(y.Z.DEMUX_ERROR,(function(t,i){e._emitter.emit(f.ERROR,O.MEDIA_ERROR,t,{code:-1,msg:i})})),this._transmuxer.on(y.Z.MEDIA_INFO,(function(t){e._mediaInfo=t,e._emitter.emit(f.MEDIA_INFO,Object.assign({},t))})),this._transmuxer.on(y.Z.METADATA_ARRIVED,(function(t){e._emitter.emit(f.METADATA_ARRIVED,t)})),this._transmuxer.on(y.Z.SCRIPTDATA_ARRIVED,(function(t){e._emitter.emit(f.SCRIPTDATA_ARRIVED,t)})),this._transmuxer.on(y.Z.STATISTICS_INFO,(function(t){e._statisticsInfo=e._fillStatisticsInfo(t),e._emitter.emit(f.STATISTICS_INFO,Object.assign({},e._statisticsInfo))})),this._transmuxer.on(y.Z.RECOMMEND_SEEKPOINT,(function(t){e._mediaElement&&!e._config.accurateSeek&&(e._requestSetTime=!0,e._mediaElement.currentTime=t/1e3)})),this._transmuxer.open()))},e.prototype.unload=function(){this._mediaElement&&this._mediaElement.pause(),this._msectl&&this._msectl.seek(0),this._transmuxer&&(this._transmuxer.close(),this._transmuxer.destroy(),this._transmuxer=null)},e.prototype.play=function(){return this._mediaElement.play()},e.prototype.pause=function(){this._mediaElement.pause()},Object.defineProperty(e.prototype,"type",{get:function(){return this._type},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"buffered",{get:function(){return this._mediaElement.buffered},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"duration",{get:function(){return this._mediaElement.duration},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"volume",{get:function(){return this._mediaElement.volume},set:function(e){this._mediaElement.volume=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"muted",{get:function(){return this._mediaElement.muted},set:function(e){this._mediaElement.muted=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"speed",{get:function(){return this._mediaElement.playbackRate},set:function(e){this._mediaElement.playbackRate=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentTime",{get:function(){return this._mediaElement?this._mediaElement.currentTime:0},set:function(e){this._mediaElement?this._internalSeek(e):this._pendingSeekTime=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"mediaInfo",{get:function(){return Object.assign({},this._mediaInfo)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"statisticsInfo",{get:function(){return null==this._statisticsInfo&&(this._statisticsInfo={}),this._statisticsInfo=this._fillStatisticsInfo(this._statisticsInfo),Object.assign({},this._statisticsInfo)},enumerable:!1,configurable:!0}),e.prototype._fillStatisticsInfo=function(e){if(e.playerType=this._type,!(this._mediaElement instanceof HTMLVideoElement))return e;var t=!0,i=0,n=0;if(this._mediaElement.getVideoPlaybackQuality){var r=this._mediaElement.getVideoPlaybackQuality();i=r.totalVideoFrames,n=r.droppedVideoFrames}else null!=this._mediaElement.webkitDecodedFrameCount?(i=this._mediaElement.webkitDecodedFrameCount,n=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=n),e},e.prototype._onmseUpdateEnd=function(){if(this._config.lazyLoad&&!this._config.isLive){for(var e=this._mediaElement.buffered,t=this._mediaElement.currentTime,i=0,n=0;n=t+this._config.lazyLoadMaxDuration&&null==this._progressChecker&&(c.Z.v(this.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),this._suspendTransmuxer())}},e.prototype._onmseBufferFull=function(){c.Z.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),null==this._progressChecker&&this._suspendTransmuxer()},e.prototype._suspendTransmuxer=function(){this._transmuxer&&(this._transmuxer.pause(),null==this._progressChecker&&(this._progressChecker=window.setInterval(this._checkProgressAndResume.bind(this),1e3)))},e.prototype._checkProgressAndResume=function(){for(var e=this._mediaElement.currentTime,t=this._mediaElement.buffered,i=!1,n=0;n=r&&e=s-this._config.lazyLoadRecoverDuration&&(i=!0);break}}i&&(window.clearInterval(this._progressChecker),this._progressChecker=null,i&&(c.Z.v(this.TAG,"Continue loading from paused position"),this._transmuxer.resume()))},e.prototype._isTimepointBuffered=function(e){for(var t=this._mediaElement.buffered,i=0;i=n&&e0){var r=this._mediaElement.buffered.start(0);(r<1&&e0&&t.currentTime0){var n=i.start(0);if(n<1&&t0&&(this._mediaElement.currentTime=0),this._mediaElement.preload="auto",this._mediaElement.load(),this._statisticsReporter=window.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval)},e.prototype.unload=function(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src")),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)},e.prototype.play=function(){return this._mediaElement.play()},e.prototype.pause=function(){this._mediaElement.pause()},Object.defineProperty(e.prototype,"type",{get:function(){return this._type},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"buffered",{get:function(){return this._mediaElement.buffered},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"duration",{get:function(){return this._mediaElement.duration},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"volume",{get:function(){return this._mediaElement.volume},set:function(e){this._mediaElement.volume=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"muted",{get:function(){return this._mediaElement.muted},set:function(e){this._mediaElement.muted=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"speed",{get:function(){return this._mediaElement.playbackRate},set:function(e){this._mediaElement.playbackRate=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentTime",{get:function(){return this._mediaElement?this._mediaElement.currentTime:0},set:function(e){this._mediaElement?this._mediaElement.currentTime=e:this._pendingSeekTime=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"mediaInfo",{get:function(){var e={mimeType:(this._mediaElement instanceof HTMLAudioElement?"audio/":"video/")+this._mediaDataSource.type};return this._mediaElement&&(e.duration=Math.floor(1e3*this._mediaElement.duration),this._mediaElement instanceof HTMLVideoElement&&(e.width=this._mediaElement.videoWidth,e.height=this._mediaElement.videoHeight)),e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"statisticsInfo",{get:function(){var e={playerType:this._type,url:this._mediaDataSource.url};if(!(this._mediaElement instanceof HTMLVideoElement))return e;var t=!0,i=0,n=0;if(this._mediaElement.getVideoPlaybackQuality){var r=this._mediaElement.getVideoPlaybackQuality();i=r.totalVideoFrames,n=r.droppedVideoFrames}else null!=this._mediaElement.webkitDecodedFrameCount?(i=this._mediaElement.webkitDecodedFrameCount,n=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=n),e},enumerable:!1,configurable:!0}),e.prototype._onvLoadedMetadata=function(e){null!=this._pendingSeekTime&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null),this._emitter.emit(f.MEDIA_INFO,this.mediaInfo)},e.prototype._reportStatisticsInfo=function(){this._emitter.emit(f.STATISTICS_INFO,this.statisticsInfo)},e}();n.Z.install();var D={createPlayer:function(e,t){var i=e;if(null==i||"object"!=typeof i)throw new A.OC("MediaDataSource must be an javascript object!");if(!i.hasOwnProperty("type"))throw new A.OC("MediaDataSource must has type field to indicate video file type!");return"flv"===i.type?new C(i,t):new k(i,t)},isSupported:function(){return h.supportMSEH264Playback()},getFeatureList:function(){return h.getFeatureList()}};D.BaseLoader=u.fp,D.LoaderStatus=u.GM,D.LoaderErrors=u.nm,D.Events=f,D.ErrorTypes=O,D.ErrorDetails=T,D.FlvPlayer=C,D.NativePlayer=k,D.LoggingControl=g.Z,Object.defineProperty(D,"version",{enumerable:!0,get:function(){return"1.7.4"}}),window.flv265=D;var B=D},324:function(e,t,i){e.exports=i(60).default},34:function(e,t,i){"use strict";i.d(t,{Z:function(){return E}});var n,r=i(300),s=function(){function e(){this._firstCheckpoint=0,this._lastCheckpoint=0,this._intervalBytes=0,this._totalBytes=0,this._lastSecondBytes=0,self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now}return e.prototype.reset=function(){this._firstCheckpoint=this._lastCheckpoint=0,this._totalBytes=this._intervalBytes=0,this._lastSecondBytes=0},e.prototype.addBytes=function(e){0===this._firstCheckpoint?(this._firstCheckpoint=this._now(),this._lastCheckpoint=this._firstCheckpoint,this._intervalBytes+=e,this._totalBytes+=e):this._now()-this._lastCheckpoint<1e3?(this._intervalBytes+=e,this._totalBytes+=e):(this._lastSecondBytes=this._intervalBytes,this._intervalBytes=e,this._totalBytes+=e,this._lastCheckpoint=this._now())},Object.defineProperty(e.prototype,"currentKBps",{get:function(){this.addBytes(0);var e=(this._now()-this._lastCheckpoint)/1e3;return 0==e&&(e=1),this._intervalBytes/e/1024},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"lastSecondKBps",{get:function(){return this.addBytes(0),0!==this._lastSecondBytes?this._lastSecondBytes/1024:this._now()-this._lastCheckpoint>=500?this.currentKBps:0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"averageKBps",{get:function(){var e=(this._now()-this._firstCheckpoint)/1e3;return this._totalBytes/e/1024},enumerable:!1,configurable:!0}),e}(),o=i(939),a=i(538),h=i(29),u=(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),d=function(e){function t(t,i){var n=e.call(this,"fetch-stream-loader")||this;return n.TAG="FetchStreamLoader",n._seekHandler=t,n._config=i,n._needStash=!0,n._requestAbort=!1,n._contentLength=null,n._receivedLength=0,n}return u(t,e),t.isSupported=function(){try{var e=a.Z.msedge&&a.Z.version.minor>=15048,t=!a.Z.msedge||e;return self.fetch&&self.ReadableStream&&t}catch(e){return!1}},t.prototype.destroy=function(){this.isWorking()&&this.abort(),e.prototype.destroy.call(this)},t.prototype.open=function(e,t){var i=this;this._dataSource=e,this._range=t;var n=e.url;this._config.reuseRedirectedURL&&null!=e.redirectedURL&&(n=e.redirectedURL);var r=this._seekHandler.getConfig(n,t),s=new self.Headers;if("object"==typeof r.headers){var a=r.headers;for(var u in a)a.hasOwnProperty(u)&&s.append(u,a[u])}var d={method:"GET",headers:s,mode:"cors",cache:"default",referrerPolicy:"no-referrer-when-downgrade"};if("object"==typeof this._config.headers)for(var u in this._config.headers)s.append(u,this._config.headers[u]);!1===e.cors&&(d.mode="same-origin"),e.withCredentials&&(d.credentials="include"),e.referrerPolicy&&(d.referrerPolicy=e.referrerPolicy),self.AbortController&&(this._abortController=new self.AbortController,d.signal=this._abortController.signal),this._status=o.GM.kConnecting,self.fetch(r.url,d).then((function(e){if(i._requestAbort)return i._status=o.GM.kIdle,void e.body.cancel();if(e.ok&&e.status>=200&&e.status<=299){if(e.url!==r.url&&i._onURLRedirect){var t=i._seekHandler.removeURLParameters(e.url);i._onURLRedirect(t)}var n=e.headers.get("Content-Length");return null!=n&&(i._contentLength=parseInt(n),0!==i._contentLength&&i._onContentLengthKnown&&i._onContentLengthKnown(i._contentLength)),i._pump.call(i,e.body.getReader())}if(i._status=o.GM.kError,!i._onError)throw new h.OZ("FetchStreamLoader: Http code invalid, "+e.status+" "+e.statusText);i._onError(o.nm.HTTP_STATUS_CODE_INVALID,{code:e.status,msg:e.statusText})})).catch((function(e){if(!i._abortController||!i._abortController.signal.aborted){if(i._status=o.GM.kError,!i._onError)throw e;i._onError(o.nm.EXCEPTION,{code:-1,msg:e.message})}}))},t.prototype.abort=function(){if(this._requestAbort=!0,(this._status!==o.GM.kBuffering||!a.Z.chrome)&&this._abortController)try{this._abortController.abort()}catch(e){}},t.prototype._pump=function(e){var t=this;return e.read().then((function(i){if(i.done)if(null!==t._contentLength&&t._receivedLength299)){if(this._status=o.GM.kError,!this._onError)throw new h.OZ("MozChunkedLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(o.nm.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}else this._status=o.GM.kBuffering}},t.prototype._onProgress=function(e){if(this._status!==o.GM.kError){null===this._contentLength&&null!==e.total&&0!==e.total&&(this._contentLength=e.total,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength));var t=e.target.response,i=this._range.from+this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,i,this._receivedLength)}},t.prototype._onLoadEnd=function(e){!0!==this._requestAbort?this._status!==o.GM.kError&&(this._status=o.GM.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1)):this._requestAbort=!1},t.prototype._onXhrError=function(e){this._status=o.GM.kError;var t=0,i=null;if(this._contentLength&&e.loaded=200&&t.status<=299){if(this._status=o.GM.kBuffering,null!=t.responseURL){var i=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&i!==this._currentRedirectedURL&&(this._currentRedirectedURL=i,this._onURLRedirect&&this._onURLRedirect(i))}var n=t.getResponseHeader("Content-Length");if(null!=n&&null==this._contentLength){var r=parseInt(n);r>0&&(this._contentLength=r,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength))}}else{if(this._status=o.GM.kError,!this._onError)throw new h.OZ("MSStreamLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(o.nm.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}else if(3===t.readyState&&t.status>=200&&t.status<=299){this._status=o.GM.kBuffering;var s=t.response;this._reader.readAsArrayBuffer(s)}},t.prototype._xhrOnError=function(e){this._status=o.GM.kError;var t=o.nm.EXCEPTION,i={code:-1,msg:e.constructor.name+" "+e.type};if(!this._onError)throw new h.OZ(i.msg);this._onError(t,i)},t.prototype._msrOnProgress=function(e){var t=e.target.result;if(null!=t){var i=t.slice(this._lastTimeBufferSize);this._lastTimeBufferSize=t.byteLength;var n=this._totalRange.from+this._receivedLength;this._receivedLength+=i.byteLength,this._onDataArrival&&this._onDataArrival(i,n,this._receivedLength),t.byteLength>=this._bufferLimit&&(r.Z.v(this.TAG,"MSStream buffer exceeded max size near ".concat(n+i.byteLength,", reconnecting...")),this._doReconnectIfNeeded())}else this._doReconnectIfNeeded()},t.prototype._doReconnectIfNeeded=function(){if(null==this._contentLength||this._receivedLength=this._contentLength&&(i=this._range.from+this._contentLength-1),this._currentRequestRange={from:t,to:i},this._internalOpen(this._dataSource,this._currentRequestRange)},t.prototype._internalOpen=function(e,t){this._lastTimeLoaded=0;var i=e.url;this._config.reuseRedirectedURL&&(null!=this._currentRedirectedURL?i=this._currentRedirectedURL:null!=e.redirectedURL&&(i=e.redirectedURL));var n=this._seekHandler.getConfig(i,t);this._currentRequestURL=n.url;var r=this._xhr=new XMLHttpRequest;if(r.open("GET",n.url,!0),r.responseType="arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onload=this._onLoad.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&(r.withCredentials=!0),"object"==typeof n.headers){var s=n.headers;for(var o in s)s.hasOwnProperty(o)&&r.setRequestHeader(o,s[o])}if("object"==typeof this._config.headers){s=this._config.headers;for(var o in s)s.hasOwnProperty(o)&&r.setRequestHeader(o,s[o])}r.send()},t.prototype.abort=function(){this._requestAbort=!0,this._internalAbort(),this._status=o.GM.kComplete},t.prototype._internalAbort=function(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)},t.prototype._onReadyStateChange=function(e){var t=e.target;if(2===t.readyState){if(null!=t.responseURL){var i=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&i!==this._currentRedirectedURL&&(this._currentRedirectedURL=i,this._onURLRedirect&&this._onURLRedirect(i))}if(t.status>=200&&t.status<=299){if(this._waitForTotalLength)return;this._status=o.GM.kBuffering}else{if(this._status=o.GM.kError,!this._onError)throw new h.OZ("RangeLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(o.nm.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}}},t.prototype._onProgress=function(e){if(this._status!==o.GM.kError){if(null===this._contentLength){var t=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,t=!0;var i=e.total;this._internalAbort(),null!=i&0!==i&&(this._totalLength=i)}if(-1===this._range.to?this._contentLength=this._totalLength-this._range.from:this._contentLength=this._range.to-this._range.from+1,t)return void this._openSubRange();this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}var n=e.loaded-this._lastTimeLoaded;this._lastTimeLoaded=e.loaded,this._speedSampler.addBytes(n)}},t.prototype._normalizeSpeed=function(e){var t=this._chunkSizeKBList,i=t.length-1,n=0,r=0,s=i;if(e=t[n]&&e=3&&(t=this._speedSampler.currentKBps)),0!==t){var i=this._normalizeSpeed(t);this._currentSpeedNormalized!==i&&(this._currentSpeedNormalized=i,this._currentChunkSizeKB=i)}var n=e.target.response,r=this._range.from+this._receivedLength;this._receivedLength+=n.byteLength;var s=!1;null!=this._contentLength&&this._receivedLength0&&this._receivedLength0)for(var s=i.split("&"),o=0;o0;a[0]!==this._startName&&a[0]!==this._endName&&(h&&(r+="&"),r+=s[o])}return 0===r.length?t:t+"?"+r},e}(),E=function(){function e(e,t,i){this.TAG="IOController",this._config=t,this._extraData=i,this._stashInitialSize=393216,null!=t.stashInitialSize&&t.stashInitialSize>0&&(this._stashInitialSize=t.stashInitialSize),this._stashUsed=0,this._stashSize=this._stashInitialSize,this._bufferSize=3145728,this._stashBuffer=new ArrayBuffer(this._bufferSize),this._stashByteStart=0,this._enableStash=!0,!1===t.enableStashBuffer&&(this._enableStash=!1),this._loader=null,this._loaderClass=null,this._seekHandler=null,this._dataSource=e,this._isWebSocketURL=/wss?:\/\/(.+?)/.test(e.url),this._refTotalLength=e.filesize?e.filesize:null,this._totalLength=this._refTotalLength,this._fullRequestFlag=!1,this._currentRange=null,this._redirectedURL=null,this._speedNormalized=0,this._speedSampler=new s,this._speedNormalizeList=[64,128,256,384,512,768,1024,1536,2048,3072,4096],this._isEarlyEofReconnecting=!1,this._paused=!1,this._resumeFrom=0,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._selectSeekHandler(),this._selectLoader(),this._createLoader()}return e.prototype.destroy=function(){this._loader.isWorking()&&this._loader.abort(),this._loader.destroy(),this._loader=null,this._loaderClass=null,this._dataSource=null,this._stashBuffer=null,this._stashUsed=this._stashSize=this._bufferSize=this._stashByteStart=0,this._currentRange=null,this._speedSampler=null,this._isEarlyEofReconnecting=!1,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._extraData=null},e.prototype.isWorking=function(){return this._loader&&this._loader.isWorking()&&!this._paused},e.prototype.isPaused=function(){return this._paused},Object.defineProperty(e.prototype,"status",{get:function(){return this._loader.status},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"extraData",{get:function(){return this._extraData},set:function(e){this._extraData=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onDataArrival",{get:function(){return this._onDataArrival},set:function(e){this._onDataArrival=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onSeeked",{get:function(){return this._onSeeked},set:function(e){this._onSeeked=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onError",{get:function(){return this._onError},set:function(e){this._onError=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onComplete",{get:function(){return this._onComplete},set:function(e){this._onComplete=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onRedirect",{get:function(){return this._onRedirect},set:function(e){this._onRedirect=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onRecoveredEarlyEof",{get:function(){return this._onRecoveredEarlyEof},set:function(e){this._onRecoveredEarlyEof=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentURL",{get:function(){return this._dataSource.url},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"hasRedirect",{get:function(){return null!=this._redirectedURL||null!=this._dataSource.redirectedURL},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentRedirectedURL",{get:function(){return this._redirectedURL||this._dataSource.redirectedURL},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentSpeed",{get:function(){return this._loaderClass===p?this._loader.currentSpeed:this._speedSampler.lastSecondKBps},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"loaderType",{get:function(){return this._loader.type},enumerable:!1,configurable:!0}),e.prototype._selectSeekHandler=function(){var e=this._config;if("range"===e.seekType)this._seekHandler=new v(this._config.rangeLoadZeroStart);else if("param"===e.seekType){var t=e.seekParamStart||"bstart",i=e.seekParamEnd||"bend";this._seekHandler=new y(t,i)}else{if("custom"!==e.seekType)throw new h.OC("Invalid seekType in config: ".concat(e.seekType));if("function"!=typeof e.customSeekHandler)throw new h.OC("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new e.customSeekHandler}},e.prototype._selectLoader=function(){if(null!=this._config.customLoader)this._loaderClass=this._config.customLoader;else if(this._isWebSocketURL)this._loaderClass=g;else if(d.isSupported())this._loaderClass=d;else if(c.isSupported())this._loaderClass=c;else{if(!p.isSupported())throw new h.OZ("Your browser doesn't support xhr with arraybuffer responseType!");this._loaderClass=p}},e.prototype._createLoader=function(){this._loader=new this._loaderClass(this._seekHandler,this._config),!1===this._loader.needStashBuffer&&(this._enableStash=!1),this._loader.onContentLengthKnown=this._onContentLengthKnown.bind(this),this._loader.onURLRedirect=this._onURLRedirect.bind(this),this._loader.onDataArrival=this._onLoaderChunkArrival.bind(this),this._loader.onComplete=this._onLoaderComplete.bind(this),this._loader.onError=this._onLoaderError.bind(this)},e.prototype.open=function(e){this._currentRange={from:0,to:-1},e&&(this._currentRange.from=e),this._speedSampler.reset(),e||(this._fullRequestFlag=!0),this._loader.open(this._dataSource,Object.assign({},this._currentRange))},e.prototype.abort=function(){this._loader.abort(),this._paused&&(this._paused=!1,this._resumeFrom=0)},e.prototype.pause=function(){this.isWorking()&&(this._loader.abort(),0!==this._stashUsed?(this._resumeFrom=this._stashByteStart,this._currentRange.to=this._stashByteStart-1):this._resumeFrom=this._currentRange.to+1,this._stashUsed=0,this._stashByteStart=0,this._paused=!0)},e.prototype.resume=function(){if(this._paused){this._paused=!1;var e=this._resumeFrom;this._resumeFrom=0,this._internalSeek(e,!0)}},e.prototype.seek=function(e){this._paused=!1,this._stashUsed=0,this._stashByteStart=0,this._internalSeek(e,!0)},e.prototype._internalSeek=function(e,t){this._loader.isWorking()&&this._loader.abort(),this._flushStashBuffer(t),this._loader.destroy(),this._loader=null;var i={from:e,to:-1};this._currentRange={from:i.from,to:-1},this._speedSampler.reset(),this._stashSize=this._stashInitialSize,this._createLoader(),this._loader.open(this._dataSource,i),this._onSeeked&&this._onSeeked()},e.prototype.updateUrl=function(e){if(!e||"string"!=typeof e||0===e.length)throw new h.OC("Url must be a non-empty string!");this._dataSource.url=e},e.prototype._expandBuffer=function(e){for(var t=this._stashSize;t+10485760){var n=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(i,0,t).set(n,0)}this._stashBuffer=i,this._bufferSize=t}},e.prototype._normalizeSpeed=function(e){var t=this._speedNormalizeList,i=t.length-1,n=0,r=0,s=i;if(e=t[n]&&e=512&&e<=1024?Math.floor(1.5*e):2*e)>8192&&(t=8192);var i=1024*t+1048576;this._bufferSize0){var s=this._stashBuffer.slice(0,this._stashUsed);if((u=this._dispatchChunks(s,this._stashByteStart))0){d=new Uint8Array(s,u);a.set(d,0),this._stashUsed=d.byteLength,this._stashByteStart+=u}}else this._stashUsed=0,this._stashByteStart+=u;this._stashUsed+e.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+e.byteLength),a=new Uint8Array(this._stashBuffer,0,this._bufferSize)),a.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else{if((u=this._dispatchChunks(e,t))this._bufferSize&&(this._expandBuffer(o),a=new Uint8Array(this._stashBuffer,0,this._bufferSize)),a.set(new Uint8Array(e,u),0),this._stashUsed+=o,this._stashByteStart=t+u}}else if(0===this._stashUsed){var o;if((u=this._dispatchChunks(e,t))this._bufferSize&&this._expandBuffer(o),(a=new Uint8Array(this._stashBuffer,0,this._bufferSize)).set(new Uint8Array(e,u),0),this._stashUsed+=o,this._stashByteStart=t+u}else{var a,u;if(this._stashUsed+e.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+e.byteLength),(a=new Uint8Array(this._stashBuffer,0,this._bufferSize)).set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength,(u=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart))0){var d=new Uint8Array(this._stashBuffer,u);a.set(d,0)}this._stashUsed-=u,this._stashByteStart+=u}}},e.prototype._flushStashBuffer=function(e){if(this._stashUsed>0){var t=this._stashBuffer.slice(0,this._stashUsed),i=this._dispatchChunks(t,this._stashByteStart),n=t.byteLength-i;if(i0){var s=new Uint8Array(this._stashBuffer,0,this._bufferSize),o=new Uint8Array(t,i);s.set(o,0),this._stashUsed=o.byteLength,this._stashByteStart+=i}return 0}r.Z.w(this.TAG,"".concat(n," bytes unconsumed data remain when flush buffer, dropped"))}return this._stashUsed=0,this._stashByteStart=0,n}return 0},e.prototype._onLoaderComplete=function(e,t){this._flushStashBuffer(!0),this._onComplete&&this._onComplete(this._extraData)},e.prototype._onLoaderError=function(e,t){switch(r.Z.e(this.TAG,"Loader error, code = ".concat(t.code,", msg = ").concat(t.msg)),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,e=o.nm.UNRECOVERABLE_EARLY_EOF),e){case o.nm.EARLY_EOF:if(!this._config.isLive&&this._totalLength){var i=this._currentRange.to+1;return void(i=0&&/(rv)(?::| )([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(firefox)[ \/]([\w.]+)/.exec(e)||[],n=/(ipad)/.exec(e)||/(ipod)/.exec(e)||/(windows phone)/.exec(e)||/(iphone)/.exec(e)||/(kindle)/.exec(e)||/(android)/.exec(e)||/(windows)/.exec(e)||/(mac)/.exec(e)||/(linux)/.exec(e)||/(cros)/.exec(e)||[],r={browser:t[5]||t[3]||t[1]||"",version:t[2]||t[4]||"0",majorVersion:t[4]||t[2]||"0",platform:n[0]||""},s={};if(r.browser){s[r.browser]=!0;var o=r.majorVersion.split(".");s.version={major:parseInt(r.majorVersion,10),string:r.version},o.length>1&&(s.version.minor=parseInt(o[1],10)),o.length>2&&(s.version.build=parseInt(o[2],10))}if(r.platform&&(s[r.platform]=!0),(s.chrome||s.opr||s.safari)&&(s.webkit=!0),s.rv||s.iemobile){s.rv&&delete s.rv;var a="msie";r.browser=a,s[a]=!0}if(s.edge){delete s.edge;var h="msedge";r.browser=h,s[h]=!0}if(s.opr){var u="opera";r.browser=u,s[u]=!0}if(s.safari&&s.android){var d="android";r.browser=d,s[d]=!0}for(var l in s.name=r.browser,s.platform=r.platform,i)i.hasOwnProperty(l)&&delete i[l];Object.assign(i,s)}(),t.Z=i},29:function(e,t,i){"use strict";i.d(t,{OC:function(){return a},OZ:function(){return s},do:function(){return h},rT:function(){return o}});var n,r=(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=function(){function e(e){this._message=e}return Object.defineProperty(e.prototype,"name",{get:function(){return"RuntimeException"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"message",{get:function(){return this._message},enumerable:!1,configurable:!0}),e.prototype.toString=function(){return this.name+": "+this.message},e}(),o=function(e){function t(t){return e.call(this,t)||this}return r(t,e),Object.defineProperty(t.prototype,"name",{get:function(){return"IllegalStateException"},enumerable:!1,configurable:!0}),t}(s),a=function(e){function t(t){return e.call(this,t)||this}return r(t,e),Object.defineProperty(t.prototype,"name",{get:function(){return"InvalidArgumentException"},enumerable:!1,configurable:!0}),t}(s),h=function(e){function t(t){return e.call(this,t)||this}return r(t,e),Object.defineProperty(t.prototype,"name",{get:function(){return"NotImplementedException"},enumerable:!1,configurable:!0}),t}(s)},300:function(e,t,i){"use strict";var n=i(716),r=i.n(n),s=function(){function e(){}return e.e=function(t,i){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var n="[".concat(t,"] > ").concat(i);e.ENABLE_CALLBACK&&e.emitter.emit("log","error",n),e.ENABLE_ERROR&&(console.error?console.error(n):console.warn?console.warn(n):console.log(n))},e.i=function(t,i){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var n="[".concat(t,"] > ").concat(i);e.ENABLE_CALLBACK&&e.emitter.emit("log","info",n),e.ENABLE_INFO&&(console.info?console.info(n):console.log(n))},e.w=function(t,i){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var n="[".concat(t,"] > ").concat(i);e.ENABLE_CALLBACK&&e.emitter.emit("log","warn",n),e.ENABLE_WARN&&(console.warn?console.warn(n):console.log(n))},e.d=function(t,i){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var n="[".concat(t,"] > ").concat(i);e.ENABLE_CALLBACK&&e.emitter.emit("log","debug",n),e.ENABLE_DEBUG&&(console.debug?console.debug(n):console.log(n))},e.v=function(t,i){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var n="[".concat(t,"] > ").concat(i);e.ENABLE_CALLBACK&&e.emitter.emit("log","verbose",n),e.ENABLE_VERBOSE&&console.log(n)},e}();s.GLOBAL_TAG="flv.js",s.FORCE_GLOBAL_TAG=!1,s.ENABLE_ERROR=!0,s.ENABLE_INFO=!1,s.ENABLE_WARN=!1,s.ENABLE_DEBUG=!1,s.ENABLE_VERBOSE=!1,s.ENABLE_CALLBACK=!1,s.emitter=new(r()),t.Z=s},846:function(e,t,i){"use strict";var n=i(716),r=i.n(n),s=i(300),o=function(){function e(){}return Object.defineProperty(e,"forceGlobalTag",{get:function(){return s.Z.FORCE_GLOBAL_TAG},set:function(t){s.Z.FORCE_GLOBAL_TAG=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"globalTag",{get:function(){return s.Z.GLOBAL_TAG},set:function(t){s.Z.GLOBAL_TAG=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableAll",{get:function(){return s.Z.ENABLE_VERBOSE&&s.Z.ENABLE_DEBUG&&s.Z.ENABLE_INFO&&s.Z.ENABLE_WARN&&s.Z.ENABLE_ERROR},set:function(t){s.Z.ENABLE_VERBOSE=t,s.Z.ENABLE_DEBUG=t,s.Z.ENABLE_INFO=t,s.Z.ENABLE_WARN=t,s.Z.ENABLE_ERROR=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableDebug",{get:function(){return s.Z.ENABLE_DEBUG},set:function(t){s.Z.ENABLE_DEBUG=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableVerbose",{get:function(){return s.Z.ENABLE_VERBOSE},set:function(t){s.Z.ENABLE_VERBOSE=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableInfo",{get:function(){return s.Z.ENABLE_INFO},set:function(t){s.Z.ENABLE_INFO=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableWarn",{get:function(){return s.Z.ENABLE_WARN},set:function(t){s.Z.ENABLE_WARN=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableError",{get:function(){return s.Z.ENABLE_ERROR},set:function(t){s.Z.ENABLE_ERROR=t,e._notifyChange()},enumerable:!1,configurable:!0}),e.getConfig=function(){return{globalTag:s.Z.GLOBAL_TAG,forceGlobalTag:s.Z.FORCE_GLOBAL_TAG,enableVerbose:s.Z.ENABLE_VERBOSE,enableDebug:s.Z.ENABLE_DEBUG,enableInfo:s.Z.ENABLE_INFO,enableWarn:s.Z.ENABLE_WARN,enableError:s.Z.ENABLE_ERROR,enableCallback:s.Z.ENABLE_CALLBACK}},e.applyConfig=function(e){s.Z.GLOBAL_TAG=e.globalTag,s.Z.FORCE_GLOBAL_TAG=e.forceGlobalTag,s.Z.ENABLE_VERBOSE=e.enableVerbose,s.Z.ENABLE_DEBUG=e.enableDebug,s.Z.ENABLE_INFO=e.enableInfo,s.Z.ENABLE_WARN=e.enableWarn,s.Z.ENABLE_ERROR=e.enableError,s.Z.ENABLE_CALLBACK=e.enableCallback},e._notifyChange=function(){var t=e.emitter;if(t.listenerCount("change")>0){var i=e.getConfig();t.emit("change",i)}},e.registerListener=function(t){e.emitter.addListener("change",t)},e.removeListener=function(t){e.emitter.removeListener("change",t)},e.addLogListener=function(t){s.Z.emitter.addListener("log",t),s.Z.emitter.listenerCount("log")>0&&(s.Z.ENABLE_CALLBACK=!0,e._notifyChange())},e.removeLogListener=function(t){s.Z.emitter.removeListener("log",t),0===s.Z.emitter.listenerCount("log")&&(s.Z.ENABLE_CALLBACK=!1,e._notifyChange())},e}();o.emitter=new(r()),t.Z=o},219:function(e,t,i){"use strict";var n=function(){function e(){}return e.install=function(){Object.setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Object.assign=Object.assign||function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),i=1;i>>0;for(t=0;t0)for(r=0;r=0?r?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+i}n.suppressDeprecationWarnings=!1,n.deprecationHandler=null,T=Object.keys?Object.keys:function(e){var t,r=[];for(t in e)s(e,t)&&r.push(t);return r};var O=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Y=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,I={},P={};function C(e,t,r,i){var n=i;"string"==typeof i&&(n=function(){return this[i]()}),e&&(P[e]=n),t&&(P[t[0]]=function(){return x(n.apply(this,arguments),t[1],t[2])}),r&&(P[r]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)})}function N(e,t){return e.isValid()?(t=j(t,e.localeData()),I[t]=I[t]||function(e){var t,r,i,n=e.match(O);for(t=0,r=n.length;t=0&&Y.test(e);)e=e.replace(Y,i),Y.lastIndex=0,r-=1;return e}var F={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function H(e){return"string"==typeof e?F[e]||F[e.toLowerCase()]:void 0}function U(e){var t,r,i={};for(r in e)s(e,r)&&(t=H(r))&&(i[t]=e[r]);return i}var B,W={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1},z=/\d/,X=/\d\d/,V=/\d{3}/,G=/\d{4}/,q=/[+-]?\d{6}/,Q=/\d\d?/,K=/\d\d\d\d?/,J=/\d\d\d\d\d\d?/,Z=/\d{1,3}/,$=/\d{1,4}/,ee=/[+-]?\d{1,6}/,te=/\d+/,re=/[+-]?\d+/,ie=/Z|[+-]\d\d:?\d\d/gi,ne=/Z|[+-]\d\d(?::?\d\d)?/gi,ae=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,oe=/^[1-9]\d?/,se=/^([1-9]\d|\d)/;function de(e,t,r){B[e]=L(t)?t:function(e,i){return e&&r?r:t}}function ue(e,t){return s(B,e)?B[e](t._strict,t._locale):new RegExp(le(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,r,i,n){return t||r||i||n}))))}function le(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function he(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function ce(e){var t=+e,r=0;return 0!==t&&isFinite(t)&&(r=he(t)),r}B={};var fe={};function me(e,t){var r,i,n=t;for("string"==typeof e&&(e=[e]),l(t)&&(n=function(e,r){r[t]=ce(e)}),i=e.length,r=0;r68?1900:2e3)};var be,ve=we("FullYear",!0);function we(e,t){return function(r){return null!=r?(Ee(this,e,r),n.updateOffset(this,t),this):Me(this,e)}}function Me(e,t){if(!e.isValid())return NaN;var r=e._d,i=e._isUTC;switch(t){case"Milliseconds":return i?r.getUTCMilliseconds():r.getMilliseconds();case"Seconds":return i?r.getUTCSeconds():r.getSeconds();case"Minutes":return i?r.getUTCMinutes():r.getMinutes();case"Hours":return i?r.getUTCHours():r.getHours();case"Date":return i?r.getUTCDate():r.getDate();case"Day":return i?r.getUTCDay():r.getDay();case"Month":return i?r.getUTCMonth():r.getMonth();case"FullYear":return i?r.getUTCFullYear():r.getFullYear();default:return NaN}}function Ee(e,t,r){var i,n,a,o,s;if(e.isValid()&&!isNaN(r)){switch(i=e._d,n=e._isUTC,t){case"Milliseconds":return void(n?i.setUTCMilliseconds(r):i.setMilliseconds(r));case"Seconds":return void(n?i.setUTCSeconds(r):i.setSeconds(r));case"Minutes":return void(n?i.setUTCMinutes(r):i.setMinutes(r));case"Hours":return void(n?i.setUTCHours(r):i.setHours(r));case"Date":return void(n?i.setUTCDate(r):i.setDate(r));case"FullYear":break;default:return}a=r,o=e.month(),s=29!==(s=e.date())||1!==o||ye(a)?s:28,n?i.setUTCFullYear(a,o,s):i.setFullYear(a,o,s)}}function Ae(e,t){if(isNaN(e)||isNaN(t))return NaN;var r,i=(t%(r=12)+r)%r;return e+=(t-i)/12,1===i?ye(e)?29:28:31-i%7%2}be=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t=0?(s=new Date(e+400,t,r,i,n,a,o),isFinite(s.getFullYear())&&s.setFullYear(e)):s=new Date(e,t,r,i,n,a,o),s}function Pe(e){var t,r;return e<100&&e>=0?((r=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,r)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Ce(e,t,r){var i=7+t-r;return-(7+Pe(e,0,i).getUTCDay()-t)%7+i-1}function Ne(e,t,r,i,n){var a,o,s=1+7*(t-1)+(7+r-i)%7+Ce(e,i,n);return s<=0?o=ge(a=e-1)+s:s>ge(e)?(a=e+1,o=s-ge(e)):(a=e,o=s),{year:a,dayOfYear:o}}function je(e,t,r){var i,n,a=Ce(e.year(),t,r),o=Math.floor((e.dayOfYear()-a-1)/7)+1;return o<1?i=o+Fe(n=e.year()-1,t,r):o>Fe(e.year(),t,r)?(i=o-Fe(e.year(),t,r),n=e.year()+1):(n=e.year(),i=o),{week:i,year:n}}function Fe(e,t,r){var i=Ce(e,t,r),n=Ce(e+1,t,r);return(ge(e)-i+n)/7}function He(e,t){return e.slice(t,7).concat(e.slice(0,t))}C("w",["ww",2],"wo","week"),C("W",["WW",2],"Wo","isoWeek"),de("w",Q,oe),de("ww",Q,X),de("W",Q,oe),de("WW",Q,X),_e(["w","ww","W","WW"],(function(e,t,r,i){t[i.substr(0,1)]=ce(e)})),C("d",0,"do","day"),C("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),C("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),C("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),C("e",0,0,"weekday"),C("E",0,0,"isoWeekday"),de("d",Q),de("e",Q),de("E",Q),de("dd",(function(e,t){return t.weekdaysMinRegex(e)})),de("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),de("dddd",(function(e,t){return t.weekdaysRegex(e)})),_e(["dd","ddd","dddd"],(function(e,t,r,i){var n=r._locale.weekdaysParse(e,i,r._strict);null!=n?t.d=n:_(r).invalidWeekday=e})),_e(["d","e","E"],(function(e,t,r,i){t[i]=ce(e)}));var Ue="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Be="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),We="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ze=ae,Xe=ae,Ve=ae;function Ge(e,t,r){var i,n,a,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)a=m([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(a,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(a,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(a,"").toLocaleLowerCase();return r?"dddd"===t?-1!==(n=be.call(this._weekdaysParse,o))?n:null:"ddd"===t?-1!==(n=be.call(this._shortWeekdaysParse,o))?n:null:-1!==(n=be.call(this._minWeekdaysParse,o))?n:null:"dddd"===t?-1!==(n=be.call(this._weekdaysParse,o))||-1!==(n=be.call(this._shortWeekdaysParse,o))||-1!==(n=be.call(this._minWeekdaysParse,o))?n:null:"ddd"===t?-1!==(n=be.call(this._shortWeekdaysParse,o))||-1!==(n=be.call(this._weekdaysParse,o))||-1!==(n=be.call(this._minWeekdaysParse,o))?n:null:-1!==(n=be.call(this._minWeekdaysParse,o))||-1!==(n=be.call(this._weekdaysParse,o))||-1!==(n=be.call(this._shortWeekdaysParse,o))?n:null}function qe(){function e(e,t){return t.length-e.length}var t,r,i,n,a,o=[],s=[],d=[],u=[];for(t=0;t<7;t++)r=m([2e3,1]).day(t),i=le(this.weekdaysMin(r,"")),n=le(this.weekdaysShort(r,"")),a=le(this.weekdays(r,"")),o.push(i),s.push(n),d.push(a),u.push(i),u.push(n),u.push(a);o.sort(e),s.sort(e),d.sort(e),u.sort(e),this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Qe(){return this.hours()%12||12}function Ke(e,t){C(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function Je(e,t){return t._meridiemParse}C("H",["HH",2],0,"hour"),C("h",["hh",2],0,Qe),C("k",["kk",2],0,(function(){return this.hours()||24})),C("hmm",0,0,(function(){return""+Qe.apply(this)+x(this.minutes(),2)})),C("hmmss",0,0,(function(){return""+Qe.apply(this)+x(this.minutes(),2)+x(this.seconds(),2)})),C("Hmm",0,0,(function(){return""+this.hours()+x(this.minutes(),2)})),C("Hmmss",0,0,(function(){return""+this.hours()+x(this.minutes(),2)+x(this.seconds(),2)})),Ke("a",!0),Ke("A",!1),de("a",Je),de("A",Je),de("H",Q,se),de("h",Q,oe),de("k",Q,oe),de("HH",Q,X),de("hh",Q,X),de("kk",Q,X),de("hmm",K),de("hmmss",J),de("Hmm",K),de("Hmmss",J),me(["H","HH"],3),me(["k","kk"],(function(e,t,r){var i=ce(e);t[3]=24===i?0:i})),me(["a","A"],(function(e,t,r){r._isPm=r._locale.isPM(e),r._meridiem=e})),me(["h","hh"],(function(e,t,r){t[3]=ce(e),_(r).bigHour=!0})),me("hmm",(function(e,t,r){var i=e.length-2;t[3]=ce(e.substr(0,i)),t[4]=ce(e.substr(i)),_(r).bigHour=!0})),me("hmmss",(function(e,t,r){var i=e.length-4,n=e.length-2;t[3]=ce(e.substr(0,i)),t[4]=ce(e.substr(i,2)),t[5]=ce(e.substr(n)),_(r).bigHour=!0})),me("Hmm",(function(e,t,r){var i=e.length-2;t[3]=ce(e.substr(0,i)),t[4]=ce(e.substr(i))})),me("Hmmss",(function(e,t,r){var i=e.length-4,n=e.length-2;t[3]=ce(e.substr(0,i)),t[4]=ce(e.substr(i,2)),t[5]=ce(e.substr(n))}));var Ze,$e=we("Hours",!0),et={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Te,monthsShort:ke,week:{dow:0,doy:6},weekdays:Ue,weekdaysMin:We,weekdaysShort:Be,meridiemParse:/[ap]\.?m?\.?/i},tt={},rt={};function it(e,t){var r,i=Math.min(e.length,t.length);for(r=0;r0;){if(i=at(n.slice(0,t).join("-")))return i;if(r&&r.length>=t&&it(n,r)>=t-1)break;t--}a++}return Ze}(e)}function ut(e){var t,r=e._a;return r&&-2===_(e).overflow&&(t=r[1]<0||r[1]>11?1:r[2]<1||r[2]>Ae(r[0],r[1])?2:r[3]<0||r[3]>24||24===r[3]&&(0!==r[4]||0!==r[5]||0!==r[6])?3:r[4]<0||r[4]>59?4:r[5]<0||r[5]>59?5:r[6]<0||r[6]>999?6:-1,_(e)._overflowDayOfYear&&(t<0||t>2)&&(t=2),_(e)._overflowWeeks&&-1===t&&(t=7),_(e)._overflowWeekday&&-1===t&&(t=8),_(e).overflow=t),e}var lt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ht=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ct=/Z|[+-]\d\d(?::?\d\d)?/,ft=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],mt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],_t=/^\/?Date\((-?\d+)/i,pt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,yt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function gt(e){var t,r,i,n,a,o,s=e._i,d=lt.exec(s)||ht.exec(s),u=ft.length,l=mt.length;if(d){for(_(e).iso=!0,t=0,r=u;t7)&&(d=!0)):(a=e._locale._week.dow,o=e._locale._week.doy,u=je(kt(),a,o),r=wt(t.gg,e._a[0],u.year),i=wt(t.w,u.week),null!=t.d?((n=t.d)<0||n>6)&&(d=!0):null!=t.e?(n=t.e+a,(t.e<0||t.e>6)&&(d=!0)):n=a),i<1||i>Fe(r,a,o)?_(e)._overflowWeeks=!0:null!=d?_(e)._overflowWeekday=!0:(s=Ne(r,i,n,a,o),e._a[0]=s.year,e._dayOfYear=s.dayOfYear)}(e),null!=e._dayOfYear&&(o=wt(e._a[0],i[0]),(e._dayOfYear>ge(o)||0===e._dayOfYear)&&(_(e)._overflowDayOfYear=!0),r=Pe(o,0,e._dayOfYear),e._a[1]=r.getUTCMonth(),e._a[2]=r.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=s[t]=i[t];for(;t<7;t++)e._a[t]=s[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[3]&&0===e._a[4]&&0===e._a[5]&&0===e._a[6]&&(e._nextDay=!0,e._a[3]=0),e._d=(e._useUTC?Pe:Ie).apply(null,s),a=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[3]=24),e._w&&void 0!==e._w.d&&e._w.d!==a&&(_(e).weekdayMismatch=!0)}}function Et(e){if(e._f!==n.ISO_8601)if(e._f!==n.RFC_2822){e._a=[],_(e).empty=!0;var t,r,i,a,o,s,d,u=""+e._i,l=u.length,h=0;for(d=(i=j(e._f,e._locale).match(O)||[]).length,t=0;t0&&_(e).unusedInput.push(o),u=u.slice(u.indexOf(r)+r.length),h+=r.length),P[a]?(r?_(e).empty=!1:_(e).unusedTokens.push(a),pe(a,r,e)):e._strict&&!r&&_(e).unusedTokens.push(a);_(e).charsLeftOver=l-h,u.length>0&&_(e).unusedInput.push(u),e._a[3]<=12&&!0===_(e).bigHour&&e._a[3]>0&&(_(e).bigHour=void 0),_(e).parsedDateParts=e._a.slice(0),_(e).meridiem=e._meridiem,e._a[3]=function(e,t,r){var i;return null==r?t:null!=e.meridiemHour?e.meridiemHour(t,r):null!=e.isPM?((i=e.isPM(r))&&t<12&&(t+=12),i||12!==t||(t=0),t):t}(e._locale,e._a[3],e._meridiem),null!==(s=_(e).era)&&(e._a[0]=e._locale.erasConvertYear(s,e._a[0])),Mt(e),ut(e)}else vt(e);else gt(e)}function At(e){var t=e._i,r=e._f;return e._locale=e._locale||dt(e._l),null===t||void 0===r&&""===t?y({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),M(t)?new w(ut(t)):(h(t)?e._d=t:a(r)?function(e){var t,r,i,n,a,o,s=!1,d=e._f.length;if(0===d)return _(e).invalidFormat=!0,void(e._d=new Date(NaN));for(n=0;nthis?this:e:y()}));function Dt(e,t){var r,i;if(1===t.length&&a(t[0])&&(t=t[0]),!t.length)return kt();for(r=t[0],i=1;i=0?new Date(e+400,t,r)-126227808e5:new Date(e,t,r).valueOf()}function nr(e,t,r){return e<100&&e>=0?Date.UTC(e+400,t,r)-126227808e5:Date.UTC(e,t,r)}function ar(e,t){return t.erasAbbrRegex(e)}function or(){var e,t,r,i,n,a=[],o=[],s=[],d=[],u=this.eras();for(e=0,t=u.length;e(a=Fe(e,i,n))&&(t=a),ur.call(this,e,t,r,i,n))}function ur(e,t,r,i,n){var a=Ne(e,t,r,i,n),o=Pe(a.year,0,a.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}C("N",0,0,"eraAbbr"),C("NN",0,0,"eraAbbr"),C("NNN",0,0,"eraAbbr"),C("NNNN",0,0,"eraName"),C("NNNNN",0,0,"eraNarrow"),C("y",["y",1],"yo","eraYear"),C("y",["yy",2],0,"eraYear"),C("y",["yyy",3],0,"eraYear"),C("y",["yyyy",4],0,"eraYear"),de("N",ar),de("NN",ar),de("NNN",ar),de("NNNN",(function(e,t){return t.erasNameRegex(e)})),de("NNNNN",(function(e,t){return t.erasNarrowRegex(e)})),me(["N","NN","NNN","NNNN","NNNNN"],(function(e,t,r,i){var n=r._locale.erasParse(e,i,r._strict);n?_(r).era=n:_(r).invalidEra=e})),de("y",te),de("yy",te),de("yyy",te),de("yyyy",te),de("yo",(function(e,t){return t._eraYearOrdinalRegex||te})),me(["y","yy","yyy","yyyy"],0),me(["yo"],(function(e,t,r,i){var n;r._locale._eraYearOrdinalRegex&&(n=e.match(r._locale._eraYearOrdinalRegex)),r._locale.eraYearOrdinalParse?t[0]=r._locale.eraYearOrdinalParse(e,n):t[0]=parseInt(e,10)})),C(0,["gg",2],0,(function(){return this.weekYear()%100})),C(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),sr("gggg","weekYear"),sr("ggggg","weekYear"),sr("GGGG","isoWeekYear"),sr("GGGGG","isoWeekYear"),de("G",re),de("g",re),de("GG",Q,X),de("gg",Q,X),de("GGGG",$,G),de("gggg",$,G),de("GGGGG",ee,q),de("ggggg",ee,q),_e(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,r,i){t[i.substr(0,2)]=ce(e)})),_e(["gg","GG"],(function(e,t,r,i){t[i]=n.parseTwoDigitYear(e)})),C("Q",0,"Qo","quarter"),de("Q",z),me("Q",(function(e,t){t[1]=3*(ce(e)-1)})),C("D",["DD",2],"Do","date"),de("D",Q,oe),de("DD",Q,X),de("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),me(["D","DD"],2),me("Do",(function(e,t){t[2]=ce(e.match(Q)[0])}));var lr=we("Date",!0);C("DDD",["DDDD",3],"DDDo","dayOfYear"),de("DDD",Z),de("DDDD",V),me(["DDD","DDDD"],(function(e,t,r){r._dayOfYear=ce(e)})),C("m",["mm",2],0,"minute"),de("m",Q,se),de("mm",Q,X),me(["m","mm"],4);var hr=we("Minutes",!1);C("s",["ss",2],0,"second"),de("s",Q,se),de("ss",Q,X),me(["s","ss"],5);var cr,fr,mr=we("Seconds",!1);for(C("S",0,0,(function(){return~~(this.millisecond()/100)})),C(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),C(0,["SSS",3],0,"millisecond"),C(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),C(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),C(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),C(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),C(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),C(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),de("S",Z,z),de("SS",Z,X),de("SSS",Z,V),cr="SSSS";cr.length<=9;cr+="S")de(cr,te);function _r(e,t){t[6]=ce(1e3*("0."+e))}for(cr="S";cr.length<=9;cr+="S")me(cr,_r);fr=we("Milliseconds",!1),C("z",0,0,"zoneAbbr"),C("zz",0,0,"zoneName");var pr=w.prototype;function yr(e){return e}pr.add=Gt,pr.calendar=function(e,t){1===arguments.length&&(arguments[0]?Kt(arguments[0])?(e=arguments[0],t=void 0):Jt(arguments[0])&&(t=arguments[0],e=void 0):(e=void 0,t=void 0));var r=e||kt(),i=Nt(r,this).startOf("day"),a=n.calendarFormat(this,i)||"sameElse",o=t&&(L(t[a])?t[a].call(this,r):t[a]);return this.format(o||this.localeData().calendar(a,this,kt(r)))},pr.clone=function(){return new w(this)},pr.diff=function(e,t,r){var i,n,a;if(!this.isValid())return NaN;if(!(i=Nt(e,this)).isValid())return NaN;switch(n=6e4*(i.utcOffset()-this.utcOffset()),t=H(t)){case"year":a=Zt(this,i)/12;break;case"month":a=Zt(this,i);break;case"quarter":a=Zt(this,i)/3;break;case"second":a=(this-i)/1e3;break;case"minute":a=(this-i)/6e4;break;case"hour":a=(this-i)/36e5;break;case"day":a=(this-i-n)/864e5;break;case"week":a=(this-i-n)/6048e5;break;default:a=this-i}return r?a:he(a)},pr.endOf=function(e){var t,r;if(void 0===(e=H(e))||"millisecond"===e||!this.isValid())return this;switch(r=this._isUTC?nr:ir,e){case"year":t=r(this.year()+1,0,1)-1;break;case"quarter":t=r(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=r(this.year(),this.month()+1,1)-1;break;case"week":t=r(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=r(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=r(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=36e5-rr(t+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":t=this._d.valueOf(),t+=6e4-rr(t,6e4)-1;break;case"second":t=this._d.valueOf(),t+=1e3-rr(t,1e3)-1}return this._d.setTime(t),n.updateOffset(this,!0),this},pr.format=function(e){e||(e=this.isUtc()?n.defaultFormatUtc:n.defaultFormat);var t=N(this,e);return this.localeData().postformat(t)},pr.from=function(e,t){return this.isValid()&&(M(e)&&e.isValid()||kt(e).isValid())?Bt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},pr.fromNow=function(e){return this.from(kt(),e)},pr.to=function(e,t){return this.isValid()&&(M(e)&&e.isValid()||kt(e).isValid())?Bt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},pr.toNow=function(e){return this.to(kt(),e)},pr.get=function(e){return L(this[e=H(e)])?this[e]():this},pr.invalidAt=function(){return _(this).overflow},pr.isAfter=function(e,t){var r=M(e)?e:kt(e);return!(!this.isValid()||!r.isValid())&&("millisecond"===(t=H(t)||"millisecond")?this.valueOf()>r.valueOf():r.valueOf()9999?N(r,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):L(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",N(r,"Z")):N(r,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},pr.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,r,i="moment",n="";return this.isLocal()||(i=0===this.utcOffset()?"moment.utc":"moment.parseZone",n="Z"),e="["+i+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",r=n+'[")]',this.format(e+t+"-MM-DD[T]HH:mm:ss.SSS"+r)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(pr[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),pr.toJSON=function(){return this.isValid()?this.toISOString():null},pr.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},pr.unix=function(){return Math.floor(this.valueOf()/1e3)},pr.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},pr.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},pr.eraName=function(){var e,t,r,i=this.localeData().eras();for(e=0,t=i.length;ethis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},pr.isLocal=function(){return!!this.isValid()&&!this._isUTC},pr.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},pr.isUtc=Ft,pr.isUTC=Ft,pr.zoneAbbr=function(){return this._isUTC?"UTC":""},pr.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},pr.dates=A("dates accessor is deprecated. Use date instead.",lr),pr.months=A("months accessor is deprecated. Use month instead",Oe),pr.years=A("years accessor is deprecated. Use year instead",ve),pr.zone=A("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()})),pr.isDSTShifted=A("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!u(this._isDSTShifted))return this._isDSTShifted;var e,t={};return v(t,this),(t=At(t))._a?(e=t._isUTC?m(t._a):kt(t._a),this._isDSTShifted=this.isValid()&&function(e,t,r){var i,n=Math.min(e.length,t.length),a=Math.abs(e.length-t.length),o=0;for(i=0;i0):this._isDSTShifted=!1,this._isDSTShifted}));var gr=R.prototype;function br(e,t,r,i){var n=dt(),a=m().set(i,t);return n[r](a,e)}function vr(e,t,r){if(l(e)&&(t=e,e=void 0),e=e||"",null!=t)return br(e,t,r,"month");var i,n=[];for(i=0;i<12;i++)n[i]=br(e,i,r,"month");return n}function wr(e,t,r,i){"boolean"==typeof e?(l(t)&&(r=t,t=void 0),t=t||""):(r=t=e,e=!1,l(t)&&(r=t,t=void 0),t=t||"");var n,a=dt(),o=e?a._week.dow:0,s=[];if(null!=r)return br(t,(r+o)%7,i,"day");for(n=0;n<7;n++)s[n]=br(t,(n+o)%7,i,"day");return s}gr.calendar=function(e,t,r){var i=this._calendar[e]||this._calendar.sameElse;return L(i)?i.call(t,r):i},gr.longDateFormat=function(e){var t=this._longDateFormat[e],r=this._longDateFormat[e.toUpperCase()];return t||!r?t:(this._longDateFormat[e]=r.match(O).map((function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e})).join(""),this._longDateFormat[e])},gr.invalidDate=function(){return this._invalidDate},gr.ordinal=function(e){return this._ordinal.replace("%d",e)},gr.preparse=yr,gr.postformat=yr,gr.relativeTime=function(e,t,r,i){var n=this._relativeTime[r];return L(n)?n(e,t,r,i):n.replace(/%d/i,e)},gr.pastFuture=function(e,t){var r=this._relativeTime[e>0?"future":"past"];return L(r)?r(t):r.replace(/%s/i,t)},gr.set=function(e){var t,r;for(r in e)s(e,r)&&(L(t=e[r])?this[r]=t:this["_"+r]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},gr.eras=function(e,t){var r,i,a,o=this._eras||dt("en")._eras;for(r=0,i=o.length;r=0)return d[i]},gr.erasConvertYear=function(e,t){var r=e.since<=e.until?1:-1;return void 0===t?n(e.since).year():n(e.since).year()+(t-e.offset)*r},gr.erasAbbrRegex=function(e){return s(this,"_erasAbbrRegex")||or.call(this),e?this._erasAbbrRegex:this._erasRegex},gr.erasNameRegex=function(e){return s(this,"_erasNameRegex")||or.call(this),e?this._erasNameRegex:this._erasRegex},gr.erasNarrowRegex=function(e){return s(this,"_erasNarrowRegex")||or.call(this),e?this._erasNarrowRegex:this._erasRegex},gr.months=function(e,t){return e?a(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Se).test(t)?"format":"standalone"][e.month()]:a(this._months)?this._months:this._months.standalone},gr.monthsShort=function(e,t){return e?a(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Se.test(t)?"format":"standalone"][e.month()]:a(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},gr.monthsParse=function(e,t,r){var i,n,a;if(this._monthsParseExact)return Re.call(this,e,t,r);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(n=m([2e3,i]),r&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),r||this._monthsParse[i]||(a="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[i]=new RegExp(a.replace(".",""),"i")),r&&"MMMM"===t&&this._longMonthsParse[i].test(e))return i;if(r&&"MMM"===t&&this._shortMonthsParse[i].test(e))return i;if(!r&&this._monthsParse[i].test(e))return i}},gr.monthsRegex=function(e){return this._monthsParseExact?(s(this,"_monthsRegex")||Ye.call(this),e?this._monthsStrictRegex:this._monthsRegex):(s(this,"_monthsRegex")||(this._monthsRegex=De),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},gr.monthsShortRegex=function(e){return this._monthsParseExact?(s(this,"_monthsRegex")||Ye.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(s(this,"_monthsShortRegex")||(this._monthsShortRegex=Le),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},gr.week=function(e){return je(e,this._week.dow,this._week.doy).week},gr.firstDayOfYear=function(){return this._week.doy},gr.firstDayOfWeek=function(){return this._week.dow},gr.weekdays=function(e,t){var r=a(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?He(r,this._week.dow):e?r[e.day()]:r},gr.weekdaysMin=function(e){return!0===e?He(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},gr.weekdaysShort=function(e){return!0===e?He(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},gr.weekdaysParse=function(e,t,r){var i,n,a;if(this._weekdaysParseExact)return Ge.call(this,e,t,r);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(n=m([2e3,1]).day(i),r&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(n,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(n,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(n,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(a="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[i]=new RegExp(a.replace(".",""),"i")),r&&"dddd"===t&&this._fullWeekdaysParse[i].test(e))return i;if(r&&"ddd"===t&&this._shortWeekdaysParse[i].test(e))return i;if(r&&"dd"===t&&this._minWeekdaysParse[i].test(e))return i;if(!r&&this._weekdaysParse[i].test(e))return i}},gr.weekdaysRegex=function(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||qe.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(s(this,"_weekdaysRegex")||(this._weekdaysRegex=ze),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},gr.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||qe.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(s(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Xe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},gr.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||qe.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(s(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ve),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},gr.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},gr.meridiem=function(e,t,r){return e>11?r?"pm":"PM":r?"am":"AM"},ot("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===ce(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),n.lang=A("moment.lang is deprecated. Use moment.locale instead.",ot),n.langData=A("moment.langData is deprecated. Use moment.localeData instead.",dt);var Mr=Math.abs;function Er(e,t,r,i){var n=Bt(t,r);return e._milliseconds+=i*n._milliseconds,e._days+=i*n._days,e._months+=i*n._months,e._bubble()}function Ar(e){return e<0?Math.floor(e):Math.ceil(e)}function Tr(e){return 4800*e/146097}function kr(e){return 146097*e/4800}function Sr(e){return function(){return this.as(e)}}var Lr=Sr("ms"),Dr=Sr("s"),Rr=Sr("m"),xr=Sr("h"),Or=Sr("d"),Yr=Sr("w"),Ir=Sr("M"),Pr=Sr("Q"),Cr=Sr("y"),Nr=Lr;function jr(e){return function(){return this.isValid()?this._data[e]:NaN}}var Fr=jr("milliseconds"),Hr=jr("seconds"),Ur=jr("minutes"),Br=jr("hours"),Wr=jr("days"),zr=jr("months"),Xr=jr("years"),Vr=Math.round,Gr={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function qr(e,t,r,i,n){return n.relativeTime(t||1,!!r,e,i)}var Qr=Math.abs;function Kr(e){return(e>0)-(e<0)||+e}function Jr(){if(!this.isValid())return this.localeData().invalidDate();var e,t,r,i,n,a,o,s,d=Qr(this._milliseconds)/1e3,u=Qr(this._days),l=Qr(this._months),h=this.asSeconds();return h?(e=he(d/60),t=he(e/60),d%=60,e%=60,r=he(l/12),l%=12,i=d?d.toFixed(3).replace(/\.?0+$/,""):"",n=h<0?"-":"",a=Kr(this._months)!==Kr(h)?"-":"",o=Kr(this._days)!==Kr(h)?"-":"",s=Kr(this._milliseconds)!==Kr(h)?"-":"",n+"P"+(r?a+r+"Y":"")+(l?a+l+"M":"")+(u?o+u+"D":"")+(t||e||d?"T":"")+(t?s+t+"H":"")+(e?s+e+"M":"")+(d?s+i+"S":"")):"P0D"}var Zr=xt.prototype;return Zr.isValid=function(){return this._isValid},Zr.abs=function(){var e=this._data;return this._milliseconds=Mr(this._milliseconds),this._days=Mr(this._days),this._months=Mr(this._months),e.milliseconds=Mr(e.milliseconds),e.seconds=Mr(e.seconds),e.minutes=Mr(e.minutes),e.hours=Mr(e.hours),e.months=Mr(e.months),e.years=Mr(e.years),this},Zr.add=function(e,t){return Er(this,e,t,1)},Zr.subtract=function(e,t){return Er(this,e,t,-1)},Zr.as=function(e){if(!this.isValid())return NaN;var t,r,i=this._milliseconds;if("month"===(e=H(e))||"quarter"===e||"year"===e)switch(t=this._days+i/864e5,r=this._months+Tr(t),e){case"month":return r;case"quarter":return r/3;case"year":return r/12}else switch(t=this._days+Math.round(kr(this._months)),e){case"week":return t/7+i/6048e5;case"day":return t+i/864e5;case"hour":return 24*t+i/36e5;case"minute":return 1440*t+i/6e4;case"second":return 86400*t+i/1e3;case"millisecond":return Math.floor(864e5*t)+i;default:throw new Error("Unknown unit "+e)}},Zr.asMilliseconds=Lr,Zr.asSeconds=Dr,Zr.asMinutes=Rr,Zr.asHours=xr,Zr.asDays=Or,Zr.asWeeks=Yr,Zr.asMonths=Ir,Zr.asQuarters=Pr,Zr.asYears=Cr,Zr.valueOf=Nr,Zr._bubble=function(){var e,t,r,i,n,a=this._milliseconds,o=this._days,s=this._months,d=this._data;return a>=0&&o>=0&&s>=0||a<=0&&o<=0&&s<=0||(a+=864e5*Ar(kr(s)+o),o=0,s=0),d.milliseconds=a%1e3,e=he(a/1e3),d.seconds=e%60,t=he(e/60),d.minutes=t%60,r=he(t/60),d.hours=r%24,o+=he(r/24),n=he(Tr(o)),s+=n,o-=Ar(kr(n)),i=he(s/12),s%=12,d.days=o,d.months=s,d.years=i,this},Zr.clone=function(){return Bt(this)},Zr.get=function(e){return e=H(e),this.isValid()?this[e+"s"]():NaN},Zr.milliseconds=Fr,Zr.seconds=Hr,Zr.minutes=Ur,Zr.hours=Br,Zr.days=Wr,Zr.weeks=function(){return he(this.days()/7)},Zr.months=zr,Zr.years=Xr,Zr.humanize=function(e,t){if(!this.isValid())return this.localeData().invalidDate();var r,i,n=!1,a=Gr;return"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(n=e),"object"==typeof t&&(a=Object.assign({},Gr,t),null!=t.s&&null==t.ss&&(a.ss=t.s-1)),r=this.localeData(),i=function(e,t,r,i){var n=Bt(e).abs(),a=Vr(n.as("s")),o=Vr(n.as("m")),s=Vr(n.as("h")),d=Vr(n.as("d")),u=Vr(n.as("M")),l=Vr(n.as("w")),h=Vr(n.as("y")),c=a<=r.ss&&["s",a]||a0,c[4]=i,qr.apply(null,c)}(this,!n,a,r),n&&(i=r.pastFuture(+this,i)),r.postformat(i)},Zr.toISOString=Jr,Zr.toString=Jr,Zr.toJSON=Jr,Zr.locale=$t,Zr.localeData=tr,Zr.toIsoString=A("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Jr),Zr.lang=er,C("X",0,0,"unix"),C("x",0,0,"valueOf"),de("x",re),de("X",/[+-]?\d+(\.\d{1,3})?/),me("X",(function(e,t,r){r._d=new Date(1e3*parseFloat(e))})),me("x",(function(e,t,r){r._d=new Date(ce(e))})), +//! moment.js +n.version="2.30.1",t=kt,n.fn=pr,n.min=function(){var e=[].slice.call(arguments,0);return Dt("isBefore",e)},n.max=function(){var e=[].slice.call(arguments,0);return Dt("isAfter",e)},n.now=function(){return Date.now?Date.now():+new Date},n.utc=m,n.unix=function(e){return kt(1e3*e)},n.months=function(e,t){return vr(e,t,"months")},n.isDate=h,n.locale=ot,n.invalid=y,n.duration=Bt,n.isMoment=M,n.weekdays=function(e,t,r){return wr(e,t,r,"weekdays")},n.parseZone=function(){return kt.apply(null,arguments).parseZone()},n.localeData=dt,n.isDuration=Ot,n.monthsShort=function(e,t){return vr(e,t,"monthsShort")},n.weekdaysMin=function(e,t,r){return wr(e,t,r,"weekdaysMin")},n.defineLocale=st,n.updateLocale=function(e,t){if(null!=t){var r,i,n=et;null!=tt[e]&&null!=tt[e].parentLocale?tt[e].set(D(tt[e]._config,t)):(null!=(i=at(e))&&(n=i._config),t=D(n,t),null==i&&(t.abbr=e),(r=new R(t)).parentLocale=tt[e],tt[e]=r),ot(e)}else null!=tt[e]&&(null!=tt[e].parentLocale?(tt[e]=tt[e].parentLocale,e===ot()&&ot(e)):null!=tt[e]&&delete tt[e]);return tt[e]},n.locales=function(){return T(tt)},n.weekdaysShort=function(e,t,r){return wr(e,t,r,"weekdaysShort")},n.normalizeUnits=H,n.relativeTimeRounding=function(e){return void 0===e?Vr:"function"==typeof e&&(Vr=e,!0)},n.relativeTimeThreshold=function(e,t){return void 0!==Gr[e]&&(void 0===t?Gr[e]:(Gr[e]=t,"s"===e&&(Gr.ss=t-1),!0))},n.calendarFormat=function(e,t){var r=e.diff(t,"days",!0);return r<-6?"sameElse":r<-1?"lastWeek":r<0?"lastDay":r<1?"sameDay":r<2?"nextDay":r<7?"nextWeek":"sameElse"},n.prototype=pr,n.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},n}()}).call(this,r(44)(e))},function(e,t,r){"use strict";var i=r(9),n=r.n(i),a=function(){function e(){}return e.e=function(t,r){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+r;e.ENABLE_CALLBACK&&e.emitter.emit("log","error",i),e.ENABLE_ERROR&&(console.error?console.error(i):console.warn?console.warn(i):console.log(i))},e.i=function(t,r){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+r;e.ENABLE_CALLBACK&&e.emitter.emit("log","info",i),e.ENABLE_INFO&&(console.info?console.info(i):console.log(i))},e.w=function(t,r){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+r;e.ENABLE_CALLBACK&&e.emitter.emit("log","warn",i),e.ENABLE_WARN&&(console.warn?console.warn(i):console.log(i))},e.d=function(t,r){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+r;e.ENABLE_CALLBACK&&e.emitter.emit("log","debug",i),e.ENABLE_DEBUG&&(console.debug?console.debug(i):console.log(i))},e.v=function(t,r){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+r;e.ENABLE_CALLBACK&&e.emitter.emit("log","verbose",i),e.ENABLE_VERBOSE&&console.log(i)},e}();a.GLOBAL_TAG="flv.js",a.FORCE_GLOBAL_TAG=!1,a.ENABLE_ERROR=!0,a.ENABLE_INFO=!1,a.ENABLE_WARN=!1,a.ENABLE_DEBUG=!1,a.ENABLE_VERBOSE=!1,a.ENABLE_CALLBACK=!1,a.emitter=new n.a,t.a=a},function(e,t,r){"use strict";r.d(t,"H",(function(){return i})),r.d(t,"F",(function(){return n})),r.d(t,"G",(function(){return a})),r.d(t,"x",(function(){return o})),r.d(t,"m",(function(){return s})),r.d(t,"r",(function(){return d})),r.d(t,"z",(function(){return u})),r.d(t,"w",(function(){return l})),r.d(t,"l",(function(){return h})),r.d(t,"t",(function(){return c})),r.d(t,"u",(function(){return f})),r.d(t,"n",(function(){return m})),r.d(t,"E",(function(){return _})),r.d(t,"y",(function(){return p})),r.d(t,"B",(function(){return y})),r.d(t,"C",(function(){return g})),r.d(t,"v",(function(){return b})),r.d(t,"s",(function(){return v})),r.d(t,"p",(function(){return w})),r.d(t,"A",(function(){return M})),r.d(t,"o",(function(){return E})),r.d(t,"k",(function(){return A})),r.d(t,"b",(function(){return T})),r.d(t,"a",(function(){return k})),r.d(t,"f",(function(){return S})),r.d(t,"q",(function(){return L})),r.d(t,"D",(function(){return D})),r.d(t,"i",(function(){return O})),r.d(t,"d",(function(){return Y})),r.d(t,"h",(function(){return I})),r.d(t,"c",(function(){return P})),r.d(t,"j",(function(){return C})),r.d(t,"e",(function(){return N})),r.d(t,"g",(function(){return j}));var i=1,n=2,a=3,o=1,s=2,d=3,u=4,l=6,h=7,c=10,f=11,m=12,_=13,p=14,y=15,g=16,b=20,v=21,w=102,M=103,E=200,A="SPEED",T=1,k=2,S=3,L=22,D=23,R=!0,x=!0;function O(e){R=e}function Y(){return R}function I(e){e}function P(){return x}function C(e){return new Promise((function(t){return setTimeout(t,e)}))}function N(e){var t,r=new Date,i=r.getFullYear(),n=r.getMonth()+1,a=r.getDate();r.getDay();t=i+"-"+n+"-"+a+" "+r.getHours()+":"+r.getMinutes()+":"+r.getSeconds(),console.log("["+t+"]: "+e)}function j(){var e="",t=window.location.href,r=Array.from(document.getElementsByTagName("script")).find((function(e){return e.src.includes("EasyPlayer-lib.min.js")||e.src.includes("EasyPlayer-element.min.js")}));if(r&&r.src){var i=r.src;console.log("getFullURL = ",r,r.src,r.src.replace("EasyPlayer-element.min.js","")),e=i.replace(i.includes("EasyPlayer-lib.min.js")?"EasyPlayer-lib.min.js":"EasyPlayer-element.min.js","")}else for(var n=t.split("/"),a=0;a<3;a++)e+=n[a],e+="/";return console.log("getFullURL path = ",e),e}},function(e,t,r){"use strict";t.a={IO_ERROR:"io_error",DEMUX_ERROR:"demux_error",INIT_SEGMENT:"init_segment",MEDIA_SEGMENT:"media_segment",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",METADATA_ARRIVED:"metadata_arrived",SCRIPTDATA_ARRIVED:"scriptdata_arrived",STATISTICS_INFO:"statistics_info",RECOMMEND_SEEKPOINT:"recommend_seekpoint",RECONNECT_ING:"reconnect_ing",RECONNECT_SUCCESS:"reconnect_success",IS_ENCODED_H265:"encoded_265",SOURCE_ENDED:"source_ended",UPDATE_DURATION:"update_duration",UPDATE_KBPS:"update_kbps",SOCKET_CLOSE:"socket_close",SEI_DATA:"sei_data",AUDIO_ERROR:"audio_error",ON_DBL_CLICK:"ondblclick",RECORDING:"recording"}},function(e,t,r){"use strict";r.d(t,"c",(function(){return o})),r.d(t,"b",(function(){return s})),r.d(t,"a",(function(){return d}));var i=r(5);function n(e,t){for(var r=0;r */ +var i=r(10),n=i.Buffer;function a(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=i:(a(i,t),t.Buffer=o),o.prototype=Object.create(n.prototype),a(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i.SlowBuffer(e)}},function(e,t,r){"use strict";var i={};!function(){var e=self.navigator.userAgent.toLowerCase(),t=/(edge)\/([\w.]+)/.exec(e)||/(opr)[\/]([\w.]+)/.exec(e)||/(chrome)[ \/]([\w.]+)/.exec(e)||/(iemobile)[\/]([\w.]+)/.exec(e)||/(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("trident")>=0&&/(rv)(?::| )([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(firefox)[ \/]([\w.]+)/.exec(e)||[],r=/(ipad)/.exec(e)||/(ipod)/.exec(e)||/(windows phone)/.exec(e)||/(iphone)/.exec(e)||/(kindle)/.exec(e)||/(android)/.exec(e)||/(windows)/.exec(e)||/(mac)/.exec(e)||/(linux)/.exec(e)||/(cros)/.exec(e)||[],n={browser:t[5]||t[3]||t[1]||"",version:t[2]||t[4]||"0",majorVersion:t[4]||t[2]||"0",platform:r[0]||""},a={};if(n.browser){a[n.browser]=!0;var o=n.majorVersion.split(".");a.version={major:parseInt(n.majorVersion,10),string:n.version},o.length>1&&(a.version.minor=parseInt(o[1],10)),o.length>2&&(a.version.build=parseInt(o[2],10))}if(n.platform&&(a[n.platform]=!0),(a.chrome||a.opr||a.safari)&&(a.webkit=!0),a.rv||a.iemobile){a.rv&&delete a.rv;n.browser="msie",a.msie=!0}if(a.edge){delete a.edge;n.browser="msedge",a.msedge=!0}if(a.opr){n.browser="opera",a.opera=!0}if(a.safari&&a.android){n.browser="android",a.android=!0}for(var s in a.name=n.browser,a.platform=n.platform,i)i.hasOwnProperty(s)&&delete i[s];Object.assign(i,a)}(),t.a=i},function(e,t,r){"use strict";var i,n="object"==typeof Reflect?Reflect:null,a=n&&"function"==typeof n.apply?n.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};i=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var o=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,e.exports.once=function(e,t){return new Promise((function(r,i){function n(r){e.removeListener(t,a),i(r)}function a(){"function"==typeof e.removeListener&&e.removeListener("error",n),r([].slice.call(arguments))}y(e,t,a,{once:!0}),"error"!==t&&function(e,t,r){"function"==typeof e.on&&y(e,"error",t,r)}(e,n,{once:!0})}))},s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var d=10;function u(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function l(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function h(e,t,r,i){var n,a,o,s;if(u(r),void 0===(a=e._events)?(a=e._events=Object.create(null),e._eventsCount=0):(void 0!==a.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),a=e._events),o=a[t]),void 0===o)o=a[t]=r,++e._eventsCount;else if("function"==typeof o?o=a[t]=i?[r,o]:[o,r]:i?o.unshift(r):o.push(r),(n=l(e))>0&&o.length>n&&!o.warned){o.warned=!0;var d=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");d.name="MaxListenersExceededWarning",d.emitter=e,d.type=t,d.count=o.length,s=d,console&&console.warn&&console.warn(s)}return e}function c(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function f(e,t,r){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},n=c.bind(i);return n.listener=r,i.wrapFn=n,n}function m(e,t,r){var i=e._events;if(void 0===i)return[];var n=i[t];return void 0===n?[]:"function"==typeof n?r?[n.listener||n]:[n]:r?function(e){for(var t=new Array(e.length),r=0;r0&&(o=t[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var d=n[e];if(void 0===d)return!1;if("function"==typeof d)a(d,this,t);else{var u=d.length,l=p(d,u);for(r=0;r=0;a--)if(r[a]===t||r[a].listener===t){o=r[a].listener,n=a;break}if(n<0)return this;0===n?r.shift():function(e,t){for(;t+1=0;i--)this.removeListener(e,t[i]);return this},s.prototype.listeners=function(e){return m(this,e,!0)},s.prototype.rawListeners=function(e){return m(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):_.call(e,t)},s.prototype.listenerCount=_,s.prototype.eventNames=function(){return this._eventsCount>0?i(this._events):[]}},function(e,t,r){"use strict";(function(e){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +var i=r(260),n=r(261),a=r(66);function o(){return d.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(o()=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|e}function m(e,t){if(d.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return H(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return U(e).length;default:if(i)return H(e).length;t=(""+t).toLowerCase(),i=!0}}function _(e,t,r){var i=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,r);case"utf8":case"utf-8":return k(this,t,r);case"ascii":return S(this,t,r);case"latin1":case"binary":return L(this,t,r);case"base64":return T(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,t,r);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}function p(e,t,r){var i=e[t];e[t]=e[r],e[r]=i}function y(e,t,r,i,n){if(0===e.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=n?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(n)return-1;r=e.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof t&&(t=d.from(t,i)),d.isBuffer(t))return 0===t.length?-1:g(e,t,r,i,n);if("number"==typeof t)return t&=255,d.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):g(e,[t],r,i,n);throw new TypeError("val must be string, number or Buffer")}function g(e,t,r,i,n){var a,o=1,s=e.length,d=t.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return-1;o=2,s/=2,d/=2,r/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(n){var l=-1;for(a=r;as&&(r=s-d),a=r;a>=0;a--){for(var h=!0,c=0;cn&&(i=n):i=n;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");i>a/2&&(i=a/2);for(var o=0;o>8,n=r%256,a.push(n),a.push(i);return a}(t,e.length-r),e,r,i)}function T(e,t,r){return 0===t&&r===e.length?i.fromByteArray(e):i.fromByteArray(e.slice(t,r))}function k(e,t,r){r=Math.min(e.length,r);for(var i=[],n=t;n239?4:u>223?3:u>191?2:1;if(n+h<=r)switch(h){case 1:u<128&&(l=u);break;case 2:128==(192&(a=e[n+1]))&&(d=(31&u)<<6|63&a)>127&&(l=d);break;case 3:a=e[n+1],o=e[n+2],128==(192&a)&&128==(192&o)&&(d=(15&u)<<12|(63&a)<<6|63&o)>2047&&(d<55296||d>57343)&&(l=d);break;case 4:a=e[n+1],o=e[n+2],s=e[n+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(d=(15&u)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&d<1114112&&(l=d)}null===l?(l=65533,h=1):l>65535&&(l-=65536,i.push(l>>>10&1023|55296),l=56320|1023&l),i.push(l),n+=h}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var r="",i=0;for(;i0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),""},d.prototype.compare=function(e,t,r,i,n){if(!d.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),t<0||r>e.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&t>=r)return 0;if(i>=n)return-1;if(t>=r)return 1;if(this===e)return 0;for(var a=(n>>>=0)-(i>>>=0),o=(r>>>=0)-(t>>>=0),s=Math.min(a,o),u=this.slice(i,n),l=e.slice(t,r),h=0;hn)&&(r=n),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var a=!1;;)switch(i){case"hex":return b(this,e,t,r);case"utf8":case"utf-8":return v(this,e,t,r);case"ascii":return w(this,e,t,r);case"latin1":case"binary":return M(this,e,t,r);case"base64":return E(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,t,r);default:if(a)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),a=!0}},d.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function S(e,t,r){var i="";r=Math.min(e.length,r);for(var n=t;ni)&&(r=i);for(var n="",a=t;ar)throw new RangeError("Trying to access beyond buffer length")}function O(e,t,r,i,n,a){if(!d.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>n||te.length)throw new RangeError("Index out of range")}function Y(e,t,r,i){t<0&&(t=65535+t+1);for(var n=0,a=Math.min(e.length-r,2);n>>8*(i?n:1-n)}function I(e,t,r,i){t<0&&(t=4294967295+t+1);for(var n=0,a=Math.min(e.length-r,4);n>>8*(i?n:3-n)&255}function P(e,t,r,i,n,a){if(r+i>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function C(e,t,r,i,a){return a||P(e,0,r,4),n.write(e,t,r,i,23,4),r+4}function N(e,t,r,i,a){return a||P(e,0,r,8),n.write(e,t,r,i,52,8),r+8}d.prototype.slice=function(e,t){var r,i=this.length;if((e=~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),(t=void 0===t?i:~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),t0&&(n*=256);)i+=this[e+--t]*n;return i},d.prototype.readUInt8=function(e,t){return t||x(e,1,this.length),this[e]},d.prototype.readUInt16LE=function(e,t){return t||x(e,2,this.length),this[e]|this[e+1]<<8},d.prototype.readUInt16BE=function(e,t){return t||x(e,2,this.length),this[e]<<8|this[e+1]},d.prototype.readUInt32LE=function(e,t){return t||x(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},d.prototype.readUInt32BE=function(e,t){return t||x(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},d.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||x(e,t,this.length);for(var i=this[e],n=1,a=0;++a=(n*=128)&&(i-=Math.pow(2,8*t)),i},d.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||x(e,t,this.length);for(var i=t,n=1,a=this[e+--i];i>0&&(n*=256);)a+=this[e+--i]*n;return a>=(n*=128)&&(a-=Math.pow(2,8*t)),a},d.prototype.readInt8=function(e,t){return t||x(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},d.prototype.readInt16LE=function(e,t){t||x(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},d.prototype.readInt16BE=function(e,t){t||x(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},d.prototype.readInt32LE=function(e,t){return t||x(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},d.prototype.readInt32BE=function(e,t){return t||x(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},d.prototype.readFloatLE=function(e,t){return t||x(e,4,this.length),n.read(this,e,!0,23,4)},d.prototype.readFloatBE=function(e,t){return t||x(e,4,this.length),n.read(this,e,!1,23,4)},d.prototype.readDoubleLE=function(e,t){return t||x(e,8,this.length),n.read(this,e,!0,52,8)},d.prototype.readDoubleBE=function(e,t){return t||x(e,8,this.length),n.read(this,e,!1,52,8)},d.prototype.writeUIntLE=function(e,t,r,i){(e=+e,t|=0,r|=0,i)||O(this,e,t,r,Math.pow(2,8*r)-1,0);var n=1,a=0;for(this[t]=255&e;++a=0&&(a*=256);)this[t+n]=e/a&255;return t+r},d.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||O(this,e,t,1,255,0),d.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},d.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||O(this,e,t,2,65535,0),d.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):Y(this,e,t,!0),t+2},d.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||O(this,e,t,2,65535,0),d.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):Y(this,e,t,!1),t+2},d.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||O(this,e,t,4,4294967295,0),d.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):I(this,e,t,!0),t+4},d.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||O(this,e,t,4,4294967295,0),d.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):I(this,e,t,!1),t+4},d.prototype.writeIntLE=function(e,t,r,i){if(e=+e,t|=0,!i){var n=Math.pow(2,8*r-1);O(this,e,t,r,n-1,-n)}var a=0,o=1,s=0;for(this[t]=255&e;++a>0)-s&255;return t+r},d.prototype.writeIntBE=function(e,t,r,i){if(e=+e,t|=0,!i){var n=Math.pow(2,8*r-1);O(this,e,t,r,n-1,-n)}var a=r-1,o=1,s=0;for(this[t+a]=255&e;--a>=0&&(o*=256);)e<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(e/o>>0)-s&255;return t+r},d.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||O(this,e,t,1,127,-128),d.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},d.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||O(this,e,t,2,32767,-32768),d.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):Y(this,e,t,!0),t+2},d.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||O(this,e,t,2,32767,-32768),d.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):Y(this,e,t,!1),t+2},d.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||O(this,e,t,4,2147483647,-2147483648),d.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):I(this,e,t,!0),t+4},d.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||O(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),d.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):I(this,e,t,!1),t+4},d.prototype.writeFloatLE=function(e,t,r){return C(this,e,t,!0,r)},d.prototype.writeFloatBE=function(e,t,r){return C(this,e,t,!1,r)},d.prototype.writeDoubleLE=function(e,t,r){return N(this,e,t,!0,r)},d.prototype.writeDoubleBE=function(e,t,r){return N(this,e,t,!1,r)},d.prototype.copy=function(e,t,r,i){if(r||(r=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t=0;--n)e[n+t]=this[n+r];else if(a<1e3||!d.TYPED_ARRAY_SUPPORT)for(n=0;n>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(a=t;a55295&&r<57344){if(!n){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===i){(t-=3)>-1&&a.push(239,191,189);continue}n=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(t-=3)>-1&&a.push(239,191,189);if(n=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function U(e){return i.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(j,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function B(e,t,r,i){for(var n=0;n=t.length||n>=e.length);++n)t[n+r]=e[n];return n}}).call(this,r(14))},function(e,t){var r,i,n=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(e){if(r===setTimeout)return setTimeout(e,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(e){r=a}try{i="function"==typeof clearTimeout?clearTimeout:o}catch(e){i=o}}();var d,u=[],l=!1,h=-1;function c(){l&&d&&(l=!1,d.length?u=d.concat(u):h=-1,u.length&&f())}function f(){if(!l){var e=s(c);l=!0;for(var t=u.length;t;){for(d=u,u=[];++h1)for(var r=1;r=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function d(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function u(e,t,r,i){for(var n=0,a=Math.min(e.length,r),o=t;o=49?s-49+10:s>=17?s-17+10:s}return n}a.isBN=function(e){return e instanceof a||null!==e&&"object"==typeof e&&e.constructor.wordSize===a.wordSize&&Array.isArray(e.words)},a.max=function(e,t){return e.cmp(t)>0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=d(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this.strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,d=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],c=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,d=o/67108864|0;r.words[0]=s;for(var u=1;u>>26,h=67108863&d,c=Math.min(u,t.length-1),f=Math.max(0,u-e.length+1);f<=c;f++){var m=u-f|0;l+=(o=(n=0|e.words[m])*(a=0|t.words[f])+h)/67108864|0,h=67108863&o}r.words[u]=0|h,d=0|l}return 0!==d?r.words[u]=0|d:r.length--,r.strip()}a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215)||o!==this.length-1?l[6-d.length]+d+r:d+r,(n+=2)>=26&&(n-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var u=h[e],f=c[e];r="";var m=this.clone();for(m.negative=0;!m.isZero();){var _=m.modn(f).toString(e);r=(m=m.idivn(f)).isZero()?_+r:l[u-_.length]+_+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(e,t){return i(void 0!==o),this.toArrayLike(o,e,t)},a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0"),this.strip();var o,s,d="le"===t,u=new e(a),l=this.clone();if(d){for(s=0;!l.isZero();s++)o=l.andln(255),l.iushrn(8),u[s]=o;for(;s=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,f=0|o[1],m=8191&f,_=f>>>13,p=0|o[2],y=8191&p,g=p>>>13,b=0|o[3],v=8191&b,w=b>>>13,M=0|o[4],E=8191&M,A=M>>>13,T=0|o[5],k=8191&T,S=T>>>13,L=0|o[6],D=8191&L,R=L>>>13,x=0|o[7],O=8191&x,Y=x>>>13,I=0|o[8],P=8191&I,C=I>>>13,N=0|o[9],j=8191&N,F=N>>>13,H=0|s[0],U=8191&H,B=H>>>13,W=0|s[1],z=8191&W,X=W>>>13,V=0|s[2],G=8191&V,q=V>>>13,Q=0|s[3],K=8191&Q,J=Q>>>13,Z=0|s[4],$=8191&Z,ee=Z>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],de=8191&se,ue=se>>>13,le=0|s[8],he=8191&le,ce=le>>>13,fe=0|s[9],me=8191&fe,_e=fe>>>13;r.negative=e.negative^t.negative,r.length=19;var pe=(u+(i=Math.imul(h,U))|0)+((8191&(n=(n=Math.imul(h,B))+Math.imul(c,U)|0))<<13)|0;u=((a=Math.imul(c,B))+(n>>>13)|0)+(pe>>>26)|0,pe&=67108863,i=Math.imul(m,U),n=(n=Math.imul(m,B))+Math.imul(_,U)|0,a=Math.imul(_,B);var ye=(u+(i=i+Math.imul(h,z)|0)|0)+((8191&(n=(n=n+Math.imul(h,X)|0)+Math.imul(c,z)|0))<<13)|0;u=((a=a+Math.imul(c,X)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(y,U),n=(n=Math.imul(y,B))+Math.imul(g,U)|0,a=Math.imul(g,B),i=i+Math.imul(m,z)|0,n=(n=n+Math.imul(m,X)|0)+Math.imul(_,z)|0,a=a+Math.imul(_,X)|0;var ge=(u+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,q)|0)+Math.imul(c,G)|0))<<13)|0;u=((a=a+Math.imul(c,q)|0)+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(v,U),n=(n=Math.imul(v,B))+Math.imul(w,U)|0,a=Math.imul(w,B),i=i+Math.imul(y,z)|0,n=(n=n+Math.imul(y,X)|0)+Math.imul(g,z)|0,a=a+Math.imul(g,X)|0,i=i+Math.imul(m,G)|0,n=(n=n+Math.imul(m,q)|0)+Math.imul(_,G)|0,a=a+Math.imul(_,q)|0;var be=(u+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,J)|0)+Math.imul(c,K)|0))<<13)|0;u=((a=a+Math.imul(c,J)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(E,U),n=(n=Math.imul(E,B))+Math.imul(A,U)|0,a=Math.imul(A,B),i=i+Math.imul(v,z)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(w,z)|0,a=a+Math.imul(w,X)|0,i=i+Math.imul(y,G)|0,n=(n=n+Math.imul(y,q)|0)+Math.imul(g,G)|0,a=a+Math.imul(g,q)|0,i=i+Math.imul(m,K)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(_,K)|0,a=a+Math.imul(_,J)|0;var ve=(u+(i=i+Math.imul(h,$)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(c,$)|0))<<13)|0;u=((a=a+Math.imul(c,ee)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(k,U),n=(n=Math.imul(k,B))+Math.imul(S,U)|0,a=Math.imul(S,B),i=i+Math.imul(E,z)|0,n=(n=n+Math.imul(E,X)|0)+Math.imul(A,z)|0,a=a+Math.imul(A,X)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,q)|0,i=i+Math.imul(y,K)|0,n=(n=n+Math.imul(y,J)|0)+Math.imul(g,K)|0,a=a+Math.imul(g,J)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,ee)|0)+Math.imul(_,$)|0,a=a+Math.imul(_,ee)|0;var we=(u+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(c,re)|0))<<13)|0;u=((a=a+Math.imul(c,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(D,U),n=(n=Math.imul(D,B))+Math.imul(R,U)|0,a=Math.imul(R,B),i=i+Math.imul(k,z)|0,n=(n=n+Math.imul(k,X)|0)+Math.imul(S,z)|0,a=a+Math.imul(S,X)|0,i=i+Math.imul(E,G)|0,n=(n=n+Math.imul(E,q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,q)|0,i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,J)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,J)|0,i=i+Math.imul(y,$)|0,n=(n=n+Math.imul(y,ee)|0)+Math.imul(g,$)|0,a=a+Math.imul(g,ee)|0,i=i+Math.imul(m,re)|0,n=(n=n+Math.imul(m,ie)|0)+Math.imul(_,re)|0,a=a+Math.imul(_,ie)|0;var Me=(u+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(c,ae)|0))<<13)|0;u=((a=a+Math.imul(c,oe)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(O,U),n=(n=Math.imul(O,B))+Math.imul(Y,U)|0,a=Math.imul(Y,B),i=i+Math.imul(D,z)|0,n=(n=n+Math.imul(D,X)|0)+Math.imul(R,z)|0,a=a+Math.imul(R,X)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,q)|0,i=i+Math.imul(E,K)|0,n=(n=n+Math.imul(E,J)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,J)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(w,$)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(y,re)|0,n=(n=n+Math.imul(y,ie)|0)+Math.imul(g,re)|0,a=a+Math.imul(g,ie)|0,i=i+Math.imul(m,ae)|0,n=(n=n+Math.imul(m,oe)|0)+Math.imul(_,ae)|0,a=a+Math.imul(_,oe)|0;var Ee=(u+(i=i+Math.imul(h,de)|0)|0)+((8191&(n=(n=n+Math.imul(h,ue)|0)+Math.imul(c,de)|0))<<13)|0;u=((a=a+Math.imul(c,ue)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(P,U),n=(n=Math.imul(P,B))+Math.imul(C,U)|0,a=Math.imul(C,B),i=i+Math.imul(O,z)|0,n=(n=n+Math.imul(O,X)|0)+Math.imul(Y,z)|0,a=a+Math.imul(Y,X)|0,i=i+Math.imul(D,G)|0,n=(n=n+Math.imul(D,q)|0)+Math.imul(R,G)|0,a=a+Math.imul(R,q)|0,i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,J)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,J)|0,i=i+Math.imul(E,$)|0,n=(n=n+Math.imul(E,ee)|0)+Math.imul(A,$)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(y,ae)|0,n=(n=n+Math.imul(y,oe)|0)+Math.imul(g,ae)|0,a=a+Math.imul(g,oe)|0,i=i+Math.imul(m,de)|0,n=(n=n+Math.imul(m,ue)|0)+Math.imul(_,de)|0,a=a+Math.imul(_,ue)|0;var Ae=(u+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(c,he)|0))<<13)|0;u=((a=a+Math.imul(c,ce)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(j,U),n=(n=Math.imul(j,B))+Math.imul(F,U)|0,a=Math.imul(F,B),i=i+Math.imul(P,z)|0,n=(n=n+Math.imul(P,X)|0)+Math.imul(C,z)|0,a=a+Math.imul(C,X)|0,i=i+Math.imul(O,G)|0,n=(n=n+Math.imul(O,q)|0)+Math.imul(Y,G)|0,a=a+Math.imul(Y,q)|0,i=i+Math.imul(D,K)|0,n=(n=n+Math.imul(D,J)|0)+Math.imul(R,K)|0,a=a+Math.imul(R,J)|0,i=i+Math.imul(k,$)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,$)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(E,re)|0,n=(n=n+Math.imul(E,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(y,de)|0,n=(n=n+Math.imul(y,ue)|0)+Math.imul(g,de)|0,a=a+Math.imul(g,ue)|0,i=i+Math.imul(m,he)|0,n=(n=n+Math.imul(m,ce)|0)+Math.imul(_,he)|0,a=a+Math.imul(_,ce)|0;var Te=(u+(i=i+Math.imul(h,me)|0)|0)+((8191&(n=(n=n+Math.imul(h,_e)|0)+Math.imul(c,me)|0))<<13)|0;u=((a=a+Math.imul(c,_e)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(j,z),n=(n=Math.imul(j,X))+Math.imul(F,z)|0,a=Math.imul(F,X),i=i+Math.imul(P,G)|0,n=(n=n+Math.imul(P,q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,q)|0,i=i+Math.imul(O,K)|0,n=(n=n+Math.imul(O,J)|0)+Math.imul(Y,K)|0,a=a+Math.imul(Y,J)|0,i=i+Math.imul(D,$)|0,n=(n=n+Math.imul(D,ee)|0)+Math.imul(R,$)|0,a=a+Math.imul(R,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(E,ae)|0,n=(n=n+Math.imul(E,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(v,de)|0,n=(n=n+Math.imul(v,ue)|0)+Math.imul(w,de)|0,a=a+Math.imul(w,ue)|0,i=i+Math.imul(y,he)|0,n=(n=n+Math.imul(y,ce)|0)+Math.imul(g,he)|0,a=a+Math.imul(g,ce)|0;var ke=(u+(i=i+Math.imul(m,me)|0)|0)+((8191&(n=(n=n+Math.imul(m,_e)|0)+Math.imul(_,me)|0))<<13)|0;u=((a=a+Math.imul(_,_e)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(j,G),n=(n=Math.imul(j,q))+Math.imul(F,G)|0,a=Math.imul(F,q),i=i+Math.imul(P,K)|0,n=(n=n+Math.imul(P,J)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,J)|0,i=i+Math.imul(O,$)|0,n=(n=n+Math.imul(O,ee)|0)+Math.imul(Y,$)|0,a=a+Math.imul(Y,ee)|0,i=i+Math.imul(D,re)|0,n=(n=n+Math.imul(D,ie)|0)+Math.imul(R,re)|0,a=a+Math.imul(R,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(E,de)|0,n=(n=n+Math.imul(E,ue)|0)+Math.imul(A,de)|0,a=a+Math.imul(A,ue)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,ce)|0;var Se=(u+(i=i+Math.imul(y,me)|0)|0)+((8191&(n=(n=n+Math.imul(y,_e)|0)+Math.imul(g,me)|0))<<13)|0;u=((a=a+Math.imul(g,_e)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(j,K),n=(n=Math.imul(j,J))+Math.imul(F,K)|0,a=Math.imul(F,J),i=i+Math.imul(P,$)|0,n=(n=n+Math.imul(P,ee)|0)+Math.imul(C,$)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(O,re)|0,n=(n=n+Math.imul(O,ie)|0)+Math.imul(Y,re)|0,a=a+Math.imul(Y,ie)|0,i=i+Math.imul(D,ae)|0,n=(n=n+Math.imul(D,oe)|0)+Math.imul(R,ae)|0,a=a+Math.imul(R,oe)|0,i=i+Math.imul(k,de)|0,n=(n=n+Math.imul(k,ue)|0)+Math.imul(S,de)|0,a=a+Math.imul(S,ue)|0,i=i+Math.imul(E,he)|0,n=(n=n+Math.imul(E,ce)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,ce)|0;var Le=(u+(i=i+Math.imul(v,me)|0)|0)+((8191&(n=(n=n+Math.imul(v,_e)|0)+Math.imul(w,me)|0))<<13)|0;u=((a=a+Math.imul(w,_e)|0)+(n>>>13)|0)+(Le>>>26)|0,Le&=67108863,i=Math.imul(j,$),n=(n=Math.imul(j,ee))+Math.imul(F,$)|0,a=Math.imul(F,ee),i=i+Math.imul(P,re)|0,n=(n=n+Math.imul(P,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(O,ae)|0,n=(n=n+Math.imul(O,oe)|0)+Math.imul(Y,ae)|0,a=a+Math.imul(Y,oe)|0,i=i+Math.imul(D,de)|0,n=(n=n+Math.imul(D,ue)|0)+Math.imul(R,de)|0,a=a+Math.imul(R,ue)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,ce)|0;var De=(u+(i=i+Math.imul(E,me)|0)|0)+((8191&(n=(n=n+Math.imul(E,_e)|0)+Math.imul(A,me)|0))<<13)|0;u=((a=a+Math.imul(A,_e)|0)+(n>>>13)|0)+(De>>>26)|0,De&=67108863,i=Math.imul(j,re),n=(n=Math.imul(j,ie))+Math.imul(F,re)|0,a=Math.imul(F,ie),i=i+Math.imul(P,ae)|0,n=(n=n+Math.imul(P,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(O,de)|0,n=(n=n+Math.imul(O,ue)|0)+Math.imul(Y,de)|0,a=a+Math.imul(Y,ue)|0,i=i+Math.imul(D,he)|0,n=(n=n+Math.imul(D,ce)|0)+Math.imul(R,he)|0,a=a+Math.imul(R,ce)|0;var Re=(u+(i=i+Math.imul(k,me)|0)|0)+((8191&(n=(n=n+Math.imul(k,_e)|0)+Math.imul(S,me)|0))<<13)|0;u=((a=a+Math.imul(S,_e)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(j,ae),n=(n=Math.imul(j,oe))+Math.imul(F,ae)|0,a=Math.imul(F,oe),i=i+Math.imul(P,de)|0,n=(n=n+Math.imul(P,ue)|0)+Math.imul(C,de)|0,a=a+Math.imul(C,ue)|0,i=i+Math.imul(O,he)|0,n=(n=n+Math.imul(O,ce)|0)+Math.imul(Y,he)|0,a=a+Math.imul(Y,ce)|0;var xe=(u+(i=i+Math.imul(D,me)|0)|0)+((8191&(n=(n=n+Math.imul(D,_e)|0)+Math.imul(R,me)|0))<<13)|0;u=((a=a+Math.imul(R,_e)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(j,de),n=(n=Math.imul(j,ue))+Math.imul(F,de)|0,a=Math.imul(F,ue),i=i+Math.imul(P,he)|0,n=(n=n+Math.imul(P,ce)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,ce)|0;var Oe=(u+(i=i+Math.imul(O,me)|0)|0)+((8191&(n=(n=n+Math.imul(O,_e)|0)+Math.imul(Y,me)|0))<<13)|0;u=((a=a+Math.imul(Y,_e)|0)+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,i=Math.imul(j,he),n=(n=Math.imul(j,ce))+Math.imul(F,he)|0,a=Math.imul(F,ce);var Ye=(u+(i=i+Math.imul(P,me)|0)|0)+((8191&(n=(n=n+Math.imul(P,_e)|0)+Math.imul(C,me)|0))<<13)|0;u=((a=a+Math.imul(C,_e)|0)+(n>>>13)|0)+(Ye>>>26)|0,Ye&=67108863;var Ie=(u+(i=Math.imul(j,me))|0)+((8191&(n=(n=Math.imul(j,_e))+Math.imul(F,me)|0))<<13)|0;return u=((a=Math.imul(F,_e))+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,d[0]=pe,d[1]=ye,d[2]=ge,d[3]=be,d[4]=ve,d[5]=we,d[6]=Me,d[7]=Ee,d[8]=Ae,d[9]=Te,d[10]=ke,d[11]=Se,d[12]=Le,d[13]=De,d[14]=Re,d[15]=xe,d[16]=Oe,d[17]=Ye,d[18]=Ie,0!==u&&(d[19]=u,r.length++),r};function _(e,t,r){return(new p).mulp(e,t,r)}function p(e,t){this.x=e,this.y=t}Math.imul||(m=f),a.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?m(this,e,t):r<63?f(this,e,t):r<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r.strip()}(this,e,t):_(this,e,t)},p.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},p.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,t+=n/67108864|0,t+=a>>>26,this.words[r]=67108863&a}return 0!==t&&(this.words[r]=t,this.length++),this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,u=0;u=0&&(0!==l||u>=n);u--){var h=0|this.words[u];this.words[u]=l<<26-a|h>>>a,l=h&s}return d&&0!==l&&(d.words[d.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(d/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this.strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!==(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,d=i.length-n.length;if("mod"!==t){(s=new a(null)).length=d+1,s.words=new Array(s.length);for(var u=0;u=0;h--){var c=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(c=Math.min(c/o|0,67108863),i._ishlnsubmul(n,c,h);0!==i.negative;)c--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=c)}return s&&s.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modn=function(e){i(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;n>=0;n--)r=(t*r+(0|this.words[n]))%e;return r},a.prototype.idivn=function(e){i(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),d=new a(1),u=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var c=0,f=1;0==(t.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(t.iushrn(c);c-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var m=0,_=1;0==(r.words[0]&_)&&m<26;++m,_<<=1);if(m>0)for(r.iushrn(m);m-- >0;)(s.isOdd()||d.isOdd())&&(s.iadd(l),d.isub(h)),s.iushrn(1),d.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(d)):(r.isub(t),s.isub(n),d.isub(o))}return{a:s,b:d,gcd:r.iushln(u)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),d=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(t.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(t.iushrn(u);u-- >0;)o.isOdd()&&o.iadd(d),o.iushrn(1);for(var h=0,c=1;0==(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(d),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new E(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var y={k256:null,p224:null,p192:null,p25519:null};function g(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){g.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function v(){g.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){g.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function M(){g.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function E(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function A(e){E.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}g.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},g.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},g.prototype.split=function(e,t){e.iushrn(this.n,0,t)},g.prototype.imulK=function(e){return e.imul(this.k)},n(b,g),b.prototype.split=function(e,t){for(var r=Math.min(e.length,9),i=0;i>>22,n=a}n>>>=22,e.words[i-10]=n,0===n&&e.length>10?e.length-=10:e.length-=9},b.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(y[e])return y[e];var t;if("k256"===e)t=new b;else if("p224"===e)t=new v;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new M}return y[e]=t,t},E.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},E.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},E.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},E.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},E.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},E.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},E.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},E.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},E.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},E.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},E.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},E.prototype.isqr=function(e){return this.imul(e,e.clone())},E.prototype.sqr=function(e){return this.mul(e,e)},E.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),d=s.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,u).cmp(d);)l.redIAdd(d);for(var h=this.pow(l,n),c=this.pow(e,n.addn(1).iushrn(1)),f=this.pow(e,n),m=o;0!==f.cmp(s);){for(var _=f,p=0;0!==_.cmp(s);p++)_=_.redSqr();i(p=0;i--){for(var u=t.words[i],l=d-1;l>=0;l--){var h=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4===++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}d=26}return n},E.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},E.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new A(e)},n(A,E),A.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},A.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},A.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},A.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},A.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e,this)}).call(this,r(44)(e))},function(e,t,r){"use strict";t.a={OK:"OK",FORMAT_ERROR:"FormatError",FORMAT_UNSUPPORTED:"FormatUnsupported",CODEC_UNSUPPORTED:"CodecUnsupported"}},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t){function r(e,t){if(!e)throw new Error(t||"Assertion failed")}e.exports=r,r.equal=function(e,t,r){if(e!=t)throw new Error(r||"Assertion failed: "+e+" != "+t)}},function(e,t,r){"use strict";var i=t,n=r(12),a=r(15),o=r(107);i.assert=a,i.toArray=o.toArray,i.zero2=o.zero2,i.toHex=o.toHex,i.encode=o.encode,i.getNAF=function(e,t,r){var i,n=new Array(Math.max(e.bitLength(),r)+1);for(i=0;i(a>>1)-1?(a>>1)-d:d,o.isubn(s)):s=0,n[i]=s,o.iushrn(1)}return n},i.getJSF=function(e,t){var r=[[],[]];e=e.clone(),t=t.clone();for(var i,n=0,a=0;e.cmpn(-n)>0||t.cmpn(-a)>0;){var o,s,d=e.andln(3)+n&3,u=t.andln(3)+a&3;3===d&&(d=-1),3===u&&(u=-1),o=0==(1&d)?0:3!==(i=e.andln(7)+n&7)&&5!==i||2!==u?d:-d,r[0].push(o),s=0==(1&u)?0:3!==(i=t.andln(7)+a&7)&&5!==i||2!==d?u:-u,r[1].push(s),2*n===o+1&&(n=1-n),2*a===s+1&&(a=1-a),e.iushrn(1),t.iushrn(1)}return r},i.cachedProperty=function(e,t,r){var i="_"+t;e.prototype[t]=function(){return void 0!==this[i]?this[i]:this[i]=r.call(this)}},i.parseBytes=function(e){return"string"==typeof e?i.toArray(e,"hex"):e},i.intFromLE=function(e){return new n(e,"hex","le")}},function(e,t,r){"use strict";function i(e,t){for(var r=0;r0&&e[0].originalDts=t[n].dts&&et[i].lastSample.originalDts&&e=t[i].lastSample.originalDts&&(i===t.length-1||i0&&(n=this._searchNearestSegmentBefore(r.originalBeginDts)+1),this._lastAppendLocation=n,this._list.splice(n,0,r)},a.getLastSegmentBefore=function(e){var t=this._searchNearestSegmentBefore(e);return t>=0?this._list[t]:null},a.getLastSampleBefore=function(e){var t=this.getLastSegmentBefore(e);return null!=t?t.lastSample:null},a.getLastSyncPointBefore=function(e){for(var t=this._searchNearestSegmentBefore(e),r=this._list[t].syncPoints;0===r.length&&t>0;)t--,r=this._list[t].syncPoints;return r.length>0?r[r.length-1]:null},t=e,(r=[{key:"type",get:function(){return this._type}},{key:"length",get:function(){return this._list.length}}])&&i(t.prototype,r),n&&i(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}()},function(e,t,r){"use strict";var i=function(){function e(){this.mimeType=null,this.duration=null,this.hasAudio=null,this.hasVideo=null,this.audioCodec=null,this.videoCodec=null,this.audioDataRate=null,this.videoDataRate=null,this.audioSampleRate=null,this.audioChannelCount=null,this.width=null,this.height=null,this.fps=null,this.profile=null,this.level=null,this.refFrames=null,this.chromaFormat=null,this.sarNum=null,this.sarDen=null,this.metadata=null,this.segments=null,this.segmentCount=null,this.hasKeyframesIndex=null,this.keyframesIndex=null}var t=e.prototype;return t.isComplete=function(){var e=!1===this.hasAudio||!0===this.hasAudio&&null!=this.audioCodec&&null!=this.audioSampleRate&&null!=this.audioChannelCount,t=!1===this.hasVideo||!0===this.hasVideo&&null!=this.videoCodec&&null!=this.width&&null!=this.height&&null!=this.fps&&null!=this.profile&&null!=this.level&&null!=this.refFrames&&null!=this.chromaFormat&&null!=this.sarNum&&null!=this.sarDen;return null!=this.mimeType&&null!=this.duration&&null!=this.metadata&&null!=this.hasKeyframesIndex&&e&&t},t.isSeekable=function(){return!0===this.hasKeyframesIndex},t.getNearestKeyframe=function(e){if(null==this.keyframesIndex)return null;var t=this.keyframesIndex,r=this._search(t.times,e);return{index:r,milliseconds:t.times[r],fileposition:t.filepositions[r]}},t._search=function(e,t){var r=0,i=e.length-1,n=0,a=0,o=i;for(t=e[n]&&t=e.length)&&56320==(64512&e.charCodeAt(t+1)))}function o(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function s(e){return 1===e.length?"0"+e:e}function d(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}t.inherits=n,t.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),n=0;n>6|192,r[i++]=63&o|128):a(e,n)?(o=65536+((1023&o)<<10)+(1023&e.charCodeAt(++n)),r[i++]=o>>18|240,r[i++]=o>>12&63|128,r[i++]=o>>6&63|128,r[i++]=63&o|128):(r[i++]=o>>12|224,r[i++]=o>>6&63|128,r[i++]=63&o|128)}else for(n=0;n>>0}return o},t.split32=function(e,t){for(var r=new Array(4*e.length),i=0,n=0;i>>24,r[n+1]=a>>>16&255,r[n+2]=a>>>8&255,r[n+3]=255&a):(r[n+3]=a>>>24,r[n+2]=a>>>16&255,r[n+1]=a>>>8&255,r[n]=255&a)}return r},t.rotr32=function(e,t){return e>>>t|e<<32-t},t.rotl32=function(e,t){return e<>>32-t},t.sum32=function(e,t){return e+t>>>0},t.sum32_3=function(e,t,r){return e+t+r>>>0},t.sum32_4=function(e,t,r,i){return e+t+r+i>>>0},t.sum32_5=function(e,t,r,i,n){return e+t+r+i+n>>>0},t.sum64=function(e,t,r,i){var n=e[t],a=i+e[t+1]>>>0,o=(a>>0,e[t+1]=a},t.sum64_hi=function(e,t,r,i){return(t+i>>>0>>0},t.sum64_lo=function(e,t,r,i){return t+i>>>0},t.sum64_4_hi=function(e,t,r,i,n,a,o,s){var d=0,u=t;return d+=(u=u+i>>>0)>>0)>>0)>>0},t.sum64_4_lo=function(e,t,r,i,n,a,o,s){return t+i+a+s>>>0},t.sum64_5_hi=function(e,t,r,i,n,a,o,s,d,u){var l=0,h=t;return l+=(h=h+i>>>0)>>0)>>0)>>0)>>0},t.sum64_5_lo=function(e,t,r,i,n,a,o,s,d,u){return t+i+a+s+u>>>0},t.rotr64_hi=function(e,t,r){return(t<<32-r|e>>>r)>>>0},t.rotr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0},t.shr64_hi=function(e,t,r){return e>>>r},t.shr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0}},function(e,t,r){"use strict";var i=r(9),n=r.n(i),a=r(1);function o(e,t){for(var r=0;r0){var r=e.getConfig();t.emit("change",r)}},e.registerListener=function(t){e.emitter.addListener("change",t)},e.removeListener=function(t){e.emitter.removeListener("change",t)},e.addLogListener=function(t){a.a.emitter.addListener("log",t),a.a.emitter.listenerCount("log")>0&&(a.a.ENABLE_CALLBACK=!0,e._notifyChange())},e.removeLogListener=function(t){a.a.emitter.removeListener("log",t),0===a.a.emitter.listenerCount("log")&&(a.a.ENABLE_CALLBACK=!1,e._notifyChange())},t=e,i=[{key:"forceGlobalTag",get:function(){return a.a.FORCE_GLOBAL_TAG},set:function(t){a.a.FORCE_GLOBAL_TAG=t,e._notifyChange()}},{key:"globalTag",get:function(){return a.a.GLOBAL_TAG},set:function(t){a.a.GLOBAL_TAG=t,e._notifyChange()}},{key:"enableAll",get:function(){return a.a.ENABLE_VERBOSE&&a.a.ENABLE_DEBUG&&a.a.ENABLE_INFO&&a.a.ENABLE_WARN&&a.a.ENABLE_ERROR},set:function(t){a.a.ENABLE_VERBOSE=t,a.a.ENABLE_DEBUG=t,a.a.ENABLE_INFO=t,a.a.ENABLE_WARN=t,a.a.ENABLE_ERROR=t,e._notifyChange()}},{key:"enableDebug",get:function(){return a.a.ENABLE_DEBUG},set:function(t){a.a.ENABLE_DEBUG=t,e._notifyChange()}},{key:"enableVerbose",get:function(){return a.a.ENABLE_VERBOSE},set:function(t){a.a.ENABLE_VERBOSE=t,e._notifyChange()}},{key:"enableInfo",get:function(){return a.a.ENABLE_INFO},set:function(t){a.a.ENABLE_INFO=t,e._notifyChange()}},{key:"enableWarn",get:function(){return a.a.ENABLE_WARN},set:function(t){a.a.ENABLE_WARN=t,e._notifyChange()}},{key:"enableError",get:function(){return a.a.ENABLE_ERROR},set:function(t){a.a.ENABLE_ERROR=t,e._notifyChange()}}],(r=null)&&o(t.prototype,r),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,r,i}();d.emitter=new n.a,t.a=d},function(e,t,r){var i=r(7).Buffer,n=r(295).Transform,a=r(23).StringDecoder;function o(e){n.call(this),this.hashMode="string"==typeof e,this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}r(6)(o,n),o.prototype.update=function(e,t,r){"string"==typeof e&&(e=i.from(e,t));var n=this._update(e);return this.hashMode?this:(r&&(n=this._toString(n,r)),n)},o.prototype.setAutoPadding=function(){},o.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},o.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},o.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},o.prototype._transform=function(e,t,r){var i;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(e){i=e}finally{r(i)}},o.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(e){t=e}e(t)},o.prototype._finalOrDigest=function(e){var t=this.__final()||i.alloc(0);return e&&(t=this._toString(t,e,!0)),t},o.prototype._toString=function(e,t,r){if(this._decoder||(this._decoder=new a(t),this._encoding=t),this._encoding!==t)throw new Error("can't switch encodings");var i=this._decoder.write(e);return r&&(i+=this._decoder.end()),i},e.exports=o},function(e,t,r){function i(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}r.m=e,r.c=t,r.i=function(e){return e},r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:i})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/",r.oe=function(e){throw console.error(e),e};var i=r(r.s=ENTRY_MODULE);return i.default||i}function n(e){return(e+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function a(e,t,i){var a={};a[i]=[];var o=t.toString(),s=o.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/);if(!s)return a;for(var d,u=s[1],l=new RegExp("(\\\\n|\\W)"+n(u)+"\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)","g");d=l.exec(o);)"dll-reference"!==d[3]&&a[i].push(d[3]);for(l=new RegExp("\\("+n(u)+'\\("(dll-reference\\s([\\.|\\-|\\+|\\w|/|@]+))"\\)\\)\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)',"g");d=l.exec(o);)e[d[2]]||(a[i].push(d[1]),e[d[2]]=r(d[1]).m),a[d[2]]=a[d[2]]||[],a[d[2]].push(d[4]);for(var h,c=Object.keys(a),f=0;f0}),!1)}e.exports=function(e,t){t=t||{};var n={main:r.m},s=t.all?{main:Object.keys(n.main)}:function(e,t){for(var r={main:[t]},i={main:[]},n={main:{}};o(r);)for(var s=Object.keys(r),d=0;d>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function d(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function u(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function l(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function h(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function c(e){return e.toString(this.encoding)}function f(e){return e&&e.length?this.write(e):""}t.StringDecoder=a,a.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return n>0&&(e.lastNeed=n-1),n;if(--i=0)return n>0&&(e.lastNeed=n-2),n;if(--i=0)return n>0&&(2===n?n=0:e.lastNeed=n-3),n;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var i=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,i),e.toString("utf8",t,i)},a.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,r){"use strict";var i=r(41),n=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=h;var a=Object.create(r(33));a.inherits=r(6);var o=r(86),s=r(57);a.inherits(h,o);for(var d=n(s.prototype),u=0;u4294967295)throw new RangeError("requested too many random bytes");var r=n.allocUnsafe(e);if(e>0)if(e>65536)for(var o=0;o2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}n("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),n("ERR_INVALID_ARG_TYPE",(function(e,t,r){var i,n,o,s;if("string"==typeof t&&(n="not ",t.substr(!o||o<0?0:+o,n.length)===n)?(i="must not be",t=t.replace(/^not /,"")):i="must be",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e," argument"))s="The ".concat(e," ").concat(i," ").concat(a(t,"type"));else{var d=function(e,t,r){return"number"!=typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}(e,".")?"property":"argument";s='The "'.concat(e,'" ').concat(d," ").concat(i," ").concat(a(t,"type"))}return s+=". Received type ".concat(typeof r)}),TypeError),n("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),n("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),n("ERR_STREAM_PREMATURE_CLOSE","Premature close"),n("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),n("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),n("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),n("ERR_STREAM_WRITE_AFTER_END","write after end"),n("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),n("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),n("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),e.exports.codes=i},function(e,t,r){"use strict";(function(t){var i=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=u;var n=r(72),a=r(76);r(6)(u,n);for(var o=i(a.prototype),s=0;s2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}n("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),n("ERR_INVALID_ARG_TYPE",(function(e,t,r){var i,n,o,s;if("string"==typeof t&&(n="not ",t.substr(!o||o<0?0:+o,n.length)===n)?(i="must not be",t=t.replace(/^not /,"")):i="must be",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e," argument"))s="The ".concat(e," ").concat(i," ").concat(a(t,"type"));else{var d=function(e,t,r){return"number"!=typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}(e,".")?"property":"argument";s='The "'.concat(e,'" ').concat(d," ").concat(i," ").concat(a(t,"type"))}return s+=". Received type ".concat(typeof r)}),TypeError),n("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),n("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),n("ERR_STREAM_PREMATURE_CLOSE","Premature close"),n("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),n("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),n("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),n("ERR_STREAM_WRITE_AFTER_END","write after end"),n("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),n("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),n("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),e.exports.codes=i},function(e,t,r){"use strict";(function(t){var i=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=u;var n=r(78),a=r(82);r(6)(u,n);for(var o=i(a.prototype),s=0;s=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(4294967295&r)>>>0,n=(r-i)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var a=this._hash();return e?a.toString(e):a},n.prototype._update=function(){throw new Error("_update must be implemented by subclass")},e.exports=n},function(e,t,r){"use strict"; +/*! @name @videojs/vhs-utils @version 1.3.0 @license MIT */var i=function(){function e(){this.listeners={}}var t=e.prototype;return t.on=function(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)},t.off=function(e,t){if(!this.listeners[e])return!1;var r=this.listeners[e].indexOf(t);return this.listeners[e]=this.listeners[e].slice(0),this.listeners[e].splice(r,1),r>-1},t.trigger=function(e){var t=this.listeners[e];if(t)if(2===arguments.length)for(var r=t.length,i=0;i=this._delta8){var r=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-r,e.length),0===this.pending.length&&(this.pending=null),e=i.join32(e,0,e.length-r,this.endian);for(var n=0;n>>24&255,i[n++]=e>>>16&255,i[n++]=e>>>8&255,i[n++]=255&e}else for(i[n++]=255&e,i[n++]=e>>>8&255,i[n++]=e>>>16&255,i[n++]=e>>>24&255,i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=0,a=8;a=128){t.push(String.fromCharCode(65535&a)),i+=2;continue}}}else if(r[i]<240){if(d(r,i,2)){var o=(15&r[i])<<12|(63&r[i+1])<<6|63&r[i+2];if(o>=2048&&55296!=(63488&o)){t.push(String.fromCharCode(65535&o)),i+=3;continue}}}else if(r[i]<248&&d(r,i,3)){var s=(7&r[i])<<18|(63&r[i+1])<<12|(63&r[i+2])<<6|63&r[i+3];if(s>65536&&s<1114112){s-=65536,t.push(String.fromCharCode(s>>>10|55296)),t.push(String.fromCharCode(1023&s|56320)),i+=4;continue}}t.push(String.fromCharCode(65533)),++i}return t.join("")},h=r(5),c=(u=new ArrayBuffer(2),new DataView(u).setInt16(0,256,!0),256===new Int16Array(u)[0]),f=function(){function e(){}return e.parseScriptData=function(t,r,i){var n={};try{var o=e.parseValue(t,r,i),s=e.parseValue(t,r+o.size,i-o.size);n[o.data]=s.data}catch(e){a.a.e("AMF",e.toString())}return n},e.parseObject=function(t,r,i){if(i<3)throw new h.a("Data not enough when parse ScriptDataObject");var n=e.parseString(t,r,i),a=e.parseValue(t,r+n.size,i-n.size),o=a.objectEnd;return{data:{name:n.data,value:a.data},size:n.size+a.size,objectEnd:o}},e.parseVariable=function(t,r,i){return e.parseObject(t,r,i)},e.parseString=function(e,t,r){if(r<2)throw new h.a("Data not enough when parse String");var i=new DataView(e,t,r).getUint16(0,!c);return{data:i>0?l(new Uint8Array(e,t+2,i)):"",size:2+i}},e.parseLongString=function(e,t,r){if(r<4)throw new h.a("Data not enough when parse LongString");var i=new DataView(e,t,r).getUint32(0,!c);return{data:i>0?l(new Uint8Array(e,t+4,i)):"",size:4+i}},e.parseDate=function(e,t,r){if(r<10)throw new h.a("Data size invalid when parse Date");var i=new DataView(e,t,r),n=i.getFloat64(0,!c),a=i.getInt16(8,!c);return{data:new Date(n+=60*a*1e3),size:10}},e.parseValue=function(t,r,i){if(i<1)throw new h.a("Data not enough when parse Value");var n,o=new DataView(t,r,i),s=1,d=o.getUint8(0),u=!1;try{switch(d){case 0:n=o.getFloat64(1,!c),s+=8;break;case 1:n=!!o.getUint8(1),s+=1;break;case 2:var l=e.parseString(t,r+1,i-1);n=l.data,s+=l.size;break;case 3:n={};var f=0;for(9==(16777215&o.getUint32(i-4,!c))&&(f=3);s32)throw new h.b("ExpGolomb: readBits() bits exceeded max 32bits!");if(e<=this._current_word_bits_left){var t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}var r=this._current_word_bits_left?this._current_word:0;r>>>=32-this._current_word_bits_left;var i=e-this._current_word_bits_left;this._fillCurrentWord();var n=Math.min(i,this._current_word_bits_left),a=this._current_word>>>32-n;return this._current_word<<=n,this._current_word_bits_left-=n,r=r<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()},t.readUEG=function(){var e=this._skipLeadingZero();return this.readBits(e+1)-1},t.readSEG=function(){var e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)},e}(),_=function(){function e(){}return e._ebsp2rbsp=function(e){for(var t=e,r=t.byteLength,i=new Uint8Array(r),n=0,a=0;a=2&&3===t[a]&&0===t[a-1]&&0===t[a-2]||(i[n]=t[a],n++);return new Uint8Array(i.buffer,0,n)},e.parseSPS=function(t){var r=e._ebsp2rbsp(t),i=new m(r);i.readByte();var n=i.readByte();i.readByte();var a=i.readByte();i.readUEG();var o=e.getProfileString(n),s=e.getLevelString(a),d=1,u=420,l=8;if((100===n||110===n||122===n||244===n||44===n||83===n||86===n||118===n||128===n||138===n||144===n)&&(3===(d=i.readUEG())&&i.readBits(1),d<=3&&(u=[0,420,422,444][d]),l=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool()))for(var h=3!==d?8:12,c=0;c0&&x<16?(T=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][x-1],k=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][x-1]):255===x&&(T=i.readByte()<<8|i.readByte(),k=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){var O=i.readBits(32),Y=i.readBits(32);L=i.readBool(),S=(D=Y)/(R=2*O)}}var I=1;1===T&&1===k||(I=T/k);var P=0,C=0;0===d?(P=1,C=2-v):(P=3===d?1:2,C=(1===d?2:1)*(2-v));var N=16*(g+1),j=16*(b+1)*(2-v);N-=(w+M)*P,j-=(E+A)*C;var F=Math.ceil(N*I);return i.destroy(),i=null,{avc_profile:n,profile_string:o,avc_level:a,level_string:s,bit_depth:l,ref_frames:y,chroma_format:u,chroma_format_string:e.getChromaFormatString(u),frame_rate:{fixed:L,fps:S,fps_den:R,fps_num:D},sar_ratio:{width:T,height:k},codec_size:{width:N,height:j},present_size:{width:F,height:j}}},e._skipScalingList=function(e,t){for(var r=8,i=8,n=0;n>>2!=0,o=0!=(1&t[4]),s=(i=t)[n=5]<<24|i[n+1]<<16|i[n+2]<<8|i[n+3];return s<9?r:{match:!0,consumed:s,dataOffset:s,hasAudioTrack:a,hasVideoTrack:o}},n.bindDataSource=function(e){return e.onDataArrival=this.parseChunks.bind(this),this},n.resetMediaInfo=function(){this._mediaInfo=new s.a},n._isInitialMetadataDispatched=function(){return this._hasAudio&&this._hasVideo?this._audioInitialMetadataDispatched&&this._videoInitialMetadataDispatched:this._hasAudio&&!this._hasVideo?this._audioInitialMetadataDispatched:!(this._hasAudio||!this._hasVideo)&&this._videoInitialMetadataDispatched},n.parseChunks=function(t,r){if(!(this._onError&&this._onMediaInfo&&this._onTrackMetadata&&this._onDataAvailable))throw new h.a("Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified");var i=0,n=this._littleEndian;if(0===r){if(!(t.byteLength>13))return 0;i=e.probe(t).dataOffset}this._firstParse&&(this._firstParse=!1,r+i!==this._dataOffset&&a.a.w(this.TAG,"First time parsing but chunk byteStart invalid!"),0!==new DataView(t,i).getUint32(0,!n)&&a.a.w(this.TAG,"PrevTagSize0 !== 0 !!!"),i+=4);for(;it.byteLength)break;var s=o.getUint8(0),d=16777215&o.getUint32(0,!n);if(i+11+d+4>t.byteLength)break;if(8===s||9===s||18===s){var u=o.getUint8(4),l=o.getUint8(5),c=o.getUint8(6)|l<<8|u<<16|o.getUint8(7)<<24;0!==(16777215&o.getUint32(7,!n))&&a.a.w(this.TAG,"Meet tag which has StreamID != 0!");var f=i+11;switch(s){case 8:c-this._lastAudioPts<=0&&(this._index>1&&(this._hasAudioFlagOverrided=!0,this._mediaInfo.hasAudio=!1,this._hasAudio=!1,this._onAudioError()),this._index++),this._lastAudioPts=c,this._audioCodecId=this._parseAudioData(t,f,d,c);break;case 9:this._lastVideoPts=c,this._parseVideoData(t,f,d,c,r+i);break;case 18:this._parseScriptData(t,f,d)}var m=o.getUint32(11+d,!n);m!==11+d&&a.a.w(this.TAG,"Invalid PrevTagSize "+m),i+=11+d+4}else a.a.w(this.TAG,"Unsupported tag type "+s+", skipped"),i+=11+d+4}return this._isInitialMetadataDispatched()&&this._dispatch&&(this._audioTrack.samples.length||this._videoTrack.samples.length)&&(7===this._videoCodecId||0===this._videoCodecId?"auto"===this._config.decodeType?this._onDataAvailable(this._audioTrack,this._videoTrack):(this._videoTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeVideo(27,this._videoTrack),this._audioTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeAudio(10===this._audioCodecId?86018:0,this._audioTrack)):12===this._videoCodecId&&(this._videoTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeVideo(173,this._videoTrack),this._audioTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeAudio(10===this._audioCodecId?86018:0,this._audioTrack))),i},n._parseScriptData=function(e,t,r){new DataView(e,t,r);var i=f.parseScriptData(e,t,r);if(i.hasOwnProperty("onMetaData")){if(null==i.onMetaData||"object"!=typeof i.onMetaData)return void a.a.w(this.TAG,"Invalid onMetaData structure!");this._metadata&&a.a.w(this.TAG,"Found another onMetaData tag!"),this._metadata=i;var n=this._metadata.onMetaData;if(this._onMetaDataArrived&&this._onMetaDataArrived(Object.assign({},n)),"boolean"==typeof n.hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=n.hasAudio,this._mediaInfo.hasAudio=this._hasAudio),"boolean"==typeof n.hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=n.hasVideo,this._mediaInfo.hasVideo=this._hasVideo),"number"==typeof n.audiodatarate&&(this._mediaInfo.audioDataRate=n.audiodatarate),"number"==typeof n.videodatarate&&(this._mediaInfo.videoDataRate=n.videodatarate),"number"==typeof n.width&&(this._mediaInfo.width=n.width),"number"==typeof n.height&&(this._mediaInfo.height=n.height),"number"==typeof n.duration){if(!this._durationOverrided){var o=Math.floor(n.duration*this._timescale);this._duration=o,this._mediaInfo.duration=o}}else this._mediaInfo.duration=0;if("number"==typeof n.framerate){var s=Math.floor(1e3*n.framerate);if(s>0){var d=s/1e3;this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=d,this._referenceFrameRate.fps_num=s,this._referenceFrameRate.fps_den=1e3,this._mediaInfo.fps=d}}if("object"==typeof n.keyframes){this._mediaInfo.hasKeyframesIndex=!0;var u=n.keyframes;this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(u),n.keyframes=null}else this._mediaInfo.hasKeyframesIndex=!1;this._dispatch=!1,this._mediaInfo.metadata=n,a.a.v(this.TAG,"Parsed onMetaData"),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}Object.keys(i).length>0&&this._onScriptDataArrived&&this._onScriptDataArrived(Object.assign({},i))},n._parseKeyframesIndex=function(e){for(var t=[],r=[],i=1;i>>4;if(2!==o&&10!==o)return this._onError(y.a.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+o),0;var s=0,d=(12&n)>>>2;if(!(d>=0&&d<=4))return this._onError(y.a.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+d),0;s=this._flvSoundRateTable[d];var u=1&n,l=this._audioMetadata,h=this._audioTrack;if(l||(!1===this._hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),(l=this._audioMetadata={}).type="audio",l.id=h.id,l.timescale=this._timescale,l.duration=this._duration,l.audioSampleRate=s,l.channelCount=0===u?1:2),10===o){var c=this._parseAACAudioData(e,t+1,r-1);if(null==c)return 0;if(0===c.packetType){l.config&&a.a.w(this.TAG,"Found another AudioSpecificConfig!");var f=c.data;l.audioSampleRate=f.samplingRate,l.channelCount=f.channelCount,l.codec=f.codec,l.originalCodec=f.originalCodec,l.config=f.config,l.refSampleDuration=1024/l.audioSampleRate*l.timescale,a.a.v(this.TAG,"Parsed AudioSpecificConfig"),this._SampleRate=f.samplingRate,this._ChannelNum=f.channelCount,this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.samples.length||this._videoTrack.samples.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._audioInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("audio",l);var m=this._mediaInfo;m.audioCodec=l.originalCodec,m.audioSampleRate=l.audioSampleRate,m.audioChannelCount=l.channelCount,m.hasVideo?null!=m.videoCodec&&(m.mimeType='video/x-flv; codecs="'+m.videoCodec+","+m.audioCodec+'"'):m.mimeType='video/x-flv; codecs="'+m.audioCodec+'"',m.isComplete()&&this._onMediaInfo(m)}else if(1===c.packetType){var _=this._timestampBase+i,p={unit:c.data,length:c.data.byteLength,dts:_,pts:_};h.samples.push(p),h.length+=c.data.length,c.data.length>this._AudioMaxFrameSize&&(this._AudioMaxFrameSize=c.data.length)}else a.a.e(this.TAG,"Flv: Unsupported AAC data type "+c.packetType)}else if(2===o){if(!l.codec){var g=this._parseMP3AudioData(e,t+1,r-1,!0);if(null==g)return 0;l.audioSampleRate=g.samplingRate,l.channelCount=g.channelCount,l.codec=g.codec,l.originalCodec=g.originalCodec,l.refSampleDuration=1152/l.audioSampleRate*l.timescale,a.a.v(this.TAG,"Parsed MPEG Audio Frame Header"),this._audioInitialMetadataDispatched=!0,this._onTrackMetadata("audio",l);var b=this._mediaInfo;b.audioCodec=l.codec,b.audioSampleRate=l.audioSampleRate,b.audioChannelCount=l.channelCount,b.audioDataRate=g.bitRate,b.hasVideo?null!=b.videoCodec&&(b.mimeType='video/x-flv; codecs="'+b.videoCodec+","+b.audioCodec+'"'):b.mimeType='video/x-flv; codecs="'+b.audioCodec+'"',b.isComplete()&&this._onMediaInfo(b)}var v=this._parseMP3AudioData(e,t+1,r-1,!1);if(null==v)return 0;var w=this._timestampBase+i,M={unit:v,length:v.byteLength,dts:w,pts:w};h.samples.push(M),h.length+=v.length}return o},n._parseAACAudioData=function(e,t,r){if(!(r<=1)){var i={},n=new Uint8Array(e,t,r);return i.packetType=n[0],0===n[0]?i.data=this._parseAACAudioSpecificConfig(e,t+1,r-1):i.data=n.subarray(1),i}a.a.w(this.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!")},n._parseAACAudioSpecificConfig=function(e,t,r){var i,n,a=new Uint8Array(e,t,r),o=null,s=0,d=null;if(s=i=a[0]>>>3,(n=(7&a[0])<<1|a[1]>>>7)<0||n>=this._mpegSamplingRates.length)this._onError(y.a.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");else{var u=this._mpegSamplingRates[n],l=(120&a[1])>>>3;if(!(l<0||l>=8)){5===s&&(d=(7&a[1])<<1|a[2]>>>7,(124&a[2])>>>2);var h=self.navigator.userAgent.toLowerCase();return-1!==h.indexOf("firefox")?n>=6?(s=5,o=new Array(4),d=n-3):(s=2,o=new Array(2),d=n):-1!==h.indexOf("android")?(s=2,o=new Array(2),d=n):(s=5,d=n,o=new Array(4),n>=6?d=n-3:1===l&&(s=2,o=new Array(2),d=n)),o[0]=s<<3,o[0]|=(15&n)>>>1,o[1]=(15&n)<<7,o[1]|=(15&l)<<3,5===s&&(o[1]|=(15&d)>>>1,o[2]=(1&d)<<7,o[2]|=8,o[3]=0),{config:o,samplingRate:u,channelCount:l,codec:"mp4a.40."+s,originalCodec:"mp4a.40."+i}}this._onError(y.a.FORMAT_ERROR,"Flv: AAC invalid channel configuration")}},n._parseMP3AudioData=function(e,t,r,i){if(!(r<4)){this._littleEndian;var n=new Uint8Array(e,t,r),o=null;if(i){if(255!==n[0])return;var s=n[1]>>>3&3,d=(6&n[1])>>1,u=(240&n[2])>>>4,l=(12&n[2])>>>2,h=3!==(n[3]>>>6&3)?2:1,c=0,f=0;switch(s){case 0:c=this._mpegAudioV25SampleRateTable[l];break;case 2:c=this._mpegAudioV20SampleRateTable[l];break;case 3:c=this._mpegAudioV10SampleRateTable[l]}switch(d){case 1:34,u>>4;this._videoCodecId=15&o,7===this._videoCodecId||12===this._videoCodecId?(p.h(7===this._videoCodecId?"H264":"H265"),this._parseAVCAndHEVCVideoPacket(e,t+1,r-1,i,n,s)):this._onError(y.a.CODEC_UNSUPPORTED,"Flv: Unsupported codec in video frame: "+codecId)}},n._parseAVCAndHEVCVideoPacket=function(e,t,r,i,n,o){if(r<4)a.a.w(this.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");else{var s=this._littleEndian,d=new DataView(e,t,r),u=d.getUint8(0),l=(16777215&d.getUint32(0,!s))<<8>>8;if(0===u)7===this._videoCodecId?this._parseAVCDecoderConfigurationRecord(e,t+4,r-4):this._parseHEVCDecoderConfigurationRecord(e,t+4,r-4);else if(1===u)7===this._videoCodecId?this._parseAVCVideoData(e,t+4,r-4,i,n,o,l):this._parseHEVCVideoData(e,t+4,r-4,i,n,o,l);else if(2!==u)return void this._onError(y.a.FORMAT_ERROR,"Flv: Invalid video packet type "+u)}},n._parseAVCDecoderConfigurationRecord=function(e,t,r){if(r<7)a.a.w(this.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");else{var i=this._videoMetadata,n=this._videoTrack,o=this._littleEndian,s=new DataView(e,t,r);if(i)void 0!==i.avcc&&a.a.w(this.TAG,"Found another AVCDecoderConfigurationRecord!");else{!1===this._hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),(i=this._videoMetadata={}).type="video",i.id=n.id,i.timescale=this._timescale,i.duration=this._duration;var d=s.getUint8(0),u=s.getUint8(1);s.getUint8(2),s.getUint8(3);if(1===d&&0!==u)if(this._naluLengthSize=1+(3&s.getUint8(4)),3===this._naluLengthSize||4===this._naluLengthSize){var l=31&s.getUint8(5);if(0!==l){l>1&&a.a.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = "+l);for(var h=6,c=0;c1&&a.a.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = "+T),h++;for(var k=0;k=r){a.a.w(this.TAG,"Malformed Nalu near timestamp "+_+", offset = "+f+", dataSize = "+r);break}var g=l.getUint32(f,!u);if(3===m&&(g>>>=8),g>r-m)return void a.a.w(this.TAG,"Malformed Nalus near timestamp "+_+", NaluSize > DataSize!");if(5===(d=31&l.getUint8(f+m))&&(p=!0,h.length<1&&this._AVC_SPS&&this._AVC_SPS.length>0))if(y){var b={type:7,data:this._AVC_SPS};h.push(b),c+=b.data.length;var v={type:8,data:this._AVC_PPS};h.push(v),c+=v.data.length}else{var w=this._AVC_SPS.subarray(0,this._AVC_SPS.length),M=w.length-4;w[0]=M>>24,w[1]=M>>16,w[2]=M>>8,w[3]=255&M;var E={type:7,data:w};h.push(E),c+=E.data.length;var A=this._AVC_PPS.subarray(0,this._AVC_PPS.length),T=A.length-4;A[0]=T>>24,A[1]=T>>16,A[2]=T>>8,A[3]=255&T;var k={type:8,data:A};h.push(k),c+=k.data.length}if(6===d&&h.length<1){var S=l.getUint8(f+m+1);l.getUint8(f+m+4);if(100===S){for(var L=0,D=0,R=0;R<10;R++){var x=255&l.getUint8(f+m+1+1+D);if(D++,L+=x,255!==x)break}var O=void 0,Y=null;(L>16||L>=3)&&(O=new Uint8Array(e,t+f+m+1+D+1,L-1),Y=new TextDecoder("utf-8").decode(O)),this.sei_data=Y}else this.sei_data=null}var I=new Uint8Array(e,t+f,m+g),P={type:d,data:I};h.push(P),c+=I.byteLength,f+=m+g}if(6===d&&"soft"!==this._config.decodeType)return console.log("{unitType:"+d+",decodeType:"+this._config.decodeType);if(h.length){var C=this._videoTrack,N={units:h,length:c,isKeyframe:p,dts:_,cts:s,pts:_+s,sei:this.deepClone(this.sei_data)};if(1===h.length)if(6===h[0].type)return;p&&(N.fileposition=n),C.samples.push(N),C.length+=c,this.sei_data=null}},n._makeH265Header=function(e){var t=2;switch(e){case 78:case 80:t=1;break;case 64:case 66:case 32:case 34:case 36:case 38:case 40:case 42:t=1}return t},n._parseHEVCVideoData=function(e,t,r,i,n,o,s){var d=this._littleEndian,u=new DataView(e,t,r),l=this._timestampBase+i,h=1===o,c=[],f=0;for(this._naluLengthSize;f=r){a.a.w(this.TAG,"Malformed Nalu near timestamp "+l+", offset = "+f+", dataSize = "+r);break}var m=u.getUint8(f),_=u.getUint8(f+1),p=u.getUint8(f+2),y=u.getUint8(f+3);if(0===m&&0===_&&0===p&&1===y);else{var g=u.getUint32(f,!d);f+=4;var b=u.getUint8(f);if(f+=1,g>r-4)return void a.a.w(this.TAG,"Malformed Nalus near timestamp "+l+", NaluSize > DataSize!");if(g+f-1>r)break;var v=u.getUint8(f-1),w=this._makeH265Header(v);if((32===v||34===v||36===v||38===v||40===v||42===v)&&c.length<1){if(this._HEVC_VPS){var M={type:5,data:this._HEVC_VPS};c.push(M),this._HEVC_VPS.length}if(this._HEVC_SPS){var E={type:6,data:this._HEVC_SPS};c.push(E),this._HEVC_SPS.length}if(this._HEVC_PPS){var A={type:7,data:this._HEVC_PPS};c.push(A),this._HEVC_PPS.length}}if(1===w&&this._HEVC_VPS&&this._HEVC_VPS[0],78!=b&&t+f-1-4>=0&&g>0){var T=new Uint8Array(e,t+f-1-4,g+4);T[0]=0,T[1]=0,T[2]=0,T[3]=1;var k={type:5,data:T};c.push(k),T.length}else if(78===b&&t+f-1-4>=0&&g>0){var S=new Uint8Array(e,t+f-1-4+4+3,g-5),L=new TextDecoder("utf-8").decode(S);this.sei_data=L.trim()}f+=g-1}}if(c.length){var D=this._videoTrack,R={units:c,length:0,isKeyframe:h,dts:l,cts:s,pts:l+s,sei:this.deepClone(this.sei_data)};h&&(R.fileposition=n),D.samples.push(R),D.length+=0,this.sei_data=null}},n._onDataAvailableToSoftwareDecodeVideo=function(e,t){var r=t.samples,i=-1;for(r.length>1&&(i=0);r.length;){for(var n=r.shift(),a=0,o=0;o=0&&i++,this._onReceiveH265MediaFLVFrame("video",!0,1,e,n.isKeyframe,d,a,n.pts,0,0,0,n.sei))}},n._onDataAvailableToSoftwareDecodeAudio=function(e,t){var r=t.samples,i=-1;for(r.length>1&&(i=0);r.length;){var n=r.shift();this._onReceiveH265MediaFLVFrame&&(i>=0&&i++,this._onReceiveH265MediaFLVFrame("audio",!0,2,e,0,n.unit,n.length,n.pts,this._SampleRate,this._ChannelNum,this._SampleRate>=44100?32:16))}},n.deepClone=function(e){var t=Object.prototype.toString;if(!e||"object"!=typeof e)return e;if(e.nodeType&&"cloneNode"in e)return e.cloneNode(!0);if("[object Date]"===t.call(e))return new Date(e.getTime());if("[object RegExp]"===t.call(e)){var r=[];return e.global&&r.push("g"),e.multiline&&r.push("m"),e.ignoreCase&&r.push("i"),new RegExp(e.source,r.join(""))}var i=Array.isArray(e)?[]:e.constructor?new e.constructor:{};for(var n in e)i[n]=this.deepClone(e[n]);return i},t=e,(r=[{key:"onTrackMetadata",get:function(){return this._onTrackMetadata},set:function(e){this._onTrackMetadata=e}},{key:"onMediaInfo",get:function(){return this._onMediaInfo},set:function(e){this._onMediaInfo=e}},{key:"onMetaDataArrived",get:function(){return this._onMetaDataArrived},set:function(e){this._onMetaDataArrived=e}},{key:"onReceiveH265MediaFLVFrame",get:function(){return this._onReceiveH265MediaFLVFrame},set:function(e){this._onReceiveH265MediaFLVFrame=e}},{key:"onAudioError",get:function(){return this._onAudioError},set:function(e){this._onAudioError=e}},{key:"onReceiveSEIData",get:function(){return this._onReceiveSEIData},set:function(e){this._onReceiveSEIData=e}},{key:"onScriptDataArrived",get:function(){return this._onScriptDataArrived},set:function(e){this._onScriptDataArrived=e}},{key:"onError",get:function(){return this._onError},set:function(e){this._onError=e}},{key:"onDataAvailable",get:function(){return this._onDataAvailable},set:function(e){this._onDataAvailable=e}},{key:"timestampBase",get:function(){return this._timestampBase},set:function(e){this._timestampBase=e}},{key:"overridedDuration",get:function(){return this._duration},set:function(e){this._durationOverrided=!0,this._duration=e,this._mediaInfo.duration=e}},{key:"overridedHasAudio",set:function(e){this._hasAudioFlagOverrided=!0,this._hasAudio=e,this._mediaInfo.hasAudio=e}},{key:"overridedHasVideo",set:function(e){this._hasVideoFlagOverrided=!0,this._hasVideo=e,this._mediaInfo.hasVideo=e}}])&&g(t.prototype,r),i&&g(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}();function w(e,t,r){var i,n,a,o,s,d=navigator.userAgent.toLowerCase(),u=r,l=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];if(i=1+((192&e[t+2])>>>6),!((n=(60&e[t+2])>>>2)>l.length-1))return o=(1&e[t+2])<<2,o|=(192&e[t+3])>>>6,/firefox/i.test(d)?n>=6?(i=5,s=new Array(4),a=n-3):(i=2,s=new Array(2),a=n):-1!==d.indexOf("android")?(i=2,s=new Array(2),a=n):(i=5,s=new Array(4),r&&(-1!==r.indexOf("mp4a.40.29")||-1!==r.indexOf("mp4a.40.5"))||!r&&n>=6?a=n-3:((r&&-1!==r.indexOf("mp4a.40.2")&&(n>=6&&1===o||/vivaldi/i.test(d))||!r&&1===o)&&(i=2,s=new Array(2)),a=n)),s[0]=i<<3,s[0]|=(14&n)>>1,s[1]|=(1&n)<<7,s[1]|=o<<3,5===i&&(s[1]|=(14&a)>>1,s[2]=(1&a)<<7,s[2]|=8,s[3]=0),{config:s,samplerate:l[n],channelCount:o,codec:"mp4a.40."+i,manifestCodec:u};console.log("ADTS parse fail. reason: 'invalid ADTS sampling index:${adtsSampleingIndex}'")}function M(e,t){return 255===e[t]&&240==(246&e[t+1])}function E(e,t){return 1&e[t+1]?7:9}function A(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function T(e,t){return!!(t+10&&t+a+o<=s)return{headerLength:a,frameLength:o,stamp:r+i*n}}(t,r,i,n,S(e));if(a){var o=a.stamp,s=a.headerLength,d=a.frameLength;return{sample:{unit:t.subarray(r+s,r+s+d),pts:o,dts:o},length:d+s}}}var D=function(){function e(e){this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}var t=e.prototype;return t.loadWord=function(){var e=this.data,t=this.bytesAvailable,r=e.byteLength-t,i=new Uint8Array(4),n=Math.min(4,t);if(0===n)throw new Error("no bytes available");i.set(e.subarray(r,r+n)),this.word=new DataView(i.buffer).getUint32(0),this.bitsAvailable=8*n,this.bytesAvailable-=n},t.skipBits=function(e){var t;this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,e-=(t=e>>3)>>3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)},t.readBits=function(e){var t=Math.min(this.bitsAvailable,e),r=this.word>>>32-t;return e>32&&logger.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0?this.word<<=t:this.bytesAvailable>0&&this.loadWord(),(t=e-t)>0&&this.bitsAvailable?r<>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()},t.skipUEG=function(){this.skipBits(1+this.skipLZ())},t.skipEG=function(){this.skipBits(1+this.skipLZ())},t.readUEG=function(){var e=this.skipLZ();return this.readBits(e+1)-1},t.readEG=function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)},t.readBoolean=function(){return 1===this.readBits(1)},t.readUByte=function(){return this.readBits(8)},t.readUShort=function(){return this.readBits(16)},t.readUInt=function(){return this.readBits(32)},t.skipScalingList=function(e){var t,r=8,i=8;for(t=0;t0)console.log("EXCEPTION:: No used...");else{var i=-1;for(r.length>1&&(i=0);r.length;){for(var n=r.shift(),a=0,o=0;o=0&&i++,this._onReceiveH265MediaHLSFrame("video",!0,1,e,n.isKeyframe,d,a,n.pts,0,0,0))}}},n._onDataAvailableToSoftwareDecodeAudio=function(e,t){var r=t.samples,i=-1;for(r.length>1&&(i=0);r.length;){var n=r.shift();this._onReceiveH265MediaHLSFrame&&(i>=0&&i++,this._onReceiveH265MediaHLSFrame("audio",!0,2,e,0,n.unit,n.length,n.pts,this._SampleRate,this._ChannelNum,this._SampleRate>=44100?32:16))}},e.createTrack=function(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:RemuxerTrackIdConfig[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:"video"===e?0:void 0,isAAC:"audio"===e||void 0,duration:"audio"===e?t:void 0,isHEVC:0}},e._syncOffset=function(e){for(var t=Math.min(1e3,e.length-564),r=0;r1;){var h=new Uint8Array(l[0].length+l[1].length);h.set(l[0]),h.set(l[1],l[0].length),l[0]=h,l.splice(1,1)}if(1===((t=l[0])[0]<<16)+(t[1]<<8)+t[2]){if((i=(t[4]<<8)+t[5])&&i>e.size-6)return null;if(192&(r=t[7])&&((o=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2)>4294967295&&(o-=4294967295),64&r?((s=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2)>4294967295&&(s-=4294967295),o-s>54e5&&(console.warn(Math.round((o-s)/9e4)+"s delta between PTS and DTS, align them"),o=s)):s=o),d=(n=t[8])+9,e.size<=d)return null;e.size-=d,a=new Uint8Array(e.size);for(var c=0,f=l.length;cm){d-=m;continue}t=t.subarray(d),m-=d,d=0}a.set(t,u),u+=m}return i&&(i-=n+3),{data:a,pts:o,dts:s,len:i}}return null}},n.pushAccesUnit=function(e,t){if(e.units.length&&e.frame){var r=t.samples,i=r.length;if(isNaN(e.pts)){if(!i)return void t.dropped++;var n=r[i-1];e.pts=n.pts,e.dts=n.dts}!this.config.forceKeyFrameOnDiscontinuity||!0===e.key||t.sps&&(i||this.contiguous)?(e.id=i,r.push(e)):t.dropped++}e.debug.length&&logger.log(e.pts+"/"+e.dts+":"+e.debug)},n.parseAVCPES=function(e,t,r){var i=this,n=0;(0===this.startVideoPts||e.pts>24&255,n[1]=r>>16&255,n[2]=r>>8&255,n[3]=255&r,n.set(t.data,4);var o={type:t.type,data:n};switch(d+=n.length,s.push(o),t.type){case 1:!0;break;case 5:!0,i.findKeyframe=!1,u=!0;break;case 6:!0;var l=new D(i.discardEPB(t.data));l.readUByte();for(var h=0,c=0,f=!1,m=0;!f&&l.bytesAvailable>1;){h=0;do{h+=m=l.readUByte()}while(255===m);c=0;do{c+=m=l.readUByte()}while(255===m);if(4===h&&0!==l.bytesAvailable){if(f=!0,181===l.readUByte())if(49===l.readUShort())if(1195456820===l.readUInt())if(3===l.readUByte()){for(var p=l.readUByte(),y=31&p,g=[p,l.readUByte()],b=0;b16){for(var v=[],w=0;w<16;w++)v.push(l.readUByte().toString(16)),3!==w&&5!==w&&7!==w&&9!==w||v.push("-");for(var M=c-16,E=new Uint8Array(M),A=0;A>8,N.avcc[j++]=i._AVC_SPS.length-4&255;var H=i._AVC_SPS.subarray(4,i._AVC_SPS.length);N.avcc.set(H,j),j+=H.length,N.avcc[j++]=1,N.avcc[j++]=i._AVC_PPS.length-4>>8,N.avcc[j++]=i._AVC_PPS.length-4&255;var U=i._AVC_PPS.subarray(4,i._AVC_PPS.length);N.avcc.set(U,j),j+=U.length,N.avcc[F]=1}i._onTrackMetadata("video",N)}break;case 9:case 12:default:!1}}));var l=(e.pts-this.startVideoPts)/90;u&&this.syncVideoPts<1&&(this.syncVideoPts=this.startVideoPts);var h=this._videoTrack,c={units:s,length:d,isKeyframe:u,dts:l,cts:0,pts:l};u&&(c.fileposition=this.tagPosition),0!==this.reset||this.findKeyframe||(h.samples.push(c),h.length+=d),this.filePosition+=d,this.accurateTimeOffset=c.pts,this.lastVideoPts=e.pts,1===n&&(this.seekVideoHistoryPts=l),t&&0===this.reset&&(console.log("this._config",this._config,this._config.decodeType),"auto"===this._config.decodeType||"hard"===this._config.decodeType?(this._onDataAvailable(this._audioTrack,this._videoTrack),console.log("_onDataAvailable",this._audioTrack,this._videoTrack)):(this._videoTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeVideo(27,this._videoTrack),this._audioTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeAudio(86018,this._audioTrack)))},n.parseHEVCPES=function(e,t,r){(0===this.startVideoPts||e.pts32)for(var s=0;s<32;s++)if(0===e.data[s]&&0===e.data[s+1]&&0===e.data[s+2]&&1===e.data[s+3]&&(64===e.data[s+4]||70===e.data[s+4])){o=1,this.findKeyframe=!1;break}i.push(a);var d=(e.pts-this.startVideoPts)/90;o&&this.syncVideoPts<1&&(this.syncVideoPts=this.startVideoPts);var u=this._videoTrack,l={units:i,length:n,isKeyframe:o,dts:d,cts:0,pts:d};o&&(l.fileposition=this.tagPosition),u.samples.push(l),u.length+=n,this._videoTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeVideo(173,this._videoTrack),this._audioTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeAudio(86018,this._audioTrack)},n._insertSampleInOrder=function(e,t){var r=e.length;if(r>0){if(t.pts>=e[r-1].pts)e.push(t);else for(var i=r-1;i>=0;i--)if(t.pts=0)9!=(r={data:e.subarray(d,n-o-1),type:i}).type&&s.push(r);else;n=0&&o>=0&&(r={data:e.subarray(d,a),type:i,state:o},s.push(r)),0===s.length){var u=this._getLastNalUnit();if(u){var l=new Uint8Array(u.data.byteLength+e.byteLength);l.set(u.data,0),l.set(e,u.data.byteLength),u.data=l}}return s},n.discardEPB=function(e){for(var t,r,i=e.byteLength,n=[],a=1;a1&&(console.log("AAC: align PTS for overlapping frames by "+Math.round((v-c)/90)),c=v)}for(;n0&&(this.syncAudioPts=this.syncVideoPts),this.syncAudioPts>0&&(l.samples.push(E),l.length+=w.length)),n+=w.length,o=w.sample.pts,i++}else n++;f=n>4>1){if((s=n+5+t[n+4])===n+188)continue}else s=n+4;switch(o){case c:a&&(_&&(d=this.parsePES(_))&&(1===this.isHEVC?this.parseHEVCPES(d,!1,i):this.parseAVCPES(d,!1,i)),_={data:[],size:0}),_&&(_.data.push(t.subarray(s,n+188)),_.size+=n+188-s);break;case f:a&&(p&&(d=this.parsePES(p))&&(this.isAAC?this.parseAACPES(d,!1):this.parseMPEGPES(d)),p={data:[],size:0}),p&&(p.data.push(t.subarray(s,n+188)),p.size+=n+188-s);break;case m:a&&(y&&(d=this.parsePES(y))&&parseID3PES(d),y={data:[],size:0}),y&&(y.data.push(t.subarray(s,n+188)),y.size+=n+188-s);break;case 0:a&&(s+=t[s]+1),u=this.parsePAT(t,s);break;case u:a&&(s+=t[s]+1);var v=this.parsePMT(t,s,!1,!1);c=v.avc,v.hevc>0&&(c=v.hevc,this.isHEVC=1),c>0&&(this.avcTrackPid=c),!this._callbackInitFlag&&this._callbackMediaDataFunc&&(this._callbackInitFlag=!0,1===this.isHEVC||"auto"!==this._config.decodeType&&"hard"!==this._config.decodeType||this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!1,1,0,0,null,0,0,0,0)),(f=v.audio)>0&&(this.audioTrackPid=f,this.isAAC=v.isAAC),(m=v.id3)>0&&(this.id3TrackPid=m),h&&!g&&(console.log("reparse from beginning"),h=!1,n=b-188),g=!0;break;case 17:case 8191:break;default:h=!0}}else console.log("parse error... reason: 'TS packet did not start with 0x47'");_&&(d=this.parsePES(_))?(1==this.isHEVC?this.parseHEVCPES(d,!0,i):this.parseAVCPES(d,!0,i),this.avcTrackPesData=null):this.avcTrackPesData=_,p&&(d=this.parsePES(p))?(this.isAAC?this.parseAACPES(d,!0):this.parseMPEGPES(d),this.audioTrackPesData=null):(p&&p.size&&logger.log("last AAC PES packet truncated,might overlap between fragments"),this.audioTrackPesData=p),y&&(d=this.parsePES(y))?(parseID3PES(d),this.id3TrackPesData=null):this.id3TrackPesData=y}},t=e,(r=[{key:"onReceiveH265MediaHLSFrame",get:function(){return this._onReceiveH265MediaHLSFrame},set:function(e){this._onReceiveH265MediaHLSFrame=e}},{key:"onTrackMetadata",get:function(){return this._onTrackMetadata},set:function(e){this._onTrackMetadata=e}},{key:"onMediaInfo",get:function(){return this._onMediaInfo},set:function(e){this._onMediaInfo=e}},{key:"onMetaDataArrived",get:function(){return this._onMetaDataArrived},set:function(e){this._onMetaDataArrived=e}},{key:"onScriptDataArrived",get:function(){return this._onScriptDataArrived},set:function(e){this._onScriptDataArrived=e}},{key:"onError",get:function(){return this._onError},set:function(e){this._onError=e}},{key:"onDataAvailable",get:function(){return this._onDataAvailable},set:function(e){this._onDataAvailable=e}},{key:"timestampBase",get:function(){return this._timestampBase},set:function(e){this._timestampBase=e}},{key:"overridedDuration",get:function(){return this._duration},set:function(e){this._durationOverrided=!0,this._duration=e,this._mediaInfo.duration=e}},{key:"overridedHasAudio",set:function(e){this._hasAudioFlagOverrided=!0,this._hasAudio=e,this._mediaInfo.hasAudio=e}},{key:"overridedHasVideo",set:function(e){this._hasVideoFlagOverrided=!0,this._hasVideo=e,this._mediaInfo.hasVideo=e}}])&&R(t.prototype,r),i&&R(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}(),Y=function(){function e(){}return e.init=function(){for(var t in e.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[]},e.types)e.types.hasOwnProperty(t)&&(e.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);var r=e.constants={};r.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),r.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),r.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),r.STSC=r.STCO=r.STTS,r.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),r.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),r.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),r.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),r.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),r.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])},e.box=function(e){for(var t=8,r=null,i=Array.prototype.slice.call(arguments,1),n=i.length,a=0;a>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.set(e,4);for(var o=8,s=0;s>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))},e.trak=function(t){return e.box(e.types.trak,e.tkhd(t),e.mdia(t))},e.tkhd=function(t){var r=t.id,i=t.duration,n=t.presentWidth,a=t.presentHeight;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,n>>>8&255,255&n,0,0,a>>>8&255,255&a,0,0]))},e.mdia=function(t){return e.box(e.types.mdia,e.mdhd(t),e.hdlr(t),e.minf(t))},e.mdhd=function(t){var r=t.timescale,i=t.duration;return e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))},e.hdlr=function(t){var r=null;return r="audio"===t.type?e.constants.HDLR_AUDIO:e.constants.HDLR_VIDEO,e.box(e.types.hdlr,r)},e.minf=function(t){var r=null;return r="audio"===t.type?e.box(e.types.smhd,e.constants.SMHD):e.box(e.types.vmhd,e.constants.VMHD),e.box(e.types.minf,r,e.dinf(),e.stbl(t))},e.dinf=function(){return e.box(e.types.dinf,e.box(e.types.dref,e.constants.DREF))},e.stbl=function(t){return e.box(e.types.stbl,e.stsd(t),e.box(e.types.stts,e.constants.STTS),e.box(e.types.stsc,e.constants.STSC),e.box(e.types.stsz,e.constants.STSZ),e.box(e.types.stco,e.constants.STCO))},e.stsd=function(t){return"audio"===t.type?"mp3"===t.codec?e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp3(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp4a(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.avc1(t))},e.mp3=function(t){var r=t.channelCount,i=t.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,r,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return e.box(e.types[".mp3"],n)},e.mp4a=function(t){var r=t.channelCount,i=t.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,r,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return e.box(e.types.mp4a,n,e.esds(t))},e.esds=function(t){var r=t.config||[],i=r.length,n=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(r).concat([6,1,2]));return e.box(e.types.esds,n)},e.avc1=function(t){var r=t.avcc,i=t.codecWidth,n=t.codecHeight,a=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,n>>>8&255,255&n,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return e.box(e.types.avc1,a,e.box(e.types.avcC,r))},e.mvex=function(t){return e.box(e.types.mvex,e.trex(t))},e.trex=function(t){var r=t.id,i=new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return e.box(e.types.trex,i)},e.moof=function(t,r){return e.box(e.types.moof,e.mfhd(t.sequenceNumber),e.traf(t,r))},e.mfhd=function(t){var r=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]);return e.box(e.types.mfhd,r)},e.traf=function(t,r){var i=t.id,n=e.box(e.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),a=e.box(e.types.tfdt,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),o=e.sdtp(t),s=e.trun(t,o.byteLength+16+16+8+16+8+8);return e.box(e.types.traf,n,a,s,o)},e.sdtp=function(t){for(var r=t.samples||[],i=r.length,n=new Uint8Array(4+i),a=0;a>>24&255,n>>>16&255,n>>>8&255,255&n,r>>>24&255,r>>>16&255,r>>>8&255,255&r],0);for(var s=0;s>>24&255,d>>>16&255,d>>>8&255,255&d,u>>>24&255,u>>>16&255,u>>>8&255,255&u,l.isLeading<<2|l.dependsOn,l.isDependedOn<<6|l.hasRedundancy<<4|l.isNonSync,0,0,h>>>24&255,h>>>16&255,h>>>8&255,255&h],12+16*s)}return e.box(e.types.trun,o)},e.mdat=function(t){return e.box(e.types.mdat,t)},e}();Y.init();var I=Y,P=function(){function e(){}return e.getSilentFrame=function(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}return null},e}(),C=r(22),N=r(17);function j(e,t){for(var r=0;r1&&(y-=(g=n.pop()).length),null!=this._audioStashedLastSample){var b=this._audioStashedLastSample;this._audioStashedLastSample=null,n.unshift(b),y+=b.length}null!=g&&(this._audioStashedLastSample=g);var v=n[0].dts-this._dtsBase;if(this._audioNextDts)s=v-this._audioNextDts;else if(this._audioSegmentInfoList.isEmpty())s=0,this._fillSilentAfterSeek&&!this._videoSegmentInfoList.isEmpty()&&"mp3"!==this._audioMeta.originalCodec&&(c=!0);else{var w=this._audioSegmentInfoList.getLastSampleBefore(v);if(null!=w){var M=v-(w.originalDts+w.duration);M<=3&&(M=0),s=v-(w.dts+w.duration+M)}else s=0}if(c){var E=v-s,A=this._videoSegmentInfoList.getLastSegmentBefore(v);if(null!=A&&A.beginDts=3*u&&this._fillAudioTimestampGap&&!o.a.safari){C=!0;var U=Math.floor(s/u);a.a.w(this.TAG,"Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\noriginalDts: "+O+" ms, curRefDts: "+H+" ms, dtsCorrection: "+Math.round(s)+" ms, generate: "+U+" frames"),Y=Math.floor(H),F=Math.floor(H+u)-Y;var B=P.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);null==B&&(a.a.w(this.TAG,"Unable to generate silent frame for "+this._audioMeta.originalCodec+" with "+this._audioMeta.channelCount+" channels, repeat last frame"),B=x),j=[];for(var W=0;W=1?L[L.length-1].duration:Math.floor(u);this._audioNextDts=Y+F}if(-1===d&&(d=Y),this._initRecordFlag&&this._recordWorker&&!this._findKeyframe){var G=new Uint8Array(R.unit),q={cmd:p.r,mediaType:"audio",dat:G,pts:Y};this._recordWorker.postMessage(q,[q.dat.buffer])}L.push({dts:Y,pts:Y,cts:0,unit:R.unit,size:R.unit.byteLength,duration:F,originalDts:O,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}),C&&L.push.apply(L,j)}}if(0===L.length)return i.samples=[],void(i.length=0);l?_=new Uint8Array(y):((_=new Uint8Array(y))[0]=y>>>24&255,_[1]=y>>>16&255,_[2]=y>>>8&255,_[3]=255&y,_.set(I.types.mdat,4));for(var Q=0;Q1&&(h-=(c=a.pop()).length),null!=this._videoStashedLastSample){var f=this._videoStashedLastSample;this._videoStashedLastSample=null,a.unshift(f),h+=f.length}null!=c&&(this._videoStashedLastSample=c);var m=a[0].dts-this._dtsBase;if(this._videoNextDts)o=m-this._videoNextDts;else if(this._videoSegmentInfoList.isEmpty())o=0;else{var _=this._videoSegmentInfoList.getLastSampleBefore(m);if(null!=_){var y=m-(_.originalDts+_.duration);y<=3&&(y=0),o=m-(_.dts+_.duration+y)}else o=0}for(var g=new N.b,b=[],v=0;v=1?b[b.length-1].duration:Math.floor(this._videoMeta.refSampleDuration);if(E){var L=new N.d(A,k,S,w.dts,!0);L.fileposition=w.fileposition,g.appendSyncPoint(L),this._findKeyframe=!1}b.push({dts:A,pts:k,cts:T,units:w.units,size:w.length,isKeyframe:E,duration:S,originalDts:M,flags:{isLeading:0,dependsOn:E?2:1,isDependedOn:E?1:0,hasRedundancy:0,isNonSync:E?0:1}})}if(this._initRecordFlag&&this._recordWorker&&!this._findKeyframe)for(var D=!1,R=0;R=3)for(var Y=1;Y=3)for(var F=1;F>>24&255,l[1]=h>>>16&255,l[2]=h>>>8&255,l[3]=255&h,l.set(I.types.mdat,4);for(var B=0;B0)return;if(t>0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,this._demuxer.append(e,t,0),n=e.length;else{this._demuxer=new O(this._config),this._remuxer||(this._remuxer=new H(this._config));var o=this._mediaDataSource;null==o.duration||isNaN(o.duration)||(this._demuxer.overridedDuration=o.duration),"boolean"==typeof o.hasAudio&&(this._demuxer.overridedHasAudio=o.hasAudio),"boolean"==typeof o.hasVideo&&(this._demuxer.overridedHasVideo=o.hasVideo),this._demuxer.timestampBase=o.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._demuxer.onMetaDataArrived=this._onMetaDataArrived.bind(this),this._demuxer.onReceiveH265MediaHLSFrame=this._onReceiveH265MediaFrameFuc,this._demuxer.onScriptDataArrived=this._onScriptDataArrived.bind(this),this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this),this._demuxer.append(e,t,0),n=e.length}}else if(t>0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,n=this._demuxer.parseChunks(e,t);else if((i=v.probe(e)).match){this._demuxer=new v(i,this._config),this._remuxer||(this._remuxer=new H(this._config));var s=this._mediaDataSource;null==s.duration||isNaN(s.duration)||(this._demuxer.overridedDuration=s.duration),"boolean"==typeof s.hasAudio&&(this._demuxer.overridedHasAudio=s.hasAudio),"boolean"==typeof s.hasVideo&&(this._demuxer.overridedHasVideo=s.hasVideo),this._mediaDataSource.hasAudio=!1,this._demuxer.timestampBase=s.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._demuxer.onMetaDataArrived=this._onMetaDataArrived.bind(this),this._demuxer.onReceiveSEIData=this._onReceiveSEIData.bind(this),this._demuxer.onAudioError=this._onAudioError.bind(this),this._demuxer.onReceiveH265MediaFLVFrame=this._onReceiveH265MediaFrameFuc,this._demuxer.onScriptDataArrived=this._onScriptDataArrived.bind(this),this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this),n=this._demuxer.parseChunks(e,t)}else i=null,a.a.e(this.TAG,"Non-FLV, Unsupported media type!"),Promise.resolve().then((function(){r._internalAbort()})),this._emitter.emit(B.a.DEMUX_ERROR,y.a.FORMAT_UNSUPPORTED,"Non-FLV, Unsupported media type"),n=0;return n},t._onMediaInfo=function(e){var t=this;null==this._mediaInfo&&(this._mediaInfo=Object.assign({},e),this._mediaInfo.keyframesIndex=null,this._mediaInfo.segments=[],this._mediaInfo.segmentCount=this._mediaDataSource.segments.length,Object.setPrototypeOf(this._mediaInfo,s.a.prototype));var r=Object.assign({},e);Object.setPrototypeOf(r,s.a.prototype),this._mediaInfo.segments[this._currentSegmentIndex]=r,this._reportSegmentMediaInfo(this._currentSegmentIndex),null!=this._pendingSeekTime&&Promise.resolve().then((function(){var e=t._pendingSeekTime;t._pendingSeekTime=null,t.seek(e)}))},t._onMetaDataArrived=function(e){this._emitter.emit(B.a.METADATA_ARRIVED,e)},t._onAudioError=function(){this._emitter.emit(B.a.AUDIO_ERROR)},t._onReceiveSEIData=function(e){this._emitter.emit(B.a.SEI_DATA,e)},t._onScriptDataArrived=function(e){this._emitter.emit(B.a.SCRIPTDATA_ARRIVED,e)},t._onIOSeeked=function(){this._remuxer.insertDiscontinuity()},t._onIOComplete=function(e,t){var r=e+1;r0&&r[0].originalDts===i&&(i=r[0].pts),this._emitter.emit(B.a.RECOMMEND_SEEKPOINT,i)}},t._enableStatisticsReporter=function(){null==this._statisticsReporter&&(this._statisticsReporter=self.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval))},t._disableStatisticsReporter=function(){this._statisticsReporter&&(self.clearInterval(this._statisticsReporter),this._statisticsReporter=null)},t._reportSegmentMediaInfo=function(e){var t=this._mediaInfo.segments[e],r=Object.assign({},t);r.duration=this._mediaInfo.duration,r.segmentCount=this._mediaInfo.segmentCount,delete r.segments,delete r.keyframesIndex,this._emitter.emit(B.a.MEDIA_INFO,r)},t._reportStatisticsInfo=function(){var e={};e.url=this._ioctl.currentURL,e.hasRedirect=this._ioctl.hasRedirect,e.hasRedirect&&(e.redirectedURL=this._ioctl.currentRedirectedURL),e.speed=this._ioctl.currentSpeed,e.loaderType=this._ioctl.loaderType,e.currentSegmentIndex=this._currentSegmentIndex,e.totalSegmentCount=this._mediaDataSource.segments.length,this._emitter.emit(B.a.STATISTICS_INFO,e)},t.setReceiveH265MediaFrame=function(e){this._onReceiveH265MediaFrameFuc=e},t._getHLSTotalDuration=function(){if(null==this._ioctl)return 0;var e=this._ioctl._getM3u8Loader();return e?e._getM3u8TotalDuration():0},t._seekToSecs=function(e,t){var r=this._ioctl._getM3u8Loader();r&&(r.seek(e,t),this._demuxer&&this._demuxer.resetMediaPts(1)),this._remuxer&&this._remuxer.seek(0),r&&this._demuxer&&this._demuxer.resetMediaPts(0)},t.videoRecording=function(e,t,r,i){this._remuxer&&this._remuxer.videoRecording(e,t,r,i)},e}());t.a=W},function(e,t,r){"use strict";var i=r(1);function n(e,t){for(var r=0;r=500?this.currentKBps:0}},{key:"averageKBps",get:function(){var e=(this._now()-this._firstCheckpoint)/1e3;return this._totalBytes/e/1024}}])&&n(t.prototype,r),i&&n(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}(),s=r(4),d=r(8),u=r(5);function l(e,t){return(l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}var h=function(e){function t(t,r){var i;return(i=e.call(this,"fetch-stream-loader")||this).TAG="FetchStreamLoader",i._seekHandler=t,i._config=r,i._needStash=!0,i._requestAbort=!1,i._contentLength=null,i._receivedLength=0,i}var r,i;i=e,(r=t).prototype=Object.create(i.prototype),r.prototype.constructor=r,l(r,i),t.isSupported=function(){try{var e=d.a.msedge&&d.a.version.minor>=15048,t=!d.a.msedge||e;return self.fetch&&self.ReadableStream&&t}catch(e){return!1}};var n=t.prototype;return n.destroy=function(){this.isWorking()&&this.abort(),e.prototype.destroy.call(this)},n.open=function(e,t){var r=this;this._dataSource=e,this._range=t;var i=e.url;this._config.reuseRedirectedURL&&null!=e.redirectedURL&&(i=e.redirectedURL);var n=this._seekHandler.getConfig(i,t),a=new self.Headers;if("object"==typeof n.headers){var o=n.headers;for(var d in o)o.hasOwnProperty(d)&&a.append(d,o[d])}var l={method:"GET",headers:a,mode:"cors",cache:"default",referrerPolicy:"no-referrer-when-downgrade"};if("object"==typeof this._config.headers)for(var h in this._config.headers)a.append(h,this._config.headers[h]);!1===e.cors&&(l.mode="same-origin"),e.withCredentials&&(l.credentials="include"),e.referrerPolicy&&(l.referrerPolicy=e.referrerPolicy),self.AbortController&&(this._abortController=new self.AbortController,l.signal=this._abortController.signal),this._status=s.c.kConnecting,self.fetch(n.url,l).then((function(e){if(r._requestAbort)return r._status=s.c.kIdle,void e.body.cancel();if(e.ok&&e.status>=200&&e.status<=299){if(e.url!==n.url&&r._onURLRedirect){var t=r._seekHandler.removeURLParameters(e.url);r._onURLRedirect(t)}var i=e.headers.get("Content-Length");return null!=i&&(r._contentLength=parseInt(i),0!==r._contentLength&&r._onContentLengthKnown&&r._onContentLengthKnown(r._contentLength)),r._pump.call(r,e.body.getReader())}if(r._status=s.c.kError,!r._onError)throw new u.d("FetchStreamLoader: Http code invalid, "+e.status+" "+e.statusText);r._onError(s.b.HTTP_STATUS_CODE_INVALID,{code:e.status,msg:e.statusText})})).catch((function(e){if(!r._abortController||!r._abortController.signal.aborted){if(r._status=s.c.kError,!r._onError)throw e;r._onError(s.b.EXCEPTION,{code:-1,msg:e.message})}}))},n.abort=function(){if(this._requestAbort=!0,(this._status!==s.c.kBuffering||!d.a.chrome)&&this._abortController)try{this._abortController.abort()}catch(e){}},n._pump=function(e){var t=this;return e.read().then((function(r){if(r.done)if(null!==t._contentLength&&t._receivedLength299)){if(this._status=s.c.kError,!this._onError)throw new u.d("MozChunkedLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(s.b.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}else this._status=s.c.kBuffering}},a._onProgress=function(e){if(this._status!==s.c.kError){null===this._contentLength&&null!==e.total&&0!==e.total&&(this._contentLength=e.total,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength));var t=e.target.response,r=this._range.from+this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,r,this._receivedLength)}},a._onLoadEnd=function(e){!0!==this._requestAbort?this._status!==s.c.kError&&(this._status=s.c.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1)):this._requestAbort=!1},a._onXhrError=function(e){this._status=s.c.kError;var t=0,r=null;if(this._contentLength&&e.loaded=this._contentLength&&(r=this._range.from+this._contentLength-1),this._currentRequestRange={from:t,to:r},this._internalOpen(this._dataSource,this._currentRequestRange)},h._internalOpen=function(e,t){this._lastTimeLoaded=0;var r=e.url;this._config.reuseRedirectedURL&&(null!=this._currentRedirectedURL?r=this._currentRedirectedURL:null!=e.redirectedURL&&(r=e.redirectedURL));var i=this._seekHandler.getConfig(r,t);this._currentRequestURL=i.url;var n=this._xhr=new XMLHttpRequest;if(n.open("GET",i.url,!0),n.responseType="arraybuffer",n.onreadystatechange=this._onReadyStateChange.bind(this),n.onprogress=this._onProgress.bind(this),n.onload=this._onLoad.bind(this),n.onerror=this._onXhrError.bind(this),e.withCredentials&&(n.withCredentials=!0),"object"==typeof i.headers){var a=i.headers;for(var o in a)a.hasOwnProperty(o)&&n.setRequestHeader(o,a[o])}if("object"==typeof this._config.headers){var s=this._config.headers;for(var d in s)s.hasOwnProperty(d)&&n.setRequestHeader(d,s[d])}n.send()},h.abort=function(){this._requestAbort=!0,this._internalAbort(),this._status=s.c.kComplete},h._internalAbort=function(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)},h._onReadyStateChange=function(e){var t=e.target;if(2===t.readyState){if(null!=t.responseURL){var r=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&r!==this._currentRedirectedURL&&(this._currentRedirectedURL=r,this._onURLRedirect&&this._onURLRedirect(r))}if(t.status>=200&&t.status<=299){if(this._waitForTotalLength)return;this._status=s.c.kBuffering}else{if(this._status=s.c.kError,!this._onError)throw new u.d("RangeLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(s.b.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}}},h._onProgress=function(e){if(this._status!==s.c.kError){if(null===this._contentLength){var t=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,t=!0;var r=e.total;this._internalAbort(),null!=r&0!==r&&(this._totalLength=r)}if(-1===this._range.to?this._contentLength=this._totalLength-this._range.from:this._contentLength=this._range.to-this._range.from+1,t)return void this._openSubRange();this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}var i=e.loaded-this._lastTimeLoaded;this._lastTimeLoaded=e.loaded,this._speedSampler.addBytes(i)}},h._normalizeSpeed=function(e){var t=this._chunkSizeKBList,r=t.length-1,i=0,n=0,a=r;if(e=t[i]&&e=3&&(t=this._speedSampler.currentKBps)),0!==t){var r=this._normalizeSpeed(t);this._currentSpeedNormalized!==r&&(this._currentSpeedNormalized=r,this._currentChunkSizeKB=r)}var i=e.target.response,n=this._range.from+this._receivedLength;this._receivedLength+=i.byteLength;var a=!1;null!=this._contentLength&&this._receivedLength0&&this._receivedLength0)for(var a=r.split("&"),o=0;o0;s[0]!==this._startName&&s[0]!==this._endName&&(d&&(n+="&"),n+=a[o])}return 0===n.length?t:t+"?"+n},e}(),S=r(9),L=r.n(S);function D(e,t){for(var r=0;r0&&(this._stashInitialSize=t.stashInitialSize),this._stashUsed=0,this._stashSize=this._stashInitialSize,this._bufferSize=3145728,this._stashBuffer=new ArrayBuffer(this._bufferSize),this._stashByteStart=0,this._enableStash=!0,!1===t.enableStashBuffer&&(this._enableStash=!1),this._loader=null,this._loaderClass=null,this._seekHandler=null,this._dataSource=e,this._isWebSocketURL=/wss?:\/\/(.+?)/.test(e.url),this._isHLSURL=e.url&&e.url.includes(".m3u8"),this._refTotalLength=e.filesize?e.filesize:null,this._totalLength=this._refTotalLength,this._fullRequestFlag=!1,this._currentRange=null,this._redirectedURL=null,this._speedNormalized=0,this._speedSampler=new o,this._speedNormalizeList=[64,128,256,384,512,768,1024,1536,2048,3072,4096],this._isEarlyEofReconnecting=!1,this._paused=!1,this._resumeFrom=0,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._loaderChunkArrival=null,this._loaderHLSError=null,this._selectSeekHandler(),this._selectLoader(),this._createLoader()}var t,r,n,a=e.prototype;return a.destroy=function(){this._loader.isWorking()&&this._loader.abort(),this._loader.destroy(),this._loader=null,this._loaderClass=null,this._dataSource=null,this._stashBuffer=null,this._stashUsed=this._stashSize=this._bufferSize=this._stashByteStart=0,this._currentRange=null,this._speedSampler=null,this._isEarlyEofReconnecting=!1,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._loaderChunkArrival=null,this._loaderHLSError=null,this._extraData=null},a.isWorking=function(){return this._loader&&this._loader.isWorking()&&!this._paused},a.isPaused=function(){return this._paused},a._selectSeekHandler=function(){var e=this._config;if("range"===e.seekType)this._seekHandler=new T(this._config.rangeLoadZeroStart);else if("param"===e.seekType){var t=e.seekParamStart||"bstart",r=e.seekParamEnd||"bend";this._seekHandler=new k(t,r)}else{if("custom"!==e.seekType)throw new u.b("Invalid seekType in config: "+e.seekType);if("function"!=typeof e.customSeekHandler)throw new u.b("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new e.customSeekHandler}},a._selectLoader=function(){if(null!=this._config.customLoader)this._loaderClass=this._config.customLoader;else if(this._isHLSURL)this._loaderClass=_;else if(this._isWebSocketURL)this._loaderClass=A;else if(h.isSupported())this._loaderClass=h;else if(y.isSupported())this._loaderClass=y;else{if(!M.isSupported())throw new u.d("Your browser doesn't support xhr with arraybuffer responseType!");this._loaderClass=M}},a._createLoader=function(){this._loader=new this._loaderClass(this._seekHandler,this._config),!1===this._loader.needStashBuffer&&(this._enableStash=!1),this._loader.onContentLengthKnown=this._onContentLengthKnown.bind(this),this._loader.onURLRedirect=this._onURLRedirect.bind(this),this._loader.onDataArrival=this._onLoaderChunkArrival.bind(this),this._loader.onComplete=this._onLoaderComplete.bind(this),this._loader.onError=this._onLoaderError.bind(this),this._loader.onHLSError=this._onLoaderHLSError.bind(this)},a.open=function(e){this._currentRange={from:0,to:-1},e&&(this._currentRange.from=e),this._speedSampler.reset(),e||(this._fullRequestFlag=!0),this._loader.open(this._dataSource,Object.assign({},this._currentRange))},a.abort=function(){this._loader.abort(),this._paused&&(this._paused=!1,this._resumeFrom=0)},a.pause=function(){this.isWorking()&&(this._loader.abort(),0!==this._stashUsed?(this._resumeFrom=this._stashByteStart,this._currentRange.to=this._stashByteStart-1):this._resumeFrom=this._currentRange.to+1,this._stashUsed=0,this._stashByteStart=0,this._paused=!0)},a.resume=function(){if(this._paused){this._paused=!1;var e=this._resumeFrom;this._resumeFrom=0,this._internalSeek(e,!0)}},a.seek=function(e){this._paused=!1,this._stashUsed=0,this._stashByteStart=0,this._internalSeek(e,!0)},a._internalSeek=function(e,t){this._loader.isWorking()&&this._loader.abort(),this._flushStashBuffer(t),this._loader.destroy(),this._loader=null;var r={from:e,to:-1};this._currentRange={from:r.from,to:-1},this._speedSampler.reset(),this._stashSize=this._stashInitialSize,this._createLoader(),this._loader.open(this._dataSource,r),this._onSeeked&&this._onSeeked()},a.updateUrl=function(e){if(!e||"string"!=typeof e||0===e.length)throw new u.b("Url must be a non-empty string!");this._dataSource.url=e},a._expandBuffer=function(e){for(var t=this._stashSize;t+10485760){var i=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(r,0,t).set(i,0)}this._stashBuffer=r,this._bufferSize=t}},a._normalizeSpeed=function(e){var t=this._speedNormalizeList,r=t.length-1,i=0,n=0,a=r;if(e=t[i]&&e=512&&e<=1024?Math.floor(1.5*e):2*e)>8192&&(t=8192);var r=1024*t+1048576;this._bufferSize0){var o=this._stashBuffer.slice(0,this._stashUsed),s=this._dispatchChunks(o,this._stashByteStart);if(s0){var d=new Uint8Array(o,s);a.set(d,0),this._stashUsed=d.byteLength,this._stashByteStart+=s}}else this._stashUsed=0,this._stashByteStart+=s;this._stashUsed+e.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+e.byteLength),a=new Uint8Array(this._stashBuffer,0,this._bufferSize)),a.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else{var l=this._dispatchChunks(e,t);if(lthis._bufferSize&&(this._expandBuffer(h),a=new Uint8Array(this._stashBuffer,0,this._bufferSize)),a.set(new Uint8Array(e,l),0),this._stashUsed+=h,this._stashByteStart=t+l}}}else if(0===this._stashUsed){var c=this._dispatchChunks(e,t);if(cthis._bufferSize&&this._expandBuffer(f),new Uint8Array(this._stashBuffer,0,this._bufferSize).set(new Uint8Array(e,c),0),this._stashUsed+=f,this._stashByteStart=t+c}}else{this._stashUsed+e.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+e.byteLength);var m=new Uint8Array(this._stashBuffer,0,this._bufferSize);m.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength;var _=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart);if(_0){var p=new Uint8Array(this._stashBuffer,_);m.set(p,0)}this._stashUsed-=_,this._stashByteStart+=_}}},a._flushStashBuffer=function(e){if(this._stashUsed>0){var t=this._stashBuffer.slice(0,this._stashUsed),r=this._dispatchChunks(t,this._stashByteStart),n=t.byteLength-r;if(r0){var a=new Uint8Array(this._stashBuffer,0,this._bufferSize),o=new Uint8Array(t,r);a.set(o,0),this._stashUsed=o.byteLength,this._stashByteStart+=r}return 0}i.a.w(this.TAG,n+" bytes unconsumed data remain when flush buffer, dropped")}return this._stashUsed=0,this._stashByteStart=0,n}return 0},a._onLoaderComplete=function(e,t,r){this._flushStashBuffer(!0),this._onComplete&&this._onComplete(this._extraData,r)},a._onLoaderHLSError=function(){this._loaderHLSError()},a._onLoaderError=function(e,t){switch(i.a.e(this.TAG,"Loader error, code = "+t.code+", msg = "+t.msg),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,e=s.b.UNRECOVERABLE_EARLY_EOF),e){case s.b.EARLY_EOF:if(!this._config.isLive&&this._totalLength){var r=this._currentRange.to+1;return void(r>>24]^l[m>>>16&255]^h[_>>>8&255]^c[255&p]^t[y++],o=u[m>>>24]^l[_>>>16&255]^h[p>>>8&255]^c[255&f]^t[y++],s=u[_>>>24]^l[p>>>16&255]^h[f>>>8&255]^c[255&m]^t[y++],d=u[p>>>24]^l[f>>>16&255]^h[m>>>8&255]^c[255&_]^t[y++],f=a,m=o,_=s,p=d;return a=(i[f>>>24]<<24|i[m>>>16&255]<<16|i[_>>>8&255]<<8|i[255&p])^t[y++],o=(i[m>>>24]<<24|i[_>>>16&255]<<16|i[p>>>8&255]<<8|i[255&f])^t[y++],s=(i[_>>>24]<<24|i[p>>>16&255]<<16|i[f>>>8&255]<<8|i[255&m])^t[y++],d=(i[p>>>24]<<24|i[f>>>16&255]<<16|i[m>>>8&255]<<8|i[255&_])^t[y++],[a>>>=0,o>>>=0,s>>>=0,d>>>=0]}var s=[0,1,2,4,8,16,32,64,128,27,54],d=function(){for(var e=new Array(256),t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;for(var r=[],i=[],n=[[],[],[],[]],a=[[],[],[],[]],o=0,s=0,d=0;d<256;++d){var u=s^s<<1^s<<2^s<<3^s<<4;u=u>>>8^255&u^99,r[o]=u,i[u]=o;var l=e[o],h=e[l],c=e[h],f=257*e[u]^16843008*u;n[0][o]=f<<24|f>>>8,n[1][o]=f<<16|f>>>16,n[2][o]=f<<8|f>>>24,n[3][o]=f,f=16843009*c^65537*h^257*l^16843008*o,a[0][u]=f<<24|f>>>8,a[1][u]=f<<16|f>>>16,a[2][u]=f<<8|f>>>24,a[3][u]=f,0===o?o=s=1:(o=l^e[e[e[c^l]]],s^=e[e[s]])}return{SBOX:r,INV_SBOX:i,SUB_MIX:n,INV_SUB_MIX:a}}();function u(e){this._key=n(e),this._reset()}u.blockSize=16,u.keySize=32,u.prototype.blockSize=u.blockSize,u.prototype.keySize=u.keySize,u.prototype._reset=function(){for(var e=this._key,t=e.length,r=t+6,i=4*(r+1),n=[],a=0;a>>24,o=d.SBOX[o>>>24]<<24|d.SBOX[o>>>16&255]<<16|d.SBOX[o>>>8&255]<<8|d.SBOX[255&o],o^=s[a/t|0]<<24):t>6&&a%t==4&&(o=d.SBOX[o>>>24]<<24|d.SBOX[o>>>16&255]<<16|d.SBOX[o>>>8&255]<<8|d.SBOX[255&o]),n[a]=n[a-t]^o}for(var u=[],l=0;l>>24]]^d.INV_SUB_MIX[1][d.SBOX[c>>>16&255]]^d.INV_SUB_MIX[2][d.SBOX[c>>>8&255]]^d.INV_SUB_MIX[3][d.SBOX[255&c]]}this._nRounds=r,this._keySchedule=n,this._invKeySchedule=u},u.prototype.encryptBlockRaw=function(e){return o(e=n(e),this._keySchedule,d.SUB_MIX,d.SBOX,this._nRounds)},u.prototype.encryptBlock=function(e){var t=this.encryptBlockRaw(e),r=i.allocUnsafe(16);return r.writeUInt32BE(t[0],0),r.writeUInt32BE(t[1],4),r.writeUInt32BE(t[2],8),r.writeUInt32BE(t[3],12),r},u.prototype.decryptBlock=function(e){var t=(e=n(e))[1];e[1]=e[3],e[3]=t;var r=o(e,this._invKeySchedule,d.INV_SUB_MIX,d.INV_SBOX,this._nRounds),a=i.allocUnsafe(16);return a.writeUInt32BE(r[0],0),a.writeUInt32BE(r[3],4),a.writeUInt32BE(r[2],8),a.writeUInt32BE(r[1],12),a},u.prototype.scrub=function(){a(this._keySchedule),a(this._invKeySchedule),a(this._key)},e.exports.AES=u},function(e,t,r){var i=r(7).Buffer,n=r(50);e.exports=function(e,t,r,a){if(i.isBuffer(e)||(e=i.from(e,"binary")),t&&(i.isBuffer(t)||(t=i.from(t,"binary")),8!==t.length))throw new RangeError("salt should be Buffer with 8 byte length");for(var o=r/8,s=i.alloc(o),d=i.alloc(a||0),u=i.alloc(0);o>0||a>0;){var l=new n;l.update(u),l.update(e),t&&l.update(t),u=l.digest();var h=0;if(o>0){var c=s.length-o;h=Math.min(o,u.length),u.copy(s,c,0,h),o-=h}if(h0){var f=d.length-a,m=Math.min(a,u.length-h);u.copy(d,f,h,h+m),a-=m}}return u.fill(0),{key:s,iv:d}}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){"use strict";var i=r(12),n=r(16),a=n.getNAF,o=n.getJSF,s=n.assert;function d(e,t){this.type=e,this.p=new i(t.p,16),this.red=t.prime?i.red(t.prime):i.mont(this.p),this.zero=new i(0).toRed(this.red),this.one=new i(1).toRed(this.red),this.two=new i(2).toRed(this.red),this.n=t.n&&new i(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function u(e,t){this.curve=e,this.type=t,this.precomputed=null}e.exports=d,d.prototype.point=function(){throw new Error("Not implemented")},d.prototype.validate=function(){throw new Error("Not implemented")},d.prototype._fixedNafMul=function(e,t){s(e.precomputed);var r=e._getDoubles(),i=a(t,1,this._bitLength),n=(1<=o;l--)d=(d<<1)+i[l];u.push(d)}for(var h=this.jpoint(null,null,null),c=this.jpoint(null,null,null),f=n;f>0;f--){for(o=0;o=0;u--){for(var l=0;u>=0&&0===o[u];u--)l++;if(u>=0&&l++,d=d.dblp(l),u<0)break;var h=o[u];s(0!==h),d="affine"===e.type?h>0?d.mixedAdd(n[h-1>>1]):d.mixedAdd(n[-h-1>>1].neg()):h>0?d.add(n[h-1>>1]):d.add(n[-h-1>>1].neg())}return"affine"===e.type?d.toP():d},d.prototype._wnafMulAdd=function(e,t,r,i,n){var s,d,u,l=this._wnafT1,h=this._wnafT2,c=this._wnafT3,f=0;for(s=0;s=1;s-=2){var _=s-1,p=s;if(1===l[_]&&1===l[p]){var y=[t[_],null,null,t[p]];0===t[_].y.cmp(t[p].y)?(y[1]=t[_].add(t[p]),y[2]=t[_].toJ().mixedAdd(t[p].neg())):0===t[_].y.cmp(t[p].y.redNeg())?(y[1]=t[_].toJ().mixedAdd(t[p]),y[2]=t[_].add(t[p].neg())):(y[1]=t[_].toJ().mixedAdd(t[p]),y[2]=t[_].toJ().mixedAdd(t[p].neg()));var g=[-3,-1,-5,-7,0,7,5,1,3],b=o(r[_],r[p]);for(f=Math.max(b[0].length,f),c[_]=new Array(f),c[p]=new Array(f),d=0;d=0;s--){for(var A=0;s>=0;){var T=!0;for(d=0;d=0&&A++,M=M.dblp(A),s<0)break;for(d=0;d0?u=h[d][k-1>>1]:k<0&&(u=h[d][-k-1>>1].neg()),M="affine"===u.type?M.mixedAdd(u):M.add(u))}}for(s=0;s=Math.ceil((e.bitLength()+1)/t.step)},u.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,n=0;n>>32-t}function u(e,t,r,i,n,a,o){return d(e+(t&r|~t&i)+n+a|0,o)+t|0}function l(e,t,r,i,n,a,o){return d(e+(t&i|r&~i)+n+a|0,o)+t|0}function h(e,t,r,i,n,a,o){return d(e+(t^r^i)+n+a|0,o)+t|0}function c(e,t,r,i,n,a,o){return d(e+(r^(t|~i))+n+a|0,o)+t|0}i(s,n),s.prototype._update=function(){for(var e=o,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,i=this._b,n=this._c,a=this._d;r=u(r,i,n,a,e[0],3614090360,7),a=u(a,r,i,n,e[1],3905402710,12),n=u(n,a,r,i,e[2],606105819,17),i=u(i,n,a,r,e[3],3250441966,22),r=u(r,i,n,a,e[4],4118548399,7),a=u(a,r,i,n,e[5],1200080426,12),n=u(n,a,r,i,e[6],2821735955,17),i=u(i,n,a,r,e[7],4249261313,22),r=u(r,i,n,a,e[8],1770035416,7),a=u(a,r,i,n,e[9],2336552879,12),n=u(n,a,r,i,e[10],4294925233,17),i=u(i,n,a,r,e[11],2304563134,22),r=u(r,i,n,a,e[12],1804603682,7),a=u(a,r,i,n,e[13],4254626195,12),n=u(n,a,r,i,e[14],2792965006,17),r=l(r,i=u(i,n,a,r,e[15],1236535329,22),n,a,e[1],4129170786,5),a=l(a,r,i,n,e[6],3225465664,9),n=l(n,a,r,i,e[11],643717713,14),i=l(i,n,a,r,e[0],3921069994,20),r=l(r,i,n,a,e[5],3593408605,5),a=l(a,r,i,n,e[10],38016083,9),n=l(n,a,r,i,e[15],3634488961,14),i=l(i,n,a,r,e[4],3889429448,20),r=l(r,i,n,a,e[9],568446438,5),a=l(a,r,i,n,e[14],3275163606,9),n=l(n,a,r,i,e[3],4107603335,14),i=l(i,n,a,r,e[8],1163531501,20),r=l(r,i,n,a,e[13],2850285829,5),a=l(a,r,i,n,e[2],4243563512,9),n=l(n,a,r,i,e[7],1735328473,14),r=h(r,i=l(i,n,a,r,e[12],2368359562,20),n,a,e[5],4294588738,4),a=h(a,r,i,n,e[8],2272392833,11),n=h(n,a,r,i,e[11],1839030562,16),i=h(i,n,a,r,e[14],4259657740,23),r=h(r,i,n,a,e[1],2763975236,4),a=h(a,r,i,n,e[4],1272893353,11),n=h(n,a,r,i,e[7],4139469664,16),i=h(i,n,a,r,e[10],3200236656,23),r=h(r,i,n,a,e[13],681279174,4),a=h(a,r,i,n,e[0],3936430074,11),n=h(n,a,r,i,e[3],3572445317,16),i=h(i,n,a,r,e[6],76029189,23),r=h(r,i,n,a,e[9],3654602809,4),a=h(a,r,i,n,e[12],3873151461,11),n=h(n,a,r,i,e[15],530742520,16),r=c(r,i=h(i,n,a,r,e[2],3299628645,23),n,a,e[0],4096336452,6),a=c(a,r,i,n,e[7],1126891415,10),n=c(n,a,r,i,e[14],2878612391,15),i=c(i,n,a,r,e[5],4237533241,21),r=c(r,i,n,a,e[12],1700485571,6),a=c(a,r,i,n,e[3],2399980690,10),n=c(n,a,r,i,e[10],4293915773,15),i=c(i,n,a,r,e[1],2240044497,21),r=c(r,i,n,a,e[8],1873313359,6),a=c(a,r,i,n,e[15],4264355552,10),n=c(n,a,r,i,e[6],2734768916,15),i=c(i,n,a,r,e[13],1309151649,21),r=c(r,i,n,a,e[4],4149444226,6),a=c(a,r,i,n,e[11],3174756917,10),n=c(n,a,r,i,e[2],718787259,15),i=c(i,n,a,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+i|0,this._c=this._c+n|0,this._d=this._d+a|0},s.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=a.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e},e.exports=s},function(e,t,r){(function(t){function r(e){try{if(!t.localStorage)return!1}catch(e){return!1}var r=t.localStorage[e];return null!=r&&"true"===String(r).toLowerCase()}e.exports=function(e,t){if(r("noDeprecation"))return e;var i=!1;return function(){if(!i){if(r("throwDeprecation"))throw new Error(t);r("traceDeprecation")?console.trace(t):console.warn(t),i=!0}return e.apply(this,arguments)}}}).call(this,r(14))},function(e,t,r){"use strict";var i=r(26).codes.ERR_STREAM_PREMATURE_CLOSE;function n(){}e.exports=function e(t,r,a){if("function"==typeof r)return e(t,null,r);r||(r={}),a=function(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,i=new Array(r),n=0;n>>32-t}function _(e,t,r,i,n,a,o,s){return m(e+(t^r^i)+a+o|0,s)+n|0}function p(e,t,r,i,n,a,o,s){return m(e+(t&r|~t&i)+a+o|0,s)+n|0}function y(e,t,r,i,n,a,o,s){return m(e+((t|~r)^i)+a+o|0,s)+n|0}function g(e,t,r,i,n,a,o,s){return m(e+(t&i|r&~i)+a+o|0,s)+n|0}function b(e,t,r,i,n,a,o,s){return m(e+(t^(r|~i))+a+o|0,s)+n|0}n(f,a),f.prototype._update=function(){for(var e=o,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,i=0|this._b,n=0|this._c,a=0|this._d,f=0|this._e,v=0|this._a,w=0|this._b,M=0|this._c,E=0|this._d,A=0|this._e,T=0;T<80;T+=1){var k,S;T<16?(k=_(r,i,n,a,f,e[s[T]],h[0],u[T]),S=b(v,w,M,E,A,e[d[T]],c[0],l[T])):T<32?(k=p(r,i,n,a,f,e[s[T]],h[1],u[T]),S=g(v,w,M,E,A,e[d[T]],c[1],l[T])):T<48?(k=y(r,i,n,a,f,e[s[T]],h[2],u[T]),S=y(v,w,M,E,A,e[d[T]],c[2],l[T])):T<64?(k=g(r,i,n,a,f,e[s[T]],h[3],u[T]),S=p(v,w,M,E,A,e[d[T]],c[3],l[T])):(k=b(r,i,n,a,f,e[s[T]],h[4],u[T]),S=_(v,w,M,E,A,e[d[T]],c[4],l[T])),r=f,f=a,a=m(n,10),n=i,i=k,v=A,A=E,E=m(M,10),M=w,w=S}var L=this._b+n+E|0;this._b=this._c+a+A|0,this._c=this._d+f+v|0,this._d=this._e+r+w|0,this._e=this._a+i+M|0,this._a=L},f.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=i.alloc?i.alloc(20):new i(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e},e.exports=f},function(e,t,r){"use strict";var i=r(28).codes.ERR_STREAM_PREMATURE_CLOSE;function n(){}e.exports=function e(t,r,a){if("function"==typeof r)return e(t,null,r);r||(r={}),a=function(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,i=new Array(r),n=0;n-1?i:a.nextTick;g.WritableState=y;var u=Object.create(r(33));u.inherits=r(6);var l={deprecate:r(51)},h=r(87),c=r(56).Buffer,f=(void 0!==n?n:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var m,_=r(88);function p(){}function y(e,t){s=s||r(24),e=e||{};var i=t instanceof s;this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var n=e.highWaterMark,u=e.writableHighWaterMark,l=this.objectMode?16:16384;this.highWaterMark=n||0===n?n:i&&(u||0===u)?u:l,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===e.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,i=r.sync,n=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,i,n){--t.pendingcb,r?(a.nextTick(n,i),a.nextTick(A,e,t),e._writableState.errorEmitted=!0,e.emit("error",i)):(n(i),e._writableState.errorEmitted=!0,e.emit("error",i),A(e,t))}(e,r,i,t,n);else{var o=M(r);o||r.corked||r.bufferProcessing||!r.bufferedRequest||w(e,r),i?d(v,e,r,o,n):v(e,r,o,n)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function g(e){if(s=s||r(24),!(m.call(g,this)||this instanceof s))return new g(e);this._writableState=new y(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),h.call(this)}function b(e,t,r,i,n,a,o){t.writelen=i,t.writecb=o,t.writing=!0,t.sync=!0,r?e._writev(n,t.onwrite):e._write(n,a,t.onwrite),t.sync=!1}function v(e,t,r,i){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,i(),A(e,t)}function w(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var i=t.bufferedRequestCount,n=new Array(i),a=t.corkedRequestsFree;a.entry=r;for(var s=0,d=!0;r;)n[s]=r,r.isBuf||(d=!1),r=r.next,s+=1;n.allBuffers=d,b(e,t,!0,t.length,n,"",a.finish),t.pendingcb++,t.lastBufferedRequest=null,a.next?(t.corkedRequestsFree=a.next,a.next=null):t.corkedRequestsFree=new o(t),t.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,l=r.encoding,h=r.callback;if(b(e,t,!1,t.objectMode?1:u.length,u,l,h),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function M(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function E(e,t){e._final((function(r){t.pendingcb--,r&&e.emit("error",r),t.prefinished=!0,e.emit("prefinish"),A(e,t)}))}function A(e,t){var r=M(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,a.nextTick(E,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),r}u.inherits(g,h),y.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(y.prototype,"buffer",{get:l.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(m=Function.prototype[Symbol.hasInstance],Object.defineProperty(g,Symbol.hasInstance,{value:function(e){return!!m.call(this,e)||this===g&&(e&&e._writableState instanceof y)}})):m=function(e){return e instanceof this},g.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},g.prototype.write=function(e,t,r){var i,n=this._writableState,o=!1,s=!n.objectMode&&(i=e,c.isBuffer(i)||i instanceof f);return s&&!c.isBuffer(e)&&(e=function(e){return c.from(e)}(e)),"function"==typeof t&&(r=t,t=null),s?t="buffer":t||(t=n.defaultEncoding),"function"!=typeof r&&(r=p),n.ended?function(e,t){var r=new Error("write after end");e.emit("error",r),a.nextTick(t,r)}(this,r):(s||function(e,t,r,i){var n=!0,o=!1;return null===r?o=new TypeError("May not write null values to stream"):"string"==typeof r||void 0===r||t.objectMode||(o=new TypeError("Invalid non-string/buffer chunk")),o&&(e.emit("error",o),a.nextTick(i,o),n=!1),n}(this,n,e,r))&&(n.pendingcb++,o=function(e,t,r,i,n,a){if(!r){var o=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=c.from(t,r));return t}(t,i,n);i!==o&&(r=!0,n="buffer",i=o)}var s=t.objectMode?1:i.length;t.length+=s;var d=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(g.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),g.prototype._write=function(e,t,r){r(new Error("_write() is not implemented"))},g.prototype._writev=null,g.prototype.end=function(e,t,r){var i=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),i.corked&&(i.corked=1,this.uncork()),i.ending||function(e,t,r){t.ending=!0,A(e,t),r&&(t.finished?a.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,i,r)},Object.defineProperty(g.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),g.prototype.destroy=_.destroy,g.prototype._undestroy=_.undestroy,g.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,r(11),r(299).setImmediate,r(14))},function(e,t,r){"use strict";var i=r(15);function n(e){this.options=e,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0,this.padding=!1!==e.padding}e.exports=n,n.prototype._init=function(){},n.prototype.update=function(e){return 0===e.length?[]:"decrypt"===this.type?this._updateDecrypt(e):this._updateEncrypt(e)},n.prototype._buffer=function(e,t){for(var r=Math.min(this.buffer.length-this.bufferOff,e.length-t),i=0;i0;i--)t+=this._buffer(e,t),r+=this._flushBuffer(n,r);return t+=this._buffer(e,t),n},n.prototype.final=function(e){var t,r;return e&&(t=this.update(e)),r="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),t?t.concat(r):r},n.prototype._pad=function(e,t){if(0===t)return!1;for(;t=0||!t.umod(e.prime1)||!t.umod(e.prime2));return t}function o(e,r){var n=function(e){var t=a(e);return{blinder:t.toRed(i.mont(e.modulus)).redPow(new i(e.publicExponent)).fromRed(),unblinder:t.invm(e.modulus)}}(r),o=r.modulus.byteLength(),s=new i(e).mul(n.blinder).umod(r.modulus),d=s.toRed(i.mont(r.prime1)),u=s.toRed(i.mont(r.prime2)),l=r.coefficient,h=r.prime1,c=r.prime2,f=d.redPow(r.exponent1).fromRed(),m=u.redPow(r.exponent2).fromRed(),_=f.isub(m).imul(l).umod(h).imul(c);return m.iadd(_).imul(n.unblinder).umod(r.modulus).toArrayLike(t,"be",o)}o.getr=a,e.exports=o}).call(this,r(10).Buffer)},function(e,t,r){"use strict";var i=t;i.version=r(333).version,i.utils=r(16),i.rand=r(61),i.curve=r(108),i.curves=r(64),i.ec=r(344),i.eddsa=r(348)},function(e,t,r){"use strict";var i,n=t,a=r(65),o=r(108),s=r(16).assert;function d(e){"short"===e.type?this.curve=new o.short(e):"edwards"===e.type?this.curve=new o.edwards(e):this.curve=new o.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,s(this.g.validate(),"Invalid curve"),s(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function u(e,t){Object.defineProperty(n,e,{configurable:!0,enumerable:!0,get:function(){var r=new d(t);return Object.defineProperty(n,e,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=d,u("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:a.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),u("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:a.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),u("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:a.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),u("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:a.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),u("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:a.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),u("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["9"]}),u("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{i=r(343)}catch(e){i=void 0}u("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:a.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",i]})},function(e,t,r){var i=t;i.utils=r(19),i.common=r(35),i.sha=r(337),i.ripemd=r(341),i.hmac=r(342),i.sha1=i.sha.sha1,i.sha256=i.sha.sha256,i.sha224=i.sha.sha224,i.sha384=i.sha.sha384,i.sha512=i.sha.sha512,i.ripemd160=i.ripemd.ripemd160},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t,r){"use strict";r.r(t),function(e,i,n,a){var o,s=r(2),d=!1,u="",l=void 0!==l?l:{};function h(){var t,s={};for(t in l)l.hasOwnProperty(t)&&(s[t]=l[t]);var d=[],h="./this.program",c=function(e,t){throw t},f=!1,m=!1,_=!1,p=!1,y=!1;if(f="object"==typeof window,m="function"==typeof importScripts,p="object"==typeof e&&"object"==typeof e.versions&&"string"==typeof e.versions.node,_=p&&!f&&!m,y=!f&&!_&&!m,l.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var g,b,v,w,M="";function E(e){return l.locateFile?l.locateFile(e,M):M+e}if(_)M=i+"/",g=function(e,t){var i;return v||(v=r(69)),w||(w=r(70)),e=w.normalize(e),i=v.readFileSync(e),t?i:i.toString()},b=function(e){var t=g(e,!0);return t.buffer||(t=new Uint8Array(t)),P(t.buffer),t},e.argv.length>1&&(h=e.argv[1].replace(/\\/g,"/")),d=e.argv.slice(2),n.exports=l,e.on("uncaughtException",(function(e){if(!(e instanceof ei))throw e})),e.on("unhandledRejection",Ce),c=function(t){e.exit(t)},l.inspect=function(){return"[Emscripten Module object]"};else if(y)"undefined"!=typeof read&&(g=function(e){return read(e)}),b=function(e){var t;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(P("object"==typeof(t=read(e,"binary"))),t)},"undefined"!=typeof scriptArgs?d=scriptArgs:void 0!==arguments&&(d=arguments),"function"==typeof quit&&(c=function(e){quit(e)}),"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print);else{if(!f&&!m)throw new Error("environment detection error");m?M=self.location.href:document.currentScript&&(M=document.currentScript.src),M=0!==M.indexOf("blob:")?M.substr(0,M.lastIndexOf("/")+1):"",g=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},m&&(b=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),function(e,t,r){var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=function(){200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)},function(e){document.title=e}}var A=l.print||console.log.bind(console),T=l.printErr||console.warn.bind(console);for(t in s)s.hasOwnProperty(t)&&(l[t]=s[t]);function k(e){k.shown||(k.shown={}),k.shown[e]||(k.shown[e]=1,T(e))}function S(e,t){var r=[1,0,1,96],i=t.slice(0,1),n=t.slice(1),a={i:127,j:126,f:125,d:124};r.push(n.length);for(var o=0;o=i);)++n;if(n-t>16&&e.subarray&&F)return F.decode(e.subarray(t,n));for(var a="";t>10,56320|1023&u)}}else a+=String.fromCharCode((31&o)<<6|s)}else a+=String.fromCharCode(o)}return a}function U(e,t){return e?H(Q,e,t):""}function B(e,t,r,i){if(!(i>0))return 0;for(var n=r,a=r+i-1,o=0;o=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++o);if(s<=127){if(r>=a)break;t[r++]=s}else if(s<=2047){if(r+1>=a)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=a)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=a)break;s>=2097152&&k("Invalid Unicode code point 0x"+s.toString(16)+" encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF)."),t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-n}function W(e,t,r){return P("number"==typeof r,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),B(e,Q,t,r)}function z(e){for(var t=0,r=0;r=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&e.charCodeAt(++r)),i<=127?++t:t+=i<=2047?2:i<=65535?3:4}return t}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");function X(e,t){P(e.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),q.set(e,t)}function V(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);r||(q[t>>0]=0)}var G,q,Q,K,J,Z,$=65536;function ee(e,t){return e%t>0&&(e+=t-e%t),e}function te(e){G=e,l.HEAP8=q=new Int8Array(e),l.HEAP16=K=new Int16Array(e),l.HEAP32=J=new Int32Array(e),l.HEAPU8=Q=new Uint8Array(e),l.HEAPU16=new Uint16Array(e),l.HEAPU32=Z=new Uint32Array(e),l.HEAPF32=new Float32Array(e),l.HEAPF64=new Float64Array(e)}var re=6584208,ie=1341328,ne=6584208,ae=1341168;P(re%16==0,"stack must start aligned"),P(ne%16==0,"heap must start aligned");var oe=5242880;l.TOTAL_STACK&&P(oe===l.TOTAL_STACK,"the stack size can no longer be determined at runtime");var se=l.TOTAL_MEMORY||67108864;function de(){P(0==(3&ie)),Z[1+(ie>>2)]=34821223,Z[2+(ie>>2)]=2310721022,J[0]=1668509029}function ue(){var e=Z[1+(ie>>2)],t=Z[2+(ie>>2)];34821223==e&&2310721022==t||Ce("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x"+t.toString(16)+" "+e.toString(16)),1668509029!==J[0]&&Ce("Runtime error: The application has corrupted its heap memory area (address zero)!")}function le(e){Ce("Stack overflow! Attempted to allocate "+e+" bytes on the stack, but stack has only "+(ie-Jr()+e)+" bytes available!")}function he(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var r=t.func;"number"==typeof r?void 0===t.arg?l.dynCall_v(r):l.dynCall_vi(r,t.arg):r(void 0===t.arg?null:t.arg)}else t()}}Object.getOwnPropertyDescriptor(l,"TOTAL_MEMORY")||Object.defineProperty(l,"TOTAL_MEMORY",{configurable:!0,get:function(){Ce("Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY")}}),P(se>=oe,"TOTAL_MEMORY should be larger than TOTAL_STACK, was "+se+"! (TOTAL_STACK="+oe+")"),P("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&void 0!==Int32Array.prototype.subarray&&void 0!==Int32Array.prototype.set,"JS engine does not provide full typed array support"),(x=l.wasmMemory?l.wasmMemory:new WebAssembly.Memory({initial:se/$}))&&(G=x.buffer),P((se=G.byteLength)%$==0),te(G),J[ae>>2]=ne,function(){var e=new Int16Array(1),t=new Int8Array(e.buffer);if(e[0]=25459,115!==t[0]||99!==t[1])throw"Runtime error: expected the system to be little-endian!"}();var ce=[],fe=[],me=[],_e=[],pe=!1,ye=!1;function ge(){if(l.preRun)for("function"==typeof l.preRun&&(l.preRun=[l.preRun]);l.preRun.length;)Ee(l.preRun.shift());he(ce)}function be(){ue(),P(!pe),pe=!0,l.noFSInit||ot.init.initialized||ot.init(),rt.init(),he(fe)}function ve(){ue(),ot.ignorePermissions=!1,he(me)}function we(){ue(),ye=!0}function Me(){if(ue(),l.postRun)for("function"==typeof l.postRun&&(l.postRun=[l.postRun]);l.postRun.length;)Ae(l.postRun.shift());he(_e)}function Ee(e){ce.unshift(e)}function Ae(e){_e.unshift(e)}P(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),P(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),P(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),P(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var Te=Math.abs,ke=Math.ceil,Se=Math.floor,Le=Math.min,De=0,Re=null,xe=null,Oe={};function Ye(e){for(var t=e;;){if(!Oe[e])return e;e=t+Math.random()}return e}function Ie(e){De++,l.monitorRunDependencies&&l.monitorRunDependencies(De),e?(P(!Oe[e]),Oe[e]=1,null===Re&&"undefined"!=typeof setInterval&&(Re=setInterval((function(){if(I)return clearInterval(Re),void(Re=null);var e=!1;for(var t in Oe)e||(e=!0,T("still waiting on run dependencies:")),T("dependency: "+t);e&&T("(end of list)")}),1e4))):T("warning: run dependency added without ID")}function Pe(e){if(De--,l.monitorRunDependencies&&l.monitorRunDependencies(De),e?(P(Oe[e]),delete Oe[e]):T("warning: run dependency removed without ID"),0==De&&(null!==Re&&(clearInterval(Re),Re=null),xe)){var t=xe;xe=null,t()}}function Ce(e){throw l.onAbort&&l.onAbort(e),A(e+=""),T(e),I=!0,1,e="abort("+e+") at "+qe(),new WebAssembly.RuntimeError(e)}l.preloadedImages={},l.preloadedAudios={};var Ne="data:application/octet-stream;base64,";function je(e){return String.prototype.startsWith?e.startsWith(Ne):0===e.indexOf(Ne)}var Fe,He,Ue=u+"EasyPlayer.wasm";function Be(){try{if(R)return new Uint8Array(R);if(b)return b(Ue);throw"both async and sync fetching of the wasm failed"}catch(e){Ce(e)}}function We(){return R||!f&&!m||"function"!=typeof fetch?new Promise((function(e,t){e(Be())})):fetch(Ue,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+Ue+"'";return e.arrayBuffer()})).catch((function(){return Be()}))}function ze(){var e={env:xt,wasi_unstable:xt};function t(e,t){var r=e.exports;l.asm=r,Pe("wasm-instantiate")}Ie("wasm-instantiate");var r=l;function i(e){P(l===r,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),r=null,t(e.instance)}function n(t){return We().then((function(t){return WebAssembly.instantiate(t,e)})).then(t,(function(e){T("failed to asynchronously prepare wasm: "+e),Ce(e)}))}if(l.instantiateWasm)try{return l.instantiateWasm(e,t)}catch(e){return T("Module.instantiateWasm callback failed with error: "+e),!1}return function(){if(R||"function"!=typeof WebAssembly.instantiateStreaming||je(Ue)||"function"!=typeof fetch)return n(i);fetch(Ue,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(i,(function(e){T("wasm streaming compile failed: "+e),T("falling back to ArrayBuffer instantiation"),n(i)}))}))}(),{}}function Xe(e){return k("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),e}function Ve(e){return e.replace(/\b_Z[\w\d_]+/g,(function(e){var t=Xe(e);return e===t?e:t+" ["+e+"]"}))}function Ge(){var e=new Error;if(!e.stack){try{throw new Error(0)}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function qe(){var e=Ge();return l.extraStackTrace&&(e+="\n"+l.extraStackTrace()),Ve(e)}function Qe(e){return Qr(e)}je(Ue)||(Ue=E(Ue)),fe.push({func:function(){qr()}});var Ke={};function Je(e,t,r){throw Ke[e]={ptr:e,adjusted:[e],type:t,destructor:r,refcount:0,caught:!1,rethrown:!1},e,"uncaught_exception"in Kr?Kr.uncaught_exceptions++:Kr.uncaught_exceptions=1,e+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function Ze(){}function $e(e){return l.___errno_location?J[l.___errno_location()>>2]=e:T("failed to set errno from JS"),e}var et={splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,t){for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:function(e){var t="/"===e.charAt(0),r="/"===e.substr(-1);return(e=et.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:function(e){var t=et.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:function(e){if("/"===e)return"/";var t=e.lastIndexOf("/");return-1===t?e:e.substr(t+1)},extname:function(e){return et.splitPath(e)[3]},join:function(){var e=Array.prototype.slice.call(arguments,0);return et.normalize(e.join("/"))},join2:function(e,t){return et.normalize(e+"/"+t)}},tt={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:ot.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t="/"===i.charAt(0)}return(t?"/":"")+(e=et.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."},relative:function(e,t){function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=tt.resolve(e).substr(1),t=tt.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),a=Math.min(i.length,n.length),o=a,s=0;s0?i.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(r=window.prompt("Input: "))&&(r+="\n"):"function"==typeof readline&&null!==(r=readline())&&(r+="\n");if(!r)return null;t.input=Rt(r,!0)}return t.input.shift()},put_char:function(e,t){null===t||10===t?e.output=[]:0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(T(H(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(T(H(e.output,0)),e.output=[])}}},it={ops_table:null,mount:function(e){return it.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(ot.isBlkdev(r)||ot.isFIFO(r))throw new ot.ErrnoError(63);it.ops_table||(it.ops_table={dir:{node:{getattr:it.node_ops.getattr,setattr:it.node_ops.setattr,lookup:it.node_ops.lookup,mknod:it.node_ops.mknod,rename:it.node_ops.rename,unlink:it.node_ops.unlink,rmdir:it.node_ops.rmdir,readdir:it.node_ops.readdir,symlink:it.node_ops.symlink},stream:{llseek:it.stream_ops.llseek}},file:{node:{getattr:it.node_ops.getattr,setattr:it.node_ops.setattr},stream:{llseek:it.stream_ops.llseek,read:it.stream_ops.read,write:it.stream_ops.write,allocate:it.stream_ops.allocate,mmap:it.stream_ops.mmap,msync:it.stream_ops.msync}},link:{node:{getattr:it.node_ops.getattr,setattr:it.node_ops.setattr,readlink:it.node_ops.readlink},stream:{}},chrdev:{node:{getattr:it.node_ops.getattr,setattr:it.node_ops.setattr},stream:ot.chrdev_stream_ops}});var n=ot.createNode(e,t,r,i);return ot.isDir(n.mode)?(n.node_ops=it.ops_table.dir.node,n.stream_ops=it.ops_table.dir.stream,n.contents={}):ot.isFile(n.mode)?(n.node_ops=it.ops_table.file.node,n.stream_ops=it.ops_table.file.stream,n.usedBytes=0,n.contents=null):ot.isLink(n.mode)?(n.node_ops=it.ops_table.link.node,n.stream_ops=it.ops_table.link.stream):ot.isChrdev(n.mode)&&(n.node_ops=it.ops_table.chrdev.node,n.stream_ops=it.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n),n},getFileDataAsRegularArray:function(e){if(e.contents&&e.contents.subarray){for(var t=[],r=0;r=t)){t=Math.max(t,r*(r<1048576?2:1.125)|0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t){if(0==t)return e.contents=null,void(e.usedBytes=0);if(!e.contents||e.contents.subarray){var r=e.contents;return e.contents=new Uint8Array(new ArrayBuffer(t)),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),void(e.usedBytes=t)}if(e.contents||(e.contents=[]),e.contents.length>t)e.contents.length=t;else for(;e.contents.length=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-n,i);if(P(o>=0),o>8&&a.subarray)t.set(a.subarray(n,n+o),r);else for(var s=0;s0||n+i8)throw new ot.ErrnoError(32);for(var n=et.normalizeArray(e.split("/").filter((function(e){return!!e})),!1),a=ot.root,o="/",s=0;s40)throw new ot.ErrnoError(32)}}return{path:o,node:a}},getPath:function(e){for(var t;;){if(ot.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:function(e,t){for(var r=0,i=0;i>>0)%ot.nameTable.length},hashAddNode:function(e){var t=ot.hashName(e.parent.id,e.name);e.name_next=ot.nameTable[t],ot.nameTable[t]=e},hashRemoveNode:function(e){var t=ot.hashName(e.parent.id,e.name);if(ot.nameTable[t]===e)ot.nameTable[t]=e.name_next;else for(var r=ot.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:function(e,t){var r=ot.mayLookup(e);if(r)throw new ot.ErrnoError(r,e);for(var i=ot.hashName(e.id,t),n=ot.nameTable[i];n;n=n.name_next){var a=n.name;if(n.parent.id===e.id&&a===t)return n}return ot.lookup(e,t)},createNode:function(e,t,r,i){if(!ot.FSNode){ot.FSNode=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=ot.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ot.FSNode.prototype={};Object.defineProperties(ot.FSNode.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return ot.isDir(this.mode)}},isDevice:{get:function(){return ot.isChrdev(this.mode)}}})}var n=new ot.FSNode(e,t,r,i);return ot.hashAddNode(n),n},destroyNode:function(e){ot.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},flagModes:{r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(e){var t=ot.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:function(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:function(e,t){return ot.ignorePermissions||(-1===t.indexOf("r")||292&e.mode)&&(-1===t.indexOf("w")||146&e.mode)&&(-1===t.indexOf("x")||73&e.mode)?0:2},mayLookup:function(e){var t=ot.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:function(e,t){try{ot.lookupNode(e,t);return 20}catch(e){}return ot.nodePermissions(e,"wx")},mayDelete:function(e,t,r){var i;try{i=ot.lookupNode(e,t)}catch(e){return e.errno}var n=ot.nodePermissions(e,"wx");if(n)return n;if(r){if(!ot.isDir(i.mode))return 54;if(ot.isRoot(i)||ot.getPath(i)===ot.cwd())return 10}else if(ot.isDir(i.mode))return 31;return 0},mayOpen:function(e,t){return e?ot.isLink(e.mode)?32:ot.isDir(e.mode)&&("r"!==ot.flagsToPermissionString(t)||512&t)?31:ot.nodePermissions(e,ot.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(e,t){e=e||0,t=t||ot.MAX_OPEN_FDS;for(var r=e;r<=t;r++)if(!ot.streams[r])return r;throw new ot.ErrnoError(33)},getStream:function(e){return ot.streams[e]},createStream:function(e,t,r){ot.FSStream||(ot.FSStream=function(){},ot.FSStream.prototype={},Object.defineProperties(ot.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}}));var i=new ot.FSStream;for(var n in e)i[n]=e[n];e=i;var a=ot.nextfd(t,r);return e.fd=a,ot.streams[a]=e,e},closeStream:function(e){ot.streams[e]=null},chrdev_stream_ops:{open:function(e){var t=ot.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new ot.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,t){return e<<8|t},registerDevice:function(e,t){ot.devices[e]={stream_ops:t}},getDevice:function(e){return ot.devices[e]},getMounts:function(e){for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:function(e,t){"function"==typeof e&&(t=e,e=!1),ot.syncFSRequests++,ot.syncFSRequests>1&&console.log("warning: "+ot.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=ot.getMounts(ot.root.mount),i=0;function n(e){return P(ot.syncFSRequests>0),ot.syncFSRequests--,t(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((function(t){if(!t.type.syncfs)return a(null);t.type.syncfs(t,e,a)}))},mount:function(e,t,r){if("string"==typeof e)throw e;var i,n="/"===r,a=!r;if(n&&ot.root)throw new ot.ErrnoError(10);if(!n&&!a){var o=ot.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,ot.isMountpoint(i))throw new ot.ErrnoError(10);if(!ot.isDir(i.mode))throw new ot.ErrnoError(54)}var s={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(s);return d.mount=s,s.root=d,n?ot.root=d:i&&(i.mounted=s,i.mount&&i.mount.mounts.push(s)),d},unmount:function(e){var t=ot.lookupPath(e,{follow_mount:!1});if(!ot.isMountpoint(t.node))throw new ot.ErrnoError(28);var r=t.node,i=r.mounted,n=ot.getMounts(i);Object.keys(ot.nameTable).forEach((function(e){for(var t=ot.nameTable[e];t;){var r=t.name_next;-1!==n.indexOf(t.mount)&&ot.destroyNode(t),t=r}})),r.mounted=null;var a=r.mount.mounts.indexOf(i);P(-1!==a),r.mount.mounts.splice(a,1)},lookup:function(e,t){return e.node_ops.lookup(e,t)},mknod:function(e,t,r){var i=ot.lookupPath(e,{parent:!0}).node,n=et.basename(e);if(!n||"."===n||".."===n)throw new ot.ErrnoError(28);var a=ot.mayCreate(i,n);if(a)throw new ot.ErrnoError(a);if(!i.node_ops.mknod)throw new ot.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:function(e,t){return t=void 0!==t?t:438,t&=4095,t|=32768,ot.mknod(e,t,0)},mkdir:function(e,t){return t=void 0!==t?t:511,t&=1023,t|=16384,ot.mknod(e,t,0)},mkdirTree:function(e,t){for(var r=e.split("/"),i="",n=0;nthis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,a=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,o=1048576;n||(o=i);var s=this;s.setDataGetter((function(e){var t=e*o,n=(e+1)*o-1;if(n=Math.min(n,i-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,t){if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==o&&n.setRequestHeader("Range","bytes="+e+"-"+t),"undefined"!=typeof Uint8Array&&(n.responseType="arraybuffer"),n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):Rt(n.responseText||"",!0)}(t,n)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!a&&i||(o=i=1,i=this.getter(0).length,o=i,console.log("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=o,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!m)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new a;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:o}}else s={isDevice:!1,url:r};var d=ot.createFile(e,t,s,i,n);s.contents?d.contents=s.contents:s.url&&(d.contents=null,d.url=s.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var u={};return Object.keys(d.stream_ops).forEach((function(e){var t=d.stream_ops[e];u[e]=function(){if(!ot.forceLoadFile(d))throw new ot.ErrnoError(29);return t.apply(null,arguments)}})),u.read=function(e,t,r,i,n){if(!ot.forceLoadFile(d))throw new ot.ErrnoError(29);var a=e.node.contents;if(n>=a.length)return 0;var o=Math.min(a.length-n,i);if(P(o>=0),a.slice)for(var s=0;s>2]=i.dev,J[r+4>>2]=0,J[r+8>>2]=i.ino,J[r+12>>2]=i.mode,J[r+16>>2]=i.nlink,J[r+20>>2]=i.uid,J[r+24>>2]=i.gid,J[r+28>>2]=i.rdev,J[r+32>>2]=0,He=[i.size>>>0,(Fe=i.size,+Te(Fe)>=1?Fe>0?(0|Le(+Se(Fe/4294967296),4294967295))>>>0:~~+ke((Fe-+(~~Fe>>>0))/4294967296)>>>0:0)],J[r+40>>2]=He[0],J[r+44>>2]=He[1],J[r+48>>2]=4096,J[r+52>>2]=i.blocks,J[r+56>>2]=i.atime.getTime()/1e3|0,J[r+60>>2]=0,J[r+64>>2]=i.mtime.getTime()/1e3|0,J[r+68>>2]=0,J[r+72>>2]=i.ctime.getTime()/1e3|0,J[r+76>>2]=0,He=[i.ino>>>0,(Fe=i.ino,+Te(Fe)>=1?Fe>0?(0|Le(+Se(Fe/4294967296),4294967295))>>>0:~~+ke((Fe-+(~~Fe>>>0))/4294967296)>>>0:0)],J[r+80>>2]=He[0],J[r+84>>2]=He[1],0},doMsync:function(e,t,r,i){var n=new Uint8Array(Q.subarray(e,e+r));ot.msync(t,n,0,r,i)},doMkdir:function(e,t){return"/"===(e=et.normalize(e))[e.length-1]&&(e=e.substr(0,e.length-1)),ot.mkdir(e,t,0),0},doMknod:function(e,t,r){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return ot.mknod(e,t,r),0},doReadlink:function(e,t,r){if(r<=0)return-28;var i=ot.readlink(e),n=Math.min(r,z(i)),a=q[t+n];return W(i,t,r+1),q[t+n]=a,n},doAccess:function(e,t){if(-8&t)return-28;var r;if(!(r=ot.lookupPath(e,{follow:!0}).node))return-44;var i="";return 4&t&&(i+="r"),2&t&&(i+="w"),1&t&&(i+="x"),i&&ot.nodePermissions(r,i)?-2:0},doDup:function(e,t,r){var i=ot.getStream(r);return i&&ot.close(i),ot.open(e,t,0,r,r).fd},doReadv:function(e,t,r,i){for(var n=0,a=0;a>2],s=J[t+(8*a+4)>>2],d=ot.read(e,q,o,s,i);if(d<0)return-1;if(n+=d,d>2],s=J[t+(8*a+4)>>2],d=ot.write(e,q,o,s,i);if(d<0)return-1;n+=d}return n},varargs:0,get:function(e){return st.varargs+=4,J[st.varargs-4>>2]},getStr:function(){return U(st.get())},getStreamFromFD:function(e){void 0===e&&(e=st.get());var t=ot.getStream(e);if(!t)throw new ot.ErrnoError(8);return t},get64:function(){var e=st.get(),t=st.get();return P(e>=0?0===t:-1===t),e},getZero:function(){P(0===st.get())}};function dt(e,t){st.varargs=t;try{var r=st.getStreamFromFD();switch(st.get()){case 0:return(i=st.get())<0?-28:ot.open(r.path,r.flags,0,i).fd;case 1:case 2:return 0;case 3:return r.flags;case 4:var i=st.get();return r.flags|=i,0;case 12:i=st.get();return K[i+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return $e(28),-1;default:return-28}}catch(e){return void 0!==ot&&e instanceof ot.ErrnoError||Ce(e),-e.errno}}function ut(e,t){st.varargs=t;try{var r=st.getStreamFromFD(),i=st.get(),n=st.get();return ot.read(r,q,i,n)}catch(e){return void 0!==ot&&e instanceof ot.ErrnoError||Ce(e),-e.errno}}function lt(e,t){st.varargs=t;try{var r=st.getStr(),i=st.get(),n=st.get();return ot.open(r,i,n).fd}catch(e){return void 0!==ot&&e instanceof ot.ErrnoError||Ce(e),-e.errno}}function ht(){}function ct(){Ce()}function ft(){return void 0===ft.start&&(ft.start=Date.now()),1e3*(Date.now()-ft.start)|0}function mt(){return q.length}function _t(e,t,r){Q.set(Q.subarray(t,t+r),e)}function pt(e){try{return x.grow(e-G.byteLength+65535>>16),te(x.buffer),1}catch(t){console.error("emscripten_realloc_buffer: Attempted to grow heap from "+G.byteLength+" bytes to "+e+" bytes, but got error: "+t)}}function yt(e){var t=mt();P(e>t);if(e>2147418112)return T("Cannot enlarge memory, asked to go up to "+e+" bytes, but the limit is 2147418112 bytes!"),!1;for(var r=Math.max(t,16777216);r=0?+Se(e+.5):+ke(e-.5)}function Lt(e){O(0|e)}function Dt(e){var t=Date.now()/1e3|0;return e&&(J[e>>2]=t),t}function Rt(e,t,r){var i=r>0?r:z(e)+1,n=new Array(i),a=B(e,n,0,n.length);return t&&(n.length=a),n}ot.staticInit();var xt={__cxa_allocate_exception:Qe,__cxa_throw:Je,__lock:Ze,__syscall221:dt,__syscall3:ut,__syscall5:lt,__unlock:ht,abort:ct,clock:ft,emscripten_memcpy_big:_t,emscripten_resize_heap:yt,environ_get:vt,environ_sizes_get:wt,fd_close:Mt,fd_fdstat_get:Et,fd_seek:At,fd_write:Tt,gettimeofday:kt,memory:x,round:St,setTempRet0:Lt,table:Y,time:Dt},Ot=ze(),Yt=Ot.__wasm_call_ctors;Ot.__wasm_call_ctors=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Yt.apply(null,arguments)};var It=Ot.WasmDecoder_Check;Ot.WasmDecoder_Check=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),It.apply(null,arguments)};var Pt=Ot.WasmDecoder_Init;Ot.WasmDecoder_Init=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Pt.apply(null,arguments)};var Ct=Ot.WasmDecoder_Deinit;Ot.WasmDecoder_Deinit=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ct.apply(null,arguments)};var Nt=Ot.WasmDecoder_OpenChannel;Ot.WasmDecoder_OpenChannel=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Nt.apply(null,arguments)};var jt=Ot.WasmDecoder_InputFlvStream;Ot.WasmDecoder_InputFlvStream=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),jt.apply(null,arguments)};var Ft=Ot.WasmDecoder_GetFlvDecodeData;Ot.WasmDecoder_GetFlvDecodeData=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ft.apply(null,arguments)};var Ht=Ot.WasmDecoder_InputFlvStreamAndDecode;Ot.WasmDecoder_InputFlvStreamAndDecode=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ht.apply(null,arguments)};var Ut=Ot.WasmDecoder_OpenVideoDecoder;Ot.WasmDecoder_OpenVideoDecoder=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ut.apply(null,arguments)};var Bt=Ot.WasmDecoder_OpenAudioDecoder;Ot.WasmDecoder_OpenAudioDecoder=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Bt.apply(null,arguments)};var Wt=Ot.WasmDecoder_DecodeVideoFrame;Ot.WasmDecoder_DecodeVideoFrame=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Wt.apply(null,arguments)};var zt=Ot.WasmDecoder_DecodeAudioFrame;Ot.WasmDecoder_DecodeAudioFrame=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),zt.apply(null,arguments)};var Xt=Ot.WasmDecoder_CloseChannel;Ot.WasmDecoder_CloseChannel=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Xt.apply(null,arguments)};var Vt=Ot.WasmDecoder_ConvertFrame2Image;Ot.WasmDecoder_ConvertFrame2Image=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Vt.apply(null,arguments)};var Gt=Ot.WasmDecoder_ReleaseImageData;Ot.WasmDecoder_ReleaseImageData=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Gt.apply(null,arguments)};var qt=Ot.WasmDecoder_CreateMP4File;Ot.WasmDecoder_CreateMP4File=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),qt.apply(null,arguments)};var Qt=Ot.WasmDecoder_WriteData;Ot.WasmDecoder_WriteData=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Qt.apply(null,arguments)};var Kt=Ot.WasmDecoder_ReleaseMP4File;Ot.WasmDecoder_ReleaseMP4File=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Kt.apply(null,arguments)};var Jt=Ot.main;Ot.main=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Jt.apply(null,arguments)};var Zt=Ot.free;Ot.free=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Zt.apply(null,arguments)};var $t=Ot.malloc;Ot.malloc=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),$t.apply(null,arguments)};var er=Ot.__errno_location;Ot.__errno_location=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),er.apply(null,arguments)};var tr=Ot.fflush;Ot.fflush=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),tr.apply(null,arguments)};var rr=Ot._get_tzname;Ot._get_tzname=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),rr.apply(null,arguments)};var ir=Ot._get_daylight;Ot._get_daylight=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ir.apply(null,arguments)};var nr=Ot._get_timezone;Ot._get_timezone=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),nr.apply(null,arguments)};var ar=Ot.setThrew;Ot.setThrew=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ar.apply(null,arguments)};var or=Ot._ZSt18uncaught_exceptionv;Ot._ZSt18uncaught_exceptionv=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),or.apply(null,arguments)};var sr=Ot.stackSave;Ot.stackSave=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),sr.apply(null,arguments)};var dr=Ot.stackAlloc;Ot.stackAlloc=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),dr.apply(null,arguments)};var ur=Ot.stackRestore;Ot.stackRestore=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ur.apply(null,arguments)};var lr=Ot.__growWasmMemory;Ot.__growWasmMemory=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),lr.apply(null,arguments)};var hr=Ot.dynCall_ii;Ot.dynCall_ii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),hr.apply(null,arguments)};var cr=Ot.dynCall_viiiii;Ot.dynCall_viiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),cr.apply(null,arguments)};var fr=Ot.dynCall_viiiiiifi;Ot.dynCall_viiiiiifi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),fr.apply(null,arguments)};var mr=Ot.dynCall_viiii;Ot.dynCall_viiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),mr.apply(null,arguments)};var _r=Ot.dynCall_viii;Ot.dynCall_viii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),_r.apply(null,arguments)};var pr=Ot.dynCall_iiiiiii;Ot.dynCall_iiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),pr.apply(null,arguments)};var yr=Ot.dynCall_iiiiii;Ot.dynCall_iiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),yr.apply(null,arguments)};var gr=Ot.dynCall_vii;Ot.dynCall_vii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),gr.apply(null,arguments)};var br=Ot.dynCall_iii;Ot.dynCall_iii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),br.apply(null,arguments)};var vr=Ot.dynCall_iiii;Ot.dynCall_iiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),vr.apply(null,arguments)};var wr=Ot.dynCall_viiiiii;Ot.dynCall_viiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),wr.apply(null,arguments)};var Mr=Ot.dynCall_viiiiiiiii;Ot.dynCall_viiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Mr.apply(null,arguments)};var Er=Ot.dynCall_viiiiiiii;Ot.dynCall_viiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Er.apply(null,arguments)};var Ar=Ot.dynCall_iiiii;Ot.dynCall_iiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ar.apply(null,arguments)};var Tr=Ot.dynCall_viiiiiiiiiiiiii;Ot.dynCall_viiiiiiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Tr.apply(null,arguments)};var kr=Ot.dynCall_viiiiiiiiiii;Ot.dynCall_viiiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),kr.apply(null,arguments)};var Sr=Ot.dynCall_viiiiiii;Ot.dynCall_viiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Sr.apply(null,arguments)};var Lr=Ot.dynCall_viiiiiiiiiiii;Ot.dynCall_viiiiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Lr.apply(null,arguments)};var Dr=Ot.dynCall_vi;Ot.dynCall_vi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Dr.apply(null,arguments)};var Rr=Ot.dynCall_iiiiiiiii;Ot.dynCall_iiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Rr.apply(null,arguments)};var xr=Ot.dynCall_viiiifii;Ot.dynCall_viiiifii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),xr.apply(null,arguments)};var Or=Ot.dynCall_fii;Ot.dynCall_fii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Or.apply(null,arguments)};var Yr=Ot.dynCall_viiiiiiiiii;Ot.dynCall_viiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Yr.apply(null,arguments)};var Ir=Ot.dynCall_dd;Ot.dynCall_dd=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ir.apply(null,arguments)};var Pr=Ot.dynCall_viifi;Ot.dynCall_viifi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Pr.apply(null,arguments)};var Cr=Ot.dynCall_fiii;Ot.dynCall_fiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Cr.apply(null,arguments)};var Nr=Ot.dynCall_viidi;Ot.dynCall_viidi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Nr.apply(null,arguments)};var jr=Ot.dynCall_iiiiiiii;Ot.dynCall_iiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),jr.apply(null,arguments)};var Fr=Ot.dynCall_did;Ot.dynCall_did=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Fr.apply(null,arguments)};var Hr=Ot.dynCall_v;Ot.dynCall_v=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Hr.apply(null,arguments)};var Ur=Ot.dynCall_viiijj;Ot.dynCall_viiijj=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ur.apply(null,arguments)};var Br=Ot.dynCall_iiiiiiidiiddii;Ot.dynCall_iiiiiiidiiddii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Br.apply(null,arguments)};var Wr=Ot.dynCall_jij;Ot.dynCall_jij=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Wr.apply(null,arguments)};var zr=Ot.dynCall_jii;Ot.dynCall_jii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),zr.apply(null,arguments)};var Xr=Ot.dynCall_jiji;Ot.dynCall_jiji=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Xr.apply(null,arguments)};var Vr=Ot.dynCall_iidiiii;Ot.dynCall_iidiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Vr.apply(null,arguments)},l.asm=Ot;var Gr,qr=l.___wasm_call_ctors=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.__wasm_call_ctors.apply(null,arguments)},Qr=(l._WasmDecoder_Check=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_Check.apply(null,arguments)},l._WasmDecoder_Init=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_Init.apply(null,arguments)},l._WasmDecoder_Deinit=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_Deinit.apply(null,arguments)},l._WasmDecoder_OpenChannel=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_OpenChannel.apply(null,arguments)},l._WasmDecoder_InputFlvStream=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_InputFlvStream.apply(null,arguments)},l._WasmDecoder_GetFlvDecodeData=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_GetFlvDecodeData.apply(null,arguments)},l._WasmDecoder_InputFlvStreamAndDecode=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_InputFlvStreamAndDecode.apply(null,arguments)},l._WasmDecoder_OpenVideoDecoder=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_OpenVideoDecoder.apply(null,arguments)},l._WasmDecoder_OpenAudioDecoder=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_OpenAudioDecoder.apply(null,arguments)},l._WasmDecoder_DecodeVideoFrame=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_DecodeVideoFrame.apply(null,arguments)},l._WasmDecoder_DecodeAudioFrame=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_DecodeAudioFrame.apply(null,arguments)},l._WasmDecoder_CloseChannel=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_CloseChannel.apply(null,arguments)},l._WasmDecoder_ConvertFrame2Image=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_ConvertFrame2Image.apply(null,arguments)},l._WasmDecoder_ReleaseImageData=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_ReleaseImageData.apply(null,arguments)},l._WasmDecoder_CreateMP4File=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_CreateMP4File.apply(null,arguments)},l._WasmDecoder_WriteData=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_WriteData.apply(null,arguments)},l._WasmDecoder_ReleaseMP4File=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_ReleaseMP4File.apply(null,arguments)},l._main=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.main.apply(null,arguments)},l._free=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.free.apply(null,arguments)},l._malloc=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.malloc.apply(null,arguments)}),Kr=(l.___errno_location=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.__errno_location.apply(null,arguments)},l._fflush=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.fflush.apply(null,arguments)},l.__get_tzname=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm._get_tzname.apply(null,arguments)},l.__get_daylight=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm._get_daylight.apply(null,arguments)},l.__get_timezone=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm._get_timezone.apply(null,arguments)},l._setThrew=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.setThrew.apply(null,arguments)},l.__ZSt18uncaught_exceptionv=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm._ZSt18uncaught_exceptionv.apply(null,arguments)}),Jr=l.stackSave=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.stackSave.apply(null,arguments)},Zr=l.stackAlloc=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.stackAlloc.apply(null,arguments)},$r=l.stackRestore=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.stackRestore.apply(null,arguments)};l.__growWasmMemory=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.__growWasmMemory.apply(null,arguments)},l.dynCall_ii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_ii.apply(null,arguments)},l.dynCall_viiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiii.apply(null,arguments)},l.dynCall_viiiiiifi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiifi.apply(null,arguments)},l.dynCall_viiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiii.apply(null,arguments)},l.dynCall_viii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viii.apply(null,arguments)},l.dynCall_iiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iiiiiii.apply(null,arguments)},l.dynCall_iiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iiiiii.apply(null,arguments)},l.dynCall_vii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_vii.apply(null,arguments)},l.dynCall_iii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iii.apply(null,arguments)},l.dynCall_iiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iiii.apply(null,arguments)},l.dynCall_viiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiii.apply(null,arguments)},l.dynCall_viiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiiiii.apply(null,arguments)},l.dynCall_viiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiiii.apply(null,arguments)},l.dynCall_iiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iiiii.apply(null,arguments)},l.dynCall_viiiiiiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiiiiiiiiii.apply(null,arguments)},l.dynCall_viiiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiiiiiii.apply(null,arguments)},l.dynCall_viiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiii.apply(null,arguments)},l.dynCall_viiiiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiiiiiiii.apply(null,arguments)},l.dynCall_vi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_vi.apply(null,arguments)},l.dynCall_iiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iiiiiiiii.apply(null,arguments)},l.dynCall_viiiifii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiifii.apply(null,arguments)},l.dynCall_fii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_fii.apply(null,arguments)},l.dynCall_viiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiiiiii.apply(null,arguments)},l.dynCall_dd=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_dd.apply(null,arguments)},l.dynCall_viifi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viifi.apply(null,arguments)},l.dynCall_fiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_fiii.apply(null,arguments)},l.dynCall_viidi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viidi.apply(null,arguments)},l.dynCall_iiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iiiiiiii.apply(null,arguments)},l.dynCall_did=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_did.apply(null,arguments)},l.dynCall_v=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_v.apply(null,arguments)},l.dynCall_viiijj=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiijj.apply(null,arguments)},l.dynCall_iiiiiiidiiddii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iiiiiiidiiddii.apply(null,arguments)},l.dynCall_jij=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_jij.apply(null,arguments)},l.dynCall_jii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_jii.apply(null,arguments)},l.dynCall_jiji=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_jiji.apply(null,arguments)},l.dynCall_iidiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iidiiii.apply(null,arguments)};function ei(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}l.asm=Ot,Object.getOwnPropertyDescriptor(l,"intArrayFromString")||(l.intArrayFromString=function(){Ce("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"intArrayToString")||(l.intArrayToString=function(){Ce("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),l.ccall=N,l.cwrap=j,Object.getOwnPropertyDescriptor(l,"setValue")||(l.setValue=function(){Ce("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"getValue")||(l.getValue=function(){Ce("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"allocate")||(l.allocate=function(){Ce("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"getMemory")||(l.getMemory=function(){Ce("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"AsciiToString")||(l.AsciiToString=function(){Ce("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stringToAscii")||(l.stringToAscii=function(){Ce("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"UTF8ArrayToString")||(l.UTF8ArrayToString=function(){Ce("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"UTF8ToString")||(l.UTF8ToString=function(){Ce("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stringToUTF8Array")||(l.stringToUTF8Array=function(){Ce("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stringToUTF8")||(l.stringToUTF8=function(){Ce("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"lengthBytesUTF8")||(l.lengthBytesUTF8=function(){Ce("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"UTF16ToString")||(l.UTF16ToString=function(){Ce("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stringToUTF16")||(l.stringToUTF16=function(){Ce("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"lengthBytesUTF16")||(l.lengthBytesUTF16=function(){Ce("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"UTF32ToString")||(l.UTF32ToString=function(){Ce("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stringToUTF32")||(l.stringToUTF32=function(){Ce("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"lengthBytesUTF32")||(l.lengthBytesUTF32=function(){Ce("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"allocateUTF8")||(l.allocateUTF8=function(){Ce("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stackTrace")||(l.stackTrace=function(){Ce("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"addOnPreRun")||(l.addOnPreRun=function(){Ce("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"addOnInit")||(l.addOnInit=function(){Ce("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"addOnPreMain")||(l.addOnPreMain=function(){Ce("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"addOnExit")||(l.addOnExit=function(){Ce("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"addOnPostRun")||(l.addOnPostRun=function(){Ce("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"writeStringToMemory")||(l.writeStringToMemory=function(){Ce("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"writeArrayToMemory")||(l.writeArrayToMemory=function(){Ce("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"writeAsciiToMemory")||(l.writeAsciiToMemory=function(){Ce("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"addRunDependency")||(l.addRunDependency=function(){Ce("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"removeRunDependency")||(l.removeRunDependency=function(){Ce("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"ENV")||(l.ENV=function(){Ce("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"FS")||(l.FS=function(){Ce("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"FS_createFolder")||(l.FS_createFolder=function(){Ce("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"FS_createPath")||(l.FS_createPath=function(){Ce("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"FS_createDataFile")||(l.FS_createDataFile=function(){Ce("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"FS_createPreloadedFile")||(l.FS_createPreloadedFile=function(){Ce("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"FS_createLazyFile")||(l.FS_createLazyFile=function(){Ce("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"FS_createLink")||(l.FS_createLink=function(){Ce("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"FS_createDevice")||(l.FS_createDevice=function(){Ce("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"FS_unlink")||(l.FS_unlink=function(){Ce("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"GL")||(l.GL=function(){Ce("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"dynamicAlloc")||(l.dynamicAlloc=function(){Ce("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"loadDynamicLibrary")||(l.loadDynamicLibrary=function(){Ce("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"loadWebAssemblyModule")||(l.loadWebAssemblyModule=function(){Ce("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"getLEB")||(l.getLEB=function(){Ce("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"getFunctionTables")||(l.getFunctionTables=function(){Ce("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"alignFunctionTables")||(l.alignFunctionTables=function(){Ce("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"registerFunctions")||(l.registerFunctions=function(){Ce("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),l.addFunction=D,Object.getOwnPropertyDescriptor(l,"removeFunction")||(l.removeFunction=function(){Ce("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"getFuncWrapper")||(l.getFuncWrapper=function(){Ce("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"prettyPrint")||(l.prettyPrint=function(){Ce("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"makeBigInt")||(l.makeBigInt=function(){Ce("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"dynCall")||(l.dynCall=function(){Ce("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"getCompilerSetting")||(l.getCompilerSetting=function(){Ce("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stackSave")||(l.stackSave=function(){Ce("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stackRestore")||(l.stackRestore=function(){Ce("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stackAlloc")||(l.stackAlloc=function(){Ce("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"establishStackSpace")||(l.establishStackSpace=function(){Ce("'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"print")||(l.print=function(){Ce("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"printErr")||(l.printErr=function(){Ce("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"getTempRet0")||(l.getTempRet0=function(){Ce("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"setTempRet0")||(l.setTempRet0=function(){Ce("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),l.callMain=ti,Object.getOwnPropertyDescriptor(l,"abort")||(l.abort=function(){Ce("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"Pointer_stringify")||(l.Pointer_stringify=function(){Ce("'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"warnOnce")||(l.warnOnce=function(){Ce("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),l.writeStackCookie=de,l.checkStackCookie=ue,l.abortStackOverflow=le,Object.getOwnPropertyDescriptor(l,"ALLOC_NORMAL")||Object.defineProperty(l,"ALLOC_NORMAL",{configurable:!0,get:function(){Ce("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(l,"ALLOC_STACK")||Object.defineProperty(l,"ALLOC_STACK",{configurable:!0,get:function(){Ce("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(l,"ALLOC_DYNAMIC")||Object.defineProperty(l,"ALLOC_DYNAMIC",{configurable:!0,get:function(){Ce("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(l,"ALLOC_NONE")||Object.defineProperty(l,"ALLOC_NONE",{configurable:!0,get:function(){Ce("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(l,"calledRun")||Object.defineProperty(l,"calledRun",{configurable:!0,get:function(){Ce("'calledRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}});function ti(e){P(0==De,'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])'),P(0==ce.length,"cannot call main when preRun functions remain to be called");var t=l._main;try{ni(t(0,0),!0)}catch(e){if(e instanceof ei)return;if("SimulateInfiniteLoop"==e)return void(o=!0);var r=e;e&&"object"==typeof e&&e.stack&&(r=[e,e.stack]),T("exception thrown: "+r),c(1,e)}finally{!0}}function ri(e){function t(){Gr||(Gr=!0,I||(be(),ve(),l.onRuntimeInitialized&&l.onRuntimeInitialized(),ai&&ti(),Me()))}e=e||d,De>0||(de(),ge(),De>0||(l.setStatus?(l.setStatus("Running..."),setTimeout((function(){setTimeout((function(){l.setStatus("")}),1),t()}),1)):t(),ue()))}function ii(){var e=A,t=T,r=!1;A=T=function(e){r=!0};try{var i=l._fflush;i&&i(0),["stdout","stderr"].forEach((function(e){var t=ot.analyzePath("/dev/"+e);if(t){var i=t.object.rdev,n=rt.ttys[i];n&&n.output&&n.output.length&&(r=!0)}}))}catch(e){}A=e,T=t,r&&k("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.")}function ni(e,t){ii(),t&&o&&0===e||(o?t||T("program exited (with status: "+e+"), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)"):(I=!0,e,we(),l.onExit&&l.onExit(e)),c(e,new ei(e)))}if(xe=function e(){Gr||ri(),Gr||(xe=e)},l.run=ri,l.preInit)for("function"==typeof l.preInit&&(l.preInit=[l.preInit]);l.preInit.length>0;)l.preInit.pop()();var ai=!0;l.noInitialRun&&(ai=!1),o=!0,ri()}t.default=function(e){e.recordChunkData=null,e.recordChunkSize=0,e.recordChunkPos=0,e.exitFlag=!1,e.audioCodecId=0,e.audioSamplerate=8e3,e.audioChannelCount=1,e.videoRawData=null,e.videoPTS=0,e.audioPTS=0,e.videoLastPts=0,e.audioLastPts=0,e.audioRawData=null,e.mp4CallbackFunc=null;l.onRuntimeInitialized=function(){d=!0},e.addEventListener("message",(function(t){var r=t.data;switch(r.cmd){case s.x:u=r.url,e.audioSamplerate=r.audioSamplerate,e.audioChannelCount=r.channelCount,parseInt(e.audioSamplerate)>=8e3&&(e.audioCodecId=86018),d||h(),null==e.recordChunkData&&(e.recordChunkData=new Uint8Array(r.filesize+8388608),e.recordChunkSize=r.filesize),e.recordChunkPos=0,e.exitFlag=!1;var i={cmd:s.x};e.postMessage(i);break;case s.m:e.exitFlag=!0,e.recordChunkData&&(delete e.recordChunkData,e.recordChunkData=null),null!=e.videoRawData&&(l._free(e.videoRawData),e.videoRawData=null),null!=e.audioRawData&&(l._free(e.audioRawData),e.audioRawData=null);break;case s.D:if(null==e.recordChunkData)break;if(e.recordChunkData.byteLength<1)break;e.exitFlag=!0,d&&l._WasmDecoder_ReleaseMP4File();break;case s.r:if(e.exitFlag)break;if(d){if(null==e.videoRawData){null==e.videoRawData&&(e.videoRawData=l._malloc(8294400)),null==e.audioRawData&&(e.audioRawData=l._malloc(16384)),e.videoPTS=0,e.videoLastPts=0,e.audioPTS=0,e.audioLastPts=0,e.mp4CallbackFunc=l.addFunction((function(t,r,i,n){if(3==r){var a=l.HEAPU8.subarray(i,i+4);if(e.recordChunkData.set(a,n),e.recordChunkPos>e.recordChunkSize){e.blob=URL.createObjectURL(new Blob([e.recordChunkData],{type:"video/mp4"}));var o={cmd:s.q,type:"auto",dat:e.blob};e.postMessage(o)}else{var d=e.recordChunkData.subarray(0,e.recordChunkPos),u=new Uint8Array(d);delete e.recordChunkData,e.recordChunkData=null,e.blob=URL.createObjectURL(new Blob([u],{type:"video/mp4"}));o={cmd:s.q,type:"manual",dat:e.blob};e.postMessage(o)}}else{a=l.HEAPU8.subarray(i,i+n);e.recordChunkData.set(a,e.recordChunkPos),e.recordChunkPos+=a.length}}),"iiiii");l._WasmDecoder_CreateMP4File(r.codecId,0,0,e.audioCodecId,e.audioSamplerate,e.audioChannelCount,e.mp4CallbackFunc,e)}if(e.recordChunkPos>0||r.type){r.type;var n=1,a=e.videoPTS;if("video"==r.mediaType){if(e.videoLastPts<1)e.videoPTS=0;else{var o=r.pts-e.videoLastPts;e.videoPTS+=o}e.videoLastPts=r.pts,a=e.videoPTS}else{if(n=2,e.audioLastPts<1)e.audioPTS=0;else{var c=r.pts-e.audioLastPts;e.audioPTS+=c}e.audioLastPts=r.pts,a=e.audioPTS}l.HEAPU8.set(r.dat,e.videoRawData);l._WasmDecoder_WriteData(n,e.videoRawData,r.dat.length,r.type,a);e.recordChunkPos+r.dat.byteLength>e.recordChunkSize&&(e.exitFlag=!0,l._WasmDecoder_ReleaseMP4File())}}}}))}}.call(this,r(11),"/",r(68)(e),r(10).Buffer)},function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},function(e,t){},function(e,t,r){(function(e){function r(e,t){for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}function i(e,t){if(e.filter)return e.filter(t);for(var r=[],i=0;i=-1&&!n;a--){var o=a>=0?arguments[a]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,n="/"===o.charAt(0))}return(n?"/":"")+(t=r(i(t.split("/"),(function(e){return!!e})),!n).join("/"))||"."},t.normalize=function(e){var a=t.isAbsolute(e),o="/"===n(e,-1);return(e=r(i(e.split("/"),(function(e){return!!e})),!a).join("/"))||a||(e="."),e&&o&&(e+="/"),(a?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(i(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,r){function i(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=t.resolve(e).substr(1),r=t.resolve(r).substr(1);for(var n=i(e.split("/")),a=i(r.split("/")),o=Math.min(n.length,a.length),s=o,d=0;d=1;--a)if(47===(t=e.charCodeAt(a))){if(!n){i=a;break}}else n=!1;return-1===i?r?"/":".":r&&1===i?"/":e.slice(0,i)},t.basename=function(e,t){var r=function(e){"string"!=typeof e&&(e+="");var t,r=0,i=-1,n=!0;for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!n){r=t+1;break}}else-1===i&&(n=!1,i=t+1);return-1===i?"":e.slice(r,i)}(e);return t&&r.substr(-1*t.length)===t&&(r=r.substr(0,r.length-t.length)),r},t.extname=function(e){"string"!=typeof e&&(e+="");for(var t=-1,r=0,i=-1,n=!0,a=0,o=e.length-1;o>=0;--o){var s=e.charCodeAt(o);if(47!==s)-1===i&&(n=!1,i=o+1),46===s?-1===t?t=o:1!==a&&(a=1):-1!==t&&(a=-1);else if(!n){r=o+1;break}}return-1===t||-1===i||0===a||1===a&&t===i-1&&t===r+1?"":e.slice(t,i)};var n="b"==="ab".substr(-1)?function(e,t,r){return e.substr(t,r)}:function(e,t,r){return t<0&&(t=e.length+t),e.substr(t,r)}}).call(this,r(11))},function(e,t,r){"use strict";t.randomBytes=t.rng=t.pseudoRandomBytes=t.prng=r(25),t.createHash=t.Hash=r(32),t.createHmac=t.Hmac=r(90);var i=r(307),n=Object.keys(i),a=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(n);t.getHashes=function(){return a};var o=r(93);t.pbkdf2=o.pbkdf2,t.pbkdf2Sync=o.pbkdf2Sync;var s=r(309);t.Cipher=s.Cipher,t.createCipher=s.createCipher,t.Cipheriv=s.Cipheriv,t.createCipheriv=s.createCipheriv,t.Decipher=s.Decipher,t.createDecipher=s.createDecipher,t.Decipheriv=s.Decipheriv,t.createDecipheriv=s.createDecipheriv,t.getCiphers=s.getCiphers,t.listCiphers=s.listCiphers;var d=r(324);t.DiffieHellmanGroup=d.DiffieHellmanGroup,t.createDiffieHellmanGroup=d.createDiffieHellmanGroup,t.getDiffieHellman=d.getDiffieHellman,t.createDiffieHellman=d.createDiffieHellman,t.DiffieHellman=d.DiffieHellman;var u=r(329);t.createSign=u.createSign,t.Sign=u.Sign,t.createVerify=u.createVerify,t.Verify=u.Verify,t.createECDH=r(366);var l=r(367);t.publicEncrypt=l.publicEncrypt,t.privateEncrypt=l.privateEncrypt,t.publicDecrypt=l.publicDecrypt,t.privateDecrypt=l.privateDecrypt;var h=r(370);t.randomFill=h.randomFill,t.randomFillSync=h.randomFillSync,t.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))},t.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},function(e,t,r){"use strict";(function(t,i){var n;e.exports=T,T.ReadableState=A;r(9).EventEmitter;var a=function(e,t){return e.listeners(t).length},o=r(73),s=r(10).Buffer,d=(void 0!==t?t:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var u,l=r(275);u=l&&l.debuglog?l.debuglog("stream"):function(){};var h,c,f,m=r(276),_=r(74),p=r(75).getHighWaterMark,y=r(26).codes,g=y.ERR_INVALID_ARG_TYPE,b=y.ERR_STREAM_PUSH_AFTER_EOF,v=y.ERR_METHOD_NOT_IMPLEMENTED,w=y.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r(6)(T,o);var M=_.errorOrDestroy,E=["error","close","destroy","pause","resume"];function A(e,t,i){n=n||r(27),e=e||{},"boolean"!=typeof i&&(i=t instanceof n),this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=p(this,e,"readableHighWaterMark",i),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(h||(h=r(23).StringDecoder),this.decoder=new h(e.encoding),this.encoding=e.encoding)}function T(e){if(n=n||r(27),!(this instanceof T))return new T(e);var t=this instanceof n;this._readableState=new A(e,this,t),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),o.call(this)}function k(e,t,r,i,n){u("readableAddChunk",t);var a,o=e._readableState;if(null===t)o.reading=!1,function(e,t){if(u("onEofChunk"),t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?D(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,R(e)))}(e,o);else if(n||(a=function(e,t){var r;i=t,s.isBuffer(i)||i instanceof d||"string"==typeof t||void 0===t||e.objectMode||(r=new g("chunk",["string","Buffer","Uint8Array"],t));var i;return r}(o,t)),a)M(e,a);else if(o.objectMode||t&&t.length>0)if("string"==typeof t||o.objectMode||Object.getPrototypeOf(t)===s.prototype||(t=function(e){return s.from(e)}(t)),i)o.endEmitted?M(e,new w):S(e,o,t,!0);else if(o.ended)M(e,new b);else{if(o.destroyed)return!1;o.reading=!1,o.decoder&&!r?(t=o.decoder.write(t),o.objectMode||0!==t.length?S(e,o,t,!1):x(e,o)):S(e,o,t,!1)}else i||(o.reading=!1,x(e,o));return!o.ended&&(o.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=1073741824?e=1073741824:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function D(e){var t=e._readableState;u("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(u("emitReadable",t.flowing),t.emittedReadable=!0,i.nextTick(R,e))}function R(e){var t=e._readableState;u("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,C(e)}function x(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(O,e,t))}function O(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function I(e){u("readable nexttick read 0"),e.read(0)}function P(e,t){u("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),C(e),t.flowing&&!t.reading&&e.read(0)}function C(e){var t=e._readableState;for(u("flow",t.flowing);t.flowing&&null!==e.read(););}function N(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function j(e){var t=e._readableState;u("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,i.nextTick(F,t,e))}function F(e,t){if(u("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function H(e,t){for(var r=0,i=e.length;r=t.highWaterMark:t.length>0)||t.ended))return u("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?j(this):D(this),null;if(0===(e=L(e,t))&&t.ended)return 0===t.length&&j(this),null;var i,n=t.needReadable;return u("need readable",n),(0===t.length||t.length-e0?N(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&j(this)),null!==i&&this.emit("data",i),i},T.prototype._read=function(e){M(this,new v("_read()"))},T.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,u("pipe count=%d opts=%j",n.pipesCount,t);var o=(!t||!1!==t.end)&&e!==i.stdout&&e!==i.stderr?d:p;function s(t,i){u("onunpipe"),t===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,u("cleanup"),e.removeListener("close",m),e.removeListener("finish",_),e.removeListener("drain",l),e.removeListener("error",f),e.removeListener("unpipe",s),r.removeListener("end",d),r.removeListener("end",p),r.removeListener("data",c),h=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||l())}function d(){u("onend"),e.end()}n.endEmitted?i.nextTick(o):r.once("end",o),e.on("unpipe",s);var l=function(e){return function(){var t=e._readableState;u("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&a(e,"data")&&(t.flowing=!0,C(e))}}(r);e.on("drain",l);var h=!1;function c(t){u("ondata");var i=e.write(t);u("dest.write",i),!1===i&&((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==H(n.pipes,e))&&!h&&(u("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function f(t){u("onerror",t),p(),e.removeListener("error",f),0===a(e,"error")&&M(e,t)}function m(){e.removeListener("finish",_),p()}function _(){u("onfinish"),e.removeListener("close",m),p()}function p(){u("unpipe"),r.unpipe(e)}return r.on("data",c),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",f),e.once("close",m),e.once("finish",_),e.emit("pipe",r),n.flowing||(u("pipe resume"),r.resume()),e},T.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var i=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a0,!1!==n.flowing&&this.resume()):"readable"===e&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,u("on readable",n.length,n.reading),n.length?D(this):n.reading||i.nextTick(I,this))),r},T.prototype.addListener=T.prototype.on,T.prototype.removeListener=function(e,t){var r=o.prototype.removeListener.call(this,e,t);return"readable"===e&&i.nextTick(Y,this),r},T.prototype.removeAllListeners=function(e){var t=o.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||i.nextTick(Y,this),t},T.prototype.resume=function(){var e=this._readableState;return e.flowing||(u("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,i.nextTick(P,e,t))}(this,e)),e.paused=!1,this},T.prototype.pause=function(){return u("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(u("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},T.prototype.wrap=function(e){var t=this,r=this._readableState,i=!1;for(var n in e.on("end",(function(){if(u("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(n){(u("wrapped data"),r.decoder&&(n=r.decoder.write(n)),r.objectMode&&null==n)||(r.objectMode||n&&n.length)&&(t.push(n)||(i=!0,e.pause()))})),e)void 0===this[n]&&"function"==typeof e[n]&&(this[n]=function(t){return function(){return e[t].apply(e,arguments)}}(n));for(var a=0;a-1))throw new w(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(T.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(T.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),T.prototype._write=function(e,t,r){r(new _("_write()"))},T.prototype._writev=null,T.prototype.end=function(e,t,r){var n=this._writableState;return"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||function(e,t,r){t.ending=!0,x(e,t),r&&(t.finished?i.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r),this},Object.defineProperty(T.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(T.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),T.prototype.destroy=h.destroy,T.prototype._undestroy=h.undestroy,T.prototype._destroy=function(e,t){t(e)}}).call(this,r(14),r(11))},function(e,t,r){"use strict";e.exports=l;var i=r(26).codes,n=i.ERR_METHOD_NOT_IMPLEMENTED,a=i.ERR_MULTIPLE_CALLBACK,o=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,s=i.ERR_TRANSFORM_WITH_LENGTH_0,d=r(27);function u(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(null===i)return this.emit("error",new a);r.writechunk=null,r.writecb=null,null!=t&&this.push(t),i(e);var n=this._readableState;n.reading=!1,(n.needReadable||n.length0)if("string"==typeof t||o.objectMode||Object.getPrototypeOf(t)===s.prototype||(t=function(e){return s.from(e)}(t)),i)o.endEmitted?M(e,new w):S(e,o,t,!0);else if(o.ended)M(e,new b);else{if(o.destroyed)return!1;o.reading=!1,o.decoder&&!r?(t=o.decoder.write(t),o.objectMode||0!==t.length?S(e,o,t,!1):x(e,o)):S(e,o,t,!1)}else i||(o.reading=!1,x(e,o));return!o.ended&&(o.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=1073741824?e=1073741824:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function D(e){var t=e._readableState;u("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(u("emitReadable",t.flowing),t.emittedReadable=!0,i.nextTick(R,e))}function R(e){var t=e._readableState;u("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,C(e)}function x(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(O,e,t))}function O(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function I(e){u("readable nexttick read 0"),e.read(0)}function P(e,t){u("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),C(e),t.flowing&&!t.reading&&e.read(0)}function C(e){var t=e._readableState;for(u("flow",t.flowing);t.flowing&&null!==e.read(););}function N(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function j(e){var t=e._readableState;u("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,i.nextTick(F,t,e))}function F(e,t){if(u("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function H(e,t){for(var r=0,i=e.length;r=t.highWaterMark:t.length>0)||t.ended))return u("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?j(this):D(this),null;if(0===(e=L(e,t))&&t.ended)return 0===t.length&&j(this),null;var i,n=t.needReadable;return u("need readable",n),(0===t.length||t.length-e0?N(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&j(this)),null!==i&&this.emit("data",i),i},T.prototype._read=function(e){M(this,new v("_read()"))},T.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,u("pipe count=%d opts=%j",n.pipesCount,t);var o=(!t||!1!==t.end)&&e!==i.stdout&&e!==i.stderr?d:p;function s(t,i){u("onunpipe"),t===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,u("cleanup"),e.removeListener("close",m),e.removeListener("finish",_),e.removeListener("drain",l),e.removeListener("error",f),e.removeListener("unpipe",s),r.removeListener("end",d),r.removeListener("end",p),r.removeListener("data",c),h=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||l())}function d(){u("onend"),e.end()}n.endEmitted?i.nextTick(o):r.once("end",o),e.on("unpipe",s);var l=function(e){return function(){var t=e._readableState;u("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&a(e,"data")&&(t.flowing=!0,C(e))}}(r);e.on("drain",l);var h=!1;function c(t){u("ondata");var i=e.write(t);u("dest.write",i),!1===i&&((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==H(n.pipes,e))&&!h&&(u("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function f(t){u("onerror",t),p(),e.removeListener("error",f),0===a(e,"error")&&M(e,t)}function m(){e.removeListener("finish",_),p()}function _(){u("onfinish"),e.removeListener("close",m),p()}function p(){u("unpipe"),r.unpipe(e)}return r.on("data",c),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",f),e.once("close",m),e.once("finish",_),e.emit("pipe",r),n.flowing||(u("pipe resume"),r.resume()),e},T.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var i=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a0,!1!==n.flowing&&this.resume()):"readable"===e&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,u("on readable",n.length,n.reading),n.length?D(this):n.reading||i.nextTick(I,this))),r},T.prototype.addListener=T.prototype.on,T.prototype.removeListener=function(e,t){var r=o.prototype.removeListener.call(this,e,t);return"readable"===e&&i.nextTick(Y,this),r},T.prototype.removeAllListeners=function(e){var t=o.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||i.nextTick(Y,this),t},T.prototype.resume=function(){var e=this._readableState;return e.flowing||(u("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,i.nextTick(P,e,t))}(this,e)),e.paused=!1,this},T.prototype.pause=function(){return u("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(u("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},T.prototype.wrap=function(e){var t=this,r=this._readableState,i=!1;for(var n in e.on("end",(function(){if(u("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(n){(u("wrapped data"),r.decoder&&(n=r.decoder.write(n)),r.objectMode&&null==n)||(r.objectMode||n&&n.length)&&(t.push(n)||(i=!0,e.pause()))})),e)void 0===this[n]&&"function"==typeof e[n]&&(this[n]=function(t){return function(){return e[t].apply(e,arguments)}}(n));for(var a=0;a-1))throw new w(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(T.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(T.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),T.prototype._write=function(e,t,r){r(new _("_write()"))},T.prototype._writev=null,T.prototype.end=function(e,t,r){var n=this._writableState;return"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||function(e,t,r){t.ending=!0,x(e,t),r&&(t.finished?i.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r),this},Object.defineProperty(T.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(T.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),T.prototype.destroy=h.destroy,T.prototype._undestroy=h.undestroy,T.prototype._destroy=function(e,t){t(e)}}).call(this,r(14),r(11))},function(e,t,r){"use strict";e.exports=l;var i=r(28).codes,n=i.ERR_METHOD_NOT_IMPLEMENTED,a=i.ERR_MULTIPLE_CALLBACK,o=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,s=i.ERR_TRANSFORM_WITH_LENGTH_0,d=r(29);function u(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(null===i)return this.emit("error",new a);r.writechunk=null,r.writecb=null,null!=t&&this.push(t),i(e);var n=this._readableState;n.reading=!1,(n.needReadable||n.length>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function c(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function f(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}i(d,n),d.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},d.prototype._update=function(e){for(var t,r=this._w,i=0|this._a,n=0|this._b,a=0|this._c,s=0|this._d,d=0|this._e,m=0|this._f,_=0|this._g,p=0|this._h,y=0;y<16;++y)r[y]=e.readInt32BE(4*y);for(;y<64;++y)r[y]=0|(((t=r[y-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+r[y-7]+f(r[y-15])+r[y-16];for(var g=0;g<64;++g){var b=p+c(d)+u(d,m,_)+o[g]+r[g]|0,v=h(i)+l(i,n,a)|0;p=_,_=m,m=d,d=s+b|0,s=a,a=n,n=i,i=b+v|0}this._a=i+this._a|0,this._b=n+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=d+this._e|0,this._f=m+this._f|0,this._g=_+this._g|0,this._h=p+this._h|0},d.prototype._hash=function(){var e=a.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e},e.exports=d},function(e,t,r){var i=r(6),n=r(30),a=r(7).Buffer,o=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],s=new Array(160);function d(){this.init(),this._w=s,n.call(this,128,112)}function u(e,t,r){return r^e&(t^r)}function l(e,t,r){return e&t|r&(e|t)}function h(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function c(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function f(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function m(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function _(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function p(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function y(e,t){return e>>>0>>0?1:0}i(d,n),d.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},d.prototype._update=function(e){for(var t=this._w,r=0|this._ah,i=0|this._bh,n=0|this._ch,a=0|this._dh,s=0|this._eh,d=0|this._fh,g=0|this._gh,b=0|this._hh,v=0|this._al,w=0|this._bl,M=0|this._cl,E=0|this._dl,A=0|this._el,T=0|this._fl,k=0|this._gl,S=0|this._hl,L=0;L<32;L+=2)t[L]=e.readInt32BE(4*L),t[L+1]=e.readInt32BE(4*L+4);for(;L<160;L+=2){var D=t[L-30],R=t[L-30+1],x=f(D,R),O=m(R,D),Y=_(D=t[L-4],R=t[L-4+1]),I=p(R,D),P=t[L-14],C=t[L-14+1],N=t[L-32],j=t[L-32+1],F=O+C|0,H=x+P+y(F,O)|0;H=(H=H+Y+y(F=F+I|0,I)|0)+N+y(F=F+j|0,j)|0,t[L]=H,t[L+1]=F}for(var U=0;U<160;U+=2){H=t[U],F=t[U+1];var B=l(r,i,n),W=l(v,w,M),z=h(r,v),X=h(v,r),V=c(s,A),G=c(A,s),q=o[U],Q=o[U+1],K=u(s,d,g),J=u(A,T,k),Z=S+G|0,$=b+V+y(Z,S)|0;$=($=($=$+K+y(Z=Z+J|0,J)|0)+q+y(Z=Z+Q|0,Q)|0)+H+y(Z=Z+F|0,F)|0;var ee=X+W|0,te=z+B+y(ee,X)|0;b=g,S=k,g=d,k=T,d=s,T=A,s=a+$+y(A=E+Z|0,E)|0,a=n,E=M,n=i,M=w,i=r,w=v,r=$+te+y(v=Z+ee|0,Z)|0}this._al=this._al+v|0,this._bl=this._bl+w|0,this._cl=this._cl+M|0,this._dl=this._dl+E|0,this._el=this._el+A|0,this._fl=this._fl+T|0,this._gl=this._gl+k|0,this._hl=this._hl+S|0,this._ah=this._ah+r+y(this._al,v)|0,this._bh=this._bh+i+y(this._bl,w)|0,this._ch=this._ch+n+y(this._cl,M)|0,this._dh=this._dh+a+y(this._dl,E)|0,this._eh=this._eh+s+y(this._el,A)|0,this._fh=this._fh+d+y(this._fl,T)|0,this._gh=this._gh+g+y(this._gl,k)|0,this._hh=this._hh+b+y(this._hl,S)|0},d.prototype._hash=function(){var e=a.allocUnsafe(64);function t(t,r,i){e.writeInt32BE(t,i),e.writeInt32BE(r,i+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e},e.exports=d},function(e,t,r){"use strict";(function(t,i){var n=r(41);e.exports=b;var a,o=r(66);b.ReadableState=g;r(9).EventEmitter;var s=function(e,t){return e.listeners(t).length},d=r(87),u=r(56).Buffer,l=(void 0!==t?t:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var h=Object.create(r(33));h.inherits=r(6);var c=r(296),f=void 0;f=c&&c.debuglog?c.debuglog("stream"):function(){};var m,_=r(297),p=r(88);h.inherits(b,d);var y=["error","close","destroy","pause","resume"];function g(e,t){e=e||{};var i=t instanceof(a=a||r(24));this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var n=e.highWaterMark,o=e.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=n||0===n?n:i&&(o||0===o)?o:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new _,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(m||(m=r(23).StringDecoder),this.decoder=new m(e.encoding),this.encoding=e.encoding)}function b(e){if(a=a||r(24),!(this instanceof b))return new b(e);this._readableState=new g(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),d.call(this)}function v(e,t,r,i,n){var a,o=e._readableState;null===t?(o.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,E(e)}(e,o)):(n||(a=function(e,t){var r;i=t,u.isBuffer(i)||i instanceof l||"string"==typeof t||void 0===t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));var i;return r}(o,t)),a?e.emit("error",a):o.objectMode||t&&t.length>0?("string"==typeof t||o.objectMode||Object.getPrototypeOf(t)===u.prototype||(t=function(e){return u.from(e)}(t)),i?o.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):w(e,o,t,!0):o.ended?e.emit("error",new Error("stream.push() after EOF")):(o.reading=!1,o.decoder&&!r?(t=o.decoder.write(t),o.objectMode||0!==t.length?w(e,o,t,!1):T(e,o)):w(e,o,t,!1))):i||(o.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function E(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(f("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?n.nextTick(A,e):A(e))}function A(e){f("emit readable"),e.emit("readable"),D(e)}function T(e,t){t.readingMore||(t.readingMore=!0,n.nextTick(k,e,t))}function k(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var i;ea.length?a.length:e;if(o===a.length?n+=a:n+=a.slice(0,e),0===(e-=o)){o===a.length?(++i,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=a.slice(o));break}++i}return t.length-=i,n}(e,t):function(e,t){var r=u.allocUnsafe(e),i=t.head,n=1;i.data.copy(r),e-=i.data.length;for(;i=i.next;){var a=i.data,o=e>a.length?a.length:e;if(a.copy(r,r.length-e,0,o),0===(e-=o)){o===a.length?(++n,i.next?t.head=i.next:t.head=t.tail=null):(t.head=i,i.data=a.slice(o));break}++n}return t.length-=n,r}(e,t);return i}(e,t.buffer,t.decoder),r);var r}function x(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,n.nextTick(O,t,e))}function O(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function Y(e,t){for(var r=0,i=e.length;r=t.highWaterMark||t.ended))return f("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?x(this):E(this),null;if(0===(e=M(e,t))&&t.ended)return 0===t.length&&x(this),null;var i,n=t.needReadable;return f("need readable",n),(0===t.length||t.length-e0?R(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&x(this)),null!==i&&this.emit("data",i),i},b.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},b.prototype.pipe=function(e,t){var r=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=e;break;case 1:a.pipes=[a.pipes,e];break;default:a.pipes.push(e)}a.pipesCount+=1,f("pipe count=%d opts=%j",a.pipesCount,t);var d=(!t||!1!==t.end)&&e!==i.stdout&&e!==i.stderr?l:b;function u(t,i){f("onunpipe"),t===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,f("cleanup"),e.removeListener("close",y),e.removeListener("finish",g),e.removeListener("drain",h),e.removeListener("error",p),e.removeListener("unpipe",u),r.removeListener("end",l),r.removeListener("end",b),r.removeListener("data",_),c=!0,!a.awaitDrain||e._writableState&&!e._writableState.needDrain||h())}function l(){f("onend"),e.end()}a.endEmitted?n.nextTick(d):r.once("end",d),e.on("unpipe",u);var h=function(e){return function(){var t=e._readableState;f("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,"data")&&(t.flowing=!0,D(e))}}(r);e.on("drain",h);var c=!1;var m=!1;function _(t){f("ondata"),m=!1,!1!==e.write(t)||m||((1===a.pipesCount&&a.pipes===e||a.pipesCount>1&&-1!==Y(a.pipes,e))&&!c&&(f("false write response, pause",a.awaitDrain),a.awaitDrain++,m=!0),r.pause())}function p(t){f("onerror",t),b(),e.removeListener("error",p),0===s(e,"error")&&e.emit("error",t)}function y(){e.removeListener("finish",g),b()}function g(){f("onfinish"),e.removeListener("close",y),b()}function b(){f("unpipe"),r.unpipe(e)}return r.on("data",_),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?o(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",p),e.once("close",y),e.once("finish",g),e.emit("pipe",r),a.flowing||(f("pipe resume"),r.resume()),e},b.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var i=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;ar)?t=("rmd160"===e?new d:u(e)).update(t).digest():t.lengthr||t!=t)throw new TypeError("Bad key length")}},function(e,t,r){(function(t,r){var i;if(t.process&&t.process.browser)i="utf-8";else if(t.process&&t.process.version){i=parseInt(r.version.split(".")[0].slice(1),10)>=6?"utf-8":"binary"}else i="utf-8";e.exports=i}).call(this,r(14),r(11))},function(e,t,r){var i=r(91),n=r(53),a=r(55),o=r(7).Buffer,s=r(94),d=r(95),u=r(97),l=o.alloc(128),h={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function c(e,t,r){var s=function(e){function t(t){return a(e).update(t).digest()}return"rmd160"===e||"ripemd160"===e?function(e){return(new n).update(e).digest()}:"md5"===e?i:t}(e),d="sha512"===e||"sha384"===e?128:64;t.length>d?t=s(t):t.length>>0},t.writeUInt32BE=function(e,t,r){e[0+r]=t>>>24,e[1+r]=t>>>16&255,e[2+r]=t>>>8&255,e[3+r]=255&t},t.ip=function(e,t,r,i){for(var n=0,a=0,o=6;o>=0;o-=2){for(var s=0;s<=24;s+=8)n<<=1,n|=t>>>s+o&1;for(s=0;s<=24;s+=8)n<<=1,n|=e>>>s+o&1}for(o=6;o>=0;o-=2){for(s=1;s<=25;s+=8)a<<=1,a|=t>>>s+o&1;for(s=1;s<=25;s+=8)a<<=1,a|=e>>>s+o&1}r[i+0]=n>>>0,r[i+1]=a>>>0},t.rip=function(e,t,r,i){for(var n=0,a=0,o=0;o<4;o++)for(var s=24;s>=0;s-=8)n<<=1,n|=t>>>s+o&1,n<<=1,n|=e>>>s+o&1;for(o=4;o<8;o++)for(s=24;s>=0;s-=8)a<<=1,a|=t>>>s+o&1,a<<=1,a|=e>>>s+o&1;r[i+0]=n>>>0,r[i+1]=a>>>0},t.pc1=function(e,t,r,i){for(var n=0,a=0,o=7;o>=5;o--){for(var s=0;s<=24;s+=8)n<<=1,n|=t>>s+o&1;for(s=0;s<=24;s+=8)n<<=1,n|=e>>s+o&1}for(s=0;s<=24;s+=8)n<<=1,n|=t>>s+o&1;for(o=1;o<=3;o++){for(s=0;s<=24;s+=8)a<<=1,a|=t>>s+o&1;for(s=0;s<=24;s+=8)a<<=1,a|=e>>s+o&1}for(s=0;s<=24;s+=8)a<<=1,a|=e>>s+o&1;r[i+0]=n>>>0,r[i+1]=a>>>0},t.r28shl=function(e,t){return e<>>28-t};var i=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];t.pc2=function(e,t,r,n){for(var a=0,o=0,s=i.length>>>1,d=0;d>>i[d]&1;for(d=s;d>>i[d]&1;r[n+0]=a>>>0,r[n+1]=o>>>0},t.expand=function(e,t,r){var i=0,n=0;i=(1&e)<<5|e>>>27;for(var a=23;a>=15;a-=4)i<<=6,i|=e>>>a&63;for(a=11;a>=3;a-=4)n|=e>>>a&63,n<<=6;n|=(31&e)<<1|e>>>31,t[r+0]=i>>>0,t[r+1]=n>>>0};var n=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];t.substitute=function(e,t){for(var r=0,i=0;i<4;i++){r<<=4,r|=n[64*i+(e>>>18-6*i&63)]}for(i=0;i<4;i++){r<<=4,r|=n[256+64*i+(t>>>18-6*i&63)]}return r>>>0};var a=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];t.permute=function(e){for(var t=0,r=0;r>>a[r]&1;return t>>>0},t.padSplit=function(e,t,r){for(var i=e.toString(2);i.length>>1];r=a.r28shl(r,s),n=a.r28shl(n,s),a.pc2(r,n,e.keys,o)}},d.prototype._update=function(e,t,r,i){var n=this._desState,o=a.readUInt32BE(e,t),s=a.readUInt32BE(e,t+4);a.ip(o,s,n.tmp,0),o=n.tmp[0],s=n.tmp[1],"encrypt"===this.type?this._encrypt(n,o,s,n.tmp,0):this._decrypt(n,o,s,n.tmp,0),o=n.tmp[0],s=n.tmp[1],a.writeUInt32BE(r,o,i),a.writeUInt32BE(r,s,i+4)},d.prototype._pad=function(e,t){if(!1===this.padding)return!1;for(var r=e.length-t,i=t;i>>0,o=c}a.rip(s,o,i,n)},d.prototype._decrypt=function(e,t,r,i,n){for(var o=r,s=t,d=e.keys.length-2;d>=0;d-=2){var u=e.keys[d],l=e.keys[d+1];a.expand(o,e.tmp,0),u^=e.tmp[0],l^=e.tmp[1];var h=a.substitute(u,l),c=o;o=(s^a.permute(h))>>>0,s=c}a.rip(o,s,i,n)}},function(e,t,r){var i=r(34),n=r(7).Buffer,a=r(101);function o(e){var t=e._cipher.encryptBlockRaw(e._prev);return a(e._prev),t}t.encrypt=function(e,t){var r=Math.ceil(t.length/16),a=e._cache.length;e._cache=n.concat([e._cache,n.allocUnsafe(16*r)]);for(var s=0;se;)r.ishrn(1);if(r.isEven()&&r.iadd(s),r.testn(1)||r.iadd(d),t.cmp(d)){if(!t.cmp(u))for(;r.mod(l).cmp(h);)r.iadd(f)}else for(;r.mod(a).cmp(c);)r.iadd(f);if(p(m=r.shrn(1))&&p(r)&&y(m)&&y(r)&&o.test(m)&&o.test(r))return r}}},function(e,t,r){var i=r(12),n=r(61);function a(e){this.rand=e||new n.Rand}e.exports=a,a.create=function(e){return new a(e)},a.prototype._randbelow=function(e){var t=e.bitLength(),r=Math.ceil(t/8);do{var n=new i(this.rand.generate(r))}while(n.cmp(e)>=0);return n},a.prototype._randrange=function(e,t){var r=t.sub(e);return e.add(this._randbelow(r))},a.prototype.test=function(e,t,r){var n=e.bitLength(),a=i.mont(e),o=new i(1).toRed(a);t||(t=Math.max(1,n/48|0));for(var s=e.subn(1),d=0;!s.testn(d);d++);for(var u=e.shrn(d),l=s.toRed(a);t>0;t--){var h=this._randrange(new i(2),s);r&&r(h);var c=h.toRed(a).redPow(u);if(0!==c.cmp(o)&&0!==c.cmp(l)){for(var f=1;f0;t--){var l=this._randrange(new i(2),o),h=e.gcd(l);if(0!==h.cmpn(1))return h;var c=l.toRed(n).redPow(d);if(0!==c.cmp(a)&&0!==c.cmp(u)){for(var f=1;f>8,o=255&n;a?r.push(a,o):r.push(o)}return r},i.zero2=n,i.toHex=a,i.encode=function(e,t){return"hex"===t?a(e):e}},function(e,t,r){"use strict";var i=t;i.base=r(45),i.short=r(334),i.mont=r(335),i.edwards=r(336)},function(e,t,r){"use strict";var i=r(19).rotr32;function n(e,t,r){return e&t^~e&r}function a(e,t,r){return e&t^e&r^t&r}function o(e,t,r){return e^t^r}t.ft_1=function(e,t,r,i){return 0===e?n(t,r,i):1===e||3===e?o(t,r,i):2===e?a(t,r,i):void 0},t.ch32=n,t.maj32=a,t.p32=o,t.s0_256=function(e){return i(e,2)^i(e,13)^i(e,22)},t.s1_256=function(e){return i(e,6)^i(e,11)^i(e,25)},t.g0_256=function(e){return i(e,7)^i(e,18)^e>>>3},t.g1_256=function(e){return i(e,17)^i(e,19)^e>>>10}},function(e,t,r){"use strict";var i=r(19),n=r(35),a=r(109),o=r(15),s=i.sum32,d=i.sum32_4,u=i.sum32_5,l=a.ch32,h=a.maj32,c=a.s0_256,f=a.s1_256,m=a.g0_256,_=a.g1_256,p=n.BlockHash,y=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function g(){if(!(this instanceof g))return new g;p.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=y,this.W=new Array(64)}i.inherits(g,p),e.exports=g,g.blockSize=512,g.outSize=256,g.hmacStrength=192,g.padLength=64,g.prototype._update=function(e,t){for(var r=this.W,i=0;i<16;i++)r[i]=e[t+i];for(;i=48&&r<=57?r-48:r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:void i(!1,"Invalid character in "+e)}function d(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function u(e,t,r,n){for(var a=0,o=0,s=Math.min(e.length,r),d=t;d=49?u-49+10:u>=17?u-17+10:u,i(u>=0&&o0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this._strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=d(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this._strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,d=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{a.prototype[Symbol.for("nodejs.util.inspect.custom")]=h}catch(e){a.prototype.inspect=h}else a.prototype.inspect=h;function h(){return(this.red?""}var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],m=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215,(n+=2)>=26&&(n-=26,o--),r=0!==a||o!==this.length-1?c[6-d.length]+d+r:d+r}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var u=f[e],l=m[e];r="";var h=this.clone();for(h.negative=0;!h.isZero();){var _=h.modrn(l).toString(e);r=(h=h.idivn(l)).isZero()?_+r:c[u-_.length]+_+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16,2)},o&&(a.prototype.toBuffer=function(e,t){return this.toArrayLike(o,e,t)}),a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)};function _(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,d=o/67108864|0;r.words[0]=s;for(var u=1;u>>26,h=67108863&d,c=Math.min(u,t.length-1),f=Math.max(0,u-e.length+1);f<=c;f++){var m=u-f|0;l+=(o=(n=0|e.words[m])*(a=0|t.words[f])+h)/67108864|0,h=67108863&o}r.words[u]=0|h,d=0|l}return 0!==d?r.words[u]=0|d:r.length--,r._strip()}a.prototype.toArrayLike=function(e,t,r){this._strip();var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0");var o=function(e,t){return e.allocUnsafe?e.allocUnsafe(t):new e(t)}(e,a);return this["_toArrayLike"+("le"===t?"LE":"BE")](o,n),o},a.prototype._toArrayLikeLE=function(e,t){for(var r=0,i=0,n=0,a=0;n>8&255),r>16&255),6===a?(r>24&255),i=0,a=0):(i=o>>>24,a+=2)}if(r=0&&(e[r--]=o>>8&255),r>=0&&(e[r--]=o>>16&255),6===a?(r>=0&&(e[r--]=o>>24&255),i=0,a=0):(i=o>>>24,a+=2)}if(r>=0)for(e[r--]=i;r>=0;)e[r--]=0},Math.clz32?a.prototype._countBits=function(e){return 32-Math.clz32(e)}:a.prototype._countBits=function(e){var t=e,r=0;return t>=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this._strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,f=0|o[1],m=8191&f,_=f>>>13,p=0|o[2],y=8191&p,g=p>>>13,b=0|o[3],v=8191&b,w=b>>>13,M=0|o[4],E=8191&M,A=M>>>13,T=0|o[5],k=8191&T,S=T>>>13,L=0|o[6],D=8191&L,R=L>>>13,x=0|o[7],O=8191&x,Y=x>>>13,I=0|o[8],P=8191&I,C=I>>>13,N=0|o[9],j=8191&N,F=N>>>13,H=0|s[0],U=8191&H,B=H>>>13,W=0|s[1],z=8191&W,X=W>>>13,V=0|s[2],G=8191&V,q=V>>>13,Q=0|s[3],K=8191&Q,J=Q>>>13,Z=0|s[4],$=8191&Z,ee=Z>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],de=8191&se,ue=se>>>13,le=0|s[8],he=8191&le,ce=le>>>13,fe=0|s[9],me=8191&fe,_e=fe>>>13;r.negative=e.negative^t.negative,r.length=19;var pe=(u+(i=Math.imul(h,U))|0)+((8191&(n=(n=Math.imul(h,B))+Math.imul(c,U)|0))<<13)|0;u=((a=Math.imul(c,B))+(n>>>13)|0)+(pe>>>26)|0,pe&=67108863,i=Math.imul(m,U),n=(n=Math.imul(m,B))+Math.imul(_,U)|0,a=Math.imul(_,B);var ye=(u+(i=i+Math.imul(h,z)|0)|0)+((8191&(n=(n=n+Math.imul(h,X)|0)+Math.imul(c,z)|0))<<13)|0;u=((a=a+Math.imul(c,X)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(y,U),n=(n=Math.imul(y,B))+Math.imul(g,U)|0,a=Math.imul(g,B),i=i+Math.imul(m,z)|0,n=(n=n+Math.imul(m,X)|0)+Math.imul(_,z)|0,a=a+Math.imul(_,X)|0;var ge=(u+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,q)|0)+Math.imul(c,G)|0))<<13)|0;u=((a=a+Math.imul(c,q)|0)+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(v,U),n=(n=Math.imul(v,B))+Math.imul(w,U)|0,a=Math.imul(w,B),i=i+Math.imul(y,z)|0,n=(n=n+Math.imul(y,X)|0)+Math.imul(g,z)|0,a=a+Math.imul(g,X)|0,i=i+Math.imul(m,G)|0,n=(n=n+Math.imul(m,q)|0)+Math.imul(_,G)|0,a=a+Math.imul(_,q)|0;var be=(u+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,J)|0)+Math.imul(c,K)|0))<<13)|0;u=((a=a+Math.imul(c,J)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(E,U),n=(n=Math.imul(E,B))+Math.imul(A,U)|0,a=Math.imul(A,B),i=i+Math.imul(v,z)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(w,z)|0,a=a+Math.imul(w,X)|0,i=i+Math.imul(y,G)|0,n=(n=n+Math.imul(y,q)|0)+Math.imul(g,G)|0,a=a+Math.imul(g,q)|0,i=i+Math.imul(m,K)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(_,K)|0,a=a+Math.imul(_,J)|0;var ve=(u+(i=i+Math.imul(h,$)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(c,$)|0))<<13)|0;u=((a=a+Math.imul(c,ee)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(k,U),n=(n=Math.imul(k,B))+Math.imul(S,U)|0,a=Math.imul(S,B),i=i+Math.imul(E,z)|0,n=(n=n+Math.imul(E,X)|0)+Math.imul(A,z)|0,a=a+Math.imul(A,X)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,q)|0,i=i+Math.imul(y,K)|0,n=(n=n+Math.imul(y,J)|0)+Math.imul(g,K)|0,a=a+Math.imul(g,J)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,ee)|0)+Math.imul(_,$)|0,a=a+Math.imul(_,ee)|0;var we=(u+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(c,re)|0))<<13)|0;u=((a=a+Math.imul(c,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(D,U),n=(n=Math.imul(D,B))+Math.imul(R,U)|0,a=Math.imul(R,B),i=i+Math.imul(k,z)|0,n=(n=n+Math.imul(k,X)|0)+Math.imul(S,z)|0,a=a+Math.imul(S,X)|0,i=i+Math.imul(E,G)|0,n=(n=n+Math.imul(E,q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,q)|0,i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,J)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,J)|0,i=i+Math.imul(y,$)|0,n=(n=n+Math.imul(y,ee)|0)+Math.imul(g,$)|0,a=a+Math.imul(g,ee)|0,i=i+Math.imul(m,re)|0,n=(n=n+Math.imul(m,ie)|0)+Math.imul(_,re)|0,a=a+Math.imul(_,ie)|0;var Me=(u+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(c,ae)|0))<<13)|0;u=((a=a+Math.imul(c,oe)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(O,U),n=(n=Math.imul(O,B))+Math.imul(Y,U)|0,a=Math.imul(Y,B),i=i+Math.imul(D,z)|0,n=(n=n+Math.imul(D,X)|0)+Math.imul(R,z)|0,a=a+Math.imul(R,X)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,q)|0,i=i+Math.imul(E,K)|0,n=(n=n+Math.imul(E,J)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,J)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(w,$)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(y,re)|0,n=(n=n+Math.imul(y,ie)|0)+Math.imul(g,re)|0,a=a+Math.imul(g,ie)|0,i=i+Math.imul(m,ae)|0,n=(n=n+Math.imul(m,oe)|0)+Math.imul(_,ae)|0,a=a+Math.imul(_,oe)|0;var Ee=(u+(i=i+Math.imul(h,de)|0)|0)+((8191&(n=(n=n+Math.imul(h,ue)|0)+Math.imul(c,de)|0))<<13)|0;u=((a=a+Math.imul(c,ue)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(P,U),n=(n=Math.imul(P,B))+Math.imul(C,U)|0,a=Math.imul(C,B),i=i+Math.imul(O,z)|0,n=(n=n+Math.imul(O,X)|0)+Math.imul(Y,z)|0,a=a+Math.imul(Y,X)|0,i=i+Math.imul(D,G)|0,n=(n=n+Math.imul(D,q)|0)+Math.imul(R,G)|0,a=a+Math.imul(R,q)|0,i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,J)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,J)|0,i=i+Math.imul(E,$)|0,n=(n=n+Math.imul(E,ee)|0)+Math.imul(A,$)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(y,ae)|0,n=(n=n+Math.imul(y,oe)|0)+Math.imul(g,ae)|0,a=a+Math.imul(g,oe)|0,i=i+Math.imul(m,de)|0,n=(n=n+Math.imul(m,ue)|0)+Math.imul(_,de)|0,a=a+Math.imul(_,ue)|0;var Ae=(u+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(c,he)|0))<<13)|0;u=((a=a+Math.imul(c,ce)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(j,U),n=(n=Math.imul(j,B))+Math.imul(F,U)|0,a=Math.imul(F,B),i=i+Math.imul(P,z)|0,n=(n=n+Math.imul(P,X)|0)+Math.imul(C,z)|0,a=a+Math.imul(C,X)|0,i=i+Math.imul(O,G)|0,n=(n=n+Math.imul(O,q)|0)+Math.imul(Y,G)|0,a=a+Math.imul(Y,q)|0,i=i+Math.imul(D,K)|0,n=(n=n+Math.imul(D,J)|0)+Math.imul(R,K)|0,a=a+Math.imul(R,J)|0,i=i+Math.imul(k,$)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,$)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(E,re)|0,n=(n=n+Math.imul(E,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(y,de)|0,n=(n=n+Math.imul(y,ue)|0)+Math.imul(g,de)|0,a=a+Math.imul(g,ue)|0,i=i+Math.imul(m,he)|0,n=(n=n+Math.imul(m,ce)|0)+Math.imul(_,he)|0,a=a+Math.imul(_,ce)|0;var Te=(u+(i=i+Math.imul(h,me)|0)|0)+((8191&(n=(n=n+Math.imul(h,_e)|0)+Math.imul(c,me)|0))<<13)|0;u=((a=a+Math.imul(c,_e)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(j,z),n=(n=Math.imul(j,X))+Math.imul(F,z)|0,a=Math.imul(F,X),i=i+Math.imul(P,G)|0,n=(n=n+Math.imul(P,q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,q)|0,i=i+Math.imul(O,K)|0,n=(n=n+Math.imul(O,J)|0)+Math.imul(Y,K)|0,a=a+Math.imul(Y,J)|0,i=i+Math.imul(D,$)|0,n=(n=n+Math.imul(D,ee)|0)+Math.imul(R,$)|0,a=a+Math.imul(R,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(E,ae)|0,n=(n=n+Math.imul(E,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(v,de)|0,n=(n=n+Math.imul(v,ue)|0)+Math.imul(w,de)|0,a=a+Math.imul(w,ue)|0,i=i+Math.imul(y,he)|0,n=(n=n+Math.imul(y,ce)|0)+Math.imul(g,he)|0,a=a+Math.imul(g,ce)|0;var ke=(u+(i=i+Math.imul(m,me)|0)|0)+((8191&(n=(n=n+Math.imul(m,_e)|0)+Math.imul(_,me)|0))<<13)|0;u=((a=a+Math.imul(_,_e)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(j,G),n=(n=Math.imul(j,q))+Math.imul(F,G)|0,a=Math.imul(F,q),i=i+Math.imul(P,K)|0,n=(n=n+Math.imul(P,J)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,J)|0,i=i+Math.imul(O,$)|0,n=(n=n+Math.imul(O,ee)|0)+Math.imul(Y,$)|0,a=a+Math.imul(Y,ee)|0,i=i+Math.imul(D,re)|0,n=(n=n+Math.imul(D,ie)|0)+Math.imul(R,re)|0,a=a+Math.imul(R,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(E,de)|0,n=(n=n+Math.imul(E,ue)|0)+Math.imul(A,de)|0,a=a+Math.imul(A,ue)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,ce)|0;var Se=(u+(i=i+Math.imul(y,me)|0)|0)+((8191&(n=(n=n+Math.imul(y,_e)|0)+Math.imul(g,me)|0))<<13)|0;u=((a=a+Math.imul(g,_e)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(j,K),n=(n=Math.imul(j,J))+Math.imul(F,K)|0,a=Math.imul(F,J),i=i+Math.imul(P,$)|0,n=(n=n+Math.imul(P,ee)|0)+Math.imul(C,$)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(O,re)|0,n=(n=n+Math.imul(O,ie)|0)+Math.imul(Y,re)|0,a=a+Math.imul(Y,ie)|0,i=i+Math.imul(D,ae)|0,n=(n=n+Math.imul(D,oe)|0)+Math.imul(R,ae)|0,a=a+Math.imul(R,oe)|0,i=i+Math.imul(k,de)|0,n=(n=n+Math.imul(k,ue)|0)+Math.imul(S,de)|0,a=a+Math.imul(S,ue)|0,i=i+Math.imul(E,he)|0,n=(n=n+Math.imul(E,ce)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,ce)|0;var Le=(u+(i=i+Math.imul(v,me)|0)|0)+((8191&(n=(n=n+Math.imul(v,_e)|0)+Math.imul(w,me)|0))<<13)|0;u=((a=a+Math.imul(w,_e)|0)+(n>>>13)|0)+(Le>>>26)|0,Le&=67108863,i=Math.imul(j,$),n=(n=Math.imul(j,ee))+Math.imul(F,$)|0,a=Math.imul(F,ee),i=i+Math.imul(P,re)|0,n=(n=n+Math.imul(P,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(O,ae)|0,n=(n=n+Math.imul(O,oe)|0)+Math.imul(Y,ae)|0,a=a+Math.imul(Y,oe)|0,i=i+Math.imul(D,de)|0,n=(n=n+Math.imul(D,ue)|0)+Math.imul(R,de)|0,a=a+Math.imul(R,ue)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,ce)|0;var De=(u+(i=i+Math.imul(E,me)|0)|0)+((8191&(n=(n=n+Math.imul(E,_e)|0)+Math.imul(A,me)|0))<<13)|0;u=((a=a+Math.imul(A,_e)|0)+(n>>>13)|0)+(De>>>26)|0,De&=67108863,i=Math.imul(j,re),n=(n=Math.imul(j,ie))+Math.imul(F,re)|0,a=Math.imul(F,ie),i=i+Math.imul(P,ae)|0,n=(n=n+Math.imul(P,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(O,de)|0,n=(n=n+Math.imul(O,ue)|0)+Math.imul(Y,de)|0,a=a+Math.imul(Y,ue)|0,i=i+Math.imul(D,he)|0,n=(n=n+Math.imul(D,ce)|0)+Math.imul(R,he)|0,a=a+Math.imul(R,ce)|0;var Re=(u+(i=i+Math.imul(k,me)|0)|0)+((8191&(n=(n=n+Math.imul(k,_e)|0)+Math.imul(S,me)|0))<<13)|0;u=((a=a+Math.imul(S,_e)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(j,ae),n=(n=Math.imul(j,oe))+Math.imul(F,ae)|0,a=Math.imul(F,oe),i=i+Math.imul(P,de)|0,n=(n=n+Math.imul(P,ue)|0)+Math.imul(C,de)|0,a=a+Math.imul(C,ue)|0,i=i+Math.imul(O,he)|0,n=(n=n+Math.imul(O,ce)|0)+Math.imul(Y,he)|0,a=a+Math.imul(Y,ce)|0;var xe=(u+(i=i+Math.imul(D,me)|0)|0)+((8191&(n=(n=n+Math.imul(D,_e)|0)+Math.imul(R,me)|0))<<13)|0;u=((a=a+Math.imul(R,_e)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(j,de),n=(n=Math.imul(j,ue))+Math.imul(F,de)|0,a=Math.imul(F,ue),i=i+Math.imul(P,he)|0,n=(n=n+Math.imul(P,ce)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,ce)|0;var Oe=(u+(i=i+Math.imul(O,me)|0)|0)+((8191&(n=(n=n+Math.imul(O,_e)|0)+Math.imul(Y,me)|0))<<13)|0;u=((a=a+Math.imul(Y,_e)|0)+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,i=Math.imul(j,he),n=(n=Math.imul(j,ce))+Math.imul(F,he)|0,a=Math.imul(F,ce);var Ye=(u+(i=i+Math.imul(P,me)|0)|0)+((8191&(n=(n=n+Math.imul(P,_e)|0)+Math.imul(C,me)|0))<<13)|0;u=((a=a+Math.imul(C,_e)|0)+(n>>>13)|0)+(Ye>>>26)|0,Ye&=67108863;var Ie=(u+(i=Math.imul(j,me))|0)+((8191&(n=(n=Math.imul(j,_e))+Math.imul(F,me)|0))<<13)|0;return u=((a=Math.imul(F,_e))+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,d[0]=pe,d[1]=ye,d[2]=ge,d[3]=be,d[4]=ve,d[5]=we,d[6]=Me,d[7]=Ee,d[8]=Ae,d[9]=Te,d[10]=ke,d[11]=Se,d[12]=Le,d[13]=De,d[14]=Re,d[15]=xe,d[16]=Oe,d[17]=Ye,d[18]=Ie,0!==u&&(d[19]=u,r.length++),r};function y(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r._strip()}function g(e,t,r){return y(e,t,r)}function b(e,t){this.x=e,this.y=t}Math.imul||(p=_),a.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?p(this,e,t):r<63?_(this,e,t):r<1024?y(this,e,t):g(this,e,t)},b.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},b.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,r+=a/67108864|0,r+=o>>>26,this.words[n]=67108863&o}return 0!==r&&(this.words[n]=r,this.length++),t?this.ineg():this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n&1}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,u=0;u=0&&(0!==l||u>=n);u--){var h=0|this.words[u];this.words[u]=l<<26-a|h>>>a,l=h&s}return d&&0!==l&&(d.words[d.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(d/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this._strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this._strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!==(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,d=i.length-n.length;if("mod"!==t){(s=new a(null)).length=d+1,s.words=new Array(s.length);for(var u=0;u=0;h--){var c=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(c=Math.min(c/o|0,67108863),i._ishlnsubmul(n,c,h);0!==i.negative;)c--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=c)}return s&&s._strip(),i._strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modrn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modrn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modrn=function(e){var t=e<0;t&&(e=-e),i(e<=67108863);for(var r=(1<<26)%e,n=0,a=this.length-1;a>=0;a--)n=(r*n+(0|this.words[a]))%e;return t?-n:n},a.prototype.modn=function(e){return this.modrn(e)},a.prototype.idivn=function(e){var t=e<0;t&&(e=-e),i(e<=67108863);for(var r=0,n=this.length-1;n>=0;n--){var a=(0|this.words[n])+67108864*r;this.words[n]=a/e|0,r=a%e}return this._strip(),t?this.ineg():this},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),d=new a(1),u=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var c=0,f=1;0==(t.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(t.iushrn(c);c-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var m=0,_=1;0==(r.words[0]&_)&&m<26;++m,_<<=1);if(m>0)for(r.iushrn(m);m-- >0;)(s.isOdd()||d.isOdd())&&(s.iadd(l),d.isub(h)),s.iushrn(1),d.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(d)):(r.isub(t),s.isub(n),d.isub(o))}return{a:s,b:d,gcd:r.iushln(u)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),d=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(t.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(t.iushrn(u);u-- >0;)o.isOdd()&&o.iadd(d),o.iushrn(1);for(var h=0,c=1;0==(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(d),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this._strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new k(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function w(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function M(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function E(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function A(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function T(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function S(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},w.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(e,t){e.iushrn(this.n,0,t)},w.prototype.imulK=function(e){return e.imul(this.k)},n(M,w),M.prototype.split=function(e,t){for(var r=Math.min(e.length,9),i=0;i>>22,n=a}n>>>=22,e.words[i-10]=n,0===n&&e.length>10?e.length-=10:e.length-=9},M.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new M;else if("p224"===e)t=new E;else if("p192"===e)t=new A;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new T}return v[e]=t,t},k.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):(l(e,e.umod(this.m)._forceRed(this)),e)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),d=s.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,u).cmp(d);)l.redIAdd(d);for(var h=this.pow(l,n),c=this.pow(e,n.addn(1).iushrn(1)),f=this.pow(e,n),m=o;0!==f.cmp(s);){for(var _=f,p=0;0!==_.cmp(s);p++)_=_.redSqr();i(p=0;i--){for(var u=t.words[i],l=d-1;l>=0;l--){var h=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4===++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}d=26}return n},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new S(e)},n(S,k),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e,this)}).call(this,r(44)(e))},function(e,t,r){var i=r(6),n=r(37).Reporter,a=r(10).Buffer;function o(e,t){n.call(this,t),a.isBuffer(e)?(this.base=e,this.offset=0,this.length=e.length):this.error("Input not Buffer")}function s(e,t){if(Array.isArray(e))this.length=0,this.value=e.map((function(e){return e instanceof s||(e=new s(e,t)),this.length+=e.length,e}),this);else if("number"==typeof e){if(!(0<=e&&e<=255))return t.error("non-byte EncoderBuffer value");this.value=e,this.length=1}else if("string"==typeof e)this.value=e,this.length=a.byteLength(e);else{if(!a.isBuffer(e))return t.error("Unsupported type: "+typeof e);this.value=e,this.length=e.length}}i(o,n),t.DecoderBuffer=o,o.prototype.save=function(){return{offset:this.offset,reporter:n.prototype.save.call(this)}},o.prototype.restore=function(e){var t=new o(this.base);return t.offset=e.offset,t.length=this.offset,this.offset=e.offset,n.prototype.restore.call(this,e.reporter),t},o.prototype.isEmpty=function(){return this.offset===this.length},o.prototype.readUInt8=function(e){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(e||"DecoderBuffer overrun")},o.prototype.skip=function(e,t){if(!(this.offset+e<=this.length))return this.error(t||"DecoderBuffer overrun");var r=new o(this.base);return r._reporterState=this._reporterState,r.offset=this.offset,r.length=this.offset+e,this.offset+=e,r},o.prototype.raw=function(e){return this.base.slice(e?e.offset:this.offset,this.length)},t.EncoderBuffer=s,s.prototype.join=function(e,t){return e||(e=new a(this.length)),t||(t=0),0===this.length||(Array.isArray(this.value)?this.value.forEach((function(r){r.join(e,t),t+=r.length})):("number"==typeof this.value?e[t]=this.value:"string"==typeof this.value?e.write(this.value,t):a.isBuffer(this.value)&&this.value.copy(e,t),t+=this.length)),e}},function(e,t,r){var i=t;i._reverse=function(e){var t={};return Object.keys(e).forEach((function(r){(0|r)==r&&(r|=0);var i=e[r];t[i]=r})),t},i.der=r(357)},function(e,t,r){var i=r(6),n=r(36),a=n.base,o=n.bignum,s=n.constants.der;function d(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new u,this.tree._init(e.body)}function u(e){a.Node.call(this,"der",e)}function l(e,t){var r=e.readUInt8(t);if(e.isError(r))return r;var i=s.tagClass[r>>6],n=0==(32&r);if(31==(31&r)){var a=r;for(r=0;128==(128&a);){if(a=e.readUInt8(t),e.isError(a))return a;r<<=7,r|=127&a}}else r&=31;return{cls:i,primitive:n,tag:r,tagStr:s.tag[r]}}function h(e,t,r){var i=e.readUInt8(r);if(e.isError(i))return i;if(!t&&128===i)return null;if(0==(128&i))return i;var n=127&i;if(n>4)return e.error("length octect is too long");i=0;for(var a=0;a=31)return i.error("Multi-octet tag encoding unsupported");t||(n|=32);return n|=s.tagClassByName[r||"universal"]<<6}(e,t,r,this.reporter);if(i.length<128)return(a=new n(2))[0]=o,a[1]=i.length,this._createEncoderBuffer([a,i]);for(var d=1,u=i.length;u>=256;u>>=8)d++;(a=new n(2+d))[0]=o,a[1]=128|d;u=1+d;for(var l=i.length;l>0;u--,l>>=8)a[u]=255&l;return this._createEncoderBuffer([a,i])},u.prototype._encodeStr=function(e,t){if("bitstr"===t)return this._createEncoderBuffer([0|e.unused,e.data]);if("bmpstr"===t){for(var r=new n(2*e.length),i=0;i=40)return this.reporter.error("Second objid identifier OOB");e.splice(0,2,40*e[0]+e[1])}var a=0;for(i=0;i=128;o>>=7)a++}var s=new n(a),d=s.length-1;for(i=e.length-1;i>=0;i--){o=e[i];for(s[d--]=127&o;(o>>=7)>0;)s[d--]=128|127&o}return this._createEncoderBuffer(s)},u.prototype._encodeTime=function(e,t){var r,i=new Date(e);return"gentime"===t?r=[l(i.getFullYear()),l(i.getUTCMonth()+1),l(i.getUTCDate()),l(i.getUTCHours()),l(i.getUTCMinutes()),l(i.getUTCSeconds()),"Z"].join(""):"utctime"===t?r=[l(i.getFullYear()%100),l(i.getUTCMonth()+1),l(i.getUTCDate()),l(i.getUTCHours()),l(i.getUTCMinutes()),l(i.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+t+" time is not supported yet"),this._encodeStr(r,"octstr")},u.prototype._encodeNull=function(){return this._createEncoderBuffer("")},u.prototype._encodeInt=function(e,t){if("string"==typeof e){if(!t)return this.reporter.error("String int or enum given, but no values map");if(!t.hasOwnProperty(e))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(e));e=t[e]}if("number"!=typeof e&&!n.isBuffer(e)){var r=e.toArray();!e.sign&&128&r[0]&&r.unshift(0),e=new n(r)}if(n.isBuffer(e)){var i=e.length;0===e.length&&i++;var a=new n(i);return e.copy(a),0===e.length&&(a[0]=0),this._createEncoderBuffer(a)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);i=1;for(var o=e;o>=256;o>>=8)i++;for(o=(a=new Array(i)).length-1;o>=0;o--)a[o]=255&e,e>>=8;return 128&a[0]&&a.unshift(0),this._createEncoderBuffer(new n(a))},u.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)},u.prototype._use=function(e,t){return"function"==typeof e&&(e=e(t)),e._getEncoder("der").tree},u.prototype._skipDefault=function(e,t,r){var i,n=this._baseState;if(null===n.default)return!1;var a=e.join();if(void 0===n.defaultBuffer&&(n.defaultBuffer=this._encodeValue(n.default,t,r).join()),a.length!==n.defaultBuffer.length)return!1;for(i=0;i=20?"ste":"de")},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},r={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},i=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},a=function(e){return function(t,r,a,o){var s=i(t),d=n[e][i(t)];return 2===s&&(d=d[r?0:1]),d.replace(/%d/i,t)}},o=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:o,monthsShort:o,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,r){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:a("s"),ss:a("s"),m:a("m"),mm:a("m"),h:a("h"),hh:a("h"),d:a("d"),dd:a("d"),M:a("M"),MM:a("M"),y:a("y"),yy:a("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return r[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},i=function(e){return function(i,n,a,o){var s=t(i),d=r[e][t(i)];return 2===s&&(d=d[n?0:1]),d.replace(/%d/i,i)}},n=["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-dz",{months:n,monthsShort:n,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,r){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:i("s"),ss:i("s"),m:i("m"),mm:i("m"),h:i("h"),hh:i("h"),d:i("d"),dd:i("d"),M:i("M"),MM:i("M"),y:i("y"),yy:i("y")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:0,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},r=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},i={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},n=function(e){return function(t,n,a,o){var s=r(t),d=i[e][r(t)];return 2===s&&(d=d[n?0:1]),d.replace(/%d/i,t)}},a=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:a,monthsShort:a,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,r){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:n("s"),ss:n("s"),m:n("m"),mm:n("m"),h:n("h"),hh:n("h"),d:n("d"),dd:n("d"),M:n("M"),MM:n("M"),y:n("y"),yy:n("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},r={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-ps",{months:"كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل".split("_"),monthsShort:"ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,r){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[٣٤٥٦٧٨٩٠]/g,(function(e){return r[e]})).split("").reverse().join("").replace(/[١٢](?![\u062a\u0643])/g,(function(e){return r[e]})).split("").reverse().join("").replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},r={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,r){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return r[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"bir neçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,r){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var r=e%10;return e+(t[r]||t[e%100-r]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r){var i,n;return"m"===r?t?"хвіліна":"хвіліну":"h"===r?t?"гадзіна":"гадзіну":e+" "+(i=+e,n={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[r].split("_"),i%10==1&&i%100!=11?n[0]:i%10>=2&&i%10<=4&&(i%100<10||i%100>=20)?n[1]:n[2])}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,r){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",w:"седмица",ww:"%d седмици",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,r=e%100;return 0===e?e+"-ев":0===r?e+"-ен":r>10&&r<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},r={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return r[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,r){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},r={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn-bd",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return r[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t?e<4?e:e+12:"ভোর"===t||"সকাল"===t?e:"দুপুর"===t?e>=3?e:e+12:"বিকাল"===t||"সন্ধ্যা"===t?e+12:void 0},meridiem:function(e,t,r){return e<4?"রাত":e<6?"ভোর":e<12?"সকাল":e<15?"দুপুর":e<18?"বিকাল":e<20?"সন্ধ্যা":"রাত"},week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},r={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12".split("_"),monthsShortRegex:/^(ཟླ་\d{1,2})/,monthsParseExact:!0,weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(e){return r[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,r){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[r],e)}var r=[/^gen/i,/^c[ʼ\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],i=/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,n=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];e.defineLocale("br",{months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:n,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[ʼ\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:n,monthsRegex:i,monthsShortRegex:i,monthsStrictRegex:/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warcʼhoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Decʼh da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s ʼzo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(function e(t){return t>9?e(t%10):t}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,t,r){return e<12?"a.m.":"g.m."}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r){var i=e+" ";switch(r){case"ss":return i+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"mm":return i+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return"jedan sat";case"hh":return i+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return i+=1===e?"dan":"dana";case"MM":return i+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return i+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:function(e,t,r,i){switch(r){case"m":return t?"jedna minuta":i?"jednu minutu":"jedne minute"}},mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var r=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(r="a"),e+r},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={standalone:"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),format:"ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince".split("_"),isFormat:/DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/},r="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),i=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],n=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function a(e){return e>1&&e<5&&1!=~~(e/10)}function o(e,t,r,i){var n=e+" ";switch(r){case"s":return t||i?"pár sekund":"pár sekundami";case"ss":return t||i?n+(a(e)?"sekundy":"sekund"):n+"sekundami";case"m":return t?"minuta":i?"minutu":"minutou";case"mm":return t||i?n+(a(e)?"minuty":"minut"):n+"minutami";case"h":return t?"hodina":i?"hodinu":"hodinou";case"hh":return t||i?n+(a(e)?"hodiny":"hodin"):n+"hodinami";case"d":return t||i?"den":"dnem";case"dd":return t||i?n+(a(e)?"dny":"dní"):n+"dny";case"M":return t||i?"měsíc":"měsícem";case"MM":return t||i?n+(a(e)?"měsíce":"měsíců"):n+"měsíci";case"y":return t||i?"rok":"rokem";case"yy":return t||i?n+(a(e)?"roky":"let"):n+"lety"}}e.defineLocale("cs",{months:t,monthsShort:r,monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){return e+(/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t="";return e>20?t=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(t=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+t},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r,i){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[r][0]:n[r][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r,i){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[r][0]:n[r][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r,i){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[r][0]:n[r][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],r=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:r,weekdaysShort:r,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,r){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,r){return e>11?r?"μμ":"ΜΜ":r?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var r,i=this._calendarEl[e],n=t&&t.hours();return r=i,("undefined"!=typeof Function&&r instanceof Function||"[object Function]"===Object.prototype.toString.call(r))&&(i=i.apply(t)),i.replace("{}",n%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,r){return e>11?r?"p.t.m.":"P.T.M.":r?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),r="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),i=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,i){return e?/-MMM-/.test(i)?r[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha inválida"})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),r="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),i=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,i){return e?/-MMM-/.test(i)?r[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),r="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),i=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,i){return e?/-MMM-/.test(i)?r[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:4},invalidDate:"Fecha inválida"})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),r="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),i=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,i){return e?/-MMM-/.test(i)?r[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r,i){var n={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?n[r][2]?n[r][2]:n[r][1]:i?n[r][0]:n[r][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},r={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,r){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"%d ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,(function(e){return r[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),r=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function i(e,i,n,a){var o="";switch(n){case"s":return a?"muutaman sekunnin":"muutama sekunti";case"ss":o=a?"sekunnin":"sekuntia";break;case"m":return a?"minuutin":"minuutti";case"mm":o=a?"minuutin":"minuuttia";break;case"h":return a?"tunnin":"tunti";case"hh":o=a?"tunnin":"tuntia";break;case"d":return a?"päivän":"päivä";case"dd":o=a?"päivän":"päivää";break;case"M":return a?"kuukauden":"kuukausi";case"MM":o=a?"kuukauden":"kuukautta";break;case"y":return a?"vuoden":"vuosi";case"yy":o=a?"vuoden":"vuotta"}return o=function(e,i){return e<10?i?r[e]:t[e]:e}(e,a)+" "+o}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:i,ss:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,r=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i];e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:t,monthsShortRegex:t,monthsStrictRegex:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,monthsShortStrictRegex:/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),r="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,i){return e?/-MMM-/.test(i)?r[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","Márt","Aib","Beal","Meith","Iúil","Lún","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],weekdaysShort:["Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],weekdaysMin:["Do","Lu","Má","Cé","Dé","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d míonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r,i){var n={s:["थोडया सॅकंडांनी","थोडे सॅकंड"],ss:[e+" सॅकंडांनी",e+" सॅकंड"],m:["एका मिणटान","एक मिनूट"],mm:[e+" मिणटांनी",e+" मिणटां"],h:["एका वरान","एक वर"],hh:[e+" वरांनी",e+" वरां"],d:["एका दिसान","एक दीस"],dd:[e+" दिसांनी",e+" दीस"],M:["एका म्हयन्यान","एक म्हयनो"],MM:[e+" म्हयन्यानी",e+" म्हयने"],y:["एका वर्सान","एक वर्स"],yy:[e+" वर्सांनी",e+" वर्सां"]};return i?n[r][0]:n[r][1]}e.defineLocale("gom-deva",{months:{standalone:"जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),format:"जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार".split("_"),weekdaysShort:"आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.".split("_"),weekdaysMin:"आ_सो_मं_बु_ब्रे_सु_शे".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [वाजतां]",LTS:"A h:mm:ss [वाजतां]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [वाजतां]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [वाजतां]",llll:"ddd, D MMM YYYY, A h:mm [वाजतां]"},calendar:{sameDay:"[आयज] LT",nextDay:"[फाल्यां] LT",nextWeek:"[फुडलो] dddd[,] LT",lastDay:"[काल] LT",lastWeek:"[फाटलो] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s आदीं",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(वेर)/,ordinal:function(e,t){switch(t){case"D":return e+"वेर";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/राती|सकाळीं|दनपारां|सांजे/,meridiemHour:function(e,t){return 12===e&&(e=0),"राती"===t?e<4?e:e+12:"सकाळीं"===t?e:"दनपारां"===t?e>12?e:e+12:"सांजे"===t?e+12:void 0},meridiem:function(e,t,r){return e<4?"राती":e<12?"सकाळीं":e<16?"दनपारां":e<20?"सांजे":"राती"}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r,i){var n={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return i?n[r][0]:n[r][1]}e.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,t){switch(t){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,t){return 12===e&&(e=0),"rati"===t?e<4?e:e+12:"sokallim"===t?e:"donparam"===t?e>12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,r){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},r={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પહેલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(e){return r[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,r){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,r){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?r?'לפנה"צ':"לפני הצהריים":e<18?r?'אחה"צ':"אחרי הצהריים":"בערב"}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},r={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},i=[/^जन/i,/^फ़र|फर/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सितं|सित/i,/^अक्टू/i,/^नव|नवं/i,/^दिसं|दिस/i];e.defineLocale("hi",{months:{format:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),standalone:"जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर".split("_")},monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},monthsParse:i,longMonthsParse:i,shortMonthsParse:[/^जन/i,/^फ़र/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सित/i,/^अक्टू/i,/^नव/i,/^दिस/i],monthsRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsShortRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsStrictRegex:/^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,monthsShortStrictRegex:/^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return r[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,r){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r){var i=e+" ";switch(r){case"ss":return i+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return i+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return i+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return i+=1===e?"dan":"dana";case"MM":return i+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return i+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[prošlu] [nedjelju] [u] LT";case 3:return"[prošlu] [srijedu] [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function r(e,t,r,i){var n=e;switch(r){case"s":return i||t?"néhány másodperc":"néhány másodperce";case"ss":return n+(i||t)?" másodperc":" másodperce";case"m":return"egy"+(i||t?" perc":" perce");case"mm":return n+(i||t?" perc":" perce");case"h":return"egy"+(i||t?" óra":" órája");case"hh":return n+(i||t?" óra":" órája");case"d":return"egy"+(i||t?" nap":" napja");case"dd":return n+(i||t?" nap":" napja");case"M":return"egy"+(i||t?" hónap":" hónapja");case"MM":return n+(i||t?" hónap":" hónapja");case"y":return"egy"+(i||t?" év":" éve");case"yy":return n+(i||t?" év":" éve")}return""}function i(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,r){return e<12?!0===r?"de":"DE":!0===r?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return i.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return i.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,r){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e){return e%100==11||e%10!=1}function r(e,r,i,n){var a=e+" ";switch(i){case"s":return r||n?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return t(e)?a+(r||n?"sekúndur":"sekúndum"):a+"sekúnda";case"m":return r?"mínúta":"mínútu";case"mm":return t(e)?a+(r||n?"mínútur":"mínútum"):r?a+"mínúta":a+"mínútu";case"hh":return t(e)?a+(r||n?"klukkustundir":"klukkustundum"):a+"klukkustund";case"d":return r?"dagur":n?"dag":"degi";case"dd":return t(e)?r?a+"dagar":a+(n?"daga":"dögum"):r?a+"dagur":a+(n?"dag":"degi");case"M":return r?"mánuður":n?"mánuð":"mánuði";case"MM":return t(e)?r?a+"mánuðir":a+(n?"mánuði":"mánuðum"):r?a+"mánuður":a+(n?"mánuð":"mánuði");case"y":return r||n?"ár":"ári";case"yy":return t(e)?a+(r||n?"ár":"árum"):a+(r||n?"ár":"ári")}}e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:r,ss:r,m:r,mm:r,h:"klukkustund",hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(e,t){return"元"===t[1]?1:parseInt(t[1]||e,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,r){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()!==e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,t){switch(t){case"y":return 1===e?"元年":e+"年";case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,r){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ka",{months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,(function(e,t,r){return"ი"===r?t+"ში":t+r+"ში"}))},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):e},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},r={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,r){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(e){return r[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},r={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(e){return r[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,r){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,r){return e<12?"오전":"오후"}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},r={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},i=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:i,monthsShort:i,weekdays:"یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌".split("_"),weekdaysShort:"یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره‌|به‌یانی/,isPM:function(e){return/ئێواره‌/.test(e)},meridiem:function(e,t,r){return e<12?"به‌یانی":"ئێواره‌"},calendar:{sameDay:"[ئه‌مرۆ كاتژمێر] LT",nextDay:"[به‌یانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له‌ %s",past:"%s",s:"چه‌ند چركه‌یه‌ك",ss:"چركه‌ %d",m:"یه‌ك خوله‌ك",mm:"%d خوله‌ك",h:"یه‌ك كاتژمێر",hh:"%d كاتژمێر",d:"یه‌ك ڕۆژ",dd:"%d ڕۆژ",M:"یه‌ك مانگ",MM:"%d مانگ",y:"یه‌ك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return r[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r,i){var n={s:["çend sanîye","çend sanîyeyan"],ss:[e+" sanîye",e+" sanîyeyan"],m:["deqîqeyek","deqîqeyekê"],mm:[e+" deqîqe",e+" deqîqeyan"],h:["saetek","saetekê"],hh:[e+" saet",e+" saetan"],d:["rojek","rojekê"],dd:[e+" roj",e+" rojan"],w:["hefteyek","hefteyekê"],ww:[e+" hefte",e+" hefteyan"],M:["mehek","mehekê"],MM:[e+" meh",e+" mehan"],y:["salek","salekê"],yy:[e+" sal",e+" salan"]};return t?n[r][0]:n[r][1]}e.defineLocale("ku-kmr",{months:"Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar".split("_"),monthsShort:"Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber".split("_"),monthsParseExact:!0,weekdays:"Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî".split("_"),weekdaysShort:"Yek_Du_Sê_Çar_Pên_În_Şem".split("_"),weekdaysMin:"Ye_Du_Sê_Ça_Pê_În_Şe".split("_"),meridiem:function(e,t,r){return e<12?r?"bn":"BN":r?"pn":"PN"},meridiemParse:/bn|BN|pn|PN/,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM[a] YYYY[an]",LLL:"Do MMMM[a] YYYY[an] HH:mm",LLLL:"dddd, Do MMMM[a] YYYY[an] HH:mm",ll:"Do MMM[.] YYYY[an]",lll:"Do MMM[.] YYYY[an] HH:mm",llll:"ddd[.], Do MMM[.] YYYY[an] HH:mm"},calendar:{sameDay:"[Îro di saet] LT [de]",nextDay:"[Sibê di saet] LT [de]",nextWeek:"dddd [di saet] LT [de]",lastDay:"[Duh di saet] LT [de]",lastWeek:"dddd[a borî di saet] LT [de]",sameElse:"L"},relativeTime:{future:"di %s de",past:"berî %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,w:t,ww:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(?:yê|ê|\.)/,ordinal:function(e,t){var r=t.toLowerCase();return r.includes("w")||r.includes("m")?e+".":e+function(e){var t=(e=""+e).substring(e.length-1),r=e.length>1?e.substring(e.length-2):"";return 12==r||13==r||"2"!=t&&"3"!=t&&"50"!=r&&"70"!=t&&"80"!=t?"ê":"yê"}(e)},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r,i){var n={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?n[r][0]:n[r][1]}function r(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10;return r(0===t?e/10:t)}if(e<1e4){for(;e>=10;)e/=10;return r(e)}return r(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return r(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return r(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,r){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function r(e,t,r,i){return t?n(r)[0]:i?n(r)[1]:n(r)[2]}function i(e){return e%10==0||e>10&&e<20}function n(e){return t[e].split("_")}function a(e,t,a,o){var s=e+" ";return 1===e?s+r(0,t,a[0],o):t?s+(i(e)?n(a)[1]:n(a)[0]):o?s+n(a)[1]:s+(i(e)?n(a)[1]:n(a)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,r,i){return t?"kelios sekundės":i?"kelių sekundžių":"kelias sekundes"},ss:a,m:r,mm:a,h:r,hh:a,d:r,dd:a,M:r,MM:a,y:r,yy:a},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function r(e,t,r){return r?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function i(e,i,n){return e+" "+r(t[n],e,i)}function n(e,i,n){return r(t[n],e,i)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:i,m:n,mm:i,h:n,hh:i,d:n,dd:i,M:n,MM:i,y:n,yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,r,i){var n=t.words[i];return 1===i.length?r?n[0]:n[1]:e+" "+t.correctGrammaticalCase(e,n)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,r=e%100;return 0===e?e+"-ев":0===r?e+"-ен":r>10&&r<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,r){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r,i){switch(r){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,r){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},r={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function i(e,t,r,i){var n="";if(t)switch(r){case"s":n="काही सेकंद";break;case"ss":n="%d सेकंद";break;case"m":n="एक मिनिट";break;case"mm":n="%d मिनिटे";break;case"h":n="एक तास";break;case"hh":n="%d तास";break;case"d":n="एक दिवस";break;case"dd":n="%d दिवस";break;case"M":n="एक महिना";break;case"MM":n="%d महिने";break;case"y":n="एक वर्ष";break;case"yy":n="%d वर्षे"}else switch(r){case"s":n="काही सेकंदां";break;case"ss":n="%d सेकंदां";break;case"m":n="एका मिनिटा";break;case"mm":n="%d मिनिटां";break;case"h":n="एका तासा";break;case"hh":n="%d तासां";break;case"d":n="एका दिवसा";break;case"dd":n="%d दिवसां";break;case"M":n="एका महिन्या";break;case"MM":n="%d महिन्यां";break;case"y":n="एका वर्षा";break;case"yy":n="%d वर्षां"}return n.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:i,ss:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return r[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,meridiemHour:function(e,t){return 12===e&&(e=0),"पहाटे"===t||"सकाळी"===t?e:"दुपारी"===t||"सायंकाळी"===t||"रात्री"===t?e>=12?e:e+12:void 0},meridiem:function(e,t,r){return e>=0&&e<6?"पहाटे":e<12?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,r){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,r){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},r={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(e){return r[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"én time",hh:"%d timer",d:"én dag",dd:"%d dager",w:"én uke",ww:"%d uker",M:"én måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},r={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return r[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,r){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),r="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),i=[/^jan/i,/^feb/i,/^(maart|mrt\.?)$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],n=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,i){return e?/-MMM-/.test(i)?r[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",w:"één week",ww:"%d weken",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),r="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),i=[/^jan/i,/^feb/i,/^(maart|mrt\.?)$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],n=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,i){return e?/-MMM-/.test(i)?r[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._må._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",w:"ei veke",ww:"%d veker",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("oc-lnc",{months:{standalone:"genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),format:"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[uèi a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[ièr a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var r=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(r="a"),e+r},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},r={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(e){return r[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,r){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),r="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),i=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^paź/i,/^lis/i,/^gru/i];function n(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function a(e,t,r){var i=e+" ";switch(r){case"ss":return i+(n(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return i+(n(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return i+(n(e)?"godziny":"godzin");case"ww":return i+(n(e)?"tygodnie":"tygodni");case"MM":return i+(n(e)?"miesiące":"miesięcy");case"yy":return i+(n(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,i){return e?/D MMMM/.test(i)?r[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:a,m:a,mm:a,h:a,hh:a,d:"1 dzień",dd:"%d dni",w:"tydzień",ww:a,M:"miesiąc",MM:a,y:"rok",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",invalidDate:"Data inválida"})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r){var i=" ";return(e%100>=20||e>=100&&e%100==0)&&(i=" de "),e+i+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"săptămâni",MM:"luni",yy:"ani"}[r]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,w:"o săptămână",ww:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r){var i,n;return"m"===r?t?"минута":"минуту":e+" "+(i=+e,n={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",ww:"неделя_недели_недель",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[r].split("_"),i%10==1&&i%100!=11?n[0]:i%10>=2&&i%10<=4&&(i%100<10||i%100>=20)?n[1]:n[2])}var r=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:r,longMonthsParse:r,shortMonthsParse:r,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,w:"неделя",ww:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,r){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],r=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:r,weekdaysShort:r,weekdaysMin:r,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,r){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,r){return e>11?r?"ප.ව.":"පස් වරු":r?"පෙ.ව.":"පෙර වරු"}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),r="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function i(e){return e>1&&e<5}function n(e,t,r,n){var a=e+" ";switch(r){case"s":return t||n?"pár sekúnd":"pár sekundami";case"ss":return t||n?a+(i(e)?"sekundy":"sekúnd"):a+"sekundami";case"m":return t?"minúta":n?"minútu":"minútou";case"mm":return t||n?a+(i(e)?"minúty":"minút"):a+"minútami";case"h":return t?"hodina":n?"hodinu":"hodinou";case"hh":return t||n?a+(i(e)?"hodiny":"hodín"):a+"hodinami";case"d":return t||n?"deň":"dňom";case"dd":return t||n?a+(i(e)?"dni":"dní"):a+"dňami";case"M":return t||n?"mesiac":"mesiacom";case"MM":return t||n?a+(i(e)?"mesiace":"mesiacov"):a+"mesiacmi";case"y":return t||n?"rok":"rokom";case"yy":return t||n?a+(i(e)?"roky":"rokov"):a+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:r,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r,i){var n=e+" ";switch(r){case"s":return t||i?"nekaj sekund":"nekaj sekundami";case"ss":return n+=1===e?t?"sekundo":"sekundi":2===e?t||i?"sekundi":"sekundah":e<5?t||i?"sekunde":"sekundah":"sekund";case"m":return t?"ena minuta":"eno minuto";case"mm":return n+=1===e?t?"minuta":"minuto":2===e?t||i?"minuti":"minutama":e<5?t||i?"minute":"minutami":t||i?"minut":"minutami";case"h":return t?"ena ura":"eno uro";case"hh":return n+=1===e?t?"ura":"uro":2===e?t||i?"uri":"urama":e<5?t||i?"ure":"urami":t||i?"ur":"urami";case"d":return t||i?"en dan":"enim dnem";case"dd":return n+=1===e?t||i?"dan":"dnem":2===e?t||i?"dni":"dnevoma":t||i?"dni":"dnevi";case"M":return t||i?"en mesec":"enim mesecem";case"MM":return n+=1===e?t||i?"mesec":"mesecem":2===e?t||i?"meseca":"mesecema":e<5?t||i?"mesece":"meseci":t||i?"mesecev":"meseci";case"y":return t||i?"eno leto":"enim letom";case"yy":return n+=1===e?t||i?"leto":"letom":2===e?t||i?"leti":"letoma":e<5?t||i?"leta":"leti":t||i?"let":"leti"}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,r){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],d:["jedan dan","jednog dana"],dd:["dan","dana","dana"],M:["jedan mesec","jednog meseca"],MM:["mesec","meseca","meseci"],y:["jednu godinu","jedne godine"],yy:["godinu","godine","godina"]},correctGrammaticalCase:function(e,t){return e%10>=1&&e%10<=4&&(e%100<10||e%100>=20)?e%10==1?t[0]:t[1]:t[2]},translate:function(e,r,i,n){var a,o=t.words[i];return 1===i.length?"y"===i&&r?"jedna godina":n||r?o[0]:o[1]:(a=t.correctGrammaticalCase(e,o),"yy"===i&&r&&"godinu"===a?e+" godina":e+" "+a)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:t.translate,dd:t.translate,M:t.translate,MM:t.translate,y:t.translate,yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једног минута"],mm:["минут","минута","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],d:["један дан","једног дана"],dd:["дан","дана","дана"],M:["један месец","једног месеца"],MM:["месец","месеца","месеци"],y:["једну годину","једне године"],yy:["годину","године","година"]},correctGrammaticalCase:function(e,t){return e%10>=1&&e%10<=4&&(e%100<10||e%100>=20)?e%10==1?t[0]:t[1]:t[2]},translate:function(e,r,i,n){var a,o=t.words[i];return 1===i.length?"y"===i&&r?"једна година":n||r?o[0]:o[1]:(a=t.correctGrammaticalCase(e,o),"yy"===i&&r&&"годину"===a?e+" година":e+" "+a)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:t.translate,dd:t.translate,M:t.translate,MM:t.translate,y:t.translate,yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,r){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?":e":1===t||2===t?":a":":e")},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},r={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(e){return r[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,r){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t||"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,r){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:{format:"январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри".split("_"),standalone:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_")},monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Фардо соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,r){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,r){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",w:"1 สัปดาห์",ww:"%d สัปดาห์",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'ünji",4:"'ünji",100:"'ünji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};e.defineLocale("tk",{months:"Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekdays:"Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe".split("_"),weekdaysShort:"Ýek_Duş_Siş_Çar_Pen_Ann_Şen".split("_"),weekdaysMin:"Ýk_Dş_Sş_Çr_Pn_An_Şn".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[düýn] LT",lastWeek:"[geçen] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(e,r){switch(r){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'unjy";var i=e%10;return e+(t[i]||t[e%100-i]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function r(e,r,i,n){var a=function(e){var r=Math.floor(e%1e3/100),i=Math.floor(e%100/10),n=e%10,a="";return r>0&&(a+=t[r]+"vatlh"),i>0&&(a+=(""!==a?" ":"")+t[i]+"maH"),n>0&&(a+=(""!==a?" ":"")+t[n]),""===a?"pagh":a}(e);switch(i){case"ss":return a+" lup";case"mm":return a+" tup";case"hh":return a+" rep";case"dd":return a+" jaj";case"MM":return a+" jar";case"yy":return a+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:r,m:"wa’ tup",mm:r,h:"wa’ rep",hh:r,d:"wa’ jaj",dd:r,M:"wa’ jar",MM:r,y:"wa’ DIS",yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pzt_Sal_Çar_Per_Cum_Cmt".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),meridiem:function(e,t,r){return e<12?r?"öö":"ÖÖ":r?"ös":"ÖS"},meridiemParse:/öö|ÖÖ|ös|ÖS/,isPM:function(e){return"ös"===e||"ÖS"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,r){switch(r){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var i=e%10;return e+(t[i]||t[e%100-i]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r,i){var n={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return i||t?n[r][0]:n[r][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,r){return e>11?r?"d'o":"D'O":r?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,r){var i=100*e+t;return i<600?"يېرىم كېچە":i<900?"سەھەر":i<1130?"چۈشتىن بۇرۇن":i<1230?"چۈش":i<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +function t(e,t,r){var i,n;return"m"===r?t?"хвилина":"хвилину":"h"===r?t?"година":"годину":e+" "+(i=+e,n={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[r].split("_"),i%10==1&&i%100!=11?n[0]:i%10>=2&&i%10<=4&&(i%100<10||i%100>=20)?n[1]:n[2])}function r(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var r={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?r.nominative.slice(1,7).concat(r.nominative.slice(0,1)):e?r[/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative"][e.day()]:r.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:r("[Сьогодні "),nextDay:r("[Завтра "),lastDay:r("[Вчора "),nextWeek:r("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return r("[Минулої] dddd [").call(this);case 1:case 2:case 4:return r("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,r){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],r=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:r,weekdaysShort:r,weekdaysMin:r,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,r){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,r){return e<12?r?"sa":"SA":r?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",w:"một tuần",ww:"%d tuần",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,r){var i=100*e+t;return i<600?"凌晨":i<900?"早上":i<1130?"上午":i<1230?"中午":i<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:function(e){return e.week()!==this.week()?"[下]dddLT":"[本]dddLT"},lastDay:"[昨天]LT",lastWeek:function(e){return this.week()!==e.week()?"[上]dddLT":"[本]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",w:"1 周",ww:"%d 周",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,r){var i=100*e+t;return i<600?"凌晨":i<900?"早上":i<1200?"上午":1200===i?"中午":i<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,r){var i=100*e+t;return i<600?"凌晨":i<900?"早上":i<1130?"上午":i<1230?"中午":i<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(r(0))},function(e,t,r){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,r){var i=100*e+t;return i<600?"凌晨":i<900?"早上":i<1130?"上午":i<1230?"中午":i<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(r(0))},function(e,t,r){"use strict";(function(t){var i,n=(i=r(262))&&"object"==typeof i&&"default"in i?i.default:i;e.exports=function(e){for(var r,i=(r=e,n.atob?n.atob(r):t.from(r,"base64").toString("binary")),a=new Uint8Array(i.length),o=0;o0?o-4:o;for(r=0;r>16&255,d[l++]=t>>8&255,d[l++]=255&t;2===s&&(t=n[e.charCodeAt(r)]<<2|n[e.charCodeAt(r+1)]>>4,d[l++]=255&t);1===s&&(t=n[e.charCodeAt(r)]<<10|n[e.charCodeAt(r+1)]<<4|n[e.charCodeAt(r+2)]>>2,d[l++]=t>>8&255,d[l++]=255&t);return d},t.fromByteArray=function(e){for(var t,r=e.length,n=r%3,a=[],o=0,s=r-n;os?s:o+16383));1===n?(t=e[r-1],a.push(i[t>>2]+i[t<<4&63]+"==")):2===n&&(t=(e[r-2]<<8)+e[r-1],a.push(i[t>>10]+i[t>>4&63]+i[t<<2&63]+"="));return a.join("")};for(var i=[],n=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,d=o.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function l(e,t,r){for(var n,a,o=[],s=t;s>18&63]+i[a>>12&63]+i[a>>6&63]+i[63&a]);return o.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},function(e,t){ +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +t.read=function(e,t,r,i,n){var a,o,s=8*n-i-1,d=(1<>1,l=-7,h=r?n-1:0,c=r?-1:1,f=e[t+h];for(h+=c,a=f&(1<<-l)-1,f>>=-l,l+=s;l>0;a=256*a+e[t+h],h+=c,l-=8);for(o=a&(1<<-l)-1,a>>=-l,l+=i;l>0;o=256*o+e[t+h],h+=c,l-=8);if(0===a)a=1-u;else{if(a===d)return o?NaN:1/0*(f?-1:1);o+=Math.pow(2,i),a-=u}return(f?-1:1)*o*Math.pow(2,a-i)},t.write=function(e,t,r,i,n,a){var o,s,d,u=8*a-n-1,l=(1<>1,c=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,f=i?0:a-1,m=i?1:-1,_=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(d=Math.pow(2,-o))<1&&(o--,d*=2),(t+=o+h>=1?c/d:c*Math.pow(2,1-h))*d>=2&&(o++,d/=2),o+h>=l?(s=0,o=l):o+h>=1?(s=(t*d-1)*Math.pow(2,n),o+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,n),o=0));n>=8;e[r+f]=255&s,f+=m,s/=256,n-=8);for(o=o<0;e[r+f]=255&o,f+=m,o/=256,u-=8);e[r+f-m]|=128*_}},function(e,t,r){(function(t){var r;r="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{},e.exports=r}).call(this,r(14))},function(e,t,r){var i=r(48),n=r(264);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[e.i,n,""]]);var a={insert:"head",singleton:!1};i(n,a);e.exports=n.locals||{}},function(e,t,r){(t=r(49)(!1)).push([e.i,"\ninput[type=range] {\n -webkit-appearance: none; /*清除系统默认样式*/\n width: 100%;\n background: linear-gradient(#fff, #fff) no-repeat, #506676; /*设置左边颜色为#61bd12,右边颜色为#ddd*/\n background-size: 0% 100%; /*设置左右宽度比例*/\n height: 3px; /*横条的高度*/\n}\n\n\ninput[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n height: 10px;\n width: 10px;\n /*margin-top: -2px; !*使滑块超出轨道部分的偏移量相等*!*/\n background: #ffffff;\n border-radius: 50%; /*外观设置为圆形*/\n}\n\n\n.speed-switch .li {\n list-style: none;\n}\n",""]),e.exports=t},function(e,t,r){var i=r(48),n=r(266);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[e.i,n,""]]);var a={insert:"head",singleton:!1};i(n,a);e.exports=n.locals||{}},function(e,t,r){(t=r(49)(!1)).push([e.i,"\n.speed-switch ul {\n background-color: rgba(43, 51, 63, .7);\n position: absolute;\n top: -96px;\n padding: 0;\n width: 50px;\n margin: 0;\n}\n\n.speed-switch li {\n list-style: none;\n line-height: 24px;\n}\n\n.speed-switch li:hover {\n background-color: rgba(115, 133, 159, .5);\n}\n\n.speed-switch-active {\n color: #2b333f;\n background-color: #FFF;\n}\n\n\n",""]),e.exports=t},function(e,t,r){var i=r(48),n=r(268);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[e.i,n,""]]);var a={insert:"head",singleton:!1};i(n,a);e.exports=n.locals||{}},function(e,t,r){var i=r(49),n=r(269),a=r(270),o=r(271),s=r(272);t=i(!1);var d=n(a),u=n(o),l=n(s);t.push([e.i,'@font-face {\n font-family: "iconfont"; /* Project id 3440216 */\n src: url('+d+") format('woff2'),\n url("+u+") format('woff'),\n url("+l+') format(\'truetype\');\n}\n\n.iconfont {\n font-family: "iconfont" !important;\n font-size: 16px;\n font-style: normal;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.icon-xiangji:before {\n content: "\\e62e";\n}\n\n.icon-luxiang2:before {\n content: "\\e777";\n}\n\n.icon-xiangji1:before {\n content: "\\e6e5";\n}\n\n.icon-luxiang:before {\n content: "\\e62c";\n}\n\n.icon-snapshot:before {\n content: "\\e9f2";\n}\n\n.icon-shengyin1:before {\n content: "\\e8c0";\n}\n\n.icon-xiaoping:before {\n content: "\\e8bf";\n}\n\n.icon-jingyin:before {\n content: "\\e8bb";\n}\n\n.icon-quanping1:before {\n content: "\\e8ba";\n}\n\n.icon-bofang:before {\n content: "\\e8ad";\n}\n\n.icon-zanting:before {\n content: "\\e8ab";\n}\n\n',""]),e.exports=t},function(e,t,r){"use strict";e.exports=function(e,t){return t||(t={}),"string"!=typeof(e=e&&e.__esModule?e.default:e)?e:(/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e)}},function(e,t,r){"use strict";r.r(t),t.default="data:font/woff2;base64,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"},function(e,t,r){"use strict";r.r(t),t.default="data:font/woff;base64,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"},function(e,t,r){"use strict";r.r(t),t.default="data:font/ttf;base64,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"},function(e,t,r){"use strict";var i=r(7).Buffer,n=r(274).Transform;function a(e){n.call(this),this._block=i.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}r(6)(a,n),a.prototype._transform=function(e,t,r){var i=null;try{this.update(e,t)}catch(e){i=e}r(i)},a.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},a.prototype.update=function(e,t){if(function(e,t){if(!i.isBuffer(e)&&"string"!=typeof e)throw new TypeError(t+" must be a string or a buffer")}(e,"Data"),this._finalized)throw new Error("Digest already called");i.isBuffer(e)||(e=i.from(e,t));for(var r=this._block,n=0;this._blockOffset+e.length-n>=this._blockSize;){for(var a=this._blockOffset;a0;++o)this._length[o]+=s,(s=this._length[o]/4294967296|0)>0&&(this._length[o]-=4294967296*s);return this},a.prototype._update=function(){throw new Error("_update is not implemented")},a.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},a.prototype._digest=function(){throw new Error("_digest is not implemented")},e.exports=a},function(e,t,r){(t=e.exports=r(72)).Stream=t,t.Readable=t,t.Writable=r(76),t.Duplex=r(27),t.Transform=r(77),t.PassThrough=r(280),t.finished=r(52),t.pipeline=r(281)},function(e,t){},function(e,t,r){"use strict";function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function n(e){for(var t=1;t0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return d.alloc(0);for(var t,r,i,n=d.allocUnsafe(e>>>0),a=this.head,o=0;a;)t=a.data,r=n,i=o,d.prototype.copy.call(t,r,i),o+=a.data.length,a=a.next;return n}},{key:"consume",value:function(e,t){var r;return en.length?n.length:e;if(a===n.length?i+=n:i+=n.slice(0,e),0==(e-=a)){a===n.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=n.slice(a));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(e){var t=d.allocUnsafe(e),r=this.head,i=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var n=r.data,a=e>n.length?n.length:e;if(n.copy(t,t.length-e,0,a),0==(e-=a)){a===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(a));break}++i}return this.length-=i,t}},{key:l,value:function(e,t){return u(this,n(n({},t),{},{depth:0,customInspect:!1}))}}])&&o(t.prototype,r),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}()},function(e,t){},function(e,t,r){"use strict";(function(t){var i;function n(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var a=r(52),o=Symbol("lastResolve"),s=Symbol("lastReject"),d=Symbol("error"),u=Symbol("ended"),l=Symbol("lastPromise"),h=Symbol("handlePromise"),c=Symbol("stream");function f(e,t){return{value:e,done:t}}function m(e){var t=e[o];if(null!==t){var r=e[c].read();null!==r&&(e[l]=null,e[o]=null,e[s]=null,t(f(r,!1)))}}function _(e){t.nextTick(m,e)}var p=Object.getPrototypeOf((function(){})),y=Object.setPrototypeOf((n(i={get stream(){return this[c]},next:function(){var e=this,r=this[d];if(null!==r)return Promise.reject(r);if(this[u])return Promise.resolve(f(void 0,!0));if(this[c].destroyed)return new Promise((function(r,i){t.nextTick((function(){e[d]?i(e[d]):r(f(void 0,!0))}))}));var i,n=this[l];if(n)i=new Promise(function(e,t){return function(r,i){e.then((function(){t[u]?r(f(void 0,!0)):t[h](r,i)}),i)}}(n,this));else{var a=this[c].read();if(null!==a)return Promise.resolve(f(a,!1));i=new Promise(this[h])}return this[l]=i,i}},Symbol.asyncIterator,(function(){return this})),n(i,"return",(function(){var e=this;return new Promise((function(t,r){e[c].destroy(null,(function(e){e?r(e):t(f(void 0,!0))}))}))})),i),p);e.exports=function(e){var t,r=Object.create(y,(n(t={},c,{value:e,writable:!0}),n(t,o,{value:null,writable:!0}),n(t,s,{value:null,writable:!0}),n(t,d,{value:null,writable:!0}),n(t,u,{value:e._readableState.endEmitted,writable:!0}),n(t,h,{value:function(e,t){var i=r[c].read();i?(r[l]=null,r[o]=null,r[s]=null,e(f(i,!1))):(r[o]=e,r[s]=t)},writable:!0}),t));return r[l]=null,a(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=r[s];return null!==t&&(r[l]=null,r[o]=null,r[s]=null,t(e)),void(r[d]=e)}var i=r[o];null!==i&&(r[l]=null,r[o]=null,r[s]=null,i(f(void 0,!0))),r[u]=!0})),e.on("readable",_.bind(null,r)),r}}).call(this,r(11))},function(e,t){e.exports=function(){throw new Error("Readable.from is not available in the browser")}},function(e,t,r){"use strict";e.exports=n;var i=r(77);function n(e){if(!(this instanceof n))return new n(e);i.call(this,e)}r(6)(n,i),n.prototype._transform=function(e,t,r){r(null,e)}},function(e,t,r){"use strict";var i;var n=r(26).codes,a=n.ERR_MISSING_ARGS,o=n.ERR_STREAM_DESTROYED;function s(e){if(e)throw e}function d(e,t,n,a){a=function(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}(a);var s=!1;e.on("close",(function(){s=!0})),void 0===i&&(i=r(52)),i(e,{readable:t,writable:n},(function(e){if(e)return a(e);s=!0,a()}));var d=!1;return function(t){if(!s&&!d)return d=!0,function(e){return e.setHeader&&"function"==typeof e.abort}(e)?e.abort():"function"==typeof e.destroy?e.destroy():void a(t||new o("pipe"))}}function u(e){e()}function l(e,t){return e.pipe(t)}function h(e){return e.length?"function"!=typeof e[e.length-1]?s:e.pop():s}e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r0,(function(e){i||(i=e),e&&o.forEach(u),a||(o.forEach(u),n(i))}))}));return t.reduce(l)}},function(e,t,r){"use strict";var i=r(7).Buffer,n=r(283).Transform;function a(e){n.call(this),this._block=i.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}r(6)(a,n),a.prototype._transform=function(e,t,r){var i=null;try{this.update(e,t)}catch(e){i=e}r(i)},a.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},a.prototype.update=function(e,t){if(function(e,t){if(!i.isBuffer(e)&&"string"!=typeof e)throw new TypeError(t+" must be a string or a buffer")}(e,"Data"),this._finalized)throw new Error("Digest already called");i.isBuffer(e)||(e=i.from(e,t));for(var r=this._block,n=0;this._blockOffset+e.length-n>=this._blockSize;){for(var a=this._blockOffset;a0;++o)this._length[o]+=s,(s=this._length[o]/4294967296|0)>0&&(this._length[o]-=4294967296*s);return this},a.prototype._update=function(){throw new Error("_update is not implemented")},a.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},a.prototype._digest=function(){throw new Error("_digest is not implemented")},e.exports=a},function(e,t,r){(t=e.exports=r(78)).Stream=t,t.Readable=t,t.Writable=r(82),t.Duplex=r(29),t.Transform=r(83),t.PassThrough=r(289),t.finished=r(54),t.pipeline=r(290)},function(e,t){},function(e,t,r){"use strict";function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function n(e){for(var t=1;t0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return d.alloc(0);for(var t,r,i,n=d.allocUnsafe(e>>>0),a=this.head,o=0;a;)t=a.data,r=n,i=o,d.prototype.copy.call(t,r,i),o+=a.data.length,a=a.next;return n}},{key:"consume",value:function(e,t){var r;return en.length?n.length:e;if(a===n.length?i+=n:i+=n.slice(0,e),0==(e-=a)){a===n.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=n.slice(a));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(e){var t=d.allocUnsafe(e),r=this.head,i=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var n=r.data,a=e>n.length?n.length:e;if(n.copy(t,t.length-e,0,a),0==(e-=a)){a===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(a));break}++i}return this.length-=i,t}},{key:l,value:function(e,t){return u(this,n(n({},t),{},{depth:0,customInspect:!1}))}}])&&o(t.prototype,r),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}()},function(e,t){},function(e,t,r){"use strict";(function(t){var i;function n(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var a=r(54),o=Symbol("lastResolve"),s=Symbol("lastReject"),d=Symbol("error"),u=Symbol("ended"),l=Symbol("lastPromise"),h=Symbol("handlePromise"),c=Symbol("stream");function f(e,t){return{value:e,done:t}}function m(e){var t=e[o];if(null!==t){var r=e[c].read();null!==r&&(e[l]=null,e[o]=null,e[s]=null,t(f(r,!1)))}}function _(e){t.nextTick(m,e)}var p=Object.getPrototypeOf((function(){})),y=Object.setPrototypeOf((n(i={get stream(){return this[c]},next:function(){var e=this,r=this[d];if(null!==r)return Promise.reject(r);if(this[u])return Promise.resolve(f(void 0,!0));if(this[c].destroyed)return new Promise((function(r,i){t.nextTick((function(){e[d]?i(e[d]):r(f(void 0,!0))}))}));var i,n=this[l];if(n)i=new Promise(function(e,t){return function(r,i){e.then((function(){t[u]?r(f(void 0,!0)):t[h](r,i)}),i)}}(n,this));else{var a=this[c].read();if(null!==a)return Promise.resolve(f(a,!1));i=new Promise(this[h])}return this[l]=i,i}},Symbol.asyncIterator,(function(){return this})),n(i,"return",(function(){var e=this;return new Promise((function(t,r){e[c].destroy(null,(function(e){e?r(e):t(f(void 0,!0))}))}))})),i),p);e.exports=function(e){var t,r=Object.create(y,(n(t={},c,{value:e,writable:!0}),n(t,o,{value:null,writable:!0}),n(t,s,{value:null,writable:!0}),n(t,d,{value:null,writable:!0}),n(t,u,{value:e._readableState.endEmitted,writable:!0}),n(t,h,{value:function(e,t){var i=r[c].read();i?(r[l]=null,r[o]=null,r[s]=null,e(f(i,!1))):(r[o]=e,r[s]=t)},writable:!0}),t));return r[l]=null,a(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=r[s];return null!==t&&(r[l]=null,r[o]=null,r[s]=null,t(e)),void(r[d]=e)}var i=r[o];null!==i&&(r[l]=null,r[o]=null,r[s]=null,i(f(void 0,!0))),r[u]=!0})),e.on("readable",_.bind(null,r)),r}}).call(this,r(11))},function(e,t){e.exports=function(){throw new Error("Readable.from is not available in the browser")}},function(e,t,r){"use strict";e.exports=n;var i=r(83);function n(e){if(!(this instanceof n))return new n(e);i.call(this,e)}r(6)(n,i),n.prototype._transform=function(e,t,r){r(null,e)}},function(e,t,r){"use strict";var i;var n=r(28).codes,a=n.ERR_MISSING_ARGS,o=n.ERR_STREAM_DESTROYED;function s(e){if(e)throw e}function d(e,t,n,a){a=function(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}(a);var s=!1;e.on("close",(function(){s=!0})),void 0===i&&(i=r(54)),i(e,{readable:t,writable:n},(function(e){if(e)return a(e);s=!0,a()}));var d=!1;return function(t){if(!s&&!d)return d=!0,function(e){return e.setHeader&&"function"==typeof e.abort}(e)?e.abort():"function"==typeof e.destroy?e.destroy():void a(t||new o("pipe"))}}function u(e){e()}function l(e,t){return e.pipe(t)}function h(e){return e.length?"function"!=typeof e[e.length-1]?s:e.pop():s}e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r0,(function(e){i||(i=e),e&&o.forEach(u),a||(o.forEach(u),n(i))}))}));return t.reduce(l)}},function(e,t,r){var i=r(6),n=r(30),a=r(7).Buffer,o=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function d(){this.init(),this._w=s,n.call(this,64,56)}function u(e){return e<<30|e>>>2}function l(e,t,r,i){return 0===e?t&r|~t&i:2===e?t&r|t&i|r&i:t^r^i}i(d,n),d.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},d.prototype._update=function(e){for(var t,r=this._w,i=0|this._a,n=0|this._b,a=0|this._c,s=0|this._d,d=0|this._e,h=0;h<16;++h)r[h]=e.readInt32BE(4*h);for(;h<80;++h)r[h]=r[h-3]^r[h-8]^r[h-14]^r[h-16];for(var c=0;c<80;++c){var f=~~(c/20),m=0|((t=i)<<5|t>>>27)+l(f,n,a,s)+d+r[c]+o[f];d=s,s=a,a=u(n),n=i,i=m}this._a=i+this._a|0,this._b=n+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=d+this._e|0},d.prototype._hash=function(){var e=a.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=d},function(e,t,r){var i=r(6),n=r(30),a=r(7).Buffer,o=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function d(){this.init(),this._w=s,n.call(this,64,56)}function u(e){return e<<5|e>>>27}function l(e){return e<<30|e>>>2}function h(e,t,r,i){return 0===e?t&r|~t&i:2===e?t&r|t&i|r&i:t^r^i}i(d,n),d.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},d.prototype._update=function(e){for(var t,r=this._w,i=0|this._a,n=0|this._b,a=0|this._c,s=0|this._d,d=0|this._e,c=0;c<16;++c)r[c]=e.readInt32BE(4*c);for(;c<80;++c)r[c]=(t=r[c-3]^r[c-8]^r[c-14]^r[c-16])<<1|t>>>31;for(var f=0;f<80;++f){var m=~~(f/20),_=u(i)+h(m,n,a,s)+d+r[f]+o[m]|0;d=s,s=a,a=l(n),n=i,i=_}this._a=i+this._a|0,this._b=n+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=d+this._e|0},d.prototype._hash=function(){var e=a.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=d},function(e,t,r){var i=r(6),n=r(84),a=r(30),o=r(7).Buffer,s=new Array(64);function d(){this.init(),this._w=s,a.call(this,64,56)}i(d,n),d.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},d.prototype._hash=function(){var e=o.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e},e.exports=d},function(e,t,r){var i=r(6),n=r(85),a=r(30),o=r(7).Buffer,s=new Array(160);function d(){this.init(),this._w=s,a.call(this,128,112)}i(d,n),d.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},d.prototype._hash=function(){var e=o.allocUnsafe(48);function t(t,r,i){e.writeInt32BE(t,i),e.writeInt32BE(r,i+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e},e.exports=d},function(e,t,r){e.exports=n;var i=r(9).EventEmitter;function n(){i.call(this)}r(6)(n,i),n.Readable=r(40),n.Writable=r(302),n.Duplex=r(303),n.Transform=r(304),n.PassThrough=r(305),n.Stream=n,n.prototype.pipe=function(e,t){var r=this;function n(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function a(){r.readable&&r.resume&&r.resume()}r.on("data",n),e.on("drain",a),e._isStdio||t&&!1===t.end||(r.on("end",s),r.on("close",d));var o=!1;function s(){o||(o=!0,e.end())}function d(){o||(o=!0,"function"==typeof e.destroy&&e.destroy())}function u(e){if(l(),0===i.listenerCount(this,"error"))throw e}function l(){r.removeListener("data",n),e.removeListener("drain",a),r.removeListener("end",s),r.removeListener("close",d),r.removeListener("error",u),e.removeListener("error",u),r.removeListener("end",l),r.removeListener("close",l),e.removeListener("close",l)}return r.on("error",u),e.on("error",u),r.on("end",l),r.on("close",l),e.on("close",l),e.emit("pipe",r),e}},function(e,t){},function(e,t,r){"use strict";var i=r(56).Buffer,n=r(298);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return i.alloc(0);for(var t,r,n,a=i.allocUnsafe(e>>>0),o=this.head,s=0;o;)t=o.data,r=a,n=s,t.copy(r,n),s+=o.data.length,o=o.next;return a},e}(),n&&n.inspect&&n.inspect.custom&&(e.exports.prototype[n.inspect.custom]=function(){var e=n.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,r){(function(e){var i=void 0!==e&&e||"undefined"!=typeof self&&self||window,n=Function.prototype.apply;function a(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new a(n.call(setTimeout,i,arguments),clearTimeout)},t.setInterval=function(){return new a(n.call(setInterval,i,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(i,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},r(300),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r(14))},function(e,t,r){(function(e,t){!function(e,r){"use strict";if(!e.setImmediate){var i,n,a,o,s,d=1,u={},l=!1,h=e.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(e);c=c&&c.setTimeout?c:e,"[object process]"==={}.toString.call(e.process)?i=function(e){t.nextTick((function(){m(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=r,t}}()?e.MessageChannel?((a=new MessageChannel).port1.onmessage=function(e){m(e.data)},i=function(e){a.port2.postMessage(e)}):h&&"onreadystatechange"in h.createElement("script")?(n=h.documentElement,i=function(e){var t=h.createElement("script");t.onreadystatechange=function(){m(e),t.onreadystatechange=null,n.removeChild(t),t=null},n.appendChild(t)}):i=function(e){setTimeout(m,0,e)}:(o="setImmediate$"+Math.random()+"$",s=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(o)&&m(+t.data.slice(o.length))},e.addEventListener?e.addEventListener("message",s,!1):e.attachEvent("onmessage",s),i=function(t){e.postMessage(o+t,"*")}),c.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r64?t=e(t):t.length<64&&(t=n.concat([t,o],64));for(var r=this._ipad=n.allocUnsafe(64),i=this._opad=n.allocUnsafe(64),s=0;s<64;s++)r[s]=54^t[s],i[s]=92^t[s];this._hash=[r]}i(s,a),s.prototype._update=function(e){this._hash.push(e)},s.prototype._final=function(){var e=this._alg(n.concat(this._hash));return this._alg(n.concat([this._opad,e]))},e.exports=s},function(e,t,r){"use strict";e.exports=r(92)},function(e,t,r){(function(t){var i,n,a=r(7).Buffer,o=r(94),s=r(95),d=r(96),u=r(97),l=t.crypto&&t.crypto.subtle,h={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},c=[];function f(){return n||(n=t.process&&t.process.nextTick?t.process.nextTick:t.queueMicrotask?t.queueMicrotask:t.setImmediate?t.setImmediate:t.setTimeout)}function m(e,t,r,i,n){return l.importKey("raw",e,{name:"PBKDF2"},!1,["deriveBits"]).then((function(e){return l.deriveBits({name:"PBKDF2",salt:t,iterations:r,hash:{name:n}},e,i<<3)})).then((function(e){return a.from(e)}))}e.exports=function(e,r,n,_,p,y){"function"==typeof p&&(y=p,p=void 0);var g=h[(p=p||"sha1").toLowerCase()];if(g&&"function"==typeof t.Promise){if(o(n,_),e=u(e,s,"Password"),r=u(r,s,"Salt"),"function"!=typeof y)throw new Error("No callback provided to pbkdf2");!function(e,t){e.then((function(e){f()((function(){t(null,e)}))}),(function(e){f()((function(){t(e)}))}))}(function(e){if(t.process&&!t.process.browser)return Promise.resolve(!1);if(!l||!l.importKey||!l.deriveBits)return Promise.resolve(!1);if(void 0!==c[e])return c[e];var r=m(i=i||a.alloc(8),i,10,128,e).then((function(){return!0})).catch((function(){return!1}));return c[e]=r,r}(g).then((function(t){return t?m(e,r,n,_,g):d(e,r,n,_,p)})),y)}else f()((function(){var t;try{t=d(e,r,n,_,p)}catch(e){return y(e)}y(null,t)}))}}).call(this,r(14))},function(e,t,r){var i=r(310),n=r(59),a=r(60),o=r(323),s=r(43);function d(e,t,r){if(e=e.toLowerCase(),a[e])return n.createCipheriv(e,t,r);if(o[e])return new i({key:t,iv:r,mode:e});throw new TypeError("invalid suite type")}function u(e,t,r){if(e=e.toLowerCase(),a[e])return n.createDecipheriv(e,t,r);if(o[e])return new i({key:t,iv:r,mode:e,decrypt:!0});throw new TypeError("invalid suite type")}t.createCipher=t.Cipher=function(e,t){var r,i;if(e=e.toLowerCase(),a[e])r=a[e].key,i=a[e].iv;else{if(!o[e])throw new TypeError("invalid suite type");r=8*o[e].key,i=o[e].iv}var n=s(t,!1,r,i);return d(e,n.key,n.iv)},t.createCipheriv=t.Cipheriv=d,t.createDecipher=t.Decipher=function(e,t){var r,i;if(e=e.toLowerCase(),a[e])r=a[e].key,i=a[e].iv;else{if(!o[e])throw new TypeError("invalid suite type");r=8*o[e].key,i=o[e].iv}var n=s(t,!1,r,i);return u(e,n.key,n.iv)},t.createDecipheriv=t.Decipheriv=u,t.listCiphers=t.getCiphers=function(){return Object.keys(o).concat(n.getCiphers())}},function(e,t,r){var i=r(21),n=r(311),a=r(6),o=r(7).Buffer,s={"des-ede3-cbc":n.CBC.instantiate(n.EDE),"des-ede3":n.EDE,"des-ede-cbc":n.CBC.instantiate(n.EDE),"des-ede":n.EDE,"des-cbc":n.CBC.instantiate(n.DES),"des-ecb":n.DES};function d(e){i.call(this);var t,r=e.mode.toLowerCase(),n=s[r];t=e.decrypt?"decrypt":"encrypt";var a=e.key;o.isBuffer(a)||(a=o.from(a)),"des-ede"!==r&&"des-ede-cbc"!==r||(a=o.concat([a,a.slice(0,8)]));var d=e.iv;o.isBuffer(d)||(d=o.from(d)),this._des=n.create({key:a,iv:d,type:t})}s.des=s["des-cbc"],s.des3=s["des-ede3-cbc"],e.exports=d,a(d,i),d.prototype._update=function(e){return o.from(this._des.update(e))},d.prototype._final=function(){return o.from(this._des.final())}},function(e,t,r){"use strict";t.utils=r(98),t.Cipher=r(58),t.DES=r(99),t.CBC=r(312),t.EDE=r(313)},function(e,t,r){"use strict";var i=r(15),n=r(6),a={};function o(e){i.equal(e.length,8,"Invalid IV length"),this.iv=new Array(8);for(var t=0;t15){var e=this.cache.slice(0,16);return this.cache=this.cache.slice(16),e}return null},c.prototype.flush=function(){for(var e=16-this.cache.length,t=a.allocUnsafe(e),r=-1;++r>o%8,e._prev=a(e._prev,r?i:n);return s}function a(e,t){var r=e.length,n=-1,a=i.allocUnsafe(e.length);for(e=i.concat([e,i.from([t])]);++n>7;return a}t.encrypt=function(e,t,r){for(var a=t.length,o=i.allocUnsafe(a),s=-1;++s>>0,0),t.writeUInt32BE(e[1]>>>0,4),t.writeUInt32BE(e[2]>>>0,8),t.writeUInt32BE(e[3]>>>0,12),t}function o(e){this.h=e,this.state=i.alloc(16,0),this.cache=i.allocUnsafe(0)}o.prototype.ghash=function(e){for(var t=-1;++t0;t--)i[t]=i[t]>>>1|(1&i[t-1])<<31;i[0]=i[0]>>>1,r&&(i[0]=i[0]^225<<24)}this.state=a(n)},o.prototype.update=function(e){var t;for(this.cache=i.concat([this.cache,e]);this.cache.length>=16;)t=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(t)},o.prototype.final=function(e,t){return this.cache.length&&this.ghash(i.concat([this.cache,n],16)),this.ghash(a([0,e,0,t])),this.state},e.exports=o},function(e,t,r){var i=r(103),n=r(7).Buffer,a=r(60),o=r(104),s=r(21),d=r(42),u=r(43);function l(e,t,r){s.call(this),this._cache=new h,this._last=void 0,this._cipher=new d.AES(t),this._prev=n.from(r),this._mode=e,this._autopadding=!0}function h(){this.cache=n.allocUnsafe(0)}function c(e,t,r){var s=a[e.toLowerCase()];if(!s)throw new TypeError("invalid suite type");if("string"==typeof r&&(r=n.from(r)),"GCM"!==s.mode&&r.length!==s.iv)throw new TypeError("invalid iv length "+r.length);if("string"==typeof t&&(t=n.from(t)),t.length!==s.key/8)throw new TypeError("invalid key length "+t.length);return"stream"===s.type?new o(s.module,t,r,!0):"auth"===s.type?new i(s.module,t,r,!0):new l(s.module,t,r)}r(6)(l,s),l.prototype._update=function(e){var t,r;this._cache.add(e);for(var i=[];t=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,t),i.push(r);return n.concat(i)},l.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return function(e){var t=e[15];if(t<1||t>16)throw new Error("unable to decrypt data");var r=-1;for(;++r16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t}else if(this.cache.length>=16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t;return null},h.prototype.flush=function(){if(this.cache.length)return this.cache},t.createDecipher=function(e,t){var r=a[e.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=u(t,!1,r.key,r.iv);return c(e,i.key,i.iv)},t.createDecipheriv=c},function(e,t){t["des-ecb"]={key:8,iv:0},t["des-cbc"]=t.des={key:8,iv:8},t["des-ede3-cbc"]=t.des3={key:24,iv:8},t["des-ede3"]={key:24,iv:0},t["des-ede-cbc"]={key:16,iv:8},t["des-ede"]={key:16,iv:0}},function(e,t,r){(function(e){var i=r(105),n=r(327),a=r(328);var o={binary:!0,hex:!0,base64:!0};t.DiffieHellmanGroup=t.createDiffieHellmanGroup=t.getDiffieHellman=function(t){var r=new e(n[t].prime,"hex"),i=new e(n[t].gen,"hex");return new a(r,i)},t.createDiffieHellman=t.DiffieHellman=function t(r,n,s,d){return e.isBuffer(n)||void 0===o[n]?t(r,"binary",n,s):(n=n||"binary",d=d||"binary",s=s||new e([2]),e.isBuffer(s)||(s=new e(s,d)),"number"==typeof r?new a(i(r,s),s,!0):(e.isBuffer(r)||(r=new e(r,n)),new a(r,s,!0)))}}).call(this,r(10).Buffer)},function(e,t){},function(e,t){},function(e){e.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},function(e,t,r){(function(t){var i=r(12),n=new(r(106)),a=new i(24),o=new i(11),s=new i(10),d=new i(3),u=new i(7),l=r(105),h=r(25);function c(e,r){return r=r||"utf8",t.isBuffer(e)||(e=new t(e,r)),this._pub=new i(e),this}function f(e,r){return r=r||"utf8",t.isBuffer(e)||(e=new t(e,r)),this._priv=new i(e),this}e.exports=_;var m={};function _(e,t,r){this.setGenerator(t),this.__prime=new i(e),this._prime=i.mont(this.__prime),this._primeLen=e.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=c,this.setPrivateKey=f):this._primeCode=8}function p(e,r){var i=new t(e.toArray());return r?i.toString(r):i}Object.defineProperty(_.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(e,t){var r=t.toString("hex"),i=[r,e.toString(16)].join("_");if(i in m)return m[i];var h,c=0;if(e.isEven()||!l.simpleSieve||!l.fermatTest(e)||!n.test(e))return c+=1,c+="02"===r||"05"===r?8:4,m[i]=c,c;switch(n.test(e.shrn(1))||(c+=2),r){case"02":e.mod(a).cmp(o)&&(c+=8);break;case"05":(h=e.mod(s)).cmp(d)&&h.cmp(u)&&(c+=8);break;default:c+=4}return m[i]=c,c}(this.__prime,this.__gen)),this._primeCode}}),_.prototype.generateKeys=function(){return this._priv||(this._priv=new i(h(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},_.prototype.computeSecret=function(e){var r=(e=(e=new i(e)).toRed(this._prime)).redPow(this._priv).fromRed(),n=new t(r.toArray()),a=this.getPrime();if(n.length0&&r.ishrn(i),r}function c(e,t,r){var a,o;do{for(a=i.alloc(0);8*a.length=48&&r<=57?r-48:r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:void i(!1,"Invalid character in "+e)}function d(e,t,r){var i=s(e,r);return r-1>=t&&(i|=s(e,r-1)<<4),i}function u(e,t,r,n){for(var a=0,o=0,s=Math.min(e.length,r),d=t;d=49?u-49+10:u>=17?u-17+10:u,i(u>=0&&o0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)o=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this._strip()},a.prototype._parseHex=function(e,t,r){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)n=d(e,t,i)<=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(a-=18,o+=1,this.words[o]|=n>>>26):a+=8;this._strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,o=a%i,s=Math.min(a,a-o)+r,d=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{a.prototype[Symbol.for("nodejs.util.inspect.custom")]=h}catch(e){a.prototype.inspect=h}else a.prototype.inspect=h;function h(){return(this.red?""}var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],m=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];a.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,a=0,o=0;o>>24-n&16777215,(n+=2)>=26&&(n-=26,o--),r=0!==a||o!==this.length-1?c[6-d.length]+d+r:d+r}for(0!==a&&(r=a.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var u=f[e],l=m[e];r="";var h=this.clone();for(h.negative=0;!h.isZero();){var _=h.modrn(l).toString(e);r=(h=h.idivn(l)).isZero()?_+r:c[u-_.length]+_+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16,2)},o&&(a.prototype.toBuffer=function(e,t){return this.toArrayLike(o,e,t)}),a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)};function _(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],o=n*a,s=67108863&o,d=o/67108864|0;r.words[0]=s;for(var u=1;u>>26,h=67108863&d,c=Math.min(u,t.length-1),f=Math.max(0,u-e.length+1);f<=c;f++){var m=u-f|0;l+=(o=(n=0|e.words[m])*(a=0|t.words[f])+h)/67108864|0,h=67108863&o}r.words[u]=0|h,d=0|l}return 0!==d?r.words[u]=0|d:r.length--,r._strip()}a.prototype.toArrayLike=function(e,t,r){this._strip();var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0");var o=function(e,t){return e.allocUnsafe?e.allocUnsafe(t):new e(t)}(e,a);return this["_toArrayLike"+("le"===t?"LE":"BE")](o,n),o},a.prototype._toArrayLikeLE=function(e,t){for(var r=0,i=0,n=0,a=0;n>8&255),r>16&255),6===a?(r>24&255),i=0,a=0):(i=o>>>24,a+=2)}if(r=0&&(e[r--]=o>>8&255),r>=0&&(e[r--]=o>>16&255),6===a?(r>=0&&(e[r--]=o>>24&255),i=0,a=0):(i=o>>>24,a+=2)}if(r>=0)for(e[r--]=i;r>=0;)e[r--]=0},Math.clz32?a.prototype._countBits=function(e){return 32-Math.clz32(e)}:a.prototype._countBits=function(e){var t=e,r=0;return t>=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this._strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==a&&o>26,this.words[o]=67108863&t;if(0===a&&o>>13,f=0|o[1],m=8191&f,_=f>>>13,p=0|o[2],y=8191&p,g=p>>>13,b=0|o[3],v=8191&b,w=b>>>13,M=0|o[4],E=8191&M,A=M>>>13,T=0|o[5],k=8191&T,S=T>>>13,L=0|o[6],D=8191&L,R=L>>>13,x=0|o[7],O=8191&x,Y=x>>>13,I=0|o[8],P=8191&I,C=I>>>13,N=0|o[9],j=8191&N,F=N>>>13,H=0|s[0],U=8191&H,B=H>>>13,W=0|s[1],z=8191&W,X=W>>>13,V=0|s[2],G=8191&V,q=V>>>13,Q=0|s[3],K=8191&Q,J=Q>>>13,Z=0|s[4],$=8191&Z,ee=Z>>>13,te=0|s[5],re=8191&te,ie=te>>>13,ne=0|s[6],ae=8191&ne,oe=ne>>>13,se=0|s[7],de=8191&se,ue=se>>>13,le=0|s[8],he=8191&le,ce=le>>>13,fe=0|s[9],me=8191&fe,_e=fe>>>13;r.negative=e.negative^t.negative,r.length=19;var pe=(u+(i=Math.imul(h,U))|0)+((8191&(n=(n=Math.imul(h,B))+Math.imul(c,U)|0))<<13)|0;u=((a=Math.imul(c,B))+(n>>>13)|0)+(pe>>>26)|0,pe&=67108863,i=Math.imul(m,U),n=(n=Math.imul(m,B))+Math.imul(_,U)|0,a=Math.imul(_,B);var ye=(u+(i=i+Math.imul(h,z)|0)|0)+((8191&(n=(n=n+Math.imul(h,X)|0)+Math.imul(c,z)|0))<<13)|0;u=((a=a+Math.imul(c,X)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(y,U),n=(n=Math.imul(y,B))+Math.imul(g,U)|0,a=Math.imul(g,B),i=i+Math.imul(m,z)|0,n=(n=n+Math.imul(m,X)|0)+Math.imul(_,z)|0,a=a+Math.imul(_,X)|0;var ge=(u+(i=i+Math.imul(h,G)|0)|0)+((8191&(n=(n=n+Math.imul(h,q)|0)+Math.imul(c,G)|0))<<13)|0;u=((a=a+Math.imul(c,q)|0)+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(v,U),n=(n=Math.imul(v,B))+Math.imul(w,U)|0,a=Math.imul(w,B),i=i+Math.imul(y,z)|0,n=(n=n+Math.imul(y,X)|0)+Math.imul(g,z)|0,a=a+Math.imul(g,X)|0,i=i+Math.imul(m,G)|0,n=(n=n+Math.imul(m,q)|0)+Math.imul(_,G)|0,a=a+Math.imul(_,q)|0;var be=(u+(i=i+Math.imul(h,K)|0)|0)+((8191&(n=(n=n+Math.imul(h,J)|0)+Math.imul(c,K)|0))<<13)|0;u=((a=a+Math.imul(c,J)|0)+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(E,U),n=(n=Math.imul(E,B))+Math.imul(A,U)|0,a=Math.imul(A,B),i=i+Math.imul(v,z)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(w,z)|0,a=a+Math.imul(w,X)|0,i=i+Math.imul(y,G)|0,n=(n=n+Math.imul(y,q)|0)+Math.imul(g,G)|0,a=a+Math.imul(g,q)|0,i=i+Math.imul(m,K)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(_,K)|0,a=a+Math.imul(_,J)|0;var ve=(u+(i=i+Math.imul(h,$)|0)|0)+((8191&(n=(n=n+Math.imul(h,ee)|0)+Math.imul(c,$)|0))<<13)|0;u=((a=a+Math.imul(c,ee)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(k,U),n=(n=Math.imul(k,B))+Math.imul(S,U)|0,a=Math.imul(S,B),i=i+Math.imul(E,z)|0,n=(n=n+Math.imul(E,X)|0)+Math.imul(A,z)|0,a=a+Math.imul(A,X)|0,i=i+Math.imul(v,G)|0,n=(n=n+Math.imul(v,q)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,q)|0,i=i+Math.imul(y,K)|0,n=(n=n+Math.imul(y,J)|0)+Math.imul(g,K)|0,a=a+Math.imul(g,J)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,ee)|0)+Math.imul(_,$)|0,a=a+Math.imul(_,ee)|0;var we=(u+(i=i+Math.imul(h,re)|0)|0)+((8191&(n=(n=n+Math.imul(h,ie)|0)+Math.imul(c,re)|0))<<13)|0;u=((a=a+Math.imul(c,ie)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(D,U),n=(n=Math.imul(D,B))+Math.imul(R,U)|0,a=Math.imul(R,B),i=i+Math.imul(k,z)|0,n=(n=n+Math.imul(k,X)|0)+Math.imul(S,z)|0,a=a+Math.imul(S,X)|0,i=i+Math.imul(E,G)|0,n=(n=n+Math.imul(E,q)|0)+Math.imul(A,G)|0,a=a+Math.imul(A,q)|0,i=i+Math.imul(v,K)|0,n=(n=n+Math.imul(v,J)|0)+Math.imul(w,K)|0,a=a+Math.imul(w,J)|0,i=i+Math.imul(y,$)|0,n=(n=n+Math.imul(y,ee)|0)+Math.imul(g,$)|0,a=a+Math.imul(g,ee)|0,i=i+Math.imul(m,re)|0,n=(n=n+Math.imul(m,ie)|0)+Math.imul(_,re)|0,a=a+Math.imul(_,ie)|0;var Me=(u+(i=i+Math.imul(h,ae)|0)|0)+((8191&(n=(n=n+Math.imul(h,oe)|0)+Math.imul(c,ae)|0))<<13)|0;u=((a=a+Math.imul(c,oe)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(O,U),n=(n=Math.imul(O,B))+Math.imul(Y,U)|0,a=Math.imul(Y,B),i=i+Math.imul(D,z)|0,n=(n=n+Math.imul(D,X)|0)+Math.imul(R,z)|0,a=a+Math.imul(R,X)|0,i=i+Math.imul(k,G)|0,n=(n=n+Math.imul(k,q)|0)+Math.imul(S,G)|0,a=a+Math.imul(S,q)|0,i=i+Math.imul(E,K)|0,n=(n=n+Math.imul(E,J)|0)+Math.imul(A,K)|0,a=a+Math.imul(A,J)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(w,$)|0,a=a+Math.imul(w,ee)|0,i=i+Math.imul(y,re)|0,n=(n=n+Math.imul(y,ie)|0)+Math.imul(g,re)|0,a=a+Math.imul(g,ie)|0,i=i+Math.imul(m,ae)|0,n=(n=n+Math.imul(m,oe)|0)+Math.imul(_,ae)|0,a=a+Math.imul(_,oe)|0;var Ee=(u+(i=i+Math.imul(h,de)|0)|0)+((8191&(n=(n=n+Math.imul(h,ue)|0)+Math.imul(c,de)|0))<<13)|0;u=((a=a+Math.imul(c,ue)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(P,U),n=(n=Math.imul(P,B))+Math.imul(C,U)|0,a=Math.imul(C,B),i=i+Math.imul(O,z)|0,n=(n=n+Math.imul(O,X)|0)+Math.imul(Y,z)|0,a=a+Math.imul(Y,X)|0,i=i+Math.imul(D,G)|0,n=(n=n+Math.imul(D,q)|0)+Math.imul(R,G)|0,a=a+Math.imul(R,q)|0,i=i+Math.imul(k,K)|0,n=(n=n+Math.imul(k,J)|0)+Math.imul(S,K)|0,a=a+Math.imul(S,J)|0,i=i+Math.imul(E,$)|0,n=(n=n+Math.imul(E,ee)|0)+Math.imul(A,$)|0,a=a+Math.imul(A,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(w,re)|0,a=a+Math.imul(w,ie)|0,i=i+Math.imul(y,ae)|0,n=(n=n+Math.imul(y,oe)|0)+Math.imul(g,ae)|0,a=a+Math.imul(g,oe)|0,i=i+Math.imul(m,de)|0,n=(n=n+Math.imul(m,ue)|0)+Math.imul(_,de)|0,a=a+Math.imul(_,ue)|0;var Ae=(u+(i=i+Math.imul(h,he)|0)|0)+((8191&(n=(n=n+Math.imul(h,ce)|0)+Math.imul(c,he)|0))<<13)|0;u=((a=a+Math.imul(c,ce)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(j,U),n=(n=Math.imul(j,B))+Math.imul(F,U)|0,a=Math.imul(F,B),i=i+Math.imul(P,z)|0,n=(n=n+Math.imul(P,X)|0)+Math.imul(C,z)|0,a=a+Math.imul(C,X)|0,i=i+Math.imul(O,G)|0,n=(n=n+Math.imul(O,q)|0)+Math.imul(Y,G)|0,a=a+Math.imul(Y,q)|0,i=i+Math.imul(D,K)|0,n=(n=n+Math.imul(D,J)|0)+Math.imul(R,K)|0,a=a+Math.imul(R,J)|0,i=i+Math.imul(k,$)|0,n=(n=n+Math.imul(k,ee)|0)+Math.imul(S,$)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(E,re)|0,n=(n=n+Math.imul(E,ie)|0)+Math.imul(A,re)|0,a=a+Math.imul(A,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,oe)|0)+Math.imul(w,ae)|0,a=a+Math.imul(w,oe)|0,i=i+Math.imul(y,de)|0,n=(n=n+Math.imul(y,ue)|0)+Math.imul(g,de)|0,a=a+Math.imul(g,ue)|0,i=i+Math.imul(m,he)|0,n=(n=n+Math.imul(m,ce)|0)+Math.imul(_,he)|0,a=a+Math.imul(_,ce)|0;var Te=(u+(i=i+Math.imul(h,me)|0)|0)+((8191&(n=(n=n+Math.imul(h,_e)|0)+Math.imul(c,me)|0))<<13)|0;u=((a=a+Math.imul(c,_e)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(j,z),n=(n=Math.imul(j,X))+Math.imul(F,z)|0,a=Math.imul(F,X),i=i+Math.imul(P,G)|0,n=(n=n+Math.imul(P,q)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,q)|0,i=i+Math.imul(O,K)|0,n=(n=n+Math.imul(O,J)|0)+Math.imul(Y,K)|0,a=a+Math.imul(Y,J)|0,i=i+Math.imul(D,$)|0,n=(n=n+Math.imul(D,ee)|0)+Math.imul(R,$)|0,a=a+Math.imul(R,ee)|0,i=i+Math.imul(k,re)|0,n=(n=n+Math.imul(k,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(E,ae)|0,n=(n=n+Math.imul(E,oe)|0)+Math.imul(A,ae)|0,a=a+Math.imul(A,oe)|0,i=i+Math.imul(v,de)|0,n=(n=n+Math.imul(v,ue)|0)+Math.imul(w,de)|0,a=a+Math.imul(w,ue)|0,i=i+Math.imul(y,he)|0,n=(n=n+Math.imul(y,ce)|0)+Math.imul(g,he)|0,a=a+Math.imul(g,ce)|0;var ke=(u+(i=i+Math.imul(m,me)|0)|0)+((8191&(n=(n=n+Math.imul(m,_e)|0)+Math.imul(_,me)|0))<<13)|0;u=((a=a+Math.imul(_,_e)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(j,G),n=(n=Math.imul(j,q))+Math.imul(F,G)|0,a=Math.imul(F,q),i=i+Math.imul(P,K)|0,n=(n=n+Math.imul(P,J)|0)+Math.imul(C,K)|0,a=a+Math.imul(C,J)|0,i=i+Math.imul(O,$)|0,n=(n=n+Math.imul(O,ee)|0)+Math.imul(Y,$)|0,a=a+Math.imul(Y,ee)|0,i=i+Math.imul(D,re)|0,n=(n=n+Math.imul(D,ie)|0)+Math.imul(R,re)|0,a=a+Math.imul(R,ie)|0,i=i+Math.imul(k,ae)|0,n=(n=n+Math.imul(k,oe)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,oe)|0,i=i+Math.imul(E,de)|0,n=(n=n+Math.imul(E,ue)|0)+Math.imul(A,de)|0,a=a+Math.imul(A,ue)|0,i=i+Math.imul(v,he)|0,n=(n=n+Math.imul(v,ce)|0)+Math.imul(w,he)|0,a=a+Math.imul(w,ce)|0;var Se=(u+(i=i+Math.imul(y,me)|0)|0)+((8191&(n=(n=n+Math.imul(y,_e)|0)+Math.imul(g,me)|0))<<13)|0;u=((a=a+Math.imul(g,_e)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(j,K),n=(n=Math.imul(j,J))+Math.imul(F,K)|0,a=Math.imul(F,J),i=i+Math.imul(P,$)|0,n=(n=n+Math.imul(P,ee)|0)+Math.imul(C,$)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(O,re)|0,n=(n=n+Math.imul(O,ie)|0)+Math.imul(Y,re)|0,a=a+Math.imul(Y,ie)|0,i=i+Math.imul(D,ae)|0,n=(n=n+Math.imul(D,oe)|0)+Math.imul(R,ae)|0,a=a+Math.imul(R,oe)|0,i=i+Math.imul(k,de)|0,n=(n=n+Math.imul(k,ue)|0)+Math.imul(S,de)|0,a=a+Math.imul(S,ue)|0,i=i+Math.imul(E,he)|0,n=(n=n+Math.imul(E,ce)|0)+Math.imul(A,he)|0,a=a+Math.imul(A,ce)|0;var Le=(u+(i=i+Math.imul(v,me)|0)|0)+((8191&(n=(n=n+Math.imul(v,_e)|0)+Math.imul(w,me)|0))<<13)|0;u=((a=a+Math.imul(w,_e)|0)+(n>>>13)|0)+(Le>>>26)|0,Le&=67108863,i=Math.imul(j,$),n=(n=Math.imul(j,ee))+Math.imul(F,$)|0,a=Math.imul(F,ee),i=i+Math.imul(P,re)|0,n=(n=n+Math.imul(P,ie)|0)+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(O,ae)|0,n=(n=n+Math.imul(O,oe)|0)+Math.imul(Y,ae)|0,a=a+Math.imul(Y,oe)|0,i=i+Math.imul(D,de)|0,n=(n=n+Math.imul(D,ue)|0)+Math.imul(R,de)|0,a=a+Math.imul(R,ue)|0,i=i+Math.imul(k,he)|0,n=(n=n+Math.imul(k,ce)|0)+Math.imul(S,he)|0,a=a+Math.imul(S,ce)|0;var De=(u+(i=i+Math.imul(E,me)|0)|0)+((8191&(n=(n=n+Math.imul(E,_e)|0)+Math.imul(A,me)|0))<<13)|0;u=((a=a+Math.imul(A,_e)|0)+(n>>>13)|0)+(De>>>26)|0,De&=67108863,i=Math.imul(j,re),n=(n=Math.imul(j,ie))+Math.imul(F,re)|0,a=Math.imul(F,ie),i=i+Math.imul(P,ae)|0,n=(n=n+Math.imul(P,oe)|0)+Math.imul(C,ae)|0,a=a+Math.imul(C,oe)|0,i=i+Math.imul(O,de)|0,n=(n=n+Math.imul(O,ue)|0)+Math.imul(Y,de)|0,a=a+Math.imul(Y,ue)|0,i=i+Math.imul(D,he)|0,n=(n=n+Math.imul(D,ce)|0)+Math.imul(R,he)|0,a=a+Math.imul(R,ce)|0;var Re=(u+(i=i+Math.imul(k,me)|0)|0)+((8191&(n=(n=n+Math.imul(k,_e)|0)+Math.imul(S,me)|0))<<13)|0;u=((a=a+Math.imul(S,_e)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(j,ae),n=(n=Math.imul(j,oe))+Math.imul(F,ae)|0,a=Math.imul(F,oe),i=i+Math.imul(P,de)|0,n=(n=n+Math.imul(P,ue)|0)+Math.imul(C,de)|0,a=a+Math.imul(C,ue)|0,i=i+Math.imul(O,he)|0,n=(n=n+Math.imul(O,ce)|0)+Math.imul(Y,he)|0,a=a+Math.imul(Y,ce)|0;var xe=(u+(i=i+Math.imul(D,me)|0)|0)+((8191&(n=(n=n+Math.imul(D,_e)|0)+Math.imul(R,me)|0))<<13)|0;u=((a=a+Math.imul(R,_e)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(j,de),n=(n=Math.imul(j,ue))+Math.imul(F,de)|0,a=Math.imul(F,ue),i=i+Math.imul(P,he)|0,n=(n=n+Math.imul(P,ce)|0)+Math.imul(C,he)|0,a=a+Math.imul(C,ce)|0;var Oe=(u+(i=i+Math.imul(O,me)|0)|0)+((8191&(n=(n=n+Math.imul(O,_e)|0)+Math.imul(Y,me)|0))<<13)|0;u=((a=a+Math.imul(Y,_e)|0)+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,i=Math.imul(j,he),n=(n=Math.imul(j,ce))+Math.imul(F,he)|0,a=Math.imul(F,ce);var Ye=(u+(i=i+Math.imul(P,me)|0)|0)+((8191&(n=(n=n+Math.imul(P,_e)|0)+Math.imul(C,me)|0))<<13)|0;u=((a=a+Math.imul(C,_e)|0)+(n>>>13)|0)+(Ye>>>26)|0,Ye&=67108863;var Ie=(u+(i=Math.imul(j,me))|0)+((8191&(n=(n=Math.imul(j,_e))+Math.imul(F,me)|0))<<13)|0;return u=((a=Math.imul(F,_e))+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,d[0]=pe,d[1]=ye,d[2]=ge,d[3]=be,d[4]=ve,d[5]=we,d[6]=Me,d[7]=Ee,d[8]=Ae,d[9]=Te,d[10]=ke,d[11]=Se,d[12]=Le,d[13]=De,d[14]=Re,d[15]=xe,d[16]=Oe,d[17]=Ye,d[18]=Ie,0!==u&&(d[19]=u,r.length++),r};function y(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,i=o,o=n}return 0!==i?r.words[a]=i:r.length--,r._strip()}function g(e,t,r){return y(e,t,r)}function b(e,t){this.x=e,this.y=t}Math.imul||(p=_),a.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?p(this,e,t):r<63?_(this,e,t):r<1024?y(this,e,t):g(this,e,t)},b.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},b.prototype.permute=function(e,t,r,i,n,a){for(var o=0;o>>=1)n++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*t;o>=26,r+=a/67108864|0,r+=o>>>26,this.words[n]=67108863&o}return 0!==r&&(this.words[n]=r,this.length++),t?this.ineg():this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n&1}return t}(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,o=Math.min((e-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,u=0;u=0&&(0!==l||u>=n);u--){var h=0|this.words[u];this.words[u]=l<<26-a|h>>>a,l=h&s}return d&&0!==l&&(d.words[d.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(d/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===s)return this._strip();for(i(-1===s),s=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this._strip()},a.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,o=0|n.words[n.length-1];0!==(r=26-this._countBits(o))&&(n=n.ushln(r),i.iushln(r),o=0|n.words[n.length-1]);var s,d=i.length-n.length;if("mod"!==t){(s=new a(null)).length=d+1,s.words=new Array(s.length);for(var u=0;u=0;h--){var c=67108864*(0|i.words[n.length+h])+(0|i.words[n.length+h-1]);for(c=Math.min(c/o|0,67108863),i._ishlnsubmul(n,c,h);0!==i.negative;)c--,i.negative=0,i._ishlnsubmul(n,1,h),i.isZero()||(i.negative^=1);s&&(s.words[h]=c)}return s&&s._strip(),i._strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(n=s.div.neg()),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:n,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modrn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modrn(e.words[0]))}:this._wordDiv(e,t);var n,o,s},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modrn=function(e){var t=e<0;t&&(e=-e),i(e<=67108863);for(var r=(1<<26)%e,n=0,a=this.length-1;a>=0;a--)n=(r*n+(0|this.words[a]))%e;return t?-n:n},a.prototype.modn=function(e){return this.modrn(e)},a.prototype.idivn=function(e){var t=e<0;t&&(e=-e),i(e<=67108863);for(var r=0,n=this.length-1;n>=0;n--){var a=(0|this.words[n])+67108864*r;this.words[n]=a/e|0,r=a%e}return this._strip(),t?this.ineg():this},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new a(1),o=new a(0),s=new a(0),d=new a(1),u=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),h=t.clone();!t.isZero();){for(var c=0,f=1;0==(t.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(t.iushrn(c);c-- >0;)(n.isOdd()||o.isOdd())&&(n.iadd(l),o.isub(h)),n.iushrn(1),o.iushrn(1);for(var m=0,_=1;0==(r.words[0]&_)&&m<26;++m,_<<=1);if(m>0)for(r.iushrn(m);m-- >0;)(s.isOdd()||d.isOdd())&&(s.iadd(l),d.isub(h)),s.iushrn(1),d.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(s),o.isub(d)):(r.isub(t),s.isub(n),d.isub(o))}return{a:s,b:d,gcd:r.iushln(u)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,o=new a(1),s=new a(0),d=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(t.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(t.iushrn(u);u-- >0;)o.isOdd()&&o.iadd(d),o.iushrn(1);for(var h=0,c=1;0==(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(d),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s)):(r.isub(t),s.isub(o))}return(n=0===t.cmpn(1)?o:s).cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this._strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new k(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var v={k256:null,p224:null,p192:null,p25519:null};function w(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function M(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function E(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function A(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function T(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function S(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},w.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(e,t){e.iushrn(this.n,0,t)},w.prototype.imulK=function(e){return e.imul(this.k)},n(M,w),M.prototype.split=function(e,t){for(var r=Math.min(e.length,9),i=0;i>>22,n=a}n>>>=22,e.words[i-10]=n,0===n&&e.length>10?e.length-=10:e.length-=9},M.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(v[e])return v[e];var t;if("k256"===e)t=new M;else if("p224"===e)t=new E;else if("p192"===e)t=new A;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new T}return v[e]=t,t},k.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):(l(e,e.umod(this.m)._forceRed(this)),e)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),o=0;!n.isZero()&&0===n.andln(1);)o++,n.iushrn(1);i(!n.isZero());var s=new a(1).toRed(this),d=s.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new a(2*l*l).toRed(this);0!==this.pow(l,u).cmp(d);)l.redIAdd(d);for(var h=this.pow(l,n),c=this.pow(e,n.addn(1).iushrn(1)),f=this.pow(e,n),m=o;0!==f.cmp(s);){for(var _=f,p=0;0!==_.cmp(s);p++)_=_.redSqr();i(p=0;i--){for(var u=t.words[i],l=d-1;l>=0;l--){var h=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==h||0!==o?(o<<=1,o|=h,(4===++s||0===i&&0===l)&&(n=this.mul(n,r[o]),s=0,o=0)):s=0}d=26}return n},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new S(e)},n(S,k),S.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},S.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},S.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},S.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},S.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e,this)}).call(this,r(44)(e))},function(e,t){},function(e){e.exports=JSON.parse('{"name":"elliptic","version":"6.5.5","description":"EC cryptography","main":"lib/elliptic.js","files":["lib"],"scripts":{"lint":"eslint lib test","lint:fix":"npm run lint -- --fix","unit":"istanbul test _mocha --reporter=spec test/index.js","test":"npm run lint && npm run unit","version":"grunt dist && git add dist/"},"repository":{"type":"git","url":"git@github.com:indutny/elliptic"},"keywords":["EC","Elliptic","curve","Cryptography"],"author":"Fedor Indutny ","license":"MIT","bugs":{"url":"https://github.com/indutny/elliptic/issues"},"homepage":"https://github.com/indutny/elliptic","devDependencies":{"brfs":"^2.0.2","coveralls":"^3.1.0","eslint":"^7.6.0","grunt":"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1","istanbul":"^0.4.5","mocha":"^8.0.1"},"dependencies":{"bn.js":"^4.11.9","brorand":"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1","inherits":"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}')},function(e,t,r){"use strict";var i=r(16),n=r(12),a=r(6),o=r(45),s=i.assert;function d(e){o.call(this,"short",e),this.a=new n(e.a,16).toRed(this.red),this.b=new n(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function u(e,t,r,i){o.BasePoint.call(this,e,"affine"),null===t&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new n(t,16),this.y=new n(r,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function l(e,t,r,i){o.BasePoint.call(this,e,"jacobian"),null===t&&null===r&&null===i?(this.x=this.curve.one,this.y=this.curve.one,this.z=new n(0)):(this.x=new n(t,16),this.y=new n(r,16),this.z=new n(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}a(d,o),e.exports=d,d.prototype._getEndomorphism=function(e){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var t,r;if(e.beta)t=new n(e.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);t=(t=i[0].cmp(i[1])<0?i[0]:i[1]).toRed(this.red)}if(e.lambda)r=new n(e.lambda,16);else{var a=this._getEndoRoots(this.n);0===this.g.mul(a[0]).x.cmp(this.g.x.redMul(t))?r=a[0]:(r=a[1],s(0===this.g.mul(r).x.cmp(this.g.x.redMul(t))))}return{beta:t,lambda:r,basis:e.basis?e.basis.map((function(e){return{a:new n(e.a,16),b:new n(e.b,16)}})):this._getEndoBasis(r)}}},d.prototype._getEndoRoots=function(e){var t=e===this.p?this.red:n.mont(e),r=new n(2).toRed(t).redInvm(),i=r.redNeg(),a=new n(3).toRed(t).redNeg().redSqrt().redMul(r);return[i.redAdd(a).fromRed(),i.redSub(a).fromRed()]},d.prototype._getEndoBasis=function(e){for(var t,r,i,a,o,s,d,u,l,h=this.n.ushrn(Math.floor(this.n.bitLength()/2)),c=e,f=this.n.clone(),m=new n(1),_=new n(0),p=new n(0),y=new n(1),g=0;0!==c.cmpn(0);){var b=f.div(c);u=f.sub(b.mul(c)),l=p.sub(b.mul(m));var v=y.sub(b.mul(_));if(!i&&u.cmp(h)<0)t=d.neg(),r=m,i=u.neg(),a=l;else if(i&&2==++g)break;d=u,f=c,c=u,p=m,m=l,y=_,_=v}o=u.neg(),s=l;var w=i.sqr().add(a.sqr());return o.sqr().add(s.sqr()).cmp(w)>=0&&(o=t,s=r),i.negative&&(i=i.neg(),a=a.neg()),o.negative&&(o=o.neg(),s=s.neg()),[{a:i,b:a},{a:o,b:s}]},d.prototype._endoSplit=function(e){var t=this.endo.basis,r=t[0],i=t[1],n=i.b.mul(e).divRound(this.n),a=r.b.neg().mul(e).divRound(this.n),o=n.mul(r.a),s=a.mul(i.a),d=n.mul(r.b),u=a.mul(i.b);return{k1:e.sub(o).sub(s),k2:d.add(u).neg()}},d.prototype.pointFromX=function(e,t){(e=new n(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(0!==i.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var a=i.fromRed().isOdd();return(t&&!a||!t&&a)&&(i=i.redNeg()),this.point(e,i)},d.prototype.validate=function(e){if(e.inf)return!0;var t=e.x,r=e.y,i=this.a.redMul(t),n=t.redSqr().redMul(t).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(n).cmpn(0)},d.prototype._endoWnafMulAdd=function(e,t,r){for(var i=this._endoWnafT1,n=this._endoWnafT2,a=0;a":""},u.prototype.isInfinity=function(){return this.inf},u.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var t=this.y.redSub(e.y);0!==t.cmpn(0)&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var r=t.redSqr().redISub(this.x).redISub(e.x),i=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},u.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var t=this.curve.a,r=this.x.redSqr(),i=e.redInvm(),n=r.redAdd(r).redIAdd(r).redIAdd(t).redMul(i),a=n.redSqr().redISub(this.x.redAdd(this.x)),o=n.redMul(this.x.redSub(a)).redISub(this.y);return this.curve.point(a,o)},u.prototype.getX=function(){return this.x.fromRed()},u.prototype.getY=function(){return this.y.fromRed()},u.prototype.mul=function(e){return e=new n(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},u.prototype.mulAdd=function(e,t,r){var i=[this,t],n=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n):this.curve._wnafMulAdd(1,i,n,2)},u.prototype.jmulAdd=function(e,t,r){var i=[this,t],n=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n,!0):this.curve._wnafMulAdd(1,i,n,2,!0)},u.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},u.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,i=function(e){return e.neg()};t.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return t},u.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},a(l,o.BasePoint),d.prototype.jpoint=function(e,t,r){return new l(this,e,t,r)},l.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),r=this.x.redMul(t),i=this.y.redMul(t).redMul(e);return this.curve.point(r,i)},l.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},l.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(t),n=e.x.redMul(r),a=this.y.redMul(t.redMul(e.z)),o=e.y.redMul(r.redMul(this.z)),s=i.redSub(n),d=a.redSub(o);if(0===s.cmpn(0))return 0!==d.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=s.redSqr(),l=u.redMul(s),h=i.redMul(u),c=d.redSqr().redIAdd(l).redISub(h).redISub(h),f=d.redMul(h.redISub(c)).redISub(a.redMul(l)),m=this.z.redMul(e.z).redMul(s);return this.curve.jpoint(c,f,m)},l.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),r=this.x,i=e.x.redMul(t),n=this.y,a=e.y.redMul(t).redMul(this.z),o=r.redSub(i),s=n.redSub(a);if(0===o.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var d=o.redSqr(),u=d.redMul(o),l=r.redMul(d),h=s.redSqr().redIAdd(u).redISub(l).redISub(l),c=s.redMul(l.redISub(h)).redISub(n.redMul(u)),f=this.z.redMul(o);return this.curve.jpoint(h,c,f)},l.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var t;if(this.curve.zeroA||this.curve.threeA){var r=this;for(t=0;t=0)return!1;if(r.redIAdd(n),0===this.x.cmp(r))return!0}},l.prototype.inspect=function(){return this.isInfinity()?"":""},l.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(e,t,r){"use strict";var i=r(12),n=r(6),a=r(45),o=r(16);function s(e){a.call(this,"mont",e),this.a=new i(e.a,16).toRed(this.red),this.b=new i(e.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function d(e,t,r){a.BasePoint.call(this,e,"projective"),null===t&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(t,16),this.z=new i(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}n(s,a),e.exports=s,s.prototype.validate=function(e){var t=e.normalize().x,r=t.redSqr(),i=r.redMul(t).redAdd(r.redMul(this.a)).redAdd(t);return 0===i.redSqrt().redSqr().cmp(i)},n(d,a.BasePoint),s.prototype.decodePoint=function(e,t){return this.point(o.toArray(e,t),1)},s.prototype.point=function(e,t){return new d(this,e,t)},s.prototype.pointFromJSON=function(e){return d.fromJSON(this,e)},d.prototype.precompute=function(){},d.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},d.fromJSON=function(e,t){return new d(e,t[0],t[1]||e.one)},d.prototype.inspect=function(){return this.isInfinity()?"":""},d.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},d.prototype.dbl=function(){var e=this.x.redAdd(this.z).redSqr(),t=this.x.redSub(this.z).redSqr(),r=e.redSub(t),i=e.redMul(t),n=r.redMul(t.redAdd(this.curve.a24.redMul(r)));return this.curve.point(i,n)},d.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},d.prototype.diffAdd=function(e,t){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),n=e.x.redAdd(e.z),a=e.x.redSub(e.z).redMul(r),o=n.redMul(i),s=t.z.redMul(a.redAdd(o).redSqr()),d=t.x.redMul(a.redISub(o).redSqr());return this.curve.point(s,d)},d.prototype.mul=function(e){for(var t=e.clone(),r=this,i=this.curve.point(null,null),n=[];0!==t.cmpn(0);t.iushrn(1))n.push(t.andln(1));for(var a=n.length-1;a>=0;a--)0===n[a]?(r=r.diffAdd(i,this),i=i.dbl()):(i=r.diffAdd(i,this),r=r.dbl());return i},d.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},d.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},d.prototype.eq=function(e){return 0===this.getX().cmp(e.getX())},d.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},d.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(e,t,r){"use strict";var i=r(16),n=r(12),a=r(6),o=r(45),s=i.assert;function d(e){this.twisted=1!=(0|e.a),this.mOneA=this.twisted&&-1==(0|e.a),this.extended=this.mOneA,o.call(this,"edwards",e),this.a=new n(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new n(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new n(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),s(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|e.c)}function u(e,t,r,i,a){o.BasePoint.call(this,e,"projective"),null===t&&null===r&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new n(t,16),this.y=new n(r,16),this.z=i?new n(i,16):this.curve.one,this.t=a&&new n(a,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}a(d,o),e.exports=d,d.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},d.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},d.prototype.jpoint=function(e,t,r,i){return this.point(e,t,r,i)},d.prototype.pointFromX=function(e,t){(e=new n(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),i=this.c2.redSub(this.a.redMul(r)),a=this.one.redSub(this.c2.redMul(this.d).redMul(r)),o=i.redMul(a.redInvm()),s=o.redSqrt();if(0!==s.redSqr().redSub(o).cmp(this.zero))throw new Error("invalid point");var d=s.fromRed().isOdd();return(t&&!d||!t&&d)&&(s=s.redNeg()),this.point(e,s)},d.prototype.pointFromY=function(e,t){(e=new n(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),i=r.redSub(this.c2),a=r.redMul(this.d).redMul(this.c2).redSub(this.a),o=i.redMul(a.redInvm());if(0===o.cmp(this.zero)){if(t)throw new Error("invalid point");return this.point(this.zero,e)}var s=o.redSqrt();if(0!==s.redSqr().redSub(o).cmp(this.zero))throw new Error("invalid point");return s.fromRed().isOdd()!==t&&(s=s.redNeg()),this.point(s,e)},d.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var t=e.x.redSqr(),r=e.y.redSqr(),i=t.redMul(this.a).redAdd(r),n=this.c2.redMul(this.one.redAdd(this.d.redMul(t).redMul(r)));return 0===i.cmp(n)},a(u,o.BasePoint),d.prototype.pointFromJSON=function(e){return u.fromJSON(this,e)},d.prototype.point=function(e,t,r,i){return new u(this,e,t,r,i)},u.fromJSON=function(e,t){return new u(e,t[0],t[1],t[2])},u.prototype.inspect=function(){return this.isInfinity()?"":""},u.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},u.prototype._extDbl=function(){var e=this.x.redSqr(),t=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(e),n=this.x.redAdd(this.y).redSqr().redISub(e).redISub(t),a=i.redAdd(t),o=a.redSub(r),s=i.redSub(t),d=n.redMul(o),u=a.redMul(s),l=n.redMul(s),h=o.redMul(a);return this.curve.point(d,u,h,l)},u.prototype._projDbl=function(){var e,t,r,i,n,a,o=this.x.redAdd(this.y).redSqr(),s=this.x.redSqr(),d=this.y.redSqr();if(this.curve.twisted){var u=(i=this.curve._mulA(s)).redAdd(d);this.zOne?(e=o.redSub(s).redSub(d).redMul(u.redSub(this.curve.two)),t=u.redMul(i.redSub(d)),r=u.redSqr().redSub(u).redSub(u)):(n=this.z.redSqr(),a=u.redSub(n).redISub(n),e=o.redSub(s).redISub(d).redMul(a),t=u.redMul(i.redSub(d)),r=u.redMul(a))}else i=s.redAdd(d),n=this.curve._mulC(this.z).redSqr(),a=i.redSub(n).redSub(n),e=this.curve._mulC(o.redISub(i)).redMul(a),t=this.curve._mulC(i).redMul(s.redISub(d)),r=i.redMul(a);return this.curve.point(e,t,r)},u.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},u.prototype._extAdd=function(e){var t=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),i=this.t.redMul(this.curve.dd).redMul(e.t),n=this.z.redMul(e.z.redAdd(e.z)),a=r.redSub(t),o=n.redSub(i),s=n.redAdd(i),d=r.redAdd(t),u=a.redMul(o),l=s.redMul(d),h=a.redMul(d),c=o.redMul(s);return this.curve.point(u,l,c,h)},u.prototype._projAdd=function(e){var t,r,i=this.z.redMul(e.z),n=i.redSqr(),a=this.x.redMul(e.x),o=this.y.redMul(e.y),s=this.curve.d.redMul(a).redMul(o),d=n.redSub(s),u=n.redAdd(s),l=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(a).redISub(o),h=i.redMul(d).redMul(l);return this.curve.twisted?(t=i.redMul(u).redMul(o.redSub(this.curve._mulA(a))),r=d.redMul(u)):(t=i.redMul(u).redMul(o.redSub(a)),r=this.curve._mulC(d).redMul(u)),this.curve.point(h,t,r)},u.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},u.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},u.prototype.mulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!1)},u.prototype.jmulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!0)},u.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},u.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()},u.prototype.getY=function(){return this.normalize(),this.y.fromRed()},u.prototype.eq=function(e){return this===e||0===this.getX().cmp(e.getX())&&0===this.getY().cmp(e.getY())},u.prototype.eqXToP=function(e){var t=e.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(t))return!0;for(var r=e.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(t.redIAdd(i),0===this.x.cmp(t))return!0}},u.prototype.toP=u.prototype.normalize,u.prototype.mixedAdd=u.prototype.add},function(e,t,r){"use strict";t.sha1=r(338),t.sha224=r(339),t.sha256=r(110),t.sha384=r(340),t.sha512=r(111)},function(e,t,r){"use strict";var i=r(19),n=r(35),a=r(109),o=i.rotl32,s=i.sum32,d=i.sum32_5,u=a.ft_1,l=n.BlockHash,h=[1518500249,1859775393,2400959708,3395469782];function c(){if(!(this instanceof c))return new c;l.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}i.inherits(c,l),e.exports=c,c.blockSize=512,c.outSize=160,c.hmacStrength=80,c.padLength=64,c.prototype._update=function(e,t){for(var r=this.W,i=0;i<16;i++)r[i]=e[t+i];for(;ithis.blockSize&&(e=(new this.Hash).update(e).digest()),n(e.length<=this.blockSize);for(var t=e.length;t0))return o.iaddn(1),this.keyFromPrivate(o)}},h.prototype._truncateToN=function(e,t){var r=8*e.byteLength()-this.n.bitLength();return r>0&&(e=e.ushrn(r)),!t&&e.cmp(this.n)>=0?e.sub(this.n):e},h.prototype.sign=function(e,t,r,a){"object"==typeof r&&(a=r,r=null),a||(a={}),t=this.keyFromPrivate(t,r),e=this._truncateToN(new i(e,16));for(var o=this.n.byteLength(),s=t.getPrivate().toArray("be",o),d=e.toArray("be",o),u=new n({hash:this.hash,entropy:s,nonce:d,pers:a.pers,persEnc:a.persEnc||"utf8"}),h=this.n.sub(new i(1)),c=0;;c++){var f=a.k?a.k(c):new i(u.generate(this.n.byteLength()));if(!((f=this._truncateToN(f,!0)).cmpn(1)<=0||f.cmp(h)>=0)){var m=this.g.mul(f);if(!m.isInfinity()){var _=m.getX(),p=_.umod(this.n);if(0!==p.cmpn(0)){var y=f.invm(this.n).mul(p.mul(t.getPrivate()).iadd(e));if(0!==(y=y.umod(this.n)).cmpn(0)){var g=(m.getY().isOdd()?1:0)|(0!==_.cmp(p)?2:0);return a.canonical&&y.cmp(this.nh)>0&&(y=this.n.sub(y),g^=1),new l({r:p,s:y,recoveryParam:g})}}}}}},h.prototype.verify=function(e,t,r,n){e=this._truncateToN(new i(e,16)),r=this.keyFromPublic(r,n);var a=(t=new l(t,"hex")).r,o=t.s;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var s,d=o.invm(this.n),u=d.mul(e).umod(this.n),h=d.mul(a).umod(this.n);return this.curve._maxwellTrick?!(s=this.g.jmulAdd(u,r.getPublic(),h)).isInfinity()&&s.eqXToP(a):!(s=this.g.mulAdd(u,r.getPublic(),h)).isInfinity()&&0===s.getX().umod(this.n).cmp(a)},h.prototype.recoverPubKey=function(e,t,r,n){d((3&r)===r,"The recovery param is more than two bits"),t=new l(t,n);var a=this.n,o=new i(e),s=t.r,u=t.s,h=1&r,c=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&c)throw new Error("Unable to find sencond key candinate");s=c?this.curve.pointFromX(s.add(this.curve.n),h):this.curve.pointFromX(s,h);var f=t.r.invm(a),m=a.sub(o).mul(f).umod(a),_=u.mul(f).umod(a);return this.g.mulAdd(m,s,_)},h.prototype.getKeyRecoveryParam=function(e,t,r,i){if(null!==(t=new l(t,i)).recoveryParam)return t.recoveryParam;for(var n=0;n<4;n++){var a;try{a=this.recoverPubKey(e,t,n)}catch(e){continue}if(a.eq(r))return n}throw new Error("Unable to find valid recovery factor")}},function(e,t,r){"use strict";var i=r(65),n=r(107),a=r(15);function o(e){if(!(this instanceof o))return new o(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=n.toArray(e.entropy,e.entropyEnc||"hex"),r=n.toArray(e.nonce,e.nonceEnc||"hex"),i=n.toArray(e.pers,e.persEnc||"hex");a(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}e.exports=o,o.prototype._init=function(e,t,r){var i=e.concat(t).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(r||[])),this._reseed=1},o.prototype.generate=function(e,t,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof t&&(i=r,r=t,t=null),r&&(r=n.toArray(r,i||"hex"),this._update(r));for(var a=[];a.length"}},function(e,t,r){"use strict";var i=r(12),n=r(16),a=n.assert;function o(e,t){if(e instanceof o)return e;this._importDER(e,t)||(a(e.r&&e.s,"Signature without r or s"),this.r=new i(e.r,16),this.s=new i(e.s,16),void 0===e.recoveryParam?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}function s(){this.place=0}function d(e,t){var r=e[t.place++];if(!(128&r))return r;var i=15&r;if(0===i||i>4)return!1;for(var n=0,a=0,o=t.place;a>>=0;return!(n<=127)&&(t.place=o,n)}function u(e){for(var t=0,r=e.length-1;!e[t]&&!(128&e[t+1])&&t>>3);for(e.push(128|r);--r;)e.push(t>>>(r<<3)&255);e.push(t)}}e.exports=o,o.prototype._importDER=function(e,t){e=n.toArray(e,t);var r=new s;if(48!==e[r.place++])return!1;var a=d(e,r);if(!1===a)return!1;if(a+r.place!==e.length)return!1;if(2!==e[r.place++])return!1;var o=d(e,r);if(!1===o)return!1;var u=e.slice(r.place,o+r.place);if(r.place+=o,2!==e[r.place++])return!1;var l=d(e,r);if(!1===l)return!1;if(e.length!==l+r.place)return!1;var h=e.slice(r.place,l+r.place);if(0===u[0]){if(!(128&u[1]))return!1;u=u.slice(1)}if(0===h[0]){if(!(128&h[1]))return!1;h=h.slice(1)}return this.r=new i(u),this.s=new i(h),this.recoveryParam=null,!0},o.prototype.toDER=function(e){var t=this.r.toArray(),r=this.s.toArray();for(128&t[0]&&(t=[0].concat(t)),128&r[0]&&(r=[0].concat(r)),t=u(t),r=u(r);!(r[0]||128&r[1]);)r=r.slice(1);var i=[2];l(i,t.length),(i=i.concat(t)).push(2),l(i,r.length);var a=i.concat(r),o=[48];return l(o,a.length),o=o.concat(a),n.encode(o,e)}},function(e,t,r){"use strict";var i=r(65),n=r(64),a=r(16),o=a.assert,s=a.parseBytes,d=r(349),u=r(350);function l(e){if(o("ed25519"===e,"only tested with ed25519 so far"),!(this instanceof l))return new l(e);e=n[e].curve,this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=i.sha512}e.exports=l,l.prototype.sign=function(e,t){e=s(e);var r=this.keyFromSecret(t),i=this.hashInt(r.messagePrefix(),e),n=this.g.mul(i),a=this.encodePoint(n),o=this.hashInt(a,r.pubBytes(),e).mul(r.priv()),d=i.add(o).umod(this.curve.n);return this.makeSignature({R:n,S:d,Rencoded:a})},l.prototype.verify=function(e,t,r){e=s(e),t=this.makeSignature(t);var i=this.keyFromPublic(r),n=this.hashInt(t.Rencoded(),i.pubBytes(),e),a=this.g.mul(t.S());return t.R().add(i.pub().mul(n)).eq(a)},l.prototype.hashInt=function(){for(var e=this.hash(),t=0;t=0)throw new Error("invalid sig")}e.exports=function(e,t,r,u,l){var h=o(r);if("ec"===h.type){if("ecdsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");return function(e,t,r){var i=s[r.data.algorithm.curve.join(".")];if(!i)throw new Error("unknown curve "+r.data.algorithm.curve.join("."));var n=new a(i),o=r.data.subjectPrivateKey.data;return n.verify(t,e,o)}(e,t,h)}if("dsa"===h.type){if("dsa"!==u)throw new Error("wrong public key type");return function(e,t,r){var i=r.data.p,a=r.data.q,s=r.data.g,u=r.data.pub_key,l=o.signature.decode(e,"der"),h=l.s,c=l.r;d(h,a),d(c,a);var f=n.mont(i),m=h.invm(a);return 0===s.toRed(f).redPow(new n(t).mul(m).mod(a)).fromRed().mul(u.toRed(f).redPow(c.mul(m).mod(a)).fromRed()).mod(i).mod(a).cmp(c)}(e,t,h)}if("rsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");t=i.concat([l,t]);for(var c=h.modulus.byteLength(),f=[1],m=0;t.length+f.length+2r-c-2)throw new Error("message too long");var f=h.alloc(r-i-c-2),m=r-l-1,_=n(l),p=s(h.concat([u,f,h.alloc(1,1),t],m),o(_,m)),y=s(_,o(p,l));return new d(h.concat([h.alloc(1),y,p],r))}(m,t);else if(1===c)f=function(e,t,r){var i,a=t.length,o=e.modulus.byteLength();if(a>o-11)throw new Error("message too long");i=r?h.alloc(o-a-3,255):function(e){var t,r=h.allocUnsafe(e),i=0,a=n(2*e),o=0;for(;i=0)throw new Error("data too long for modulus")}return r?l(f,m):u(f,m)}},function(e,t,r){var i=r(46),n=r(118),a=r(119),o=r(12),s=r(62),d=r(32),u=r(120),l=r(7).Buffer;e.exports=function(e,t,r){var h;h=e.padding?e.padding:r?1:4;var c,f=i(e),m=f.modulus.byteLength();if(t.length>m||new o(t).cmp(f.modulus)>=0)throw new Error("decryption error");c=r?u(new o(t),f):s(t,f);var _=l.alloc(m-c.length);if(c=l.concat([_,c],m),4===h)return function(e,t){var r=e.modulus.byteLength(),i=d("sha1").update(l.alloc(0)).digest(),o=i.length;if(0!==t[0])throw new Error("decryption error");var s=t.slice(1,o+1),u=t.slice(o+1),h=a(s,n(u,o)),c=a(u,n(h,r-o-1));if(function(e,t){e=l.from(e),t=l.from(t);var r=0,i=e.length;e.length!==t.length&&(r++,i=Math.min(e.length,t.length));var n=-1;for(;++n=t.length){a++;break}var o=t.slice(2,n-1);("0002"!==i.toString("hex")&&!r||"0001"!==i.toString("hex")&&r)&&a++;o.length<8&&a++;if(a)throw new Error("decryption error");return t.slice(n)}(0,c,r);if(3===h)return c;throw new Error("unknown padding")}},function(e,t,r){"use strict";(function(e,i){function n(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var a=r(7),o=r(25),s=a.Buffer,d=a.kMaxLength,u=e.crypto||e.msCrypto,l=Math.pow(2,32)-1;function h(e,t){if("number"!=typeof e||e!=e)throw new TypeError("offset must be a number");if(e>l||e<0)throw new TypeError("offset must be a uint32");if(e>d||e>t)throw new RangeError("offset out of range")}function c(e,t,r){if("number"!=typeof e||e!=e)throw new TypeError("size must be a number");if(e>l||e<0)throw new TypeError("size must be a uint32");if(e+t>r||e>d)throw new RangeError("buffer too small")}function f(e,t,r,n){if(i.browser){var a=e.buffer,s=new Uint8Array(a,t,r);return u.getRandomValues(s),n?void i.nextTick((function(){n(null,e)})):e}if(!n)return o(r).copy(e,t),e;o(r,(function(r,i){if(r)return n(r);i.copy(e,t),n(null,e)}))}u&&u.getRandomValues||!i.browser?(t.randomFill=function(t,r,i,n){if(!(s.isBuffer(t)||t instanceof e.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof r)n=r,r=0,i=t.length;else if("function"==typeof i)n=i,i=t.length-r;else if("function"!=typeof n)throw new TypeError('"cb" argument must be a function');return h(r,t.length),c(i,r,t.length),f(t,r,i,n)},t.randomFillSync=function(t,r,i){void 0===r&&(r=0);if(!(s.isBuffer(t)||t instanceof e.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');h(r,t.length),void 0===i&&(i=t.length-r);return c(i,r,t.length),f(t,r,i)}):(t.randomFill=n,t.randomFillSync=n)}).call(this,r(14),r(11))},function(e,t,r){var i={"./af":121,"./af.js":121,"./ar":122,"./ar-dz":123,"./ar-dz.js":123,"./ar-kw":124,"./ar-kw.js":124,"./ar-ly":125,"./ar-ly.js":125,"./ar-ma":126,"./ar-ma.js":126,"./ar-ps":127,"./ar-ps.js":127,"./ar-sa":128,"./ar-sa.js":128,"./ar-tn":129,"./ar-tn.js":129,"./ar.js":122,"./az":130,"./az.js":130,"./be":131,"./be.js":131,"./bg":132,"./bg.js":132,"./bm":133,"./bm.js":133,"./bn":134,"./bn-bd":135,"./bn-bd.js":135,"./bn.js":134,"./bo":136,"./bo.js":136,"./br":137,"./br.js":137,"./bs":138,"./bs.js":138,"./ca":139,"./ca.js":139,"./cs":140,"./cs.js":140,"./cv":141,"./cv.js":141,"./cy":142,"./cy.js":142,"./da":143,"./da.js":143,"./de":144,"./de-at":145,"./de-at.js":145,"./de-ch":146,"./de-ch.js":146,"./de.js":144,"./dv":147,"./dv.js":147,"./el":148,"./el.js":148,"./en-au":149,"./en-au.js":149,"./en-ca":150,"./en-ca.js":150,"./en-gb":151,"./en-gb.js":151,"./en-ie":152,"./en-ie.js":152,"./en-il":153,"./en-il.js":153,"./en-in":154,"./en-in.js":154,"./en-nz":155,"./en-nz.js":155,"./en-sg":156,"./en-sg.js":156,"./eo":157,"./eo.js":157,"./es":158,"./es-do":159,"./es-do.js":159,"./es-mx":160,"./es-mx.js":160,"./es-us":161,"./es-us.js":161,"./es.js":158,"./et":162,"./et.js":162,"./eu":163,"./eu.js":163,"./fa":164,"./fa.js":164,"./fi":165,"./fi.js":165,"./fil":166,"./fil.js":166,"./fo":167,"./fo.js":167,"./fr":168,"./fr-ca":169,"./fr-ca.js":169,"./fr-ch":170,"./fr-ch.js":170,"./fr.js":168,"./fy":171,"./fy.js":171,"./ga":172,"./ga.js":172,"./gd":173,"./gd.js":173,"./gl":174,"./gl.js":174,"./gom-deva":175,"./gom-deva.js":175,"./gom-latn":176,"./gom-latn.js":176,"./gu":177,"./gu.js":177,"./he":178,"./he.js":178,"./hi":179,"./hi.js":179,"./hr":180,"./hr.js":180,"./hu":181,"./hu.js":181,"./hy-am":182,"./hy-am.js":182,"./id":183,"./id.js":183,"./is":184,"./is.js":184,"./it":185,"./it-ch":186,"./it-ch.js":186,"./it.js":185,"./ja":187,"./ja.js":187,"./jv":188,"./jv.js":188,"./ka":189,"./ka.js":189,"./kk":190,"./kk.js":190,"./km":191,"./km.js":191,"./kn":192,"./kn.js":192,"./ko":193,"./ko.js":193,"./ku":194,"./ku-kmr":195,"./ku-kmr.js":195,"./ku.js":194,"./ky":196,"./ky.js":196,"./lb":197,"./lb.js":197,"./lo":198,"./lo.js":198,"./lt":199,"./lt.js":199,"./lv":200,"./lv.js":200,"./me":201,"./me.js":201,"./mi":202,"./mi.js":202,"./mk":203,"./mk.js":203,"./ml":204,"./ml.js":204,"./mn":205,"./mn.js":205,"./mr":206,"./mr.js":206,"./ms":207,"./ms-my":208,"./ms-my.js":208,"./ms.js":207,"./mt":209,"./mt.js":209,"./my":210,"./my.js":210,"./nb":211,"./nb.js":211,"./ne":212,"./ne.js":212,"./nl":213,"./nl-be":214,"./nl-be.js":214,"./nl.js":213,"./nn":215,"./nn.js":215,"./oc-lnc":216,"./oc-lnc.js":216,"./pa-in":217,"./pa-in.js":217,"./pl":218,"./pl.js":218,"./pt":219,"./pt-br":220,"./pt-br.js":220,"./pt.js":219,"./ro":221,"./ro.js":221,"./ru":222,"./ru.js":222,"./sd":223,"./sd.js":223,"./se":224,"./se.js":224,"./si":225,"./si.js":225,"./sk":226,"./sk.js":226,"./sl":227,"./sl.js":227,"./sq":228,"./sq.js":228,"./sr":229,"./sr-cyrl":230,"./sr-cyrl.js":230,"./sr.js":229,"./ss":231,"./ss.js":231,"./sv":232,"./sv.js":232,"./sw":233,"./sw.js":233,"./ta":234,"./ta.js":234,"./te":235,"./te.js":235,"./tet":236,"./tet.js":236,"./tg":237,"./tg.js":237,"./th":238,"./th.js":238,"./tk":239,"./tk.js":239,"./tl-ph":240,"./tl-ph.js":240,"./tlh":241,"./tlh.js":241,"./tr":242,"./tr.js":242,"./tzl":243,"./tzl.js":243,"./tzm":244,"./tzm-latn":245,"./tzm-latn.js":245,"./tzm.js":244,"./ug-cn":246,"./ug-cn.js":246,"./uk":247,"./uk.js":247,"./ur":248,"./ur.js":248,"./uz":249,"./uz-latn":250,"./uz-latn.js":250,"./uz.js":249,"./vi":251,"./vi.js":251,"./x-pseudo":252,"./x-pseudo.js":252,"./yo":253,"./yo.js":253,"./zh-cn":254,"./zh-cn.js":254,"./zh-hk":255,"./zh-hk.js":255,"./zh-mo":256,"./zh-mo.js":256,"./zh-tw":257,"./zh-tw.js":257};function n(e){var t=a(e);return r(t)}function a(e){if(!r.o(i,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return i[e]}n.keys=function(){return Object.keys(i)},n.resolve=a,e.exports=n,n.id=371},function(e,t,r){"use strict";r.r(t);r(1);var i=r(20),n=r(47),a=r(38),o=r(3);t.default=function(e){var t=null,r=function(t,r){e.postMessage({msg:"logcat_callback",data:{type:t,logcat:r}})}.bind(this);function s(t,r){var i={msg:o.a.INIT_SEGMENT,data:{type:t,data:r}};e.postMessage(i,[r.data])}function d(t,r){var i={msg:o.a.MEDIA_SEGMENT,data:{type:t,data:r}};e.postMessage(i,[r.data])}function u(){var t={msg:o.a.LOADING_COMPLETE};e.postMessage(t)}function l(){var t={msg:o.a.RECOVERED_EARLY_EOF};e.postMessage(t)}function h(t){var r={msg:o.a.MEDIA_INFO,data:t};e.postMessage(r)}function c(t){var r={msg:o.a.METADATA_ARRIVED,data:t};e.postMessage(r)}function f(t){var r={msg:o.a.SCRIPTDATA_ARRIVED,data:t};e.postMessage(r)}function m(t){var r={msg:o.a.STATISTICS_INFO,data:t};e.postMessage(r)}function _(t,r){e.postMessage({msg:o.a.IO_ERROR,data:{type:t,info:r}})}function p(t,r){e.postMessage({msg:o.a.DEMUX_ERROR,data:{type:t,info:r}})}function y(t){e.postMessage({msg:o.a.RECOMMEND_SEEKPOINT,data:t})}n.a.install(),e.addEventListener("message",(function(n){switch(n.data.cmd){case"init":(t=new a.a(n.data.param[0],n.data.param[1])).on(o.a.IO_ERROR,_.bind(this)),t.on(o.a.DEMUX_ERROR,p.bind(this)),t.on(o.a.INIT_SEGMENT,s.bind(this)),t.on(o.a.MEDIA_SEGMENT,d.bind(this)),t.on(o.a.LOADING_COMPLETE,u.bind(this)),t.on(o.a.RECOVERED_EARLY_EOF,l.bind(this)),t.on(o.a.MEDIA_INFO,h.bind(this)),t.on(o.a.METADATA_ARRIVED,c.bind(this)),t.on(o.a.SCRIPTDATA_ARRIVED,f.bind(this)),t.on(o.a.STATISTICS_INFO,m.bind(this)),t.on(o.a.RECOMMEND_SEEKPOINT,y.bind(this));break;case"destroy":t&&(t.destroy(),t=null),e.postMessage({msg:"destroyed"});break;case"start":t.start();break;case"stop":t.stop();break;case"seek":t.seek(n.data.param);break;case"pause":t.pause();break;case"resume":t.resume();break;case"logging_config":var g=n.data.param;i.a.applyConfig(g),!0===g.enableCallback?i.a.addLogListener(r):i.a.removeLogListener(r)}}))}},function(e,t,r){"use strict";r.r(t),function(e,i,n,a){r.d(t,"EasyPlayerWasmModule",(function(){return f})),r.d(t,"EasyLoadWasmModule",(function(){return m})),r.d(t,"EasyModuleInitialized",(function(){return _}));var o,s=r(2),d=!1,u="",l=void 0!==l?l:{};function h(){var t,s={};for(t in l)l.hasOwnProperty(t)&&(s[t]=l[t]);var d=[],h="./this.program",c=function(e,t){throw t},f=!1,m=!1,_=!1,p=!1,y=!1;if(f="object"==typeof window,m="function"==typeof importScripts,p="object"==typeof e&&"object"==typeof e.versions&&"string"==typeof e.versions.node,_=p&&!f&&!m,y=!f&&!_&&!m,l.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var g,b,v,w,M="";function E(e){return l.locateFile?l.locateFile(e,M):M+e}if(_)M=i+"/",g=function(e,t){var i;return v||(v=r(69)),w||(w=r(70)),e=w.normalize(e),i=v.readFileSync(e),t?i:i.toString()},b=function(e){var t=g(e,!0);return t.buffer||(t=new Uint8Array(t)),P(t.buffer),t},e.argv.length>1&&(h=e.argv[1].replace(/\\/g,"/")),d=e.argv.slice(2),n.exports=l,e.on("uncaughtException",(function(e){if(!(e instanceof ei))throw e})),e.on("unhandledRejection",Ce),c=function(t){e.exit(t)},l.inspect=function(){return"[Emscripten Module object]"};else if(y)"undefined"!=typeof read&&(g=function(e){return read(e)}),b=function(e){var t;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(P("object"==typeof(t=read(e,"binary"))),t)},"undefined"!=typeof scriptArgs?d=scriptArgs:void 0!==arguments&&(d=arguments),"function"==typeof quit&&(c=function(e){quit(e)}),"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print);else{if(!f&&!m)throw new Error("environment detection error");m?M=self.location.href:document.currentScript&&(M=document.currentScript.src),M=0!==M.indexOf("blob:")?M.substr(0,M.lastIndexOf("/")+1):"",g=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},m&&(b=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),function(e,t,r){var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=function(){200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)},function(e){document.title=e}}var A=l.print||console.log.bind(console),T=l.printErr||console.warn.bind(console);for(t in s)s.hasOwnProperty(t)&&(l[t]=s[t]);function k(e){k.shown||(k.shown={}),k.shown[e]||(k.shown[e]=1,T(e))}function S(e,t){var r=[1,0,1,96],i=t.slice(0,1),n=t.slice(1),a={i:127,j:126,f:125,d:124};r.push(n.length);for(var o=0;o=i);)++n;if(n-t>16&&e.subarray&&F)return F.decode(e.subarray(t,n));for(var a="";t>10,56320|1023&u)}}else a+=String.fromCharCode((31&o)<<6|s)}else a+=String.fromCharCode(o)}return a}function U(e,t){return e?H(Q,e,t):""}function B(e,t,r,i){if(!(i>0))return 0;for(var n=r,a=r+i-1,o=0;o=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++o);if(s<=127){if(r>=a)break;t[r++]=s}else if(s<=2047){if(r+1>=a)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=a)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=a)break;s>=2097152&&k("Invalid Unicode code point 0x"+s.toString(16)+" encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF)."),t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-n}function W(e,t,r){return P("number"==typeof r,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),B(e,Q,t,r)}function z(e){for(var t=0,r=0;r=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&e.charCodeAt(++r)),i<=127?++t:t+=i<=2047?2:i<=65535?3:4}return t}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");function X(e,t){P(e.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),q.set(e,t)}function V(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);r||(q[t>>0]=0)}var G,q,Q,K,J,Z,$=65536;function ee(e,t){return e%t>0&&(e+=t-e%t),e}function te(e){G=e,l.HEAP8=q=new Int8Array(e),l.HEAP16=K=new Int16Array(e),l.HEAP32=J=new Int32Array(e),l.HEAPU8=Q=new Uint8Array(e),l.HEAPU16=new Uint16Array(e),l.HEAPU32=Z=new Uint32Array(e),l.HEAPF32=new Float32Array(e),l.HEAPF64=new Float64Array(e)}var re=6584208,ie=1341328,ne=6584208,ae=1341168;P(re%16==0,"stack must start aligned"),P(ne%16==0,"heap must start aligned");var oe=5242880;l.TOTAL_STACK&&P(oe===l.TOTAL_STACK,"the stack size can no longer be determined at runtime");var se=l.TOTAL_MEMORY||67108864;function de(){P(0==(3&ie)),Z[1+(ie>>2)]=34821223,Z[2+(ie>>2)]=2310721022,J[0]=1668509029}function ue(){var e=Z[1+(ie>>2)],t=Z[2+(ie>>2)];34821223==e&&2310721022==t||Ce("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x"+t.toString(16)+" "+e.toString(16)),1668509029!==J[0]&&Ce("Runtime error: The application has corrupted its heap memory area (address zero)!")}function le(e){Ce("Stack overflow! Attempted to allocate "+e+" bytes on the stack, but stack has only "+(ie-Jr()+e)+" bytes available!")}function he(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var r=t.func;"number"==typeof r?void 0===t.arg?l.dynCall_v(r):l.dynCall_vi(r,t.arg):r(void 0===t.arg?null:t.arg)}else t()}}Object.getOwnPropertyDescriptor(l,"TOTAL_MEMORY")||Object.defineProperty(l,"TOTAL_MEMORY",{configurable:!0,get:function(){Ce("Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY")}}),P(se>=oe,"TOTAL_MEMORY should be larger than TOTAL_STACK, was "+se+"! (TOTAL_STACK="+oe+")"),P("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&void 0!==Int32Array.prototype.subarray&&void 0!==Int32Array.prototype.set,"JS engine does not provide full typed array support"),(x=l.wasmMemory?l.wasmMemory:new WebAssembly.Memory({initial:se/$}))&&(G=x.buffer),P((se=G.byteLength)%$==0),te(G),J[ae>>2]=ne,function(){var e=new Int16Array(1),t=new Int8Array(e.buffer);if(e[0]=25459,115!==t[0]||99!==t[1])throw"Runtime error: expected the system to be little-endian!"}();var ce=[],fe=[],me=[],_e=[],pe=!1,ye=!1;function ge(){if(l.preRun)for("function"==typeof l.preRun&&(l.preRun=[l.preRun]);l.preRun.length;)Ee(l.preRun.shift());he(ce)}function be(){ue(),P(!pe),pe=!0,l.noFSInit||ot.init.initialized||ot.init(),rt.init(),he(fe)}function ve(){ue(),ot.ignorePermissions=!1,he(me)}function we(){ue(),ye=!0}function Me(){if(ue(),l.postRun)for("function"==typeof l.postRun&&(l.postRun=[l.postRun]);l.postRun.length;)Ae(l.postRun.shift());he(_e)}function Ee(e){ce.unshift(e)}function Ae(e){_e.unshift(e)}P(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),P(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),P(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),P(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var Te=Math.abs,ke=Math.ceil,Se=Math.floor,Le=Math.min,De=0,Re=null,xe=null,Oe={};function Ye(e){for(var t=e;;){if(!Oe[e])return e;e=t+Math.random()}return e}function Ie(e){De++,l.monitorRunDependencies&&l.monitorRunDependencies(De),e?(P(!Oe[e]),Oe[e]=1,null===Re&&"undefined"!=typeof setInterval&&(Re=setInterval((function(){if(I)return clearInterval(Re),void(Re=null);var e=!1;for(var t in Oe)e||(e=!0,T("still waiting on run dependencies:")),T("dependency: "+t);e&&T("(end of list)")}),1e4))):T("warning: run dependency added without ID")}function Pe(e){if(De--,l.monitorRunDependencies&&l.monitorRunDependencies(De),e?(P(Oe[e]),delete Oe[e]):T("warning: run dependency removed without ID"),0==De&&(null!==Re&&(clearInterval(Re),Re=null),xe)){var t=xe;xe=null,t()}}function Ce(e){throw l.onAbort&&l.onAbort(e),A(e+=""),T(e),I=!0,1,e="abort("+e+") at "+qe(),new WebAssembly.RuntimeError(e)}l.preloadedImages={},l.preloadedAudios={};var Ne="data:application/octet-stream;base64,";function je(e){return String.prototype.startsWith?e.startsWith(Ne):0===e.indexOf(Ne)}var Fe,He,Ue=u+"EasyPlayer.wasm";function Be(){try{if(R)return new Uint8Array(R);if(b)return b(Ue);throw"both async and sync fetching of the wasm failed"}catch(e){Ce(e)}}function We(){return R||!f&&!m||"function"!=typeof fetch?new Promise((function(e,t){e(Be())})):fetch(Ue,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+Ue+"'";return e.arrayBuffer()})).catch((function(){return Be()}))}function ze(){var e={env:xt,wasi_unstable:xt};function t(e,t){var r=e.exports;l.asm=r,Pe("wasm-instantiate")}Ie("wasm-instantiate");var r=l;function i(e){P(l===r,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),r=null,t(e.instance)}function n(t){return We().then((function(t){return WebAssembly.instantiate(t,e)})).then(t,(function(e){T("failed to asynchronously prepare wasm: "+e),Ce(e)}))}if(l.instantiateWasm)try{return l.instantiateWasm(e,t)}catch(e){return T("Module.instantiateWasm callback failed with error: "+e),!1}return function(){if(R||"function"!=typeof WebAssembly.instantiateStreaming||je(Ue)||"function"!=typeof fetch)return n(i);fetch(Ue,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(i,(function(e){T("wasm streaming compile failed: "+e),T("falling back to ArrayBuffer instantiation"),n(i)}))}))}(),{}}function Xe(e){return k("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),e}function Ve(e){return e.replace(/\b_Z[\w\d_]+/g,(function(e){var t=Xe(e);return e===t?e:t+" ["+e+"]"}))}function Ge(){var e=new Error;if(!e.stack){try{throw new Error(0)}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function qe(){var e=Ge();return l.extraStackTrace&&(e+="\n"+l.extraStackTrace()),Ve(e)}function Qe(e){return Qr(e)}je(Ue)||(Ue=E(Ue)),fe.push({func:function(){qr()}});var Ke={};function Je(e,t,r){throw Ke[e]={ptr:e,adjusted:[e],type:t,destructor:r,refcount:0,caught:!1,rethrown:!1},e,"uncaught_exception"in Kr?Kr.uncaught_exceptions++:Kr.uncaught_exceptions=1,e+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function Ze(){}function $e(e){return l.___errno_location?J[l.___errno_location()>>2]=e:T("failed to set errno from JS"),e}var et={splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,t){for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:function(e){var t="/"===e.charAt(0),r="/"===e.substr(-1);return(e=et.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:function(e){var t=et.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:function(e){if("/"===e)return"/";var t=e.lastIndexOf("/");return-1===t?e:e.substr(t+1)},extname:function(e){return et.splitPath(e)[3]},join:function(){var e=Array.prototype.slice.call(arguments,0);return et.normalize(e.join("/"))},join2:function(e,t){return et.normalize(e+"/"+t)}},tt={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:ot.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t="/"===i.charAt(0)}return(t?"/":"")+(e=et.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."},relative:function(e,t){function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=tt.resolve(e).substr(1),t=tt.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),a=Math.min(i.length,n.length),o=a,s=0;s0?i.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(r=window.prompt("Input: "))&&(r+="\n"):"function"==typeof readline&&null!==(r=readline())&&(r+="\n");if(!r)return null;t.input=Rt(r,!0)}return t.input.shift()},put_char:function(e,t){null===t||10===t?(A(H(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(A(H(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(T(H(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(T(H(e.output,0)),e.output=[])}}},it={ops_table:null,mount:function(e){return it.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(ot.isBlkdev(r)||ot.isFIFO(r))throw new ot.ErrnoError(63);it.ops_table||(it.ops_table={dir:{node:{getattr:it.node_ops.getattr,setattr:it.node_ops.setattr,lookup:it.node_ops.lookup,mknod:it.node_ops.mknod,rename:it.node_ops.rename,unlink:it.node_ops.unlink,rmdir:it.node_ops.rmdir,readdir:it.node_ops.readdir,symlink:it.node_ops.symlink},stream:{llseek:it.stream_ops.llseek}},file:{node:{getattr:it.node_ops.getattr,setattr:it.node_ops.setattr},stream:{llseek:it.stream_ops.llseek,read:it.stream_ops.read,write:it.stream_ops.write,allocate:it.stream_ops.allocate,mmap:it.stream_ops.mmap,msync:it.stream_ops.msync}},link:{node:{getattr:it.node_ops.getattr,setattr:it.node_ops.setattr,readlink:it.node_ops.readlink},stream:{}},chrdev:{node:{getattr:it.node_ops.getattr,setattr:it.node_ops.setattr},stream:ot.chrdev_stream_ops}});var n=ot.createNode(e,t,r,i);return ot.isDir(n.mode)?(n.node_ops=it.ops_table.dir.node,n.stream_ops=it.ops_table.dir.stream,n.contents={}):ot.isFile(n.mode)?(n.node_ops=it.ops_table.file.node,n.stream_ops=it.ops_table.file.stream,n.usedBytes=0,n.contents=null):ot.isLink(n.mode)?(n.node_ops=it.ops_table.link.node,n.stream_ops=it.ops_table.link.stream):ot.isChrdev(n.mode)&&(n.node_ops=it.ops_table.chrdev.node,n.stream_ops=it.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n),n},getFileDataAsRegularArray:function(e){if(e.contents&&e.contents.subarray){for(var t=[],r=0;r=t)){t=Math.max(t,r*(r<1048576?2:1.125)|0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t){if(0==t)return e.contents=null,void(e.usedBytes=0);if(!e.contents||e.contents.subarray){var r=e.contents;return e.contents=new Uint8Array(new ArrayBuffer(t)),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),void(e.usedBytes=t)}if(e.contents||(e.contents=[]),e.contents.length>t)e.contents.length=t;else for(;e.contents.length=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-n,i);if(P(o>=0),o>8&&a.subarray)t.set(a.subarray(n,n+o),r);else for(var s=0;s0||n+i8)throw new ot.ErrnoError(32);for(var n=et.normalizeArray(e.split("/").filter((function(e){return!!e})),!1),a=ot.root,o="/",s=0;s40)throw new ot.ErrnoError(32)}}return{path:o,node:a}},getPath:function(e){for(var t;;){if(ot.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:function(e,t){for(var r=0,i=0;i>>0)%ot.nameTable.length},hashAddNode:function(e){var t=ot.hashName(e.parent.id,e.name);e.name_next=ot.nameTable[t],ot.nameTable[t]=e},hashRemoveNode:function(e){var t=ot.hashName(e.parent.id,e.name);if(ot.nameTable[t]===e)ot.nameTable[t]=e.name_next;else for(var r=ot.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:function(e,t){var r=ot.mayLookup(e);if(r)throw new ot.ErrnoError(r,e);for(var i=ot.hashName(e.id,t),n=ot.nameTable[i];n;n=n.name_next){var a=n.name;if(n.parent.id===e.id&&a===t)return n}return ot.lookup(e,t)},createNode:function(e,t,r,i){if(!ot.FSNode){ot.FSNode=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=ot.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ot.FSNode.prototype={};Object.defineProperties(ot.FSNode.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return ot.isDir(this.mode)}},isDevice:{get:function(){return ot.isChrdev(this.mode)}}})}var n=new ot.FSNode(e,t,r,i);return ot.hashAddNode(n),n},destroyNode:function(e){ot.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},flagModes:{r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(e){var t=ot.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:function(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:function(e,t){return ot.ignorePermissions||(-1===t.indexOf("r")||292&e.mode)&&(-1===t.indexOf("w")||146&e.mode)&&(-1===t.indexOf("x")||73&e.mode)?0:2},mayLookup:function(e){var t=ot.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:function(e,t){try{ot.lookupNode(e,t);return 20}catch(e){}return ot.nodePermissions(e,"wx")},mayDelete:function(e,t,r){var i;try{i=ot.lookupNode(e,t)}catch(e){return e.errno}var n=ot.nodePermissions(e,"wx");if(n)return n;if(r){if(!ot.isDir(i.mode))return 54;if(ot.isRoot(i)||ot.getPath(i)===ot.cwd())return 10}else if(ot.isDir(i.mode))return 31;return 0},mayOpen:function(e,t){return e?ot.isLink(e.mode)?32:ot.isDir(e.mode)&&("r"!==ot.flagsToPermissionString(t)||512&t)?31:ot.nodePermissions(e,ot.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(e,t){e=e||0,t=t||ot.MAX_OPEN_FDS;for(var r=e;r<=t;r++)if(!ot.streams[r])return r;throw new ot.ErrnoError(33)},getStream:function(e){return ot.streams[e]},createStream:function(e,t,r){ot.FSStream||(ot.FSStream=function(){},ot.FSStream.prototype={},Object.defineProperties(ot.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}}));var i=new ot.FSStream;for(var n in e)i[n]=e[n];e=i;var a=ot.nextfd(t,r);return e.fd=a,ot.streams[a]=e,e},closeStream:function(e){ot.streams[e]=null},chrdev_stream_ops:{open:function(e){var t=ot.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new ot.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,t){return e<<8|t},registerDevice:function(e,t){ot.devices[e]={stream_ops:t}},getDevice:function(e){return ot.devices[e]},getMounts:function(e){for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:function(e,t){"function"==typeof e&&(t=e,e=!1),ot.syncFSRequests++,ot.syncFSRequests>1&&console.log("warning: "+ot.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=ot.getMounts(ot.root.mount),i=0;function n(e){return P(ot.syncFSRequests>0),ot.syncFSRequests--,t(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((function(t){if(!t.type.syncfs)return a(null);t.type.syncfs(t,e,a)}))},mount:function(e,t,r){if("string"==typeof e)throw e;var i,n="/"===r,a=!r;if(n&&ot.root)throw new ot.ErrnoError(10);if(!n&&!a){var o=ot.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,ot.isMountpoint(i))throw new ot.ErrnoError(10);if(!ot.isDir(i.mode))throw new ot.ErrnoError(54)}var s={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(s);return d.mount=s,s.root=d,n?ot.root=d:i&&(i.mounted=s,i.mount&&i.mount.mounts.push(s)),d},unmount:function(e){var t=ot.lookupPath(e,{follow_mount:!1});if(!ot.isMountpoint(t.node))throw new ot.ErrnoError(28);var r=t.node,i=r.mounted,n=ot.getMounts(i);Object.keys(ot.nameTable).forEach((function(e){for(var t=ot.nameTable[e];t;){var r=t.name_next;-1!==n.indexOf(t.mount)&&ot.destroyNode(t),t=r}})),r.mounted=null;var a=r.mount.mounts.indexOf(i);P(-1!==a),r.mount.mounts.splice(a,1)},lookup:function(e,t){return e.node_ops.lookup(e,t)},mknod:function(e,t,r){var i=ot.lookupPath(e,{parent:!0}).node,n=et.basename(e);if(!n||"."===n||".."===n)throw new ot.ErrnoError(28);var a=ot.mayCreate(i,n);if(a)throw new ot.ErrnoError(a);if(!i.node_ops.mknod)throw new ot.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:function(e,t){return t=void 0!==t?t:438,t&=4095,t|=32768,ot.mknod(e,t,0)},mkdir:function(e,t){return t=void 0!==t?t:511,t&=1023,t|=16384,ot.mknod(e,t,0)},mkdirTree:function(e,t){for(var r=e.split("/"),i="",n=0;nthis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,a=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,o=1048576;n||(o=i);var s=this;s.setDataGetter((function(e){var t=e*o,n=(e+1)*o-1;if(n=Math.min(n,i-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,t){if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==o&&n.setRequestHeader("Range","bytes="+e+"-"+t),"undefined"!=typeof Uint8Array&&(n.responseType="arraybuffer"),n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):Rt(n.responseText||"",!0)}(t,n)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!a&&i||(o=i=1,i=this.getter(0).length,o=i,console.log("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=o,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!m)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new a;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:o}}else s={isDevice:!1,url:r};var d=ot.createFile(e,t,s,i,n);s.contents?d.contents=s.contents:s.url&&(d.contents=null,d.url=s.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var u={};return Object.keys(d.stream_ops).forEach((function(e){var t=d.stream_ops[e];u[e]=function(){if(!ot.forceLoadFile(d))throw new ot.ErrnoError(29);return t.apply(null,arguments)}})),u.read=function(e,t,r,i,n){if(!ot.forceLoadFile(d))throw new ot.ErrnoError(29);var a=e.node.contents;if(n>=a.length)return 0;var o=Math.min(a.length-n,i);if(P(o>=0),a.slice)for(var s=0;s>2]=i.dev,J[r+4>>2]=0,J[r+8>>2]=i.ino,J[r+12>>2]=i.mode,J[r+16>>2]=i.nlink,J[r+20>>2]=i.uid,J[r+24>>2]=i.gid,J[r+28>>2]=i.rdev,J[r+32>>2]=0,He=[i.size>>>0,(Fe=i.size,+Te(Fe)>=1?Fe>0?(0|Le(+Se(Fe/4294967296),4294967295))>>>0:~~+ke((Fe-+(~~Fe>>>0))/4294967296)>>>0:0)],J[r+40>>2]=He[0],J[r+44>>2]=He[1],J[r+48>>2]=4096,J[r+52>>2]=i.blocks,J[r+56>>2]=i.atime.getTime()/1e3|0,J[r+60>>2]=0,J[r+64>>2]=i.mtime.getTime()/1e3|0,J[r+68>>2]=0,J[r+72>>2]=i.ctime.getTime()/1e3|0,J[r+76>>2]=0,He=[i.ino>>>0,(Fe=i.ino,+Te(Fe)>=1?Fe>0?(0|Le(+Se(Fe/4294967296),4294967295))>>>0:~~+ke((Fe-+(~~Fe>>>0))/4294967296)>>>0:0)],J[r+80>>2]=He[0],J[r+84>>2]=He[1],0},doMsync:function(e,t,r,i){var n=new Uint8Array(Q.subarray(e,e+r));ot.msync(t,n,0,r,i)},doMkdir:function(e,t){return"/"===(e=et.normalize(e))[e.length-1]&&(e=e.substr(0,e.length-1)),ot.mkdir(e,t,0),0},doMknod:function(e,t,r){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return ot.mknod(e,t,r),0},doReadlink:function(e,t,r){if(r<=0)return-28;var i=ot.readlink(e),n=Math.min(r,z(i)),a=q[t+n];return W(i,t,r+1),q[t+n]=a,n},doAccess:function(e,t){if(-8&t)return-28;var r;if(!(r=ot.lookupPath(e,{follow:!0}).node))return-44;var i="";return 4&t&&(i+="r"),2&t&&(i+="w"),1&t&&(i+="x"),i&&ot.nodePermissions(r,i)?-2:0},doDup:function(e,t,r){var i=ot.getStream(r);return i&&ot.close(i),ot.open(e,t,0,r,r).fd},doReadv:function(e,t,r,i){for(var n=0,a=0;a>2],s=J[t+(8*a+4)>>2],d=ot.read(e,q,o,s,i);if(d<0)return-1;if(n+=d,d>2],s=J[t+(8*a+4)>>2],d=ot.write(e,q,o,s,i);if(d<0)return-1;n+=d}return n},varargs:0,get:function(e){return st.varargs+=4,J[st.varargs-4>>2]},getStr:function(){return U(st.get())},getStreamFromFD:function(e){void 0===e&&(e=st.get());var t=ot.getStream(e);if(!t)throw new ot.ErrnoError(8);return t},get64:function(){var e=st.get(),t=st.get();return P(e>=0?0===t:-1===t),e},getZero:function(){P(0===st.get())}};function dt(e,t){st.varargs=t;try{var r=st.getStreamFromFD();switch(st.get()){case 0:return(i=st.get())<0?-28:ot.open(r.path,r.flags,0,i).fd;case 1:case 2:return 0;case 3:return r.flags;case 4:var i=st.get();return r.flags|=i,0;case 12:i=st.get();return K[i+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return $e(28),-1;default:return-28}}catch(e){return void 0!==ot&&e instanceof ot.ErrnoError||Ce(e),-e.errno}}function ut(e,t){st.varargs=t;try{var r=st.getStreamFromFD(),i=st.get(),n=st.get();return ot.read(r,q,i,n)}catch(e){return void 0!==ot&&e instanceof ot.ErrnoError||Ce(e),-e.errno}}function lt(e,t){st.varargs=t;try{var r=st.getStr(),i=st.get(),n=st.get();return ot.open(r,i,n).fd}catch(e){return void 0!==ot&&e instanceof ot.ErrnoError||Ce(e),-e.errno}}function ht(){}function ct(){Ce()}function ft(){return void 0===ft.start&&(ft.start=Date.now()),1e3*(Date.now()-ft.start)|0}function mt(){return q.length}function _t(e,t,r){Q.set(Q.subarray(t,t+r),e)}function pt(e){try{return x.grow(e-G.byteLength+65535>>16),te(x.buffer),1}catch(t){console.error("emscripten_realloc_buffer: Attempted to grow heap from "+G.byteLength+" bytes to "+e+" bytes, but got error: "+t)}}function yt(e){var t=mt();P(e>t);if(e>2147418112)return T("Cannot enlarge memory, asked to go up to "+e+" bytes, but the limit is 2147418112 bytes!"),!1;for(var r=Math.max(t,16777216);r=0?+Se(e+.5):+ke(e-.5)}function Lt(e){O(0|e)}function Dt(e){var t=Date.now()/1e3|0;return e&&(J[e>>2]=t),t}function Rt(e,t,r){var i=r>0?r:z(e)+1,n=new Array(i),a=B(e,n,0,n.length);return t&&(n.length=a),n}ot.staticInit();var xt={__cxa_allocate_exception:Qe,__cxa_throw:Je,__lock:Ze,__syscall221:dt,__syscall3:ut,__syscall5:lt,__unlock:ht,abort:ct,clock:ft,emscripten_memcpy_big:_t,emscripten_resize_heap:yt,environ_get:vt,environ_sizes_get:wt,fd_close:Mt,fd_fdstat_get:Et,fd_seek:At,fd_write:Tt,gettimeofday:kt,memory:x,round:St,setTempRet0:Lt,table:Y,time:Dt},Ot=ze(),Yt=Ot.__wasm_call_ctors;Ot.__wasm_call_ctors=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Yt.apply(null,arguments)};var It=Ot.WasmDecoder_Check;Ot.WasmDecoder_Check=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),It.apply(null,arguments)};var Pt=Ot.WasmDecoder_Init;Ot.WasmDecoder_Init=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Pt.apply(null,arguments)};var Ct=Ot.WasmDecoder_Deinit;Ot.WasmDecoder_Deinit=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ct.apply(null,arguments)};var Nt=Ot.WasmDecoder_OpenChannel;Ot.WasmDecoder_OpenChannel=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Nt.apply(null,arguments)};var jt=Ot.WasmDecoder_InputFlvStream;Ot.WasmDecoder_InputFlvStream=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),jt.apply(null,arguments)};var Ft=Ot.WasmDecoder_GetFlvDecodeData;Ot.WasmDecoder_GetFlvDecodeData=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ft.apply(null,arguments)};var Ht=Ot.WasmDecoder_InputFlvStreamAndDecode;Ot.WasmDecoder_InputFlvStreamAndDecode=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ht.apply(null,arguments)};var Ut=Ot.WasmDecoder_OpenVideoDecoder;Ot.WasmDecoder_OpenVideoDecoder=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ut.apply(null,arguments)};var Bt=Ot.WasmDecoder_OpenAudioDecoder;Ot.WasmDecoder_OpenAudioDecoder=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Bt.apply(null,arguments)};var Wt=Ot.WasmDecoder_DecodeVideoFrame;Ot.WasmDecoder_DecodeVideoFrame=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Wt.apply(null,arguments)};var zt=Ot.WasmDecoder_DecodeAudioFrame;Ot.WasmDecoder_DecodeAudioFrame=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),zt.apply(null,arguments)};var Xt=Ot.WasmDecoder_CloseChannel;Ot.WasmDecoder_CloseChannel=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Xt.apply(null,arguments)};var Vt=Ot.WasmDecoder_ConvertFrame2Image;Ot.WasmDecoder_ConvertFrame2Image=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Vt.apply(null,arguments)};var Gt=Ot.WasmDecoder_ReleaseImageData;Ot.WasmDecoder_ReleaseImageData=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Gt.apply(null,arguments)};var qt=Ot.WasmDecoder_CreateMP4File;Ot.WasmDecoder_CreateMP4File=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),qt.apply(null,arguments)};var Qt=Ot.WasmDecoder_WriteData;Ot.WasmDecoder_WriteData=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Qt.apply(null,arguments)};var Kt=Ot.WasmDecoder_ReleaseMP4File;Ot.WasmDecoder_ReleaseMP4File=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Kt.apply(null,arguments)};var Jt=Ot.main;Ot.main=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Jt.apply(null,arguments)};var Zt=Ot.free;Ot.free=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Zt.apply(null,arguments)};var $t=Ot.malloc;Ot.malloc=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),$t.apply(null,arguments)};var er=Ot.__errno_location;Ot.__errno_location=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),er.apply(null,arguments)};var tr=Ot.fflush;Ot.fflush=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),tr.apply(null,arguments)};var rr=Ot._get_tzname;Ot._get_tzname=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),rr.apply(null,arguments)};var ir=Ot._get_daylight;Ot._get_daylight=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ir.apply(null,arguments)};var nr=Ot._get_timezone;Ot._get_timezone=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),nr.apply(null,arguments)};var ar=Ot.setThrew;Ot.setThrew=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ar.apply(null,arguments)};var or=Ot._ZSt18uncaught_exceptionv;Ot._ZSt18uncaught_exceptionv=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),or.apply(null,arguments)};var sr=Ot.stackSave;Ot.stackSave=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),sr.apply(null,arguments)};var dr=Ot.stackAlloc;Ot.stackAlloc=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),dr.apply(null,arguments)};var ur=Ot.stackRestore;Ot.stackRestore=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ur.apply(null,arguments)};var lr=Ot.__growWasmMemory;Ot.__growWasmMemory=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),lr.apply(null,arguments)};var hr=Ot.dynCall_ii;Ot.dynCall_ii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),hr.apply(null,arguments)};var cr=Ot.dynCall_viiiii;Ot.dynCall_viiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),cr.apply(null,arguments)};var fr=Ot.dynCall_viiiiiifi;Ot.dynCall_viiiiiifi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),fr.apply(null,arguments)};var mr=Ot.dynCall_viiii;Ot.dynCall_viiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),mr.apply(null,arguments)};var _r=Ot.dynCall_viii;Ot.dynCall_viii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),_r.apply(null,arguments)};var pr=Ot.dynCall_iiiiiii;Ot.dynCall_iiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),pr.apply(null,arguments)};var yr=Ot.dynCall_iiiiii;Ot.dynCall_iiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),yr.apply(null,arguments)};var gr=Ot.dynCall_vii;Ot.dynCall_vii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),gr.apply(null,arguments)};var br=Ot.dynCall_iii;Ot.dynCall_iii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),br.apply(null,arguments)};var vr=Ot.dynCall_iiii;Ot.dynCall_iiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),vr.apply(null,arguments)};var wr=Ot.dynCall_viiiiii;Ot.dynCall_viiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),wr.apply(null,arguments)};var Mr=Ot.dynCall_viiiiiiiii;Ot.dynCall_viiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Mr.apply(null,arguments)};var Er=Ot.dynCall_viiiiiiii;Ot.dynCall_viiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Er.apply(null,arguments)};var Ar=Ot.dynCall_iiiii;Ot.dynCall_iiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ar.apply(null,arguments)};var Tr=Ot.dynCall_viiiiiiiiiiiiii;Ot.dynCall_viiiiiiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Tr.apply(null,arguments)};var kr=Ot.dynCall_viiiiiiiiiii;Ot.dynCall_viiiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),kr.apply(null,arguments)};var Sr=Ot.dynCall_viiiiiii;Ot.dynCall_viiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Sr.apply(null,arguments)};var Lr=Ot.dynCall_viiiiiiiiiiii;Ot.dynCall_viiiiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Lr.apply(null,arguments)};var Dr=Ot.dynCall_vi;Ot.dynCall_vi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Dr.apply(null,arguments)};var Rr=Ot.dynCall_iiiiiiiii;Ot.dynCall_iiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Rr.apply(null,arguments)};var xr=Ot.dynCall_viiiifii;Ot.dynCall_viiiifii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),xr.apply(null,arguments)};var Or=Ot.dynCall_fii;Ot.dynCall_fii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Or.apply(null,arguments)};var Yr=Ot.dynCall_viiiiiiiiii;Ot.dynCall_viiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Yr.apply(null,arguments)};var Ir=Ot.dynCall_dd;Ot.dynCall_dd=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ir.apply(null,arguments)};var Pr=Ot.dynCall_viifi;Ot.dynCall_viifi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Pr.apply(null,arguments)};var Cr=Ot.dynCall_fiii;Ot.dynCall_fiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Cr.apply(null,arguments)};var Nr=Ot.dynCall_viidi;Ot.dynCall_viidi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Nr.apply(null,arguments)};var jr=Ot.dynCall_iiiiiiii;Ot.dynCall_iiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),jr.apply(null,arguments)};var Fr=Ot.dynCall_did;Ot.dynCall_did=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Fr.apply(null,arguments)};var Hr=Ot.dynCall_v;Ot.dynCall_v=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Hr.apply(null,arguments)};var Ur=Ot.dynCall_viiijj;Ot.dynCall_viiijj=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ur.apply(null,arguments)};var Br=Ot.dynCall_iiiiiiidiiddii;Ot.dynCall_iiiiiiidiiddii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Br.apply(null,arguments)};var Wr=Ot.dynCall_jij;Ot.dynCall_jij=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Wr.apply(null,arguments)};var zr=Ot.dynCall_jii;Ot.dynCall_jii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),zr.apply(null,arguments)};var Xr=Ot.dynCall_jiji;Ot.dynCall_jiji=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Xr.apply(null,arguments)};var Vr=Ot.dynCall_iidiiii;Ot.dynCall_iidiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Vr.apply(null,arguments)},l.asm=Ot;var Gr,qr=l.___wasm_call_ctors=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.__wasm_call_ctors.apply(null,arguments)},Qr=(l._WasmDecoder_Check=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_Check.apply(null,arguments)},l._WasmDecoder_Init=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_Init.apply(null,arguments)},l._WasmDecoder_Deinit=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_Deinit.apply(null,arguments)},l._WasmDecoder_OpenChannel=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_OpenChannel.apply(null,arguments)},l._WasmDecoder_InputFlvStream=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_InputFlvStream.apply(null,arguments)},l._WasmDecoder_GetFlvDecodeData=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_GetFlvDecodeData.apply(null,arguments)},l._WasmDecoder_InputFlvStreamAndDecode=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_InputFlvStreamAndDecode.apply(null,arguments)},l._WasmDecoder_OpenVideoDecoder=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_OpenVideoDecoder.apply(null,arguments)},l._WasmDecoder_OpenAudioDecoder=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_OpenAudioDecoder.apply(null,arguments)},l._WasmDecoder_DecodeVideoFrame=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_DecodeVideoFrame.apply(null,arguments)},l._WasmDecoder_DecodeAudioFrame=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_DecodeAudioFrame.apply(null,arguments)},l._WasmDecoder_CloseChannel=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_CloseChannel.apply(null,arguments)},l._WasmDecoder_ConvertFrame2Image=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_ConvertFrame2Image.apply(null,arguments)},l._WasmDecoder_ReleaseImageData=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_ReleaseImageData.apply(null,arguments)},l._WasmDecoder_CreateMP4File=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_CreateMP4File.apply(null,arguments)},l._WasmDecoder_WriteData=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_WriteData.apply(null,arguments)},l._WasmDecoder_ReleaseMP4File=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.WasmDecoder_ReleaseMP4File.apply(null,arguments)},l._main=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.main.apply(null,arguments)},l._free=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.free.apply(null,arguments)},l._malloc=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.malloc.apply(null,arguments)}),Kr=(l.___errno_location=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.__errno_location.apply(null,arguments)},l._fflush=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.fflush.apply(null,arguments)},l.__get_tzname=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm._get_tzname.apply(null,arguments)},l.__get_daylight=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm._get_daylight.apply(null,arguments)},l.__get_timezone=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm._get_timezone.apply(null,arguments)},l._setThrew=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.setThrew.apply(null,arguments)},l.__ZSt18uncaught_exceptionv=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm._ZSt18uncaught_exceptionv.apply(null,arguments)}),Jr=l.stackSave=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.stackSave.apply(null,arguments)},Zr=l.stackAlloc=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.stackAlloc.apply(null,arguments)},$r=l.stackRestore=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.stackRestore.apply(null,arguments)};l.__growWasmMemory=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.__growWasmMemory.apply(null,arguments)},l.dynCall_ii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_ii.apply(null,arguments)},l.dynCall_viiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiii.apply(null,arguments)},l.dynCall_viiiiiifi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiifi.apply(null,arguments)},l.dynCall_viiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiii.apply(null,arguments)},l.dynCall_viii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viii.apply(null,arguments)},l.dynCall_iiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iiiiiii.apply(null,arguments)},l.dynCall_iiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iiiiii.apply(null,arguments)},l.dynCall_vii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_vii.apply(null,arguments)},l.dynCall_iii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iii.apply(null,arguments)},l.dynCall_iiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iiii.apply(null,arguments)},l.dynCall_viiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiii.apply(null,arguments)},l.dynCall_viiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiiiii.apply(null,arguments)},l.dynCall_viiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiiii.apply(null,arguments)},l.dynCall_iiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iiiii.apply(null,arguments)},l.dynCall_viiiiiiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiiiiiiiiii.apply(null,arguments)},l.dynCall_viiiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiiiiiii.apply(null,arguments)},l.dynCall_viiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiii.apply(null,arguments)},l.dynCall_viiiiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiiiiiiii.apply(null,arguments)},l.dynCall_vi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_vi.apply(null,arguments)},l.dynCall_iiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iiiiiiiii.apply(null,arguments)},l.dynCall_viiiifii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiifii.apply(null,arguments)},l.dynCall_fii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_fii.apply(null,arguments)},l.dynCall_viiiiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiiiiiiiii.apply(null,arguments)},l.dynCall_dd=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_dd.apply(null,arguments)},l.dynCall_viifi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viifi.apply(null,arguments)},l.dynCall_fiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_fiii.apply(null,arguments)},l.dynCall_viidi=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viidi.apply(null,arguments)},l.dynCall_iiiiiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iiiiiiii.apply(null,arguments)},l.dynCall_did=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_did.apply(null,arguments)},l.dynCall_v=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_v.apply(null,arguments)},l.dynCall_viiijj=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_viiijj.apply(null,arguments)},l.dynCall_iiiiiiidiiddii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iiiiiiidiiddii.apply(null,arguments)},l.dynCall_jij=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_jij.apply(null,arguments)},l.dynCall_jii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_jii.apply(null,arguments)},l.dynCall_jiji=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_jiji.apply(null,arguments)},l.dynCall_iidiiii=function(){return P(pe,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),P(!ye,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),l.asm.dynCall_iidiiii.apply(null,arguments)};function ei(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}l.asm=Ot,Object.getOwnPropertyDescriptor(l,"intArrayFromString")||(l.intArrayFromString=function(){Ce("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"intArrayToString")||(l.intArrayToString=function(){Ce("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),l.ccall=N,l.cwrap=j,Object.getOwnPropertyDescriptor(l,"setValue")||(l.setValue=function(){Ce("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"getValue")||(l.getValue=function(){Ce("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"allocate")||(l.allocate=function(){Ce("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"getMemory")||(l.getMemory=function(){Ce("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"AsciiToString")||(l.AsciiToString=function(){Ce("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stringToAscii")||(l.stringToAscii=function(){Ce("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"UTF8ArrayToString")||(l.UTF8ArrayToString=function(){Ce("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"UTF8ToString")||(l.UTF8ToString=function(){Ce("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stringToUTF8Array")||(l.stringToUTF8Array=function(){Ce("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stringToUTF8")||(l.stringToUTF8=function(){Ce("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"lengthBytesUTF8")||(l.lengthBytesUTF8=function(){Ce("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"UTF16ToString")||(l.UTF16ToString=function(){Ce("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stringToUTF16")||(l.stringToUTF16=function(){Ce("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"lengthBytesUTF16")||(l.lengthBytesUTF16=function(){Ce("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"UTF32ToString")||(l.UTF32ToString=function(){Ce("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stringToUTF32")||(l.stringToUTF32=function(){Ce("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"lengthBytesUTF32")||(l.lengthBytesUTF32=function(){Ce("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"allocateUTF8")||(l.allocateUTF8=function(){Ce("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stackTrace")||(l.stackTrace=function(){Ce("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"addOnPreRun")||(l.addOnPreRun=function(){Ce("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"addOnInit")||(l.addOnInit=function(){Ce("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"addOnPreMain")||(l.addOnPreMain=function(){Ce("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"addOnExit")||(l.addOnExit=function(){Ce("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"addOnPostRun")||(l.addOnPostRun=function(){Ce("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"writeStringToMemory")||(l.writeStringToMemory=function(){Ce("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"writeArrayToMemory")||(l.writeArrayToMemory=function(){Ce("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"writeAsciiToMemory")||(l.writeAsciiToMemory=function(){Ce("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"addRunDependency")||(l.addRunDependency=function(){Ce("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"removeRunDependency")||(l.removeRunDependency=function(){Ce("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"ENV")||(l.ENV=function(){Ce("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"FS")||(l.FS=function(){Ce("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"FS_createFolder")||(l.FS_createFolder=function(){Ce("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"FS_createPath")||(l.FS_createPath=function(){Ce("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"FS_createDataFile")||(l.FS_createDataFile=function(){Ce("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"FS_createPreloadedFile")||(l.FS_createPreloadedFile=function(){Ce("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"FS_createLazyFile")||(l.FS_createLazyFile=function(){Ce("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"FS_createLink")||(l.FS_createLink=function(){Ce("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"FS_createDevice")||(l.FS_createDevice=function(){Ce("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"FS_unlink")||(l.FS_unlink=function(){Ce("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(l,"GL")||(l.GL=function(){Ce("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"dynamicAlloc")||(l.dynamicAlloc=function(){Ce("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"loadDynamicLibrary")||(l.loadDynamicLibrary=function(){Ce("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"loadWebAssemblyModule")||(l.loadWebAssemblyModule=function(){Ce("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"getLEB")||(l.getLEB=function(){Ce("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"getFunctionTables")||(l.getFunctionTables=function(){Ce("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"alignFunctionTables")||(l.alignFunctionTables=function(){Ce("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"registerFunctions")||(l.registerFunctions=function(){Ce("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),l.addFunction=D,Object.getOwnPropertyDescriptor(l,"removeFunction")||(l.removeFunction=function(){Ce("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"getFuncWrapper")||(l.getFuncWrapper=function(){Ce("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"prettyPrint")||(l.prettyPrint=function(){Ce("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"makeBigInt")||(l.makeBigInt=function(){Ce("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"dynCall")||(l.dynCall=function(){Ce("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"getCompilerSetting")||(l.getCompilerSetting=function(){Ce("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stackSave")||(l.stackSave=function(){Ce("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stackRestore")||(l.stackRestore=function(){Ce("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"stackAlloc")||(l.stackAlloc=function(){Ce("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"establishStackSpace")||(l.establishStackSpace=function(){Ce("'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"print")||(l.print=function(){Ce("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"printErr")||(l.printErr=function(){Ce("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"getTempRet0")||(l.getTempRet0=function(){Ce("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"setTempRet0")||(l.setTempRet0=function(){Ce("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),l.callMain=ti,Object.getOwnPropertyDescriptor(l,"abort")||(l.abort=function(){Ce("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"Pointer_stringify")||(l.Pointer_stringify=function(){Ce("'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(l,"warnOnce")||(l.warnOnce=function(){Ce("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),l.writeStackCookie=de,l.checkStackCookie=ue,l.abortStackOverflow=le,Object.getOwnPropertyDescriptor(l,"ALLOC_NORMAL")||Object.defineProperty(l,"ALLOC_NORMAL",{configurable:!0,get:function(){Ce("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(l,"ALLOC_STACK")||Object.defineProperty(l,"ALLOC_STACK",{configurable:!0,get:function(){Ce("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(l,"ALLOC_DYNAMIC")||Object.defineProperty(l,"ALLOC_DYNAMIC",{configurable:!0,get:function(){Ce("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(l,"ALLOC_NONE")||Object.defineProperty(l,"ALLOC_NONE",{configurable:!0,get:function(){Ce("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(l,"calledRun")||Object.defineProperty(l,"calledRun",{configurable:!0,get:function(){Ce("'calledRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}});function ti(e){P(0==De,'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])'),P(0==ce.length,"cannot call main when preRun functions remain to be called");var t=l._main;try{ni(t(0,0),!0)}catch(e){if(e instanceof ei)return;if("SimulateInfiniteLoop"==e)return void(o=!0);var r=e;e&&"object"==typeof e&&e.stack&&(r=[e,e.stack]),T("exception thrown: "+r),c(1,e)}finally{!0}}function ri(e){function t(){Gr||(Gr=!0,I||(be(),ve(),l.onRuntimeInitialized&&l.onRuntimeInitialized(),ai&&ti(),Me()))}e=e||d,De>0||(de(),ge(),De>0||(l.setStatus?(l.setStatus("Running..."),setTimeout((function(){setTimeout((function(){l.setStatus("")}),1),t()}),1)):t(),ue()))}function ii(){var e=A,t=T,r=!1;A=T=function(e){r=!0};try{var i=l._fflush;i&&i(0),["stdout","stderr"].forEach((function(e){var t=ot.analyzePath("/dev/"+e);if(t){var i=t.object.rdev,n=rt.ttys[i];n&&n.output&&n.output.length&&(r=!0)}}))}catch(e){}A=e,T=t,r&&k("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.")}function ni(e,t){ii(),t&&o&&0===e||(o?t||T("program exited (with status: "+e+"), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)"):(I=!0,e,we(),l.onExit&&l.onExit(e)),c(e,new ei(e)))}if(xe=function e(){Gr||ri(),Gr||(xe=e)},l.run=ri,l.preInit)for("function"==typeof l.preInit&&(l.preInit=[l.preInit]);l.preInit.length>0;)l.preInit.pop()();var ai=!0;l.noInitialRun&&(ai=!1),o=!0,ri()}var c=function(e){e.isFlvStream=!0,e.enableAudio=!1,e.pause=!1,e.exitFlag=!1,e.needMoreData=!1,e.wasmDecoderId=-1,e.wasmInitVideoDecoder=!1,e.wasmInitAudioDecoder=!1,e.videoQueue=[],e.audioQueue=[],e.videoFrameNum=0,e.videoRawData=null,e.audioRawData=null,e.videoPacketData=null,e.audioPacketData=null,e.findKeyFrame=!0,e.videoIntervalHandle=-1,e.videoIntervalValue=40,e.audioIntervalHandle=-1,e.audioIntervalValue=80,e.lastPTS=0,e.ptsCount=0,e.maxCacheFrameNum=0,e.calcDelayFlag=!0,e.procVideoFlag=!1,e.procAudioFlag=!1,e.speed=1;var t=function(){null==e.videoRawData&&(e.videoRawData=l._malloc(16588800)),null==e.audioRawData&&(e.audioRawData=l._malloc(16384)),null==e.videoPacketData&&(e.videoPacketData=l._malloc(1048576)),null==e.audioPacketData&&(e.audioPacketData=l._malloc(2048)),e.wasmDecoderId<0&&(e.wasmDecoderId=l._WasmDecoder_OpenChannel())},r=function(t,r,i,n,a,o,d,u,h,c){if(e.procVideoFlag)return-1;e.procVideoFlag=!0,l.HEAPU8.set(u,e.videoPacketData);var f,m=s.H,_=0;if(m==s.H?_=0:m==s.F?_=2:m==s.G&&(_=26),1==t&&e.videoFrameNum>0&&(e.videoFrameNum-=1),1==t&&!e.wasmInitVideoDecoder&&i)0==l._WasmDecoder_OpenVideoDecoder(e.wasmDecoderId,r,0,0,_)&&(e.wasmInitVideoDecoder=!0);else if(2==t&&!e.wasmInitAudioDecoder){0==l._WasmDecoder_OpenAudioDecoder(e.wasmDecoderId,r,a,d,o)&&(e.wasmInitAudioDecoder=!0)}var p=null;if(1==t&&e.wasmInitVideoDecoder?p=l._WasmDecoder_DecodeVideoFrame(e.wasmDecoderId,e.videoPacketData,h,0,0,e.videoRawData,0):2==t&&e.wasmInitAudioDecoder&&e.enableAudio&&(p=l._WasmDecoder_DecodeAudioFrame(e.wasmDecoderId,e.videoPacketData,h,e.audioRawData,0)),0!=p&&null!=p){var y=l.HEAPU32[p/4],g=(l.HEAPU32[p/4+1],l.HEAPU32[p/4+2]),b=(l.HEAPU32[p/4+3],l.HEAPU32[p/4+4]),v=l.HEAPU32[p/4+5],w=(l.HEAPU32[p/4+6],l.HEAPU32[p/4+7]),M=l.HEAPU32[p/4+8],E=l.HEAPU32[p/4+9],A=l.HEAPU32[p/4+10],T=l.HEAPU32[p/4+11],k=(l.HEAPU32[p/4+12],l.HEAPU32[p/4+13]);if(g<1)return void(e.procVideoFlag=!1);if(1==y){0==_?f=b*v*3/2:2==_?f=b*v*3:(25==_||26==_)&&(f=b*v*4);var S=l.HEAPU8.subarray(e.videoRawData,e.videoRawData+f),L=new Uint8Array(S),D={cmd:s.r,workerId:s.a,mediaType:1,ts:k,width:b,height:v,framesize:h,rawsize:f,fps:w,interval:M,playTimeSec:n,frameNum:e.videoFrameNum,dat:L,sei:c};if(e.postMessage(D,[D.dat.buffer]),b>=1920&&v>=720)return e.procVideoFlag=!1,1}else if(2==y){S=l.HEAPU8.subarray(e.audioRawData,e.audioRawData+g),L=new Uint8Array(S);var R=0;8==T?R=0:16==T?R=1:32==T&&(R=2);D={cmd:s.r,workerId:s.a,mediaType:2,fmt:R,ch:E,samplerate:A,ts:k,framesize:g,dat:L};e.postMessage(D,[D.dat.buffer])}}return e.procVideoFlag=!1,0},i=function(t,r,i,n,a,o){(l.HEAPU8.set(a,e.audioPacketData),e.wasmInitAudioDecoder)||0==l._WasmDecoder_OpenAudioDecoder(e.wasmDecoderId,t,r,n,i)&&(e.wasmInitAudioDecoder=!0);var d=null;if(e.wasmInitAudioDecoder&&e.enableAudio&&(d=l._WasmDecoder_DecodeAudioFrame(e.wasmDecoderId,e.audioPacketData,o,e.audioRawData,0)),0!=d&&null!=d){l.HEAPU32[d/4],l.HEAPU32[d/4+1];var u=l.HEAPU32[d/4+2],h=(l.HEAPU32[d/4+3],l.HEAPU32[d/4+4],l.HEAPU32[d/4+5],l.HEAPU32[d/4+6],l.HEAPU32[d/4+7],l.HEAPU32[d/4+8],l.HEAPU32[d/4+9]),c=l.HEAPU32[d/4+10],f=l.HEAPU32[d/4+11],m=(l.HEAPU32[d/4+12],l.HEAPU32[d/4+13]);if(u<1)return;var _=l.HEAPU8.subarray(e.audioRawData,e.audioRawData+u),p=new Uint8Array(_),y=0;8==f?y=0:16==f?y=1:32==f&&(y=2);var g={cmd:s.r,workerId:s.a,mediaType:2,fmt:y,ch:h,samplerate:c,ts:m,framesize:u,dat:p};e.postMessage(g,[g.dat.buffer])}},n=function(){if(e.wasmDecoderId<0&&t(),e.wasmDecoderId>0&&e.videoQueue.length>0&&!e.pause){var i=null,n=-1;if(e.isFlvStream){if(e.findKeyFrame)for(;e.videoQueue.length>0;){if((i=e.videoQueue[0]).frameType&&e.videoQueue.length<120){e.findKeyFrame=!1;break}e.videoQueue.shift()}else e.videoQueue.length>120&&(e.findKeyFrame=!0);e.videoQueue.length>0&&(null==i&&(i=e.videoQueue[0]),n=r(i.mediaType,i.codecId,i.frameType,i.playTimeSec,i.samplerate,i.channelNum,i.bitPerSample,i.dat,i.dat.length,i.sei))}else i=e.videoQueue[0],n=r(i.mediaType,i.codecId,i.frameType,i.playTimeSec,i.samplerate,i.channelNum,i.bitPerSample,i.dat,i.dat.length);n>=0&&e.videoQueue.shift(),e.videoQueue.length>e.maxCacheFrameNum&&e.videoQueue.length}},a=function(){if(!(e.wasmDecoderId<0)&&e.wasmDecoderId>0)for(;e.audioQueue.length>0&&!e.pause;)if(!e.pause){var t=e.audioQueue[0];e.enableAudio&&i(t.codecId,t.samplerate,t.channelNum,t.bitPerSample,t.dat,t.dat.length),e.audioQueue.shift()}};l.onRuntimeInitialized=function(){e.videoIntervalHandle<0&&(e.videoIntervalHandle=setInterval(n,e.videoIntervalValue)),e.audioIntervalHandle<0&&(e.audioIntervalHandle=setInterval(a,e.audioIntervalValue));var t={cmd:s.o};e.postMessage(t),d=!0},l.onExit=function(){};var f=function(t){if(d){var r=t;(r<5||r>500)&&(r=40),r!=e.videoIntervalValue&&(e.videoIntervalHandle>=0&&(clearInterval(e.videoIntervalHandle),e.videoIntervalHandle=-1),e.videoIntervalValue=Math.floor(r),e.videoIntervalHandle=setInterval(n,e.videoIntervalValue))}},m=function(t){if(t>e.lastPTS)if(e.lastPTS>0){if(e.videoQueue.length%5==0){var r=e.ptsCount/5;e.videoQueue.length<=e.maxCacheFrameNum&&f(r),e.ptsCount=t-e.lastPTS}else e.ptsCount+=t-e.lastPTS;e.lastPTS=t}else e.lastPTS=t,e.ptsCount=40;else e.lastPTS=t,e.ptsCount=40};e.addEventListener("message",(function(r){var i=r.data;switch(i.cmd){case s.x:u=i.url,e.isFlvStream=i.isFlv,d||h();break;case s.m:e.exitFlag=!0,c=null,e.videoIntervalHandle>=0&&(clearInterval(e.videoIntervalHandle),e.videoIntervalHandle=-1),e.audioIntervalHandle>=0&&(clearInterval(e.audioIntervalHandle),e.audioIntervalHandle=-1),e.wasmDecoderId>0&&(l._WasmDecoder_CloseChannel(e.wasmDecoderId),e.wasmDecoderId=-1),null!=e.videoRawData&&(l._free(e.videoRawData),e.videoRawData=null),null!=e.audioRawData&&(l._free(e.audioRawData),e.audioRawData=null),null!=e.videoPacketData&&(l._free(e.videoPacketData),e.videoPacketData=null),null!=e.audioPacketData&&(l._free(e.audioPacketData),e.audioPacketData=null),e.videoQueue.clear,e.videoQueue=[],e.videoQueue.length=0,e.videoFrameNum=0,e.audioQueue.clear,e.audioQueue=[],e.audioQueue.length=0,delete l.HEAP8,delete l.HEAP16,delete l.HEAP32,delete l.HEAPF32,delete l.HEAPF64,delete l.HEAPU8,delete l.HEAPU16,delete l.HEAPU32,delete l.buffer,l.HEAP8=null,l.HEAP16=null,l.HEAP32=null,l.HEAPF32=null,l.HEAPF64=null,l.HEAPU8=null,l.HEAPU16=null,l.HEAPU32=null,l.buffer=null,o=!1,l.callMain("exit"),l=null;var n={cmd:s.m,workerId:s.a};e.postMessage(n),close();break;case s.w:e.enableAudio=!0;break;case s.l:e.enableAudio=!1;break;case s.y:e.pause=!0;break;case s.B:e.pause=!1;break;case s.C:e.videoQueue.clear,e.videoQueue=[],e.videoQueue.length=0,e.videoFrameNum=0,e.audioQueue.clear,e.audioQueue=[],e.audioQueue.length=0;break;case s.E:e.updateIntervalTime(i.interval);break;case s.r:if(e.exitFlag)break;d?e.isFlvStream?(e.wasmDecoderId<0&&t(),e.wasmDecoderId>0?1==i.mediaType?e.videoIntervalHandle>=0&&(e.videoQueue.push(i),e.maxCacheFrameNum=5):2==i.mediaType&&e.audioIntervalHandle>=0&&!e.findKeyFrame&&e.audioQueue.push(i):e.videoQueue.length<100&&1==i.mediaType&&i.frameType&&e.videoIntervalHandle>=0&&(e.videoQueue.push(i),e.videoQueue.length>=5&&e.videoQueue.shift())):(1==i.mediaType?e.videoIntervalHandle>=0&&(e.videoQueue.push(i),m(i.samplerate),e.videoFrameNum+=1,e.calcDelayFlag&&e.maxCacheFrameNum=0&&e.audioQueue.push(i),e.needMoreData=!1):e.isFlvStream&&e.videoQueue.length<5?1==i.mediaType&&i.frameType&&e.videoIntervalHandle>=0&&(e.videoQueue.push(i),e.videoQueue.length>=5&&e.videoQueue.shift()):!e.isFlvStream&&e.videoQueue.length<1e3&&(1==i.mediaType?e.videoIntervalHandle>=0&&(e.videoQueue.push(i),m(i.samplerate),e.videoFrameNum+=1,e.calcDelayFlag&&e.maxCacheFrameNum=0&&e.audioQueue.push(i));break;case s.k:var a=40;switch(i.speed){case"0.75":a=60;break;case"1":a=40;break;case"1.25":a=30;break;case"2":a=20}f(a)}}))};t.default=c;var f=l,m=h,_=d}.call(this,r(11),"/",r(68)(e),r(10).Buffer)},function(e,t,r){"use strict";r.r(t);var i=r(47),n=r(39),a={enableWorker:!1,enableStashBuffer:!0,stashInitialSize:void 0,isLive:!1,lazyLoad:!0,lazyLoadMaxDuration:180,lazyLoadRecoverDuration:30,deferLoadAfterSourceOpen:!0,autoCleanupMaxBackwardDuration:180,autoCleanupMinBackwardDuration:120,statisticsInfoReportInterval:600,fixAudioTimestampGap:!0,accurateSeek:!1,seekType:"range",seekParamStart:"bstart",seekParamEnd:"bend",rangeLoadZeroStart:!1,customSeekHandler:void 0,reuseRedirectedURL:!1,headers:void 0,customLoader:void 0};function o(){return Object.assign({},a)}var s=function(){function e(){}return e.supportMSEH264Playback=function(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')},e.supportNetworkStreamIO=function(){var e=new n.a({},o()),t=e.loaderType;return e.destroy(),"fetch-stream-loader"==t||"xhr-moz-chunked-loader"==t},e.getNetworkLoaderTypeName=function(){var e=new n.a({},o()),t=e.loaderType;return e.destroy(),t},e.supportNativeMediaPlayback=function(t){null==e.videoElement&&(e.videoElement=window.document.createElement("video"));var r=e.videoElement.canPlayType(t);return"probably"===r||"maybe"==r},e.getFeatureList=function(){var t={mseFlvPlayback:!1,mseLiveFlvPlayback:!1,networkStreamIO:!1,networkLoaderName:"",nativeMP4H264Playback:!1,nativeWebmVP8Playback:!1,nativeWebmVP9Playback:!1};return t.mseFlvPlayback=e.supportMSEH264Playback(),t.networkStreamIO=e.supportNetworkStreamIO(),t.networkLoaderName=e.getNetworkLoaderTypeName(),t.mseLiveFlvPlayback=t.mseFlvPlayback&&t.networkStreamIO,t.nativeMP4H264Playback=e.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"'),t.nativeWebmVP8Playback=e.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"'),t.nativeWebmVP9Playback=e.supportNativeMediaPlayback('video/webm; codecs="vp9"'),t},e}(),d=r(4),u=(r(263),r(265),r(267),r(9)),l=r.n(u),h=r(1),c=r(8),f={ERROR:"error",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",METADATA_ARRIVED:"metadata_arrived",SCRIPTDATA_ARRIVED:"scriptdata_arrived",STATISTICS_INFO:"statistics_info",RCORDING_START:"recording_start",RCORDING_END:"recording_end"},m=r(22),_=r.n(m),p=r(20),y=r(38),g=r(3),b=r(18),v=r(2),w={ERROR:"error",SOURCE_OPEN:"source_open",UPDATE_END:"update_end",BUFFER_FULL:"buffer_full",UPDATE_PLAY_INFO:"update_play_info",CHANGE_SPEED:"change_speed",SOURCE_ENDED:"source_ended",RECORDING_END:"recording_end"},M=r(0),E=r.n(M);function A(e){var t=e.match(/rgba?\(\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*([\d.]+)\s*\)/);return{r:parseFloat((parseInt(t[1],10)/255).toFixed(2)),g:parseFloat((parseInt(t[2],10)/255).toFixed(2)),b:parseFloat((parseInt(t[3],10)/255).toFixed(2)),a:parseFloat(t[4])}}var T=function(e){var t,r;return/^#?([a-f\d])([a-f\d])([a-f\d])$/i.test(e)||/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.test(e)?A(4===(t=e).length?(r=/^#?([a-f\d])([a-f\d])([a-f\d])$/i.exec(t),"rgba("+parseInt(r[1]+r[1],16)+", "+parseInt(r[2]+r[2],16)+", "+parseInt(r[3]+r[3],16)+", 1)"):(r=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t),"rgba("+parseInt(r[1],16)+", "+parseInt(r[2],16)+", "+parseInt(r[3],16)+", 1)")):/rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d\.?\d*)\)/.test(e)?A(e):void alert("请输入正确的十六进制、rgba表达式:(#f0f|#ff00ff|rgba(255,0,255,0.4))")},k=function(){function e(e){this.gl=e,this.texture=null}var t=e.prototype;return t.create=function(){var e=this.gl;this.texture=e.createTexture(),this.gl.bindTexture(this.gl.TEXTURE_2D,this.texture),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE)},t.bind=function(e,t,r){this.gl.activeTexture([this.gl.TEXTURE0,this.gl.TEXTURE1,this.gl.TEXTURE2,this.gl.TEXTURE3][e]),this.gl.bindTexture(this.gl.TEXTURE_2D,this.texture),this.gl.uniform1i(this.gl.getUniformLocation(t,r),e)},t.fill=function(e,t,r){this.gl.bindTexture(this.gl.TEXTURE_2D,this.texture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.LUMINANCE,e,t,0,this.gl.LUMINANCE,this.gl.UNSIGNED_BYTE,r)},e}(),S=function(){function e(e){this.canvas=e,this.gl=null,this.is_ios=!!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),this.is_ios?this.gl=e.getContext("webgl")||e.getContext("experimental-webgl"):(this.canvas_ctx=e.getContext("2d"),this.gl_canvas=new OffscreenCanvas(1,1),this.gl=this.gl_canvas.getContext("webgl")||this.gl_canvas.getContext("experimental-webgl")),this.yuv_vertex_shader_source=["attribute highp vec4 aVertexPosition;","attribute vec2 aTextureCoord;","varying highp vec2 vTextureCoord;","void main(void) {"," gl_Position = aVertexPosition;"," vTextureCoord = aTextureCoord;","}"],this.yuv_fragment_shader_source=["precision highp float;","varying lowp vec2 vTextureCoord;","uniform sampler2D YTexture;","uniform sampler2D UTexture;","uniform sampler2D VTexture;","uniform sampler2D TTexture;","const mat4 YUV2RGB = mat4","("," 1.1643828125, 0, 1.59602734375, -.87078515625,"," 1.1643828125, -.39176171875, -.81296875, .52959375,"," 1.1643828125, 2.017234375, 0, -1.081390625,"," 0, 0, 0, 1",");","void main(void) {"," gl_FragColor = mix(vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB, texture2D(TTexture, vTextureCoord), 0.1);","}"],this.yuv_program=null,this.sei_program=null,this.sei_index=0,this.sei_list=[]}var t=e.prototype;return t.testSei=function(){var e=[];return 0===this.sei_index?e=[{SeiType:2,Positions:[0,0],Data:"文本框",Textcolor:"#fff",DurationTime:15e3,Bgcolor:"rgba(255,0,0,0.5)"}]:1e3===this.sei_index&&(e=[{SeiType:-1}]),this.sei_index++,e},t.renderFrame=function(e,t,r,i,n,a){if(!this.gl)return console.log("[ER] Render frame failed due to WebGL not supported.");var o=this.gl;o.viewport(0,0,o.canvas.width,o.canvas.height),o.clearColor(0,0,0,0),o.clear(o.COLOR_BUFFER_BIT),e&&(this.drawYUV(e,t,r,i,n),this.drawSEI(a,t,r))},t.drawSEI=function(e,t,r){var i=this;if(void 0===e&&(e=[]),e||(e=[]),"string"==typeof e&&(e=JSON.parse(e)),e&&0!==e.length){if(e.find((function(e){return-1===e.SeiType})))return this.sei_list=[];e=e.map((function(e){return Object.assign(e,{end_duration:E()().add(e.DurationTime,"milliseconds")})})),this.sei_list=[].concat(this.sei_list,e)}this.sei_list=this.sei_list.filter((function(e){return e.end_duration&&e.end_duration.diff(E()())>0||0===e.DurationTime}));try{this.sei_list.filter((function(e){return 1===e.SeiType})).forEach((function(e){var t=e.Positions,r=e.Bgcolor;i.drawPolygon(t,r)})),this.gl_canvas&&this.canvas_ctx.drawImage(this.gl_canvas,0,0),this.sei_list.filter((function(e){return 2===e.SeiType})).forEach((function(e){var n=e.Positions,a=e.Textcolor,o=e.Data,s=n[0],d=n[1];i.drawText([t/2*(s+1),r/2*(1-d)],o,a)}))}catch(e){console.log("e",e)}},t.drawText=function(e,t,r){if(void 0===t&&(t="默认文字"),!this.is_ios){var i=new OffscreenCanvas(1920,1080),n=i.getContext("2d");n.font="30px Arial",n.fillStyle=r,n.textBaseline="middle",n.textAlign="center",n.fillText(t,e[0],e[1]),this.canvas_ctx.drawImage(i,0,0)}},t.drawPolygon=function(e,t){var r=this.gl,i=r.createShader(r.VERTEX_SHADER);r.shaderSource(i,"attribute vec2 coordinates;void main(void) {gl_Position = vec4(coordinates, 0.0, 1.0);}"),r.compileShader(i);var n=r.createShader(r.FRAGMENT_SHADER);r.shaderSource(n,"precision mediump float;uniform vec4 color;void main(void){gl_FragColor = color;}"),r.compileShader(n);var a=r.createProgram();r.attachShader(a,i),r.attachShader(a,n),r.linkProgram(a),r.useProgram(a);var o=r.createBuffer();r.bindBuffer(r.ARRAY_BUFFER,o),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW);var s=r.getAttribLocation(a,"coordinates");r.vertexAttribPointer(s,2,r.FLOAT,!1,0,0),r.enableVertexAttribArray(s),r.depthMask(!1),r.enable(r.BLEND),r.blendFunc(r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA);var d=r.getUniformLocation(a,"color"),u=T(t);r.uniform4f(d,u.r,u.g,u.b,u.a),r.drawArrays(r.TRIANGLE_FAN,0,e.length/2)},t.initYUVProgram=function(){var e=this.gl;if(!this.gl)return console.log("[ER] WebGL not supported.");e.pixelStorei(e.UNPACK_ALIGNMENT,1),this.yuv_program=e.createProgram();var t=e.createShader(e.VERTEX_SHADER),r=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(t,this.yuv_vertex_shader_source.join("\n")),e.shaderSource(r,this.yuv_fragment_shader_source.join("\n")),e.compileShader(t),e.compileShader(r),e.attachShader(this.yuv_program,t),e.attachShader(this.yuv_program,r),e.linkProgram(this.yuv_program)},t.drawYUV=function(e,t,r,i,n){var a=this.gl;if(Object.assign(this.is_ios?this.gl:this.gl_canvas,{width:t,height:r}),a.useProgram(this.yuv_program),!a.getProgramParameter(this.yuv_program,a.LINK_STATUS))return console.log("[ER] Shader link failed.");var o=a.getAttribLocation(this.yuv_program,"aVertexPosition");a.enableVertexAttribArray(o);var s=a.getAttribLocation(this.yuv_program,"aTextureCoord");a.enableVertexAttribArray(s);var d=a.createBuffer();a.bindBuffer(a.ARRAY_BUFFER,d),a.bufferData(a.ARRAY_BUFFER,new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0]),a.STATIC_DRAW),a.vertexAttribPointer(o,3,a.FLOAT,!1,0,0);var u=a.createBuffer();a.bindBuffer(a.ARRAY_BUFFER,u),a.bufferData(a.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),a.STATIC_DRAW),a.vertexAttribPointer(s,2,a.FLOAT,!1,0,0),a.y=new k(a),a.y.create(0,null),a.u=new k(a),a.u.create(0,null),a.v=new k(a),a.v.create(0,null),a.y.bind(0,this.yuv_program,"YTexture"),a.u.bind(1,this.yuv_program,"UTexture"),a.v.bind(2,this.yuv_program,"VTexture"),a.y.fill(t,r,e.subarray(0,i)),a.u.fill(t>>1,r>>1,e.subarray(i,i+n)),a.v.fill(t>>1,r>>1,e.subarray(i+n,e.length)),a.drawArrays(a.TRIANGLE_STRIP,0,4)},t.initGL=function(){this.initYUVProgram()},t.renderVideoFrame=function(e,t,r,i){if(this.gl&&e)if(t<1||r<1){var n=this.gl,a=new Uint8Array(n.canvas.width*n.canvas.height*3/2),o=0,s=n.canvas.width*n.canvas.height,d=n.canvas.width*n.canvas.height*5/4,u=a.byteLength;for(o=s;o=o-51&&(e[i]=e[i]*n--/50),r+=this.option.channels;this.startTime=d-51&&(r[a]=r[a]*o--/50),n+=this.option.channels;this.startTime=0;--a){var o=this.tryEntries[a],s=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var d=i.call(o,"catchLoc"),u=i.call(o,"finallyLoc");if(d&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),L(r),_}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var i=r.completion;if("throw"===i.type){var n=i.arg;L(r)}return n}}throw Error("illegal catch attempt")},delegateYield:function(t,r,i){return this.delegate={iterator:x(t),resultName:r,nextLoc:i},"next"===this.method&&(this.arg=e),_}},t}function R(e,t,r,i,n,a,o){try{var s=e[a](o),d=s.value}catch(e){return void r(e)}s.done?t(d):Promise.resolve(d).then(i,n)}var x=function(){function e(e,t,r){var i=this;if(this.TAG="Transmuxer",this._emitter=new l.a,t.enableWorker&&"undefined"!=typeof Worker)try{this._worker=_()(372),this._workerDestroying=!1,this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",param:[e,t]}),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this)},p.a.registerListener(this.e.onLoggingConfigChanged),this._worker.postMessage({cmd:"logging_config",param:p.a.getConfig()})}catch(r){h.a.e(this.TAG,"Error while initialize transmuxing worker, fallback to inline transmuxing"),this._worker=null,this._controller=new y.a(e,t)}else this._controller=new y.a(e,t);if(this._controller){var n=this._controller;n.on(g.a.IO_ERROR,this._onIOError.bind(this)),n.on(g.a.DEMUX_ERROR,this._onDemuxError.bind(this)),n.on(g.a.INIT_SEGMENT,this._onInitSegment.bind(this)),n.on(g.a.MEDIA_SEGMENT,this._onMediaSegment.bind(this)),n.on(g.a.LOADING_COMPLETE,this._onLoadingComplete.bind(this)),n.on(g.a.RECOVERED_EARLY_EOF,this._onRecoveredEarlyEof.bind(this)),n.on(g.a.MEDIA_INFO,this._onMediaInfo.bind(this)),n.on(g.a.METADATA_ARRIVED,this._onMetaDataArrived.bind(this)),n.on(g.a.SCRIPTDATA_ARRIVED,this._onScriptDataArrived.bind(this)),n.on(g.a.STATISTICS_INFO,this._onStatisticsInfo.bind(this)),n.on(g.a.RECOMMEND_SEEKPOINT,this._onRecommendSeekpoint.bind(this)),n.on(g.a.SEI_DATA,this._onReceiveSEIData.bind(this)),n.on(g.a.AUDIO_ERROR,this._onAudioError.bind(this)),n.on(g.a.SOCKET_CLOSE,(function(){return i._emitter.emit(w.SOURCE_ENDED)})),n.on(g.a.RECORDING,(function(e){return i._emitter.emit(g.a.RECORDING,e)})),n.on("loaderChunkArrival",(function(e){return i._emitter.emit("loaderChunkArrival",e)})),n.on("hls_error",(function(){return i._emitter.emit("hls_error")}))}this._wasmDecodeWoker=null,this._wasmRecordingWoker=null,this._mediaCanvas=null,this._mediaElement=r,this._webGLPlayer=null,this._isH265=!1,this._totalDuration=0,this._initDuration=0,this._currentPlayTime=0,this.snapshotTimer=null,this.loadingCompleteTimer=null,this._wasmMuted=!0,this._isFlv=e.url.includes(".flv"),this._videoRecordFindKeyframe=!0,this._videoRecordFileName="record.mp4",this._wasmVideoRecordWorker=null,this._videoRecordiInitFlag=!1,this._wasmAudioPlayer=null,this._wasmAudioFmt=0,this._wasmAudioSamplerate=0,this._wasmAudioChannelNum=1,this._wasmInitAudioPlayer=!1,this._wasmRecordingCb=null,this._config=t}var t=e.prototype;return t.destroy=function(){this._worker?this._workerDestroying||(this._workerDestroying=!0,this._worker.postMessage({cmd:"destroy"}),p.a.removeListener(this.e.onLoggingConfigChanged),this.e=null):(this._controller.destroy(),this._controller=null),this._wasmDecodeWoker&&(this._wasmDecodeWoker.removeAllListeners&&this._wasmDecodeWoker.removeAllListeners(),this._wasmDecodeWoker.postMessage({cmd:v.m}),this._wasmDecodeWoker&&this._wasmDecodeWoker.terminate(),this._wasmDecodeWoker=null),this._wasmRecordingWoker&&(this._wasmRecordingWoker.removeAllListeners&&this._wasmRecordingWoker.removeAllListeners(),this._wasmRecordingWoker.postMessage({cmd:v.m}),this._wasmRecordingWoker&&this._wasmRecordingWoker.terminate(),this._wasmRecordingWoker=null),this._emitter.removeAllListeners(),this._emitter=null,this._mediaCanvas&&this._mediaCanvas.parentNode.removeChild(this._mediaCanvas),this._mediaCanvas=null,this._mediaElement=null,this._webGLPlayer=null,this.snapshotTimer&&clearTimeout(this.snapshotTimer),this.loadingCompleteTimer&&clearTimeout(this.loadingCompleteTimer),this.snapshotTimer=null,this.loadingCompleteTimer=null,this._wasmAudioPlayer=null,this._wasmRecordingCb=null},t.on=function(e,t){this._emitter.addListener(e,t)},t.off=function(e,t){this._emitter.removeListener(e,t)},t.hasWorker=function(){return null!=this._worker},t.open=function(){this._worker?this._worker.postMessage({cmd:"start"}):(this._controller.setReceiveH265MediaFrame(this._onReceiveH265MediaFrame.bind(this)),this._controller.start())},t.close=function(){this._worker?this._worker.postMessage({cmd:"stop"}):this._controller.stop()},t.seek=function(e){this._worker?this._worker.postMessage({cmd:"seek",param:e}):this._controller.seek(e)},t.pause=function(){if(this._isH265){var e={cmd:v.y};this._wasmDecodeWoker&&void 0!==this._wasmDecodeWoker&&this._wasmDecodeWoker.postMessage(e)}else this._worker?this._worker.postMessage({cmd:"pause"}):this._controller.pause()},t.resume=function(){if(this._isH265){var e={cmd:v.B};this._wasmDecodeWoker&&void 0!==this._wasmDecodeWoker&&this._wasmDecodeWoker.postMessage(e)}else this._worker?this._worker.postMessage({cmd:"resume"}):this._controller.resume()},t.speed=function(e){this._wasmDecodeWoker.postMessage({cmd:"SPEED",speed:e})},t._onInitSegment=function(e,t){var r=this;Promise.resolve().then((function(){r._emitter.emit(g.a.INIT_SEGMENT,e,t)}))},t._onMediaSegment=function(e,t){var r=this;Promise.resolve().then((function(){r._emitter.emit(g.a.MEDIA_SEGMENT,e,t)}))},t._onLoadingComplete=function(){var e=this;Promise.resolve().then((function(){e._emitter.emit(g.a.LOADING_COMPLETE)}))},t._onRecoveredEarlyEof=function(){var e=this;Promise.resolve().then((function(){e._emitter.emit(g.a.RECOVERED_EARLY_EOF)}))},t._onMediaInfo=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(g.a.MEDIA_INFO,e)}))},t._onMetaDataArrived=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(g.a.METADATA_ARRIVED,e)}))},t._onScriptDataArrived=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(g.a.SCRIPTDATA_ARRIVED,e)}))},t._onStatisticsInfo=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(g.a.STATISTICS_INFO,e)}))},t._onIOError=function(e,t){var r=this;Promise.resolve().then((function(){r._emitter.emit(g.a.IO_ERROR,e,t)}))},t._onDemuxError=function(e,t){var r=this;Promise.resolve().then((function(){r._emitter.emit(g.a.DEMUX_ERROR,e,t)}))},t._onRecommendSeekpoint=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(g.a.RECOMMEND_SEEKPOINT,e)}))},t._onRecommendSeekpoint=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(g.a.RECOMMEND_SEEKPOINT,e)}))},t._encodedH265=function(){var e=this;Promise.resolve().then((function(){e._emitter.emit(g.a.IS_ENCODED_H265,e._isH265)}))},t._onLoggingConfigChanged=function(e){this._worker&&this._worker.postMessage({cmd:"logging_config",param:e})},t._onWorkerMessage=function(e){var t=e.data,r=t.data;if("destroyed"===t.msg||this._workerDestroying)return this._workerDestroying=!1,this._worker.terminate(),void(this._worker=null);switch(t.msg){case g.a.INIT_SEGMENT:case g.a.MEDIA_SEGMENT:this._emitter.emit(t.msg,r.type,r.data);break;case g.a.LOADING_COMPLETE:case g.a.RECOVERED_EARLY_EOF:this._emitter.emit(t.msg);break;case g.a.MEDIA_INFO:Object.setPrototypeOf(r,b.a.prototype),this._emitter.emit(t.msg,r);break;case g.a.METADATA_ARRIVED:case g.a.SCRIPTDATA_ARRIVED:case g.a.STATISTICS_INFO:this._emitter.emit(t.msg,r);break;case g.a.IO_ERROR:case g.a.DEMUX_ERROR:this._emitter.emit(t.msg,r.type,r.info);break;case g.a.RECOMMEND_SEEKPOINT:this._emitter.emit(t.msg,r);break;case"logcat_callback":h.a.emitter.emit("log",r.type,r.logcat)}},t._onReceiveSEIData=function(e){this._emitter.emit(g.a.SEI_DATA,e)},t._onAudioError=function(){this._emitter.emit(g.a.AUDIO_ERROR)},t._creatCanvas=function(){var e=this;this._mediaElement.parentNode.style.position="relative";var t=document.createElement("canvas");t.style="width:100%;height:100%;position:absolute;top:0px;left:0px;display:none",this._mediaCanvas=t,this._mediaElement.parentNode.appendChild(this._mediaCanvas),this._mediaCanvas.ondblclick=function(){return e._emitter.emit(g.a.ON_DBL_CLICK)}},t._onReceiveH265MediaFrame=function(){var e,t=(e=D().mark((function e(t,r,i,n,a,o,s,d,u,l,h,c){var f,m,_,p;return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._isH265||(this._isH265=!0,this._encodedH265(),this._creatCanvas()),!(n<1)||r||1!==s){e.next=3;break}return e.abrupt("return");case 3:if(2===i&&(this._wasmAudioSamplerate=u||0,this._wasmAudioChannelNum=l),null!==this._wasmDecodeWoker){e.next=7;break}return e.next=7,this._createWasmDecodeWorker();case 7:if(!this._wasmDecodeWoker){e.next=15;break}if(f=new Uint8Array(o),m={cmd:v.r,mediaType:i,codecId:n,frameType:a,samplerate:u,channelNum:l,bitPerSample:h,playTimeSec:d,dat:f,sei:c},this._wasmDecodeWoker.postMessage(m,[m.dat.buffer]),this._videoRecordiInitFlag){e.next=13;break}return e.abrupt("return");case 13:1==a&&(this._videoRecordFindKeyframe=!1),this._wasmVideoRecordWorker&&!this._videoRecordFindKeyframe&&(_=new Uint8Array(o),p={cmd:v.r,mediaType:"video",type:1==a,dat:_,pts:d},1===i?(p.mediaType="video",p.codecId="0xAE"):2===i&&(p.mediaType="audio"),this._wasmVideoRecordWorker.postMessage(p,[p.dat.buffer]));case 15:case"end":return e.stop()}}),e,this)})),function(){var t=this,r=arguments;return new Promise((function(i,n){var a=e.apply(t,r);function o(e){R(a,i,n,o,s,"next",e)}function s(e){R(a,i,n,o,s,"throw",e)}o(void 0)}))});return function(e,r,i,n,a,o,s,d,u,l,h,c){return t.apply(this,arguments)}}(),t._createWasmDecodeWorker=function(){if("undefined"!=typeof Worker)try{"none"===this._mediaCanvas.style.display&&(this._mediaCanvas.style.display="block"),this._wasmDecodeWoker=_()(373);var e=v.g(),t=window.localStorage.getItem("electron_config");if(e.startsWith("app://./"))if(t)e=JSON.parse(t).baseURL+"/";else e="http://demo.easycvr.com:4443/";var r={url:e,isFlv:this._isFlv,cmd:v.x};this._wasmDecodeWoker.postMessage(r),this._wasmDecodeWoker.addEventListener("message",this._onWasmWorkerMessage.bind(this)),this._wasmDecodeWoker.onerror=function(e){}}catch(e){this._wasmDecodeWoker=null}else this._wasmDecodeWoker=null;this._wasmDecodeWoker&&null==this._webGLPlayer&&(this._webGLPlayer=new S(this._mediaCanvas),this._webGLPlayer&&this._webGLPlayer.initGL({preserveDrawingBuffer:!1}))},t._onWasmWorkerMessage=function(e){var t=e.data;switch(t.cmd){case v.p:case v.m:break;case v.o:this._wasmMuted||this._openWasmAudio();break;case v.r:if(t.workerId===v.a)if(1===t.mediaType){var r=t.width,i=t.height;if(this._mediaCanvas&&Object.assign(this._mediaCanvas,{width:r,height:i}),t.playTimeSec>0){var n=Math.floor((t.playTimeSec+1e3)/1e3);this._currentPlayTime!==n&&(this._initDuration>0&&(this._currentPlayTime+=n-this._initDuration),this._initDuration!==n&&(this._initDuration=n,this._emitter&&this._emitter.emit(w.UPDATE_PLAY_INFO)))}this._webGLPlayer&&this._webGLPlayer.renderVideoFrame(t.dat,t.width,t.height,t.sei)}else 2===t.mediaType&&(null===this._wasmAudioPlayer?this._creatWasmAudioPlayer(t.fmt,t.samplerate>=16e3?2:t.ch,t.samplerate):(this._wasmAudioFmt=t.fmt,this._wasmAudioSamplerate=t.samplerate,this._wasmAudioChannelNum=t.ch,44100==this._wasmAudioSamplerate&&(this._wasmAudioFmt=1)),!this._wasmMuted&&this._wasmAudioPlayer&&this._wasmInitAudioPlayer&&this._wasmAudioPlayer.play(t.dat));break;case v.n:break;case v.x:this._videoRecordiInitFlag=!0,this._videoRecordFindKeyframe=!0;break;case v.q:this._videoRecordiInitFlag=!1;var a=document.createElement("a");a.style.display="none",a.href=t.dat,a.download=this._videoRecordFileName,document.body.appendChild(a),a.click(),window.URL.revokeObjectURL(a.href),document.body.removeChild(a),this._videoRecordFindKeyframe=!1,this._wasmVideoRecordWorker.terminate(),this._wasmVideoRecordWorker=null,this._wasmRecordingCb(),this._wasmRecordingCb=null}},t._creatWasmAudioPlayer=function(e,t,r){if(null===this._wasmAudioPlayer){1;var i="16bitInt";i="16bitInt",this._wasmAudioPlayer=new L,this._wasmAudioPlayer.init({encoding:i,channels:t,sampleRate:r,flushingTime:1e3}),this._wasmInitAudioPlayer=!0}},t._getCurrentPlayTime=function(){return this._currentPlayTime},t._getTotalDuration=function(){if(this._controller)return this._controller._getHLSTotalDuration()},t._seekToSecs=function(e,t){var r={cmd:v.C,type:t,time:e};this._wasmDecodeWoker&&this._wasmDecodeWoker.postMessage(r),this._controller._seekToSecs(e,t)},t.saveLocalSnapshot=function(e){var t=this;if(this._mediaCanvas.toDataURL("image/jpg",1).length<786432)return this.snapshotTimer=setTimeout((function(){return t.saveLocalSnapshot(e)}),40);this.snapshotTimer&&clearTimeout(this.snapshotTimer),this.snapshotTimer=null,this._mediaCanvas.toBlob((function(r){var i=window.URL.createObjectURL(r),n=document.createElement("a");n.style.display="none",n.href=i,n.download=(e||"easy-player")+"-"+(new Date).getTime(),n.click(),t._emitter.emit("snapshot",r)}))},t.saveImageDateURL=function(){return this._mediaCanvas.toDataURL("image/jpg",1)},t.videoRecording=function(e,t,r,i){if(i&&(this._wasmRecordingCb=i),this._wasmDecodeWoker)if(1===r){if(this._videoRecordFileName=e,this._videoRecordingCB=i,null===this._wasmVideoRecordWorker){this._videoRecordFindKeyframe=!0;try{this._wasmVideoRecordWorker=_()(67),this.onwmsg=this._onWasmWorkerMessage.bind(this);var n={cmd:v.x,url:v.g(),filesize:t,audioSamplerate:this._wasmAudioSamplerate,channelCount:this._wasmAudioChannelNum};this._wasmVideoRecordWorker.postMessage(n),this._wasmVideoRecordWorker.addEventListener("message",this.onwmsg)}catch(e){this._wasmVideoRecordWorker&&this._wasmVideoRecordWorker.terminate(),this._wasmVideoRecordWorker=null}}}else this._videoRecordiInitFlag=!1,this._wasmVideoRecordWorker&&(this._wasmVideoRecordWorker.postMessage({cmd:v.D}),this._videoRecordFindKeyframe=!0);else{if(!this._controller)return;this._controller.videoRecording(e,t,r,i)}},t._openWasmAudio=function(){this._wasmDecodeWoker&&(this._wasmDecodeWoker.postMessage({cmd:v.w}),this._wasmMuted=!1,null===this._wasmAudioPlayer&&(this._wasmAudioSamplerate>0?(console.log("_openWasmAudio...."),this._creatWasmAudioPlayer(this._wasmAudioFmt,this._wasmAudioSamplerate>=16e3?2:this._wasmAudioChannelNum,this._wasmAudioSamplerate)):console.log("采样率无效")))},t._closeWasmAudio=function(){this._wasmDecodeWoker&&this._wasmDecodeWoker.postMessage({cmd:v.l}),this._wasmAudioPlayer&&this._wasmInitAudioPlayer&&this._wasmAudioPlayer.clearAudioBuffer(),this._wasmMuted=!1},e}(),O=r(17),Y=r(5),I=function(){function e(e){this.TAG="MSEController",this._config=e,this._emitter=new l.a,this._config.isLive&&null==this._config.autoCleanupSourceBuffer&&(this._config.autoCleanupSourceBuffer=!0),this.e={onSourceOpen:this._onSourceOpen.bind(this),onSourceEnded:this._onSourceEnded.bind(this),onSourceClose:this._onSourceClose.bind(this),onSourceBufferError:this._onSourceBufferError.bind(this),onSourceBufferUpdateEnd:this._onSourceBufferUpdateEnd.bind(this)},this._mediaSource=null,this._mediaSourceObjectURL=null,this._mediaElement=null,this._isBufferFull=!1,this._hasPendingEos=!1,this._requireSetMediaDuration=!1,this._pendingMediaDuration=0,this._pendingSourceBufferInit=[],this._mimeTypes={video:null,audio:null},this._sourceBuffers={video:null,audio:null},this._lastInitSegments={video:null,audio:null},this._pendingSegments={video:[],audio:[]},this._pendingRemoveRanges={video:[],audio:[]},this._idrList=new O.a,this._pause=!1,this._hlsSeekTime=0,this._lastPlayTime=0,this._currentPlayTime=0,this._audioError=!1}var t=e.prototype;return t.destroy=function(){(this._mediaElement||this._mediaSource)&&this.detachMediaElement(),this.e=null,this._emitter.removeAllListeners(),this._emitter=null},t.on=function(e,t){this._emitter.addListener(e,t)},t.off=function(e,t){this._emitter.removeListener(e,t)},t.attachMediaElement=function(e){var t=this;if(this._mediaSource)throw new Y.a("MediaSource has been attached to an HTMLMediaElement!");var r=this._mediaSource=new window.MediaSource;r.addEventListener("sourceopen",this.e.onSourceOpen),r.addEventListener("sourceended",this.e.onSourceEnded),r.addEventListener("sourceclose",this.e.onSourceClose),this._mediaElement=e,this._mediaSourceObjectURL=window.URL.createObjectURL(this._mediaSource),this._mediaElement.src=this._mediaSourceObjectURL,e.addEventListener("timeupdate",(function(){var r=Math.floor(e.currentTime);t._hlsSeekTime>0&&(r=r-self._lastPlayTime+self._hlsSeekTime),t._currentPlayTime!==r&&(t._currentPlayTime=r,t._emitter&&t._emitter.emit(w.UPDATE_PLAY_INFO,{currentTime:t._currentPlayTime,duration:t._mediaElement.duration}))}),!1)},t.getCurrentPlayTime=function(){return this._currentPlayTime},t.getTotalDuration=function(){return this._mediaElement.duration},t.detachMediaElement=function(){if(this._mediaSource){var e=this._mediaSource;for(var t in this._sourceBuffers){var r=this._pendingSegments[t];r.splice(0,r.length),this._pendingSegments[t]=null,this._pendingRemoveRanges[t]=null,this._lastInitSegments[t]=null;var i=this._sourceBuffers[t];if(i){if("closed"!==e.readyState){try{e.removeSourceBuffer(i)}catch(e){h.a.e(this.TAG,e.message)}i.removeEventListener("error",this.e.onSourceBufferError),i.removeEventListener("updateend",this.e.onSourceBufferUpdateEnd)}this._mimeTypes[t]=null,this._sourceBuffers[t]=null}}if("open"===e.readyState)try{e.endOfStream()}catch(e){h.a.e(this.TAG,e.message)}e.removeEventListener("sourceopen",this.e.onSourceOpen),e.removeEventListener("sourceended",this.e.onSourceEnded),e.removeEventListener("sourceclose",this.e.onSourceClose),this._pendingSourceBufferInit=[],this._isBufferFull=!1,this._idrList.clear(),this._mediaSource=null}this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement=null),this._mediaSourceObjectURL&&(window.URL.revokeObjectURL(this._mediaSourceObjectURL),this._mediaSourceObjectURL=null)},t.appendInitSegment=function(e,t){if(!this._mediaSource||"open"!==this._mediaSource.readyState)return this._pendingSourceBufferInit.push(e),void this._pendingSegments[e.type].push(e);var r=e,i=""+r.container;r.codec&&r.codec.length>0&&(i+=";codecs="+r.codec);var n=!1;if(this._lastInitSegments[r.type]=r,i!==this._mimeTypes[r.type]){if(this._mimeTypes[r.type])h.a.v(this.TAG,"Notice: "+r.type+" mimeType changed, origin: "+this._mimeTypes[r.type]+", target: "+i);else{n=!0;try{var a=this._sourceBuffers[r.type]=this._mediaSource.addSourceBuffer(i);a.addEventListener("error",this.e.onSourceBufferError),a.addEventListener("updateend",this.e.onSourceBufferUpdateEnd)}catch(e){return h.a.e(this.TAG,e.message),void this._emitter.emit(w.ERROR,{code:e.code,msg:e.message})}}this._mimeTypes[r.type]=i}t||this._pendingSegments[r.type].push(r),n||this._sourceBuffers[r.type]&&!this._sourceBuffers[r.type].updating&&this._doAppendSegments(),c.a.safari&&"audio/mpeg"===r.container&&r.mediaDuration>0&&(this._requireSetMediaDuration=!0,this._pendingMediaDuration=r.mediaDuration/1e3,this._updateMediaSourceDuration())},t.appendMediaSegment=function(e){if("audio"!==e.type||!this._audioError){var t=e;this._pendingSegments[t.type].push(t),this._config.autoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer();var r=this._sourceBuffers[t.type];!r||r.updating||this._hasPendingRemoveRanges()||this._doAppendSegments()}},t.seek=function(e){for(var t in this._sourceBuffers)if(this._sourceBuffers[t]){var r=this._sourceBuffers[t];if("open"===this._mediaSource.readyState)try{r.abort()}catch(e){h.a.e(this.TAG,e.message)}this._idrList.clear();var i=this._pendingSegments[t];if(i.splice(0,i.length),"closed"!==this._mediaSource.readyState){for(var n=0;n=1&&e-i.start(0)>=this._config.autoCleanupMaxBackwardDuration)return!0}}return!1},t._doCleanupSourceBuffer=function(){var e=this._mediaElement.currentTime;for(var t in this._sourceBuffers){var r=this._sourceBuffers[t];if(r){for(var i=r.buffered,n=!1,a=0;a=this._config.autoCleanupMaxBackwardDuration){n=!0;var d=e-this._config.autoCleanupMinBackwardDuration;this._pendingRemoveRanges[t].push({start:o,end:d})}}else s0&&(isNaN(t)||r>t)&&(h.a.v(this.TAG,"Update MediaSource duration from "+t+" to "+r),this._mediaSource.duration=r),this._requireSetMediaDuration=!1,this._pendingMediaDuration=0}},t._doRemoveRanges=function(){for(var e in this._pendingRemoveRanges)if(this._sourceBuffers[e]&&!this._sourceBuffers[e].updating)for(var t=this._sourceBuffers[e],r=this._pendingRemoveRanges[e];r.length&&!t.updating;){var i=r.shift();t.remove(i.start,i.end)}},t._removerAudioSourceBuffer=function(){this._audioError=!0;var e=this._sourceBuffers.audio;e&&(this._mediaSource.removeSourceBuffer(e),e.removeEventListener("error",this.e.onSourceBufferError),e.removeEventListener("updateend",this.e.onSourceBufferUpdateEnd),this._sourceBuffers.audio=null)},t._doAppendSegments=function(){var e=this._pendingSegments;for(var t in v.d()&&!this._pause&&"flv"===this._config.streamType&&this.AdjustPlayTimeToEnd(),e)if(this._sourceBuffers[t]&&!this._sourceBuffers[t].updating&&e[t].length>0){var r=e[t].shift();if(r.timestampOffset){var i=this._sourceBuffers[t].timestampOffset,n=r.timestampOffset/1e3;Math.abs(i-n)>.1&&(h.a.v(this.TAG,"Update MPEG audio timestampOffset from "+i+" to "+n),this._sourceBuffers[t].timestampOffset=n),delete r.timestampOffset}if(!r.data||0===r.data.byteLength)continue;try{this._sourceBuffers[t].appendBuffer(r.data),this._isBufferFull=!1,"video"===t&&r.hasOwnProperty("info")&&this._idrList.appendArray(r.info.syncPoints)}catch(e){if(this._pendingSegments[t].unshift(r),22===e.code)this._isBufferFull||this._emitter.emit(w.BUFFER_FULL),this._isBufferFull=!0;else try{this._emitter.emit(w.ERROR,{code:11,msg:e.message})}catch(e){}}}},t._onSourceOpen=function(){if(h.a.v(this.TAG,"MediaSource onSourceOpen"),this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._pendingSourceBufferInit.length>0)for(var e=this._pendingSourceBufferInit;e.length;){var t=e.shift();this.appendInitSegment(t,!0)}this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(w.SOURCE_OPEN)},t._onSourceEnded=function(){this._emitter.emit(w.SOURCE_ENDED),h.a.v(this.TAG,"MediaSource onSourceEnded")},t._onSourceClose=function(){h.a.v(this.TAG,"MediaSource onSourceClose"),this._mediaSource&&null!=this.e&&(this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._mediaSource.removeEventListener("sourceended",this.e.onSourceEnded),this._mediaSource.removeEventListener("sourceclose",this.e.onSourceClose))},t._hasPendingSegments=function(){var e=this._pendingSegments;return e.video.length>0||e.audio.length>0},t._hasPendingRemoveRanges=function(){var e=this._pendingRemoveRanges;return e.video.length>0||e.audio.length>0},t._onSourceBufferUpdateEnd=function(){this._requireSetMediaDuration?this._updateMediaSourceDuration():this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this._hasPendingEos&&this.endOfStream(),this._emitter.emit(w.UPDATE_END)},t._onSourceBufferError=function(e){h.a.e(this.TAG,"SourceBuffer Error: "+e)},t.pause=function(){this._pause=!0},t.resume=function(){this._pause=!1},t.AdjustPlayTimeToEnd=function(){if(null!=this._emitter&&null!=this._emitter){var e=this._mediaElement.currentTime;for(var t in this._sourceBuffers)if("video"===t){var r=this._sourceBuffers[t];if(r&&!r.updating){var i=r.buffered;if(i.length>0){var n=i.end(i.length-1);n-e>2?this._mediaElement.currentTime=n:this._lastSpeed>0&&(this._lastSpeed=0,this._emitter.emit(w.CHANGE_SPEED,{speed:0}))}}}}},e}(),P=r(13),C={NETWORK_ERROR:"NetworkError",MEDIA_ERROR:"MediaError",OTHER_ERROR:"OtherError"},N={NETWORK_EXCEPTION:d.b.EXCEPTION,NETWORK_STATUS_CODE_INVALID:d.b.HTTP_STATUS_CODE_INVALID,NETWORK_TIMEOUT:d.b.CONNECTING_TIMEOUT,NETWORK_UNRECOVERABLE_EARLY_EOF:d.b.UNRECOVERABLE_EARLY_EOF,MEDIA_MSE_ERROR:"MediaMSEError",MEDIA_FORMAT_ERROR:P.a.FORMAT_ERROR,MEDIA_FORMAT_UNSUPPORTED:P.a.FORMAT_UNSUPPORTED,MEDIA_CODEC_UNSUPPORTED:P.a.CODEC_UNSUPPORTED};function j(e,t){for(var r=0;r0&&(this._requestSetTime=!0,this._mediaElement.currentTime=0)}this._transmuxer=new x(this._mediaDataSource,this._config,this._mediaElement),this._transmuxer.on(g.a.INIT_SEGMENT,(function(t,r){e._msectl.appendInitSegment(r)})),this._transmuxer.on(g.a.ON_DBL_CLICK,(function(){return e._requestFullScreen()})),this._transmuxer.on(g.a.MEDIA_SEGMENT,(function(t,r){if(e._msectl.appendMediaSegment(r),e._config.lazyLoad&&!e._config.isLive){var i=e._mediaElement.currentTime;r.info.endDts>=1e3*(i+e._config.lazyLoadMaxDuration)&&null==e._progressChecker&&(h.a.v(e.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),e._suspendTransmuxer())}})),this._transmuxer.on(g.a.IS_ENCODED_H265,(function(t){e._isEncodedH265=t,setTimeout((function(){return e._emitter.emit(g.a.IS_ENCODED_H265)}),1500),e._render265VideoTools()})),this._transmuxer.on(g.a.LOADING_COMPLETE,(function(){e._msectl.endOfStream(),e._emitter.emit(f.LOADING_COMPLETE)})),this._transmuxer.on(g.a.RECOVERED_EARLY_EOF,(function(){e._emitter.emit(f.RECOVERED_EARLY_EOF)})),this._transmuxer.on(g.a.IO_ERROR,(function(t,r){e._emitter.emit(f.ERROR,C.NETWORK_ERROR,t,r)})),this._transmuxer.on(g.a.DEMUX_ERROR,(function(t,r){e._emitter.emit(f.ERROR,C.MEDIA_ERROR,t,{code:-1,msg:r})})),this._transmuxer.on(g.a.MEDIA_INFO,(function(t){e._mediaInfo=t,e._emitter.emit(f.MEDIA_INFO,Object.assign({},t))})),this._transmuxer.on(g.a.METADATA_ARRIVED,(function(t){e._emitter.emit(f.METADATA_ARRIVED,t)})),this._transmuxer.on(g.a.SCRIPTDATA_ARRIVED,(function(t){e._emitter.emit(f.SCRIPTDATA_ARRIVED,t)})),this._transmuxer.on(g.a.STATISTICS_INFO,(function(t){e._statisticsInfo=e._fillStatisticsInfo(t),e._emitter.emit(f.STATISTICS_INFO,Object.assign({},e._statisticsInfo))})),this._transmuxer.on(g.a.RECOMMEND_SEEKPOINT,(function(t){e._mediaElement&&!e._config.accurateSeek&&(e._requestSetTime=!0,e._mediaElement.currentTime=t/1e3)})),this._transmuxer.on(w.SOURCE_ENDED,(function(){return e._emitter.emit(w.SOURCE_ENDED)})),this._transmuxer.on(w.UPDATE_PLAY_INFO,this._onmseUpdatePlayInfo.bind(this)),this._transmuxer.on(g.a.AUDIO_ERROR,this._onAudioError.bind(this)),this._transmuxer.on("loaderChunkArrival",(function(t){if(null!==t){var r=e._mediaDataSource.url;if(r&&r.includes(".m3u8"))if(e._recording){if(0===e._recordHlsArrayBuffer.length&&(e._recordHlsArrayBuffer=new Uint8Array(e._recordMaxFileSize)),e._recordHlsOffset+t.byteLength>e._recordMaxFileSize)return e._emitter.emit(f.RCORDING_END),e._recording=!1,void(e.luXiangEle.style.color=e._recording?"red":"white");e._recordHlsArrayBuffer.set(new Int8Array(t),e._recordHlsOffset),e._recordHlsOffset+=t.byteLength}else{if(0===e._recordHlsArrayBuffer.length||0===e._recordHlsArrayBuffer.byteLength)return;e._emitter.emit(f.RCORDING_END)}}})),this._transmuxer.on("hls_error",(function(){1===e._webRecording.enable&&(e._webRecording.enable=0,e._emitter.emit(f.RCORDING_END),e._recording=!1)})),this._transmuxer.on("snapshot",(function(t){return e._emitter.emit("snapshot",t)})),this._transmuxer.open(),this._muted||console.log("this._transmuxer",this._transmuxer)},n.downRecord=function(){var e=this._recordFileName?this._recordFileName+"-"+this.dateFormat(new Date,"YYYYMMDDhhmmss"):""+this.dateFormat(new Date,"YYYYMMDDhhmmss"),t=this._recordHlsArrayBuffer.slice(0,this._recordHlsOffset),r=document.createElement("a");r.style.display="none",r.href=URL.createObjectURL(new Blob([t],{type:"video/mp4"})),r.download=e+".mp4",document.body.appendChild(r),r.click(),window.URL.revokeObjectURL(r.href),document.body.removeChild(r),this._recordHlsOffset=0,this._recordHlsArrayBuffer=[]},n.dateFormat=function(e,t){var r,i={"Y+":e.getFullYear().toString(),"M+":(e.getMonth()+1).toString(),"D+":e.getDate().toString(),"h+":e.getHours().toString(),"m+":e.getMinutes().toString(),"s+":e.getSeconds().toString()};for(var n in i)(r=new RegExp("("+n+")").exec(t))&&(t=t.replace(r[1],1===r[1].length?i[n]:i[n].padStart(r[1].length,"0")));return t},n.unload=function(){this._mediaElement&&this._mediaElement.pause(),this._msectl&&this._msectl.seek(0),this._transmuxer&&(this._transmuxer.close(),this._transmuxer.destroy(),this._transmuxer=null)},n.play=function(){return this._mediaElement.play()},n.resume=function(){this._mediaElement&&this._mediaElement.play(),this._isEncodedH265&&this._transmuxer&&this._transmuxer.resume()},n.pause=function(){var e=this._mediaElement;e.offsetWidth,e.offsetHeight;this._mediaElement&&this._mediaElement.pause(),this._isEncodedH265&&this._transmuxer&&this._transmuxer.pause()},n._fillStatisticsInfo=function(e){if(e.playerType=this._type,!(this._mediaElement instanceof HTMLVideoElement))return e;var t=!0,r=0,i=0;if(this._mediaElement.getVideoPlaybackQuality){var n=this._mediaElement.getVideoPlaybackQuality();r=n.totalVideoFrames,i=n.droppedVideoFrames}else null!=this._mediaElement.webkitDecodedFrameCount?(r=this._mediaElement.webkitDecodedFrameCount,i=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=r,e.droppedFrames=i),e},n._onmseUpdateEnd=function(){if(this._config.lazyLoad&&!this._config.isLive){for(var e=this._mediaElement.buffered,t=this._mediaElement.currentTime,r=0,i=0;i=t+this._config.lazyLoadMaxDuration&&null==this._progressChecker&&(h.a.v(this.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),this._suspendTransmuxer())}},n._onmseUpdatePlayInfo=function(){if(this._transmuxer){var e=0,t=0;this._isEncodedH265&&this._mediaDataSource.url.includes(".m3u8")&&((e=this._transmuxer._getCurrentPlayTime())<0&&(e=0),t=this._transmuxer._getTotalDuration(),this._updateDuration({currentTime:e,duration:t}));var r=this._transmuxer._controller._ioctl.currentSpeed,i=this._transmuxer._controller._ioctl.averageKBps;this._updateKbps({currentSpeed:r,averageKBps:i})}},n._onmseBufferFull=function(){h.a.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),null==this._progressChecker&&this._suspendTransmuxer()},n._suspendTransmuxer=function(){this._transmuxer&&(this._transmuxer.pause(),null==this._progressChecker&&(this._progressChecker=window.setInterval(this._checkProgressAndResume.bind(this),1e3)))},n._checkProgressAndResume=function(){for(var e=this._mediaElement.currentTime,t=this._mediaElement.buffered,r=!1,i=0;i=n&&e=a-this._config.lazyLoadRecoverDuration&&(r=!0);break}}r&&(window.clearInterval(this._progressChecker),this._progressChecker=null,r&&(h.a.v(this.TAG,"Continue loading from paused position"),this._transmuxer.resume()))},n._isTimepointBuffered=function(e){for(var t=this._mediaElement.buffered,r=0;r=i&&e0){var n=this._mediaElement.buffered.start(0);(n<1&&e0&&t.currentTime0){var i=r.start(0);if(i<1&&t1x",this.speedEle.style="font-size:12px;min-width:32px;height: 30px;color:#FFF;text-align:center;display:flex;flex-direction: row;justify-content: center;align-items: center;padding-right: 10px;";var n=document.createElement("ul"),a=document.createElement("li"),o=document.createElement("li"),s=document.createElement("li"),d=document.createElement("li");n.setAttribute("value","1"),a.innerText="2 x",o.innerText="1.25 x",s.innerText="1 x",s.classList="speed-switch-active",d.innerText="0.75 x",n.appendChild(a),n.appendChild(o),n.appendChild(s),n.appendChild(d),n.style="display: none;",n.addEventListener("click",(function(t){var r=t.srcElement.innerHTML.split(" ")[0];e._transmuxer&&e._transmuxer.speed(r),Array.from(t.srcElement.parentNode.querySelectorAll(".speed-switch-active")).forEach((function(e){return e.classList.remove("speed-switch-active")})),t.srcElement.classList="speed-switch-active",e.speedEle.querySelector("ul").setAttribute("value",r),e.speedEle.querySelector(".speed").innerHTML=r})),this.speedEle.addEventListener("mouseover",(function(){return e.speedEle.querySelector("ul").style="display:block"})),this.speedEle.addEventListener("mouseout",(function(){return e.speedEle.querySelector("ul").style="display:none"})),this.speedEle.appendChild(n),this.kbpsEle=document.createElement("div"),this.kbpsEle.style="font-size:12px;min-width:60px;height: 30px;color:#FFF;text-align:center;display:flex;flex-direction: row;justify-content: center;align-items: center;padding-right: 10px;",this.luXiangEle=document.createElement("span"),this.luXiangEle.title="录像",this.luXiangEle.style="font-size:16px;width:40px;height: 30px;color:#FFF;text-align:center;display:flex;flex-direction: row;justify-content: center;align-items: center;",this.luXiangEle.classList="iconfont icon-luxiang2",this.luXiangEle.onclick=function(){return e._recordSwitch()};var u=document.createElement("span");u.title="快照",u.style="font-size:16px;width:40px;height: 30px;color:#FFF;text-align:center;display:flex;flex-direction: row;justify-content: center;align-items: center;",u.classList="iconfont icon-xiangji",u.onclick=function(){return e._saveLocalSnapshot()},this._fullScreenBtnEle=document.createElement("span"),this._fullScreenBtnEle.title="全屏",this._fullScreenBtnEle.style="font-size:14px;width:40px;height: 30px;color:#FFF;text-align:center;display:flex;flex-direction: row;justify-content: center;align-items: center",this._fullScreenBtnEle.classList="iconfont "+(this.isFullScreen?"icon-xiaoping":"icon-quanping1"),this._fullScreenBtnEle.onclick=function(){return e._requestFullScreen()},this._mediaElement.parentNode.onmousemove=function(){e.videoToolsTimer&&clearTimeout(e.videoToolsTimer),e.videoTools.style.opacity="1",e.videoToolsTimer=setTimeout((function(){e.videoTools.style.opacity="0"}),1e4)},r.appendChild(this.playBtnEle),r.appendChild(this.audioBtnEle),this._config.isLive||i.appendChild(this.speedEle),i.appendChild(this.kbpsEle),this.isiOS||(i.appendChild(this.luXiangEle),i.appendChild(u)),i.appendChild(this._fullScreenBtnEle),t.appendChild(r),this.progressBarEle&&!this._mobile&&t.appendChild(this.progressBarEle),t.appendChild(i),this._mediaElement.parentNode.appendChild(t),window.onresize=function(){!document.fullscreenElement&&e.isFullScreen&&(e.isFullScreen=!1,e._fullScreenBtnEle.classList="iconfont "+(e.isFullScreen?"icon-xiaoping":"icon-quanping1"))}},n._recordingUIChange=function(){this._recording=!this._recording,this.luXiangEle.title=this._recording?"关闭录像":"录像",this.luXiangEle.style.color=this._recording?"red":"white"},n._requestFullScreen=function(){this.isFullScreen=!this.isFullScreen,this._fullScreenBtnEle.title=this.isFullScreen?"退出全屏":"全屏",this._fullScreenBtnEle.classList="iconfont "+(this.isFullScreen?"icon-xiaoping":"icon-quanping1"),this._emitter.emit("changeFullScreen",this.isFullScreen)},n._updateDuration=function(e){var t=e.currentTime,r=e.duration;if(!r)return this.progressBarEle.style.opacity=0;"0"===this.progressBarEle.style.opacity&&(this.progressBarEle.style.opacity=1);var i=parseInt((t+1)/r*100);this.progressBarEle.querySelector("input[type=range]").style.backgroundSize=t/r*100+"% 100%",i!==parseInt(this.timeTrackEle.value)&&(this.timeTrackEle.value=i),this.progressBarLabelEle&&(t<1?t=0:t>r&&(t=r),this.progressBarLabelEle.innerHTML=" - "+this._formatTime(r-t)+" "),this._emitter.emit("timeupdate",t)},n._updateKbps=function(e){e.currentSpeed;var t=e.averageKBps;this.kbpsEle&&(this.kbpsEle.innerText=8*t>=1024?(8*t/1024).toFixed(2)+" Mb/s":parseInt(8*t+"")+" Kb/s")},n._saveLocalSnapshot=function(){this._transmuxer.saveLocalSnapshot(this._recordFileName)},n._saveImageDateURL=function(){return this._transmuxer.saveImageDateURL()},n._formatTime=function(e){var t=Math.floor(e/3600)<10?"0"+Math.floor(e/3600):Math.floor(e/3600),r=Math.floor(e/60%60)<10?"0"+Math.floor(e/60%60):Math.floor(e/60%60),i=Math.floor(e%60)<10?"0"+Math.floor(e%60):Math.floor(e%60);return"00"===t?r+":"+i:t+":"+r+":"+i},n._onAudioError=function(){this._msectl&&this._msectl._removerAudioSourceBuffer()},n.getClass=function(e){return 0===e?"blue":1===e?"black":2===e?"white":3===e?"green":4===e?"red":5===e?"yellow":"red"},n.seekToPercent=function(e){this.seek(e,1)},n.startWebVideoRecord=function(e,t,r,i){var n;this._transmuxer&&(n=t?t.includes(".mp4")?t.replace(".mp4","")+"-"+this.dateFormat(new Date,"YYYYMMDDhhmmss")+".mp4":t+"-"+this.dateFormat(new Date,"YYYYMMDDhhmmss")+".mp4":this.dateFormat(new Date,"YYYYMMDDhhmmss")+".mp4",this._mediaDataSource.url.includes(".flv")&&this._transmuxer.videoRecording(n,r||this._recordMaxFileSize,e,i),this._webRecording.enable=e)},n._isMobile=function(){try{return document.createEvent("TouchEvent"),!0}catch(e){return!1}},n._recordSwitch=function(){this._recordingUIChange(),this._emitter.emit(this._recording?f.RCORDING_START:f.RCORDING_END)},n._switchAudio=function(){this._muted=!this._muted,this.audioBtnEle.title=this._muted?"取消静音":"静音",this.audioBtnEle.classList="iconfont "+(this._muted?"icon-jingyin":"icon-shengyin1")+" ",this._mediaElement.muted=this._muted,this._transmuxer&&(this._transmuxer._wasmInitAudioPlayer?this._muted?this._transmuxer._wasmAudioPlayer.pause():this._transmuxer._wasmAudioPlayer.resume():this._muted||this._transmuxer._openWasmAudio())},n._switchPlay=function(){this.playing?this.pause():this.resume(),this.playing=!this.playing,this.playBtnEle.title=this.playing?"暂停":"播放",this.playBtnEle.classList="iconfont "+(this.playing?"icon-zanting":"icon-bofang"),this.playing||(this.kbpsEle.innerText="")},t=e,(r=[{key:"type",get:function(){return this._type}},{key:"buffered",get:function(){return this._mediaElement.buffered}},{key:"duration",get:function(){return this._mediaElement.duration}},{key:"volume",get:function(){return this._mediaElement.volume},set:function(e){this._mediaElement.volume=e}},{key:"muted",get:function(){return this._mediaElement.muted},set:function(e){this._mediaElement.muted=e}},{key:"currentTime",get:function(){return this._mediaElement?this._mediaElement.currentTime:0},set:function(e){this._mediaElement?this._internalSeek(e):this._pendingSeekTime=e}},{key:"mediaInfo",get:function(){return Object.assign({},this._mediaInfo)}},{key:"statisticsInfo",get:function(){return null==this._statisticsInfo&&(this._statisticsInfo={}),this._statisticsInfo=this._fillStatisticsInfo(this._statisticsInfo),Object.assign({},this._statisticsInfo)}}])&&j(t.prototype,r),i&&j(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}();function U(e,t){for(var r=0;r0&&(this._mediaElement.currentTime=0),this._mediaElement.preload="auto",this._mediaElement.load(),this._statisticsReporter=window.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval)},n.unload=function(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src")),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)},n.play=function(){return this._mediaElement.play()},n.pause=function(){this._mediaElement.pause()},n._onvLoadedMetadata=function(e){null!=this._pendingSeekTime&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null),this._emitter.emit(f.MEDIA_INFO,this.mediaInfo)},n._reportStatisticsInfo=function(){this._emitter.emit(f.STATISTICS_INFO,this.statisticsInfo)},t=e,(r=[{key:"type",get:function(){return this._type}},{key:"buffered",get:function(){return this._mediaElement.buffered}},{key:"duration",get:function(){return this._mediaElement.duration}},{key:"volume",get:function(){return this._mediaElement.volume},set:function(e){this._mediaElement.volume=e}},{key:"muted",get:function(){return this._mediaElement.muted},set:function(e){this._mediaElement.muted=e}},{key:"currentTime",get:function(){return this._mediaElement?this._mediaElement.currentTime:0},set:function(e){this._mediaElement?this._mediaElement.currentTime=e:this._pendingSeekTime=e}},{key:"mediaInfo",get:function(){var e={mimeType:(this._mediaElement instanceof HTMLAudioElement?"audio/":"video/")+this._mediaDataSource.type};return this._mediaElement&&(e.duration=Math.floor(1e3*this._mediaElement.duration),this._mediaElement instanceof HTMLVideoElement&&(e.width=this._mediaElement.videoWidth,e.height=this._mediaElement.videoHeight)),e}},{key:"statisticsInfo",get:function(){var e={playerType:this._type,url:this._mediaDataSource.url};if(!(this._mediaElement instanceof HTMLVideoElement))return e;var t=!0,r=0,i=0;if(this._mediaElement.getVideoPlaybackQuality){var n=this._mediaElement.getVideoPlaybackQuality();r=n.totalVideoFrames,i=n.droppedVideoFrames}else null!=this._mediaElement.webkitDecodedFrameCount?(r=this._mediaElement.webkitDecodedFrameCount,i=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=r,e.droppedFrames=i),e}}])&&U(t.prototype,r),i&&U(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}();i.a.install();var z={createPlayer:function(e,t){var r=e;if(null==r||"object"!=typeof r)throw new Y.b("MediaDataSource must be an javascript object!");return new H(r,t)},isSupported:function(){return s.supportMSEH264Playback()},getFeatureList:function(){return s.getFeatureList()}};z.BaseLoader=d.a,z.LoaderStatus=d.c,z.LoaderErrors=d.b,z.Events=f,z.ErrorTypes=C,z.ErrorDetails=N,z.FlvPlayer=H,z.NativePlayer=W,z.LoggingControl=p.a,Object.defineProperty(z,"version",{enumerable:!0,get:function(){return __VERSION__}});var X=z;t.default=X},function(e,t,r){"use strict";r.r(t);var i=r(31),n=r.n(i),a=r(258),o=r.n(a);function s(e,t){return(s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}var d=function(e){function t(){var t;return(t=e.call(this)||this).buffer="",t}var r,i;return i=e,(r=t).prototype=Object.create(i.prototype),r.prototype.constructor=r,s(r,i),t.prototype.push=function(e){var t;for(this.buffer+=e,t=this.buffer.indexOf("\n");t>-1;t=this.buffer.indexOf("\n"))this.trigger("data",this.buffer.substring(0,t)),this.buffer=this.buffer.substring(t+1)},t}(n.a);function u(e,t){return(u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}var l=function(e){for(var t,r=e.split(new RegExp('(?:^|,)((?:[^=]*)=(?:"[^"]*"|[^,]*))')),i={},n=r.length;n--;)""!==r[n]&&((t=/([^=]*)=(.*)/.exec(r[n]).slice(1))[0]=t[0].replace(/^\s+|\s+$/g,""),t[1]=t[1].replace(/^\s+|\s+$/g,""),t[1]=t[1].replace(/^['"](.*)['"]$/g,"$1"),i[t[0]]=t[1]);return i},h=function(e){function t(){var t;return(t=e.call(this)||this).customParsers=[],t.tagMappers=[],t}var r,i;i=e,(r=t).prototype=Object.create(i.prototype),r.prototype.constructor=r,u(r,i);var n=t.prototype;return n.push=function(e){var t,r,i=this;0!==(e=e.trim()).length&&("#"===e[0]?this.tagMappers.reduce((function(t,r){var i=r(e);return i===e?t:t.concat([i])}),[e]).forEach((function(e){for(var n=0;n0&&(s.duration=e.duration),0===e.duration&&(s.duration=.01,this.trigger("info",{message:"updating zero segment duration to a small value"})),this.manifest.segments=a},key:function(){if(e.attributes)if("NONE"!==e.attributes.METHOD)if(e.attributes.URI){if("urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"===e.attributes.KEYFORMAT){return-1===["SAMPLE-AES","SAMPLE-AES-CTR","SAMPLE-AES-CENC"].indexOf(e.attributes.METHOD)?void this.trigger("warn",{message:"invalid key method provided for Widevine"}):("SAMPLE-AES-CENC"===e.attributes.METHOD&&this.trigger("warn",{message:"SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead"}),"data:text/plain;base64,"!==e.attributes.URI.substring(0,23)?void this.trigger("warn",{message:"invalid key URI provided for Widevine"}):e.attributes.KEYID&&"0x"===e.attributes.KEYID.substring(0,2)?void(this.manifest.contentProtection={"com.widevine.alpha":{attributes:{schemeIdUri:e.attributes.KEYFORMAT,keyId:e.attributes.KEYID.substring(2)},pssh:o()(e.attributes.URI.split(",")[1])}}):void this.trigger("warn",{message:"invalid key ID provided for Widevine"}))}e.attributes.METHOD||this.trigger("warn",{message:"defaulting key method to AES-128"}),i={method:e.attributes.METHOD||"AES-128",uri:e.attributes.URI},void 0!==e.attributes.IV&&(i.iv=e.attributes.IV)}else this.trigger("warn",{message:"ignoring key declaration without URI"});else i=null;else this.trigger("warn",{message:"ignoring key declaration without attribute list"})},"media-sequence":function(){isFinite(e.number)?this.manifest.mediaSequence=e.number:this.trigger("warn",{message:"ignoring invalid media sequence: "+e.number})},"discontinuity-sequence":function(){isFinite(e.number)?(this.manifest.discontinuitySequence=e.number,c=e.number):this.trigger("warn",{message:"ignoring invalid discontinuity sequence: "+e.number})},"playlist-type":function(){/VOD|EVENT/.test(e.playlistType)?this.manifest.playlistType=e.playlistType:this.trigger("warn",{message:"ignoring unknown playlist type: "+e.playlist})},map:function(){r={},e.uri&&(r.uri=e.uri),e.byterange&&(r.byterange=e.byterange)},"stream-inf":function(){this.manifest.playlists=a,this.manifest.mediaGroups=this.manifest.mediaGroups||l,e.attributes?(s.attributes||(s.attributes={}),Object.assign(s.attributes,e.attributes)):this.trigger("warn",{message:"ignoring empty stream-inf attributes"})},media:function(){if(this.manifest.mediaGroups=this.manifest.mediaGroups||l,e.attributes&&e.attributes.TYPE&&e.attributes["GROUP-ID"]&&e.attributes.NAME){var r=this.manifest.mediaGroups[e.attributes.TYPE];r[e.attributes["GROUP-ID"]]=r[e.attributes["GROUP-ID"]]||{},t=r[e.attributes["GROUP-ID"]],(d={default:/yes/i.test(e.attributes.DEFAULT)}).default?d.autoselect=!0:d.autoselect=/yes/i.test(e.attributes.AUTOSELECT),e.attributes.LANGUAGE&&(d.language=e.attributes.LANGUAGE),e.attributes.URI&&(d.uri=e.attributes.URI),e.attributes["INSTREAM-ID"]&&(d.instreamId=e.attributes["INSTREAM-ID"]),e.attributes.CHARACTERISTICS&&(d.characteristics=e.attributes.CHARACTERISTICS),e.attributes.FORCED&&(d.forced=/yes/i.test(e.attributes.FORCED)),t[e.attributes.NAME]=d}else this.trigger("warn",{message:"ignoring incomplete or missing media group"})},discontinuity:function(){c+=1,s.discontinuity=!0,this.manifest.discontinuityStarts.push(a.length)},"program-date-time":function(){void 0===this.manifest.dateTimeString&&(this.manifest.dateTimeString=e.dateTimeString,this.manifest.dateTimeObject=e.dateTimeObject),s.dateTimeString=e.dateTimeString,s.dateTimeObject=e.dateTimeObject},targetduration:function(){!isFinite(e.duration)||e.duration<0?this.trigger("warn",{message:"ignoring invalid target duration: "+e.duration}):this.manifest.targetDuration=e.duration},totalduration:function(){!isFinite(e.duration)||e.duration<0?this.trigger("warn",{message:"ignoring invalid total duration: "+e.duration}):this.manifest.totalDuration=e.duration},start:function(){e.attributes&&!isNaN(e.attributes["TIME-OFFSET"])?this.manifest.start={timeOffset:e.attributes["TIME-OFFSET"],precise:e.attributes.PRECISE}:this.trigger("warn",{message:"ignoring start declaration without appropriate attribute list"})},"cue-out":function(){s.cueOut=e.data},"cue-out-cont":function(){s.cueOutCont=e.data},"cue-in":function(){s.cueIn=e.data}}[e.tagType]||u).call(n)},uri:function(){s.uri=e.uri,a.push(s),this.manifest.targetDuration&&!("duration"in s)&&(this.trigger("warn",{message:"defaulting segment duration to the target duration"}),s.duration=this.manifest.targetDuration),i&&(s.key=i),s.timeline=c,r&&(s.map=r),s={}},comment:function(){},custom:function(){e.segment?(s.custom=s.custom||{},s.custom[e.customType]=e.data):(this.manifest.custom=this.manifest.custom||{},this.manifest.custom[e.customType]=e.data)}})[e.type].call(n)})),t}var r,i;i=e,(r=t).prototype=Object.create(i.prototype),r.prototype.constructor=r,c(r,i);var n=t.prototype;return n.push=function(e){this.lineStream.push(e)},n.end=function(){this.lineStream.push("\n")},n.addParser=function(e){this.parseStream.addParser(e)},n.addTagMapper=function(e){this.parseStream.addTagMapper(e)},t}(n.a),m=r(2);function _(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return p(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return p(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var i=0;return function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,i=new Array(t);r=0)return e;if(e.indexOf("/")>=0)for(var n,a=_(e.split("/"));!(n=a()).done;){var o=n.value;if(t.indexOf(o)>=0)return i+e}i=t;for(var s=0,d=0;d>=0;)(d=i.indexOf("/"))>=0?(i=i.substring(d+1),s+=d+1):i=t.substring(0,s);return""!==e?i+e:i},r=function(){var t={cmd:m.m,workerId:m.b};e.postMessage(t),e.getFileIndex=0,e.hlsTsPlaybackFileNo=-1},i=function i(n,a){if(e.url=n,1!=e._requestAbort){if(!e.pause&&(!(e.totalDuration>0)||e.isLiveStream)){var o=new XMLHttpRequest;o.open("get",n,!0),o.responseType="text",o.onreadystatechange=function(){if(4!=o.readyState||200!=o.status&&304!=o.status)4===o.readyState&&404===o.status&&e.postMessage({cmd:404});else{for(var r=new f,s=o.response.split("\n"),d="",u=0;u2&&(p=l.segments.length-1-1),e.getFileIndex=p,e.lastTsFile=l.segments[p].uri}else{p=-1;var y=!1;for(c=0;c=0){v={filename:g,duration:l.segments[c].duration};e.totalDuration+=l.segments[c].duration,e.tsFileList.push(v),y||(e.lastTsFile=l.segments[c].uri,y=!0)}else;else p=c,e.tsFileList.length=0,e.tsFileList=[],e.getFileIndex=0}if(p<0)for(e.tsFileList.length=0,e.tsFileList=[],e.getFileIndex=0,c=0;c0&&(e.getFileIndex=-1),c=0;c0&&e.totalDuration>=e.seekTime&&e.getFileIndex<0&&(e.getFileIndex=c);var v={filename:g,duration:l.segments[c].duration};e.totalDuration+=l.segments[c].duration,e.tsFileList.push(v)}}e.getFileIndex<0&&(e.getFileIndex=0);var w={cmd:m.v,duration:e.totalDuration,live:e.isLiveStream,workerId:m.b};e.postMessage(w)}if(e.tsFileList.length>0&&1==a){w={cmd:m.x,workerId:m.b};e.postMessage(w)}}},o.send()}}else r()},n=function t(){if(!(e.getFileCount++<1)){var n=!1;if(!e.pause)if(1!=e._requestAbort){if(e.isLiveStream){if(e.getFileCount=0,e.getFileIndex>=e.tsFileList.length||3==e.getFileCount)return void i(e.url,1);n=!0}else if(e.getFileIndex>e.tsFileList.length){var a={cmd:m.s,workerId:m.b};return void e.postMessage(a)}var o;if(0==e.hlsTsFirstPlayFileNo&&1==e.getFileIndex)e.getFileIndex=0,e.hlsTsPlaybackFileNo=-1,e.hlsTsFirstPlayFileNo=-1,o=e.tsFileList[e.getFileIndex].filename;else{if(!e.tsFileList[e.getFileIndex])return;o=e.tsFileList[e.getFileIndex].filename}if(e.isLiveStream){var s=function(e){var t=e.split("-"),r=t.length;if(r>0){var i=t[r-1].split(".");if(i.length>0)return i[0]}return""}(o),d=parseInt(s);if(d>0&&d>e.lastTsFileSequence+1){e.sequenceExceptNum++;a={cmd:m.A,workerId:m.b,fileSequence:e.sequenceExceptNum};e.postMessage(a)}e.lastTsFileSequence=d}var u=new XMLHttpRequest;u.open("get",o,!0),u.responseType="arraybuffer",u.onreadystatechange=function(){if(404==u.status)return m.e("current file not found. refresh list..."),void i(e.url,1);if(4==u.readyState&&(200==u.status||304==u.status)){var r=new Uint8Array(u.response),a=0;for(a=0;a=0&&(clearInterval(e.intervalHandle),e.intervalHandle=-1),!e.pause){var s=e.getFileIndex;s>=0&&s900&&(e.intervalValue-=900)),e.intervalValue=1e3*e.tsFileList[s].duration/2,e.intervalHandle=setInterval(t,e.intervalValue)}e.getFileCount=100,e.getFileIndex++,e.getFileIndex>=0&&(e.getFileIndex,e.tsFileList.length);o={cmd:m.u,workerId:m.b};if(e.postMessage(o),n)return i(e.url,0)}},u.send(),e.hlsTsPlaybackFileNo=e.getFileIndex}else r()}};e.addEventListener("message",(function(t){var a=t.data;switch(a.cmd){case m.x:e.url=a.url,e.seekTime=a.time,i(a.url,1);break;case m.t:0==a.t&&n();break;case m.z:i(e.url,1);break;case m.C:var o=a.time;1==a.type&&(o=a.time/100*e.totalDuration);var s=!1,d=0,u=0;for(u=0;uo){e.getFileIndex=u,n();var l={cmd:m.C,type:a.type,time:o};e.postMessage(l),s=!0;break}if(!s){l={cmd:m.C,type:a.type,time:o};e.postMessage(l)}break;case m.y:e.pause=!0;break;case m.B:e.pause=!1,i(e.url,1);break;case m.m:e._requestAbort=!0,e.seekTime=0,r()}}))}}]).default}));(function __HLS_WORKER_BUNDLE__(__IN_WORKER__){ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Hls = factory()); +})(this, (function () { 'use strict'; + + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _construct(t, e, r) { + if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); + var o = [null]; + o.push.apply(o, e); + var p = new (t.bind.apply(t, o))(); + return r && _setPrototypeOf(p, r.prototype), p; + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; + } + function _createForOfIteratorHelperLoose(r, e) { + var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (t) return (t = t.call(r)).next.bind(t); + if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) { + t && (r = t); + var o = 0; + return function () { + return o >= r.length ? { + done: !0 + } : { + done: !1, + value: r[o++] + }; + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { + value: t, + enumerable: !0, + configurable: !0, + writable: !0 + }) : e[r] = t, e; + } + function _extends() { + return _extends = Object.assign ? Object.assign.bind() : function (n) { + for (var e = 1; e < arguments.length; e++) { + var t = arguments[e]; + for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); + } + return n; + }, _extends.apply(null, arguments); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }, _getPrototypeOf(t); + } + function _inheritsLoose(t, o) { + t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); + } + function _isNativeFunction(t) { + try { + return -1 !== Function.toString.call(t).indexOf("[native code]"); + } catch (n) { + return "function" == typeof t; + } + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + } catch (t) {} + return (_isNativeReflectConstruct = function () { + return !!t; + })(); + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function (r) { + return Object.getOwnPropertyDescriptor(e, r).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread2(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { + _defineProperty(e, r, t[r]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { + Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); + }); + } + return e; + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); + } + function _toPrimitive(t, r) { + if ("object" != typeof t || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != typeof i) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == typeof i ? i : i + ""; + } + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; + } + } + function _wrapNativeSuper(t) { + var r = "function" == typeof Map ? new Map() : void 0; + return _wrapNativeSuper = function (t) { + if (null === t || !_isNativeFunction(t)) return t; + if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); + if (void 0 !== r) { + if (r.has(t)) return r.get(t); + r.set(t, Wrapper); + } + function Wrapper() { + return _construct(t, arguments, _getPrototypeOf(this).constructor); + } + return Wrapper.prototype = Object.create(t.prototype, { + constructor: { + value: Wrapper, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), _setPrototypeOf(Wrapper, t); + }, _wrapNativeSuper(t); + } + + function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; + } + + var urlToolkit = {exports: {}}; + + (function (module, exports) { + // see https://tools.ietf.org/html/rfc1808 + + (function (root) { + var URL_REGEX = + /^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/; + var FIRST_SEGMENT_REGEX = /^(?=([^\/?#]*))\1([^]*)$/; + var SLASH_DOT_REGEX = /(?:\/|^)\.(?=\/)/g; + var SLASH_DOT_DOT_REGEX = /(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g; + + var URLToolkit = { + // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or // + // E.g + // With opts.alwaysNormalize = false (default, spec compliant) + // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g + // With opts.alwaysNormalize = true (not spec compliant) + // http://a.com/b/cd + /e/f/../g => http://a.com/e/g + buildAbsoluteURL: function (baseURL, relativeURL, opts) { + opts = opts || {}; + // remove any remaining space and CRLF + baseURL = baseURL.trim(); + relativeURL = relativeURL.trim(); + if (!relativeURL) { + // 2a) If the embedded URL is entirely empty, it inherits the + // entire base URL (i.e., is set equal to the base URL) + // and we are done. + if (!opts.alwaysNormalize) { + return baseURL; + } + var basePartsForNormalise = URLToolkit.parseURL(baseURL); + if (!basePartsForNormalise) { + throw new Error('Error trying to parse base URL.'); + } + basePartsForNormalise.path = URLToolkit.normalizePath( + basePartsForNormalise.path + ); + return URLToolkit.buildURLFromParts(basePartsForNormalise); + } + var relativeParts = URLToolkit.parseURL(relativeURL); + if (!relativeParts) { + throw new Error('Error trying to parse relative URL.'); + } + if (relativeParts.scheme) { + // 2b) If the embedded URL starts with a scheme name, it is + // interpreted as an absolute URL and we are done. + if (!opts.alwaysNormalize) { + return relativeURL; + } + relativeParts.path = URLToolkit.normalizePath(relativeParts.path); + return URLToolkit.buildURLFromParts(relativeParts); + } + var baseParts = URLToolkit.parseURL(baseURL); + if (!baseParts) { + throw new Error('Error trying to parse base URL.'); + } + if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') { + // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc + // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a' + var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path); + baseParts.netLoc = pathParts[1]; + baseParts.path = pathParts[2]; + } + if (baseParts.netLoc && !baseParts.path) { + baseParts.path = '/'; + } + var builtParts = { + // 2c) Otherwise, the embedded URL inherits the scheme of + // the base URL. + scheme: baseParts.scheme, + netLoc: relativeParts.netLoc, + path: null, + params: relativeParts.params, + query: relativeParts.query, + fragment: relativeParts.fragment, + }; + if (!relativeParts.netLoc) { + // 3) If the embedded URL's is non-empty, we skip to + // Step 7. Otherwise, the embedded URL inherits the + // (if any) of the base URL. + builtParts.netLoc = baseParts.netLoc; + // 4) If the embedded URL path is preceded by a slash "/", the + // path is not relative and we skip to Step 7. + if (relativeParts.path[0] !== '/') { + if (!relativeParts.path) { + // 5) If the embedded URL path is empty (and not preceded by a + // slash), then the embedded URL inherits the base URL path + builtParts.path = baseParts.path; + // 5a) if the embedded URL's is non-empty, we skip to + // step 7; otherwise, it inherits the of the base + // URL (if any) and + if (!relativeParts.params) { + builtParts.params = baseParts.params; + // 5b) if the embedded URL's is non-empty, we skip to + // step 7; otherwise, it inherits the of the base + // URL (if any) and we skip to step 7. + if (!relativeParts.query) { + builtParts.query = baseParts.query; + } + } + } else { + // 6) The last segment of the base URL's path (anything + // following the rightmost slash "/", or the entire path if no + // slash is present) is removed and the embedded URL's path is + // appended in its place. + var baseURLPath = baseParts.path; + var newPath = + baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) + + relativeParts.path; + builtParts.path = URLToolkit.normalizePath(newPath); + } + } + } + if (builtParts.path === null) { + builtParts.path = opts.alwaysNormalize + ? URLToolkit.normalizePath(relativeParts.path) + : relativeParts.path; + } + return URLToolkit.buildURLFromParts(builtParts); + }, + parseURL: function (url) { + var parts = URL_REGEX.exec(url); + if (!parts) { + return null; + } + return { + scheme: parts[1] || '', + netLoc: parts[2] || '', + path: parts[3] || '', + params: parts[4] || '', + query: parts[5] || '', + fragment: parts[6] || '', + }; + }, + normalizePath: function (path) { + // The following operations are + // then applied, in order, to the new path: + // 6a) All occurrences of "./", where "." is a complete path + // segment, are removed. + // 6b) If the path ends with "." as a complete path segment, + // that "." is removed. + path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, ''); + // 6c) All occurrences of "/../", where is a + // complete path segment not equal to "..", are removed. + // Removal of these path segments is performed iteratively, + // removing the leftmost matching pattern on each iteration, + // until no matching pattern remains. + // 6d) If the path ends with "/..", where is a + // complete path segment not equal to "..", that + // "/.." is removed. + while ( + path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length + ) {} + return path.split('').reverse().join(''); + }, + buildURLFromParts: function (parts) { + return ( + parts.scheme + + parts.netLoc + + parts.path + + parts.params + + parts.query + + parts.fragment + ); + }, + }; + + module.exports = URLToolkit; + })(); + } (urlToolkit)); + + var urlToolkitExports = urlToolkit.exports; + + // https://caniuse.com/mdn-javascript_builtins_number_isfinite + var isFiniteNumber = Number.isFinite || function (value) { + return typeof value === 'number' && isFinite(value); + }; + + // https://caniuse.com/mdn-javascript_builtins_number_issafeinteger + var isSafeInteger = Number.isSafeInteger || function (value) { + return typeof value === 'number' && Math.abs(value) <= MAX_SAFE_INTEGER; + }; + var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; + + var Events = /*#__PURE__*/function (Events) { + Events["MEDIA_ATTACHING"] = "hlsMediaAttaching"; + Events["MEDIA_ATTACHED"] = "hlsMediaAttached"; + Events["MEDIA_DETACHING"] = "hlsMediaDetaching"; + Events["MEDIA_DETACHED"] = "hlsMediaDetached"; + Events["MEDIA_ENDED"] = "hlsMediaEnded"; + Events["BUFFER_RESET"] = "hlsBufferReset"; + Events["BUFFER_CODECS"] = "hlsBufferCodecs"; + Events["BUFFER_CREATED"] = "hlsBufferCreated"; + Events["BUFFER_APPENDING"] = "hlsBufferAppending"; + Events["BUFFER_APPENDED"] = "hlsBufferAppended"; + Events["BUFFER_EOS"] = "hlsBufferEos"; + Events["BUFFER_FLUSHING"] = "hlsBufferFlushing"; + Events["BUFFER_FLUSHED"] = "hlsBufferFlushed"; + Events["MANIFEST_LOADING"] = "hlsManifestLoading"; + Events["MANIFEST_LOADED"] = "hlsManifestLoaded"; + Events["MANIFEST_PARSED"] = "hlsManifestParsed"; + Events["LEVEL_SWITCHING"] = "hlsLevelSwitching"; + Events["LEVEL_SWITCHED"] = "hlsLevelSwitched"; + Events["LEVEL_LOADING"] = "hlsLevelLoading"; + Events["LEVEL_LOADED"] = "hlsLevelLoaded"; + Events["LEVEL_UPDATED"] = "hlsLevelUpdated"; + Events["LEVEL_PTS_UPDATED"] = "hlsLevelPtsUpdated"; + Events["LEVELS_UPDATED"] = "hlsLevelsUpdated"; + Events["AUDIO_TRACKS_UPDATED"] = "hlsAudioTracksUpdated"; + Events["AUDIO_TRACK_SWITCHING"] = "hlsAudioTrackSwitching"; + Events["AUDIO_TRACK_SWITCHED"] = "hlsAudioTrackSwitched"; + Events["AUDIO_TRACK_LOADING"] = "hlsAudioTrackLoading"; + Events["AUDIO_TRACK_LOADED"] = "hlsAudioTrackLoaded"; + Events["SUBTITLE_TRACKS_UPDATED"] = "hlsSubtitleTracksUpdated"; + Events["SUBTITLE_TRACKS_CLEARED"] = "hlsSubtitleTracksCleared"; + Events["SUBTITLE_TRACK_SWITCH"] = "hlsSubtitleTrackSwitch"; + Events["SUBTITLE_TRACK_LOADING"] = "hlsSubtitleTrackLoading"; + Events["SUBTITLE_TRACK_LOADED"] = "hlsSubtitleTrackLoaded"; + Events["SUBTITLE_FRAG_PROCESSED"] = "hlsSubtitleFragProcessed"; + Events["CUES_PARSED"] = "hlsCuesParsed"; + Events["NON_NATIVE_TEXT_TRACKS_FOUND"] = "hlsNonNativeTextTracksFound"; + Events["INIT_PTS_FOUND"] = "hlsInitPtsFound"; + Events["FRAG_LOADING"] = "hlsFragLoading"; + Events["FRAG_LOAD_EMERGENCY_ABORTED"] = "hlsFragLoadEmergencyAborted"; + Events["FRAG_LOADED"] = "hlsFragLoaded"; + Events["FRAG_DECRYPTED"] = "hlsFragDecrypted"; + Events["FRAG_PARSING_INIT_SEGMENT"] = "hlsFragParsingInitSegment"; + Events["FRAG_PARSING_USERDATA"] = "hlsFragParsingUserdata"; + Events["FRAG_PARSING_METADATA"] = "hlsFragParsingMetadata"; + Events["FRAG_PARSED"] = "hlsFragParsed"; + Events["FRAG_BUFFERED"] = "hlsFragBuffered"; + Events["FRAG_CHANGED"] = "hlsFragChanged"; + Events["FPS_DROP"] = "hlsFpsDrop"; + Events["FPS_DROP_LEVEL_CAPPING"] = "hlsFpsDropLevelCapping"; + Events["MAX_AUTO_LEVEL_UPDATED"] = "hlsMaxAutoLevelUpdated"; + Events["ERROR"] = "hlsError"; + Events["DESTROYING"] = "hlsDestroying"; + Events["KEY_LOADING"] = "hlsKeyLoading"; + Events["KEY_LOADED"] = "hlsKeyLoaded"; + Events["LIVE_BACK_BUFFER_REACHED"] = "hlsLiveBackBufferReached"; + Events["BACK_BUFFER_REACHED"] = "hlsBackBufferReached"; + Events["STEERING_MANIFEST_LOADED"] = "hlsSteeringManifestLoaded"; + return Events; + }({}); + + /** + * Defines each Event type and payload by Event name. Used in {@link hls.js#HlsEventEmitter} to strongly type the event listener API. + */ + + var ErrorTypes = /*#__PURE__*/function (ErrorTypes) { + ErrorTypes["NETWORK_ERROR"] = "networkError"; + ErrorTypes["MEDIA_ERROR"] = "mediaError"; + ErrorTypes["KEY_SYSTEM_ERROR"] = "keySystemError"; + ErrorTypes["MUX_ERROR"] = "muxError"; + ErrorTypes["OTHER_ERROR"] = "otherError"; + return ErrorTypes; + }({}); + var ErrorDetails = /*#__PURE__*/function (ErrorDetails) { + ErrorDetails["KEY_SYSTEM_NO_KEYS"] = "keySystemNoKeys"; + ErrorDetails["KEY_SYSTEM_NO_ACCESS"] = "keySystemNoAccess"; + ErrorDetails["KEY_SYSTEM_NO_SESSION"] = "keySystemNoSession"; + ErrorDetails["KEY_SYSTEM_NO_CONFIGURED_LICENSE"] = "keySystemNoConfiguredLicense"; + ErrorDetails["KEY_SYSTEM_LICENSE_REQUEST_FAILED"] = "keySystemLicenseRequestFailed"; + ErrorDetails["KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED"] = "keySystemServerCertificateRequestFailed"; + ErrorDetails["KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED"] = "keySystemServerCertificateUpdateFailed"; + ErrorDetails["KEY_SYSTEM_SESSION_UPDATE_FAILED"] = "keySystemSessionUpdateFailed"; + ErrorDetails["KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED"] = "keySystemStatusOutputRestricted"; + ErrorDetails["KEY_SYSTEM_STATUS_INTERNAL_ERROR"] = "keySystemStatusInternalError"; + ErrorDetails["MANIFEST_LOAD_ERROR"] = "manifestLoadError"; + ErrorDetails["MANIFEST_LOAD_TIMEOUT"] = "manifestLoadTimeOut"; + ErrorDetails["MANIFEST_PARSING_ERROR"] = "manifestParsingError"; + ErrorDetails["MANIFEST_INCOMPATIBLE_CODECS_ERROR"] = "manifestIncompatibleCodecsError"; + ErrorDetails["LEVEL_EMPTY_ERROR"] = "levelEmptyError"; + ErrorDetails["LEVEL_LOAD_ERROR"] = "levelLoadError"; + ErrorDetails["LEVEL_LOAD_TIMEOUT"] = "levelLoadTimeOut"; + ErrorDetails["LEVEL_PARSING_ERROR"] = "levelParsingError"; + ErrorDetails["LEVEL_SWITCH_ERROR"] = "levelSwitchError"; + ErrorDetails["AUDIO_TRACK_LOAD_ERROR"] = "audioTrackLoadError"; + ErrorDetails["AUDIO_TRACK_LOAD_TIMEOUT"] = "audioTrackLoadTimeOut"; + ErrorDetails["SUBTITLE_LOAD_ERROR"] = "subtitleTrackLoadError"; + ErrorDetails["SUBTITLE_TRACK_LOAD_TIMEOUT"] = "subtitleTrackLoadTimeOut"; + ErrorDetails["FRAG_LOAD_ERROR"] = "fragLoadError"; + ErrorDetails["FRAG_LOAD_TIMEOUT"] = "fragLoadTimeOut"; + ErrorDetails["FRAG_DECRYPT_ERROR"] = "fragDecryptError"; + ErrorDetails["FRAG_PARSING_ERROR"] = "fragParsingError"; + ErrorDetails["FRAG_GAP"] = "fragGap"; + ErrorDetails["REMUX_ALLOC_ERROR"] = "remuxAllocError"; + ErrorDetails["KEY_LOAD_ERROR"] = "keyLoadError"; + ErrorDetails["KEY_LOAD_TIMEOUT"] = "keyLoadTimeOut"; + ErrorDetails["BUFFER_ADD_CODEC_ERROR"] = "bufferAddCodecError"; + ErrorDetails["BUFFER_INCOMPATIBLE_CODECS_ERROR"] = "bufferIncompatibleCodecsError"; + ErrorDetails["BUFFER_APPEND_ERROR"] = "bufferAppendError"; + ErrorDetails["BUFFER_APPENDING_ERROR"] = "bufferAppendingError"; + ErrorDetails["BUFFER_STALLED_ERROR"] = "bufferStalledError"; + ErrorDetails["BUFFER_FULL_ERROR"] = "bufferFullError"; + ErrorDetails["BUFFER_SEEK_OVER_HOLE"] = "bufferSeekOverHole"; + ErrorDetails["BUFFER_NUDGE_ON_STALL"] = "bufferNudgeOnStall"; + ErrorDetails["INTERNAL_EXCEPTION"] = "internalException"; + ErrorDetails["INTERNAL_ABORTED"] = "aborted"; + ErrorDetails["ATTACH_MEDIA_ERROR"] = "attachMediaError"; + ErrorDetails["UNKNOWN"] = "unknown"; + return ErrorDetails; + }({}); + + var Logger = function Logger(label, logger) { + this.trace = void 0; + this.debug = void 0; + this.log = void 0; + this.warn = void 0; + this.info = void 0; + this.error = void 0; + var lb = "[" + label + "]:"; + this.trace = noop; + this.debug = logger.debug.bind(null, lb); + this.log = logger.log.bind(null, lb); + this.warn = logger.warn.bind(null, lb); + this.info = logger.info.bind(null, lb); + this.error = logger.error.bind(null, lb); + }; + var noop = function noop() {}; + var fakeLogger = { + trace: noop, + debug: noop, + log: noop, + warn: noop, + info: noop, + error: noop + }; + function createLogger() { + return _extends({}, fakeLogger); + } + + // let lastCallTime; + // function formatMsgWithTimeInfo(type, msg) { + // const now = Date.now(); + // const diff = lastCallTime ? '+' + (now - lastCallTime) : '0'; + // lastCallTime = now; + // msg = (new Date(now)).toISOString() + ' | [' + type + '] > ' + msg + ' ( ' + diff + ' ms )'; + // return msg; + // } + + function consolePrintFn(type, id) { + var func = self.console[type]; + return func ? func.bind(self.console, ('') + "[" + type + "] >") : noop; + } + function getLoggerFn(key, debugConfig, id) { + return debugConfig[key] ? debugConfig[key].bind(debugConfig) : consolePrintFn(key); + } + var exportedLogger = createLogger(); + function enableLogs(debugConfig, context, id) { + // check that console is available + var newLogger = createLogger(); + if (typeof console === 'object' && debugConfig === true || typeof debugConfig === 'object') { + var keys = [ + // Remove out from list here to hard-disable a log-level + // 'trace', + 'debug', 'log', 'info', 'warn', 'error']; + keys.forEach(function (key) { + newLogger[key] = getLoggerFn(key, debugConfig); + }); + // Some browsers don't allow to use bind on console object anyway + // fallback to default if needed + try { + newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + undefined); + } catch (e) { + /* log fn threw an exception. All logger methods are no-ops. */ + return createLogger(); + } + // global exported logger uses the same functions as new logger without `id` + keys.forEach(function (key) { + exportedLogger[key] = getLoggerFn(key, debugConfig); + }); + } else { + // Reset global exported logger + _extends(exportedLogger, newLogger); + } + return newLogger; + } + var logger = exportedLogger; + + var VARIABLE_REPLACEMENT_REGEX = /\{\$([a-zA-Z0-9-_]+)\}/g; + function hasVariableReferences(str) { + return VARIABLE_REPLACEMENT_REGEX.test(str); + } + function substituteVariables(parsed, value) { + if (parsed.variableList !== null || parsed.hasVariableRefs) { + var variableList = parsed.variableList; + return value.replace(VARIABLE_REPLACEMENT_REGEX, function (variableReference) { + var variableName = variableReference.substring(2, variableReference.length - 1); + var variableValue = variableList == null ? void 0 : variableList[variableName]; + if (variableValue === undefined) { + parsed.playlistParsingError || (parsed.playlistParsingError = new Error("Missing preceding EXT-X-DEFINE tag for Variable Reference: \"" + variableName + "\"")); + return variableReference; + } + return variableValue; + }); + } + return value; + } + function addVariableDefinition(parsed, attr, parentUrl) { + var variableList = parsed.variableList; + if (!variableList) { + parsed.variableList = variableList = {}; + } + var NAME; + var VALUE; + if ('QUERYPARAM' in attr) { + NAME = attr.QUERYPARAM; + try { + var searchParams = new self.URL(parentUrl).searchParams; + if (searchParams.has(NAME)) { + VALUE = searchParams.get(NAME); + } else { + throw new Error("\"" + NAME + "\" does not match any query parameter in URI: \"" + parentUrl + "\""); + } + } catch (error) { + parsed.playlistParsingError || (parsed.playlistParsingError = new Error("EXT-X-DEFINE QUERYPARAM: " + error.message)); + } + } else { + NAME = attr.NAME; + VALUE = attr.VALUE; + } + if (NAME in variableList) { + parsed.playlistParsingError || (parsed.playlistParsingError = new Error("EXT-X-DEFINE duplicate Variable Name declarations: \"" + NAME + "\"")); + } else { + variableList[NAME] = VALUE || ''; + } + } + function importVariableDefinition(parsed, attr, sourceVariableList) { + var IMPORT = attr.IMPORT; + if (sourceVariableList && IMPORT in sourceVariableList) { + var variableList = parsed.variableList; + if (!variableList) { + parsed.variableList = variableList = {}; + } + variableList[IMPORT] = sourceVariableList[IMPORT]; + } else { + parsed.playlistParsingError || (parsed.playlistParsingError = new Error("EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: \"" + IMPORT + "\"")); + } + } + + var DECIMAL_RESOLUTION_REGEX = /^(\d+)x(\d+)$/; + var ATTR_LIST_REGEX = /(.+?)=(".*?"|.*?)(?:,|$)/g; + + // adapted from https://github.com/kanongil/node-m3u8parse/blob/master/attrlist.js + var AttrList = /*#__PURE__*/function () { + function AttrList(attrs, parsed) { + if (typeof attrs === 'string') { + attrs = AttrList.parseAttrList(attrs, parsed); + } + _extends(this, attrs); + } + var _proto = AttrList.prototype; + _proto.decimalInteger = function decimalInteger(attrName) { + var intValue = parseInt(this[attrName], 10); + if (intValue > Number.MAX_SAFE_INTEGER) { + return Infinity; + } + return intValue; + }; + _proto.hexadecimalInteger = function hexadecimalInteger(attrName) { + if (this[attrName]) { + var stringValue = (this[attrName] || '0x').slice(2); + stringValue = (stringValue.length & 1 ? '0' : '') + stringValue; + var value = new Uint8Array(stringValue.length / 2); + for (var i = 0; i < stringValue.length / 2; i++) { + value[i] = parseInt(stringValue.slice(i * 2, i * 2 + 2), 16); + } + return value; + } else { + return null; + } + }; + _proto.hexadecimalIntegerAsNumber = function hexadecimalIntegerAsNumber(attrName) { + var intValue = parseInt(this[attrName], 16); + if (intValue > Number.MAX_SAFE_INTEGER) { + return Infinity; + } + return intValue; + }; + _proto.decimalFloatingPoint = function decimalFloatingPoint(attrName) { + return parseFloat(this[attrName]); + }; + _proto.optionalFloat = function optionalFloat(attrName, defaultValue) { + var value = this[attrName]; + return value ? parseFloat(value) : defaultValue; + }; + _proto.enumeratedString = function enumeratedString(attrName) { + return this[attrName]; + }; + _proto.enumeratedStringList = function enumeratedStringList(attrName, dict) { + var attrValue = this[attrName]; + return (attrValue ? attrValue.split(/[ ,]+/) : []).reduce(function (result, identifier) { + result[identifier.toLowerCase()] = true; + return result; + }, dict); + }; + _proto.bool = function bool(attrName) { + return this[attrName] === 'YES'; + }; + _proto.decimalResolution = function decimalResolution(attrName) { + var res = DECIMAL_RESOLUTION_REGEX.exec(this[attrName]); + if (res === null) { + return undefined; + } + return { + width: parseInt(res[1], 10), + height: parseInt(res[2], 10) + }; + }; + AttrList.parseAttrList = function parseAttrList(input, parsed) { + var match; + var attrs = {}; + var quote = '"'; + ATTR_LIST_REGEX.lastIndex = 0; + while ((match = ATTR_LIST_REGEX.exec(input)) !== null) { + var name = match[1].trim(); + var value = match[2]; + var quotedString = value.indexOf(quote) === 0 && value.lastIndexOf(quote) === value.length - 1; + var hexadecimalSequence = false; + if (quotedString) { + value = value.slice(1, -1); + } else { + switch (name) { + case 'IV': + case 'SCTE35-CMD': + case 'SCTE35-IN': + case 'SCTE35-OUT': + hexadecimalSequence = true; + } + } + if (parsed && (quotedString || hexadecimalSequence)) { + { + value = substituteVariables(parsed, value); + } + } else if (!hexadecimalSequence && !quotedString) { + switch (name) { + case 'CLOSED-CAPTIONS': + if (value === 'NONE') { + break; + } + // falls through + case 'ALLOWED-CPC': + case 'CLASS': + case 'ASSOC-LANGUAGE': + case 'AUDIO': + case 'BYTERANGE': + case 'CHANNELS': + case 'CHARACTERISTICS': + case 'CODECS': + case 'DATA-ID': + case 'END-DATE': + case 'GROUP-ID': + case 'ID': + case 'IMPORT': + case 'INSTREAM-ID': + case 'KEYFORMAT': + case 'KEYFORMATVERSIONS': + case 'LANGUAGE': + case 'NAME': + case 'PATHWAY-ID': + case 'QUERYPARAM': + case 'RECENTLY-REMOVED-DATERANGES': + case 'SERVER-URI': + case 'STABLE-RENDITION-ID': + case 'STABLE-VARIANT-ID': + case 'START-DATE': + case 'SUBTITLES': + case 'SUPPLEMENTAL-CODECS': + case 'URI': + case 'VALUE': + case 'VIDEO': + case 'X-ASSET-LIST': + case 'X-ASSET-URI': + // Since we are not checking tag:attribute combination, just warn rather than ignoring attribute + logger.warn(input + ": attribute " + name + " is missing quotes"); + // continue; + } + } + attrs[name] = value; + } + return attrs; + }; + return _createClass(AttrList, [{ + key: "clientAttrs", + get: function get() { + return Object.keys(this).filter(function (attr) { + return attr.substring(0, 2) === 'X-'; + }); + } + }]); + }(); + + // Avoid exporting const enum so that these values can be inlined + + var CLASS_INTERSTITIAL = 'com.apple.hls.interstitial'; + function isDateRangeCueAttribute(attrName) { + return attrName !== "ID" && attrName !== "CLASS" && attrName !== "CUE" && attrName !== "START-DATE" && attrName !== "DURATION" && attrName !== "END-DATE" && attrName !== "END-ON-NEXT"; + } + function isSCTE35Attribute(attrName) { + return attrName === "SCTE35-OUT" || attrName === "SCTE35-IN" || attrName === "SCTE35-CMD"; + } + var DateRange = /*#__PURE__*/function () { + function DateRange(dateRangeAttr, dateRangeWithSameId, tagCount) { + var _dateRangeWithSameId$; + if (tagCount === void 0) { + tagCount = 0; + } + this.attr = void 0; + this.tagAnchor = void 0; + this.tagOrder = void 0; + this._startDate = void 0; + this._endDate = void 0; + this._cue = void 0; + this._badValueForSameId = void 0; + this.tagAnchor = (dateRangeWithSameId == null ? void 0 : dateRangeWithSameId.tagAnchor) || null; + this.tagOrder = (_dateRangeWithSameId$ = dateRangeWithSameId == null ? void 0 : dateRangeWithSameId.tagOrder) != null ? _dateRangeWithSameId$ : tagCount; + if (dateRangeWithSameId) { + var previousAttr = dateRangeWithSameId.attr; + for (var key in previousAttr) { + if (Object.prototype.hasOwnProperty.call(dateRangeAttr, key) && dateRangeAttr[key] !== previousAttr[key]) { + logger.warn("DATERANGE tag attribute: \"" + key + "\" does not match for tags with ID: \"" + dateRangeAttr.ID + "\""); + this._badValueForSameId = key; + break; + } + } + // Merge DateRange tags with the same ID + dateRangeAttr = _extends(new AttrList({}), previousAttr, dateRangeAttr); + } + this.attr = dateRangeAttr; + this._startDate = dateRangeWithSameId ? dateRangeWithSameId.startDate : new Date(dateRangeAttr["START-DATE"]); + if ("END-DATE" in this.attr) { + var endDate = (dateRangeWithSameId == null ? void 0 : dateRangeWithSameId.endDate) || new Date(this.attr["END-DATE"]); + if (isFiniteNumber(endDate.getTime())) { + this._endDate = endDate; + } + } + } + return _createClass(DateRange, [{ + key: "id", + get: function get() { + return this.attr.ID; + } + }, { + key: "class", + get: function get() { + return this.attr.CLASS; + } + }, { + key: "cue", + get: function get() { + var _cue = this._cue; + if (_cue === undefined) { + return this._cue = this.attr.enumeratedStringList(this.attr.CUE ? 'CUE' : 'X-CUE', { + pre: false, + post: false, + once: false + }); + } + return _cue; + } + }, { + key: "startTime", + get: function get() { + var tagAnchor = this.tagAnchor; + // eslint-disable-next-line @typescript-eslint/prefer-optional-chain + if (tagAnchor === null || tagAnchor.programDateTime === null) { + logger.warn("Expected tagAnchor Fragment with PDT set for DateRange \"" + this.id + "\": " + tagAnchor); + return NaN; + } + return tagAnchor.start + (this.startDate.getTime() - tagAnchor.programDateTime) / 1000; + } + }, { + key: "startDate", + get: function get() { + return this._startDate; + } + }, { + key: "endDate", + get: function get() { + if (this._endDate) { + return this._endDate; + } + var duration = this.duration; + if (duration !== null) { + return new Date(this._startDate.getTime() + duration * 1000); + } + return null; + } + }, { + key: "duration", + get: function get() { + if ("DURATION" in this.attr) { + var duration = this.attr.decimalFloatingPoint("DURATION"); + if (isFiniteNumber(duration)) { + return duration; + } + } else if (this._endDate) { + return (this._endDate.getTime() - this._startDate.getTime()) / 1000; + } + return null; + } + }, { + key: "plannedDuration", + get: function get() { + if ("PLANNED-DURATION" in this.attr) { + return this.attr.decimalFloatingPoint("PLANNED-DURATION"); + } + return null; + } + }, { + key: "endOnNext", + get: function get() { + return this.attr.bool("END-ON-NEXT"); + } + }, { + key: "isInterstitial", + get: function get() { + return this.class === CLASS_INTERSTITIAL; + } + }, { + key: "isValid", + get: function get() { + return !!this.id && !this._badValueForSameId && isFiniteNumber(this.startDate.getTime()) && (this.duration === null || this.duration >= 0) && (!this.endOnNext || !!this.class) && (!this.attr.CUE || !this.cue.pre && !this.cue.post || this.cue.pre !== this.cue.post) && (!this.isInterstitial || 'X-ASSET-URI' in this.attr || 'X-ASSET-LIST' in this.attr); + } + }]); + }(); + + var LoadStats = function LoadStats() { + this.aborted = false; + this.loaded = 0; + this.retry = 0; + this.total = 0; + this.chunkCount = 0; + this.bwEstimate = 0; + this.loading = { + start: 0, + first: 0, + end: 0 + }; + this.parsing = { + start: 0, + end: 0 + }; + this.buffering = { + start: 0, + first: 0, + end: 0 + }; + }; + + var ElementaryStreamTypes = { + AUDIO: "audio", + VIDEO: "video", + AUDIOVIDEO: "audiovideo" + }; + var BaseSegment = /*#__PURE__*/function () { + function BaseSegment(baseurl) { + var _this$elementaryStrea; + this._byteRange = null; + this._url = null; + // baseurl is the URL to the playlist + this.baseurl = void 0; + // relurl is the portion of the URL that comes from inside the playlist. + this.relurl = void 0; + // Holds the types of data this fragment supports + this.elementaryStreams = (_this$elementaryStrea = {}, _this$elementaryStrea[ElementaryStreamTypes.AUDIO] = null, _this$elementaryStrea[ElementaryStreamTypes.VIDEO] = null, _this$elementaryStrea[ElementaryStreamTypes.AUDIOVIDEO] = null, _this$elementaryStrea); + this.baseurl = baseurl; + } + + // setByteRange converts a EXT-X-BYTERANGE attribute into a two element array + var _proto = BaseSegment.prototype; + _proto.setByteRange = function setByteRange(value, previous) { + var params = value.split('@', 2); + var start; + if (params.length === 1) { + start = (previous == null ? void 0 : previous.byteRangeEndOffset) || 0; + } else { + start = parseInt(params[1]); + } + this._byteRange = [start, parseInt(params[0]) + start]; + }; + return _createClass(BaseSegment, [{ + key: "byteRange", + get: function get() { + if (!this._byteRange) { + return []; + } + return this._byteRange; + } + }, { + key: "byteRangeStartOffset", + get: function get() { + return this.byteRange[0]; + } + }, { + key: "byteRangeEndOffset", + get: function get() { + return this.byteRange[1]; + } + }, { + key: "url", + get: function get() { + if (!this._url && this.baseurl && this.relurl) { + this._url = urlToolkitExports.buildAbsoluteURL(this.baseurl, this.relurl, { + alwaysNormalize: true + }); + } + return this._url || ''; + }, + set: function set(value) { + this._url = value; + } + }]); + }(); + /** + * Object representing parsed data from an HLS Segment. Found in {@link hls.js#LevelDetails.fragments}. + */ + var Fragment = /*#__PURE__*/function (_BaseSegment2) { + function Fragment(type, baseurl) { + var _this; + _this = _BaseSegment2.call(this, baseurl) || this; + _this._decryptdata = null; + _this.rawProgramDateTime = null; + _this.programDateTime = null; + _this.tagList = []; + // EXTINF has to be present for a m3u8 to be considered valid + _this.duration = 0; + // sn notates the sequence number for a segment, and if set to a string can be 'initSegment' + _this.sn = 0; + // levelkeys are the EXT-X-KEY tags that apply to this segment for decryption + // core difference from the private field _decryptdata is the lack of the initialized IV + // _decryptdata will set the IV for this segment based on the segment number in the fragment + _this.levelkeys = void 0; + // A string representing the fragment type + _this.type = void 0; + // A reference to the loader. Set while the fragment is loading, and removed afterwards. Used to abort fragment loading + _this.loader = null; + // A reference to the key loader. Set while the key is loading, and removed afterwards. Used to abort key loading + _this.keyLoader = null; + // The level/track index to which the fragment belongs + _this.level = -1; + // The continuity counter of the fragment + _this.cc = 0; + // The starting Presentation Time Stamp (PTS) of the fragment. Set after transmux complete. + _this.startPTS = void 0; + // The ending Presentation Time Stamp (PTS) of the fragment. Set after transmux complete. + _this.endPTS = void 0; + // The starting Decode Time Stamp (DTS) of the fragment. Set after transmux complete. + _this.startDTS = void 0; + // The ending Decode Time Stamp (DTS) of the fragment. Set after transmux complete. + _this.endDTS = void 0; + // The start time of the fragment, as listed in the manifest. Updated after transmux complete. + _this.start = 0; + // Set by `updateFragPTSDTS` in level-helper + _this.deltaPTS = void 0; + // The maximum starting Presentation Time Stamp (audio/video PTS) of the fragment. Set after transmux complete. + _this.maxStartPTS = void 0; + // The minimum ending Presentation Time Stamp (audio/video PTS) of the fragment. Set after transmux complete. + _this.minEndPTS = void 0; + // Load/parse timing information + _this.stats = new LoadStats(); + // Init Segment bytes (unset for media segments) + _this.data = void 0; + // A flag indicating whether the segment was downloaded in order to test bitrate, and was not buffered + _this.bitrateTest = false; + // #EXTINF segment title + _this.title = null; + // The Media Initialization Section for this segment + _this.initSegment = null; + // Fragment is the last fragment in the media playlist + _this.endList = void 0; + // Fragment is marked by an EXT-X-GAP tag indicating that it does not contain media data and should not be loaded + _this.gap = void 0; + // Deprecated + _this.urlId = 0; + _this.type = type; + return _this; + } + _inheritsLoose(Fragment, _BaseSegment2); + var _proto2 = Fragment.prototype; + _proto2.setKeyFormat = function setKeyFormat(keyFormat) { + if (this.levelkeys) { + var key = this.levelkeys[keyFormat]; + if (key && !this._decryptdata) { + this._decryptdata = key.getDecryptData(this.sn); + } + } + }; + _proto2.abortRequests = function abortRequests() { + var _this$loader, _this$keyLoader; + (_this$loader = this.loader) == null ? void 0 : _this$loader.abort(); + (_this$keyLoader = this.keyLoader) == null ? void 0 : _this$keyLoader.abort(); + }; + _proto2.setElementaryStreamInfo = function setElementaryStreamInfo(type, startPTS, endPTS, startDTS, endDTS, partial) { + if (partial === void 0) { + partial = false; + } + var elementaryStreams = this.elementaryStreams; + var info = elementaryStreams[type]; + if (!info) { + elementaryStreams[type] = { + startPTS: startPTS, + endPTS: endPTS, + startDTS: startDTS, + endDTS: endDTS, + partial: partial + }; + return; + } + info.startPTS = Math.min(info.startPTS, startPTS); + info.endPTS = Math.max(info.endPTS, endPTS); + info.startDTS = Math.min(info.startDTS, startDTS); + info.endDTS = Math.max(info.endDTS, endDTS); + }; + _proto2.clearElementaryStreamInfo = function clearElementaryStreamInfo() { + var elementaryStreams = this.elementaryStreams; + elementaryStreams[ElementaryStreamTypes.AUDIO] = null; + elementaryStreams[ElementaryStreamTypes.VIDEO] = null; + elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO] = null; + }; + return _createClass(Fragment, [{ + key: "decryptdata", + get: function get() { + var levelkeys = this.levelkeys; + if (!levelkeys && !this._decryptdata) { + return null; + } + if (!this._decryptdata && this.levelkeys && !this.levelkeys.NONE) { + var key = this.levelkeys.identity; + if (key) { + this._decryptdata = key.getDecryptData(this.sn); + } else { + var keyFormats = Object.keys(this.levelkeys); + if (keyFormats.length === 1) { + return this._decryptdata = this.levelkeys[keyFormats[0]].getDecryptData(this.sn); + } + } + } + return this._decryptdata; + } + }, { + key: "end", + get: function get() { + return this.start + this.duration; + } + }, { + key: "endProgramDateTime", + get: function get() { + if (this.programDateTime === null) { + return null; + } + if (!isFiniteNumber(this.programDateTime)) { + return null; + } + var duration = !isFiniteNumber(this.duration) ? 0 : this.duration; + return this.programDateTime + duration * 1000; + } + }, { + key: "encrypted", + get: function get() { + var _this$_decryptdata; + // At the m3u8-parser level we need to add support for manifest signalled keyformats + // when we want the fragment to start reporting that it is encrypted. + // Currently, keyFormat will only be set for identity keys + if ((_this$_decryptdata = this._decryptdata) != null && _this$_decryptdata.encrypted) { + return true; + } else if (this.levelkeys) { + var keyFormats = Object.keys(this.levelkeys); + var len = keyFormats.length; + if (len > 1 || len === 1 && this.levelkeys[keyFormats[0]].encrypted) { + return true; + } + } + return false; + } + }]); + }(BaseSegment); + + /** + * Object representing parsed data from an HLS Partial Segment. Found in {@link hls.js#LevelDetails.partList}. + */ + var Part = /*#__PURE__*/function (_BaseSegment3) { + function Part(partAttrs, frag, baseurl, index, previous) { + var _this2; + _this2 = _BaseSegment3.call(this, baseurl) || this; + _this2.fragOffset = 0; + _this2.duration = 0; + _this2.gap = false; + _this2.independent = false; + _this2.relurl = void 0; + _this2.fragment = void 0; + _this2.index = void 0; + _this2.stats = new LoadStats(); + _this2.duration = partAttrs.decimalFloatingPoint('DURATION'); + _this2.gap = partAttrs.bool('GAP'); + _this2.independent = partAttrs.bool('INDEPENDENT'); + _this2.relurl = partAttrs.enumeratedString('URI'); + _this2.fragment = frag; + _this2.index = index; + var byteRange = partAttrs.enumeratedString('BYTERANGE'); + if (byteRange) { + _this2.setByteRange(byteRange, previous); + } + if (previous) { + _this2.fragOffset = previous.fragOffset + previous.duration; + } + return _this2; + } + _inheritsLoose(Part, _BaseSegment3); + return _createClass(Part, [{ + key: "start", + get: function get() { + return this.fragment.start + this.fragOffset; + } + }, { + key: "end", + get: function get() { + return this.start + this.duration; + } + }, { + key: "loaded", + get: function get() { + var elementaryStreams = this.elementaryStreams; + return !!(elementaryStreams.audio || elementaryStreams.video || elementaryStreams.audiovideo); + } + }]); + }(BaseSegment); + + var DEFAULT_TARGET_DURATION = 10; + + /** + * Object representing parsed data from an HLS Media Playlist. Found in {@link hls.js#Level.details}. + */ + var LevelDetails = /*#__PURE__*/function () { + function LevelDetails(baseUrl) { + this.PTSKnown = false; + this.alignedSliding = false; + this.averagetargetduration = void 0; + this.endCC = 0; + this.endSN = 0; + this.fragments = void 0; + this.fragmentHint = void 0; + this.partList = null; + this.dateRanges = void 0; + this.dateRangeTagCount = 0; + this.live = true; + this.ageHeader = 0; + this.advancedDateTime = void 0; + this.updated = true; + this.advanced = true; + this.availabilityDelay = void 0; + // Manifest reload synchronization + this.misses = 0; + this.startCC = 0; + this.startSN = 0; + this.startTimeOffset = null; + this.targetduration = 0; + this.totalduration = 0; + this.type = null; + this.url = void 0; + this.m3u8 = ''; + this.version = null; + this.canBlockReload = false; + this.canSkipUntil = 0; + this.canSkipDateRanges = false; + this.skippedSegments = 0; + this.recentlyRemovedDateranges = void 0; + this.partHoldBack = 0; + this.holdBack = 0; + this.partTarget = 0; + this.preloadHint = void 0; + this.renditionReports = void 0; + this.tuneInGoal = 0; + this.deltaUpdateFailed = void 0; + this.driftStartTime = 0; + this.driftEndTime = 0; + this.driftStart = 0; + this.driftEnd = 0; + this.encryptedFragments = void 0; + this.playlistParsingError = null; + this.variableList = null; + this.hasVariableRefs = false; + this.fragments = []; + this.encryptedFragments = []; + this.dateRanges = {}; + this.url = baseUrl; + } + var _proto = LevelDetails.prototype; + _proto.reloaded = function reloaded(previous) { + if (!previous) { + this.advanced = true; + this.updated = true; + return; + } + var partSnDiff = this.lastPartSn - previous.lastPartSn; + var partIndexDiff = this.lastPartIndex - previous.lastPartIndex; + this.updated = this.endSN !== previous.endSN || !!partIndexDiff || !!partSnDiff || !this.live; + this.advanced = this.endSN > previous.endSN || partSnDiff > 0 || partSnDiff === 0 && partIndexDiff > 0; + if (this.updated || this.advanced) { + this.misses = Math.floor(previous.misses * 0.6); + } else { + this.misses = previous.misses + 1; + } + this.availabilityDelay = previous.availabilityDelay; + }; + return _createClass(LevelDetails, [{ + key: "hasProgramDateTime", + get: function get() { + if (this.fragments.length) { + return isFiniteNumber(this.fragments[this.fragments.length - 1].programDateTime); + } + return false; + } + }, { + key: "levelTargetDuration", + get: function get() { + return this.averagetargetduration || this.targetduration || DEFAULT_TARGET_DURATION; + } + }, { + key: "drift", + get: function get() { + var runTime = this.driftEndTime - this.driftStartTime; + if (runTime > 0) { + var runDuration = this.driftEnd - this.driftStart; + return runDuration * 1000 / runTime; + } + return 1; + } + }, { + key: "edge", + get: function get() { + return this.partEnd || this.fragmentEnd; + } + }, { + key: "partEnd", + get: function get() { + var _this$partList; + if ((_this$partList = this.partList) != null && _this$partList.length) { + return this.partList[this.partList.length - 1].end; + } + return this.fragmentEnd; + } + }, { + key: "fragmentEnd", + get: function get() { + var _this$fragments; + if ((_this$fragments = this.fragments) != null && _this$fragments.length) { + return this.fragments[this.fragments.length - 1].end; + } + return 0; + } + }, { + key: "age", + get: function get() { + if (this.advancedDateTime) { + return Math.max(Date.now() - this.advancedDateTime, 0) / 1000; + } + return 0; + } + }, { + key: "lastPartIndex", + get: function get() { + var _this$partList2; + if ((_this$partList2 = this.partList) != null && _this$partList2.length) { + return this.partList[this.partList.length - 1].index; + } + return -1; + } + }, { + key: "lastPartSn", + get: function get() { + var _this$partList3; + if ((_this$partList3 = this.partList) != null && _this$partList3.length) { + return this.partList[this.partList.length - 1].fragment.sn; + } + return this.endSN; + } + }]); + }(); + + function base64Decode(base64encodedStr) { + return Uint8Array.from(atob(base64encodedStr), function (c) { + return c.charCodeAt(0); + }); + } + + // breaking up those two types in order to clarify what is happening in the decoding path. + + // http://stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript/22373197 + // http://www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt + /* utf.js - UTF-8 <=> UTF-16 convertion + * + * Copyright (C) 1999 Masanao Izumo + * Version: 1.0 + * LastModified: Dec 25 1999 + * This library is free. You can redistribute it and/or modify it. + */ + + function strToUtf8array(str) { + return Uint8Array.from(unescape(encodeURIComponent(str)), function (c) { + return c.charCodeAt(0); + }); + } + + function getKeyIdBytes(str) { + var keyIdbytes = strToUtf8array(str).subarray(0, 16); + var paddedkeyIdbytes = new Uint8Array(16); + paddedkeyIdbytes.set(keyIdbytes, 16 - keyIdbytes.length); + return paddedkeyIdbytes; + } + function changeEndianness(keyId) { + var swap = function swap(array, from, to) { + var cur = array[from]; + array[from] = array[to]; + array[to] = cur; + }; + swap(keyId, 0, 3); + swap(keyId, 1, 2); + swap(keyId, 4, 5); + swap(keyId, 6, 7); + } + function convertDataUriToArrayBytes(uri) { + // data:[ + var colonsplit = uri.split(':'); + var keydata = null; + if (colonsplit[0] === 'data' && colonsplit.length === 2) { + var semicolonsplit = colonsplit[1].split(';'); + var commasplit = semicolonsplit[semicolonsplit.length - 1].split(','); + if (commasplit.length === 2) { + var isbase64 = commasplit[0] === 'base64'; + var data = commasplit[1]; + if (isbase64) { + semicolonsplit.splice(-1, 1); // remove from processing + keydata = base64Decode(data); + } else { + keydata = getKeyIdBytes(data); + } + } + } + return keydata; + } + + var DecrypterAesMode = { + cbc: 0, + ctr: 1 + }; + + function isFullSegmentEncryption(method) { + return method === 'AES-128' || method === 'AES-256' || method === 'AES-256-CTR'; + } + function getAesModeFromFullSegmentMethod(method) { + switch (method) { + case 'AES-128': + case 'AES-256': + return DecrypterAesMode.cbc; + case 'AES-256-CTR': + return DecrypterAesMode.ctr; + default: + throw new Error("invalid full segment method " + method); + } + } + + /** returns `undefined` is `self` is missing, e.g. in node */ + var optionalSelf = typeof self !== 'undefined' ? self : undefined; + + /** + * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/requestMediaKeySystemAccess + */ + var KeySystems = { + CLEARKEY: "org.w3.clearkey", + FAIRPLAY: "com.apple.fps", + PLAYREADY: "com.microsoft.playready", + WIDEVINE: "com.widevine.alpha" + }; + + // Playlist #EXT-X-KEY KEYFORMAT values + var KeySystemFormats = { + CLEARKEY: "org.w3.clearkey", + FAIRPLAY: "com.apple.streamingkeydelivery", + PLAYREADY: "com.microsoft.playready", + WIDEVINE: "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" + }; + function keySystemFormatToKeySystemDomain(format) { + switch (format) { + case KeySystemFormats.FAIRPLAY: + return KeySystems.FAIRPLAY; + case KeySystemFormats.PLAYREADY: + return KeySystems.PLAYREADY; + case KeySystemFormats.WIDEVINE: + return KeySystems.WIDEVINE; + case KeySystemFormats.CLEARKEY: + return KeySystems.CLEARKEY; + } + } + + // System IDs for which we can extract a key ID from "encrypted" event PSSH + var KeySystemIds = { + CENC: "1077efecc0b24d02ace33c1e52e2fb4b", + CLEARKEY: "e2719d58a985b3c9781ab030af78d30e", + FAIRPLAY: "94ce86fb07ff4f43adb893d2fa968ca2", + PLAYREADY: "9a04f07998404286ab92e65be0885f95", + WIDEVINE: "edef8ba979d64acea3c827dcd51d21ed" + }; + function keySystemIdToKeySystemDomain(systemId) { + if (systemId === KeySystemIds.WIDEVINE) { + return KeySystems.WIDEVINE; + } else if (systemId === KeySystemIds.PLAYREADY) { + return KeySystems.PLAYREADY; + } else if (systemId === KeySystemIds.CENC || systemId === KeySystemIds.CLEARKEY) { + return KeySystems.CLEARKEY; + } + } + function keySystemDomainToKeySystemFormat(keySystem) { + switch (keySystem) { + case KeySystems.FAIRPLAY: + return KeySystemFormats.FAIRPLAY; + case KeySystems.PLAYREADY: + return KeySystemFormats.PLAYREADY; + case KeySystems.WIDEVINE: + return KeySystemFormats.WIDEVINE; + case KeySystems.CLEARKEY: + return KeySystemFormats.CLEARKEY; + } + } + function getKeySystemsForConfig(config) { + var drmSystems = config.drmSystems, + widevineLicenseUrl = config.widevineLicenseUrl; + var keySystemsToAttempt = drmSystems ? [KeySystems.FAIRPLAY, KeySystems.WIDEVINE, KeySystems.PLAYREADY, KeySystems.CLEARKEY].filter(function (keySystem) { + return !!drmSystems[keySystem]; + }) : []; + if (!keySystemsToAttempt[KeySystems.WIDEVINE] && widevineLicenseUrl) { + keySystemsToAttempt.push(KeySystems.WIDEVINE); + } + return keySystemsToAttempt; + } + var requestMediaKeySystemAccess = function (_optionalSelf$navigat) { + if (optionalSelf != null && (_optionalSelf$navigat = optionalSelf.navigator) != null && _optionalSelf$navigat.requestMediaKeySystemAccess) { + return self.navigator.requestMediaKeySystemAccess.bind(self.navigator); + } else { + return null; + } + }(); + + /** + * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemConfiguration + */ + function getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, drmSystemOptions) { + var initDataTypes; + switch (keySystem) { + case KeySystems.FAIRPLAY: + initDataTypes = ['cenc', 'sinf']; + break; + case KeySystems.WIDEVINE: + case KeySystems.PLAYREADY: + initDataTypes = ['cenc']; + break; + case KeySystems.CLEARKEY: + initDataTypes = ['cenc', 'keyids']; + break; + default: + throw new Error("Unknown key-system: " + keySystem); + } + return createMediaKeySystemConfigurations(initDataTypes, audioCodecs, videoCodecs, drmSystemOptions); + } + function createMediaKeySystemConfigurations(initDataTypes, audioCodecs, videoCodecs, drmSystemOptions) { + var baseConfig = { + initDataTypes: initDataTypes, + persistentState: drmSystemOptions.persistentState || 'optional', + distinctiveIdentifier: drmSystemOptions.distinctiveIdentifier || 'optional', + sessionTypes: drmSystemOptions.sessionTypes || [drmSystemOptions.sessionType || 'temporary'], + audioCapabilities: audioCodecs.map(function (codec) { + return { + contentType: "audio/mp4; codecs=\"" + codec + "\"", + robustness: drmSystemOptions.audioRobustness || '', + encryptionScheme: drmSystemOptions.audioEncryptionScheme || null + }; + }), + videoCapabilities: videoCodecs.map(function (codec) { + return { + contentType: "video/mp4; codecs=\"" + codec + "\"", + robustness: drmSystemOptions.videoRobustness || '', + encryptionScheme: drmSystemOptions.videoEncryptionScheme || null + }; + }) + }; + return [baseConfig]; + } + function parsePlayReadyWRM(keyBytes) { + var keyBytesUtf16 = new Uint16Array(keyBytes.buffer, keyBytes.byteOffset, keyBytes.byteLength / 2); + var keyByteStr = String.fromCharCode.apply(null, Array.from(keyBytesUtf16)); + + // Parse Playready WRMHeader XML + var xmlKeyBytes = keyByteStr.substring(keyByteStr.indexOf('<'), keyByteStr.length); + var parser = new DOMParser(); + var xmlDoc = parser.parseFromString(xmlKeyBytes, 'text/xml'); + var keyData = xmlDoc.getElementsByTagName('KID')[0]; + if (keyData) { + var keyId = keyData.childNodes[0] ? keyData.childNodes[0].nodeValue : keyData.getAttribute('VALUE'); + if (keyId) { + var keyIdArray = base64Decode(keyId).subarray(0, 16); + // KID value in PRO is a base64-encoded little endian GUID interpretation of UUID + // KID value in ‘tenc’ is a big endian UUID GUID interpretation of UUID + changeEndianness(keyIdArray); + return keyIdArray; + } + } + return null; + } + + function sliceUint8(array, start, end) { + // @ts-expect-error This polyfills IE11 usage of Uint8Array slice. + // It always exists in the TypeScript definition so fails, but it fails at runtime on IE11. + return Uint8Array.prototype.slice ? array.slice(start, end) : new Uint8Array(Array.prototype.slice.call(array, start, end)); + } + + // http://stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript/22373197 + // http://www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt + /* utf.js - UTF-8 <=> UTF-16 convertion + * + * Copyright (C) 1999 Masanao Izumo + * Version: 1.0 + * LastModified: Dec 25 1999 + * This library is free. You can redistribute it and/or modify it. + */ + /** + * Converts a UTF-8 array to a string. + * + * @param array - The UTF-8 array to convert + * + * @returns The string + * + * @group Utils + * + * @beta + */ + function utf8ArrayToStr(array, exitOnNull) { + if (exitOnNull === void 0) { + exitOnNull = false; + } + if (typeof TextDecoder !== 'undefined') { + var decoder = new TextDecoder('utf-8'); + var decoded = decoder.decode(array); + if (exitOnNull) { + // grab up to the first null + var idx = decoded.indexOf('\0'); + return idx !== -1 ? decoded.substring(0, idx) : decoded; + } + // remove any null characters + return decoded.replace(/\0/g, ''); + } + var len = array.length; + var c; + var char2; + var char3; + var out = ''; + var i = 0; + while (i < len) { + c = array[i++]; + if (c === 0x00 && exitOnNull) { + return out; + } else if (c === 0x00 || c === 0x03) { + // If the character is 3 (END_OF_TEXT) or 0 (NULL) then skip it + continue; + } + switch (c >> 4) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + // 0xxxxxxx + out += String.fromCharCode(c); + break; + case 12: + case 13: + // 110x xxxx 10xx xxxx + char2 = array[i++]; + out += String.fromCharCode((c & 0x1f) << 6 | char2 & 0x3f); + break; + case 14: + // 1110 xxxx 10xx xxxx 10xx xxxx + char2 = array[i++]; + char3 = array[i++]; + out += String.fromCharCode((c & 0x0f) << 12 | (char2 & 0x3f) << 6 | (char3 & 0x3f) << 0); + break; + } + } + return out; + } + + /** + * hex dump helper class + */ + + var Hex = { + hexDump: function hexDump(array) { + var str = ''; + for (var i = 0; i < array.length; i++) { + var h = array[i].toString(16); + if (h.length < 2) { + h = '0' + h; + } + str += h; + } + return str; + } + }; + + var UINT32_MAX$1 = Math.pow(2, 32) - 1; + var push = [].push; + + // We are using fixed track IDs for driving the MP4 remuxer + // instead of following the TS PIDs. + // There is no reason not to do this and some browsers/SourceBuffer-demuxers + // may not like if there are TrackID "switches" + // See https://github.com/video-dev/hls.js/issues/1331 + // Here we are mapping our internal track types to constant MP4 track IDs + // With MSE currently one can only have one track of each, and we are muxing + // whatever video/audio rendition in them. + var RemuxerTrackIdConfig = { + video: 1, + audio: 2, + id3: 3, + text: 4 + }; + function bin2str(data) { + return String.fromCharCode.apply(null, data); + } + function readUint16(buffer, offset) { + var val = buffer[offset] << 8 | buffer[offset + 1]; + return val < 0 ? 65536 + val : val; + } + function readUint32(buffer, offset) { + var val = readSint32(buffer, offset); + return val < 0 ? 4294967296 + val : val; + } + function readUint64(buffer, offset) { + var result = readUint32(buffer, offset); + result *= Math.pow(2, 32); + result += readUint32(buffer, offset + 4); + return result; + } + function readSint32(buffer, offset) { + return buffer[offset] << 24 | buffer[offset + 1] << 16 | buffer[offset + 2] << 8 | buffer[offset + 3]; + } + function writeUint32(buffer, offset, value) { + buffer[offset] = value >> 24; + buffer[offset + 1] = value >> 16 & 0xff; + buffer[offset + 2] = value >> 8 & 0xff; + buffer[offset + 3] = value & 0xff; + } + + // Find "moof" box + function hasMoofData(data) { + var end = data.byteLength; + for (var i = 0; i < end;) { + var size = readUint32(data, i); + if (size > 8 && data[i + 4] === 0x6d && data[i + 5] === 0x6f && data[i + 6] === 0x6f && data[i + 7] === 0x66) { + return true; + } + i = size > 1 ? i + size : end; + } + return false; + } + + // Find the data for a box specified by its path + function findBox(data, path) { + var results = []; + if (!path.length) { + // short-circuit the search for empty paths + return results; + } + var end = data.byteLength; + for (var i = 0; i < end;) { + var size = readUint32(data, i); + var type = bin2str(data.subarray(i + 4, i + 8)); + var endbox = size > 1 ? i + size : end; + if (type === path[0]) { + if (path.length === 1) { + // this is the end of the path and we've found the box we were + // looking for + results.push(data.subarray(i + 8, endbox)); + } else { + // recursively search for the next box along the path + var subresults = findBox(data.subarray(i + 8, endbox), path.slice(1)); + if (subresults.length) { + push.apply(results, subresults); + } + } + } + i = endbox; + } + + // we've finished searching all of data + return results; + } + function parseSegmentIndex(sidx) { + var references = []; + var version = sidx[0]; + + // set initial offset, we skip the reference ID (not needed) + var index = 8; + var timescale = readUint32(sidx, index); + index += 4; + var earliestPresentationTime = 0; + var firstOffset = 0; + if (version === 0) { + earliestPresentationTime = readUint32(sidx, index); + firstOffset = readUint32(sidx, index + 4); + index += 8; + } else { + earliestPresentationTime = readUint64(sidx, index); + firstOffset = readUint64(sidx, index + 8); + index += 16; + } + + // skip reserved + index += 2; + var startByte = sidx.length + firstOffset; + var referencesCount = readUint16(sidx, index); + index += 2; + for (var i = 0; i < referencesCount; i++) { + var referenceIndex = index; + var referenceInfo = readUint32(sidx, referenceIndex); + referenceIndex += 4; + var referenceSize = referenceInfo & 0x7fffffff; + var referenceType = (referenceInfo & 0x80000000) >>> 31; + if (referenceType === 1) { + logger.warn('SIDX has hierarchical references (not supported)'); + return null; + } + var subsegmentDuration = readUint32(sidx, referenceIndex); + referenceIndex += 4; + references.push({ + referenceSize: referenceSize, + subsegmentDuration: subsegmentDuration, + // unscaled + info: { + duration: subsegmentDuration / timescale, + start: startByte, + end: startByte + referenceSize - 1 + } + }); + startByte += referenceSize; + + // Skipping 1 bit for |startsWithSap|, 3 bits for |sapType|, and 28 bits + // for |sapDelta|. + referenceIndex += 4; + + // skip to next ref + index = referenceIndex; + } + return { + earliestPresentationTime: earliestPresentationTime, + timescale: timescale, + version: version, + referencesCount: referencesCount, + references: references + }; + } + + /** + * Parses an MP4 initialization segment and extracts stream type and + * timescale values for any declared tracks. Timescale values indicate the + * number of clock ticks per second to assume for time-based values + * elsewhere in the MP4. + * + * To determine the start time of an MP4, you need two pieces of + * information: the timescale unit and the earliest base media decode + * time. Multiple timescales can be specified within an MP4 but the + * base media decode time is always expressed in the timescale from + * the media header box for the track: + * ``` + * moov > trak > mdia > mdhd.timescale + * moov > trak > mdia > hdlr + * ``` + * @param initSegment the bytes of the init segment + * @returns a hash of track type to timescale values or null if + * the init segment is malformed. + */ + + function parseInitSegment(initSegment) { + var result = []; + var traks = findBox(initSegment, ['moov', 'trak']); + for (var i = 0; i < traks.length; i++) { + var trak = traks[i]; + var tkhd = findBox(trak, ['tkhd'])[0]; + if (tkhd) { + var version = tkhd[0]; + var trackId = readUint32(tkhd, version === 0 ? 12 : 20); + var mdhd = findBox(trak, ['mdia', 'mdhd'])[0]; + if (mdhd) { + version = mdhd[0]; + var timescale = readUint32(mdhd, version === 0 ? 12 : 20); + var hdlr = findBox(trak, ['mdia', 'hdlr'])[0]; + if (hdlr) { + var hdlrType = bin2str(hdlr.subarray(8, 12)); + var type = { + soun: ElementaryStreamTypes.AUDIO, + vide: ElementaryStreamTypes.VIDEO + }[hdlrType]; + if (type) { + // Parse codec details + var stsd = findBox(trak, ['mdia', 'minf', 'stbl', 'stsd'])[0]; + var stsdData = parseStsd(stsd); + result[trackId] = { + timescale: timescale, + type: type + }; + result[type] = _objectSpread2({ + timescale: timescale, + id: trackId + }, stsdData); + } + } + } + } + } + var trex = findBox(initSegment, ['moov', 'mvex', 'trex']); + trex.forEach(function (trex) { + var trackId = readUint32(trex, 4); + var track = result[trackId]; + if (track) { + track.default = { + duration: readUint32(trex, 12), + flags: readUint32(trex, 20) + }; + } + }); + return result; + } + function parseStsd(stsd) { + var sampleEntries = stsd.subarray(8); + var sampleEntriesEnd = sampleEntries.subarray(8 + 78); + var fourCC = bin2str(sampleEntries.subarray(4, 8)); + var codec = fourCC; + var encrypted = fourCC === 'enca' || fourCC === 'encv'; + if (encrypted) { + var encBox = findBox(sampleEntries, [fourCC])[0]; + var encBoxChildren = encBox.subarray(fourCC === 'enca' ? 28 : 78); + var sinfs = findBox(encBoxChildren, ['sinf']); + sinfs.forEach(function (sinf) { + var schm = findBox(sinf, ['schm'])[0]; + if (schm) { + var scheme = bin2str(schm.subarray(4, 8)); + if (scheme === 'cbcs' || scheme === 'cenc') { + var frma = findBox(sinf, ['frma'])[0]; + if (frma) { + // for encrypted content codec fourCC will be in frma + codec = bin2str(frma); + } + } + } + }); + } + switch (codec) { + case 'avc1': + case 'avc2': + case 'avc3': + case 'avc4': + { + // extract profile + compatibility + level out of avcC box + var avcCBox = findBox(sampleEntriesEnd, ['avcC'])[0]; + codec += '.' + toHex(avcCBox[1]) + toHex(avcCBox[2]) + toHex(avcCBox[3]); + break; + } + case 'mp4a': + { + var codecBox = findBox(sampleEntries, [fourCC])[0]; + var esdsBox = findBox(codecBox.subarray(28), ['esds'])[0]; + if (esdsBox && esdsBox.length > 7) { + var i = 4; + // ES Descriptor tag + if (esdsBox[i++] !== 0x03) { + break; + } + i = skipBERInteger(esdsBox, i); + i += 2; // skip es_id; + var flags = esdsBox[i++]; + if (flags & 0x80) { + i += 2; // skip dependency es_id + } + if (flags & 0x40) { + i += esdsBox[i++]; // skip URL + } + // Decoder config descriptor + if (esdsBox[i++] !== 0x04) { + break; + } + i = skipBERInteger(esdsBox, i); + var objectType = esdsBox[i++]; + if (objectType === 0x40) { + codec += '.' + toHex(objectType); + } else { + break; + } + i += 12; + // Decoder specific info + if (esdsBox[i++] !== 0x05) { + break; + } + i = skipBERInteger(esdsBox, i); + var firstByte = esdsBox[i++]; + var audioObjectType = (firstByte & 0xf8) >> 3; + if (audioObjectType === 31) { + audioObjectType += 1 + ((firstByte & 0x7) << 3) + ((esdsBox[i] & 0xe0) >> 5); + } + codec += '.' + audioObjectType; + } + break; + } + case 'hvc1': + case 'hev1': + { + var hvcCBox = findBox(sampleEntriesEnd, ['hvcC'])[0]; + var profileByte = hvcCBox[1]; + var profileSpace = ['', 'A', 'B', 'C'][profileByte >> 6]; + var generalProfileIdc = profileByte & 0x1f; + var profileCompat = readUint32(hvcCBox, 2); + var tierFlag = (profileByte & 0x20) >> 5 ? 'H' : 'L'; + var levelIDC = hvcCBox[12]; + var constraintIndicator = hvcCBox.subarray(6, 12); + codec += '.' + profileSpace + generalProfileIdc; + codec += '.' + profileCompat.toString(16).toUpperCase(); + codec += '.' + tierFlag + levelIDC; + var constraintString = ''; + for (var _i = constraintIndicator.length; _i--;) { + var _byte = constraintIndicator[_i]; + if (_byte || constraintString) { + var encodedByte = _byte.toString(16).toUpperCase(); + constraintString = '.' + encodedByte + constraintString; + } + } + codec += constraintString; + break; + } + case 'dvh1': + case 'dvhe': + { + var dvcCBox = findBox(sampleEntriesEnd, ['dvcC'])[0]; + var profile = dvcCBox[2] >> 1 & 0x7f; + var level = dvcCBox[2] << 5 & 0x20 | dvcCBox[3] >> 3 & 0x1f; + codec += '.' + addLeadingZero(profile) + '.' + addLeadingZero(level); + break; + } + case 'vp09': + { + var vpcCBox = findBox(sampleEntriesEnd, ['vpcC'])[0]; + var _profile = vpcCBox[4]; + var _level = vpcCBox[5]; + var bitDepth = vpcCBox[6] >> 4 & 0x0f; + codec += '.' + addLeadingZero(_profile) + '.' + addLeadingZero(_level) + '.' + addLeadingZero(bitDepth); + break; + } + case 'av01': + { + var av1CBox = findBox(sampleEntriesEnd, ['av1C'])[0]; + var _profile2 = av1CBox[1] >>> 5; + var _level2 = av1CBox[1] & 0x1f; + var _tierFlag = av1CBox[2] >>> 7 ? 'H' : 'M'; + var highBitDepth = (av1CBox[2] & 0x40) >> 6; + var twelveBit = (av1CBox[2] & 0x20) >> 5; + var _bitDepth = _profile2 === 2 && highBitDepth ? twelveBit ? 12 : 10 : highBitDepth ? 10 : 8; + var monochrome = (av1CBox[2] & 0x10) >> 4; + var chromaSubsamplingX = (av1CBox[2] & 0x08) >> 3; + var chromaSubsamplingY = (av1CBox[2] & 0x04) >> 2; + var chromaSamplePosition = av1CBox[2] & 0x03; + // TODO: parse color_description_present_flag + // default it to BT.709/limited range for now + // more info https://aomediacodec.github.io/av1-isobmff/#av1codecconfigurationbox-syntax + var colorPrimaries = 1; + var transferCharacteristics = 1; + var matrixCoefficients = 1; + var videoFullRangeFlag = 0; + codec += '.' + _profile2 + '.' + addLeadingZero(_level2) + _tierFlag + '.' + addLeadingZero(_bitDepth) + '.' + monochrome + '.' + chromaSubsamplingX + chromaSubsamplingY + chromaSamplePosition + '.' + addLeadingZero(colorPrimaries) + '.' + addLeadingZero(transferCharacteristics) + '.' + addLeadingZero(matrixCoefficients) + '.' + videoFullRangeFlag; + break; + } + } + return { + codec: codec, + encrypted: encrypted + }; + } + function skipBERInteger(bytes, i) { + var limit = i + 5; + while (bytes[i++] & 0x80 && i < limit) { + /* do nothing */ + } + return i; + } + function toHex(x) { + return ('0' + x.toString(16).toUpperCase()).slice(-2); + } + function addLeadingZero(num) { + return (num < 10 ? '0' : '') + num; + } + function patchEncyptionData(initSegment, decryptdata) { + if (!initSegment || !decryptdata) { + return initSegment; + } + var keyId = decryptdata.keyId; + if (keyId && decryptdata.isCommonEncryption) { + var traks = findBox(initSegment, ['moov', 'trak']); + traks.forEach(function (trak) { + var stsd = findBox(trak, ['mdia', 'minf', 'stbl', 'stsd'])[0]; + + // skip the sample entry count + var sampleEntries = stsd.subarray(8); + var encBoxes = findBox(sampleEntries, ['enca']); + var isAudio = encBoxes.length > 0; + if (!isAudio) { + encBoxes = findBox(sampleEntries, ['encv']); + } + encBoxes.forEach(function (enc) { + var encBoxChildren = isAudio ? enc.subarray(28) : enc.subarray(78); + var sinfBoxes = findBox(encBoxChildren, ['sinf']); + sinfBoxes.forEach(function (sinf) { + var tenc = parseSinf(sinf); + if (tenc) { + // Look for default key id (keyID offset is always 8 within the tenc box): + var tencKeyId = tenc.subarray(8, 24); + if (!tencKeyId.some(function (b) { + return b !== 0; + })) { + logger.log("[eme] Patching keyId in 'enc" + (isAudio ? 'a' : 'v') + ">sinf>>tenc' box: " + Hex.hexDump(tencKeyId) + " -> " + Hex.hexDump(keyId)); + tenc.set(keyId, 8); + } + } + }); + }); + }); + } + return initSegment; + } + function parseSinf(sinf) { + var schm = findBox(sinf, ['schm'])[0]; + if (schm) { + var scheme = bin2str(schm.subarray(4, 8)); + if (scheme === 'cbcs' || scheme === 'cenc') { + return findBox(sinf, ['schi', 'tenc'])[0]; + } + } + return null; + } + + /** + * Determine the base media decode start time, in seconds, for an MP4 + * fragment. If multiple fragments are specified, the earliest time is + * returned. + * + * The base media decode time can be parsed from track fragment + * metadata: + * ``` + * moof > traf > tfdt.baseMediaDecodeTime + * ``` + * It requires the timescale value from the mdhd to interpret. + * + * @param initData - a hash of track type to timescale values + * @param fmp4 - the bytes of the mp4 fragment + * @returns the earliest base media decode start time for the + * fragment, in seconds + */ + function getStartDTS(initData, fmp4) { + // we need info from two children of each track fragment box + return findBox(fmp4, ['moof', 'traf']).reduce(function (result, traf) { + var tfdt = findBox(traf, ['tfdt'])[0]; + var version = tfdt[0]; + var start = findBox(traf, ['tfhd']).reduce(function (result, tfhd) { + // get the track id from the tfhd + var id = readUint32(tfhd, 4); + var track = initData[id]; + if (track) { + var baseTime = readUint32(tfdt, 4); + if (version === 1) { + // If value is too large, assume signed 64-bit. Negative track fragment decode times are invalid, but they exist in the wild. + // This prevents large values from being used for initPTS, which can cause playlist sync issues. + // https://github.com/video-dev/hls.js/issues/5303 + if (baseTime === UINT32_MAX$1) { + logger.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"); + return result; + } + baseTime *= UINT32_MAX$1 + 1; + baseTime += readUint32(tfdt, 8); + } + // assume a 90kHz clock if no timescale was specified + var scale = track.timescale || 90e3; + // convert base time to seconds + var startTime = baseTime / scale; + if (isFiniteNumber(startTime) && (result === null || startTime < result)) { + return startTime; + } + } + return result; + }, null); + if (start !== null && isFiniteNumber(start) && (result === null || start < result)) { + return start; + } + return result; + }, null); + } + + /* + For Reference: + aligned(8) class TrackFragmentHeaderBox + extends FullBox(‘tfhd’, 0, tf_flags){ + unsigned int(32) track_ID; + // all the following are optional fields + unsigned int(64) base_data_offset; + unsigned int(32) sample_description_index; + unsigned int(32) default_sample_duration; + unsigned int(32) default_sample_size; + unsigned int(32) default_sample_flags + } + */ + function getDuration(data, initData) { + var rawDuration = 0; + var videoDuration = 0; + var audioDuration = 0; + var trafs = findBox(data, ['moof', 'traf']); + for (var i = 0; i < trafs.length; i++) { + var traf = trafs[i]; + // There is only one tfhd & trun per traf + // This is true for CMAF style content, and we should perhaps check the ftyp + // and only look for a single trun then, but for ISOBMFF we should check + // for multiple track runs. + var tfhd = findBox(traf, ['tfhd'])[0]; + // get the track id from the tfhd + var id = readUint32(tfhd, 4); + var track = initData[id]; + if (!track) { + continue; + } + var trackDefault = track.default; + var tfhdFlags = readUint32(tfhd, 0) | (trackDefault == null ? void 0 : trackDefault.flags); + var sampleDuration = trackDefault == null ? void 0 : trackDefault.duration; + if (tfhdFlags & 0x000008) { + // 0x000008 indicates the presence of the default_sample_duration field + if (tfhdFlags & 0x000002) { + // 0x000002 indicates the presence of the sample_description_index field, which precedes default_sample_duration + // If present, the default_sample_duration exists at byte offset 12 + sampleDuration = readUint32(tfhd, 12); + } else { + // Otherwise, the duration is at byte offset 8 + sampleDuration = readUint32(tfhd, 8); + } + } + // assume a 90kHz clock if no timescale was specified + var timescale = track.timescale || 90e3; + var truns = findBox(traf, ['trun']); + for (var j = 0; j < truns.length; j++) { + rawDuration = computeRawDurationFromSamples(truns[j]); + if (!rawDuration && sampleDuration) { + var sampleCount = readUint32(truns[j], 4); + rawDuration = sampleDuration * sampleCount; + } + if (track.type === ElementaryStreamTypes.VIDEO) { + videoDuration += rawDuration / timescale; + } else if (track.type === ElementaryStreamTypes.AUDIO) { + audioDuration += rawDuration / timescale; + } + } + } + if (videoDuration === 0 && audioDuration === 0) { + // If duration samples are not available in the traf use sidx subsegment_duration + var sidxMinStart = Infinity; + var sidxMaxEnd = 0; + var sidxDuration = 0; + var sidxs = findBox(data, ['sidx']); + for (var _i2 = 0; _i2 < sidxs.length; _i2++) { + var sidx = parseSegmentIndex(sidxs[_i2]); + if (sidx != null && sidx.references) { + sidxMinStart = Math.min(sidxMinStart, sidx.earliestPresentationTime / sidx.timescale); + var subSegmentDuration = sidx.references.reduce(function (dur, ref) { + return dur + ref.info.duration || 0; + }, 0); + sidxMaxEnd = Math.max(sidxMaxEnd, subSegmentDuration + sidx.earliestPresentationTime / sidx.timescale); + sidxDuration = sidxMaxEnd - sidxMinStart; + } + } + if (sidxDuration && isFiniteNumber(sidxDuration)) { + return sidxDuration; + } + } + if (videoDuration) { + return videoDuration; + } + return audioDuration; + } + + /* + For Reference: + aligned(8) class TrackRunBox + extends FullBox(‘trun’, version, tr_flags) { + unsigned int(32) sample_count; + // the following are optional fields + signed int(32) data_offset; + unsigned int(32) first_sample_flags; + // all fields in the following array are optional + { + unsigned int(32) sample_duration; + unsigned int(32) sample_size; + unsigned int(32) sample_flags + if (version == 0) + { unsigned int(32) + else + { signed int(32) + }[ sample_count ] + } + */ + function computeRawDurationFromSamples(trun) { + var flags = readUint32(trun, 0); + // Flags are at offset 0, non-optional sample_count is at offset 4. Therefore we start 8 bytes in. + // Each field is an int32, which is 4 bytes + var offset = 8; + // data-offset-present flag + if (flags & 0x000001) { + offset += 4; + } + // first-sample-flags-present flag + if (flags & 0x000004) { + offset += 4; + } + var duration = 0; + var sampleCount = readUint32(trun, 4); + for (var i = 0; i < sampleCount; i++) { + // sample-duration-present flag + if (flags & 0x000100) { + var sampleDuration = readUint32(trun, offset); + duration += sampleDuration; + offset += 4; + } + // sample-size-present flag + if (flags & 0x000200) { + offset += 4; + } + // sample-flags-present flag + if (flags & 0x000400) { + offset += 4; + } + // sample-composition-time-offsets-present flag + if (flags & 0x000800) { + offset += 4; + } + } + return duration; + } + function offsetStartDTS(initData, fmp4, timeOffset) { + findBox(fmp4, ['moof', 'traf']).forEach(function (traf) { + findBox(traf, ['tfhd']).forEach(function (tfhd) { + // get the track id from the tfhd + var id = readUint32(tfhd, 4); + var track = initData[id]; + if (!track) { + return; + } + // assume a 90kHz clock if no timescale was specified + var timescale = track.timescale || 90e3; + // get the base media decode time from the tfdt + findBox(traf, ['tfdt']).forEach(function (tfdt) { + var version = tfdt[0]; + var offset = timeOffset * timescale; + if (offset) { + var baseMediaDecodeTime = readUint32(tfdt, 4); + if (version === 0) { + baseMediaDecodeTime -= offset; + baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0); + writeUint32(tfdt, 4, baseMediaDecodeTime); + } else { + baseMediaDecodeTime *= Math.pow(2, 32); + baseMediaDecodeTime += readUint32(tfdt, 8); + baseMediaDecodeTime -= offset; + baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0); + var upper = Math.floor(baseMediaDecodeTime / (UINT32_MAX$1 + 1)); + var lower = Math.floor(baseMediaDecodeTime % (UINT32_MAX$1 + 1)); + writeUint32(tfdt, 4, upper); + writeUint32(tfdt, 8, lower); + } + } + }); + }); + }); + } + + // TODO: Check if the last moof+mdat pair is part of the valid range + function segmentValidRange(data) { + var segmentedRange = { + valid: null, + remainder: null + }; + var moofs = findBox(data, ['moof']); + if (moofs.length < 2) { + segmentedRange.remainder = data; + return segmentedRange; + } + var last = moofs[moofs.length - 1]; + // Offset by 8 bytes; findBox offsets the start by as much + segmentedRange.valid = sliceUint8(data, 0, last.byteOffset - 8); + segmentedRange.remainder = sliceUint8(data, last.byteOffset - 8); + return segmentedRange; + } + function appendUint8Array(data1, data2) { + var temp = new Uint8Array(data1.length + data2.length); + temp.set(data1); + temp.set(data2, data1.length); + return temp; + } + function parseSamples(timeOffset, track) { + var seiSamples = []; + var videoData = track.samples; + var timescale = track.timescale; + var trackId = track.id; + var isHEVCFlavor = false; + var moofs = findBox(videoData, ['moof']); + moofs.map(function (moof) { + var moofOffset = moof.byteOffset - 8; + var trafs = findBox(moof, ['traf']); + trafs.map(function (traf) { + // get the base media decode time from the tfdt + var baseTime = findBox(traf, ['tfdt']).map(function (tfdt) { + var version = tfdt[0]; + var result = readUint32(tfdt, 4); + if (version === 1) { + result *= Math.pow(2, 32); + result += readUint32(tfdt, 8); + } + return result / timescale; + })[0]; + if (baseTime !== undefined) { + timeOffset = baseTime; + } + return findBox(traf, ['tfhd']).map(function (tfhd) { + var id = readUint32(tfhd, 4); + var tfhdFlags = readUint32(tfhd, 0) & 0xffffff; + var baseDataOffsetPresent = (tfhdFlags & 0x000001) !== 0; + var sampleDescriptionIndexPresent = (tfhdFlags & 0x000002) !== 0; + var defaultSampleDurationPresent = (tfhdFlags & 0x000008) !== 0; + var defaultSampleDuration = 0; + var defaultSampleSizePresent = (tfhdFlags & 0x000010) !== 0; + var defaultSampleSize = 0; + var defaultSampleFlagsPresent = (tfhdFlags & 0x000020) !== 0; + var tfhdOffset = 8; + if (id === trackId) { + if (baseDataOffsetPresent) { + tfhdOffset += 8; + } + if (sampleDescriptionIndexPresent) { + tfhdOffset += 4; + } + if (defaultSampleDurationPresent) { + defaultSampleDuration = readUint32(tfhd, tfhdOffset); + tfhdOffset += 4; + } + if (defaultSampleSizePresent) { + defaultSampleSize = readUint32(tfhd, tfhdOffset); + tfhdOffset += 4; + } + if (defaultSampleFlagsPresent) { + tfhdOffset += 4; + } + if (track.type === 'video') { + isHEVCFlavor = isHEVC(track.codec); + } + findBox(traf, ['trun']).map(function (trun) { + var version = trun[0]; + var flags = readUint32(trun, 0) & 0xffffff; + var dataOffsetPresent = (flags & 0x000001) !== 0; + var dataOffset = 0; + var firstSampleFlagsPresent = (flags & 0x000004) !== 0; + var sampleDurationPresent = (flags & 0x000100) !== 0; + var sampleDuration = 0; + var sampleSizePresent = (flags & 0x000200) !== 0; + var sampleSize = 0; + var sampleFlagsPresent = (flags & 0x000400) !== 0; + var sampleCompositionOffsetsPresent = (flags & 0x000800) !== 0; + var compositionOffset = 0; + var sampleCount = readUint32(trun, 4); + var trunOffset = 8; // past version, flags, and sample count + + if (dataOffsetPresent) { + dataOffset = readUint32(trun, trunOffset); + trunOffset += 4; + } + if (firstSampleFlagsPresent) { + trunOffset += 4; + } + var sampleOffset = dataOffset + moofOffset; + for (var ix = 0; ix < sampleCount; ix++) { + if (sampleDurationPresent) { + sampleDuration = readUint32(trun, trunOffset); + trunOffset += 4; + } else { + sampleDuration = defaultSampleDuration; + } + if (sampleSizePresent) { + sampleSize = readUint32(trun, trunOffset); + trunOffset += 4; + } else { + sampleSize = defaultSampleSize; + } + if (sampleFlagsPresent) { + trunOffset += 4; + } + if (sampleCompositionOffsetsPresent) { + if (version === 0) { + compositionOffset = readUint32(trun, trunOffset); + } else { + compositionOffset = readSint32(trun, trunOffset); + } + trunOffset += 4; + } + if (track.type === ElementaryStreamTypes.VIDEO) { + var naluTotalSize = 0; + while (naluTotalSize < sampleSize) { + var naluSize = readUint32(videoData, sampleOffset); + sampleOffset += 4; + if (isSEIMessage(isHEVCFlavor, videoData[sampleOffset])) { + var data = videoData.subarray(sampleOffset, sampleOffset + naluSize); + parseSEIMessageFromNALu(data, isHEVCFlavor ? 2 : 1, timeOffset + compositionOffset / timescale, seiSamples); + } + sampleOffset += naluSize; + naluTotalSize += naluSize + 4; + } + } + timeOffset += sampleDuration / timescale; + } + }); + } + }); + }); + }); + return seiSamples; + } + function isHEVC(codec) { + if (!codec) { + return false; + } + var delimit = codec.indexOf('.'); + var baseCodec = delimit < 0 ? codec : codec.substring(0, delimit); + return baseCodec === 'hvc1' || baseCodec === 'hev1' || + // Dolby Vision + baseCodec === 'dvh1' || baseCodec === 'dvhe'; + } + function isSEIMessage(isHEVCFlavor, naluHeader) { + if (isHEVCFlavor) { + var naluType = naluHeader >> 1 & 0x3f; + return naluType === 39 || naluType === 40; + } else { + var _naluType = naluHeader & 0x1f; + return _naluType === 6; + } + } + function parseSEIMessageFromNALu(unescapedData, headerSize, pts, samples) { + var data = discardEPB(unescapedData); + var seiPtr = 0; + // skip nal header + seiPtr += headerSize; + var payloadType = 0; + var payloadSize = 0; + var b = 0; + while (seiPtr < data.length) { + payloadType = 0; + do { + if (seiPtr >= data.length) { + break; + } + b = data[seiPtr++]; + payloadType += b; + } while (b === 0xff); + + // Parse payload size. + payloadSize = 0; + do { + if (seiPtr >= data.length) { + break; + } + b = data[seiPtr++]; + payloadSize += b; + } while (b === 0xff); + var leftOver = data.length - seiPtr; + // Create a variable to process the payload + var payPtr = seiPtr; + + // Increment the seiPtr to the end of the payload + if (payloadSize < leftOver) { + seiPtr += payloadSize; + } else if (payloadSize > leftOver) { + // Some type of corruption has happened? + logger.error("Malformed SEI payload. " + payloadSize + " is too small, only " + leftOver + " bytes left to parse."); + // We might be able to parse some data, but let's be safe and ignore it. + break; + } + if (payloadType === 4) { + var countryCode = data[payPtr++]; + if (countryCode === 181) { + var providerCode = readUint16(data, payPtr); + payPtr += 2; + if (providerCode === 49) { + var userStructure = readUint32(data, payPtr); + payPtr += 4; + if (userStructure === 0x47413934) { + var userDataType = data[payPtr++]; + + // Raw CEA-608 bytes wrapped in CEA-708 packet + if (userDataType === 3) { + var firstByte = data[payPtr++]; + var totalCCs = 0x1f & firstByte; + var enabled = 0x40 & firstByte; + var totalBytes = enabled ? 2 + totalCCs * 3 : 0; + var byteArray = new Uint8Array(totalBytes); + if (enabled) { + byteArray[0] = firstByte; + for (var i = 1; i < totalBytes; i++) { + byteArray[i] = data[payPtr++]; + } + } + samples.push({ + type: userDataType, + payloadType: payloadType, + pts: pts, + bytes: byteArray + }); + } + } + } + } + } else if (payloadType === 5) { + if (payloadSize > 16) { + var uuidStrArray = []; + for (var _i3 = 0; _i3 < 16; _i3++) { + var _b = data[payPtr++].toString(16); + uuidStrArray.push(_b.length == 1 ? '0' + _b : _b); + if (_i3 === 3 || _i3 === 5 || _i3 === 7 || _i3 === 9) { + uuidStrArray.push('-'); + } + } + var length = payloadSize - 16; + var userDataBytes = new Uint8Array(length); + for (var _i4 = 0; _i4 < length; _i4++) { + userDataBytes[_i4] = data[payPtr++]; + } + samples.push({ + payloadType: payloadType, + pts: pts, + uuid: uuidStrArray.join(''), + userData: utf8ArrayToStr(userDataBytes), + userDataBytes: userDataBytes + }); + } + } + } + } + + /** + * remove Emulation Prevention bytes from a RBSP + */ + function discardEPB(data) { + var length = data.byteLength; + var EPBPositions = []; + var i = 1; + + // Find all `Emulation Prevention Bytes` + while (i < length - 2) { + if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) { + EPBPositions.push(i + 2); + i += 2; + } else { + i++; + } + } + + // If no Emulation Prevention Bytes were found just return the original + // array + if (EPBPositions.length === 0) { + return data; + } + + // Create a new array to hold the NAL unit data + var newLength = length - EPBPositions.length; + var newData = new Uint8Array(newLength); + var sourceIndex = 0; + for (i = 0; i < newLength; sourceIndex++, i++) { + if (sourceIndex === EPBPositions[0]) { + // Skip this byte + sourceIndex++; + // Remove this position index + EPBPositions.shift(); + } + newData[i] = data[sourceIndex]; + } + return newData; + } + function parseEmsg(data) { + var version = data[0]; + var schemeIdUri = ''; + var value = ''; + var timeScale = 0; + var presentationTimeDelta = 0; + var presentationTime = 0; + var eventDuration = 0; + var id = 0; + var offset = 0; + if (version === 0) { + while (bin2str(data.subarray(offset, offset + 1)) !== '\0') { + schemeIdUri += bin2str(data.subarray(offset, offset + 1)); + offset += 1; + } + schemeIdUri += bin2str(data.subarray(offset, offset + 1)); + offset += 1; + while (bin2str(data.subarray(offset, offset + 1)) !== '\0') { + value += bin2str(data.subarray(offset, offset + 1)); + offset += 1; + } + value += bin2str(data.subarray(offset, offset + 1)); + offset += 1; + timeScale = readUint32(data, 12); + presentationTimeDelta = readUint32(data, 16); + eventDuration = readUint32(data, 20); + id = readUint32(data, 24); + offset = 28; + } else if (version === 1) { + offset += 4; + timeScale = readUint32(data, offset); + offset += 4; + var leftPresentationTime = readUint32(data, offset); + offset += 4; + var rightPresentationTime = readUint32(data, offset); + offset += 4; + presentationTime = Math.pow(2, 32) * leftPresentationTime + rightPresentationTime; + if (!isSafeInteger(presentationTime)) { + presentationTime = Number.MAX_SAFE_INTEGER; + logger.warn('Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box'); + } + eventDuration = readUint32(data, offset); + offset += 4; + id = readUint32(data, offset); + offset += 4; + while (bin2str(data.subarray(offset, offset + 1)) !== '\0') { + schemeIdUri += bin2str(data.subarray(offset, offset + 1)); + offset += 1; + } + schemeIdUri += bin2str(data.subarray(offset, offset + 1)); + offset += 1; + while (bin2str(data.subarray(offset, offset + 1)) !== '\0') { + value += bin2str(data.subarray(offset, offset + 1)); + offset += 1; + } + value += bin2str(data.subarray(offset, offset + 1)); + offset += 1; + } + var payload = data.subarray(offset, data.byteLength); + return { + schemeIdUri: schemeIdUri, + value: value, + timeScale: timeScale, + presentationTime: presentationTime, + presentationTimeDelta: presentationTimeDelta, + eventDuration: eventDuration, + id: id, + payload: payload + }; + } + function mp4Box(type) { + for (var _len = arguments.length, payload = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + payload[_key - 1] = arguments[_key]; + } + var len = payload.length; + var size = 8; + var i = len; + while (i--) { + size += payload[i].byteLength; + } + var result = new Uint8Array(size); + result[0] = size >> 24 & 0xff; + result[1] = size >> 16 & 0xff; + result[2] = size >> 8 & 0xff; + result[3] = size & 0xff; + result.set(type, 4); + for (i = 0, size = 8; i < len; i++) { + result.set(payload[i], size); + size += payload[i].byteLength; + } + return result; + } + function mp4pssh(systemId, keyids, data) { + if (systemId.byteLength !== 16) { + throw new RangeError('Invalid system id'); + } + var version; + var kids; + { + version = 0; + kids = new Uint8Array(); + } + var kidCount; + if (version > 0) { + kidCount = new Uint8Array(4); + if (keyids.length > 0) { + new DataView(kidCount.buffer).setUint32(0, keyids.length, false); + } + } else { + kidCount = new Uint8Array(); + } + var dataSize = new Uint8Array(4); + if (data && data.byteLength > 0) { + new DataView(dataSize.buffer).setUint32(0, data.byteLength, false); + } + return mp4Box([112, 115, 115, 104], new Uint8Array([version, 0x00, 0x00, 0x00 // Flags + ]), systemId, + // 16 bytes + kidCount, kids, dataSize, data || new Uint8Array()); + } + function parseMultiPssh(initData) { + var results = []; + if (initData instanceof ArrayBuffer) { + var length = initData.byteLength; + var offset = 0; + while (offset + 32 < length) { + var view = new DataView(initData, offset); + var pssh = parsePssh(view); + results.push(pssh); + offset += pssh.size; + } + } + return results; + } + function parsePssh(view) { + var size = view.getUint32(0); + var offset = view.byteOffset; + var length = view.byteLength; + if (length < size) { + return { + offset: offset, + size: length + }; + } + var type = view.getUint32(4); + if (type !== 0x70737368) { + return { + offset: offset, + size: size + }; + } + var version = view.getUint32(8) >>> 24; + if (version !== 0 && version !== 1) { + return { + offset: offset, + size: size + }; + } + var buffer = view.buffer; + var systemId = Hex.hexDump(new Uint8Array(buffer, offset + 12, 16)); + var dataSizeOrKidCount = view.getUint32(28); + var kids = null; + var data = null; + if (version === 0) { + if (size - 32 < dataSizeOrKidCount || dataSizeOrKidCount < 22) { + return { + offset: offset, + size: size + }; + } + data = new Uint8Array(buffer, offset + 32, dataSizeOrKidCount); + } else if (version === 1) { + if (!dataSizeOrKidCount || length < offset + 32 + dataSizeOrKidCount * 16 + 16) { + return { + offset: offset, + size: size + }; + } + kids = []; + for (var i = 0; i < dataSizeOrKidCount; i++) { + kids.push(new Uint8Array(buffer, offset + 32 + i * 16, 16)); + } + } + return { + version: version, + systemId: systemId, + kids: kids, + data: data, + offset: offset, + size: size + }; + } + + var keyUriToKeyIdMap = {}; + var LevelKey = /*#__PURE__*/function () { + function LevelKey(method, uri, format, formatversions, iv) { + if (formatversions === void 0) { + formatversions = [1]; + } + if (iv === void 0) { + iv = null; + } + this.uri = void 0; + this.method = void 0; + this.keyFormat = void 0; + this.keyFormatVersions = void 0; + this.encrypted = void 0; + this.isCommonEncryption = void 0; + this.iv = null; + this.key = null; + this.keyId = null; + this.pssh = null; + this.method = method; + this.uri = uri; + this.keyFormat = format; + this.keyFormatVersions = formatversions; + this.iv = iv; + this.encrypted = method ? method !== 'NONE' : false; + this.isCommonEncryption = this.encrypted && !isFullSegmentEncryption(method); + } + LevelKey.clearKeyUriToKeyIdMap = function clearKeyUriToKeyIdMap() { + keyUriToKeyIdMap = {}; + }; + var _proto = LevelKey.prototype; + _proto.isSupported = function isSupported() { + // If it's Segment encryption or No encryption, just select that key system + if (this.method) { + if (isFullSegmentEncryption(this.method) || this.method === 'NONE') { + return true; + } + if (this.keyFormat === 'identity') { + // Maintain support for clear SAMPLE-AES with MPEG-3 TS + return this.method === 'SAMPLE-AES'; + } else { + switch (this.keyFormat) { + case KeySystemFormats.FAIRPLAY: + case KeySystemFormats.WIDEVINE: + case KeySystemFormats.PLAYREADY: + case KeySystemFormats.CLEARKEY: + return ['ISO-23001-7', 'SAMPLE-AES', 'SAMPLE-AES-CENC', 'SAMPLE-AES-CTR'].indexOf(this.method) !== -1; + } + } + } + return false; + }; + _proto.getDecryptData = function getDecryptData(sn) { + if (!this.encrypted || !this.uri) { + return null; + } + if (isFullSegmentEncryption(this.method) && this.uri && !this.iv) { + if (typeof sn !== 'number') { + // We are fetching decryption data for a initialization segment + // If the segment was encrypted with AES-128/256 + // It must have an IV defined. We cannot substitute the Segment Number in. + logger.warn("missing IV for initialization segment with method=\"" + this.method + "\" - compliance issue"); + + // Explicitly set sn to resulting value from implicit conversions 'initSegment' values for IV generation. + sn = 0; + } + var iv = createInitializationVector(sn); + var decryptdata = new LevelKey(this.method, this.uri, 'identity', this.keyFormatVersions, iv); + return decryptdata; + } + + // Initialize keyId if possible + var keyBytes = convertDataUriToArrayBytes(this.uri); + if (keyBytes) { + switch (this.keyFormat) { + case KeySystemFormats.WIDEVINE: + // Setting `pssh` on this LevelKey/DecryptData allows HLS.js to generate a session using + // the playlist-key before the "encrypted" event. (Comment out to only use "encrypted" path.) + this.pssh = keyBytes; + // In case of widevine keyID is embedded in PSSH box. Read Key ID. + if (keyBytes.length >= 22) { + this.keyId = keyBytes.subarray(keyBytes.length - 22, keyBytes.length - 6); + } + break; + case KeySystemFormats.PLAYREADY: + { + var PlayReadyKeySystemUUID = new Uint8Array([0x9a, 0x04, 0xf0, 0x79, 0x98, 0x40, 0x42, 0x86, 0xab, 0x92, 0xe6, 0x5b, 0xe0, 0x88, 0x5f, 0x95]); + + // Setting `pssh` on this LevelKey/DecryptData allows HLS.js to generate a session using + // the playlist-key before the "encrypted" event. (Comment out to only use "encrypted" path.) + this.pssh = mp4pssh(PlayReadyKeySystemUUID, null, keyBytes); + this.keyId = parsePlayReadyWRM(keyBytes); + break; + } + default: + { + var keydata = keyBytes.subarray(0, 16); + if (keydata.length !== 16) { + var padded = new Uint8Array(16); + padded.set(keydata, 16 - keydata.length); + keydata = padded; + } + this.keyId = keydata; + break; + } + } + } + + // Default behavior: assign a new keyId for each uri + if (!this.keyId || this.keyId.byteLength !== 16) { + var keyId = keyUriToKeyIdMap[this.uri]; + if (!keyId) { + var val = Object.keys(keyUriToKeyIdMap).length % Number.MAX_SAFE_INTEGER; + keyId = new Uint8Array(16); + var dv = new DataView(keyId.buffer, 12, 4); // Just set the last 4 bytes + dv.setUint32(0, val); + keyUriToKeyIdMap[this.uri] = keyId; + } + this.keyId = keyId; + } + return this; + }; + return LevelKey; + }(); + function createInitializationVector(segmentNumber) { + var uint8View = new Uint8Array(16); + for (var i = 12; i < 16; i++) { + uint8View[i] = segmentNumber >> 8 * (15 - i) & 0xff; + } + return uint8View; + } + + /** + * MediaSource helper + */ + + function getMediaSource(preferManagedMediaSource) { + if (preferManagedMediaSource === void 0) { + preferManagedMediaSource = true; + } + if (typeof self === 'undefined') return undefined; + var mms = (preferManagedMediaSource || !self.MediaSource) && self.ManagedMediaSource; + return mms || self.MediaSource || self.WebKitMediaSource; + } + function isManagedMediaSource(source) { + return typeof self !== 'undefined' && source === self.ManagedMediaSource; + } + + // from http://mp4ra.org/codecs.html + // values indicate codec selection preference (lower is higher priority) + var sampleEntryCodesISO = { + audio: { + a3ds: 1, + 'ac-3': 0.95, + 'ac-4': 1, + alac: 0.9, + alaw: 1, + dra1: 1, + 'dts+': 1, + 'dts-': 1, + dtsc: 1, + dtse: 1, + dtsh: 1, + 'ec-3': 0.9, + enca: 1, + fLaC: 0.9, + // MP4-RA listed codec entry for FLAC + flac: 0.9, + // legacy browser codec name for FLAC + FLAC: 0.9, + // some manifests may list "FLAC" with Apple's tools + g719: 1, + g726: 1, + m4ae: 1, + mha1: 1, + mha2: 1, + mhm1: 1, + mhm2: 1, + mlpa: 1, + mp4a: 1, + 'raw ': 1, + Opus: 1, + opus: 1, + // browsers expect this to be lowercase despite MP4RA says 'Opus' + samr: 1, + sawb: 1, + sawp: 1, + sevc: 1, + sqcp: 1, + ssmv: 1, + twos: 1, + ulaw: 1 + }, + video: { + avc1: 1, + avc2: 1, + avc3: 1, + avc4: 1, + avcp: 1, + av01: 0.8, + drac: 1, + dva1: 1, + dvav: 1, + dvh1: 0.7, + dvhe: 0.7, + encv: 1, + hev1: 0.75, + hvc1: 0.75, + mjp2: 1, + mp4v: 1, + mvc1: 1, + mvc2: 1, + mvc3: 1, + mvc4: 1, + resv: 1, + rv60: 1, + s263: 1, + svc1: 1, + svc2: 1, + 'vc-1': 1, + vp08: 1, + vp09: 0.9 + }, + text: { + stpp: 1, + wvtt: 1 + } + }; + function isCodecType(codec, type) { + var typeCodes = sampleEntryCodesISO[type]; + return !!typeCodes && !!typeCodes[codec.slice(0, 4)]; + } + function areCodecsMediaSourceSupported(codecs, type, preferManagedMediaSource) { + if (preferManagedMediaSource === void 0) { + preferManagedMediaSource = true; + } + return !codecs.split(',').some(function (codec) { + return !isCodecMediaSourceSupported(codec, type, preferManagedMediaSource); + }); + } + function isCodecMediaSourceSupported(codec, type, preferManagedMediaSource) { + var _MediaSource$isTypeSu; + if (preferManagedMediaSource === void 0) { + preferManagedMediaSource = true; + } + var MediaSource = getMediaSource(preferManagedMediaSource); + return (_MediaSource$isTypeSu = MediaSource == null ? void 0 : MediaSource.isTypeSupported(mimeTypeForCodec(codec, type))) != null ? _MediaSource$isTypeSu : false; + } + function mimeTypeForCodec(codec, type) { + return type + "/mp4;codecs=\"" + codec + "\""; + } + function videoCodecPreferenceValue(videoCodec) { + if (videoCodec) { + var fourCC = videoCodec.substring(0, 4); + return sampleEntryCodesISO.video[fourCC]; + } + return 2; + } + function codecsSetSelectionPreferenceValue(codecSet) { + return codecSet.split(',').reduce(function (num, fourCC) { + var preferenceValue = sampleEntryCodesISO.video[fourCC]; + if (preferenceValue) { + return (preferenceValue * 2 + num) / (num ? 3 : 2); + } + return (sampleEntryCodesISO.audio[fourCC] + num) / (num ? 2 : 1); + }, 0); + } + var CODEC_COMPATIBLE_NAMES = {}; + function getCodecCompatibleNameLower(lowerCaseCodec, preferManagedMediaSource) { + if (preferManagedMediaSource === void 0) { + preferManagedMediaSource = true; + } + if (CODEC_COMPATIBLE_NAMES[lowerCaseCodec]) { + return CODEC_COMPATIBLE_NAMES[lowerCaseCodec]; + } + var codecsToCheck = { + // Idealy fLaC and Opus would be first (spec-compliant) but + // some browsers will report that fLaC is supported then fail. + // see: https://bugs.chromium.org/p/chromium/issues/detail?id=1422728 + flac: ['flac', 'fLaC', 'FLAC'], + opus: ['opus', 'Opus'], + // Replace audio codec info if browser does not support mp4a.40.34, + // and demuxer can fallback to 'audio/mpeg' or 'audio/mp4;codecs="mp3"' + 'mp4a.40.34': ['mp3'] + }[lowerCaseCodec]; + for (var i = 0; i < codecsToCheck.length; i++) { + var _getMediaSource; + if (isCodecMediaSourceSupported(codecsToCheck[i], 'audio', preferManagedMediaSource)) { + CODEC_COMPATIBLE_NAMES[lowerCaseCodec] = codecsToCheck[i]; + return codecsToCheck[i]; + } else if (codecsToCheck[i] === 'mp3' && (_getMediaSource = getMediaSource(preferManagedMediaSource)) != null && _getMediaSource.isTypeSupported('audio/mpeg')) { + return ''; + } + } + return lowerCaseCodec; + } + var AUDIO_CODEC_REGEXP = /flac|opus|mp4a\.40\.34/i; + function getCodecCompatibleName(codec, preferManagedMediaSource) { + if (preferManagedMediaSource === void 0) { + preferManagedMediaSource = true; + } + return codec.replace(AUDIO_CODEC_REGEXP, function (m) { + return getCodecCompatibleNameLower(m.toLowerCase(), preferManagedMediaSource); + }); + } + function pickMostCompleteCodecName(parsedCodec, levelCodec) { + // Parsing of mp4a codecs strings in mp4-tools from media is incomplete as of d8c6c7a + // so use level codec is parsed codec is unavailable or incomplete + if (parsedCodec && parsedCodec !== 'mp4a') { + return parsedCodec; + } + return levelCodec ? levelCodec.split(',')[0] : levelCodec; + } + function convertAVC1ToAVCOTI(codec) { + // Convert avc1 codec string from RFC-4281 to RFC-6381 for MediaSource.isTypeSupported + // Examples: avc1.66.30 to avc1.42001e and avc1.77.30,avc1.66.30 to avc1.4d001e,avc1.42001e. + var codecs = codec.split(','); + for (var i = 0; i < codecs.length; i++) { + var avcdata = codecs[i].split('.'); + if (avcdata.length > 2) { + var result = avcdata.shift() + '.'; + result += parseInt(avcdata.shift()).toString(16); + result += ('000' + parseInt(avcdata.shift()).toString(16)).slice(-4); + codecs[i] = result; + } + } + return codecs.join(','); + } + function getM2TSSupportedAudioTypes(preferManagedMediaSource) { + var MediaSource = getMediaSource(preferManagedMediaSource) || { + isTypeSupported: function isTypeSupported() { + return false; + } + }; + return { + mpeg: MediaSource.isTypeSupported('audio/mpeg'), + mp3: MediaSource.isTypeSupported('audio/mp4; codecs="mp3"'), + ac3: MediaSource.isTypeSupported('audio/mp4; codecs="ac-3"') + }; + } + + var MASTER_PLAYLIST_REGEX = /#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\r\n]*)[\r\n]+/g; + var MASTER_PLAYLIST_MEDIA_REGEX = /#EXT-X-MEDIA:(.*)/g; + var IS_MEDIA_PLAYLIST = /^#EXT(?:INF|-X-TARGETDURATION):/m; // Handle empty Media Playlist (first EXTINF not signaled, but TARGETDURATION present) + + var LEVEL_PLAYLIST_REGEX_FAST = new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source, + // duration (#EXTINF:,), group 1 => duration, group 2 => title + /(?!#) *(\S[^\r\n]*)/.source, + // segment URI, group 3 => the URI (note newline is not eaten) + /#EXT-X-BYTERANGE:*(.+)/.source, + // next segment's byterange, group 4 => range spec (x@y) + /#EXT-X-PROGRAM-DATE-TIME:(.+)/.source, + // next segment's program date/time group 5 => the datetime spec + /#.*/.source // All other non-segment oriented tags will match with all groups empty + ].join('|'), 'g'); + var LEVEL_PLAYLIST_REGEX_SLOW = new RegExp([/#(EXTM3U)/.source, /#EXT-X-(DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source, /#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/.source, /#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS)/.source, /(#)([^:]*):(.*)/.source, /(#)(.*)(?:.*)\r?\n?/.source].join('|')); + var M3U8Parser = /*#__PURE__*/function () { + function M3U8Parser() {} + M3U8Parser.findGroup = function findGroup(groups, mediaGroupId) { + for (var i = 0; i < groups.length; i++) { + var group = groups[i]; + if (group.id === mediaGroupId) { + return group; + } + } + }; + M3U8Parser.resolve = function resolve(url, baseUrl) { + return urlToolkitExports.buildAbsoluteURL(baseUrl, url, { + alwaysNormalize: true + }); + }; + M3U8Parser.isMediaPlaylist = function isMediaPlaylist(str) { + return IS_MEDIA_PLAYLIST.test(str); + }; + M3U8Parser.parseMasterPlaylist = function parseMasterPlaylist(string, baseurl) { + var hasVariableRefs = hasVariableReferences(string) ; + var parsed = { + contentSteering: null, + levels: [], + playlistParsingError: null, + sessionData: null, + sessionKeys: null, + startTimeOffset: null, + variableList: null, + hasVariableRefs: hasVariableRefs + }; + var levelsWithKnownCodecs = []; + MASTER_PLAYLIST_REGEX.lastIndex = 0; + var result; + while ((result = MASTER_PLAYLIST_REGEX.exec(string)) != null) { + if (result[1]) { + var _level$unknownCodecs; + // '#EXT-X-STREAM-INF' is found, parse level tag in group 1 + var attrs = new AttrList(result[1], parsed); + var uri = substituteVariables(parsed, result[2]) ; + var level = { + attrs: attrs, + bitrate: attrs.decimalInteger('BANDWIDTH') || attrs.decimalInteger('AVERAGE-BANDWIDTH'), + name: attrs.NAME, + url: M3U8Parser.resolve(uri, baseurl) + }; + var resolution = attrs.decimalResolution('RESOLUTION'); + if (resolution) { + level.width = resolution.width; + level.height = resolution.height; + } + setCodecs(attrs.CODECS, level); + if (!((_level$unknownCodecs = level.unknownCodecs) != null && _level$unknownCodecs.length)) { + levelsWithKnownCodecs.push(level); + } + parsed.levels.push(level); + } else if (result[3]) { + var tag = result[3]; + var attributes = result[4]; + switch (tag) { + case 'SESSION-DATA': + { + // #EXT-X-SESSION-DATA + var sessionAttrs = new AttrList(attributes, parsed); + var dataId = sessionAttrs['DATA-ID']; + if (dataId) { + if (parsed.sessionData === null) { + parsed.sessionData = {}; + } + parsed.sessionData[dataId] = sessionAttrs; + } + break; + } + case 'SESSION-KEY': + { + // #EXT-X-SESSION-KEY + var sessionKey = parseKey(attributes, baseurl, parsed); + if (sessionKey.encrypted && sessionKey.isSupported()) { + if (parsed.sessionKeys === null) { + parsed.sessionKeys = []; + } + parsed.sessionKeys.push(sessionKey); + } else { + logger.warn("[Keys] Ignoring invalid EXT-X-SESSION-KEY tag: \"" + attributes + "\""); + } + break; + } + case 'DEFINE': + { + // #EXT-X-DEFINE + { + var variableAttributes = new AttrList(attributes, parsed); + addVariableDefinition(parsed, variableAttributes, baseurl); + } + break; + } + case 'CONTENT-STEERING': + { + // #EXT-X-CONTENT-STEERING + var contentSteeringAttributes = new AttrList(attributes, parsed); + parsed.contentSteering = { + uri: M3U8Parser.resolve(contentSteeringAttributes['SERVER-URI'], baseurl), + pathwayId: contentSteeringAttributes['PATHWAY-ID'] || '.' + }; + break; + } + case 'START': + { + // #EXT-X-START + parsed.startTimeOffset = parseStartTimeOffset(attributes); + break; + } + } + } + } + // Filter out levels with unknown codecs if it does not remove all levels + var stripUnknownCodecLevels = levelsWithKnownCodecs.length > 0 && levelsWithKnownCodecs.length < parsed.levels.length; + parsed.levels = stripUnknownCodecLevels ? levelsWithKnownCodecs : parsed.levels; + if (parsed.levels.length === 0) { + parsed.playlistParsingError = new Error('no levels found in manifest'); + } + return parsed; + }; + M3U8Parser.parseMasterPlaylistMedia = function parseMasterPlaylistMedia(string, baseurl, parsed) { + var result; + var results = {}; + var levels = parsed.levels; + var groupsByType = { + AUDIO: levels.map(function (level) { + return { + id: level.attrs.AUDIO, + audioCodec: level.audioCodec + }; + }), + SUBTITLES: levels.map(function (level) { + return { + id: level.attrs.SUBTITLES, + textCodec: level.textCodec + }; + }), + 'CLOSED-CAPTIONS': [] + }; + var id = 0; + MASTER_PLAYLIST_MEDIA_REGEX.lastIndex = 0; + while ((result = MASTER_PLAYLIST_MEDIA_REGEX.exec(string)) !== null) { + var attrs = new AttrList(result[1], parsed); + var type = attrs.TYPE; + if (type) { + var groups = groupsByType[type]; + var medias = results[type] || []; + results[type] = medias; + var lang = attrs.LANGUAGE; + var assocLang = attrs['ASSOC-LANGUAGE']; + var channels = attrs.CHANNELS; + var characteristics = attrs.CHARACTERISTICS; + var instreamId = attrs['INSTREAM-ID']; + var media = { + attrs: attrs, + bitrate: 0, + id: id++, + groupId: attrs['GROUP-ID'] || '', + name: attrs.NAME || lang || '', + type: type, + default: attrs.bool('DEFAULT'), + autoselect: attrs.bool('AUTOSELECT'), + forced: attrs.bool('FORCED'), + lang: lang, + url: attrs.URI ? M3U8Parser.resolve(attrs.URI, baseurl) : '' + }; + if (assocLang) { + media.assocLang = assocLang; + } + if (channels) { + media.channels = channels; + } + if (characteristics) { + media.characteristics = characteristics; + } + if (instreamId) { + media.instreamId = instreamId; + } + if (groups != null && groups.length) { + // If there are audio or text groups signalled in the manifest, let's look for a matching codec string for this track + // If we don't find the track signalled, lets use the first audio groups codec we have + // Acting as a best guess + var groupCodec = M3U8Parser.findGroup(groups, media.groupId) || groups[0]; + assignCodec(media, groupCodec, 'audioCodec'); + assignCodec(media, groupCodec, 'textCodec'); + } + medias.push(media); + } + } + return results; + }; + M3U8Parser.parseLevelPlaylist = function parseLevelPlaylist(string, baseurl, id, type, levelUrlId, multivariantVariableList) { + var level = new LevelDetails(baseurl); + var fragments = level.fragments; + var programDateTimes = []; + // The most recent init segment seen (applies to all subsequent segments) + var currentInitSegment = null; + var currentSN = 0; + var currentPart = 0; + var totalduration = 0; + var discontinuityCounter = 0; + var prevFrag = null; + var frag = new Fragment(type, baseurl); + var result; + var i; + var levelkeys; + var firstPdtIndex = -1; + var createNextFrag = false; + var nextByteRange = null; + LEVEL_PLAYLIST_REGEX_FAST.lastIndex = 0; + level.m3u8 = string; + level.hasVariableRefs = hasVariableReferences(string) ; + while ((result = LEVEL_PLAYLIST_REGEX_FAST.exec(string)) !== null) { + if (createNextFrag) { + createNextFrag = false; + frag = new Fragment(type, baseurl); + // setup the next fragment for part loading + frag.start = totalduration; + frag.sn = currentSN; + frag.cc = discontinuityCounter; + frag.level = id; + if (currentInitSegment) { + frag.initSegment = currentInitSegment; + frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime; + currentInitSegment.rawProgramDateTime = null; + if (nextByteRange) { + frag.setByteRange(nextByteRange); + nextByteRange = null; + } + } + } + var duration = result[1]; + if (duration) { + // INF + frag.duration = parseFloat(duration); + // avoid sliced strings https://github.com/video-dev/hls.js/issues/939 + var title = (' ' + result[2]).slice(1); + frag.title = title || null; + frag.tagList.push(title ? ['INF', duration, title] : ['INF', duration]); + } else if (result[3]) { + // url + if (isFiniteNumber(frag.duration)) { + frag.start = totalduration; + if (levelkeys) { + setFragLevelKeys(frag, levelkeys, level); + } + frag.sn = currentSN; + frag.level = id; + frag.cc = discontinuityCounter; + fragments.push(frag); + // avoid sliced strings https://github.com/video-dev/hls.js/issues/939 + var uri = (' ' + result[3]).slice(1); + frag.relurl = substituteVariables(level, uri) ; + assignProgramDateTime(frag, prevFrag, programDateTimes); + prevFrag = frag; + totalduration += frag.duration; + currentSN++; + currentPart = 0; + createNextFrag = true; + } + } else if (result[4]) { + // X-BYTERANGE + var data = (' ' + result[4]).slice(1); + if (prevFrag) { + frag.setByteRange(data, prevFrag); + } else { + frag.setByteRange(data); + } + } else if (result[5]) { + // PROGRAM-DATE-TIME + // avoid sliced strings https://github.com/video-dev/hls.js/issues/939 + frag.rawProgramDateTime = (' ' + result[5]).slice(1); + frag.tagList.push(['PROGRAM-DATE-TIME', frag.rawProgramDateTime]); + if (firstPdtIndex === -1) { + firstPdtIndex = fragments.length; + } + } else { + result = result[0].match(LEVEL_PLAYLIST_REGEX_SLOW); + if (!result) { + logger.warn('No matches on slow regex match for level playlist!'); + continue; + } + for (i = 1; i < result.length; i++) { + if (typeof result[i] !== 'undefined') { + break; + } + } + + // avoid sliced strings https://github.com/video-dev/hls.js/issues/939 + var tag = (' ' + result[i]).slice(1); + var value1 = (' ' + result[i + 1]).slice(1); + var value2 = result[i + 2] ? (' ' + result[i + 2]).slice(1) : ''; + switch (tag) { + case 'PLAYLIST-TYPE': + level.type = value1.toUpperCase(); + break; + case 'MEDIA-SEQUENCE': + currentSN = level.startSN = parseInt(value1); + break; + case 'SKIP': + { + if (level.skippedSegments) { + level.playlistParsingError = new Error("#EXT-X-SKIP MUST NOT appear more than once in a Playlist"); + } + var skipAttrs = new AttrList(value1, level); + var skippedSegments = skipAttrs.decimalInteger('SKIPPED-SEGMENTS'); + if (isFiniteNumber(skippedSegments)) { + level.skippedSegments += skippedSegments; + // This will result in fragments[] containing undefined values, which we will fill in with `mergeDetails` + for (var _i = skippedSegments; _i--;) { + fragments.push(null); + } + currentSN += skippedSegments; + } + var recentlyRemovedDateranges = skipAttrs.enumeratedString('RECENTLY-REMOVED-DATERANGES'); + if (recentlyRemovedDateranges) { + level.recentlyRemovedDateranges = (level.recentlyRemovedDateranges || []).concat(recentlyRemovedDateranges.split('\t')); + } + break; + } + case 'TARGETDURATION': + level.targetduration = Math.max(parseInt(value1), 1); + break; + case 'VERSION': + level.version = parseInt(value1); + break; + case 'INDEPENDENT-SEGMENTS': + case 'EXTM3U': + break; + case 'ENDLIST': + level.live = false; + break; + case '#': + if (value1 || value2) { + frag.tagList.push(value2 ? [value1, value2] : [value1]); + } + break; + case 'DISCONTINUITY': + discontinuityCounter++; + frag.tagList.push(['DIS']); + break; + case 'GAP': + frag.gap = true; + frag.tagList.push([tag]); + break; + case 'BITRATE': + frag.tagList.push([tag, value1]); + break; + case 'DATERANGE': + { + var dateRangeAttr = new AttrList(value1, level); + var dateRange = new DateRange(dateRangeAttr, level.dateRanges[dateRangeAttr.ID], level.dateRangeTagCount); + level.dateRangeTagCount++; + if (dateRange.isValid || level.skippedSegments) { + level.dateRanges[dateRange.id] = dateRange; + } else { + logger.warn("Ignoring invalid DATERANGE tag: \"" + value1 + "\""); + } + // Add to fragment tag list for backwards compatibility (< v1.2.0) + frag.tagList.push(['EXT-X-DATERANGE', value1]); + break; + } + case 'DEFINE': + { + { + var variableAttributes = new AttrList(value1, level); + if ('IMPORT' in variableAttributes) { + importVariableDefinition(level, variableAttributes, multivariantVariableList); + } else { + addVariableDefinition(level, variableAttributes, baseurl); + } + } + break; + } + case 'DISCONTINUITY-SEQUENCE': + discontinuityCounter = parseInt(value1); + break; + case 'KEY': + { + var levelKey = parseKey(value1, baseurl, level); + if (levelKey.isSupported()) { + if (levelKey.method === 'NONE') { + levelkeys = undefined; + break; + } + if (!levelkeys) { + levelkeys = {}; + } + if (levelkeys[levelKey.keyFormat]) { + levelkeys = _extends({}, levelkeys); + } + levelkeys[levelKey.keyFormat] = levelKey; + } else { + logger.warn("[Keys] Ignoring invalid EXT-X-KEY tag: \"" + value1 + "\""); + } + break; + } + case 'START': + level.startTimeOffset = parseStartTimeOffset(value1); + break; + case 'MAP': + { + var mapAttrs = new AttrList(value1, level); + if (frag.duration) { + // Initial segment tag is after segment duration tag. + // #EXTINF: 6.0 + // #EXT-X-MAP:URI="init.mp4 + var init = new Fragment(type, baseurl); + setInitSegment(init, mapAttrs, id, levelkeys); + currentInitSegment = init; + frag.initSegment = currentInitSegment; + if (currentInitSegment.rawProgramDateTime && !frag.rawProgramDateTime) { + frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime; + } + } else { + // Initial segment tag is before segment duration tag + // Handle case where EXT-X-MAP is declared after EXT-X-BYTERANGE + var end = frag.byteRangeEndOffset; + if (end) { + var start = frag.byteRangeStartOffset; + nextByteRange = end - start + "@" + start; + } else { + nextByteRange = null; + } + setInitSegment(frag, mapAttrs, id, levelkeys); + currentInitSegment = frag; + createNextFrag = true; + } + currentInitSegment.cc = discontinuityCounter; + break; + } + case 'SERVER-CONTROL': + { + var serverControlAttrs = new AttrList(value1); + level.canBlockReload = serverControlAttrs.bool('CAN-BLOCK-RELOAD'); + level.canSkipUntil = serverControlAttrs.optionalFloat('CAN-SKIP-UNTIL', 0); + level.canSkipDateRanges = level.canSkipUntil > 0 && serverControlAttrs.bool('CAN-SKIP-DATERANGES'); + level.partHoldBack = serverControlAttrs.optionalFloat('PART-HOLD-BACK', 0); + level.holdBack = serverControlAttrs.optionalFloat('HOLD-BACK', 0); + break; + } + case 'PART-INF': + { + var partInfAttrs = new AttrList(value1); + level.partTarget = partInfAttrs.decimalFloatingPoint('PART-TARGET'); + break; + } + case 'PART': + { + var partList = level.partList; + if (!partList) { + partList = level.partList = []; + } + var previousFragmentPart = currentPart > 0 ? partList[partList.length - 1] : undefined; + var index = currentPart++; + var partAttrs = new AttrList(value1, level); + var part = new Part(partAttrs, frag, baseurl, index, previousFragmentPart); + partList.push(part); + frag.duration += part.duration; + break; + } + case 'PRELOAD-HINT': + { + var preloadHintAttrs = new AttrList(value1, level); + level.preloadHint = preloadHintAttrs; + break; + } + case 'RENDITION-REPORT': + { + var renditionReportAttrs = new AttrList(value1, level); + level.renditionReports = level.renditionReports || []; + level.renditionReports.push(renditionReportAttrs); + break; + } + default: + logger.warn("line parsed but not handled: " + result); + break; + } + } + } + if (prevFrag && !prevFrag.relurl) { + fragments.pop(); + totalduration -= prevFrag.duration; + if (level.partList) { + level.fragmentHint = prevFrag; + } + } else if (level.partList) { + assignProgramDateTime(frag, prevFrag, programDateTimes); + frag.cc = discontinuityCounter; + level.fragmentHint = frag; + if (levelkeys) { + setFragLevelKeys(frag, levelkeys, level); + } + } + var fragmentLength = fragments.length; + var firstFragment = fragments[0]; + var lastFragment = fragments[fragmentLength - 1]; + totalduration += level.skippedSegments * level.targetduration; + if (totalduration > 0 && fragmentLength && lastFragment) { + level.averagetargetduration = totalduration / fragmentLength; + var lastSn = lastFragment.sn; + level.endSN = lastSn !== 'initSegment' ? lastSn : 0; + if (!level.live) { + lastFragment.endList = true; + } + if (firstFragment) { + level.startCC = firstFragment.cc; + } + /** + * Backfill any missing PDT values + * "If the first EXT-X-PROGRAM-DATE-TIME tag in a Playlist appears after + * one or more Media Segment URIs, the client SHOULD extrapolate + * backward from that tag (using EXTINF durations and/or media + * timestamps) to associate dates with those segments." + * We have already extrapolated forward, but all fragments up to the first instance of PDT do not have their PDTs + * computed. + */ + if (firstPdtIndex > 0) { + backfillProgramDateTimes(fragments, firstPdtIndex); + if (firstFragment) { + programDateTimes.unshift(firstFragment); + } + } + } else { + level.endSN = 0; + level.startCC = 0; + } + if (level.fragmentHint) { + totalduration += level.fragmentHint.duration; + } + level.totalduration = totalduration; + if (programDateTimes.length && level.dateRangeTagCount && firstFragment) { + mapDateRanges(programDateTimes, level); + } + level.endCC = discontinuityCounter; + return level; + }; + return M3U8Parser; + }(); + function mapDateRanges(programDateTimes, details) { + // Make sure DateRanges are mapped to a ProgramDateTime tag that applies a date to a segment that overlaps with its start date + var programDateTimeCount = programDateTimes.length; + var lastProgramDateTime = programDateTimes[programDateTimeCount - 1]; + var playlistEnd = details.live ? Infinity : details.totalduration; + var dateRangeIds = Object.keys(details.dateRanges); + for (var i = dateRangeIds.length; i--;) { + var dateRange = details.dateRanges[dateRangeIds[i]]; + var startDateTime = dateRange.startDate.getTime(); + dateRange.tagAnchor = lastProgramDateTime; + for (var j = programDateTimeCount; j--;) { + var fragIndex = findFragmentWithStartDate(details, startDateTime, programDateTimes, j, playlistEnd); + if (fragIndex !== -1) { + dateRange.tagAnchor = details.fragments[fragIndex]; + break; + } + } + } + } + function findFragmentWithStartDate(details, startDateTime, programDateTimes, index, endTime) { + var pdtFragment = programDateTimes[index]; + if (pdtFragment) { + var _programDateTimes; + // find matching range between PDT tags + var durationBetweenPdt = (((_programDateTimes = programDateTimes[index + 1]) == null ? void 0 : _programDateTimes.start) || endTime) - pdtFragment.start; + var pdtStart = pdtFragment.programDateTime; + if ((startDateTime >= pdtStart || index === 0) && startDateTime <= pdtStart + durationBetweenPdt * 1000) { + // map to fragment with date-time range + var startIndex = programDateTimes[index].sn - details.startSN; + var fragments = details.fragments; + if (fragments.length > programDateTimes.length) { + var endSegment = programDateTimes[index + 1] || fragments[fragments.length - 1]; + var endIndex = endSegment.sn - details.startSN; + for (var i = endIndex; i > startIndex; i--) { + var fragStartDateTime = fragments[i].programDateTime; + if (startDateTime >= fragStartDateTime && startDateTime < fragStartDateTime + fragments[i].duration * 1000) { + return i; + } + } + } + return startIndex; + } + } + return -1; + } + function parseKey(keyTagAttributes, baseurl, parsed) { + var _keyAttrs$METHOD, _keyAttrs$KEYFORMAT; + // https://tools.ietf.org/html/rfc8216#section-4.3.2.4 + var keyAttrs = new AttrList(keyTagAttributes, parsed); + var decryptmethod = (_keyAttrs$METHOD = keyAttrs.METHOD) != null ? _keyAttrs$METHOD : ''; + var decrypturi = keyAttrs.URI; + var decryptiv = keyAttrs.hexadecimalInteger('IV'); + var decryptkeyformatversions = keyAttrs.KEYFORMATVERSIONS; + // From RFC: This attribute is OPTIONAL; its absence indicates an implicit value of "identity". + var decryptkeyformat = (_keyAttrs$KEYFORMAT = keyAttrs.KEYFORMAT) != null ? _keyAttrs$KEYFORMAT : 'identity'; + if (decrypturi && keyAttrs.IV && !decryptiv) { + logger.error("Invalid IV: " + keyAttrs.IV); + } + // If decrypturi is a URI with a scheme, then baseurl will be ignored + // No uri is allowed when METHOD is NONE + var resolvedUri = decrypturi ? M3U8Parser.resolve(decrypturi, baseurl) : ''; + var keyFormatVersions = (decryptkeyformatversions ? decryptkeyformatversions : '1').split('/').map(Number).filter(Number.isFinite); + return new LevelKey(decryptmethod, resolvedUri, decryptkeyformat, keyFormatVersions, decryptiv); + } + function parseStartTimeOffset(startAttributes) { + var startAttrs = new AttrList(startAttributes); + var startTimeOffset = startAttrs.decimalFloatingPoint('TIME-OFFSET'); + if (isFiniteNumber(startTimeOffset)) { + return startTimeOffset; + } + return null; + } + function setCodecs(codecsAttributeValue, level) { + var codecs = (codecsAttributeValue || '').split(/[ ,]+/).filter(function (c) { + return c; + }); + ['video', 'audio', 'text'].forEach(function (type) { + var filtered = codecs.filter(function (codec) { + return isCodecType(codec, type); + }); + if (filtered.length) { + // Comma separated list of all codecs for type + level[type + "Codec"] = filtered.join(','); + // Remove known codecs so that only unknownCodecs are left after iterating through each type + codecs = codecs.filter(function (codec) { + return filtered.indexOf(codec) === -1; + }); + } + }); + level.unknownCodecs = codecs; + } + function assignCodec(media, groupItem, codecProperty) { + var codecValue = groupItem[codecProperty]; + if (codecValue) { + media[codecProperty] = codecValue; + } + } + function backfillProgramDateTimes(fragments, firstPdtIndex) { + var fragPrev = fragments[firstPdtIndex]; + for (var i = firstPdtIndex; i--;) { + var frag = fragments[i]; + // Exit on delta-playlist skipped segments + if (!frag) { + return; + } + frag.programDateTime = fragPrev.programDateTime - frag.duration * 1000; + fragPrev = frag; + } + } + function assignProgramDateTime(frag, prevFrag, programDateTimes) { + if (frag.rawProgramDateTime) { + frag.programDateTime = Date.parse(frag.rawProgramDateTime); + if (!isFiniteNumber(frag.programDateTime)) { + frag.programDateTime = null; + frag.rawProgramDateTime = null; + return; + } + programDateTimes.push(frag); + } else if (prevFrag != null && prevFrag.programDateTime) { + frag.programDateTime = prevFrag.endProgramDateTime; + } + } + function setInitSegment(frag, mapAttrs, id, levelkeys) { + frag.relurl = mapAttrs.URI; + if (mapAttrs.BYTERANGE) { + frag.setByteRange(mapAttrs.BYTERANGE); + } + frag.level = id; + frag.sn = 'initSegment'; + if (levelkeys) { + frag.levelkeys = levelkeys; + } + frag.initSegment = null; + } + function setFragLevelKeys(frag, levelkeys, level) { + frag.levelkeys = levelkeys; + var encryptedFragments = level.encryptedFragments; + if ((!encryptedFragments.length || encryptedFragments[encryptedFragments.length - 1].levelkeys !== levelkeys) && Object.keys(levelkeys).some(function (format) { + return levelkeys[format].isCommonEncryption; + })) { + encryptedFragments.push(frag); + } + } + + var PlaylistContextType = { + MANIFEST: "manifest", + LEVEL: "level", + AUDIO_TRACK: "audioTrack", + SUBTITLE_TRACK: "subtitleTrack" + }; + var PlaylistLevelType = { + MAIN: "main", + AUDIO: "audio", + SUBTITLE: "subtitle" + }; + + function mapContextToLevelType(context) { + var type = context.type; + switch (type) { + case PlaylistContextType.AUDIO_TRACK: + return PlaylistLevelType.AUDIO; + case PlaylistContextType.SUBTITLE_TRACK: + return PlaylistLevelType.SUBTITLE; + default: + return PlaylistLevelType.MAIN; + } + } + function getResponseUrl(response, context) { + var url = response.url; + // responseURL not supported on some browsers (it is used to detect URL redirection) + // data-uri mode also not supported (but no need to detect redirection) + if (url === undefined || url.indexOf('data:') === 0) { + // fallback to initial URL + url = context.url; + } + return url; + } + var PlaylistLoader = /*#__PURE__*/function () { + function PlaylistLoader(hls) { + this.hls = void 0; + this.loaders = Object.create(null); + this.variableList = null; + this.hls = hls; + this.registerListeners(); + } + var _proto = PlaylistLoader.prototype; + _proto.startLoad = function startLoad(startPosition) {}; + _proto.stopLoad = function stopLoad() { + this.destroyInternalLoaders(); + }; + _proto.registerListeners = function registerListeners() { + var hls = this.hls; + hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this); + hls.on(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this); + hls.on(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this); + }; + _proto.unregisterListeners = function unregisterListeners() { + var hls = this.hls; + hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this); + hls.off(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this); + hls.off(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this); + } + + /** + * Returns defaults or configured loader-type overloads (pLoader and loader config params) + */; + _proto.createInternalLoader = function createInternalLoader(context) { + var config = this.hls.config; + var PLoader = config.pLoader; + var Loader = config.loader; + var InternalLoader = PLoader || Loader; + var loader = new InternalLoader(config); + this.loaders[context.type] = loader; + return loader; + }; + _proto.getInternalLoader = function getInternalLoader(context) { + return this.loaders[context.type]; + }; + _proto.resetInternalLoader = function resetInternalLoader(contextType) { + if (this.loaders[contextType]) { + delete this.loaders[contextType]; + } + } + + /** + * Call `destroy` on all internal loader instances mapped (one per context type) + */; + _proto.destroyInternalLoaders = function destroyInternalLoaders() { + for (var contextType in this.loaders) { + var loader = this.loaders[contextType]; + if (loader) { + loader.destroy(); + } + this.resetInternalLoader(contextType); + } + }; + _proto.destroy = function destroy() { + this.variableList = null; + this.unregisterListeners(); + this.destroyInternalLoaders(); + }; + _proto.onManifestLoading = function onManifestLoading(event, data) { + var url = data.url; + this.variableList = null; + this.load({ + id: null, + level: 0, + responseType: 'text', + type: PlaylistContextType.MANIFEST, + url: url, + deliveryDirectives: null + }); + }; + _proto.onLevelLoading = function onLevelLoading(event, data) { + var id = data.id, + level = data.level, + pathwayId = data.pathwayId, + url = data.url, + deliveryDirectives = data.deliveryDirectives; + this.load({ + id: id, + level: level, + pathwayId: pathwayId, + responseType: 'text', + type: PlaylistContextType.LEVEL, + url: url, + deliveryDirectives: deliveryDirectives + }); + }; + _proto.onAudioTrackLoading = function onAudioTrackLoading(event, data) { + var id = data.id, + groupId = data.groupId, + url = data.url, + deliveryDirectives = data.deliveryDirectives; + this.load({ + id: id, + groupId: groupId, + level: null, + responseType: 'text', + type: PlaylistContextType.AUDIO_TRACK, + url: url, + deliveryDirectives: deliveryDirectives + }); + }; + _proto.onSubtitleTrackLoading = function onSubtitleTrackLoading(event, data) { + var id = data.id, + groupId = data.groupId, + url = data.url, + deliveryDirectives = data.deliveryDirectives; + this.load({ + id: id, + groupId: groupId, + level: null, + responseType: 'text', + type: PlaylistContextType.SUBTITLE_TRACK, + url: url, + deliveryDirectives: deliveryDirectives + }); + }; + _proto.load = function load(context) { + var _context$deliveryDire, + _this = this; + var config = this.hls.config; + + // logger.debug(`[playlist-loader]: Loading playlist of type ${context.type}, level: ${context.level}, id: ${context.id}`); + + // Check if a loader for this context already exists + var loader = this.getInternalLoader(context); + if (loader) { + var loaderContext = loader.context; + if (loaderContext && loaderContext.url === context.url && loaderContext.level === context.level) { + // same URL can't overlap + this.hls.logger.trace('[playlist-loader]: playlist request ongoing'); + return; + } + this.hls.logger.log("[playlist-loader]: aborting previous loader for type: " + context.type); + loader.abort(); + } + + // apply different configs for retries depending on + // context (manifest, level, audio/subs playlist) + var loadPolicy; + if (context.type === PlaylistContextType.MANIFEST) { + loadPolicy = config.manifestLoadPolicy.default; + } else { + loadPolicy = _extends({}, config.playlistLoadPolicy.default, { + timeoutRetry: null, + errorRetry: null + }); + } + loader = this.createInternalLoader(context); + + // Override level/track timeout for LL-HLS requests + // (the default of 10000ms is counter productive to blocking playlist reload requests) + if (isFiniteNumber((_context$deliveryDire = context.deliveryDirectives) == null ? void 0 : _context$deliveryDire.part)) { + var levelDetails; + if (context.type === PlaylistContextType.LEVEL && context.level !== null) { + levelDetails = this.hls.levels[context.level].details; + } else if (context.type === PlaylistContextType.AUDIO_TRACK && context.id !== null) { + levelDetails = this.hls.audioTracks[context.id].details; + } else if (context.type === PlaylistContextType.SUBTITLE_TRACK && context.id !== null) { + levelDetails = this.hls.subtitleTracks[context.id].details; + } + if (levelDetails) { + var partTarget = levelDetails.partTarget; + var targetDuration = levelDetails.targetduration; + if (partTarget && targetDuration) { + var maxLowLatencyPlaylistRefresh = Math.max(partTarget * 3, targetDuration * 0.8) * 1000; + loadPolicy = _extends({}, loadPolicy, { + maxTimeToFirstByteMs: Math.min(maxLowLatencyPlaylistRefresh, loadPolicy.maxTimeToFirstByteMs), + maxLoadTimeMs: Math.min(maxLowLatencyPlaylistRefresh, loadPolicy.maxTimeToFirstByteMs) + }); + } + } + } + var legacyRetryCompatibility = loadPolicy.errorRetry || loadPolicy.timeoutRetry || {}; + var loaderConfig = { + loadPolicy: loadPolicy, + timeout: loadPolicy.maxLoadTimeMs, + maxRetry: legacyRetryCompatibility.maxNumRetry || 0, + retryDelay: legacyRetryCompatibility.retryDelayMs || 0, + maxRetryDelay: legacyRetryCompatibility.maxRetryDelayMs || 0 + }; + var loaderCallbacks = { + onSuccess: function onSuccess(response, stats, context, networkDetails) { + var loader = _this.getInternalLoader(context); + _this.resetInternalLoader(context.type); + var string = response.data; + + // Validate if it is an M3U8 at all + if (string.indexOf('#EXTM3U') !== 0) { + _this.handleManifestParsingError(response, context, new Error('no EXTM3U delimiter'), networkDetails || null, stats); + return; + } + stats.parsing.start = performance.now(); + if (M3U8Parser.isMediaPlaylist(string)) { + _this.handleTrackOrLevelPlaylist(response, stats, context, networkDetails || null, loader); + } else { + _this.handleMasterPlaylist(response, stats, context, networkDetails); + } + }, + onError: function onError(response, context, networkDetails, stats) { + _this.handleNetworkError(context, networkDetails, false, response, stats); + }, + onTimeout: function onTimeout(stats, context, networkDetails) { + _this.handleNetworkError(context, networkDetails, true, undefined, stats); + } + }; + + // logger.debug(`[playlist-loader]: Calling internal loader delegate for URL: ${context.url}`); + + loader.load(context, loaderConfig, loaderCallbacks); + }; + _proto.handleMasterPlaylist = function handleMasterPlaylist(response, stats, context, networkDetails) { + var hls = this.hls; + var string = response.data; + var url = getResponseUrl(response, context); + var parsedResult = M3U8Parser.parseMasterPlaylist(string, url); + if (parsedResult.playlistParsingError) { + this.handleManifestParsingError(response, context, parsedResult.playlistParsingError, networkDetails, stats); + return; + } + var contentSteering = parsedResult.contentSteering, + levels = parsedResult.levels, + sessionData = parsedResult.sessionData, + sessionKeys = parsedResult.sessionKeys, + startTimeOffset = parsedResult.startTimeOffset, + variableList = parsedResult.variableList; + this.variableList = variableList; + var _M3U8Parser$parseMast = M3U8Parser.parseMasterPlaylistMedia(string, url, parsedResult), + _M3U8Parser$parseMast2 = _M3U8Parser$parseMast.AUDIO, + audioTracks = _M3U8Parser$parseMast2 === void 0 ? [] : _M3U8Parser$parseMast2, + subtitles = _M3U8Parser$parseMast.SUBTITLES, + captions = _M3U8Parser$parseMast['CLOSED-CAPTIONS']; + if (audioTracks.length) { + // check if we have found an audio track embedded in main playlist (audio track without URI attribute) + var embeddedAudioFound = audioTracks.some(function (audioTrack) { + return !audioTrack.url; + }); + + // if no embedded audio track defined, but audio codec signaled in quality level, + // we need to signal this main audio track this could happen with playlists with + // alt audio rendition in which quality levels (main) + // contains both audio+video. but with mixed audio track not signaled + if (!embeddedAudioFound && levels[0].audioCodec && !levels[0].attrs.AUDIO) { + this.hls.logger.log('[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one'); + audioTracks.unshift({ + type: 'main', + name: 'main', + groupId: 'main', + default: false, + autoselect: false, + forced: false, + id: -1, + attrs: new AttrList({}), + bitrate: 0, + url: '' + }); + } + } + hls.trigger(Events.MANIFEST_LOADED, { + levels: levels, + audioTracks: audioTracks, + subtitles: subtitles, + captions: captions, + contentSteering: contentSteering, + url: url, + stats: stats, + networkDetails: networkDetails, + sessionData: sessionData, + sessionKeys: sessionKeys, + startTimeOffset: startTimeOffset, + variableList: variableList + }); + }; + _proto.handleTrackOrLevelPlaylist = function handleTrackOrLevelPlaylist(response, stats, context, networkDetails, loader) { + var hls = this.hls; + var id = context.id, + level = context.level, + type = context.type; + var url = getResponseUrl(response, context); + var levelId = isFiniteNumber(level) ? level : isFiniteNumber(id) ? id : 0; + var levelType = mapContextToLevelType(context); + var levelDetails = M3U8Parser.parseLevelPlaylist(response.data, url, levelId, levelType, 0, this.variableList); + + // We have done our first request (Manifest-type) and receive + // not a master playlist but a chunk-list (track/level) + // We fire the manifest-loaded event anyway with the parsed level-details + // by creating a single-level structure for it. + if (type === PlaylistContextType.MANIFEST) { + var singleLevel = { + attrs: new AttrList({}), + bitrate: 0, + details: levelDetails, + name: '', + url: url + }; + hls.trigger(Events.MANIFEST_LOADED, { + levels: [singleLevel], + audioTracks: [], + url: url, + stats: stats, + networkDetails: networkDetails, + sessionData: null, + sessionKeys: null, + contentSteering: null, + startTimeOffset: null, + variableList: null + }); + } + + // save parsing time + stats.parsing.end = performance.now(); + + // extend the context with the new levelDetails property + context.levelDetails = levelDetails; + this.handlePlaylistLoaded(levelDetails, response, stats, context, networkDetails, loader); + }; + _proto.handleManifestParsingError = function handleManifestParsingError(response, context, error, networkDetails, stats) { + this.hls.trigger(Events.ERROR, { + type: ErrorTypes.NETWORK_ERROR, + details: ErrorDetails.MANIFEST_PARSING_ERROR, + fatal: context.type === PlaylistContextType.MANIFEST, + url: response.url, + err: error, + error: error, + reason: error.message, + response: response, + context: context, + networkDetails: networkDetails, + stats: stats + }); + }; + _proto.handleNetworkError = function handleNetworkError(context, networkDetails, timeout, response, stats) { + if (timeout === void 0) { + timeout = false; + } + var message = "A network " + (timeout ? 'timeout' : 'error' + (response ? ' (status ' + response.code + ')' : '')) + " occurred while loading " + context.type; + if (context.type === PlaylistContextType.LEVEL) { + message += ": " + context.level + " id: " + context.id; + } else if (context.type === PlaylistContextType.AUDIO_TRACK || context.type === PlaylistContextType.SUBTITLE_TRACK) { + message += " id: " + context.id + " group-id: \"" + context.groupId + "\""; + } + var error = new Error(message); + this.hls.logger.warn("[playlist-loader]: " + message); + var details = ErrorDetails.UNKNOWN; + var fatal = false; + var loader = this.getInternalLoader(context); + switch (context.type) { + case PlaylistContextType.MANIFEST: + details = timeout ? ErrorDetails.MANIFEST_LOAD_TIMEOUT : ErrorDetails.MANIFEST_LOAD_ERROR; + fatal = true; + break; + case PlaylistContextType.LEVEL: + details = timeout ? ErrorDetails.LEVEL_LOAD_TIMEOUT : ErrorDetails.LEVEL_LOAD_ERROR; + fatal = false; + break; + case PlaylistContextType.AUDIO_TRACK: + details = timeout ? ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT : ErrorDetails.AUDIO_TRACK_LOAD_ERROR; + fatal = false; + break; + case PlaylistContextType.SUBTITLE_TRACK: + details = timeout ? ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT : ErrorDetails.SUBTITLE_LOAD_ERROR; + fatal = false; + break; + } + if (loader) { + this.resetInternalLoader(context.type); + } + var errorData = { + type: ErrorTypes.NETWORK_ERROR, + details: details, + fatal: fatal, + url: context.url, + loader: loader, + context: context, + error: error, + networkDetails: networkDetails, + stats: stats + }; + if (response) { + var url = (networkDetails == null ? void 0 : networkDetails.url) || context.url; + errorData.response = _objectSpread2({ + url: url, + data: undefined + }, response); + } + this.hls.trigger(Events.ERROR, errorData); + }; + _proto.handlePlaylistLoaded = function handlePlaylistLoaded(levelDetails, response, stats, context, networkDetails, loader) { + var hls = this.hls; + var type = context.type, + level = context.level, + id = context.id, + groupId = context.groupId, + deliveryDirectives = context.deliveryDirectives; + var url = getResponseUrl(response, context); + var parent = mapContextToLevelType(context); + var levelIndex = typeof context.level === 'number' && parent === PlaylistLevelType.MAIN ? level : undefined; + if (!levelDetails.fragments.length) { + var _error = new Error('No Segments found in Playlist'); + hls.trigger(Events.ERROR, { + type: ErrorTypes.NETWORK_ERROR, + details: ErrorDetails.LEVEL_EMPTY_ERROR, + fatal: false, + url: url, + error: _error, + reason: _error.message, + response: response, + context: context, + level: levelIndex, + parent: parent, + networkDetails: networkDetails, + stats: stats + }); + return; + } + if (!levelDetails.targetduration) { + levelDetails.playlistParsingError = new Error('Missing Target Duration'); + } + var error = levelDetails.playlistParsingError; + if (error) { + hls.trigger(Events.ERROR, { + type: ErrorTypes.NETWORK_ERROR, + details: ErrorDetails.LEVEL_PARSING_ERROR, + fatal: false, + url: url, + error: error, + reason: error.message, + response: response, + context: context, + level: levelIndex, + parent: parent, + networkDetails: networkDetails, + stats: stats + }); + return; + } + if (levelDetails.live && loader) { + if (loader.getCacheAge) { + levelDetails.ageHeader = loader.getCacheAge() || 0; + } + if (!loader.getCacheAge || isNaN(levelDetails.ageHeader)) { + levelDetails.ageHeader = 0; + } + } + switch (type) { + case PlaylistContextType.MANIFEST: + case PlaylistContextType.LEVEL: + hls.trigger(Events.LEVEL_LOADED, { + details: levelDetails, + level: levelIndex || 0, + id: id || 0, + stats: stats, + networkDetails: networkDetails, + deliveryDirectives: deliveryDirectives + }); + break; + case PlaylistContextType.AUDIO_TRACK: + hls.trigger(Events.AUDIO_TRACK_LOADED, { + details: levelDetails, + id: id || 0, + groupId: groupId || '', + stats: stats, + networkDetails: networkDetails, + deliveryDirectives: deliveryDirectives + }); + break; + case PlaylistContextType.SUBTITLE_TRACK: + hls.trigger(Events.SUBTITLE_TRACK_LOADED, { + details: levelDetails, + id: id || 0, + groupId: groupId || '', + stats: stats, + networkDetails: networkDetails, + deliveryDirectives: deliveryDirectives + }); + break; + } + }; + return PlaylistLoader; + }(); + + function sendAddTrackEvent(track, videoEl) { + var event; + try { + event = new Event('addtrack'); + } catch (err) { + // for IE11 + event = document.createEvent('Event'); + event.initEvent('addtrack', false, false); + } + event.track = track; + videoEl.dispatchEvent(event); + } + function addCueToTrack(track, cue) { + // Sometimes there are cue overlaps on segmented vtts so the same + // cue can appear more than once in different vtt files. + // This avoid showing duplicated cues with same timecode and text. + var mode = track.mode; + if (mode === 'disabled') { + track.mode = 'hidden'; + } + if (track.cues && !track.cues.getCueById(cue.id)) { + try { + track.addCue(cue); + if (!track.cues.getCueById(cue.id)) { + throw new Error("addCue is failed for: " + cue); + } + } catch (err) { + logger.debug("[texttrack-utils]: " + err); + try { + var textTrackCue = new self.TextTrackCue(cue.startTime, cue.endTime, cue.text); + textTrackCue.id = cue.id; + track.addCue(textTrackCue); + } catch (err2) { + logger.debug("[texttrack-utils]: Legacy TextTrackCue fallback failed: " + err2); + } + } + } + if (mode === 'disabled') { + track.mode = mode; + } + } + function clearCurrentCues(track) { + // When track.mode is disabled, track.cues will be null. + // To guarantee the removal of cues, we need to temporarily + // change the mode to hidden + var mode = track.mode; + if (mode === 'disabled') { + track.mode = 'hidden'; + } + if (track.cues) { + for (var i = track.cues.length; i--;) { + track.removeCue(track.cues[i]); + } + } + if (mode === 'disabled') { + track.mode = mode; + } + } + function removeCuesInRange(track, start, end, predicate) { + var mode = track.mode; + if (mode === 'disabled') { + track.mode = 'hidden'; + } + if (track.cues && track.cues.length > 0) { + var cues = getCuesInRange(track.cues, start, end); + for (var i = 0; i < cues.length; i++) { + if (!predicate || predicate(cues[i])) { + track.removeCue(cues[i]); + } + } + } + if (mode === 'disabled') { + track.mode = mode; + } + } + + // Find first cue starting after given time. + // Modified version of binary search O(log(n)). + function getFirstCueIndexAfterTime(cues, time) { + // If first cue starts after time, start there + if (time < cues[0].startTime) { + return 0; + } + // If the last cue ends before time there is no overlap + var len = cues.length - 1; + if (time > cues[len].endTime) { + return -1; + } + var left = 0; + var right = len; + while (left <= right) { + var mid = Math.floor((right + left) / 2); + if (time < cues[mid].startTime) { + right = mid - 1; + } else if (time > cues[mid].startTime && left < len) { + left = mid + 1; + } else { + // If it's not lower or higher, it must be equal. + return mid; + } + } + // At this point, left and right have swapped. + // No direct match was found, left or right element must be the closest. Check which one has the smallest diff. + return cues[left].startTime - time < time - cues[right].startTime ? left : right; + } + function getCuesInRange(cues, start, end) { + var cuesFound = []; + var firstCueInRange = getFirstCueIndexAfterTime(cues, start); + if (firstCueInRange > -1) { + for (var i = firstCueInRange, len = cues.length; i < len; i++) { + var cue = cues[i]; + if (cue.startTime >= start && cue.endTime <= end) { + cuesFound.push(cue); + } else if (cue.startTime > end) { + return cuesFound; + } + } + } + return cuesFound; + } + function filterSubtitleTracks(textTrackList) { + var tracks = []; + for (var i = 0; i < textTrackList.length; i++) { + var track = textTrackList[i]; + // Edge adds a track without a label; we don't want to use it + if ((track.kind === 'subtitles' || track.kind === 'captions') && track.label) { + tracks.push(textTrackList[i]); + } + } + return tracks; + } + + var MetadataSchema = { + audioId3: "org.id3", + dateRange: "com.apple.quicktime.HLS", + emsg: "https://aomedia.org/emsg/ID3" + }; + + /** + * Decode an ID3 PRIV frame. + * + * @param frame - the ID3 PRIV frame + * + * @returns The decoded ID3 PRIV frame + * + * @internal + * + * @group ID3 + */ + function decodeId3PrivFrame(frame) { + /* + Format: <text string>\0<binary data> + */ + if (frame.size < 2) { + return undefined; + } + var owner = utf8ArrayToStr(frame.data, true); + var privateData = new Uint8Array(frame.data.subarray(owner.length + 1)); + return { + key: frame.type, + info: owner, + data: privateData.buffer + }; + } + + /** + * Decodes an ID3 text frame + * + * @param frame - the ID3 text frame + * + * @returns The decoded ID3 text frame + * + * @internal + * + * @group ID3 + */ + function decodeId3TextFrame(frame) { + if (frame.size < 2) { + return undefined; + } + if (frame.type === 'TXXX') { + /* + Format: + [0] = {Text Encoding} + [1-?] = {Description}\0{Value} + */ + var index = 1; + var description = utf8ArrayToStr(frame.data.subarray(index), true); + index += description.length + 1; + var value = utf8ArrayToStr(frame.data.subarray(index)); + return { + key: frame.type, + info: description, + data: value + }; + } + /* + Format: + [0] = {Text Encoding} + [1-?] = {Value} + */ + var text = utf8ArrayToStr(frame.data.subarray(1)); + return { + key: frame.type, + info: '', + data: text + }; + } + + /** + * Decode a URL frame + * + * @param frame - the ID3 URL frame + * + * @returns The decoded ID3 URL frame + * + * @internal + * + * @group ID3 + */ + function decodeId3UrlFrame(frame) { + if (frame.type === 'WXXX') { + /* + Format: + [0] = {Text Encoding} + [1-?] = {Description}\0{URL} + */ + if (frame.size < 2) { + return undefined; + } + var index = 1; + var description = utf8ArrayToStr(frame.data.subarray(index), true); + index += description.length + 1; + var value = utf8ArrayToStr(frame.data.subarray(index)); + return { + key: frame.type, + info: description, + data: value + }; + } + /* + Format: + [0-?] = {URL} + */ + var url = utf8ArrayToStr(frame.data); + return { + key: frame.type, + info: '', + data: url + }; + } + + function toUint8(data, offset, length) { + if (offset === void 0) { + offset = 0; + } + if (length === void 0) { + length = Infinity; + } + return view(data, offset, length, Uint8Array); + } + function view(data, offset, length, Type) { + var buffer = unsafeGetArrayBuffer(data); + var bytesPerElement = 1; + if ('BYTES_PER_ELEMENT' in Type) { + bytesPerElement = Type.BYTES_PER_ELEMENT; + } + // Absolute end of the |data| view within |buffer|. + var dataOffset = isArrayBufferView(data) ? data.byteOffset : 0; + var dataEnd = (dataOffset + data.byteLength) / bytesPerElement; + // Absolute start of the result within |buffer|. + var rawStart = (dataOffset + offset) / bytesPerElement; + var start = Math.floor(Math.max(0, Math.min(rawStart, dataEnd))); + // Absolute end of the result within |buffer|. + var end = Math.floor(Math.min(start + Math.max(length, 0), dataEnd)); + return new Type(buffer, start, end - start); + } + function unsafeGetArrayBuffer(view) { + if (view instanceof ArrayBuffer) { + return view; + } else { + return view.buffer; + } + } + function isArrayBufferView(obj) { + return obj && obj.buffer instanceof ArrayBuffer && obj.byteLength !== undefined && obj.byteOffset !== undefined; + } + + function toArrayBuffer(view) { + if (view instanceof ArrayBuffer) { + return view; + } else { + if (view.byteOffset == 0 && view.byteLength == view.buffer.byteLength) { + // This is a TypedArray over the whole buffer. + return view.buffer; + } + // This is a 'view' on the buffer. Create a new buffer that only contains + // the data. Note that since this isn't an ArrayBuffer, the 'new' call + // will allocate a new buffer to hold the copy. + return new Uint8Array(view).buffer; + } + } + + /** + * Encodes binary data to base64 + * + * @param binary - The binary data to encode + * @returns The base64 encoded string + * + * @group Utils + * + * @beta + */ + function base64encode(binary) { + return btoa(String.fromCharCode.apply(String, binary)); + } + + /** + * This implements the rounding procedure described in step 2 of the "Serializing a Decimal" specification. + * This rounding style is known as "even rounding", "banker's rounding", or "commercial rounding". + * + * @param value - The value to round + * @param precision - The number of decimal places to round to + * @returns The rounded value + * + * @group Utils + * + * @beta + */ + function roundToEven(value, precision) { + if (value < 0) { + return -roundToEven(-value, precision); + } + var decimalShift = Math.pow(10, precision); + var isEquidistant = Math.abs(value * decimalShift % 1 - 0.5) < Number.EPSILON; + if (isEquidistant) { + // If the tail of the decimal place is 'equidistant' we round to the nearest even value + var flooredValue = Math.floor(value * decimalShift); + return (flooredValue % 2 === 0 ? flooredValue : flooredValue + 1) / decimalShift; + } else { + // Otherwise, proceed as normal + return Math.round(value * decimalShift) / decimalShift; + } + } + + /** + * Constructs a relative path from a URL. + * + * @param url - The destination URL + * @param base - The base URL + * @returns The relative path + * + * @group Utils + * + * @beta + */ + function urlToRelativePath(url, base) { + var to = new URL(url); + var from = new URL(base); + if (to.origin !== from.origin) { + return url; + } + var toPath = to.pathname.split('/').slice(1); + var fromPath = from.pathname.split('/').slice(1, -1); + // remove common parents + while (toPath[0] === fromPath[0]) { + toPath.shift(); + fromPath.shift(); + } + // add back paths + while (fromPath.length) { + fromPath.shift(); + toPath.unshift('..'); + } + return toPath.join('/'); + } + + /** + * Generate a random v4 UUID + * + * @returns A random v4 UUID + * + * @group Utils + * + * @beta + */ + function uuid() { + try { + return crypto.randomUUID(); + } catch (error) { + try { + var url = URL.createObjectURL(new Blob()); + var _uuid = url.toString(); + URL.revokeObjectURL(url); + return _uuid.slice(_uuid.lastIndexOf('/') + 1); + } catch (error) { + var dt = new Date().getTime(); + var _uuid2 = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = (dt + Math.random() * 16) % 16 | 0; + dt = Math.floor(dt / 16); + return (c == 'x' ? r : r & 0x3 | 0x8).toString(16); + }); + return _uuid2; + } + } + } + + function decodeId3ImageFrame(frame) { + var metadataFrame = { + key: frame.type, + description: '', + data: '', + mimeType: null, + pictureType: null + }; + var utf8Encoding = 0x03; + if (frame.size < 2) { + return undefined; + } + if (frame.data[0] !== utf8Encoding) { + console.log('Ignore frame with unrecognized character ' + 'encoding'); + return undefined; + } + var mimeTypeEndIndex = frame.data.subarray(1).indexOf(0); + if (mimeTypeEndIndex === -1) { + return undefined; + } + var mimeType = utf8ArrayToStr(toUint8(frame.data, 1, mimeTypeEndIndex)); + var pictureType = frame.data[2 + mimeTypeEndIndex]; + var descriptionEndIndex = frame.data.subarray(3 + mimeTypeEndIndex).indexOf(0); + if (descriptionEndIndex === -1) { + return undefined; + } + var description = utf8ArrayToStr(toUint8(frame.data, 3 + mimeTypeEndIndex, descriptionEndIndex)); + var data; + if (mimeType === '-->') { + data = utf8ArrayToStr(toUint8(frame.data, 4 + mimeTypeEndIndex + descriptionEndIndex)); + } else { + data = toArrayBuffer(frame.data.subarray(4 + mimeTypeEndIndex + descriptionEndIndex)); + } + metadataFrame.mimeType = mimeType; + metadataFrame.pictureType = pictureType; + metadataFrame.description = description; + metadataFrame.data = data; + return metadataFrame; + } + + /** + * Decode an ID3 frame. + * + * @param frame - the ID3 frame + * + * @returns The decoded ID3 frame + * + * @internal + * + * @group ID3 + */ + function decodeId3Frame(frame) { + if (frame.type === 'PRIV') { + return decodeId3PrivFrame(frame); + } else if (frame.type[0] === 'W') { + return decodeId3UrlFrame(frame); + } else if (frame.type === 'APIC') { + return decodeId3ImageFrame(frame); + } + return decodeId3TextFrame(frame); + } + + /** + * Read ID3 size + * + * @param data - The data to read from + * @param offset - The offset at which to start reading + * + * @returns The size + * + * @internal + * + * @group ID3 + */ + function readId3Size(data, offset) { + var size = 0; + size = (data[offset] & 0x7f) << 21; + size |= (data[offset + 1] & 0x7f) << 14; + size |= (data[offset + 2] & 0x7f) << 7; + size |= data[offset + 3] & 0x7f; + return size; + } + + /** + * Returns the data of an ID3 frame. + * + * @param data - The data to read from + * + * @returns The data of the ID3 frame + * + * @internal + * + * @group ID3 + */ + function getId3FrameData(data) { + /* + Frame ID $xx xx xx xx (four characters) + Size $xx xx xx xx + Flags $xx xx + */ + var type = String.fromCharCode(data[0], data[1], data[2], data[3]); + var size = readId3Size(data, 4); + // skip frame id, size, and flags + var offset = 10; + return { + type: type, + size: size, + data: data.subarray(offset, offset + size) + }; + } + + /** + * Returns true if an ID3 footer can be found at offset in data + * + * @param data - The data to search in + * @param offset - The offset at which to start searching + * + * @returns `true` if an ID3 footer is found + * + * @internal + * + * @group ID3 + */ + function isId3Footer(data, offset) { + /* + * The footer is a copy of the header, but with a different identifier + */ + if (offset + 10 <= data.length) { + // look for '3DI' identifier + if (data[offset] === 0x33 && data[offset + 1] === 0x44 && data[offset + 2] === 0x49) { + // check version is within range + if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) { + // check size is within range + if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) { + return true; + } + } + } + } + return false; + } + + /** + * Returns true if an ID3 header can be found at offset in data + * + * @param data - The data to search in + * @param offset - The offset at which to start searching + * + * @returns `true` if an ID3 header is found + * + * @internal + * + * @group ID3 + */ + function isId3Header(data, offset) { + /* + * http://id3.org/id3v2.3.0 + * [0] = 'I' + * [1] = 'D' + * [2] = '3' + * [3,4] = {Version} + * [5] = {Flags} + * [6-9] = {ID3 Size} + * + * An ID3v2 tag can be detected with the following pattern: + * $49 44 33 yy yy xx zz zz zz zz + * Where yy is less than $FF, xx is the 'flags' byte and zz is less than $80 + */ + if (offset + 10 <= data.length) { + // look for 'ID3' identifier + if (data[offset] === 0x49 && data[offset + 1] === 0x44 && data[offset + 2] === 0x33) { + // check version is within range + if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) { + // check size is within range + if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) { + return true; + } + } + } + } + return false; + } + + var HEADER_FOOTER_SIZE = 10; + var FRAME_SIZE = 10; + /** + * Returns an array of ID3 frames found in all the ID3 tags in the id3Data + * + * @param id3Data - The ID3 data containing one or more ID3 tags + * + * @returns Array of ID3 frame objects + * + * @group ID3 + * + * @beta + */ + function getId3Frames(id3Data) { + var offset = 0; + var frames = []; + while (isId3Header(id3Data, offset)) { + var size = readId3Size(id3Data, offset + 6); + if (id3Data[offset + 5] >> 6 & 1) { + // skip extended header + offset += HEADER_FOOTER_SIZE; + } + // skip past ID3 header + offset += HEADER_FOOTER_SIZE; + var end = offset + size; + // loop through frames in the ID3 tag + while (offset + FRAME_SIZE < end) { + var frameData = getId3FrameData(id3Data.subarray(offset)); + var frame = decodeId3Frame(frameData); + if (frame) { + frames.push(frame); + } + // skip frame header and frame data + offset += frameData.size + HEADER_FOOTER_SIZE; + } + if (isId3Footer(id3Data, offset)) { + offset += HEADER_FOOTER_SIZE; + } + } + return frames; + } + + /** + * Returns true if the ID3 frame is an Elementary Stream timestamp frame + * + * @param frame - the ID3 frame + * + * @returns `true` if the ID3 frame is an Elementary Stream timestamp frame + * + * @internal + * + * @group ID3 + */ + function isId3TimestampFrame(frame) { + return frame && frame.key === 'PRIV' && frame.info === 'com.apple.streaming.transportStreamTimestamp'; + } + + var MIN_CUE_DURATION = 0.25; + function getCueClass() { + if (typeof self === 'undefined') return undefined; + return self.VTTCue || self.TextTrackCue; + } + function createCueWithDataFields(Cue, startTime, endTime, data, type) { + var cue = new Cue(startTime, endTime, ''); + try { + cue.value = data; + if (type) { + cue.type = type; + } + } catch (e) { + cue = new Cue(startTime, endTime, JSON.stringify(type ? _objectSpread2({ + type: type + }, data) : data)); + } + return cue; + } + + // VTTCue latest draft allows an infinite duration, fallback + // to MAX_VALUE if necessary + var MAX_CUE_ENDTIME = function () { + var Cue = getCueClass(); + try { + Cue && new Cue(0, Number.POSITIVE_INFINITY, ''); + } catch (e) { + return Number.MAX_VALUE; + } + return Number.POSITIVE_INFINITY; + }(); + function hexToArrayBuffer(str) { + return Uint8Array.from(str.replace(/^0x/, '').replace(/([\da-fA-F]{2}) ?/g, '0x$1 ').replace(/ +$/, '').split(' ')).buffer; + } + var ID3TrackController = /*#__PURE__*/function () { + function ID3TrackController(hls) { + this.hls = void 0; + this.id3Track = null; + this.media = null; + this.dateRangeCuesAppended = {}; + this.hls = hls; + this._registerListeners(); + } + var _proto = ID3TrackController.prototype; + _proto.destroy = function destroy() { + this._unregisterListeners(); + this.id3Track = null; + this.media = null; + this.dateRangeCuesAppended = {}; + // @ts-ignore + this.hls = null; + }; + _proto._registerListeners = function _registerListeners() { + var hls = this.hls; + hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this); + hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.on(Events.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this); + hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this); + hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this); + hls.on(Events.LEVEL_PTS_UPDATED, this.onLevelPtsUpdated, this); + }; + _proto._unregisterListeners = function _unregisterListeners() { + var hls = this.hls; + hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this); + hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.off(Events.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this); + hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this); + hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this); + hls.off(Events.LEVEL_PTS_UPDATED, this.onLevelPtsUpdated, this); + } + + // Add ID3 metatadata text track. + ; + _proto.onMediaAttached = function onMediaAttached(event, data) { + this.media = data.media; + }; + _proto.onMediaDetaching = function onMediaDetaching() { + if (this.id3Track) { + clearCurrentCues(this.id3Track); + this.id3Track = null; + } + this.media = null; + this.dateRangeCuesAppended = {}; + }; + _proto.onManifestLoading = function onManifestLoading() { + this.dateRangeCuesAppended = {}; + }; + _proto.createTrack = function createTrack(media) { + var track = this.getID3Track(media.textTracks); + track.mode = 'hidden'; + return track; + }; + _proto.getID3Track = function getID3Track(textTracks) { + if (!this.media) { + return; + } + for (var i = 0; i < textTracks.length; i++) { + var textTrack = textTracks[i]; + if (textTrack.kind === 'metadata' && textTrack.label === 'id3') { + // send 'addtrack' when reusing the textTrack for metadata, + // same as what we do for captions + sendAddTrackEvent(textTrack, this.media); + return textTrack; + } + } + return this.media.addTextTrack('metadata', 'id3'); + }; + _proto.onFragParsingMetadata = function onFragParsingMetadata(event, data) { + if (!this.media) { + return; + } + var _this$hls$config = this.hls.config, + enableEmsgMetadataCues = _this$hls$config.enableEmsgMetadataCues, + enableID3MetadataCues = _this$hls$config.enableID3MetadataCues; + if (!enableEmsgMetadataCues && !enableID3MetadataCues) { + return; + } + var samples = data.samples; + + // create track dynamically + if (!this.id3Track) { + this.id3Track = this.createTrack(this.media); + } + var Cue = getCueClass(); + if (!Cue) { + return; + } + for (var i = 0; i < samples.length; i++) { + var type = samples[i].type; + if (type === MetadataSchema.emsg && !enableEmsgMetadataCues || !enableID3MetadataCues) { + continue; + } + var frames = getId3Frames(samples[i].data); + if (frames) { + var startTime = samples[i].pts; + var endTime = startTime + samples[i].duration; + if (endTime > MAX_CUE_ENDTIME) { + endTime = MAX_CUE_ENDTIME; + } + var timeDiff = endTime - startTime; + if (timeDiff <= 0) { + endTime = startTime + MIN_CUE_DURATION; + } + for (var j = 0; j < frames.length; j++) { + var frame = frames[j]; + // Safari doesn't put the timestamp frame in the TextTrack + if (!isId3TimestampFrame(frame)) { + // add a bounds to any unbounded cues + this.updateId3CueEnds(startTime, type); + var cue = createCueWithDataFields(Cue, startTime, endTime, frame, type); + if (cue) { + this.id3Track.addCue(cue); + } + } + } + } + } + }; + _proto.updateId3CueEnds = function updateId3CueEnds(startTime, type) { + var _this$id3Track; + var cues = (_this$id3Track = this.id3Track) == null ? void 0 : _this$id3Track.cues; + if (cues) { + for (var i = cues.length; i--;) { + var cue = cues[i]; + if (cue.type === type && cue.startTime < startTime && cue.endTime === MAX_CUE_ENDTIME) { + cue.endTime = startTime; + } + } + } + }; + _proto.onBufferFlushing = function onBufferFlushing(event, _ref) { + var startOffset = _ref.startOffset, + endOffset = _ref.endOffset, + type = _ref.type; + var id3Track = this.id3Track, + hls = this.hls; + if (!hls) { + return; + } + var _hls$config = hls.config, + enableEmsgMetadataCues = _hls$config.enableEmsgMetadataCues, + enableID3MetadataCues = _hls$config.enableID3MetadataCues; + if (id3Track && (enableEmsgMetadataCues || enableID3MetadataCues)) { + var predicate; + if (type === 'audio') { + predicate = function predicate(cue) { + return cue.type === MetadataSchema.audioId3 && enableID3MetadataCues; + }; + } else if (type === 'video') { + predicate = function predicate(cue) { + return cue.type === MetadataSchema.emsg && enableEmsgMetadataCues; + }; + } else { + predicate = function predicate(cue) { + return cue.type === MetadataSchema.audioId3 && enableID3MetadataCues || cue.type === MetadataSchema.emsg && enableEmsgMetadataCues; + }; + } + removeCuesInRange(id3Track, startOffset, endOffset, predicate); + } + }; + _proto.onLevelUpdated = function onLevelUpdated(event, _ref2) { + var details = _ref2.details; + this.updateDateRangeCues(details, true); + }; + _proto.onLevelPtsUpdated = function onLevelPtsUpdated(event, data) { + if (Math.abs(data.drift) > 0.01) { + this.updateDateRangeCues(data.details); + } + }; + _proto.updateDateRangeCues = function updateDateRangeCues(details, removeOldCues) { + var _this = this; + if (!this.media || !details.hasProgramDateTime || !this.hls.config.enableDateRangeMetadataCues) { + return; + } + var dateRangeCuesAppended = this.dateRangeCuesAppended, + id3Track = this.id3Track; + var dateRanges = details.dateRanges; + var ids = Object.keys(dateRanges); + // Remove cues from track not found in details.dateRanges + if (id3Track && removeOldCues) { + var idsToRemove = Object.keys(dateRangeCuesAppended).filter(function (id) { + return !ids.includes(id); + }); + var _loop = function _loop() { + var id = idsToRemove[i]; + Object.keys(dateRangeCuesAppended[id].cues).forEach(function (key) { + id3Track.removeCue(dateRangeCuesAppended[id].cues[key]); + }); + delete dateRangeCuesAppended[id]; + }; + for (var i = idsToRemove.length; i--;) { + _loop(); + } + } + // Exit if the playlist does not have Date Ranges or does not have Program Date Time + var lastFragment = details.fragments[details.fragments.length - 1]; + if (ids.length === 0 || !isFiniteNumber(lastFragment == null ? void 0 : lastFragment.programDateTime)) { + return; + } + if (!this.id3Track) { + this.id3Track = this.createTrack(this.media); + } + var Cue = getCueClass(); + var _loop2 = function _loop2() { + var id = ids[_i]; + var dateRange = dateRanges[id]; + var startTime = dateRange.startTime; + + // Process DateRanges to determine end-time (known DURATION, END-DATE, or END-ON-NEXT) + var appendedDateRangeCues = dateRangeCuesAppended[id]; + var cues = (appendedDateRangeCues == null ? void 0 : appendedDateRangeCues.cues) || {}; + var durationKnown = (appendedDateRangeCues == null ? void 0 : appendedDateRangeCues.durationKnown) || false; + var endTime = MAX_CUE_ENDTIME; + var duration = dateRange.duration, + endDate = dateRange.endDate; + if (endDate && duration !== null) { + endTime = startTime + duration; + durationKnown = true; + } else if (dateRange.endOnNext && !durationKnown) { + var nextDateRangeWithSameClass = ids.reduce(function (candidateDateRange, id) { + if (id !== dateRange.id) { + var otherDateRange = dateRanges[id]; + if (otherDateRange.class === dateRange.class && otherDateRange.startDate > dateRange.startDate && (!candidateDateRange || dateRange.startDate < candidateDateRange.startDate)) { + return otherDateRange; + } + } + return candidateDateRange; + }, null); + if (nextDateRangeWithSameClass) { + endTime = nextDateRangeWithSameClass.startTime; + durationKnown = true; + } + } + + // Create TextTrack Cues for each MetadataGroup Item (select DateRange attribute) + // This is to emulate Safari HLS playback handling of DateRange tags + var attributes = Object.keys(dateRange.attr); + for (var j = 0; j < attributes.length; j++) { + var key = attributes[j]; + if (!isDateRangeCueAttribute(key)) { + continue; + } + var cue = cues[key]; + if (cue) { + if (durationKnown && !appendedDateRangeCues.durationKnown) { + cue.endTime = endTime; + } else if (Math.abs(cue.startTime - startTime) > 0.01) { + cue.startTime = startTime; + cue.endTime = endTime; + } + } else if (Cue) { + var data = dateRange.attr[key]; + if (isSCTE35Attribute(key)) { + data = hexToArrayBuffer(data); + } + var _cue = createCueWithDataFields(Cue, startTime, endTime, { + key: key, + data: data + }, MetadataSchema.dateRange); + if (_cue) { + _cue.id = id; + _this.id3Track.addCue(_cue); + cues[key] = _cue; + } + } + } + + // Keep track of processed DateRanges by ID for updating cues with new DateRange tag attributes + dateRangeCuesAppended[id] = { + cues: cues, + dateRange: dateRange, + durationKnown: durationKnown + }; + }; + for (var _i = 0; _i < ids.length; _i++) { + _loop2(); + } + }; + return ID3TrackController; + }(); + + var LatencyController = /*#__PURE__*/function () { + function LatencyController(hls) { + var _this = this; + this.hls = void 0; + this.config = void 0; + this.media = null; + this.levelDetails = null; + this.currentTime = 0; + this.stallCount = 0; + this._latency = null; + this._targetLatencyUpdated = false; + this.onTimeupdate = function () { + var media = _this.media, + levelDetails = _this.levelDetails; + if (!media || !levelDetails) { + return; + } + _this.currentTime = media.currentTime; + var latency = _this.computeLatency(); + if (latency === null) { + return; + } + _this._latency = latency; + + // Adapt playbackRate to meet target latency in low-latency mode + var _this$config = _this.config, + lowLatencyMode = _this$config.lowLatencyMode, + maxLiveSyncPlaybackRate = _this$config.maxLiveSyncPlaybackRate; + if (!lowLatencyMode || maxLiveSyncPlaybackRate === 1 || !levelDetails.live) { + return; + } + var targetLatency = _this.targetLatency; + if (targetLatency === null) { + return; + } + var distanceFromTarget = latency - targetLatency; + // Only adjust playbackRate when within one target duration of targetLatency + // and more than one second from under-buffering. + // Playback further than one target duration from target can be considered DVR playback. + var liveMinLatencyDuration = Math.min(_this.maxLatency, targetLatency + levelDetails.targetduration); + var inLiveRange = distanceFromTarget < liveMinLatencyDuration; + if (inLiveRange && distanceFromTarget > 0.05 && _this.forwardBufferLength > 1) { + var max = Math.min(2, Math.max(1.0, maxLiveSyncPlaybackRate)); + var rate = Math.round(2 / (1 + Math.exp(-0.75 * distanceFromTarget - _this.edgeStalled)) * 20) / 20; + media.playbackRate = Math.min(max, Math.max(1, rate)); + } else if (media.playbackRate !== 1 && media.playbackRate !== 0) { + media.playbackRate = 1; + } + }; + this.hls = hls; + this.config = hls.config; + this.registerListeners(); + } + var _proto = LatencyController.prototype; + _proto.destroy = function destroy() { + this.unregisterListeners(); + this.onMediaDetaching(); + this.levelDetails = null; + // @ts-ignore + this.hls = null; + }; + _proto.registerListeners = function registerListeners() { + this.hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this); + this.hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + this.hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this); + this.hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this); + this.hls.on(Events.ERROR, this.onError, this); + }; + _proto.unregisterListeners = function unregisterListeners() { + this.hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this); + this.hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + this.hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this); + this.hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this); + this.hls.off(Events.ERROR, this.onError, this); + }; + _proto.onMediaAttached = function onMediaAttached(event, data) { + this.media = data.media; + this.media.addEventListener('timeupdate', this.onTimeupdate); + }; + _proto.onMediaDetaching = function onMediaDetaching() { + if (this.media) { + this.media.removeEventListener('timeupdate', this.onTimeupdate); + this.media = null; + } + }; + _proto.onManifestLoading = function onManifestLoading() { + this.levelDetails = null; + this._latency = null; + this.stallCount = 0; + }; + _proto.onLevelUpdated = function onLevelUpdated(event, _ref) { + var details = _ref.details; + this.levelDetails = details; + if (details.advanced) { + this.onTimeupdate(); + } + if (!details.live && this.media) { + this.media.removeEventListener('timeupdate', this.onTimeupdate); + } + }; + _proto.onError = function onError(event, data) { + var _this$levelDetails; + if (data.details !== ErrorDetails.BUFFER_STALLED_ERROR) { + return; + } + this.stallCount++; + if ((_this$levelDetails = this.levelDetails) != null && _this$levelDetails.live) { + this.hls.logger.warn('[latency-controller]: Stall detected, adjusting target latency'); + } + }; + _proto.estimateLiveEdge = function estimateLiveEdge() { + var levelDetails = this.levelDetails; + if (levelDetails === null) { + return null; + } + return levelDetails.edge + levelDetails.age; + }; + _proto.computeLatency = function computeLatency() { + var liveEdge = this.estimateLiveEdge(); + if (liveEdge === null) { + return null; + } + return liveEdge - this.currentTime; + }; + return _createClass(LatencyController, [{ + key: "latency", + get: function get() { + return this._latency || 0; + } + }, { + key: "maxLatency", + get: function get() { + var config = this.config, + levelDetails = this.levelDetails; + if (config.liveMaxLatencyDuration !== undefined) { + return config.liveMaxLatencyDuration; + } + return levelDetails ? config.liveMaxLatencyDurationCount * levelDetails.targetduration : 0; + } + }, { + key: "targetLatency", + get: function get() { + var levelDetails = this.levelDetails; + if (levelDetails === null) { + return null; + } + var holdBack = levelDetails.holdBack, + partHoldBack = levelDetails.partHoldBack, + targetduration = levelDetails.targetduration; + var _this$config2 = this.config, + liveSyncDuration = _this$config2.liveSyncDuration, + liveSyncDurationCount = _this$config2.liveSyncDurationCount, + lowLatencyMode = _this$config2.lowLatencyMode; + var userConfig = this.hls.userConfig; + var targetLatency = lowLatencyMode ? partHoldBack || holdBack : holdBack; + if (this._targetLatencyUpdated || userConfig.liveSyncDuration || userConfig.liveSyncDurationCount || targetLatency === 0) { + targetLatency = liveSyncDuration !== undefined ? liveSyncDuration : liveSyncDurationCount * targetduration; + } + var maxLiveSyncOnStallIncrease = targetduration; + return targetLatency + Math.min(this.stallCount * this.config.liveSyncOnStallIncrease, maxLiveSyncOnStallIncrease); + }, + set: function set(latency) { + this.stallCount = 0; + this.config.liveSyncDuration = latency; + this._targetLatencyUpdated = true; + } + }, { + key: "liveSyncPosition", + get: function get() { + var liveEdge = this.estimateLiveEdge(); + var targetLatency = this.targetLatency; + var levelDetails = this.levelDetails; + if (liveEdge === null || targetLatency === null || levelDetails === null) { + return null; + } + var edge = levelDetails.edge; + var syncPosition = liveEdge - targetLatency - this.edgeStalled; + var min = edge - levelDetails.totalduration; + var max = edge - (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration); + return Math.min(Math.max(min, syncPosition), max); + } + }, { + key: "drift", + get: function get() { + var levelDetails = this.levelDetails; + if (levelDetails === null) { + return 1; + } + return levelDetails.drift; + } + }, { + key: "edgeStalled", + get: function get() { + var levelDetails = this.levelDetails; + if (levelDetails === null) { + return 0; + } + var maxLevelUpdateAge = (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration) * 3; + return Math.max(levelDetails.age - maxLevelUpdateAge, 0); + } + }, { + key: "forwardBufferLength", + get: function get() { + var media = this.media, + levelDetails = this.levelDetails; + if (!media || !levelDetails) { + return 0; + } + var bufferedRanges = media.buffered.length; + return (bufferedRanges ? media.buffered.end(bufferedRanges - 1) : levelDetails.edge) - this.currentTime; + } + }]); + }(); + + var HdcpLevels = ['NONE', 'TYPE-0', 'TYPE-1', null]; + function isHdcpLevel(value) { + return HdcpLevels.indexOf(value) > -1; + } + var VideoRangeValues = ['SDR', 'PQ', 'HLG']; + function isVideoRange(value) { + return !!value && VideoRangeValues.indexOf(value) > -1; + } + var HlsSkip = { + No: "", + Yes: "YES", + v2: "v2" + }; + function getSkipValue(details) { + var canSkipUntil = details.canSkipUntil, + canSkipDateRanges = details.canSkipDateRanges, + age = details.age; + // A Client SHOULD NOT request a Playlist Delta Update unless it already + // has a version of the Playlist that is no older than one-half of the Skip Boundary. + // @see: https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-6.3.7 + var playlistRecentEnough = age < canSkipUntil / 2; + if (canSkipUntil && playlistRecentEnough) { + if (canSkipDateRanges) { + return HlsSkip.v2; + } + return HlsSkip.Yes; + } + return HlsSkip.No; + } + var HlsUrlParameters = /*#__PURE__*/function () { + function HlsUrlParameters(msn, part, skip) { + this.msn = void 0; + this.part = void 0; + this.skip = void 0; + this.msn = msn; + this.part = part; + this.skip = skip; + } + var _proto = HlsUrlParameters.prototype; + _proto.addDirectives = function addDirectives(uri) { + var url = new self.URL(uri); + if (this.msn !== undefined) { + url.searchParams.set('_HLS_msn', this.msn.toString()); + } + if (this.part !== undefined) { + url.searchParams.set('_HLS_part', this.part.toString()); + } + if (this.skip) { + url.searchParams.set('_HLS_skip', this.skip); + } + return url.href; + }; + return HlsUrlParameters; + }(); + var Level = /*#__PURE__*/function () { + function Level(data) { + this._attrs = void 0; + this.audioCodec = void 0; + this.bitrate = void 0; + this.codecSet = void 0; + this.url = void 0; + this.frameRate = void 0; + this.height = void 0; + this.id = void 0; + this.name = void 0; + this.videoCodec = void 0; + this.width = void 0; + this.details = void 0; + this.fragmentError = 0; + this.loadError = 0; + this.loaded = void 0; + this.realBitrate = 0; + this.supportedPromise = void 0; + this.supportedResult = void 0; + this._avgBitrate = 0; + this._audioGroups = void 0; + this._subtitleGroups = void 0; + // Deprecated (retained for backwards compatibility) + this._urlId = 0; + this.url = [data.url]; + this._attrs = [data.attrs]; + this.bitrate = data.bitrate; + if (data.details) { + this.details = data.details; + } + this.id = data.id || 0; + this.name = data.name; + this.width = data.width || 0; + this.height = data.height || 0; + this.frameRate = data.attrs.optionalFloat('FRAME-RATE', 0); + this._avgBitrate = data.attrs.decimalInteger('AVERAGE-BANDWIDTH'); + this.audioCodec = data.audioCodec; + this.videoCodec = data.videoCodec; + this.codecSet = [data.videoCodec, data.audioCodec].filter(function (c) { + return !!c; + }).map(function (s) { + return s.substring(0, 4); + }).join(','); + this.addGroupId('audio', data.attrs.AUDIO); + this.addGroupId('text', data.attrs.SUBTITLES); + } + var _proto2 = Level.prototype; + _proto2.hasAudioGroup = function hasAudioGroup(groupId) { + return hasGroup(this._audioGroups, groupId); + }; + _proto2.hasSubtitleGroup = function hasSubtitleGroup(groupId) { + return hasGroup(this._subtitleGroups, groupId); + }; + _proto2.addGroupId = function addGroupId(type, groupId) { + if (!groupId) { + return; + } + if (type === 'audio') { + var audioGroups = this._audioGroups; + if (!audioGroups) { + audioGroups = this._audioGroups = []; + } + if (audioGroups.indexOf(groupId) === -1) { + audioGroups.push(groupId); + } + } else if (type === 'text') { + var subtitleGroups = this._subtitleGroups; + if (!subtitleGroups) { + subtitleGroups = this._subtitleGroups = []; + } + if (subtitleGroups.indexOf(groupId) === -1) { + subtitleGroups.push(groupId); + } + } + } + + // Deprecated methods (retained for backwards compatibility) + ; + _proto2.addFallback = function addFallback() {}; + return _createClass(Level, [{ + key: "maxBitrate", + get: function get() { + return Math.max(this.realBitrate, this.bitrate); + } + }, { + key: "averageBitrate", + get: function get() { + return this._avgBitrate || this.realBitrate || this.bitrate; + } + }, { + key: "attrs", + get: function get() { + return this._attrs[0]; + } + }, { + key: "codecs", + get: function get() { + return this.attrs.CODECS || ''; + } + }, { + key: "pathwayId", + get: function get() { + return this.attrs['PATHWAY-ID'] || '.'; + } + }, { + key: "videoRange", + get: function get() { + return this.attrs['VIDEO-RANGE'] || 'SDR'; + } + }, { + key: "score", + get: function get() { + return this.attrs.optionalFloat('SCORE', 0); + } + }, { + key: "uri", + get: function get() { + return this.url[0] || ''; + } + }, { + key: "audioGroups", + get: function get() { + return this._audioGroups; + } + }, { + key: "subtitleGroups", + get: function get() { + return this._subtitleGroups; + } + }, { + key: "urlId", + get: function get() { + return 0; + }, + set: function set(value) {} + }, { + key: "audioGroupIds", + get: function get() { + return this.audioGroups ? [this.audioGroupId] : undefined; + } + }, { + key: "textGroupIds", + get: function get() { + return this.subtitleGroups ? [this.textGroupId] : undefined; + } + }, { + key: "audioGroupId", + get: function get() { + var _this$audioGroups; + return (_this$audioGroups = this.audioGroups) == null ? void 0 : _this$audioGroups[0]; + } + }, { + key: "textGroupId", + get: function get() { + var _this$subtitleGroups; + return (_this$subtitleGroups = this.subtitleGroups) == null ? void 0 : _this$subtitleGroups[0]; + } + }]); + }(); + function hasGroup(groups, groupId) { + if (!groupId || !groups) { + return false; + } + return groups.indexOf(groupId) !== -1; + } + + function updateFromToPTS(fragFrom, fragTo) { + var fragToPTS = fragTo.startPTS; + // if we know startPTS[toIdx] + if (isFiniteNumber(fragToPTS)) { + // update fragment duration. + // it helps to fix drifts between playlist reported duration and fragment real duration + var duration = 0; + var frag; + if (fragTo.sn > fragFrom.sn) { + duration = fragToPTS - fragFrom.start; + frag = fragFrom; + } else { + duration = fragFrom.start - fragToPTS; + frag = fragTo; + } + if (frag.duration !== duration) { + frag.duration = duration; + } + // we dont know startPTS[toIdx] + } else if (fragTo.sn > fragFrom.sn) { + var contiguous = fragFrom.cc === fragTo.cc; + // TODO: With part-loading end/durations we need to confirm the whole fragment is loaded before using (or setting) minEndPTS + if (contiguous && fragFrom.minEndPTS) { + fragTo.start = fragFrom.start + (fragFrom.minEndPTS - fragFrom.start); + } else { + fragTo.start = fragFrom.start + fragFrom.duration; + } + } else { + fragTo.start = Math.max(fragFrom.start - fragTo.duration, 0); + } + } + function updateFragPTSDTS(details, frag, startPTS, endPTS, startDTS, endDTS) { + var parsedMediaDuration = endPTS - startPTS; + if (parsedMediaDuration <= 0) { + logger.warn('Fragment should have a positive duration', frag); + endPTS = startPTS + frag.duration; + endDTS = startDTS + frag.duration; + } + var maxStartPTS = startPTS; + var minEndPTS = endPTS; + var fragStartPts = frag.startPTS; + var fragEndPts = frag.endPTS; + if (isFiniteNumber(fragStartPts)) { + // delta PTS between audio and video + var deltaPTS = Math.abs(fragStartPts - startPTS); + if (!isFiniteNumber(frag.deltaPTS)) { + frag.deltaPTS = deltaPTS; + } else { + frag.deltaPTS = Math.max(deltaPTS, frag.deltaPTS); + } + maxStartPTS = Math.max(startPTS, fragStartPts); + startPTS = Math.min(startPTS, fragStartPts); + startDTS = Math.min(startDTS, frag.startDTS); + minEndPTS = Math.min(endPTS, fragEndPts); + endPTS = Math.max(endPTS, fragEndPts); + endDTS = Math.max(endDTS, frag.endDTS); + } + var drift = startPTS - frag.start; + if (frag.start !== 0) { + frag.start = startPTS; + } + frag.duration = endPTS - frag.start; + frag.startPTS = startPTS; + frag.maxStartPTS = maxStartPTS; + frag.startDTS = startDTS; + frag.endPTS = endPTS; + frag.minEndPTS = minEndPTS; + frag.endDTS = endDTS; + var sn = frag.sn; + // exit if sn out of range + if (!details || sn < details.startSN || sn > details.endSN) { + return 0; + } + var i; + var fragIdx = sn - details.startSN; + var fragments = details.fragments; + // update frag reference in fragments array + // rationale is that fragments array might not contain this frag object. + // this will happen if playlist has been refreshed between frag loading and call to updateFragPTSDTS() + // if we don't update frag, we won't be able to propagate PTS info on the playlist + // resulting in invalid sliding computation + fragments[fragIdx] = frag; + // adjust fragment PTS/duration from seqnum-1 to frag 0 + for (i = fragIdx; i > 0; i--) { + updateFromToPTS(fragments[i], fragments[i - 1]); + } + + // adjust fragment PTS/duration from seqnum to last frag + for (i = fragIdx; i < fragments.length - 1; i++) { + updateFromToPTS(fragments[i], fragments[i + 1]); + } + if (details.fragmentHint) { + updateFromToPTS(fragments[fragments.length - 1], details.fragmentHint); + } + details.PTSKnown = details.alignedSliding = true; + return drift; + } + function mergeDetails(oldDetails, newDetails) { + // Track the last initSegment processed. Initialize it to the last one on the timeline. + var currentInitSegment = null; + var oldFragments = oldDetails.fragments; + for (var i = oldFragments.length - 1; i >= 0; i--) { + var oldInit = oldFragments[i].initSegment; + if (oldInit) { + currentInitSegment = oldInit; + break; + } + } + if (oldDetails.fragmentHint) { + // prevent PTS and duration from being adjusted on the next hint + delete oldDetails.fragmentHint.endPTS; + } + // check if old/new playlists have fragments in common + // loop through overlapping SN and update startPTS , cc, and duration if any found + var ccOffset = 0; + var PTSFrag; + mapFragmentIntersection(oldDetails, newDetails, function (oldFrag, newFrag) { + if (oldFrag.relurl) { + // Do not compare CC if the old fragment has no url. This is a level.fragmentHint used by LL-HLS parts. + // It maybe be off by 1 if it was created before any parts or discontinuity tags were appended to the end + // of the playlist. + ccOffset = oldFrag.cc - newFrag.cc; + } + if (isFiniteNumber(oldFrag.startPTS) && isFiniteNumber(oldFrag.endPTS)) { + newFrag.start = newFrag.startPTS = oldFrag.startPTS; + newFrag.startDTS = oldFrag.startDTS; + newFrag.maxStartPTS = oldFrag.maxStartPTS; + newFrag.endPTS = oldFrag.endPTS; + newFrag.endDTS = oldFrag.endDTS; + newFrag.minEndPTS = oldFrag.minEndPTS; + newFrag.duration = oldFrag.endPTS - oldFrag.startPTS; + if (newFrag.duration) { + PTSFrag = newFrag; + } + + // PTS is known when any segment has startPTS and endPTS + newDetails.PTSKnown = newDetails.alignedSliding = true; + } + newFrag.elementaryStreams = oldFrag.elementaryStreams; + newFrag.loader = oldFrag.loader; + newFrag.stats = oldFrag.stats; + if (oldFrag.initSegment) { + newFrag.initSegment = oldFrag.initSegment; + currentInitSegment = oldFrag.initSegment; + } + }); + var fragmentsToCheck = newDetails.fragmentHint ? newDetails.fragments.concat(newDetails.fragmentHint) : newDetails.fragments; + if (currentInitSegment) { + fragmentsToCheck.forEach(function (frag) { + var _currentInitSegment; + if (frag && (!frag.initSegment || frag.initSegment.relurl === ((_currentInitSegment = currentInitSegment) == null ? void 0 : _currentInitSegment.relurl))) { + frag.initSegment = currentInitSegment; + } + }); + } + if (newDetails.skippedSegments) { + newDetails.deltaUpdateFailed = newDetails.fragments.some(function (frag) { + return !frag; + }); + if (newDetails.deltaUpdateFailed) { + logger.warn('[level-helper] Previous playlist missing segments skipped in delta playlist'); + for (var _i = newDetails.skippedSegments; _i--;) { + newDetails.fragments.shift(); + } + newDetails.startSN = newDetails.fragments[0].sn; + newDetails.startCC = newDetails.fragments[0].cc; + } else { + if (newDetails.canSkipDateRanges) { + newDetails.dateRanges = mergeDateRanges(oldDetails.dateRanges, newDetails); + } + var programDateTimes = oldDetails.fragments.filter(function (frag) { + return frag.rawProgramDateTime; + }); + if (oldDetails.hasProgramDateTime && !newDetails.hasProgramDateTime) { + for (var _i2 = 1; _i2 < fragmentsToCheck.length; _i2++) { + if (fragmentsToCheck[_i2].programDateTime === null) { + assignProgramDateTime(fragmentsToCheck[_i2], fragmentsToCheck[_i2 - 1], programDateTimes); + } + } + } + mapDateRanges(programDateTimes, newDetails); + } + } + var newFragments = newDetails.fragments; + if (ccOffset) { + logger.warn('discontinuity sliding from playlist, take drift into account'); + for (var _i3 = 0; _i3 < newFragments.length; _i3++) { + newFragments[_i3].cc += ccOffset; + } + } + if (newDetails.skippedSegments) { + newDetails.startCC = newDetails.fragments[0].cc; + } + + // Merge parts + mapPartIntersection(oldDetails.partList, newDetails.partList, function (oldPart, newPart) { + newPart.elementaryStreams = oldPart.elementaryStreams; + newPart.stats = oldPart.stats; + }); + + // if at least one fragment contains PTS info, recompute PTS information for all fragments + if (PTSFrag) { + updateFragPTSDTS(newDetails, PTSFrag, PTSFrag.startPTS, PTSFrag.endPTS, PTSFrag.startDTS, PTSFrag.endDTS); + } else { + // ensure that delta is within oldFragments range + // also adjust sliding in case delta is 0 (we could have old=[50-60] and new=old=[50-61]) + // in that case we also need to adjust start offset of all fragments + adjustSliding(oldDetails, newDetails); + } + if (newFragments.length) { + newDetails.totalduration = newDetails.edge - newFragments[0].start; + } + newDetails.driftStartTime = oldDetails.driftStartTime; + newDetails.driftStart = oldDetails.driftStart; + var advancedDateTime = newDetails.advancedDateTime; + if (newDetails.advanced && advancedDateTime) { + var edge = newDetails.edge; + if (!newDetails.driftStart) { + newDetails.driftStartTime = advancedDateTime; + newDetails.driftStart = edge; + } + newDetails.driftEndTime = advancedDateTime; + newDetails.driftEnd = edge; + } else { + newDetails.driftEndTime = oldDetails.driftEndTime; + newDetails.driftEnd = oldDetails.driftEnd; + newDetails.advancedDateTime = oldDetails.advancedDateTime; + } + } + function mergeDateRanges(oldDateRanges, newDetails) { + var deltaDateRanges = newDetails.dateRanges, + recentlyRemovedDateranges = newDetails.recentlyRemovedDateranges; + var dateRanges = _extends({}, oldDateRanges); + if (recentlyRemovedDateranges) { + recentlyRemovedDateranges.forEach(function (id) { + delete dateRanges[id]; + }); + } + var mergeIds = Object.keys(dateRanges); + var mergeCount = mergeIds.length; + if (mergeCount) { + Object.keys(deltaDateRanges).forEach(function (id) { + var mergedDateRange = dateRanges[id]; + var dateRange = new DateRange(deltaDateRanges[id].attr, mergedDateRange); + if (dateRange.isValid) { + dateRanges[id] = dateRange; + if (!mergedDateRange) { + dateRange.tagOrder += mergeCount; + } + } else { + logger.warn("Ignoring invalid Playlist Delta Update DATERANGE tag: \"" + JSON.stringify(deltaDateRanges[id].attr) + "\""); + } + }); + } + return dateRanges; + } + function mapPartIntersection(oldParts, newParts, intersectionFn) { + if (oldParts && newParts) { + var delta = 0; + for (var i = 0, len = oldParts.length; i <= len; i++) { + var _oldPart = oldParts[i]; + var _newPart = newParts[i + delta]; + if (_oldPart && _newPart && _oldPart.index === _newPart.index && _oldPart.fragment.sn === _newPart.fragment.sn) { + intersectionFn(_oldPart, _newPart); + } else { + delta--; + } + } + } + } + function mapFragmentIntersection(oldDetails, newDetails, intersectionFn) { + var skippedSegments = newDetails.skippedSegments; + var start = Math.max(oldDetails.startSN, newDetails.startSN) - newDetails.startSN; + var end = (oldDetails.fragmentHint ? 1 : 0) + (skippedSegments ? newDetails.endSN : Math.min(oldDetails.endSN, newDetails.endSN)) - newDetails.startSN; + var delta = newDetails.startSN - oldDetails.startSN; + var newFrags = newDetails.fragmentHint ? newDetails.fragments.concat(newDetails.fragmentHint) : newDetails.fragments; + var oldFrags = oldDetails.fragmentHint ? oldDetails.fragments.concat(oldDetails.fragmentHint) : oldDetails.fragments; + for (var i = start; i <= end; i++) { + var _oldFrag = oldFrags[delta + i]; + var _newFrag = newFrags[i]; + if (skippedSegments && !_newFrag && _oldFrag) { + // Fill in skipped segments in delta playlist + _newFrag = newDetails.fragments[i] = _oldFrag; + } + if (_oldFrag && _newFrag) { + intersectionFn(_oldFrag, _newFrag); + } + } + } + function adjustSliding(oldDetails, newDetails) { + var delta = newDetails.startSN + newDetails.skippedSegments - oldDetails.startSN; + var oldFragments = oldDetails.fragments; + if (delta < 0 || delta >= oldFragments.length) { + return; + } + addSliding(newDetails, oldFragments[delta].start); + } + function addSliding(details, start) { + if (start) { + var fragments = details.fragments; + for (var i = details.skippedSegments; i < fragments.length; i++) { + fragments[i].start += start; + } + if (details.fragmentHint) { + details.fragmentHint.start += start; + } + } + } + function computeReloadInterval(newDetails, distanceToLiveEdgeMs) { + if (distanceToLiveEdgeMs === void 0) { + distanceToLiveEdgeMs = Infinity; + } + var reloadInterval = 1000 * newDetails.targetduration; + if (newDetails.updated) { + // Use last segment duration when shorter than target duration and near live edge + var fragments = newDetails.fragments; + var liveEdgeMaxTargetDurations = 4; + if (fragments.length && reloadInterval * liveEdgeMaxTargetDurations > distanceToLiveEdgeMs) { + var lastSegmentDuration = fragments[fragments.length - 1].duration * 1000; + if (lastSegmentDuration < reloadInterval) { + reloadInterval = lastSegmentDuration; + } + } + } else { + // estimate = 'miss half average'; + // follow HLS Spec, If the client reloads a Playlist file and finds that it has not + // changed then it MUST wait for a period of one-half the target + // duration before retrying. + reloadInterval /= 2; + } + return Math.round(reloadInterval); + } + function getFragmentWithSN(details, sn, fragCurrent) { + if (!details) { + return null; + } + var fragment = details.fragments[sn - details.startSN]; + if (fragment) { + return fragment; + } + fragment = details.fragmentHint; + if (fragment && fragment.sn === sn) { + return fragment; + } + if (sn < details.startSN && fragCurrent && fragCurrent.sn === sn) { + return fragCurrent; + } + return null; + } + function getPartWith(details, sn, partIndex) { + if (!details) { + return null; + } + return findPart(details.partList, sn, partIndex); + } + function findPart(partList, sn, partIndex) { + if (partList) { + for (var i = partList.length; i--;) { + var part = partList[i]; + if (part.index === partIndex && part.fragment.sn === sn) { + return part; + } + } + } + return null; + } + function reassignFragmentLevelIndexes(levels) { + levels.forEach(function (level, index) { + var details = level.details; + if (details != null && details.fragments) { + details.fragments.forEach(function (fragment) { + fragment.level = index; + }); + } + }); + } + + function isTimeoutError(error) { + switch (error.details) { + case ErrorDetails.FRAG_LOAD_TIMEOUT: + case ErrorDetails.KEY_LOAD_TIMEOUT: + case ErrorDetails.LEVEL_LOAD_TIMEOUT: + case ErrorDetails.MANIFEST_LOAD_TIMEOUT: + return true; + } + return false; + } + function getRetryConfig(loadPolicy, error) { + var isTimeout = isTimeoutError(error); + return loadPolicy.default[(isTimeout ? 'timeout' : 'error') + "Retry"]; + } + function getRetryDelay(retryConfig, retryCount) { + // exponential backoff capped to max retry delay + var backoffFactor = retryConfig.backoff === 'linear' ? 1 : Math.pow(2, retryCount); + return Math.min(backoffFactor * retryConfig.retryDelayMs, retryConfig.maxRetryDelayMs); + } + function getLoaderConfigWithoutReties(loderConfig) { + return _objectSpread2(_objectSpread2({}, loderConfig), { + errorRetry: null, + timeoutRetry: null + }); + } + function shouldRetry(retryConfig, retryCount, isTimeout, loaderResponse) { + if (!retryConfig) { + return false; + } + var httpStatus = loaderResponse == null ? void 0 : loaderResponse.code; + var retry = retryCount < retryConfig.maxNumRetry && (retryForHttpStatus(httpStatus) || !!isTimeout); + return retryConfig.shouldRetry ? retryConfig.shouldRetry(retryConfig, retryCount, isTimeout, loaderResponse, retry) : retry; + } + function retryForHttpStatus(httpStatus) { + // Do not retry on status 4xx, status 0 (CORS error), or undefined (decrypt/gap/parse error) + return httpStatus === 0 && navigator.onLine === false || !!httpStatus && (httpStatus < 400 || httpStatus > 499); + } + + var BinarySearch = { + /** + * Searches for an item in an array which matches a certain condition. + * This requires the condition to only match one item in the array, + * and for the array to be ordered. + * + * @param list The array to search. + * @param comparisonFn + * Called and provided a candidate item as the first argument. + * Should return: + * > -1 if the item should be located at a lower index than the provided item. + * > 1 if the item should be located at a higher index than the provided item. + * > 0 if the item is the item you're looking for. + * + * @returns the object if found, otherwise returns null + */ + search: function search(list, comparisonFn) { + var minIndex = 0; + var maxIndex = list.length - 1; + var currentIndex = null; + var currentElement = null; + while (minIndex <= maxIndex) { + currentIndex = (minIndex + maxIndex) / 2 | 0; + currentElement = list[currentIndex]; + var comparisonResult = comparisonFn(currentElement); + if (comparisonResult > 0) { + minIndex = currentIndex + 1; + } else if (comparisonResult < 0) { + maxIndex = currentIndex - 1; + } else { + return currentElement; + } + } + return null; + } + }; + + /** + * Returns first fragment whose endPdt value exceeds the given PDT, or null. + * @param fragments - The array of candidate fragments + * @param PDTValue - The PDT value which must be exceeded + * @param maxFragLookUpTolerance - The amount of time that a fragment's start/end can be within in order to be considered contiguous + */ + function findFragmentByPDT(fragments, PDTValue, maxFragLookUpTolerance) { + if (PDTValue === null || !Array.isArray(fragments) || !fragments.length || !isFiniteNumber(PDTValue)) { + return null; + } + + // if less than start + var startPDT = fragments[0].programDateTime; + if (PDTValue < (startPDT || 0)) { + return null; + } + var endPDT = fragments[fragments.length - 1].endProgramDateTime; + if (PDTValue >= (endPDT || 0)) { + return null; + } + maxFragLookUpTolerance = maxFragLookUpTolerance || 0; + for (var seg = 0; seg < fragments.length; ++seg) { + var frag = fragments[seg]; + if (pdtWithinToleranceTest(PDTValue, maxFragLookUpTolerance, frag)) { + return frag; + } + } + return null; + } + + /** + * Finds a fragment based on the SN of the previous fragment; or based on the needs of the current buffer. + * This method compensates for small buffer gaps by applying a tolerance to the start of any candidate fragment, thus + * breaking any traps which would cause the same fragment to be continuously selected within a small range. + * @param fragPrevious - The last frag successfully appended + * @param fragments - The array of candidate fragments + * @param bufferEnd - The end of the contiguous buffered range the playhead is currently within + * @param maxFragLookUpTolerance - The amount of time that a fragment's start/end can be within in order to be considered contiguous + * @returns a matching fragment or null + */ + function findFragmentByPTS(fragPrevious, fragments, bufferEnd, maxFragLookUpTolerance, nextFragLookupTolerance) { + if (bufferEnd === void 0) { + bufferEnd = 0; + } + if (maxFragLookUpTolerance === void 0) { + maxFragLookUpTolerance = 0; + } + if (nextFragLookupTolerance === void 0) { + nextFragLookupTolerance = 0.005; + } + var fragNext = null; + if (fragPrevious) { + fragNext = fragments[1 + fragPrevious.sn - fragments[0].sn] || null; + // check for buffer-end rounding error + var bufferEdgeError = fragPrevious.endDTS - bufferEnd; + if (bufferEdgeError > 0 && bufferEdgeError < 0.0000015) { + bufferEnd += 0.0000015; + } + if (fragNext && fragPrevious.level !== fragNext.level && fragNext.end <= fragPrevious.end) { + fragNext = fragments[2 + fragPrevious.sn - fragments[0].sn] || null; + } + } else if (bufferEnd === 0 && fragments[0].start === 0) { + fragNext = fragments[0]; + } + // Prefer the next fragment if it's within tolerance + if (fragNext && ((!fragPrevious || fragPrevious.level === fragNext.level) && fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, fragNext) === 0 || fragmentWithinFastStartSwitch(fragNext, fragPrevious, Math.min(nextFragLookupTolerance, maxFragLookUpTolerance)))) { + return fragNext; + } + // We might be seeking past the tolerance so find the best match + var foundFragment = BinarySearch.search(fragments, fragmentWithinToleranceTest.bind(null, bufferEnd, maxFragLookUpTolerance)); + if (foundFragment && (foundFragment !== fragPrevious || !fragNext)) { + return foundFragment; + } + // If no match was found return the next fragment after fragPrevious, or null + return fragNext; + } + function fragmentWithinFastStartSwitch(fragNext, fragPrevious, nextFragLookupTolerance) { + if (fragPrevious && fragPrevious.start === 0 && fragPrevious.level < fragNext.level && (fragPrevious.endPTS || 0) > 0) { + var firstDuration = fragPrevious.tagList.reduce(function (duration, tag) { + if (tag[0] === 'INF') { + duration += parseFloat(tag[1]); + } + return duration; + }, nextFragLookupTolerance); + return fragNext.start <= firstDuration; + } + return false; + } + + /** + * The test function used by the findFragmentBySn's BinarySearch to look for the best match to the current buffer conditions. + * @param candidate - The fragment to test + * @param bufferEnd - The end of the current buffered range the playhead is currently within + * @param maxFragLookUpTolerance - The amount of time that a fragment's start can be within in order to be considered contiguous + * @returns 0 if it matches, 1 if too low, -1 if too high + */ + function fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, candidate) { + if (bufferEnd === void 0) { + bufferEnd = 0; + } + if (maxFragLookUpTolerance === void 0) { + maxFragLookUpTolerance = 0; + } + // eagerly accept an accurate match (no tolerance) + if (candidate.start <= bufferEnd && candidate.start + candidate.duration > bufferEnd) { + return 0; + } + // offset should be within fragment boundary - config.maxFragLookUpTolerance + // this is to cope with situations like + // bufferEnd = 9.991 + // frag[Ø] : [0,10] + // frag[1] : [10,20] + // bufferEnd is within frag[0] range ... although what we are expecting is to return frag[1] here + // frag start frag start+duration + // |-----------------------------| + // <---> <---> + // ...--------><-----------------------------><---------.... + // previous frag matching fragment next frag + // return -1 return 0 return 1 + // logger.log(`level/sn/start/end/bufEnd:${level}/${candidate.sn}/${candidate.start}/${(candidate.start+candidate.duration)}/${bufferEnd}`); + // Set the lookup tolerance to be small enough to detect the current segment - ensures we don't skip over very small segments + var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0)); + if (candidate.start + candidate.duration - candidateLookupTolerance <= bufferEnd) { + return 1; + } else if (candidate.start - candidateLookupTolerance > bufferEnd && candidate.start) { + // if maxFragLookUpTolerance will have negative value then don't return -1 for first element + return -1; + } + return 0; + } + + /** + * The test function used by the findFragmentByPdt's BinarySearch to look for the best match to the current buffer conditions. + * This function tests the candidate's program date time values, as represented in Unix time + * @param candidate - The fragment to test + * @param pdtBufferEnd - The Unix time representing the end of the current buffered range + * @param maxFragLookUpTolerance - The amount of time that a fragment's start can be within in order to be considered contiguous + * @returns true if contiguous, false otherwise + */ + function pdtWithinToleranceTest(pdtBufferEnd, maxFragLookUpTolerance, candidate) { + var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0)) * 1000; + + // endProgramDateTime can be null, default to zero + var endProgramDateTime = candidate.endProgramDateTime || 0; + return endProgramDateTime - candidateLookupTolerance > pdtBufferEnd; + } + function findFragWithCC(fragments, cc) { + return BinarySearch.search(fragments, function (candidate) { + if (candidate.cc < cc) { + return 1; + } else if (candidate.cc > cc) { + return -1; + } else { + return 0; + } + }); + } + function findNearestWithCC(details, cc, fragment) { + if (details) { + if (details.startCC <= cc && details.endCC >= cc) { + var start = fragment.start; + var end = fragment.end; + return BinarySearch.search(details.fragments, function (candidate) { + if (candidate.cc < cc || candidate.end <= start) { + return 1; + } else if (candidate.cc > cc || candidate.start >= end) { + return -1; + } else { + return 0; + } + }); + } + } + return null; + } + + var NetworkErrorAction = { + DoNothing: 0, + SendEndCallback: 1, + SendAlternateToPenaltyBox: 2, + RemoveAlternatePermanently: 3, + InsertDiscontinuity: 4, + RetryRequest: 5 + }; + var ErrorActionFlags = { + None: 0, + MoveAllAlternatesMatchingHost: 1, + MoveAllAlternatesMatchingHDCP: 2, + SwitchToSDR: 4 + }; // Reserved for future use + var ErrorController = /*#__PURE__*/function (_Logger) { + function ErrorController(hls) { + var _this; + _this = _Logger.call(this, 'error-controller', hls.logger) || this; + _this.hls = void 0; + _this.playlistError = 0; + _this.penalizedRenditions = {}; + _this.hls = hls; + _this.registerListeners(); + return _this; + } + _inheritsLoose(ErrorController, _Logger); + var _proto = ErrorController.prototype; + _proto.registerListeners = function registerListeners() { + var hls = this.hls; + hls.on(Events.ERROR, this.onError, this); + hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this); + }; + _proto.unregisterListeners = function unregisterListeners() { + var hls = this.hls; + if (!hls) { + return; + } + hls.off(Events.ERROR, this.onError, this); + hls.off(Events.ERROR, this.onErrorOut, this); + hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this); + }; + _proto.destroy = function destroy() { + this.unregisterListeners(); + // @ts-ignore + this.hls = null; + this.penalizedRenditions = {}; + }; + _proto.startLoad = function startLoad(startPosition) {}; + _proto.stopLoad = function stopLoad() { + this.playlistError = 0; + }; + _proto.getVariantLevelIndex = function getVariantLevelIndex(frag) { + return (frag == null ? void 0 : frag.type) === PlaylistLevelType.MAIN ? frag.level : this.hls.loadLevel; + }; + _proto.onManifestLoading = function onManifestLoading() { + this.playlistError = 0; + this.penalizedRenditions = {}; + }; + _proto.onLevelUpdated = function onLevelUpdated() { + this.playlistError = 0; + }; + _proto.onError = function onError(event, data) { + var _data$frag; + if (data.fatal) { + return; + } + var hls = this.hls; + var context = data.context; + switch (data.details) { + case ErrorDetails.FRAG_LOAD_ERROR: + case ErrorDetails.FRAG_LOAD_TIMEOUT: + case ErrorDetails.KEY_LOAD_ERROR: + case ErrorDetails.KEY_LOAD_TIMEOUT: + data.errorAction = this.getFragRetryOrSwitchAction(data); + return; + case ErrorDetails.FRAG_PARSING_ERROR: + // ignore empty segment errors marked as gap + if ((_data$frag = data.frag) != null && _data$frag.gap) { + data.errorAction = createDoNothingErrorAction(); + return; + } + // falls through + case ErrorDetails.FRAG_GAP: + case ErrorDetails.FRAG_DECRYPT_ERROR: + { + // Switch level if possible, otherwise allow retry count to reach max error retries + data.errorAction = this.getFragRetryOrSwitchAction(data); + data.errorAction.action = NetworkErrorAction.SendAlternateToPenaltyBox; + return; + } + case ErrorDetails.LEVEL_EMPTY_ERROR: + case ErrorDetails.LEVEL_PARSING_ERROR: + { + var _data$context, _data$context$levelDe; + // Only retry when empty and live + var levelIndex = data.parent === PlaylistLevelType.MAIN ? data.level : hls.loadLevel; + if (data.details === ErrorDetails.LEVEL_EMPTY_ERROR && !!((_data$context = data.context) != null && (_data$context$levelDe = _data$context.levelDetails) != null && _data$context$levelDe.live)) { + data.errorAction = this.getPlaylistRetryOrSwitchAction(data, levelIndex); + } else { + // Escalate to fatal if not retrying or switching + data.levelRetry = false; + data.errorAction = this.getLevelSwitchAction(data, levelIndex); + } + } + return; + case ErrorDetails.LEVEL_LOAD_ERROR: + case ErrorDetails.LEVEL_LOAD_TIMEOUT: + if (typeof (context == null ? void 0 : context.level) === 'number') { + data.errorAction = this.getPlaylistRetryOrSwitchAction(data, context.level); + } + return; + case ErrorDetails.AUDIO_TRACK_LOAD_ERROR: + case ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT: + case ErrorDetails.SUBTITLE_LOAD_ERROR: + case ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT: + if (context) { + var level = hls.levels[hls.loadLevel]; + if (level && (context.type === PlaylistContextType.AUDIO_TRACK && level.hasAudioGroup(context.groupId) || context.type === PlaylistContextType.SUBTITLE_TRACK && level.hasSubtitleGroup(context.groupId))) { + // Perform Pathway switch or Redundant failover if possible for fastest recovery + // otherwise allow playlist retry count to reach max error retries + data.errorAction = this.getPlaylistRetryOrSwitchAction(data, hls.loadLevel); + data.errorAction.action = NetworkErrorAction.SendAlternateToPenaltyBox; + data.errorAction.flags = ErrorActionFlags.MoveAllAlternatesMatchingHost; + return; + } + } + return; + case ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED: + { + var _level = hls.levels[hls.loadLevel]; + var restrictedHdcpLevel = _level == null ? void 0 : _level.attrs['HDCP-LEVEL']; + if (restrictedHdcpLevel) { + data.errorAction = { + action: NetworkErrorAction.SendAlternateToPenaltyBox, + flags: ErrorActionFlags.MoveAllAlternatesMatchingHDCP, + hdcpLevel: restrictedHdcpLevel + }; + } else { + this.keySystemError(data); + } + } + return; + case ErrorDetails.BUFFER_ADD_CODEC_ERROR: + case ErrorDetails.REMUX_ALLOC_ERROR: + case ErrorDetails.BUFFER_APPEND_ERROR: + // Buffer-controller can set errorAction when append errors can be ignored or resolved locally + if (!data.errorAction) { + var _data$level; + data.errorAction = this.getLevelSwitchAction(data, (_data$level = data.level) != null ? _data$level : hls.loadLevel); + } + return; + case ErrorDetails.INTERNAL_EXCEPTION: + case ErrorDetails.BUFFER_APPENDING_ERROR: + case ErrorDetails.BUFFER_FULL_ERROR: + case ErrorDetails.LEVEL_SWITCH_ERROR: + case ErrorDetails.BUFFER_STALLED_ERROR: + case ErrorDetails.BUFFER_SEEK_OVER_HOLE: + case ErrorDetails.BUFFER_NUDGE_ON_STALL: + data.errorAction = createDoNothingErrorAction(); + return; + } + if (data.type === ErrorTypes.KEY_SYSTEM_ERROR) { + this.keySystemError(data); + } + }; + _proto.keySystemError = function keySystemError(data) { + var levelIndex = this.getVariantLevelIndex(data.frag); + // Do not retry level. Escalate to fatal if switching levels fails. + data.levelRetry = false; + data.errorAction = this.getLevelSwitchAction(data, levelIndex); + }; + _proto.getPlaylistRetryOrSwitchAction = function getPlaylistRetryOrSwitchAction(data, levelIndex) { + var hls = this.hls; + var retryConfig = getRetryConfig(hls.config.playlistLoadPolicy, data); + var retryCount = this.playlistError++; + var retry = shouldRetry(retryConfig, retryCount, isTimeoutError(data), data.response); + if (retry) { + return { + action: NetworkErrorAction.RetryRequest, + flags: ErrorActionFlags.None, + retryConfig: retryConfig, + retryCount: retryCount + }; + } + var errorAction = this.getLevelSwitchAction(data, levelIndex); + if (retryConfig) { + errorAction.retryConfig = retryConfig; + errorAction.retryCount = retryCount; + } + return errorAction; + }; + _proto.getFragRetryOrSwitchAction = function getFragRetryOrSwitchAction(data) { + var hls = this.hls; + // Share fragment error count accross media options (main, audio, subs) + // This allows for level based rendition switching when media option assets fail + var variantLevelIndex = this.getVariantLevelIndex(data.frag); + var level = hls.levels[variantLevelIndex]; + var _hls$config = hls.config, + fragLoadPolicy = _hls$config.fragLoadPolicy, + keyLoadPolicy = _hls$config.keyLoadPolicy; + var retryConfig = getRetryConfig(data.details.startsWith('key') ? keyLoadPolicy : fragLoadPolicy, data); + var fragmentErrors = hls.levels.reduce(function (acc, level) { + return acc + level.fragmentError; + }, 0); + // Switch levels when out of retried or level index out of bounds + if (level) { + if (data.details !== ErrorDetails.FRAG_GAP) { + level.fragmentError++; + } + var retry = shouldRetry(retryConfig, fragmentErrors, isTimeoutError(data), data.response); + if (retry) { + return { + action: NetworkErrorAction.RetryRequest, + flags: ErrorActionFlags.None, + retryConfig: retryConfig, + retryCount: fragmentErrors + }; + } + } + // Reach max retry count, or Missing level reference + // Switch to valid index + var errorAction = this.getLevelSwitchAction(data, variantLevelIndex); + // Add retry details to allow skipping of FRAG_PARSING_ERROR + if (retryConfig) { + errorAction.retryConfig = retryConfig; + errorAction.retryCount = fragmentErrors; + } + return errorAction; + }; + _proto.getLevelSwitchAction = function getLevelSwitchAction(data, levelIndex) { + var hls = this.hls; + if (levelIndex === null || levelIndex === undefined) { + levelIndex = hls.loadLevel; + } + var level = this.hls.levels[levelIndex]; + if (level) { + var _data$frag2, _data$context2; + var errorDetails = data.details; + level.loadError++; + if (errorDetails === ErrorDetails.BUFFER_APPEND_ERROR) { + level.fragmentError++; + } + // Search for next level to retry + var nextLevel = -1; + var levels = hls.levels, + loadLevel = hls.loadLevel, + minAutoLevel = hls.minAutoLevel, + maxAutoLevel = hls.maxAutoLevel; + if (!hls.autoLevelEnabled) { + hls.loadLevel = -1; + } + var fragErrorType = (_data$frag2 = data.frag) == null ? void 0 : _data$frag2.type; + // Find alternate audio codec if available on audio codec error + var isAudioCodecError = fragErrorType === PlaylistLevelType.AUDIO && errorDetails === ErrorDetails.FRAG_PARSING_ERROR || data.sourceBufferName === 'audio' && (errorDetails === ErrorDetails.BUFFER_ADD_CODEC_ERROR || errorDetails === ErrorDetails.BUFFER_APPEND_ERROR); + var findAudioCodecAlternate = isAudioCodecError && levels.some(function (_ref) { + var audioCodec = _ref.audioCodec; + return level.audioCodec !== audioCodec; + }); + // Find alternate video codec if available on video codec error + var isVideoCodecError = data.sourceBufferName === 'video' && (errorDetails === ErrorDetails.BUFFER_ADD_CODEC_ERROR || errorDetails === ErrorDetails.BUFFER_APPEND_ERROR); + var findVideoCodecAlternate = isVideoCodecError && levels.some(function (_ref2) { + var codecSet = _ref2.codecSet, + audioCodec = _ref2.audioCodec; + return level.codecSet !== codecSet && level.audioCodec === audioCodec; + }); + var _ref3 = (_data$context2 = data.context) != null ? _data$context2 : {}, + playlistErrorType = _ref3.type, + playlistErrorGroupId = _ref3.groupId; + var _loop = function _loop() { + var candidate = (i + loadLevel) % levels.length; + if (candidate !== loadLevel && candidate >= minAutoLevel && candidate <= maxAutoLevel && levels[candidate].loadError === 0) { + var _level$audioGroups, _level$subtitleGroups; + var levelCandidate = levels[candidate]; + // Skip level switch if GAP tag is found in next level at same position + if (errorDetails === ErrorDetails.FRAG_GAP && fragErrorType === PlaylistLevelType.MAIN && data.frag) { + var levelDetails = levels[candidate].details; + if (levelDetails) { + var fragCandidate = findFragmentByPTS(data.frag, levelDetails.fragments, data.frag.start); + if (fragCandidate != null && fragCandidate.gap) { + return 0; // continue + } + } + } else if (playlistErrorType === PlaylistContextType.AUDIO_TRACK && levelCandidate.hasAudioGroup(playlistErrorGroupId) || playlistErrorType === PlaylistContextType.SUBTITLE_TRACK && levelCandidate.hasSubtitleGroup(playlistErrorGroupId)) { + // For audio/subs playlist errors find another group ID or fallthrough to redundant fail-over + return 0; // continue + } else if (fragErrorType === PlaylistLevelType.AUDIO && (_level$audioGroups = level.audioGroups) != null && _level$audioGroups.some(function (groupId) { + return levelCandidate.hasAudioGroup(groupId); + }) || fragErrorType === PlaylistLevelType.SUBTITLE && (_level$subtitleGroups = level.subtitleGroups) != null && _level$subtitleGroups.some(function (groupId) { + return levelCandidate.hasSubtitleGroup(groupId); + }) || findAudioCodecAlternate && level.audioCodec === levelCandidate.audioCodec || !findAudioCodecAlternate && level.audioCodec !== levelCandidate.audioCodec || findVideoCodecAlternate && level.codecSet === levelCandidate.codecSet) { + // For video/audio/subs frag errors find another group ID or fallthrough to redundant fail-over + return 0; // continue + } + nextLevel = candidate; + return 1; // break + } + }, + _ret; + for (var i = levels.length; i--;) { + _ret = _loop(); + if (_ret === 0) continue; + if (_ret === 1) break; + } + if (nextLevel > -1 && hls.loadLevel !== nextLevel) { + data.levelRetry = true; + this.playlistError = 0; + return { + action: NetworkErrorAction.SendAlternateToPenaltyBox, + flags: ErrorActionFlags.None, + nextAutoLevel: nextLevel + }; + } + } + // No levels to switch / Manual level selection / Level not found + // Resolve with Pathway switch, Redundant fail-over, or stay on lowest Level + return { + action: NetworkErrorAction.SendAlternateToPenaltyBox, + flags: ErrorActionFlags.MoveAllAlternatesMatchingHost + }; + }; + _proto.onErrorOut = function onErrorOut(event, data) { + var _data$errorAction; + switch ((_data$errorAction = data.errorAction) == null ? void 0 : _data$errorAction.action) { + case NetworkErrorAction.DoNothing: + break; + case NetworkErrorAction.SendAlternateToPenaltyBox: + this.sendAlternateToPenaltyBox(data); + if (!data.errorAction.resolved && data.details !== ErrorDetails.FRAG_GAP) { + data.fatal = true; + } else if (/MediaSource readyState: ended/.test(data.error.message)) { + this.warn("MediaSource ended after \"" + data.sourceBufferName + "\" sourceBuffer append error. Attempting to recover from media error."); + this.hls.recoverMediaError(); + } + break; + } + if (data.fatal) { + this.hls.stopLoad(); + return; + } + }; + _proto.sendAlternateToPenaltyBox = function sendAlternateToPenaltyBox(data) { + var hls = this.hls; + var errorAction = data.errorAction; + if (!errorAction) { + return; + } + var flags = errorAction.flags, + hdcpLevel = errorAction.hdcpLevel, + nextAutoLevel = errorAction.nextAutoLevel; + switch (flags) { + case ErrorActionFlags.None: + this.switchLevel(data, nextAutoLevel); + break; + case ErrorActionFlags.MoveAllAlternatesMatchingHDCP: + if (hdcpLevel) { + hls.maxHdcpLevel = HdcpLevels[HdcpLevels.indexOf(hdcpLevel) - 1]; + errorAction.resolved = true; + } + this.warn("Restricting playback to HDCP-LEVEL of \"" + hls.maxHdcpLevel + "\" or lower"); + break; + } + // If not resolved by previous actions try to switch to next level + if (!errorAction.resolved) { + this.switchLevel(data, nextAutoLevel); + } + }; + _proto.switchLevel = function switchLevel(data, levelIndex) { + if (levelIndex !== undefined && data.errorAction) { + this.warn("switching to level " + levelIndex + " after " + data.details); + this.hls.nextAutoLevel = levelIndex; + data.errorAction.resolved = true; + // Stream controller is responsible for this but won't switch on false start + this.hls.nextLoadLevel = this.hls.nextAutoLevel; + } + }; + return ErrorController; + }(Logger); + function createDoNothingErrorAction(resolved) { + var errorAction = { + action: NetworkErrorAction.DoNothing, + flags: ErrorActionFlags.None + }; + return errorAction; + } + + var BasePlaylistController = /*#__PURE__*/function (_Logger) { + function BasePlaylistController(hls, logPrefix) { + var _this; + _this = _Logger.call(this, logPrefix, hls.logger) || this; + _this.hls = void 0; + _this.timer = -1; + _this.requestScheduled = -1; + _this.canLoad = false; + _this.hls = hls; + return _this; + } + _inheritsLoose(BasePlaylistController, _Logger); + var _proto = BasePlaylistController.prototype; + _proto.destroy = function destroy() { + this.clearTimer(); + // @ts-ignore + this.hls = this.log = this.warn = null; + }; + _proto.clearTimer = function clearTimer() { + if (this.timer !== -1) { + self.clearTimeout(this.timer); + this.timer = -1; + } + }; + _proto.startLoad = function startLoad() { + this.canLoad = true; + this.requestScheduled = -1; + this.loadPlaylist(); + }; + _proto.stopLoad = function stopLoad() { + this.canLoad = false; + this.clearTimer(); + }; + _proto.switchParams = function switchParams(playlistUri, previous, current) { + var renditionReports = previous == null ? void 0 : previous.renditionReports; + if (renditionReports) { + var foundIndex = -1; + for (var i = 0; i < renditionReports.length; i++) { + var attr = renditionReports[i]; + var uri = void 0; + try { + uri = new self.URL(attr.URI, previous.url).href; + } catch (error) { + this.warn("Could not construct new URL for Rendition Report: " + error); + uri = attr.URI || ''; + } + // Use exact match. Otherwise, the last partial match, if any, will be used + // (Playlist URI includes a query string that the Rendition Report does not) + if (uri === playlistUri) { + foundIndex = i; + break; + } else if (uri === playlistUri.substring(0, uri.length)) { + foundIndex = i; + } + } + if (foundIndex !== -1) { + var _attr = renditionReports[foundIndex]; + var msn = parseInt(_attr['LAST-MSN']) || (previous == null ? void 0 : previous.lastPartSn); + var part = parseInt(_attr['LAST-PART']) || (previous == null ? void 0 : previous.lastPartIndex); + if (this.hls.config.lowLatencyMode) { + var currentGoal = Math.min(previous.age - previous.partTarget, previous.targetduration); + if (part >= 0 && currentGoal > previous.partTarget) { + part += 1; + } + } + var skip = current && getSkipValue(current); + return new HlsUrlParameters(msn, part >= 0 ? part : undefined, skip); + } + } + }; + _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) { + if (this.requestScheduled === -1) { + this.requestScheduled = self.performance.now(); + } + // Loading is handled by the subclasses + }; + _proto.shouldLoadPlaylist = function shouldLoadPlaylist(playlist) { + return this.canLoad && !!playlist && !!playlist.url && (!playlist.details || playlist.details.live); + }; + _proto.shouldReloadPlaylist = function shouldReloadPlaylist(playlist) { + return this.timer === -1 && this.requestScheduled === -1 && this.shouldLoadPlaylist(playlist); + }; + _proto.playlistLoaded = function playlistLoaded(index, data, previousDetails) { + var _this2 = this; + var details = data.details, + stats = data.stats; + + // Set last updated date-time + var now = self.performance.now(); + var elapsed = stats.loading.first ? Math.max(0, now - stats.loading.first) : 0; + details.advancedDateTime = Date.now() - elapsed; + + // if current playlist is a live playlist, arm a timer to reload it + if (details.live || previousDetails != null && previousDetails.live) { + details.reloaded(previousDetails); + if (previousDetails) { + this.log("live playlist " + index + " " + (details.advanced ? 'REFRESHED ' + details.lastPartSn + '-' + details.lastPartIndex : details.updated ? 'UPDATED' : 'MISSED')); + } + // Merge live playlists to adjust fragment starts and fill in delta playlist skipped segments + if (previousDetails && details.fragments.length > 0) { + mergeDetails(previousDetails, details); + } + if (!this.canLoad || !details.live) { + return; + } + var deliveryDirectives; + var msn = undefined; + var part = undefined; + if (details.canBlockReload && details.endSN && details.advanced) { + // Load level with LL-HLS delivery directives + var lowLatencyMode = this.hls.config.lowLatencyMode; + var lastPartSn = details.lastPartSn; + var endSn = details.endSN; + var lastPartIndex = details.lastPartIndex; + var hasParts = lastPartIndex !== -1; + var lastPart = lastPartSn === endSn; + // When low latency mode is disabled, we'll skip part requests once the last part index is found + var nextSnStartIndex = lowLatencyMode ? 0 : lastPartIndex; + if (hasParts) { + msn = lastPart ? endSn + 1 : lastPartSn; + part = lastPart ? nextSnStartIndex : lastPartIndex + 1; + } else { + msn = endSn + 1; + } + // Low-Latency CDN Tune-in: "age" header and time since load indicates we're behind by more than one part + // Update directives to obtain the Playlist that has the estimated additional duration of media + var lastAdvanced = details.age; + var cdnAge = lastAdvanced + details.ageHeader; + var currentGoal = Math.min(cdnAge - details.partTarget, details.targetduration * 1.5); + if (currentGoal > 0) { + if (cdnAge > details.targetduration * 3) { + // Omit segment and part directives when the last response was more than 3 target durations ago, + this.log("Playlist last advanced " + lastAdvanced.toFixed(2) + "s ago. Omitting segment and part directives."); + msn = undefined; + part = undefined; + } else if (previousDetails != null && previousDetails.tuneInGoal && cdnAge - details.partTarget > previousDetails.tuneInGoal) { + // If we attempted to get the next or latest playlist update, but currentGoal increased, + // then we either can't catchup, or the "age" header cannot be trusted. + this.warn("CDN Tune-in goal increased from: " + previousDetails.tuneInGoal + " to: " + currentGoal + " with playlist age: " + details.age); + currentGoal = 0; + } else { + var segments = Math.floor(currentGoal / details.targetduration); + msn += segments; + if (part !== undefined) { + var parts = Math.round(currentGoal % details.targetduration / details.partTarget); + part += parts; + } + this.log("CDN Tune-in age: " + details.ageHeader + "s last advanced " + lastAdvanced.toFixed(2) + "s goal: " + currentGoal + " skip sn " + segments + " to part " + part); + } + details.tuneInGoal = currentGoal; + } + deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part); + if (lowLatencyMode || !lastPart) { + this.loadPlaylist(deliveryDirectives); + return; + } + } else if (details.canBlockReload || details.canSkipUntil) { + deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part); + } + var bufferInfo = this.hls.mainForwardBufferInfo; + var position = bufferInfo ? bufferInfo.end - bufferInfo.len : 0; + var distanceToLiveEdgeMs = (details.edge - position) * 1000; + var reloadInterval = computeReloadInterval(details, distanceToLiveEdgeMs); + if (details.updated && now > this.requestScheduled + reloadInterval) { + this.requestScheduled = stats.loading.start; + } + if (msn !== undefined && details.canBlockReload) { + this.requestScheduled = stats.loading.first + reloadInterval - (details.partTarget * 1000 || 1000); + } else if (this.requestScheduled === -1 || this.requestScheduled + reloadInterval < now) { + this.requestScheduled = now; + } else if (this.requestScheduled - now <= 0) { + this.requestScheduled += reloadInterval; + } + var estimatedTimeUntilUpdate = this.requestScheduled - now; + estimatedTimeUntilUpdate = Math.max(0, estimatedTimeUntilUpdate); + this.log("reload live playlist " + index + " in " + Math.round(estimatedTimeUntilUpdate) + " ms"); + // this.log( + // `live reload ${details.updated ? 'REFRESHED' : 'MISSED'} + // reload in ${estimatedTimeUntilUpdate / 1000} + // round trip ${(stats.loading.end - stats.loading.start) / 1000} + // diff ${ + // (reloadInterval - + // (estimatedTimeUntilUpdate + + // stats.loading.end - + // stats.loading.start)) / + // 1000 + // } + // reload interval ${reloadInterval / 1000} + // target duration ${details.targetduration} + // distance to edge ${distanceToLiveEdgeMs / 1000}` + // ); + + this.timer = self.setTimeout(function () { + return _this2.loadPlaylist(deliveryDirectives); + }, estimatedTimeUntilUpdate); + } else { + this.clearTimer(); + } + }; + _proto.getDeliveryDirectives = function getDeliveryDirectives(details, previousDeliveryDirectives, msn, part) { + var skip = getSkipValue(details); + if (previousDeliveryDirectives != null && previousDeliveryDirectives.skip && details.deltaUpdateFailed) { + msn = previousDeliveryDirectives.msn; + part = previousDeliveryDirectives.part; + skip = HlsSkip.No; + } + return new HlsUrlParameters(msn, part, skip); + }; + _proto.checkRetry = function checkRetry(errorEvent) { + var _this3 = this; + var errorDetails = errorEvent.details; + var isTimeout = isTimeoutError(errorEvent); + var errorAction = errorEvent.errorAction; + var _ref = errorAction || {}, + action = _ref.action, + _ref$retryCount = _ref.retryCount, + retryCount = _ref$retryCount === void 0 ? 0 : _ref$retryCount, + retryConfig = _ref.retryConfig; + var retry = !!errorAction && !!retryConfig && (action === NetworkErrorAction.RetryRequest || !errorAction.resolved && action === NetworkErrorAction.SendAlternateToPenaltyBox); + if (retry) { + var _errorEvent$context; + this.requestScheduled = -1; + if (retryCount >= retryConfig.maxNumRetry) { + return false; + } + if (isTimeout && (_errorEvent$context = errorEvent.context) != null && _errorEvent$context.deliveryDirectives) { + // The LL-HLS request already timed out so retry immediately + this.warn("Retrying playlist loading " + (retryCount + 1) + "/" + retryConfig.maxNumRetry + " after \"" + errorDetails + "\" without delivery-directives"); + this.loadPlaylist(); + } else { + var delay = getRetryDelay(retryConfig, retryCount); + // Schedule level/track reload + this.timer = self.setTimeout(function () { + return _this3.loadPlaylist(); + }, delay); + this.warn("Retrying playlist loading " + (retryCount + 1) + "/" + retryConfig.maxNumRetry + " after \"" + errorDetails + "\" in " + delay + "ms"); + } + // `levelRetry = true` used to inform other controllers that a retry is happening + errorEvent.levelRetry = true; + errorAction.resolved = true; + } + return retry; + }; + return BasePlaylistController; + }(Logger); + + /* + * compute an Exponential Weighted moving average + * - https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average + * - heavily inspired from shaka-player + */ + var EWMA = /*#__PURE__*/function () { + // About half of the estimated value will be from the last |halfLife| samples by weight. + function EWMA(halfLife, estimate, weight) { + if (estimate === void 0) { + estimate = 0; + } + if (weight === void 0) { + weight = 0; + } + this.halfLife = void 0; + this.alpha_ = void 0; + this.estimate_ = void 0; + this.totalWeight_ = void 0; + this.halfLife = halfLife; + // Larger values of alpha expire historical data more slowly. + this.alpha_ = halfLife ? Math.exp(Math.log(0.5) / halfLife) : 0; + this.estimate_ = estimate; + this.totalWeight_ = weight; + } + var _proto = EWMA.prototype; + _proto.sample = function sample(weight, value) { + var adjAlpha = Math.pow(this.alpha_, weight); + this.estimate_ = value * (1 - adjAlpha) + adjAlpha * this.estimate_; + this.totalWeight_ += weight; + }; + _proto.getTotalWeight = function getTotalWeight() { + return this.totalWeight_; + }; + _proto.getEstimate = function getEstimate() { + if (this.alpha_) { + var zeroFactor = 1 - Math.pow(this.alpha_, this.totalWeight_); + if (zeroFactor) { + return this.estimate_ / zeroFactor; + } + } + return this.estimate_; + }; + return EWMA; + }(); + + /* + * EWMA Bandwidth Estimator + * - heavily inspired from shaka-player + * Tracks bandwidth samples and estimates available bandwidth. + * Based on the minimum of two exponentially-weighted moving averages with + * different half-lives. + */ + + var EwmaBandWidthEstimator = /*#__PURE__*/function () { + function EwmaBandWidthEstimator(slow, fast, defaultEstimate, defaultTTFB) { + if (defaultTTFB === void 0) { + defaultTTFB = 100; + } + this.defaultEstimate_ = void 0; + this.minWeight_ = void 0; + this.minDelayMs_ = void 0; + this.slow_ = void 0; + this.fast_ = void 0; + this.defaultTTFB_ = void 0; + this.ttfb_ = void 0; + this.defaultEstimate_ = defaultEstimate; + this.minWeight_ = 0.001; + this.minDelayMs_ = 50; + this.slow_ = new EWMA(slow); + this.fast_ = new EWMA(fast); + this.defaultTTFB_ = defaultTTFB; + this.ttfb_ = new EWMA(slow); + } + var _proto = EwmaBandWidthEstimator.prototype; + _proto.update = function update(slow, fast) { + var slow_ = this.slow_, + fast_ = this.fast_, + ttfb_ = this.ttfb_; + if (slow_.halfLife !== slow) { + this.slow_ = new EWMA(slow, slow_.getEstimate(), slow_.getTotalWeight()); + } + if (fast_.halfLife !== fast) { + this.fast_ = new EWMA(fast, fast_.getEstimate(), fast_.getTotalWeight()); + } + if (ttfb_.halfLife !== slow) { + this.ttfb_ = new EWMA(slow, ttfb_.getEstimate(), ttfb_.getTotalWeight()); + } + }; + _proto.sample = function sample(durationMs, numBytes) { + durationMs = Math.max(durationMs, this.minDelayMs_); + var numBits = 8 * numBytes; + // weight is duration in seconds + var durationS = durationMs / 1000; + // value is bandwidth in bits/s + var bandwidthInBps = numBits / durationS; + this.fast_.sample(durationS, bandwidthInBps); + this.slow_.sample(durationS, bandwidthInBps); + }; + _proto.sampleTTFB = function sampleTTFB(ttfb) { + // weight is frequency curve applied to TTFB in seconds + // (longer times have less weight with expected input under 1 second) + var seconds = ttfb / 1000; + var weight = Math.sqrt(2) * Math.exp(-Math.pow(seconds, 2) / 2); + this.ttfb_.sample(weight, Math.max(ttfb, 5)); + }; + _proto.canEstimate = function canEstimate() { + return this.fast_.getTotalWeight() >= this.minWeight_; + }; + _proto.getEstimate = function getEstimate() { + if (this.canEstimate()) { + // console.log('slow estimate:'+ Math.round(this.slow_.getEstimate())); + // console.log('fast estimate:'+ Math.round(this.fast_.getEstimate())); + // Take the minimum of these two estimates. This should have the effect of + // adapting down quickly, but up more slowly. + return Math.min(this.fast_.getEstimate(), this.slow_.getEstimate()); + } else { + return this.defaultEstimate_; + } + }; + _proto.getEstimateTTFB = function getEstimateTTFB() { + if (this.ttfb_.getTotalWeight() >= this.minWeight_) { + return this.ttfb_.getEstimate(); + } else { + return this.defaultTTFB_; + } + }; + _proto.destroy = function destroy() {}; + return EwmaBandWidthEstimator; + }(); + + var SUPPORTED_INFO_DEFAULT = { + supported: true, + configurations: [], + decodingInfoResults: [{ + supported: true, + powerEfficient: true, + smooth: true + }] + }; + var SUPPORTED_INFO_CACHE = {}; + function requiresMediaCapabilitiesDecodingInfo(level, audioTracksByGroup, currentVideoRange, currentFrameRate, currentBw, audioPreference) { + // Only test support when configuration is exceeds minimum options + var audioGroups = level.audioCodec ? level.audioGroups : null; + var audioCodecPreference = audioPreference == null ? void 0 : audioPreference.audioCodec; + var channelsPreference = audioPreference == null ? void 0 : audioPreference.channels; + var maxChannels = channelsPreference ? parseInt(channelsPreference) : audioCodecPreference ? Infinity : 2; + var audioChannels = null; + if (audioGroups != null && audioGroups.length) { + try { + if (audioGroups.length === 1 && audioGroups[0]) { + audioChannels = audioTracksByGroup.groups[audioGroups[0]].channels; + } else { + audioChannels = audioGroups.reduce(function (acc, groupId) { + if (groupId) { + var audioTrackGroup = audioTracksByGroup.groups[groupId]; + if (!audioTrackGroup) { + throw new Error("Audio track group " + groupId + " not found"); + } + // Sum all channel key values + Object.keys(audioTrackGroup.channels).forEach(function (key) { + acc[key] = (acc[key] || 0) + audioTrackGroup.channels[key]; + }); + } + return acc; + }, { + 2: 0 + }); + } + } catch (error) { + return true; + } + } + return level.videoCodec !== undefined && (level.width > 1920 && level.height > 1088 || level.height > 1920 && level.width > 1088 || level.frameRate > Math.max(currentFrameRate, 30) || level.videoRange !== 'SDR' && level.videoRange !== currentVideoRange || level.bitrate > Math.max(currentBw, 8e6)) || !!audioChannels && isFiniteNumber(maxChannels) && Object.keys(audioChannels).some(function (channels) { + return parseInt(channels) > maxChannels; + }); + } + function getMediaDecodingInfoPromise(level, audioTracksByGroup, mediaCapabilities) { + var videoCodecs = level.videoCodec; + var audioCodecs = level.audioCodec; + if (!videoCodecs || !audioCodecs || !mediaCapabilities) { + return Promise.resolve(SUPPORTED_INFO_DEFAULT); + } + var baseVideoConfiguration = { + width: level.width, + height: level.height, + bitrate: Math.ceil(Math.max(level.bitrate * 0.9, level.averageBitrate)), + // Assume a framerate of 30fps since MediaCapabilities will not accept Level default of 0. + framerate: level.frameRate || 30 + }; + var videoRange = level.videoRange; + if (videoRange !== 'SDR') { + baseVideoConfiguration.transferFunction = videoRange.toLowerCase(); + } + var configurations = videoCodecs.split(',').map(function (videoCodec) { + return { + type: 'media-source', + video: _objectSpread2(_objectSpread2({}, baseVideoConfiguration), {}, { + contentType: mimeTypeForCodec(videoCodec, 'video') + }) + }; + }); + if (audioCodecs && level.audioGroups) { + level.audioGroups.forEach(function (audioGroupId) { + var _audioTracksByGroup$g; + if (!audioGroupId) { + return; + } + (_audioTracksByGroup$g = audioTracksByGroup.groups[audioGroupId]) == null ? void 0 : _audioTracksByGroup$g.tracks.forEach(function (audioTrack) { + if (audioTrack.groupId === audioGroupId) { + var channels = audioTrack.channels || ''; + var channelsNumber = parseFloat(channels); + if (isFiniteNumber(channelsNumber) && channelsNumber > 2) { + configurations.push.apply(configurations, audioCodecs.split(',').map(function (audioCodec) { + return { + type: 'media-source', + audio: { + contentType: mimeTypeForCodec(audioCodec, 'audio'), + channels: '' + channelsNumber + // spatialRendering: + // audioCodec === 'ec-3' && channels.indexOf('JOC'), + } + }; + })); + } + } + }); + }); + } + return Promise.all(configurations.map(function (configuration) { + // Cache MediaCapabilities promises + var decodingInfoKey = getMediaDecodingInfoKey(configuration); + return SUPPORTED_INFO_CACHE[decodingInfoKey] || (SUPPORTED_INFO_CACHE[decodingInfoKey] = mediaCapabilities.decodingInfo(configuration)); + })).then(function (decodingInfoResults) { + return { + supported: !decodingInfoResults.some(function (info) { + return !info.supported; + }), + configurations: configurations, + decodingInfoResults: decodingInfoResults + }; + }).catch(function (error) { + return { + supported: false, + configurations: configurations, + decodingInfoResults: [], + error: error + }; + }); + } + function getMediaDecodingInfoKey(config) { + var audio = config.audio, + video = config.video; + var mediaConfig = video || audio; + if (mediaConfig) { + var codec = mediaConfig.contentType.split('"')[1]; + if (video) { + return "r" + video.height + "x" + video.width + "f" + Math.ceil(video.framerate) + (video.transferFunction || 'sd') + "_" + codec + "_" + Math.ceil(video.bitrate / 1e5); + } + if (audio) { + return "c" + audio.channels + (audio.spatialRendering ? 's' : 'n') + "_" + codec; + } + } + return ''; + } + + /** + * @returns Whether we can detect and validate HDR capability within the window context + */ + function isHdrSupported() { + if (typeof matchMedia === 'function') { + var mediaQueryList = matchMedia('(dynamic-range: high)'); + var badQuery = matchMedia('bad query'); + if (mediaQueryList.media !== badQuery.media) { + return mediaQueryList.matches === true; + } + } + return false; + } + + /** + * Sanitizes inputs to return the active video selection options for HDR/SDR. + * When both inputs are null: + * + * `{ preferHDR: false, allowedVideoRanges: [] }` + * + * When `currentVideoRange` non-null, maintain the active range: + * + * `{ preferHDR: currentVideoRange !== 'SDR', allowedVideoRanges: [currentVideoRange] }` + * + * When VideoSelectionOption non-null: + * + * - Allow all video ranges if `allowedVideoRanges` unspecified. + * - If `preferHDR` is non-null use the value to filter `allowedVideoRanges`. + * - Else check window for HDR support and set `preferHDR` to the result. + * + * @param currentVideoRange + * @param videoPreference + */ + function getVideoSelectionOptions(currentVideoRange, videoPreference) { + var preferHDR = false; + var allowedVideoRanges = []; + if (currentVideoRange) { + preferHDR = currentVideoRange !== 'SDR'; + allowedVideoRanges = [currentVideoRange]; + } + if (videoPreference) { + allowedVideoRanges = videoPreference.allowedVideoRanges || VideoRangeValues.slice(0); + var allowAutoPreferHDR = allowedVideoRanges.join('') !== 'SDR' && !videoPreference.videoCodec; + preferHDR = videoPreference.preferHDR !== undefined ? videoPreference.preferHDR : allowAutoPreferHDR && isHdrSupported(); + if (!preferHDR) { + allowedVideoRanges = ['SDR']; + } + } + return { + preferHDR: preferHDR, + allowedVideoRanges: allowedVideoRanges + }; + } + + function getStartCodecTier(codecTiers, currentVideoRange, currentBw, audioPreference, videoPreference) { + var codecSets = Object.keys(codecTiers); + var channelsPreference = audioPreference == null ? void 0 : audioPreference.channels; + var audioCodecPreference = audioPreference == null ? void 0 : audioPreference.audioCodec; + var videoCodecPreference = videoPreference == null ? void 0 : videoPreference.videoCodec; + var preferStereo = channelsPreference && parseInt(channelsPreference) === 2; + // Use first level set to determine stereo, and minimum resolution and framerate + var hasStereo = false; + var hasCurrentVideoRange = false; + var minHeight = Infinity; + var minFramerate = Infinity; + var minBitrate = Infinity; + var minIndex = Infinity; + var selectedScore = 0; + var videoRanges = []; + var _getVideoSelectionOpt = getVideoSelectionOptions(currentVideoRange, videoPreference), + preferHDR = _getVideoSelectionOpt.preferHDR, + allowedVideoRanges = _getVideoSelectionOpt.allowedVideoRanges; + var _loop = function _loop() { + var tier = codecTiers[codecSets[i]]; + hasStereo || (hasStereo = tier.channels[2] > 0); + minHeight = Math.min(minHeight, tier.minHeight); + minFramerate = Math.min(minFramerate, tier.minFramerate); + minBitrate = Math.min(minBitrate, tier.minBitrate); + var matchingVideoRanges = allowedVideoRanges.filter(function (range) { + return tier.videoRanges[range] > 0; + }); + if (matchingVideoRanges.length > 0) { + hasCurrentVideoRange = true; + } + }; + for (var i = codecSets.length; i--;) { + _loop(); + } + minHeight = isFiniteNumber(minHeight) ? minHeight : 0; + minFramerate = isFiniteNumber(minFramerate) ? minFramerate : 0; + var maxHeight = Math.max(1080, minHeight); + var maxFramerate = Math.max(30, minFramerate); + minBitrate = isFiniteNumber(minBitrate) ? minBitrate : currentBw; + currentBw = Math.max(minBitrate, currentBw); + // If there are no variants with matching preference, set currentVideoRange to undefined + if (!hasCurrentVideoRange) { + currentVideoRange = undefined; + } + var hasMultipleSets = codecSets.length > 1; + var codecSet = codecSets.reduce(function (selected, candidate) { + // Remove candiates which do not meet bitrate, default audio, stereo or channels preference, 1080p or lower, 30fps or lower, or SDR/HDR selection if present + var candidateTier = codecTiers[candidate]; + if (candidate === selected) { + return selected; + } + videoRanges = hasCurrentVideoRange ? allowedVideoRanges.filter(function (range) { + return candidateTier.videoRanges[range] > 0; + }) : []; + if (hasMultipleSets) { + if (candidateTier.minBitrate > currentBw) { + logStartCodecCandidateIgnored(candidate, "min bitrate of " + candidateTier.minBitrate + " > current estimate of " + currentBw); + return selected; + } + if (!candidateTier.hasDefaultAudio) { + logStartCodecCandidateIgnored(candidate, "no renditions with default or auto-select sound found"); + return selected; + } + if (audioCodecPreference && candidate.indexOf(audioCodecPreference.substring(0, 4)) % 5 !== 0) { + logStartCodecCandidateIgnored(candidate, "audio codec preference \"" + audioCodecPreference + "\" not found"); + return selected; + } + if (channelsPreference && !preferStereo) { + if (!candidateTier.channels[channelsPreference]) { + logStartCodecCandidateIgnored(candidate, "no renditions with " + channelsPreference + " channel sound found (channels options: " + Object.keys(candidateTier.channels) + ")"); + return selected; + } + } else if ((!audioCodecPreference || preferStereo) && hasStereo && candidateTier.channels['2'] === 0) { + logStartCodecCandidateIgnored(candidate, "no renditions with stereo sound found"); + return selected; + } + if (candidateTier.minHeight > maxHeight) { + logStartCodecCandidateIgnored(candidate, "min resolution of " + candidateTier.minHeight + " > maximum of " + maxHeight); + return selected; + } + if (candidateTier.minFramerate > maxFramerate) { + logStartCodecCandidateIgnored(candidate, "min framerate of " + candidateTier.minFramerate + " > maximum of " + maxFramerate); + return selected; + } + if (!videoRanges.some(function (range) { + return candidateTier.videoRanges[range] > 0; + })) { + logStartCodecCandidateIgnored(candidate, "no variants with VIDEO-RANGE of " + JSON.stringify(videoRanges) + " found"); + return selected; + } + if (videoCodecPreference && candidate.indexOf(videoCodecPreference.substring(0, 4)) % 5 !== 0) { + logStartCodecCandidateIgnored(candidate, "video codec preference \"" + videoCodecPreference + "\" not found"); + return selected; + } + if (candidateTier.maxScore < selectedScore) { + logStartCodecCandidateIgnored(candidate, "max score of " + candidateTier.maxScore + " < selected max of " + selectedScore); + return selected; + } + } + // Remove candiates with less preferred codecs or more errors + if (selected && (codecsSetSelectionPreferenceValue(candidate) >= codecsSetSelectionPreferenceValue(selected) || candidateTier.fragmentError > codecTiers[selected].fragmentError)) { + return selected; + } + minIndex = candidateTier.minIndex; + selectedScore = candidateTier.maxScore; + return candidate; + }, undefined); + return { + codecSet: codecSet, + videoRanges: videoRanges, + preferHDR: preferHDR, + minFramerate: minFramerate, + minBitrate: minBitrate, + minIndex: minIndex + }; + } + function logStartCodecCandidateIgnored(codeSet, reason) { + logger.log("[abr] start candidates with \"" + codeSet + "\" ignored because " + reason); + } + function getAudioTracksByGroup(allAudioTracks) { + return allAudioTracks.reduce(function (audioTracksByGroup, track) { + var trackGroup = audioTracksByGroup.groups[track.groupId]; + if (!trackGroup) { + trackGroup = audioTracksByGroup.groups[track.groupId] = { + tracks: [], + channels: { + 2: 0 + }, + hasDefault: false, + hasAutoSelect: false + }; + } + trackGroup.tracks.push(track); + var channelsKey = track.channels || '2'; + trackGroup.channels[channelsKey] = (trackGroup.channels[channelsKey] || 0) + 1; + trackGroup.hasDefault = trackGroup.hasDefault || track.default; + trackGroup.hasAutoSelect = trackGroup.hasAutoSelect || track.autoselect; + if (trackGroup.hasDefault) { + audioTracksByGroup.hasDefaultAudio = true; + } + if (trackGroup.hasAutoSelect) { + audioTracksByGroup.hasAutoSelectAudio = true; + } + return audioTracksByGroup; + }, { + hasDefaultAudio: false, + hasAutoSelectAudio: false, + groups: {} + }); + } + function getCodecTiers(levels, audioTracksByGroup, minAutoLevel, maxAutoLevel) { + return levels.slice(minAutoLevel, maxAutoLevel + 1).reduce(function (tiers, level, index) { + if (!level.codecSet) { + return tiers; + } + var audioGroups = level.audioGroups; + var tier = tiers[level.codecSet]; + if (!tier) { + tiers[level.codecSet] = tier = { + minBitrate: Infinity, + minHeight: Infinity, + minFramerate: Infinity, + minIndex: index, + maxScore: 0, + videoRanges: { + SDR: 0 + }, + channels: { + '2': 0 + }, + hasDefaultAudio: !audioGroups, + fragmentError: 0 + }; + } + tier.minBitrate = Math.min(tier.minBitrate, level.bitrate); + var lesserWidthOrHeight = Math.min(level.height, level.width); + tier.minHeight = Math.min(tier.minHeight, lesserWidthOrHeight); + tier.minFramerate = Math.min(tier.minFramerate, level.frameRate); + tier.minIndex = Math.min(tier.minIndex, index); + tier.maxScore = Math.max(tier.maxScore, level.score); + tier.fragmentError += level.fragmentError; + tier.videoRanges[level.videoRange] = (tier.videoRanges[level.videoRange] || 0) + 1; + if (audioGroups) { + audioGroups.forEach(function (audioGroupId) { + if (!audioGroupId) { + return; + } + var audioGroup = audioTracksByGroup.groups[audioGroupId]; + if (!audioGroup) { + return; + } + // Default audio is any group with DEFAULT=YES, or if missing then any group with AUTOSELECT=YES, or all variants + tier.hasDefaultAudio = tier.hasDefaultAudio || audioTracksByGroup.hasDefaultAudio ? audioGroup.hasDefault : audioGroup.hasAutoSelect || !audioTracksByGroup.hasDefaultAudio && !audioTracksByGroup.hasAutoSelectAudio; + Object.keys(audioGroup.channels).forEach(function (channels) { + tier.channels[channels] = (tier.channels[channels] || 0) + audioGroup.channels[channels]; + }); + }); + } + return tiers; + }, {}); + } + function findMatchingOption(option, tracks, matchPredicate) { + if ('attrs' in option) { + var index = tracks.indexOf(option); + if (index !== -1) { + return index; + } + } + for (var i = 0; i < tracks.length; i++) { + var track = tracks[i]; + if (matchesOption(option, track, matchPredicate)) { + return i; + } + } + return -1; + } + function matchesOption(option, track, matchPredicate) { + var groupId = option.groupId, + name = option.name, + lang = option.lang, + assocLang = option.assocLang, + characteristics = option.characteristics, + isDefault = option.default; + var forced = option.forced; + return (groupId === undefined || track.groupId === groupId) && (name === undefined || track.name === name) && (lang === undefined || track.lang === lang) && (lang === undefined || track.assocLang === assocLang) && (isDefault === undefined || track.default === isDefault) && (forced === undefined || track.forced === forced) && (characteristics === undefined || characteristicsMatch(characteristics, track.characteristics)) && (matchPredicate === undefined || matchPredicate(option, track)); + } + function characteristicsMatch(characteristicsA, characteristicsB) { + if (characteristicsB === void 0) { + characteristicsB = ''; + } + var arrA = characteristicsA.split(','); + var arrB = characteristicsB.split(','); + // Expects each item to be unique: + return arrA.length === arrB.length && !arrA.some(function (el) { + return arrB.indexOf(el) === -1; + }); + } + function audioMatchPredicate(option, track) { + var audioCodec = option.audioCodec, + channels = option.channels; + return (audioCodec === undefined || (track.audioCodec || '').substring(0, 4) === audioCodec.substring(0, 4)) && (channels === undefined || channels === (track.channels || '2')); + } + function findClosestLevelWithAudioGroup(option, levels, allAudioTracks, searchIndex, matchPredicate) { + var currentLevel = levels[searchIndex]; + // Are there variants with same URI as current level? + // If so, find a match that does not require any level URI change + var variants = levels.reduce(function (variantMap, level, index) { + var uri = level.uri; + var renditions = variantMap[uri] || (variantMap[uri] = []); + renditions.push(index); + return variantMap; + }, {}); + var renditions = variants[currentLevel.uri]; + if (renditions.length > 1) { + searchIndex = Math.max.apply(Math, renditions); + } + // Find best match + var currentVideoRange = currentLevel.videoRange; + var currentFrameRate = currentLevel.frameRate; + var currentVideoCodec = currentLevel.codecSet.substring(0, 4); + var matchingVideo = searchDownAndUpList(levels, searchIndex, function (level) { + if (level.videoRange !== currentVideoRange || level.frameRate !== currentFrameRate || level.codecSet.substring(0, 4) !== currentVideoCodec) { + return false; + } + var audioGroups = level.audioGroups; + var tracks = allAudioTracks.filter(function (track) { + return !audioGroups || audioGroups.indexOf(track.groupId) !== -1; + }); + return findMatchingOption(option, tracks, matchPredicate) > -1; + }); + if (matchingVideo > -1) { + return matchingVideo; + } + return searchDownAndUpList(levels, searchIndex, function (level) { + var audioGroups = level.audioGroups; + var tracks = allAudioTracks.filter(function (track) { + return !audioGroups || audioGroups.indexOf(track.groupId) !== -1; + }); + return findMatchingOption(option, tracks, matchPredicate) > -1; + }); + } + function searchDownAndUpList(arr, searchIndex, predicate) { + for (var i = searchIndex; i; i--) { + if (predicate(arr[i])) { + return i; + } + } + for (var _i = searchIndex + 1; _i < arr.length; _i++) { + if (predicate(arr[_i])) { + return _i; + } + } + return -1; + } + + var AbrController = /*#__PURE__*/function (_Logger) { + function AbrController(_hls) { + var _this; + _this = _Logger.call(this, 'abr', _hls.logger) || this; + _this.hls = void 0; + _this.lastLevelLoadSec = 0; + _this.lastLoadedFragLevel = -1; + _this.firstSelection = -1; + _this._nextAutoLevel = -1; + _this.nextAutoLevelKey = ''; + _this.audioTracksByGroup = null; + _this.codecTiers = null; + _this.timer = -1; + _this.fragCurrent = null; + _this.partCurrent = null; + _this.bitrateTestDelay = 0; + _this.bwEstimator = void 0; + /* + This method monitors the download rate of the current fragment, and will downswitch if that fragment will not load + quickly enough to prevent underbuffering + */ + _this._abandonRulesCheck = function () { + var _this2 = _this, + frag = _this2.fragCurrent, + part = _this2.partCurrent, + hls = _this2.hls; + var autoLevelEnabled = hls.autoLevelEnabled, + media = hls.media; + if (!frag || !media) { + return; + } + var now = performance.now(); + var stats = part ? part.stats : frag.stats; + var duration = part ? part.duration : frag.duration; + var timeLoading = now - stats.loading.start; + var minAutoLevel = hls.minAutoLevel; + // If frag loading is aborted, complete, or from lowest level, stop timer and return + if (stats.aborted || stats.loaded && stats.loaded === stats.total || frag.level <= minAutoLevel) { + _this.clearTimer(); + // reset forced auto level value so that next level will be selected + _this._nextAutoLevel = -1; + return; + } + + // This check only runs if we're in ABR mode and actually playing + if (!autoLevelEnabled || media.paused || !media.playbackRate || !media.readyState) { + return; + } + var bufferInfo = hls.mainForwardBufferInfo; + if (bufferInfo === null) { + return; + } + var ttfbEstimate = _this.bwEstimator.getEstimateTTFB(); + var playbackRate = Math.abs(media.playbackRate); + // To maintain stable adaptive playback, only begin monitoring frag loading after half or more of its playback duration has passed + if (timeLoading <= Math.max(ttfbEstimate, 1000 * (duration / (playbackRate * 2)))) { + return; + } + + // bufferStarvationDelay is an estimate of the amount time (in seconds) it will take to exhaust the buffer + var bufferStarvationDelay = bufferInfo.len / playbackRate; + var ttfb = stats.loading.first ? stats.loading.first - stats.loading.start : -1; + var loadedFirstByte = stats.loaded && ttfb > -1; + var bwEstimate = _this.getBwEstimate(); + var levels = hls.levels; + var level = levels[frag.level]; + var expectedLen = stats.total || Math.max(stats.loaded, Math.round(duration * level.averageBitrate / 8)); + var timeStreaming = loadedFirstByte ? timeLoading - ttfb : timeLoading; + if (timeStreaming < 1 && loadedFirstByte) { + timeStreaming = Math.min(timeLoading, stats.loaded * 8 / bwEstimate); + } + var loadRate = loadedFirstByte ? stats.loaded * 1000 / timeStreaming : 0; + // fragLoadDelay is an estimate of the time (in seconds) it will take to buffer the remainder of the fragment + var fragLoadedDelay = loadRate ? (expectedLen - stats.loaded) / loadRate : expectedLen * 8 / bwEstimate + ttfbEstimate / 1000; + // Only downswitch if the time to finish loading the current fragment is greater than the amount of buffer left + if (fragLoadedDelay <= bufferStarvationDelay) { + return; + } + var bwe = loadRate ? loadRate * 8 : bwEstimate; + var fragLevelNextLoadedDelay = Number.POSITIVE_INFINITY; + var nextLoadLevel; + // Iterate through lower level and try to find the largest one that avoids rebuffering + for (nextLoadLevel = frag.level - 1; nextLoadLevel > minAutoLevel; nextLoadLevel--) { + // compute time to load next fragment at lower level + // 8 = bits per byte (bps/Bps) + var levelNextBitrate = levels[nextLoadLevel].maxBitrate; + fragLevelNextLoadedDelay = _this.getTimeToLoadFrag(ttfbEstimate / 1000, bwe, duration * levelNextBitrate, !levels[nextLoadLevel].details); + if (fragLevelNextLoadedDelay < bufferStarvationDelay) { + break; + } + } + // Only emergency switch down if it takes less time to load a new fragment at lowest level instead of continuing + // to load the current one + if (fragLevelNextLoadedDelay >= fragLoadedDelay) { + return; + } + + // if estimated load time of new segment is completely unreasonable, ignore and do not emergency switch down + if (fragLevelNextLoadedDelay > duration * 10) { + return; + } + hls.nextLoadLevel = hls.nextAutoLevel = nextLoadLevel; + if (loadedFirstByte) { + // If there has been loading progress, sample bandwidth using loading time offset by minimum TTFB time + _this.bwEstimator.sample(timeLoading - Math.min(ttfbEstimate, ttfb), stats.loaded); + } else { + // If there has been no loading progress, sample TTFB + _this.bwEstimator.sampleTTFB(timeLoading); + } + var nextLoadLevelBitrate = levels[nextLoadLevel].maxBitrate; + if (_this.getBwEstimate() * _this.hls.config.abrBandWidthUpFactor > nextLoadLevelBitrate) { + _this.resetEstimator(nextLoadLevelBitrate); + } + _this.clearTimer(); + _this.warn("Fragment " + frag.sn + (part ? ' part ' + part.index : '') + " of level " + frag.level + " is loading too slowly;\n Time to underbuffer: " + bufferStarvationDelay.toFixed(3) + " s\n Estimated load time for current fragment: " + fragLoadedDelay.toFixed(3) + " s\n Estimated load time for down switch fragment: " + fragLevelNextLoadedDelay.toFixed(3) + " s\n TTFB estimate: " + (ttfb | 0) + " ms\n Current BW estimate: " + (isFiniteNumber(bwEstimate) ? bwEstimate | 0 : 'Unknown') + " bps\n New BW estimate: " + (_this.getBwEstimate() | 0) + " bps\n Switching to level " + nextLoadLevel + " @ " + (nextLoadLevelBitrate | 0) + " bps"); + hls.trigger(Events.FRAG_LOAD_EMERGENCY_ABORTED, { + frag: frag, + part: part, + stats: stats + }); + }; + _this.hls = _hls; + _this.bwEstimator = _this.initEstimator(); + _this.registerListeners(); + return _this; + } + _inheritsLoose(AbrController, _Logger); + var _proto = AbrController.prototype; + _proto.resetEstimator = function resetEstimator(abrEwmaDefaultEstimate) { + if (abrEwmaDefaultEstimate) { + this.log("setting initial bwe to " + abrEwmaDefaultEstimate); + this.hls.config.abrEwmaDefaultEstimate = abrEwmaDefaultEstimate; + } + this.firstSelection = -1; + this.bwEstimator = this.initEstimator(); + }; + _proto.initEstimator = function initEstimator() { + var config = this.hls.config; + return new EwmaBandWidthEstimator(config.abrEwmaSlowVoD, config.abrEwmaFastVoD, config.abrEwmaDefaultEstimate); + }; + _proto.registerListeners = function registerListeners() { + var hls = this.hls; + hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.on(Events.FRAG_LOADING, this.onFragLoading, this); + hls.on(Events.FRAG_LOADED, this.onFragLoaded, this); + hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this); + hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this); + hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this); + hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this); + hls.on(Events.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this); + hls.on(Events.ERROR, this.onError, this); + }; + _proto.unregisterListeners = function unregisterListeners() { + var hls = this.hls; + if (!hls) { + return; + } + hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.off(Events.FRAG_LOADING, this.onFragLoading, this); + hls.off(Events.FRAG_LOADED, this.onFragLoaded, this); + hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this); + hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this); + hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this); + hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this); + hls.off(Events.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this); + hls.off(Events.ERROR, this.onError, this); + }; + _proto.destroy = function destroy() { + this.unregisterListeners(); + this.clearTimer(); + // @ts-ignore + this.hls = this._abandonRulesCheck = null; + this.fragCurrent = this.partCurrent = null; + }; + _proto.onManifestLoading = function onManifestLoading(event, data) { + this.lastLoadedFragLevel = -1; + this.firstSelection = -1; + this.lastLevelLoadSec = 0; + this.fragCurrent = this.partCurrent = null; + this.onLevelsUpdated(); + this.clearTimer(); + }; + _proto.onLevelsUpdated = function onLevelsUpdated() { + if (this.lastLoadedFragLevel > -1 && this.fragCurrent) { + this.lastLoadedFragLevel = this.fragCurrent.level; + } + this._nextAutoLevel = -1; + this.onMaxAutoLevelUpdated(); + this.codecTiers = null; + this.audioTracksByGroup = null; + }; + _proto.onMaxAutoLevelUpdated = function onMaxAutoLevelUpdated() { + this.firstSelection = -1; + this.nextAutoLevelKey = ''; + }; + _proto.onFragLoading = function onFragLoading(event, data) { + var frag = data.frag; + if (this.ignoreFragment(frag)) { + return; + } + if (!frag.bitrateTest) { + var _data$part; + this.fragCurrent = frag; + this.partCurrent = (_data$part = data.part) != null ? _data$part : null; + } + this.clearTimer(); + this.timer = self.setInterval(this._abandonRulesCheck, 100); + }; + _proto.onLevelSwitching = function onLevelSwitching(event, data) { + this.clearTimer(); + }; + _proto.onError = function onError(event, data) { + if (data.fatal) { + return; + } + switch (data.details) { + case ErrorDetails.BUFFER_ADD_CODEC_ERROR: + case ErrorDetails.BUFFER_APPEND_ERROR: + // Reset last loaded level so that a new selection can be made after calling recoverMediaError + this.lastLoadedFragLevel = -1; + this.firstSelection = -1; + break; + case ErrorDetails.FRAG_LOAD_TIMEOUT: + { + var frag = data.frag; + var fragCurrent = this.fragCurrent, + part = this.partCurrent; + if (frag && fragCurrent && frag.sn === fragCurrent.sn && frag.level === fragCurrent.level) { + var now = performance.now(); + var stats = part ? part.stats : frag.stats; + var timeLoading = now - stats.loading.start; + var ttfb = stats.loading.first ? stats.loading.first - stats.loading.start : -1; + var loadedFirstByte = stats.loaded && ttfb > -1; + if (loadedFirstByte) { + var ttfbEstimate = this.bwEstimator.getEstimateTTFB(); + this.bwEstimator.sample(timeLoading - Math.min(ttfbEstimate, ttfb), stats.loaded); + } else { + this.bwEstimator.sampleTTFB(timeLoading); + } + } + break; + } + } + }; + _proto.getTimeToLoadFrag = function getTimeToLoadFrag(timeToFirstByteSec, bandwidth, fragSizeBits, isSwitch) { + var fragLoadSec = timeToFirstByteSec + fragSizeBits / bandwidth; + var playlistLoadSec = isSwitch ? this.lastLevelLoadSec : 0; + return fragLoadSec + playlistLoadSec; + }; + _proto.onLevelLoaded = function onLevelLoaded(event, data) { + var config = this.hls.config; + var loading = data.stats.loading; + var timeLoadingMs = loading.end - loading.start; + if (isFiniteNumber(timeLoadingMs)) { + this.lastLevelLoadSec = timeLoadingMs / 1000; + } + if (data.details.live) { + this.bwEstimator.update(config.abrEwmaSlowLive, config.abrEwmaFastLive); + } else { + this.bwEstimator.update(config.abrEwmaSlowVoD, config.abrEwmaFastVoD); + } + }; + _proto.onFragLoaded = function onFragLoaded(event, _ref) { + var frag = _ref.frag, + part = _ref.part; + var stats = part ? part.stats : frag.stats; + if (frag.type === PlaylistLevelType.MAIN) { + this.bwEstimator.sampleTTFB(stats.loading.first - stats.loading.start); + } + if (this.ignoreFragment(frag)) { + return; + } + // stop monitoring bw once frag loaded + this.clearTimer(); + // reset forced auto level value so that next level will be selected + if (frag.level === this._nextAutoLevel) { + this._nextAutoLevel = -1; + } + this.firstSelection = -1; + + // compute level average bitrate + if (this.hls.config.abrMaxWithRealBitrate) { + var duration = part ? part.duration : frag.duration; + var level = this.hls.levels[frag.level]; + var loadedBytes = (level.loaded ? level.loaded.bytes : 0) + stats.loaded; + var loadedDuration = (level.loaded ? level.loaded.duration : 0) + duration; + level.loaded = { + bytes: loadedBytes, + duration: loadedDuration + }; + level.realBitrate = Math.round(8 * loadedBytes / loadedDuration); + } + if (frag.bitrateTest) { + var fragBufferedData = { + stats: stats, + frag: frag, + part: part, + id: frag.type + }; + this.onFragBuffered(Events.FRAG_BUFFERED, fragBufferedData); + frag.bitrateTest = false; + } else { + // store level id after successful fragment load for playback + this.lastLoadedFragLevel = frag.level; + } + }; + _proto.onFragBuffered = function onFragBuffered(event, data) { + var frag = data.frag, + part = data.part; + var stats = part != null && part.stats.loaded ? part.stats : frag.stats; + if (stats.aborted) { + return; + } + if (this.ignoreFragment(frag)) { + return; + } + // Use the difference between parsing and request instead of buffering and request to compute fragLoadingProcessing; + // rationale is that buffer appending only happens once media is attached. This can happen when config.startFragPrefetch + // is used. If we used buffering in that case, our BW estimate sample will be very large. + var processingMs = stats.parsing.end - stats.loading.start - Math.min(stats.loading.first - stats.loading.start, this.bwEstimator.getEstimateTTFB()); + this.bwEstimator.sample(processingMs, stats.loaded); + stats.bwEstimate = this.getBwEstimate(); + if (frag.bitrateTest) { + this.bitrateTestDelay = processingMs / 1000; + } else { + this.bitrateTestDelay = 0; + } + }; + _proto.ignoreFragment = function ignoreFragment(frag) { + // Only count non-alt-audio frags which were actually buffered in our BW calculations + return frag.type !== PlaylistLevelType.MAIN || frag.sn === 'initSegment'; + }; + _proto.clearTimer = function clearTimer() { + if (this.timer > -1) { + self.clearInterval(this.timer); + this.timer = -1; + } + }; + _proto.getAutoLevelKey = function getAutoLevelKey() { + return this.getBwEstimate() + "_" + this.getStarvationDelay().toFixed(2); + }; + _proto.getNextABRAutoLevel = function getNextABRAutoLevel() { + var fragCurrent = this.fragCurrent, + partCurrent = this.partCurrent, + hls = this.hls; + if (hls.levels.length <= 1) { + return hls.loadLevel; + } + var maxAutoLevel = hls.maxAutoLevel, + config = hls.config, + minAutoLevel = hls.minAutoLevel; + var currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0; + var avgbw = this.getBwEstimate(); + // bufferStarvationDelay is the wall-clock time left until the playback buffer is exhausted. + var bufferStarvationDelay = this.getStarvationDelay(); + var bwFactor = config.abrBandWidthFactor; + var bwUpFactor = config.abrBandWidthUpFactor; + + // First, look to see if we can find a level matching with our avg bandwidth AND that could also guarantee no rebuffering at all + if (bufferStarvationDelay) { + var _bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, 0, bwFactor, bwUpFactor); + if (_bestLevel >= 0) { + return _bestLevel; + } + } + // not possible to get rid of rebuffering... try to find level that will guarantee less than maxStarvationDelay of rebuffering + var maxStarvationDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxStarvationDelay) : config.maxStarvationDelay; + if (!bufferStarvationDelay) { + // in case buffer is empty, let's check if previous fragment was loaded to perform a bitrate test + var bitrateTestDelay = this.bitrateTestDelay; + if (bitrateTestDelay) { + // if it is the case, then we need to adjust our max starvation delay using maxLoadingDelay config value + // max video loading delay used in automatic start level selection : + // in that mode ABR controller will ensure that video loading time (ie the time to fetch the first fragment at lowest quality level + + // the time to fetch the fragment at the appropriate quality level is less than ```maxLoadingDelay``` ) + // cap maxLoadingDelay and ensure it is not bigger 'than bitrate test' frag duration + var maxLoadingDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxLoadingDelay) : config.maxLoadingDelay; + maxStarvationDelay = maxLoadingDelay - bitrateTestDelay; + this.info("bitrate test took " + Math.round(1000 * bitrateTestDelay) + "ms, set first fragment max fetchDuration to " + Math.round(1000 * maxStarvationDelay) + " ms"); + // don't use conservative factor on bitrate test + bwFactor = bwUpFactor = 1; + } + } + var bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, maxStarvationDelay, bwFactor, bwUpFactor); + this.info((bufferStarvationDelay ? 'rebuffering expected' : 'buffer is empty') + ", optimal quality level " + bestLevel); + if (bestLevel > -1) { + return bestLevel; + } + // If no matching level found, see if min auto level would be a better option + var minLevel = hls.levels[minAutoLevel]; + var autoLevel = hls.levels[hls.loadLevel]; + if ((minLevel == null ? void 0 : minLevel.bitrate) < (autoLevel == null ? void 0 : autoLevel.bitrate)) { + return minAutoLevel; + } + // or if bitrate is not lower, continue to use loadLevel + return hls.loadLevel; + }; + _proto.getStarvationDelay = function getStarvationDelay() { + var hls = this.hls; + var media = hls.media; + if (!media) { + return Infinity; + } + // playbackRate is the absolute value of the playback rate; if media.playbackRate is 0, we use 1 to load as + // if we're playing back at the normal rate. + var playbackRate = media && media.playbackRate !== 0 ? Math.abs(media.playbackRate) : 1.0; + var bufferInfo = hls.mainForwardBufferInfo; + return (bufferInfo ? bufferInfo.len : 0) / playbackRate; + }; + _proto.getBwEstimate = function getBwEstimate() { + return this.bwEstimator.canEstimate() ? this.bwEstimator.getEstimate() : this.hls.config.abrEwmaDefaultEstimate; + }; + _proto.findBestLevel = function findBestLevel(currentBw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, maxStarvationDelay, bwFactor, bwUpFactor) { + var _level$details, + _this3 = this; + var maxFetchDuration = bufferStarvationDelay + maxStarvationDelay; + var lastLoadedFragLevel = this.lastLoadedFragLevel; + var selectionBaseLevel = lastLoadedFragLevel === -1 ? this.hls.firstLevel : lastLoadedFragLevel; + var fragCurrent = this.fragCurrent, + partCurrent = this.partCurrent; + var _this$hls = this.hls, + levels = _this$hls.levels, + allAudioTracks = _this$hls.allAudioTracks, + loadLevel = _this$hls.loadLevel, + config = _this$hls.config; + if (levels.length === 1) { + return 0; + } + var level = levels[selectionBaseLevel]; + var live = !!(level != null && (_level$details = level.details) != null && _level$details.live); + var firstSelection = loadLevel === -1 || lastLoadedFragLevel === -1; + var currentCodecSet; + var currentVideoRange = 'SDR'; + var currentFrameRate = (level == null ? void 0 : level.frameRate) || 0; + var audioPreference = config.audioPreference, + videoPreference = config.videoPreference; + var audioTracksByGroup = this.audioTracksByGroup || (this.audioTracksByGroup = getAudioTracksByGroup(allAudioTracks)); + var minStartIndex = -1; + if (firstSelection) { + if (this.firstSelection !== -1) { + return this.firstSelection; + } + var codecTiers = this.codecTiers || (this.codecTiers = getCodecTiers(levels, audioTracksByGroup, minAutoLevel, maxAutoLevel)); + var startTier = getStartCodecTier(codecTiers, currentVideoRange, currentBw, audioPreference, videoPreference); + var codecSet = startTier.codecSet, + videoRanges = startTier.videoRanges, + minFramerate = startTier.minFramerate, + minBitrate = startTier.minBitrate, + minIndex = startTier.minIndex, + preferHDR = startTier.preferHDR; + minStartIndex = minIndex; + currentCodecSet = codecSet; + currentVideoRange = preferHDR ? videoRanges[videoRanges.length - 1] : videoRanges[0]; + currentFrameRate = minFramerate; + currentBw = Math.max(currentBw, minBitrate); + this.log("picked start tier " + JSON.stringify(startTier)); + } else { + currentCodecSet = level == null ? void 0 : level.codecSet; + currentVideoRange = level == null ? void 0 : level.videoRange; + } + var currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0; + var ttfbEstimateSec = this.bwEstimator.getEstimateTTFB() / 1000; + var levelsSkipped = []; + var _loop = function _loop() { + var _levelInfo$supportedR; + var levelInfo = levels[i]; + var upSwitch = i > selectionBaseLevel; + if (!levelInfo) { + return 0; // continue + } + if (config.useMediaCapabilities && !levelInfo.supportedResult && !levelInfo.supportedPromise) { + var mediaCapabilities = navigator.mediaCapabilities; + if (typeof (mediaCapabilities == null ? void 0 : mediaCapabilities.decodingInfo) === 'function' && requiresMediaCapabilitiesDecodingInfo(levelInfo, audioTracksByGroup, currentVideoRange, currentFrameRate, currentBw, audioPreference)) { + levelInfo.supportedPromise = getMediaDecodingInfoPromise(levelInfo, audioTracksByGroup, mediaCapabilities); + levelInfo.supportedPromise.then(function (decodingInfo) { + if (!_this3.hls) { + return; + } + levelInfo.supportedResult = decodingInfo; + var levels = _this3.hls.levels; + var index = levels.indexOf(levelInfo); + if (decodingInfo.error) { + _this3.warn("MediaCapabilities decodingInfo error: \"" + decodingInfo.error + "\" for level " + index + " " + JSON.stringify(decodingInfo)); + } else if (!decodingInfo.supported) { + _this3.warn("Unsupported MediaCapabilities decodingInfo result for level " + index + " " + JSON.stringify(decodingInfo)); + if (index > -1 && levels.length > 1) { + _this3.log("Removing unsupported level " + index); + _this3.hls.removeLevel(index); + } + } + }); + } else { + levelInfo.supportedResult = SUPPORTED_INFO_DEFAULT; + } + } + + // skip candidates which change codec-family or video-range, + // and which decrease or increase frame-rate for up and down-switch respectfully + if (currentCodecSet && levelInfo.codecSet !== currentCodecSet || currentVideoRange && levelInfo.videoRange !== currentVideoRange || upSwitch && currentFrameRate > levelInfo.frameRate || !upSwitch && currentFrameRate > 0 && currentFrameRate < levelInfo.frameRate || levelInfo.supportedResult && !((_levelInfo$supportedR = levelInfo.supportedResult.decodingInfoResults) != null && _levelInfo$supportedR[0].smooth)) { + if (!firstSelection || i !== minStartIndex) { + levelsSkipped.push(i); + return 0; // continue + } + } + var levelDetails = levelInfo.details; + var avgDuration = (partCurrent ? levelDetails == null ? void 0 : levelDetails.partTarget : levelDetails == null ? void 0 : levelDetails.averagetargetduration) || currentFragDuration; + var adjustedbw; + // follow algorithm captured from stagefright : + // https://android.googlesource.com/platform/frameworks/av/+/master/media/libstagefright/httplive/LiveSession.cpp + // Pick the highest bandwidth stream below or equal to estimated bandwidth. + // consider only 80% of the available bandwidth, but if we are switching up, + // be even more conservative (70%) to avoid overestimating and immediately + // switching back. + if (!upSwitch) { + adjustedbw = bwFactor * currentBw; + } else { + adjustedbw = bwUpFactor * currentBw; + } + + // Use average bitrate when starvation delay (buffer length) is gt or eq two segment durations and rebuffering is not expected (maxStarvationDelay > 0) + var bitrate = currentFragDuration && bufferStarvationDelay >= currentFragDuration * 2 && maxStarvationDelay === 0 ? levels[i].averageBitrate : levels[i].maxBitrate; + var fetchDuration = _this3.getTimeToLoadFrag(ttfbEstimateSec, adjustedbw, bitrate * avgDuration, levelDetails === undefined); + var canSwitchWithinTolerance = + // if adjusted bw is greater than level bitrate AND + adjustedbw >= bitrate && ( + // no level change, or new level has no error history + i === lastLoadedFragLevel || levelInfo.loadError === 0 && levelInfo.fragmentError === 0) && ( + // fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches + // we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ... + // special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that findBestLevel will return -1 + fetchDuration <= ttfbEstimateSec || !isFiniteNumber(fetchDuration) || live && !_this3.bitrateTestDelay || fetchDuration < maxFetchDuration); + if (canSwitchWithinTolerance) { + var forcedAutoLevel = _this3.forcedAutoLevel; + if (i !== loadLevel && (forcedAutoLevel === -1 || forcedAutoLevel !== loadLevel)) { + if (levelsSkipped.length) { + _this3.trace("Skipped level(s) " + levelsSkipped.join(',') + " of " + maxAutoLevel + " max with CODECS and VIDEO-RANGE:\"" + levels[levelsSkipped[0]].codecs + "\" " + levels[levelsSkipped[0]].videoRange + "; not compatible with \"" + level.codecs + "\" " + currentVideoRange); + } + _this3.info("switch candidate:" + selectionBaseLevel + "->" + i + " adjustedbw(" + Math.round(adjustedbw) + ")-bitrate=" + Math.round(adjustedbw - bitrate) + " ttfb:" + ttfbEstimateSec.toFixed(1) + " avgDuration:" + avgDuration.toFixed(1) + " maxFetchDuration:" + maxFetchDuration.toFixed(1) + " fetchDuration:" + fetchDuration.toFixed(1) + " firstSelection:" + firstSelection + " codecSet:" + levelInfo.codecSet + " videoRange:" + levelInfo.videoRange + " hls.loadLevel:" + loadLevel); + } + if (firstSelection) { + _this3.firstSelection = i; + } + // as we are looping from highest to lowest, this will return the best achievable quality level + return { + v: i + }; + } + }, + _ret; + for (var i = maxAutoLevel; i >= minAutoLevel; i--) { + _ret = _loop(); + if (_ret === 0) continue; + if (_ret) return _ret.v; + } + // not enough time budget even with quality level 0 ... rebuffering might happen + return -1; + }; + return _createClass(AbrController, [{ + key: "firstAutoLevel", + get: function get() { + var _this$hls2 = this.hls, + maxAutoLevel = _this$hls2.maxAutoLevel, + minAutoLevel = _this$hls2.minAutoLevel; + var bwEstimate = this.getBwEstimate(); + var maxStartDelay = this.hls.config.maxStarvationDelay; + var abrAutoLevel = this.findBestLevel(bwEstimate, minAutoLevel, maxAutoLevel, 0, maxStartDelay, 1, 1); + if (abrAutoLevel > -1) { + return abrAutoLevel; + } + var firstLevel = this.hls.firstLevel; + var clamped = Math.min(Math.max(firstLevel, minAutoLevel), maxAutoLevel); + this.warn("Could not find best starting auto level. Defaulting to first in playlist " + firstLevel + " clamped to " + clamped); + return clamped; + } + }, { + key: "forcedAutoLevel", + get: function get() { + if (this.nextAutoLevelKey) { + return -1; + } + return this._nextAutoLevel; + } + + // return next auto level + }, { + key: "nextAutoLevel", + get: function get() { + var forcedAutoLevel = this.forcedAutoLevel; + var bwEstimator = this.bwEstimator; + var useEstimate = bwEstimator.canEstimate(); + var loadedFirstFrag = this.lastLoadedFragLevel > -1; + // in case next auto level has been forced, and bw not available or not reliable, return forced value + if (forcedAutoLevel !== -1 && (!useEstimate || !loadedFirstFrag || this.nextAutoLevelKey === this.getAutoLevelKey())) { + return forcedAutoLevel; + } + + // compute next level using ABR logic + var nextABRAutoLevel = useEstimate && loadedFirstFrag ? this.getNextABRAutoLevel() : this.firstAutoLevel; + + // use forced auto level while it hasn't errored more than ABR selection + if (forcedAutoLevel !== -1) { + var levels = this.hls.levels; + if (levels.length > Math.max(forcedAutoLevel, nextABRAutoLevel) && levels[forcedAutoLevel].loadError <= levels[nextABRAutoLevel].loadError) { + return forcedAutoLevel; + } + } + + // save result until state has changed + this._nextAutoLevel = nextABRAutoLevel; + this.nextAutoLevelKey = this.getAutoLevelKey(); + return nextABRAutoLevel; + }, + set: function set(nextLevel) { + var _this$hls3 = this.hls, + maxAutoLevel = _this$hls3.maxAutoLevel, + minAutoLevel = _this$hls3.minAutoLevel; + var value = Math.min(Math.max(nextLevel, minAutoLevel), maxAutoLevel); + if (this._nextAutoLevel !== value) { + this.nextAutoLevelKey = ''; + this._nextAutoLevel = value; + } + } + }]); + }(Logger); + + /** + * @ignore + * Sub-class specialization of EventHandler base class. + * + * TaskLoop allows to schedule a task function being called (optionnaly repeatedly) on the main loop, + * scheduled asynchroneously, avoiding recursive calls in the same tick. + * + * The task itself is implemented in `doTick`. It can be requested and called for single execution + * using the `tick` method. + * + * It will be assured that the task execution method (`tick`) only gets called once per main loop "tick", + * no matter how often it gets requested for execution. Execution in further ticks will be scheduled accordingly. + * + * If further execution requests have already been scheduled on the next tick, it can be checked with `hasNextTick`, + * and cancelled with `clearNextTick`. + * + * The task can be scheduled as an interval repeatedly with a period as parameter (see `setInterval`, `clearInterval`). + * + * Sub-classes need to implement the `doTick` method which will effectively have the task execution routine. + * + * Further explanations: + * + * The baseclass has a `tick` method that will schedule the doTick call. It may be called synchroneously + * only for a stack-depth of one. On re-entrant calls, sub-sequent calls are scheduled for next main loop ticks. + * + * When the task execution (`tick` method) is called in re-entrant way this is detected and + * we are limiting the task execution per call stack to exactly one, but scheduling/post-poning further + * task processing on the next main loop iteration (also known as "next tick" in the Node/JS runtime lingo). + */ + var TaskLoop = /*#__PURE__*/function (_Logger) { + function TaskLoop(label, logger) { + var _this; + _this = _Logger.call(this, label, logger) || this; + _this._boundTick = void 0; + _this._tickTimer = null; + _this._tickInterval = null; + _this._tickCallCount = 0; + _this._boundTick = _this.tick.bind(_this); + return _this; + } + _inheritsLoose(TaskLoop, _Logger); + var _proto = TaskLoop.prototype; + _proto.destroy = function destroy() { + this.onHandlerDestroying(); + this.onHandlerDestroyed(); + }; + _proto.onHandlerDestroying = function onHandlerDestroying() { + // clear all timers before unregistering from event bus + this.clearNextTick(); + this.clearInterval(); + }; + _proto.onHandlerDestroyed = function onHandlerDestroyed() {}; + _proto.hasInterval = function hasInterval() { + return !!this._tickInterval; + }; + _proto.hasNextTick = function hasNextTick() { + return !!this._tickTimer; + } + + /** + * @param millis - Interval time (ms) + * @eturns True when interval has been scheduled, false when already scheduled (no effect) + */; + _proto.setInterval = function setInterval(millis) { + if (!this._tickInterval) { + this._tickCallCount = 0; + this._tickInterval = self.setInterval(this._boundTick, millis); + return true; + } + return false; + } + + /** + * @returns True when interval was cleared, false when none was set (no effect) + */; + _proto.clearInterval = function clearInterval() { + if (this._tickInterval) { + self.clearInterval(this._tickInterval); + this._tickInterval = null; + return true; + } + return false; + } + + /** + * @returns True when timeout was cleared, false when none was set (no effect) + */; + _proto.clearNextTick = function clearNextTick() { + if (this._tickTimer) { + self.clearTimeout(this._tickTimer); + this._tickTimer = null; + return true; + } + return false; + } + + /** + * Will call the subclass doTick implementation in this main loop tick + * or in the next one (via setTimeout(,0)) in case it has already been called + * in this tick (in case this is a re-entrant call). + */; + _proto.tick = function tick() { + this._tickCallCount++; + if (this._tickCallCount === 1) { + this.doTick(); + // re-entrant call to tick from previous doTick call stack + // -> schedule a call on the next main loop iteration to process this task processing request + if (this._tickCallCount > 1) { + // make sure only one timer exists at any time at max + this.tickImmediate(); + } + this._tickCallCount = 0; + } + }; + _proto.tickImmediate = function tickImmediate() { + this.clearNextTick(); + this._tickTimer = self.setTimeout(this._boundTick, 0); + } + + /** + * For subclass to implement task logic + * @abstract + */; + _proto.doTick = function doTick() {}; + return TaskLoop; + }(Logger); + + var FragmentState = { + NOT_LOADED: "NOT_LOADED", + APPENDING: "APPENDING", + PARTIAL: "PARTIAL", + OK: "OK" + }; + var FragmentTracker = /*#__PURE__*/function () { + function FragmentTracker(hls) { + this.activePartLists = Object.create(null); + this.endListFragments = Object.create(null); + this.fragments = Object.create(null); + this.timeRanges = Object.create(null); + this.bufferPadding = 0.2; + this.hls = void 0; + this.hasGaps = false; + this.hls = hls; + this._registerListeners(); + } + var _proto = FragmentTracker.prototype; + _proto._registerListeners = function _registerListeners() { + var hls = this.hls; + hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.on(Events.BUFFER_APPENDED, this.onBufferAppended, this); + hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this); + hls.on(Events.FRAG_LOADED, this.onFragLoaded, this); + }; + _proto._unregisterListeners = function _unregisterListeners() { + var hls = this.hls; + hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.off(Events.BUFFER_APPENDED, this.onBufferAppended, this); + hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this); + hls.off(Events.FRAG_LOADED, this.onFragLoaded, this); + }; + _proto.destroy = function destroy() { + this._unregisterListeners(); + // @ts-ignore + this.fragments = + // @ts-ignore + this.activePartLists = + // @ts-ignore + this.endListFragments = this.timeRanges = null; + } + + /** + * Return a Fragment or Part with an appended range that matches the position and levelType + * Otherwise, return null + */; + _proto.getAppendedFrag = function getAppendedFrag(position, levelType) { + var activeParts = this.activePartLists[levelType]; + if (activeParts) { + for (var i = activeParts.length; i--;) { + var activePart = activeParts[i]; + if (!activePart) { + break; + } + var appendedPTS = activePart.end; + if (activePart.start <= position && appendedPTS !== null && position <= appendedPTS) { + return activePart; + } + } + } + return this.getBufferedFrag(position, levelType); + } + + /** + * Return a buffered Fragment that matches the position and levelType. + * A buffered Fragment is one whose loading, parsing and appending is done (completed or "partial" meaning aborted). + * If not found any Fragment, return null + */; + _proto.getBufferedFrag = function getBufferedFrag(position, levelType) { + return this.getFragAtPos(position, levelType, true); + }; + _proto.getFragAtPos = function getFragAtPos(position, levelType, buffered) { + var fragments = this.fragments; + var keys = Object.keys(fragments); + for (var i = keys.length; i--;) { + var fragmentEntity = fragments[keys[i]]; + if ((fragmentEntity == null ? void 0 : fragmentEntity.body.type) === levelType && (!buffered || fragmentEntity.buffered)) { + var frag = fragmentEntity.body; + if (frag.start <= position && position <= frag.end) { + return frag; + } + } + } + return null; + } + + /** + * Partial fragments effected by coded frame eviction will be removed + * The browser will unload parts of the buffer to free up memory for new buffer data + * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable) + */; + _proto.detectEvictedFragments = function detectEvictedFragments(elementaryStream, timeRange, playlistType, appendedPart, removeAppending) { + var _this = this; + if (this.timeRanges) { + this.timeRanges[elementaryStream] = timeRange; + } + // Check if any flagged fragments have been unloaded + // excluding anything newer than appendedPartSn + var appendedPartSn = (appendedPart == null ? void 0 : appendedPart.fragment.sn) || -1; + Object.keys(this.fragments).forEach(function (key) { + var fragmentEntity = _this.fragments[key]; + if (!fragmentEntity) { + return; + } + if (appendedPartSn >= fragmentEntity.body.sn) { + return; + } + if (!fragmentEntity.buffered && (!fragmentEntity.loaded || removeAppending)) { + if (fragmentEntity.body.type === playlistType) { + _this.removeFragment(fragmentEntity.body); + } + return; + } + var esData = fragmentEntity.range[elementaryStream]; + if (!esData) { + return; + } + if (esData.time.length === 0) { + _this.removeFragment(fragmentEntity.body); + return; + } + esData.time.some(function (time) { + var isNotBuffered = !_this.isTimeBuffered(time.startPTS, time.endPTS, timeRange); + if (isNotBuffered) { + // Unregister partial fragment as it needs to load again to be reused + _this.removeFragment(fragmentEntity.body); + } + return isNotBuffered; + }); + }); + } + + /** + * Checks if the fragment passed in is loaded in the buffer properly + * Partially loaded fragments will be registered as a partial fragment + */; + _proto.detectPartialFragments = function detectPartialFragments(data) { + var _this2 = this; + var timeRanges = this.timeRanges; + if (!timeRanges || data.frag.sn === 'initSegment') { + return; + } + var frag = data.frag; + var fragKey = getFragmentKey(frag); + var fragmentEntity = this.fragments[fragKey]; + if (!fragmentEntity || fragmentEntity.buffered && frag.gap) { + return; + } + var isFragHint = !frag.relurl; + Object.keys(timeRanges).forEach(function (elementaryStream) { + var streamInfo = frag.elementaryStreams[elementaryStream]; + if (!streamInfo) { + return; + } + var timeRange = timeRanges[elementaryStream]; + var partial = isFragHint || streamInfo.partial === true; + fragmentEntity.range[elementaryStream] = _this2.getBufferedTimes(frag, data.part, partial, timeRange); + }); + fragmentEntity.loaded = null; + if (Object.keys(fragmentEntity.range).length) { + fragmentEntity.buffered = true; + var endList = fragmentEntity.body.endList = frag.endList || fragmentEntity.body.endList; + if (endList) { + this.endListFragments[fragmentEntity.body.type] = fragmentEntity; + } + if (!isPartial(fragmentEntity)) { + // Remove older fragment parts from lookup after frag is tracked as buffered + this.removeParts(frag.sn - 1, frag.type); + } + } else { + // remove fragment if nothing was appended + this.removeFragment(fragmentEntity.body); + } + }; + _proto.removeParts = function removeParts(snToKeep, levelType) { + var activeParts = this.activePartLists[levelType]; + if (!activeParts) { + return; + } + this.activePartLists[levelType] = activeParts.filter(function (part) { + return part.fragment.sn >= snToKeep; + }); + }; + _proto.fragBuffered = function fragBuffered(frag, force) { + var fragKey = getFragmentKey(frag); + var fragmentEntity = this.fragments[fragKey]; + if (!fragmentEntity && force) { + fragmentEntity = this.fragments[fragKey] = { + body: frag, + appendedPTS: null, + loaded: null, + buffered: false, + range: Object.create(null) + }; + if (frag.gap) { + this.hasGaps = true; + } + } + if (fragmentEntity) { + fragmentEntity.loaded = null; + fragmentEntity.buffered = true; + } + }; + _proto.getBufferedTimes = function getBufferedTimes(fragment, part, partial, timeRange) { + var buffered = { + time: [], + partial: partial + }; + var startPTS = fragment.start; + var endPTS = fragment.end; + var minEndPTS = fragment.minEndPTS || endPTS; + var maxStartPTS = fragment.maxStartPTS || startPTS; + for (var i = 0; i < timeRange.length; i++) { + var startTime = timeRange.start(i) - this.bufferPadding; + var endTime = timeRange.end(i) + this.bufferPadding; + if (maxStartPTS >= startTime && minEndPTS <= endTime) { + // Fragment is entirely contained in buffer + // No need to check the other timeRange times since it's completely playable + buffered.time.push({ + startPTS: Math.max(startPTS, timeRange.start(i)), + endPTS: Math.min(endPTS, timeRange.end(i)) + }); + break; + } else if (startPTS < endTime && endPTS > startTime) { + var start = Math.max(startPTS, timeRange.start(i)); + var end = Math.min(endPTS, timeRange.end(i)); + if (end > start) { + buffered.partial = true; + // Check for intersection with buffer + // Get playable sections of the fragment + buffered.time.push({ + startPTS: start, + endPTS: end + }); + } + } else if (endPTS <= startTime) { + // No need to check the rest of the timeRange as it is in order + break; + } + } + return buffered; + } + + /** + * Gets the partial fragment for a certain time + */; + _proto.getPartialFragment = function getPartialFragment(time) { + var bestFragment = null; + var timePadding; + var startTime; + var endTime; + var bestOverlap = 0; + var bufferPadding = this.bufferPadding, + fragments = this.fragments; + Object.keys(fragments).forEach(function (key) { + var fragmentEntity = fragments[key]; + if (!fragmentEntity) { + return; + } + if (isPartial(fragmentEntity)) { + startTime = fragmentEntity.body.start - bufferPadding; + endTime = fragmentEntity.body.end + bufferPadding; + if (time >= startTime && time <= endTime) { + // Use the fragment that has the most padding from start and end time + timePadding = Math.min(time - startTime, endTime - time); + if (bestOverlap <= timePadding) { + bestFragment = fragmentEntity.body; + bestOverlap = timePadding; + } + } + } + }); + return bestFragment; + }; + _proto.isEndListAppended = function isEndListAppended(type) { + var lastFragmentEntity = this.endListFragments[type]; + return lastFragmentEntity !== undefined && (lastFragmentEntity.buffered || isPartial(lastFragmentEntity)); + }; + _proto.getState = function getState(fragment) { + var fragKey = getFragmentKey(fragment); + var fragmentEntity = this.fragments[fragKey]; + if (fragmentEntity) { + if (!fragmentEntity.buffered) { + return FragmentState.APPENDING; + } else if (isPartial(fragmentEntity)) { + return FragmentState.PARTIAL; + } else { + return FragmentState.OK; + } + } + return FragmentState.NOT_LOADED; + }; + _proto.isTimeBuffered = function isTimeBuffered(startPTS, endPTS, timeRange) { + var startTime; + var endTime; + for (var i = 0; i < timeRange.length; i++) { + startTime = timeRange.start(i) - this.bufferPadding; + endTime = timeRange.end(i) + this.bufferPadding; + if (startPTS >= startTime && endPTS <= endTime) { + return true; + } + if (endPTS <= startTime) { + // No need to check the rest of the timeRange as it is in order + return false; + } + } + return false; + }; + _proto.onManifestLoading = function onManifestLoading() { + this.removeAllFragments(); + }; + _proto.onFragLoaded = function onFragLoaded(event, data) { + // don't track initsegment (for which sn is not a number) + // don't track frags used for bitrateTest, they're irrelevant. + if (data.frag.sn === 'initSegment' || data.frag.bitrateTest) { + return; + } + var frag = data.frag; + // Fragment entity `loaded` FragLoadedData is null when loading parts + var loaded = data.part ? null : data; + var fragKey = getFragmentKey(frag); + this.fragments[fragKey] = { + body: frag, + appendedPTS: null, + loaded: loaded, + buffered: false, + range: Object.create(null) + }; + }; + _proto.onBufferAppended = function onBufferAppended(event, data) { + var frag = data.frag, + part = data.part, + timeRanges = data.timeRanges, + type = data.type; + if (frag.sn === 'initSegment') { + return; + } + var playlistType = frag.type; + if (part) { + var activeParts = this.activePartLists[playlistType]; + if (!activeParts) { + this.activePartLists[playlistType] = activeParts = []; + } + activeParts.push(part); + } + // Store the latest timeRanges loaded in the buffer + this.timeRanges = timeRanges; + var timeRange = timeRanges[type]; + this.detectEvictedFragments(type, timeRange, playlistType, part); + }; + _proto.onFragBuffered = function onFragBuffered(event, data) { + this.detectPartialFragments(data); + }; + _proto.hasFragment = function hasFragment(fragment) { + var fragKey = getFragmentKey(fragment); + return !!this.fragments[fragKey]; + }; + _proto.hasFragments = function hasFragments(type) { + var fragments = this.fragments; + var keys = Object.keys(fragments); + if (!type) { + return keys.length > 0; + } + for (var i = keys.length; i--;) { + var fragmentEntity = fragments[keys[i]]; + if ((fragmentEntity == null ? void 0 : fragmentEntity.body.type) === type) { + return true; + } + } + return false; + }; + _proto.hasParts = function hasParts(type) { + var _this$activePartLists; + return !!((_this$activePartLists = this.activePartLists[type]) != null && _this$activePartLists.length); + }; + _proto.removeFragmentsInRange = function removeFragmentsInRange(start, end, playlistType, withGapOnly, unbufferedOnly) { + var _this3 = this; + if (withGapOnly && !this.hasGaps) { + return; + } + Object.keys(this.fragments).forEach(function (key) { + var fragmentEntity = _this3.fragments[key]; + if (!fragmentEntity) { + return; + } + var frag = fragmentEntity.body; + if (frag.type !== playlistType || withGapOnly && !frag.gap) { + return; + } + if (frag.start < end && frag.end > start && (fragmentEntity.buffered || unbufferedOnly)) { + _this3.removeFragment(frag); + } + }); + }; + _proto.removeFragment = function removeFragment(fragment) { + var fragKey = getFragmentKey(fragment); + fragment.stats.loaded = 0; + fragment.clearElementaryStreamInfo(); + var activeParts = this.activePartLists[fragment.type]; + if (activeParts) { + var snToRemove = fragment.sn; + this.activePartLists[fragment.type] = activeParts.filter(function (part) { + return part.fragment.sn !== snToRemove; + }); + } + delete this.fragments[fragKey]; + if (fragment.endList) { + delete this.endListFragments[fragment.type]; + } + }; + _proto.removeAllFragments = function removeAllFragments() { + this.fragments = Object.create(null); + this.endListFragments = Object.create(null); + this.activePartLists = Object.create(null); + this.hasGaps = false; + }; + return FragmentTracker; + }(); + function isPartial(fragmentEntity) { + var _fragmentEntity$range, _fragmentEntity$range2, _fragmentEntity$range3; + return fragmentEntity.buffered && (fragmentEntity.body.gap || ((_fragmentEntity$range = fragmentEntity.range.video) == null ? void 0 : _fragmentEntity$range.partial) || ((_fragmentEntity$range2 = fragmentEntity.range.audio) == null ? void 0 : _fragmentEntity$range2.partial) || ((_fragmentEntity$range3 = fragmentEntity.range.audiovideo) == null ? void 0 : _fragmentEntity$range3.partial)); + } + function getFragmentKey(fragment) { + return fragment.type + "_" + fragment.level + "_" + fragment.sn; + } + + /** + * Provides methods dealing with buffer length retrieval for example. + * + * In general, a helper around HTML5 MediaElement TimeRanges gathered from `buffered` property. + * + * Also @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/buffered + */ + + var noopBuffered = { + length: 0, + start: function start() { + return 0; + }, + end: function end() { + return 0; + } + }; + var BufferHelper = /*#__PURE__*/function () { + function BufferHelper() {} + /** + * Return true if `media`'s buffered include `position` + */ + BufferHelper.isBuffered = function isBuffered(media, position) { + if (media) { + var buffered = BufferHelper.getBuffered(media); + for (var i = buffered.length; i--;) { + if (position >= buffered.start(i) && position <= buffered.end(i)) { + return true; + } + } + } + return false; + }; + BufferHelper.bufferInfo = function bufferInfo(media, pos, maxHoleDuration) { + if (media) { + var vbuffered = BufferHelper.getBuffered(media); + if (vbuffered.length) { + var buffered = []; + for (var i = 0; i < vbuffered.length; i++) { + buffered.push({ + start: vbuffered.start(i), + end: vbuffered.end(i) + }); + } + return BufferHelper.bufferedInfo(buffered, pos, maxHoleDuration); + } + } + return { + len: 0, + start: pos, + end: pos, + nextStart: undefined + }; + }; + BufferHelper.bufferedInfo = function bufferedInfo(buffered, pos, maxHoleDuration) { + pos = Math.max(0, pos); + // sort on buffer.start/smaller end (IE does not always return sorted buffered range) + buffered.sort(function (a, b) { + return a.start - b.start || b.end - a.end; + }); + var buffered2 = []; + if (maxHoleDuration) { + // there might be some small holes between buffer time range + // consider that holes smaller than maxHoleDuration are irrelevant and build another + // buffer time range representations that discards those holes + for (var i = 0; i < buffered.length; i++) { + var buf2len = buffered2.length; + if (buf2len) { + var buf2end = buffered2[buf2len - 1].end; + // if small hole (value between 0 or maxHoleDuration ) or overlapping (negative) + if (buffered[i].start - buf2end < maxHoleDuration) { + // merge overlapping time ranges + // update lastRange.end only if smaller than item.end + // e.g. [ 1, 15] with [ 2,8] => [ 1,15] (no need to modify lastRange.end) + // whereas [ 1, 8] with [ 2,15] => [ 1,15] ( lastRange should switch from [1,8] to [1,15]) + if (buffered[i].end > buf2end) { + buffered2[buf2len - 1].end = buffered[i].end; + } + } else { + // big hole + buffered2.push(buffered[i]); + } + } else { + // first value + buffered2.push(buffered[i]); + } + } + } else { + buffered2 = buffered; + } + var bufferLen = 0; + + // bufferStartNext can possibly be undefined based on the conditional logic below + var bufferStartNext; + + // bufferStart and bufferEnd are buffer boundaries around current video position + var bufferStart = pos; + var bufferEnd = pos; + for (var _i = 0; _i < buffered2.length; _i++) { + var start = buffered2[_i].start; + var end = buffered2[_i].end; + // logger.log('buf start/end:' + buffered.start(i) + '/' + buffered.end(i)); + if (pos + maxHoleDuration >= start && pos < end) { + // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length + bufferStart = start; + bufferEnd = end; + bufferLen = bufferEnd - pos; + } else if (pos + maxHoleDuration < start) { + bufferStartNext = start; + break; + } + } + return { + len: bufferLen, + start: bufferStart || 0, + end: bufferEnd || 0, + nextStart: bufferStartNext + }; + } + + /** + * Safe method to get buffered property. + * SourceBuffer.buffered may throw if SourceBuffer is removed from it's MediaSource + */; + BufferHelper.getBuffered = function getBuffered(media) { + try { + return media.buffered || noopBuffered; + } catch (e) { + logger.log('failed to get media.buffered', e); + return noopBuffered; + } + }; + return BufferHelper; + }(); + + var ChunkMetadata = function ChunkMetadata(level, sn, id, size, part, partial) { + if (size === void 0) { + size = 0; + } + if (part === void 0) { + part = -1; + } + if (partial === void 0) { + partial = false; + } + this.level = void 0; + this.sn = void 0; + this.part = void 0; + this.id = void 0; + this.size = void 0; + this.partial = void 0; + this.transmuxing = getNewPerformanceTiming(); + this.buffering = { + audio: getNewPerformanceTiming(), + video: getNewPerformanceTiming(), + audiovideo: getNewPerformanceTiming() + }; + this.level = level; + this.sn = sn; + this.id = id; + this.size = size; + this.part = part; + this.partial = partial; + }; + function getNewPerformanceTiming() { + return { + start: 0, + executeStart: 0, + executeEnd: 0, + end: 0 + }; + } + + function findFirstFragWithCC(fragments, cc) { + for (var i = 0, len = fragments.length; i < len; i++) { + var _fragments$i; + if (((_fragments$i = fragments[i]) == null ? void 0 : _fragments$i.cc) === cc) { + return fragments[i]; + } + } + return null; + } + function shouldAlignOnDiscontinuities(refDetails, details) { + if (refDetails) { + if (details.startCC < refDetails.endCC && details.endCC > refDetails.startCC) { + return true; + } + } + return false; + } + function adjustFragmentStart(frag, sliding) { + if (frag) { + var start = frag.start + sliding; + frag.start = frag.startPTS = start; + frag.endPTS = start + frag.duration; + } + } + function adjustSlidingStart(sliding, details) { + // Update segments + var fragments = details.fragments; + for (var i = 0, len = fragments.length; i < len; i++) { + adjustFragmentStart(fragments[i], sliding); + } + // Update LL-HLS parts at the end of the playlist + if (details.fragmentHint) { + adjustFragmentStart(details.fragmentHint, sliding); + } + details.alignedSliding = true; + } + + /** + * Using the parameters of the last level, this function computes PTS' of the new fragments so that they form a + * contiguous stream with the last fragments. + * The PTS of a fragment lets Hls.js know where it fits into a stream - by knowing every PTS, we know which fragment to + * download at any given time. PTS is normally computed when the fragment is demuxed, so taking this step saves us time + * and an extra download. + * @param lastFrag + * @param lastLevel + * @param details + */ + function alignStream(lastFrag, switchDetails, details) { + if (!switchDetails) { + return; + } + alignDiscontinuities(details, switchDetails); + if (!details.alignedSliding && switchDetails) { + // If the PTS wasn't figured out via discontinuity sequence that means there was no CC increase within the level. + // Aligning via Program Date Time should therefore be reliable, since PDT should be the same within the same + // discontinuity sequence. + alignMediaPlaylistByPDT(details, switchDetails); + } + if (!details.alignedSliding && switchDetails && !details.skippedSegments) { + // Try to align on sn so that we pick a better start fragment. + // Do not perform this on playlists with delta updates as this is only to align levels on switch + // and adjustSliding only adjusts fragments after skippedSegments. + adjustSliding(switchDetails, details); + } + } + + /** + * Ajust the start of fragments in `details` by the difference in time between fragments of the latest + * shared discontinuity sequence change. + * @param lastLevel - The details of the last loaded level + * @param details - The details of the new level + */ + function alignDiscontinuities(details, refDetails) { + if (!shouldAlignOnDiscontinuities(refDetails, details)) { + return; + } + var targetCC = Math.min(refDetails.endCC, details.endCC); + var refFrag = findFirstFragWithCC(refDetails.fragments, targetCC); + var frag = findFirstFragWithCC(details.fragments, targetCC); + if (!refFrag || !frag) { + return; + } + logger.log("Aligning playlist at start of dicontinuity sequence " + targetCC); + var delta = refFrag.start - frag.start; + adjustSlidingStart(delta, details); + } + + /** + * Ensures appropriate time-alignment between renditions based on PDT. + * This function assumes the timelines represented in `refDetails` are accurate, including the PDTs + * for the last discontinuity sequence number shared by both playlists when present, + * and uses the "wallclock"/PDT timeline as a cross-reference to `details`, adjusting the presentation + * times/timelines of `details` accordingly. + * Given the asynchronous nature of fetches and initial loads of live `main` and audio/subtitle tracks, + * the primary purpose of this function is to ensure the "local timelines" of audio/subtitle tracks + * are aligned to the main/video timeline, using PDT as the cross-reference/"anchor" that should + * be consistent across playlists, per the HLS spec. + * @param details - The details of the rendition you'd like to time-align (e.g. an audio rendition). + * @param refDetails - The details of the reference rendition with start and PDT times for alignment. + */ + function alignMediaPlaylistByPDT(details, refDetails) { + if (!details.hasProgramDateTime || !refDetails.hasProgramDateTime) { + return; + } + var fragments = details.fragments; + var refFragments = refDetails.fragments; + if (!fragments.length || !refFragments.length) { + return; + } + + // Calculate a delta to apply to all fragments according to the delta in PDT times and start times + // of a fragment in the reference details, and a fragment in the target details of the same discontinuity. + // If a fragment of the same discontinuity was not found use the middle fragment of both. + var refFrag; + var frag; + var targetCC = Math.min(refDetails.endCC, details.endCC); + if (refDetails.startCC < targetCC && details.startCC < targetCC) { + refFrag = findFirstFragWithCC(refFragments, targetCC); + frag = findFirstFragWithCC(fragments, targetCC); + } + if (!refFrag || !frag) { + refFrag = refFragments[Math.floor(refFragments.length / 2)]; + frag = findFirstFragWithCC(fragments, refFrag.cc) || fragments[Math.floor(fragments.length / 2)]; + } + var refPDT = refFrag.programDateTime; + var targetPDT = frag.programDateTime; + if (!refPDT || !targetPDT) { + return; + } + var delta = (targetPDT - refPDT) / 1000 - (frag.start - refFrag.start); + adjustSlidingStart(delta, details); + } + + var MIN_CHUNK_SIZE = Math.pow(2, 17); // 128kb + var FragmentLoader = /*#__PURE__*/function () { + function FragmentLoader(config) { + this.config = void 0; + this.loader = null; + this.partLoadTimeout = -1; + this.config = config; + } + var _proto = FragmentLoader.prototype; + _proto.destroy = function destroy() { + if (this.loader) { + this.loader.destroy(); + this.loader = null; + } + }; + _proto.abort = function abort() { + if (this.loader) { + // Abort the loader for current fragment. Only one may load at any given time + this.loader.abort(); + } + }; + _proto.load = function load(frag, _onProgress) { + var _this = this; + var url = frag.url; + if (!url) { + return Promise.reject(new LoadError({ + type: ErrorTypes.NETWORK_ERROR, + details: ErrorDetails.FRAG_LOAD_ERROR, + fatal: false, + frag: frag, + error: new Error("Fragment does not have a " + (url ? 'part list' : 'url')), + networkDetails: null + })); + } + this.abort(); + var config = this.config; + var FragmentILoader = config.fLoader; + var DefaultILoader = config.loader; + return new Promise(function (resolve, reject) { + if (_this.loader) { + _this.loader.destroy(); + } + if (frag.gap) { + if (frag.tagList.some(function (tags) { + return tags[0] === 'GAP'; + })) { + reject(createGapLoadError(frag)); + return; + } else { + // Reset temporary treatment as GAP tag + frag.gap = false; + } + } + var loader = _this.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config); + var loaderContext = createLoaderContext(frag); + frag.loader = loader; + var loadPolicy = getLoaderConfigWithoutReties(config.fragLoadPolicy.default); + var loaderConfig = { + loadPolicy: loadPolicy, + timeout: loadPolicy.maxLoadTimeMs, + maxRetry: 0, + retryDelay: 0, + maxRetryDelay: 0, + highWaterMark: frag.sn === 'initSegment' ? Infinity : MIN_CHUNK_SIZE + }; + // Assign frag stats to the loader's stats reference + frag.stats = loader.stats; + loader.load(loaderContext, loaderConfig, { + onSuccess: function onSuccess(response, stats, context, networkDetails) { + _this.resetLoader(frag, loader); + var payload = response.data; + if (context.resetIV && frag.decryptdata) { + frag.decryptdata.iv = new Uint8Array(payload.slice(0, 16)); + payload = payload.slice(16); + } + resolve({ + frag: frag, + part: null, + payload: payload, + networkDetails: networkDetails + }); + }, + onError: function onError(response, context, networkDetails, stats) { + _this.resetLoader(frag, loader); + reject(new LoadError({ + type: ErrorTypes.NETWORK_ERROR, + details: ErrorDetails.FRAG_LOAD_ERROR, + fatal: false, + frag: frag, + response: _objectSpread2({ + url: url, + data: undefined + }, response), + error: new Error("HTTP Error " + response.code + " " + response.text), + networkDetails: networkDetails, + stats: stats + })); + }, + onAbort: function onAbort(stats, context, networkDetails) { + _this.resetLoader(frag, loader); + reject(new LoadError({ + type: ErrorTypes.NETWORK_ERROR, + details: ErrorDetails.INTERNAL_ABORTED, + fatal: false, + frag: frag, + error: new Error('Aborted'), + networkDetails: networkDetails, + stats: stats + })); + }, + onTimeout: function onTimeout(stats, context, networkDetails) { + _this.resetLoader(frag, loader); + reject(new LoadError({ + type: ErrorTypes.NETWORK_ERROR, + details: ErrorDetails.FRAG_LOAD_TIMEOUT, + fatal: false, + frag: frag, + error: new Error("Timeout after " + loaderConfig.timeout + "ms"), + networkDetails: networkDetails, + stats: stats + })); + }, + onProgress: function onProgress(stats, context, data, networkDetails) { + if (_onProgress) { + _onProgress({ + frag: frag, + part: null, + payload: data, + networkDetails: networkDetails + }); + } + } + }); + }); + }; + _proto.loadPart = function loadPart(frag, part, onProgress) { + var _this2 = this; + this.abort(); + var config = this.config; + var FragmentILoader = config.fLoader; + var DefaultILoader = config.loader; + return new Promise(function (resolve, reject) { + if (_this2.loader) { + _this2.loader.destroy(); + } + if (frag.gap || part.gap) { + reject(createGapLoadError(frag, part)); + return; + } + var loader = _this2.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config); + var loaderContext = createLoaderContext(frag, part); + frag.loader = loader; + // Should we define another load policy for parts? + var loadPolicy = getLoaderConfigWithoutReties(config.fragLoadPolicy.default); + var loaderConfig = { + loadPolicy: loadPolicy, + timeout: loadPolicy.maxLoadTimeMs, + maxRetry: 0, + retryDelay: 0, + maxRetryDelay: 0, + highWaterMark: MIN_CHUNK_SIZE + }; + // Assign part stats to the loader's stats reference + part.stats = loader.stats; + loader.load(loaderContext, loaderConfig, { + onSuccess: function onSuccess(response, stats, context, networkDetails) { + _this2.resetLoader(frag, loader); + _this2.updateStatsFromPart(frag, part); + var partLoadedData = { + frag: frag, + part: part, + payload: response.data, + networkDetails: networkDetails + }; + onProgress(partLoadedData); + resolve(partLoadedData); + }, + onError: function onError(response, context, networkDetails, stats) { + _this2.resetLoader(frag, loader); + reject(new LoadError({ + type: ErrorTypes.NETWORK_ERROR, + details: ErrorDetails.FRAG_LOAD_ERROR, + fatal: false, + frag: frag, + part: part, + response: _objectSpread2({ + url: loaderContext.url, + data: undefined + }, response), + error: new Error("HTTP Error " + response.code + " " + response.text), + networkDetails: networkDetails, + stats: stats + })); + }, + onAbort: function onAbort(stats, context, networkDetails) { + frag.stats.aborted = part.stats.aborted; + _this2.resetLoader(frag, loader); + reject(new LoadError({ + type: ErrorTypes.NETWORK_ERROR, + details: ErrorDetails.INTERNAL_ABORTED, + fatal: false, + frag: frag, + part: part, + error: new Error('Aborted'), + networkDetails: networkDetails, + stats: stats + })); + }, + onTimeout: function onTimeout(stats, context, networkDetails) { + _this2.resetLoader(frag, loader); + reject(new LoadError({ + type: ErrorTypes.NETWORK_ERROR, + details: ErrorDetails.FRAG_LOAD_TIMEOUT, + fatal: false, + frag: frag, + part: part, + error: new Error("Timeout after " + loaderConfig.timeout + "ms"), + networkDetails: networkDetails, + stats: stats + })); + } + }); + }); + }; + _proto.updateStatsFromPart = function updateStatsFromPart(frag, part) { + var fragStats = frag.stats; + var partStats = part.stats; + var partTotal = partStats.total; + fragStats.loaded += partStats.loaded; + if (partTotal) { + var estTotalParts = Math.round(frag.duration / part.duration); + var estLoadedParts = Math.min(Math.round(fragStats.loaded / partTotal), estTotalParts); + var estRemainingParts = estTotalParts - estLoadedParts; + var estRemainingBytes = estRemainingParts * Math.round(fragStats.loaded / estLoadedParts); + fragStats.total = fragStats.loaded + estRemainingBytes; + } else { + fragStats.total = Math.max(fragStats.loaded, fragStats.total); + } + var fragLoading = fragStats.loading; + var partLoading = partStats.loading; + if (fragLoading.start) { + // add to fragment loader latency + fragLoading.first += partLoading.first - partLoading.start; + } else { + fragLoading.start = partLoading.start; + fragLoading.first = partLoading.first; + } + fragLoading.end = partLoading.end; + }; + _proto.resetLoader = function resetLoader(frag, loader) { + frag.loader = null; + if (this.loader === loader) { + self.clearTimeout(this.partLoadTimeout); + this.loader = null; + } + loader.destroy(); + }; + return FragmentLoader; + }(); + function createLoaderContext(frag, part) { + if (part === void 0) { + part = null; + } + var segment = part || frag; + var loaderContext = { + frag: frag, + part: part, + responseType: 'arraybuffer', + url: segment.url, + headers: {}, + rangeStart: 0, + rangeEnd: 0 + }; + var start = segment.byteRangeStartOffset; + var end = segment.byteRangeEndOffset; + if (isFiniteNumber(start) && isFiniteNumber(end)) { + var _frag$decryptdata; + var byteRangeStart = start; + var byteRangeEnd = end; + if (frag.sn === 'initSegment' && isMethodFullSegmentAesCbc((_frag$decryptdata = frag.decryptdata) == null ? void 0 : _frag$decryptdata.method)) { + // MAP segment encrypted with method 'AES-128' or 'AES-256' (cbc), when served with HTTP Range, + // has the unencrypted size specified in the range. + // Ref: https://tools.ietf.org/html/draft-pantos-hls-rfc8216bis-08#section-6.3.6 + var fragmentLen = end - start; + if (fragmentLen % 16) { + byteRangeEnd = end + (16 - fragmentLen % 16); + } + if (start !== 0) { + loaderContext.resetIV = true; + byteRangeStart = start - 16; + } + } + loaderContext.rangeStart = byteRangeStart; + loaderContext.rangeEnd = byteRangeEnd; + } + return loaderContext; + } + function createGapLoadError(frag, part) { + var error = new Error("GAP " + (frag.gap ? 'tag' : 'attribute') + " found"); + var errorData = { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.FRAG_GAP, + fatal: false, + frag: frag, + error: error, + networkDetails: null + }; + if (part) { + errorData.part = part; + } + (part ? part : frag).stats.aborted = true; + return new LoadError(errorData); + } + function isMethodFullSegmentAesCbc(method) { + return method === 'AES-128' || method === 'AES-256'; + } + var LoadError = /*#__PURE__*/function (_Error) { + function LoadError(data) { + var _this3; + _this3 = _Error.call(this, data.error.message) || this; + _this3.data = void 0; + _this3.data = data; + return _this3; + } + _inheritsLoose(LoadError, _Error); + return LoadError; + }(/*#__PURE__*/_wrapNativeSuper(Error)); + + var AESCrypto = /*#__PURE__*/function () { + function AESCrypto(subtle, iv, aesMode) { + this.subtle = void 0; + this.aesIV = void 0; + this.aesMode = void 0; + this.subtle = subtle; + this.aesIV = iv; + this.aesMode = aesMode; + } + var _proto = AESCrypto.prototype; + _proto.decrypt = function decrypt(data, key) { + switch (this.aesMode) { + case DecrypterAesMode.cbc: + return this.subtle.decrypt({ + name: 'AES-CBC', + iv: this.aesIV + }, key, data); + case DecrypterAesMode.ctr: + return this.subtle.decrypt({ + name: 'AES-CTR', + counter: this.aesIV, + length: 64 + }, + //64 : NIST SP800-38A standard suggests that the counter should occupy half of the counter block + key, data); + default: + throw new Error("[AESCrypto] invalid aes mode " + this.aesMode); + } + }; + return AESCrypto; + }(); + + var FastAESKey = /*#__PURE__*/function () { + function FastAESKey(subtle, key, aesMode) { + this.subtle = void 0; + this.key = void 0; + this.aesMode = void 0; + this.subtle = subtle; + this.key = key; + this.aesMode = aesMode; + } + var _proto = FastAESKey.prototype; + _proto.expandKey = function expandKey() { + var subtleAlgoName = getSubtleAlgoName(this.aesMode); + return this.subtle.importKey('raw', this.key, { + name: subtleAlgoName + }, false, ['encrypt', 'decrypt']); + }; + return FastAESKey; + }(); + function getSubtleAlgoName(aesMode) { + switch (aesMode) { + case DecrypterAesMode.cbc: + return 'AES-CBC'; + case DecrypterAesMode.ctr: + return 'AES-CTR'; + default: + throw new Error("[FastAESKey] invalid aes mode " + aesMode); + } + } + + // PKCS7 + function removePadding(array) { + var outputBytes = array.byteLength; + var paddingBytes = outputBytes && new DataView(array.buffer).getUint8(outputBytes - 1); + if (paddingBytes) { + return sliceUint8(array, 0, outputBytes - paddingBytes); + } + return array; + } + var AESDecryptor = /*#__PURE__*/function () { + function AESDecryptor() { + this.rcon = [0x0, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; + this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)]; + this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)]; + this.sBox = new Uint32Array(256); + this.invSBox = new Uint32Array(256); + this.key = new Uint32Array(0); + this.ksRows = 0; + this.keySize = 0; + this.keySchedule = void 0; + this.invKeySchedule = void 0; + this.initTable(); + } + + // Using view.getUint32() also swaps the byte order. + var _proto = AESDecryptor.prototype; + _proto.uint8ArrayToUint32Array_ = function uint8ArrayToUint32Array_(arrayBuffer) { + var view = new DataView(arrayBuffer); + var newArray = new Uint32Array(4); + for (var i = 0; i < 4; i++) { + newArray[i] = view.getUint32(i * 4); + } + return newArray; + }; + _proto.initTable = function initTable() { + var sBox = this.sBox; + var invSBox = this.invSBox; + var subMix = this.subMix; + var subMix0 = subMix[0]; + var subMix1 = subMix[1]; + var subMix2 = subMix[2]; + var subMix3 = subMix[3]; + var invSubMix = this.invSubMix; + var invSubMix0 = invSubMix[0]; + var invSubMix1 = invSubMix[1]; + var invSubMix2 = invSubMix[2]; + var invSubMix3 = invSubMix[3]; + var d = new Uint32Array(256); + var x = 0; + var xi = 0; + var i = 0; + for (i = 0; i < 256; i++) { + if (i < 128) { + d[i] = i << 1; + } else { + d[i] = i << 1 ^ 0x11b; + } + } + for (i = 0; i < 256; i++) { + var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4; + sx = sx >>> 8 ^ sx & 0xff ^ 0x63; + sBox[x] = sx; + invSBox[sx] = x; + + // Compute multiplication + var x2 = d[x]; + var x4 = d[x2]; + var x8 = d[x4]; + + // Compute sub/invSub bytes, mix columns tables + var t = d[sx] * 0x101 ^ sx * 0x1010100; + subMix0[x] = t << 24 | t >>> 8; + subMix1[x] = t << 16 | t >>> 16; + subMix2[x] = t << 8 | t >>> 24; + subMix3[x] = t; + + // Compute inv sub bytes, inv mix columns tables + t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100; + invSubMix0[sx] = t << 24 | t >>> 8; + invSubMix1[sx] = t << 16 | t >>> 16; + invSubMix2[sx] = t << 8 | t >>> 24; + invSubMix3[sx] = t; + + // Compute next counter + if (!x) { + x = xi = 1; + } else { + x = x2 ^ d[d[d[x8 ^ x2]]]; + xi ^= d[d[xi]]; + } + } + }; + _proto.expandKey = function expandKey(keyBuffer) { + // convert keyBuffer to Uint32Array + var key = this.uint8ArrayToUint32Array_(keyBuffer); + var sameKey = true; + var offset = 0; + while (offset < key.length && sameKey) { + sameKey = key[offset] === this.key[offset]; + offset++; + } + if (sameKey) { + return; + } + this.key = key; + var keySize = this.keySize = key.length; + if (keySize !== 4 && keySize !== 6 && keySize !== 8) { + throw new Error('Invalid aes key size=' + keySize); + } + var ksRows = this.ksRows = (keySize + 6 + 1) * 4; + var ksRow; + var invKsRow; + var keySchedule = this.keySchedule = new Uint32Array(ksRows); + var invKeySchedule = this.invKeySchedule = new Uint32Array(ksRows); + var sbox = this.sBox; + var rcon = this.rcon; + var invSubMix = this.invSubMix; + var invSubMix0 = invSubMix[0]; + var invSubMix1 = invSubMix[1]; + var invSubMix2 = invSubMix[2]; + var invSubMix3 = invSubMix[3]; + var prev; + var t; + for (ksRow = 0; ksRow < ksRows; ksRow++) { + if (ksRow < keySize) { + prev = keySchedule[ksRow] = key[ksRow]; + continue; + } + t = prev; + if (ksRow % keySize === 0) { + // Rot word + t = t << 8 | t >>> 24; + + // Sub word + t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff]; + + // Mix Rcon + t ^= rcon[ksRow / keySize | 0] << 24; + } else if (keySize > 6 && ksRow % keySize === 4) { + // Sub word + t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff]; + } + keySchedule[ksRow] = prev = (keySchedule[ksRow - keySize] ^ t) >>> 0; + } + for (invKsRow = 0; invKsRow < ksRows; invKsRow++) { + ksRow = ksRows - invKsRow; + if (invKsRow & 3) { + t = keySchedule[ksRow]; + } else { + t = keySchedule[ksRow - 4]; + } + if (invKsRow < 4 || ksRow <= 4) { + invKeySchedule[invKsRow] = t; + } else { + invKeySchedule[invKsRow] = invSubMix0[sbox[t >>> 24]] ^ invSubMix1[sbox[t >>> 16 & 0xff]] ^ invSubMix2[sbox[t >>> 8 & 0xff]] ^ invSubMix3[sbox[t & 0xff]]; + } + invKeySchedule[invKsRow] = invKeySchedule[invKsRow] >>> 0; + } + } + + // Adding this as a method greatly improves performance. + ; + _proto.networkToHostOrderSwap = function networkToHostOrderSwap(word) { + return word << 24 | (word & 0xff00) << 8 | (word & 0xff0000) >> 8 | word >>> 24; + }; + _proto.decrypt = function decrypt(inputArrayBuffer, offset, aesIV) { + var nRounds = this.keySize + 6; + var invKeySchedule = this.invKeySchedule; + var invSBOX = this.invSBox; + var invSubMix = this.invSubMix; + var invSubMix0 = invSubMix[0]; + var invSubMix1 = invSubMix[1]; + var invSubMix2 = invSubMix[2]; + var invSubMix3 = invSubMix[3]; + var initVector = this.uint8ArrayToUint32Array_(aesIV); + var initVector0 = initVector[0]; + var initVector1 = initVector[1]; + var initVector2 = initVector[2]; + var initVector3 = initVector[3]; + var inputInt32 = new Int32Array(inputArrayBuffer); + var outputInt32 = new Int32Array(inputInt32.length); + var t0, t1, t2, t3; + var s0, s1, s2, s3; + var inputWords0, inputWords1, inputWords2, inputWords3; + var ksRow, i; + var swapWord = this.networkToHostOrderSwap; + while (offset < inputInt32.length) { + inputWords0 = swapWord(inputInt32[offset]); + inputWords1 = swapWord(inputInt32[offset + 1]); + inputWords2 = swapWord(inputInt32[offset + 2]); + inputWords3 = swapWord(inputInt32[offset + 3]); + s0 = inputWords0 ^ invKeySchedule[0]; + s1 = inputWords3 ^ invKeySchedule[1]; + s2 = inputWords2 ^ invKeySchedule[2]; + s3 = inputWords1 ^ invKeySchedule[3]; + ksRow = 4; + + // Iterate through the rounds of decryption + for (i = 1; i < nRounds; i++) { + t0 = invSubMix0[s0 >>> 24] ^ invSubMix1[s1 >> 16 & 0xff] ^ invSubMix2[s2 >> 8 & 0xff] ^ invSubMix3[s3 & 0xff] ^ invKeySchedule[ksRow]; + t1 = invSubMix0[s1 >>> 24] ^ invSubMix1[s2 >> 16 & 0xff] ^ invSubMix2[s3 >> 8 & 0xff] ^ invSubMix3[s0 & 0xff] ^ invKeySchedule[ksRow + 1]; + t2 = invSubMix0[s2 >>> 24] ^ invSubMix1[s3 >> 16 & 0xff] ^ invSubMix2[s0 >> 8 & 0xff] ^ invSubMix3[s1 & 0xff] ^ invKeySchedule[ksRow + 2]; + t3 = invSubMix0[s3 >>> 24] ^ invSubMix1[s0 >> 16 & 0xff] ^ invSubMix2[s1 >> 8 & 0xff] ^ invSubMix3[s2 & 0xff] ^ invKeySchedule[ksRow + 3]; + // Update state + s0 = t0; + s1 = t1; + s2 = t2; + s3 = t3; + ksRow = ksRow + 4; + } + + // Shift rows, sub bytes, add round key + t0 = invSBOX[s0 >>> 24] << 24 ^ invSBOX[s1 >> 16 & 0xff] << 16 ^ invSBOX[s2 >> 8 & 0xff] << 8 ^ invSBOX[s3 & 0xff] ^ invKeySchedule[ksRow]; + t1 = invSBOX[s1 >>> 24] << 24 ^ invSBOX[s2 >> 16 & 0xff] << 16 ^ invSBOX[s3 >> 8 & 0xff] << 8 ^ invSBOX[s0 & 0xff] ^ invKeySchedule[ksRow + 1]; + t2 = invSBOX[s2 >>> 24] << 24 ^ invSBOX[s3 >> 16 & 0xff] << 16 ^ invSBOX[s0 >> 8 & 0xff] << 8 ^ invSBOX[s1 & 0xff] ^ invKeySchedule[ksRow + 2]; + t3 = invSBOX[s3 >>> 24] << 24 ^ invSBOX[s0 >> 16 & 0xff] << 16 ^ invSBOX[s1 >> 8 & 0xff] << 8 ^ invSBOX[s2 & 0xff] ^ invKeySchedule[ksRow + 3]; + + // Write + outputInt32[offset] = swapWord(t0 ^ initVector0); + outputInt32[offset + 1] = swapWord(t3 ^ initVector1); + outputInt32[offset + 2] = swapWord(t2 ^ initVector2); + outputInt32[offset + 3] = swapWord(t1 ^ initVector3); + + // reset initVector to last 4 unsigned int + initVector0 = inputWords0; + initVector1 = inputWords1; + initVector2 = inputWords2; + initVector3 = inputWords3; + offset = offset + 4; + } + return outputInt32.buffer; + }; + return AESDecryptor; + }(); + + var CHUNK_SIZE = 16; // 16 bytes, 128 bits + var Decrypter = /*#__PURE__*/function () { + function Decrypter(config, _temp) { + var _ref = _temp === void 0 ? {} : _temp, + _ref$removePKCS7Paddi = _ref.removePKCS7Padding, + removePKCS7Padding = _ref$removePKCS7Paddi === void 0 ? true : _ref$removePKCS7Paddi; + this.logEnabled = true; + this.removePKCS7Padding = void 0; + this.subtle = null; + this.softwareDecrypter = null; + this.key = null; + this.fastAesKey = null; + this.remainderData = null; + this.currentIV = null; + this.currentResult = null; + this.useSoftware = void 0; + this.enableSoftwareAES = void 0; + this.enableSoftwareAES = config.enableSoftwareAES; + this.removePKCS7Padding = removePKCS7Padding; + // built in decryptor expects PKCS7 padding + if (removePKCS7Padding) { + try { + var browserCrypto = self.crypto; + if (browserCrypto) { + this.subtle = browserCrypto.subtle || browserCrypto.webkitSubtle; + } + } catch (e) { + /* no-op */ + } + } + this.useSoftware = !this.subtle; + } + var _proto = Decrypter.prototype; + _proto.destroy = function destroy() { + this.subtle = null; + this.softwareDecrypter = null; + this.key = null; + this.fastAesKey = null; + this.remainderData = null; + this.currentIV = null; + this.currentResult = null; + }; + _proto.isSync = function isSync() { + return this.useSoftware; + }; + _proto.flush = function flush() { + var currentResult = this.currentResult, + remainderData = this.remainderData; + if (!currentResult || remainderData) { + this.reset(); + return null; + } + var data = new Uint8Array(currentResult); + this.reset(); + if (this.removePKCS7Padding) { + return removePadding(data); + } + return data; + }; + _proto.reset = function reset() { + this.currentResult = null; + this.currentIV = null; + this.remainderData = null; + if (this.softwareDecrypter) { + this.softwareDecrypter = null; + } + }; + _proto.decrypt = function decrypt(data, key, iv, aesMode) { + var _this = this; + if (this.useSoftware) { + return new Promise(function (resolve, reject) { + _this.softwareDecrypt(new Uint8Array(data), key, iv, aesMode); + var decryptResult = _this.flush(); + if (decryptResult) { + resolve(decryptResult.buffer); + } else { + reject(new Error('[softwareDecrypt] Failed to decrypt data')); + } + }); + } + return this.webCryptoDecrypt(new Uint8Array(data), key, iv, aesMode); + } + + // Software decryption is progressive. Progressive decryption may not return a result on each call. Any cached + // data is handled in the flush() call + ; + _proto.softwareDecrypt = function softwareDecrypt(data, key, iv, aesMode) { + var currentIV = this.currentIV, + currentResult = this.currentResult, + remainderData = this.remainderData; + if (aesMode !== DecrypterAesMode.cbc || key.byteLength !== 16) { + logger.warn('SoftwareDecrypt: can only handle AES-128-CBC'); + return null; + } + this.logOnce('JS AES decrypt'); + // The output is staggered during progressive parsing - the current result is cached, and emitted on the next call + // This is done in order to strip PKCS7 padding, which is found at the end of each segment. We only know we've reached + // the end on flush(), but by that time we have already received all bytes for the segment. + // Progressive decryption does not work with WebCrypto + + if (remainderData) { + data = appendUint8Array(remainderData, data); + this.remainderData = null; + } + + // Byte length must be a multiple of 16 (AES-128 = 128 bit blocks = 16 bytes) + var currentChunk = this.getValidChunk(data); + if (!currentChunk.length) { + return null; + } + if (currentIV) { + iv = currentIV; + } + var softwareDecrypter = this.softwareDecrypter; + if (!softwareDecrypter) { + softwareDecrypter = this.softwareDecrypter = new AESDecryptor(); + } + softwareDecrypter.expandKey(key); + var result = currentResult; + this.currentResult = softwareDecrypter.decrypt(currentChunk.buffer, 0, iv); + this.currentIV = sliceUint8(currentChunk, -16).buffer; + if (!result) { + return null; + } + return result; + }; + _proto.webCryptoDecrypt = function webCryptoDecrypt(data, key, iv, aesMode) { + var _this2 = this; + if (this.key !== key || !this.fastAesKey) { + if (!this.subtle) { + return Promise.resolve(this.onWebCryptoError(data, key, iv, aesMode)); + } + this.key = key; + this.fastAesKey = new FastAESKey(this.subtle, key, aesMode); + } + return this.fastAesKey.expandKey().then(function (aesKey) { + // decrypt using web crypto + if (!_this2.subtle) { + return Promise.reject(new Error('web crypto not initialized')); + } + _this2.logOnce('WebCrypto AES decrypt'); + var crypto = new AESCrypto(_this2.subtle, new Uint8Array(iv), aesMode); + return crypto.decrypt(data.buffer, aesKey); + }).catch(function (err) { + logger.warn("[decrypter]: WebCrypto Error, disable WebCrypto API, " + err.name + ": " + err.message); + return _this2.onWebCryptoError(data, key, iv, aesMode); + }); + }; + _proto.onWebCryptoError = function onWebCryptoError(data, key, iv, aesMode) { + var enableSoftwareAES = this.enableSoftwareAES; + if (enableSoftwareAES) { + this.useSoftware = true; + this.logEnabled = true; + this.softwareDecrypt(data, key, iv, aesMode); + var decryptResult = this.flush(); + if (decryptResult) { + return decryptResult.buffer; + } + } + throw new Error('WebCrypto' + (enableSoftwareAES ? ' and softwareDecrypt' : '') + ': failed to decrypt data'); + }; + _proto.getValidChunk = function getValidChunk(data) { + var currentChunk = data; + var splitPoint = data.length - data.length % CHUNK_SIZE; + if (splitPoint !== data.length) { + currentChunk = sliceUint8(data, 0, splitPoint); + this.remainderData = sliceUint8(data, splitPoint); + } + return currentChunk; + }; + _proto.logOnce = function logOnce(msg) { + if (!this.logEnabled) { + return; + } + logger.log("[decrypter]: " + msg); + this.logEnabled = false; + }; + return Decrypter; + }(); + + /** + * TimeRanges to string helper + */ + + var TimeRanges = { + toString: function toString(r) { + var log = ''; + var len = r.length; + for (var i = 0; i < len; i++) { + log += "[" + r.start(i).toFixed(3) + "-" + r.end(i).toFixed(3) + "]"; + } + return log; + } + }; + + var State = { + STOPPED: 'STOPPED', + IDLE: 'IDLE', + KEY_LOADING: 'KEY_LOADING', + FRAG_LOADING: 'FRAG_LOADING', + FRAG_LOADING_WAITING_RETRY: 'FRAG_LOADING_WAITING_RETRY', + WAITING_TRACK: 'WAITING_TRACK', + PARSING: 'PARSING', + PARSED: 'PARSED', + ENDED: 'ENDED', + ERROR: 'ERROR', + WAITING_INIT_PTS: 'WAITING_INIT_PTS', + WAITING_LEVEL: 'WAITING_LEVEL' + }; + var BaseStreamController = /*#__PURE__*/function (_TaskLoop) { + function BaseStreamController(hls, fragmentTracker, keyLoader, logPrefix, playlistType) { + var _this; + _this = _TaskLoop.call(this, logPrefix, hls.logger) || this; + _this.hls = void 0; + _this.fragPrevious = null; + _this.fragCurrent = null; + _this.fragmentTracker = void 0; + _this.transmuxer = null; + _this._state = State.STOPPED; + _this.playlistType = void 0; + _this.media = null; + _this.mediaBuffer = null; + _this.config = void 0; + _this.bitrateTest = false; + _this.lastCurrentTime = 0; + _this.nextLoadPosition = 0; + _this.startPosition = 0; + _this.startTimeOffset = null; + _this.loadedmetadata = false; + _this.retryDate = 0; + _this.levels = null; + _this.fragmentLoader = void 0; + _this.keyLoader = void 0; + _this.levelLastLoaded = null; + _this.startFragRequested = false; + _this.decrypter = void 0; + _this.initPTS = []; + _this.buffering = true; + _this.loadingParts = false; + _this.loopSn = void 0; + _this.onMediaSeeking = function () { + var _this2 = _this, + config = _this2.config, + fragCurrent = _this2.fragCurrent, + media = _this2.media, + mediaBuffer = _this2.mediaBuffer, + state = _this2.state; + var currentTime = media ? media.currentTime : 0; + var bufferInfo = BufferHelper.bufferInfo(mediaBuffer ? mediaBuffer : media, currentTime, config.maxBufferHole); + _this.log("media seeking to " + (isFiniteNumber(currentTime) ? currentTime.toFixed(3) : currentTime) + ", state: " + state); + if (_this.state === State.ENDED) { + _this.resetLoadingState(); + } else if (fragCurrent) { + // Seeking while frag load is in progress + var tolerance = config.maxFragLookUpTolerance; + var fragStartOffset = fragCurrent.start - tolerance; + var fragEndOffset = fragCurrent.start + fragCurrent.duration + tolerance; + // if seeking out of buffered range or into new one + if (!bufferInfo.len || fragEndOffset < bufferInfo.start || fragStartOffset > bufferInfo.end) { + var pastFragment = currentTime > fragEndOffset; + // if the seek position is outside the current fragment range + if (currentTime < fragStartOffset || pastFragment) { + if (pastFragment && fragCurrent.loader) { + _this.log('seeking outside of buffer while fragment load in progress, cancel fragment load'); + fragCurrent.abortRequests(); + _this.resetLoadingState(); + } + _this.fragPrevious = null; + } + } + } + if (media) { + // Remove gap fragments + _this.fragmentTracker.removeFragmentsInRange(currentTime, Infinity, _this.playlistType, true); + + // Don't set lastCurrentTime with backward seeks (allows for frag selection with strict tolerances) + var lastCurrentTime = _this.lastCurrentTime; + if (currentTime > lastCurrentTime) { + _this.lastCurrentTime = currentTime; + } + if (!_this.loadingParts) { + var bufferEnd = Math.max(bufferInfo.end, currentTime); + var shouldLoadParts = _this.shouldLoadParts(_this.getLevelDetails(), bufferEnd); + if (shouldLoadParts) { + _this.log("LL-Part loading ON after seeking to " + currentTime.toFixed(2) + " with buffer @" + bufferEnd.toFixed(2)); + _this.loadingParts = shouldLoadParts; + } + } + } + + // in case seeking occurs although no media buffered, adjust startPosition and nextLoadPosition to seek target + if (!_this.loadedmetadata && !bufferInfo.len) { + _this.nextLoadPosition = _this.startPosition = currentTime; + } + + // Async tick to speed up processing + _this.tickImmediate(); + }; + _this.onMediaEnded = function () { + // reset startPosition and lastCurrentTime to restart playback @ stream beginning + _this.startPosition = _this.lastCurrentTime = 0; + if (_this.playlistType === PlaylistLevelType.MAIN) { + _this.hls.trigger(Events.MEDIA_ENDED, { + stalled: false + }); + } + }; + _this.playlistType = playlistType; + _this.hls = hls; + _this.fragmentLoader = new FragmentLoader(hls.config); + _this.keyLoader = keyLoader; + _this.fragmentTracker = fragmentTracker; + _this.config = hls.config; + _this.decrypter = new Decrypter(hls.config); + return _this; + } + _inheritsLoose(BaseStreamController, _TaskLoop); + var _proto = BaseStreamController.prototype; + _proto.registerListeners = function registerListeners() { + var hls = this.hls; + hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this); + hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this); + hls.on(Events.ERROR, this.onError, this); + }; + _proto.unregisterListeners = function unregisterListeners() { + var hls = this.hls; + hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this); + hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this); + hls.off(Events.ERROR, this.onError, this); + }; + _proto.doTick = function doTick() { + this.onTickEnd(); + }; + _proto.onTickEnd = function onTickEnd() {} + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + ; + _proto.startLoad = function startLoad(startPosition) {}; + _proto.stopLoad = function stopLoad() { + if (this.state === State.STOPPED) { + return; + } + this.fragmentLoader.abort(); + this.keyLoader.abort(this.playlistType); + var frag = this.fragCurrent; + if (frag != null && frag.loader) { + frag.abortRequests(); + this.fragmentTracker.removeFragment(frag); + } + this.resetTransmuxer(); + this.fragCurrent = null; + this.fragPrevious = null; + this.clearInterval(); + this.clearNextTick(); + this.state = State.STOPPED; + }; + _proto.pauseBuffering = function pauseBuffering() { + this.buffering = false; + }; + _proto.resumeBuffering = function resumeBuffering() { + this.buffering = true; + }; + _proto._streamEnded = function _streamEnded(bufferInfo, levelDetails) { + // If playlist is live, there is another buffered range after the current range, nothing buffered, media is detached, + // of nothing loading/loaded return false + if (levelDetails.live || bufferInfo.nextStart || !bufferInfo.end || !this.media) { + return false; + } + var partList = levelDetails.partList; + // Since the last part isn't guaranteed to correspond to the last playlist segment for Low-Latency HLS, + // check instead if the last part is buffered. + if (partList != null && partList.length) { + var lastPart = partList[partList.length - 1]; + + // Checking the midpoint of the part for potential margin of error and related issues. + // NOTE: Technically I believe parts could yield content that is < the computed duration (including potential a duration of 0) + // and still be spec-compliant, so there may still be edge cases here. Likewise, there could be issues in end of stream + // part mismatches for independent audio and video playlists/segments. + var lastPartBuffered = BufferHelper.isBuffered(this.media, lastPart.start + lastPart.duration / 2); + return lastPartBuffered; + } + var playlistType = levelDetails.fragments[levelDetails.fragments.length - 1].type; + return this.fragmentTracker.isEndListAppended(playlistType); + }; + _proto.getLevelDetails = function getLevelDetails() { + if (this.levels && this.levelLastLoaded !== null) { + var _this$levelLastLoaded; + return (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details; + } + }; + _proto.onMediaAttached = function onMediaAttached(event, data) { + var media = this.media = this.mediaBuffer = data.media; + media.addEventListener('seeking', this.onMediaSeeking); + media.addEventListener('ended', this.onMediaEnded); + var config = this.config; + if (this.levels && config.autoStartLoad && this.state === State.STOPPED) { + this.startLoad(config.startPosition); + } + }; + _proto.onMediaDetaching = function onMediaDetaching() { + var media = this.media; + if (media != null && media.ended) { + this.log('MSE detaching and video ended, reset startPosition'); + this.startPosition = this.lastCurrentTime = 0; + } + + // remove video listeners + if (media) { + media.removeEventListener('seeking', this.onMediaSeeking); + media.removeEventListener('ended', this.onMediaEnded); + } + if (this.keyLoader) { + this.keyLoader.detach(); + } + this.media = this.mediaBuffer = null; + this.loopSn = undefined; + this.startFragRequested = this.loadedmetadata = this.loadingParts = false; + this.fragmentTracker.removeAllFragments(); + this.stopLoad(); + }; + _proto.onManifestLoading = function onManifestLoading() { + this.initPTS = []; + this.levels = this.levelLastLoaded = this.fragCurrent = null; + this.lastCurrentTime = this.startPosition = 0; + this.startFragRequested = false; + }; + _proto.onError = function onError(event, data) {}; + _proto.onManifestLoaded = function onManifestLoaded(event, data) { + this.startTimeOffset = data.startTimeOffset; + }; + _proto.onHandlerDestroying = function onHandlerDestroying() { + this.stopLoad(); + if (this.transmuxer) { + this.transmuxer.destroy(); + this.transmuxer = null; + } + _TaskLoop.prototype.onHandlerDestroying.call(this); + // @ts-ignore + this.hls = this.onMediaSeeking = this.onMediaEnded = null; + }; + _proto.onHandlerDestroyed = function onHandlerDestroyed() { + this.state = State.STOPPED; + if (this.fragmentLoader) { + this.fragmentLoader.destroy(); + } + if (this.keyLoader) { + this.keyLoader.destroy(); + } + if (this.decrypter) { + this.decrypter.destroy(); + } + this.hls = this.log = this.warn = this.decrypter = this.keyLoader = this.fragmentLoader = this.fragmentTracker = null; + _TaskLoop.prototype.onHandlerDestroyed.call(this); + }; + _proto.loadFragment = function loadFragment(frag, level, targetBufferTime) { + this.startFragRequested = true; + this._loadFragForPlayback(frag, level, targetBufferTime); + }; + _proto._loadFragForPlayback = function _loadFragForPlayback(frag, level, targetBufferTime) { + var _this3 = this; + var progressCallback = function progressCallback(data) { + if (_this3.fragContextChanged(frag)) { + _this3.warn("Fragment " + frag.sn + (data.part ? ' p: ' + data.part.index : '') + " of level " + frag.level + " was dropped during download."); + _this3.fragmentTracker.removeFragment(frag); + return; + } + frag.stats.chunkCount++; + _this3._handleFragmentLoadProgress(data); + }; + this._doFragLoad(frag, level, targetBufferTime, progressCallback).then(function (data) { + if (!data) { + // if we're here we probably needed to backtrack or are waiting for more parts + return; + } + var state = _this3.state; + if (_this3.fragContextChanged(frag)) { + if (state === State.FRAG_LOADING || !_this3.fragCurrent && state === State.PARSING) { + _this3.fragmentTracker.removeFragment(frag); + _this3.state = State.IDLE; + } + return; + } + if ('payload' in data) { + _this3.log("Loaded " + frag.type + " sn: " + frag.sn + " of " + _this3.playlistLabel() + " " + frag.level); + _this3.hls.trigger(Events.FRAG_LOADED, data); + } + + // Pass through the whole payload; controllers not implementing progressive loading receive data from this callback + _this3._handleFragmentLoadComplete(data); + }).catch(function (reason) { + if (_this3.state === State.STOPPED || _this3.state === State.ERROR) { + return; + } + _this3.warn("Frag error: " + ((reason == null ? void 0 : reason.message) || reason)); + _this3.resetFragmentLoading(frag); + }); + }; + _proto.clearTrackerIfNeeded = function clearTrackerIfNeeded(frag) { + var _this$mediaBuffer; + var fragmentTracker = this.fragmentTracker; + var fragState = fragmentTracker.getState(frag); + if (fragState === FragmentState.APPENDING) { + // Lower the max buffer length and try again + var playlistType = frag.type; + var bufferedInfo = this.getFwdBufferInfo(this.mediaBuffer, playlistType); + var minForwardBufferLength = Math.max(frag.duration, bufferedInfo ? bufferedInfo.len : this.config.maxBufferLength); + // If backtracking, always remove from the tracker without reducing max buffer length + var backtrackFragment = this.backtrackFragment; + var backtracked = backtrackFragment ? frag.sn - backtrackFragment.sn : 0; + if (backtracked === 1 || this.reduceMaxBufferLength(minForwardBufferLength, frag.duration)) { + fragmentTracker.removeFragment(frag); + } + } else if (((_this$mediaBuffer = this.mediaBuffer) == null ? void 0 : _this$mediaBuffer.buffered.length) === 0) { + // Stop gap for bad tracker / buffer flush behavior + fragmentTracker.removeAllFragments(); + } else if (fragmentTracker.hasParts(frag.type)) { + // In low latency mode, remove fragments for which only some parts were buffered + fragmentTracker.detectPartialFragments({ + frag: frag, + part: null, + stats: frag.stats, + id: frag.type + }); + if (fragmentTracker.getState(frag) === FragmentState.PARTIAL) { + fragmentTracker.removeFragment(frag); + } + } + }; + _proto.checkLiveUpdate = function checkLiveUpdate(details) { + if (details.updated && !details.live) { + // Live stream ended, update fragment tracker + var lastFragment = details.fragments[details.fragments.length - 1]; + this.fragmentTracker.detectPartialFragments({ + frag: lastFragment, + part: null, + stats: lastFragment.stats, + id: lastFragment.type + }); + } + if (!details.fragments[0]) { + details.deltaUpdateFailed = true; + } + }; + _proto.flushMainBuffer = function flushMainBuffer(startOffset, endOffset, type) { + if (type === void 0) { + type = null; + } + if (!(startOffset - endOffset)) { + return; + } + // When alternate audio is playing, the audio-stream-controller is responsible for the audio buffer. Otherwise, + // passing a null type flushes both buffers + var flushScope = { + startOffset: startOffset, + endOffset: endOffset, + type: type + }; + this.hls.trigger(Events.BUFFER_FLUSHING, flushScope); + }; + _proto._loadInitSegment = function _loadInitSegment(frag, level) { + var _this4 = this; + this._doFragLoad(frag, level).then(function (data) { + if (!data || _this4.fragContextChanged(frag) || !_this4.levels) { + throw new Error('init load aborted'); + } + return data; + }).then(function (data) { + var hls = _this4.hls; + var payload = data.payload; + var decryptData = frag.decryptdata; + + // check to see if the payload needs to be decrypted + if (payload && payload.byteLength > 0 && decryptData != null && decryptData.key && decryptData.iv && isFullSegmentEncryption(decryptData.method)) { + var startTime = self.performance.now(); + // decrypt init segment data + return _this4.decrypter.decrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer, getAesModeFromFullSegmentMethod(decryptData.method)).catch(function (err) { + hls.trigger(Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.FRAG_DECRYPT_ERROR, + fatal: false, + error: err, + reason: err.message, + frag: frag + }); + throw err; + }).then(function (decryptedData) { + var endTime = self.performance.now(); + hls.trigger(Events.FRAG_DECRYPTED, { + frag: frag, + payload: decryptedData, + stats: { + tstart: startTime, + tdecrypt: endTime + } + }); + data.payload = decryptedData; + return _this4.completeInitSegmentLoad(data); + }); + } + return _this4.completeInitSegmentLoad(data); + }).catch(function (reason) { + if (_this4.state === State.STOPPED || _this4.state === State.ERROR) { + return; + } + _this4.warn(reason); + _this4.resetFragmentLoading(frag); + }); + }; + _proto.completeInitSegmentLoad = function completeInitSegmentLoad(data) { + var levels = this.levels; + if (!levels) { + throw new Error('init load aborted, missing levels'); + } + var stats = data.frag.stats; + if (this.state !== State.STOPPED) { + this.state = State.IDLE; + } + data.frag.data = new Uint8Array(data.payload); + stats.parsing.start = stats.buffering.start = self.performance.now(); + stats.parsing.end = stats.buffering.end = self.performance.now(); + this.tick(); + }; + _proto.fragContextChanged = function fragContextChanged(frag) { + var fragCurrent = this.fragCurrent; + return !frag || !fragCurrent || frag.sn !== fragCurrent.sn || frag.level !== fragCurrent.level; + }; + _proto.fragBufferedComplete = function fragBufferedComplete(frag, part) { + var _this$fragCurrent, _this$fragPrevious; + var media = this.mediaBuffer ? this.mediaBuffer : this.media; + this.log("Buffered " + frag.type + " sn: " + frag.sn + (part ? ' part: ' + part.index : '') + " of " + this.fragInfo(frag) + " > buffer:" + (media ? TimeRanges.toString(BufferHelper.getBuffered(media)) : '(detached)') + ")"); + if (frag.sn !== 'initSegment') { + var _this$levels; + if (frag.type !== PlaylistLevelType.SUBTITLE) { + var el = frag.elementaryStreams; + if (!Object.keys(el).some(function (type) { + return !!el[type]; + })) { + // empty segment + this.state = State.IDLE; + return; + } + } + var level = (_this$levels = this.levels) == null ? void 0 : _this$levels[frag.level]; + if (level != null && level.fragmentError) { + this.log("Resetting level fragment error count of " + level.fragmentError + " on frag buffered"); + level.fragmentError = 0; + } + } + this.state = State.IDLE; + if (!media) { + return; + } + if (!this.loadedmetadata && frag.type == PlaylistLevelType.MAIN && media.buffered.length && ((_this$fragCurrent = this.fragCurrent) == null ? void 0 : _this$fragCurrent.sn) === ((_this$fragPrevious = this.fragPrevious) == null ? void 0 : _this$fragPrevious.sn)) { + this.loadedmetadata = true; + this.seekToStartPos(); + } + this.tick(); + }; + _proto.seekToStartPos = function seekToStartPos() {}; + _proto._handleFragmentLoadComplete = function _handleFragmentLoadComplete(fragLoadedEndData) { + var transmuxer = this.transmuxer; + if (!transmuxer) { + return; + } + var frag = fragLoadedEndData.frag, + part = fragLoadedEndData.part, + partsLoaded = fragLoadedEndData.partsLoaded; + // If we did not load parts, or loaded all parts, we have complete (not partial) fragment data + var complete = !partsLoaded || partsLoaded.length === 0 || partsLoaded.some(function (fragLoaded) { + return !fragLoaded; + }); + var chunkMeta = new ChunkMetadata(frag.level, frag.sn, frag.stats.chunkCount + 1, 0, part ? part.index : -1, !complete); + transmuxer.flush(chunkMeta); + } + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + ; + _proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(frag) {}; + _proto._doFragLoad = function _doFragLoad(frag, level, targetBufferTime, progressCallback) { + var _frag$decryptdata, + _this5 = this; + if (targetBufferTime === void 0) { + targetBufferTime = null; + } + this.fragCurrent = frag; + var details = level == null ? void 0 : level.details; + if (!this.levels || !details) { + throw new Error("frag load aborted, missing level" + (details ? '' : ' detail') + "s"); + } + var keyLoadingPromise = null; + if (frag.encrypted && !((_frag$decryptdata = frag.decryptdata) != null && _frag$decryptdata.key)) { + this.log("Loading key for " + frag.sn + " of [" + details.startSN + "-" + details.endSN + "], " + this.playlistLabel() + " " + frag.level); + this.state = State.KEY_LOADING; + this.fragCurrent = frag; + keyLoadingPromise = this.keyLoader.load(frag).then(function (keyLoadedData) { + if (!_this5.fragContextChanged(keyLoadedData.frag)) { + _this5.hls.trigger(Events.KEY_LOADED, keyLoadedData); + if (_this5.state === State.KEY_LOADING) { + _this5.state = State.IDLE; + } + return keyLoadedData; + } + }); + this.hls.trigger(Events.KEY_LOADING, { + frag: frag + }); + if (this.fragCurrent === null) { + keyLoadingPromise = Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")); + } + } else if (!frag.encrypted && details.encryptedFragments.length) { + this.keyLoader.loadClear(frag, details.encryptedFragments); + } + var fragPrevious = this.fragPrevious; + if (frag.sn !== 'initSegment' && (!fragPrevious || frag.sn !== fragPrevious.sn)) { + var shouldLoadParts = this.shouldLoadParts(level.details, frag.end); + if (shouldLoadParts !== this.loadingParts) { + this.log("LL-Part loading " + (shouldLoadParts ? 'ON' : 'OFF') + " loading sn " + (fragPrevious == null ? void 0 : fragPrevious.sn) + "->" + frag.sn); + this.loadingParts = shouldLoadParts; + } + } + targetBufferTime = Math.max(frag.start, targetBufferTime || 0); + if (this.loadingParts && frag.sn !== 'initSegment') { + var partList = details.partList; + if (partList && progressCallback) { + if (targetBufferTime > frag.end && details.fragmentHint) { + frag = details.fragmentHint; + } + var partIndex = this.getNextPart(partList, frag, targetBufferTime); + if (partIndex > -1) { + var part = partList[partIndex]; + this.log("Loading part sn: " + frag.sn + " p: " + part.index + " cc: " + frag.cc + " of playlist [" + details.startSN + "-" + details.endSN + "] parts [0-" + partIndex + "-" + (partList.length - 1) + "] " + this.playlistLabel() + ": " + frag.level + ", target: " + parseFloat(targetBufferTime.toFixed(3))); + this.nextLoadPosition = part.start + part.duration; + this.state = State.FRAG_LOADING; + var _result; + if (keyLoadingPromise) { + _result = keyLoadingPromise.then(function (keyLoadedData) { + if (!keyLoadedData || _this5.fragContextChanged(keyLoadedData.frag)) { + return null; + } + return _this5.doFragPartsLoad(frag, part, level, progressCallback); + }).catch(function (error) { + return _this5.handleFragLoadError(error); + }); + } else { + _result = this.doFragPartsLoad(frag, part, level, progressCallback).catch(function (error) { + return _this5.handleFragLoadError(error); + }); + } + this.hls.trigger(Events.FRAG_LOADING, { + frag: frag, + part: part, + targetBufferTime: targetBufferTime + }); + if (this.fragCurrent === null) { + return Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")); + } + return _result; + } else if (!frag.url || this.loadedEndOfParts(partList, targetBufferTime)) { + // Fragment hint has no parts + return Promise.resolve(null); + } + } + } + if (frag.sn !== 'initSegment' && this.loadingParts) { + this.log("LL-Part loading OFF after next part miss @" + targetBufferTime.toFixed(2)); + this.loadingParts = false; + } else if (!frag.url) { + // Selected fragment hint for part but not loading parts + return Promise.resolve(null); + } + this.log("Loading " + frag.type + " sn: " + frag.sn + " of " + this.fragInfo(frag, false) + ") cc: " + frag.cc + " " + (details ? '[' + details.startSN + '-' + details.endSN + ']' : '') + ", target: " + parseFloat(targetBufferTime.toFixed(3))); + // Don't update nextLoadPosition for fragments which are not buffered + if (isFiniteNumber(frag.sn) && !this.bitrateTest) { + this.nextLoadPosition = frag.start + frag.duration; + } + this.state = State.FRAG_LOADING; + + // Load key before streaming fragment data + var dataOnProgress = this.config.progressive; + var result; + if (dataOnProgress && keyLoadingPromise) { + result = keyLoadingPromise.then(function (keyLoadedData) { + if (!keyLoadedData || _this5.fragContextChanged(keyLoadedData == null ? void 0 : keyLoadedData.frag)) { + return null; + } + return _this5.fragmentLoader.load(frag, progressCallback); + }).catch(function (error) { + return _this5.handleFragLoadError(error); + }); + } else { + // load unencrypted fragment data with progress event, + // or handle fragment result after key and fragment are finished loading + result = Promise.all([this.fragmentLoader.load(frag, dataOnProgress ? progressCallback : undefined), keyLoadingPromise]).then(function (_ref) { + var fragLoadedData = _ref[0]; + if (!dataOnProgress && fragLoadedData && progressCallback) { + progressCallback(fragLoadedData); + } + return fragLoadedData; + }).catch(function (error) { + return _this5.handleFragLoadError(error); + }); + } + this.hls.trigger(Events.FRAG_LOADING, { + frag: frag, + targetBufferTime: targetBufferTime + }); + if (this.fragCurrent === null) { + return Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")); + } + return result; + }; + _proto.doFragPartsLoad = function doFragPartsLoad(frag, fromPart, level, progressCallback) { + var _this6 = this; + return new Promise(function (resolve, reject) { + var _level$details; + var partsLoaded = []; + var initialPartList = (_level$details = level.details) == null ? void 0 : _level$details.partList; + var _loadPart = function loadPart(part) { + _this6.fragmentLoader.loadPart(frag, part, progressCallback).then(function (partLoadedData) { + partsLoaded[part.index] = partLoadedData; + var loadedPart = partLoadedData.part; + _this6.hls.trigger(Events.FRAG_LOADED, partLoadedData); + var nextPart = getPartWith(level.details, frag.sn, part.index + 1) || findPart(initialPartList, frag.sn, part.index + 1); + if (nextPart) { + _loadPart(nextPart); + } else { + return resolve({ + frag: frag, + part: loadedPart, + partsLoaded: partsLoaded + }); + } + }).catch(reject); + }; + _loadPart(fromPart); + }); + }; + _proto.handleFragLoadError = function handleFragLoadError(error) { + if ('data' in error) { + var data = error.data; + if (error.data && data.details === ErrorDetails.INTERNAL_ABORTED) { + this.handleFragLoadAborted(data.frag, data.part); + } else { + this.hls.trigger(Events.ERROR, data); + } + } else { + this.hls.trigger(Events.ERROR, { + type: ErrorTypes.OTHER_ERROR, + details: ErrorDetails.INTERNAL_EXCEPTION, + err: error, + error: error, + fatal: true + }); + } + return null; + }; + _proto._handleTransmuxerFlush = function _handleTransmuxerFlush(chunkMeta) { + var context = this.getCurrentContext(chunkMeta); + if (!context || this.state !== State.PARSING) { + if (!this.fragCurrent && this.state !== State.STOPPED && this.state !== State.ERROR) { + this.state = State.IDLE; + } + return; + } + var frag = context.frag, + part = context.part, + level = context.level; + var now = self.performance.now(); + frag.stats.parsing.end = now; + if (part) { + part.stats.parsing.end = now; + } + // See if part loading should be disabled/enabled based on buffer and playback position. + var levelDetails = this.getLevelDetails(); + var loadingPartsAtEdge = levelDetails && frag.sn > levelDetails.endSN; + var shouldLoadParts = loadingPartsAtEdge || this.shouldLoadParts(levelDetails, frag.end); + if (shouldLoadParts !== this.loadingParts) { + this.log("LL-Part loading " + (shouldLoadParts ? 'ON' : 'OFF') + " after parsing segment ending @" + frag.end.toFixed(2)); + this.loadingParts = shouldLoadParts; + } + this.updateLevelTiming(frag, part, level, chunkMeta.partial); + }; + _proto.shouldLoadParts = function shouldLoadParts(details, bufferEnd) { + if (this.config.lowLatencyMode) { + if (!details) { + return this.loadingParts; + } + if (details != null && details.partList) { + var _details$fragmentHint; + // Buffer must be ahead of first part + duration of parts after last segment + // and playback must be at or past segment adjacent to part list + var firstPart = details.partList[0]; + var safePartStart = firstPart.end + (((_details$fragmentHint = details.fragmentHint) == null ? void 0 : _details$fragmentHint.duration) || 0); + if (bufferEnd >= safePartStart && this.lastCurrentTime > firstPart.start - firstPart.fragment.duration) { + return true; + } + } + } + return false; + }; + _proto.getCurrentContext = function getCurrentContext(chunkMeta) { + var levels = this.levels, + fragCurrent = this.fragCurrent; + var levelIndex = chunkMeta.level, + sn = chunkMeta.sn, + partIndex = chunkMeta.part; + if (!(levels != null && levels[levelIndex])) { + this.warn("Levels object was unset while buffering fragment " + sn + " of level " + levelIndex + ". The current chunk will not be buffered."); + return null; + } + var level = levels[levelIndex]; + var levelDetails = level.details; + var part = partIndex > -1 ? getPartWith(levelDetails, sn, partIndex) : null; + var frag = part ? part.fragment : getFragmentWithSN(levelDetails, sn, fragCurrent); + if (!frag) { + return null; + } + if (fragCurrent && fragCurrent !== frag) { + frag.stats = fragCurrent.stats; + } + return { + frag: frag, + part: part, + level: level + }; + }; + _proto.bufferFragmentData = function bufferFragmentData(data, frag, part, chunkMeta, noBacktracking) { + var _buffer; + if (!data || this.state !== State.PARSING) { + return; + } + var data1 = data.data1, + data2 = data.data2; + var buffer = data1; + if (data1 && data2) { + // Combine the moof + mdat so that we buffer with a single append + buffer = appendUint8Array(data1, data2); + } + if (!((_buffer = buffer) != null && _buffer.length)) { + return; + } + var segment = { + type: data.type, + frag: frag, + part: part, + chunkMeta: chunkMeta, + parent: frag.type, + data: buffer + }; + this.hls.trigger(Events.BUFFER_APPENDING, segment); + if (data.dropped && data.independent && !part) { + if (noBacktracking) { + return; + } + // Clear buffer so that we reload previous segments sequentially if required + this.flushBufferGap(frag); + } + }; + _proto.flushBufferGap = function flushBufferGap(frag) { + var media = this.media; + if (!media) { + return; + } + // If currentTime is not buffered, clear the back buffer so that we can backtrack as much as needed + if (!BufferHelper.isBuffered(media, media.currentTime)) { + this.flushMainBuffer(0, frag.start); + return; + } + // Remove back-buffer without interrupting playback to allow back tracking + var currentTime = media.currentTime; + var bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0); + var fragDuration = frag.duration; + var segmentFraction = Math.min(this.config.maxFragLookUpTolerance * 2, fragDuration * 0.25); + var start = Math.max(Math.min(frag.start - segmentFraction, bufferInfo.end - segmentFraction), currentTime + segmentFraction); + if (frag.start - start > segmentFraction) { + this.flushMainBuffer(start, frag.start); + } + }; + _proto.getFwdBufferInfo = function getFwdBufferInfo(bufferable, type) { + var _this$media; + var pos = this.getLoadPosition(); + if (!isFiniteNumber(pos)) { + return null; + } + var backwardSeek = this.lastCurrentTime > pos; + var maxBufferHole = backwardSeek || (_this$media = this.media) != null && _this$media.paused ? 0 : this.config.maxBufferHole; + return this.getFwdBufferInfoAtPos(bufferable, pos, type, maxBufferHole); + }; + _proto.getFwdBufferInfoAtPos = function getFwdBufferInfoAtPos(bufferable, pos, type, maxBufferHole) { + var bufferInfo = BufferHelper.bufferInfo(bufferable, pos, maxBufferHole); + // Workaround flaw in getting forward buffer when maxBufferHole is smaller than gap at current pos + if (bufferInfo.len === 0 && bufferInfo.nextStart !== undefined) { + var bufferedFragAtPos = this.fragmentTracker.getBufferedFrag(pos, type); + if (bufferedFragAtPos && (bufferInfo.nextStart <= bufferedFragAtPos.end || bufferedFragAtPos.gap)) { + return BufferHelper.bufferInfo(bufferable, pos, Math.max(bufferInfo.nextStart, maxBufferHole)); + } + } + return bufferInfo; + }; + _proto.getMaxBufferLength = function getMaxBufferLength(levelBitrate) { + var config = this.config; + var maxBufLen; + if (levelBitrate) { + maxBufLen = Math.max(8 * config.maxBufferSize / levelBitrate, config.maxBufferLength); + } else { + maxBufLen = config.maxBufferLength; + } + return Math.min(maxBufLen, config.maxMaxBufferLength); + }; + _proto.reduceMaxBufferLength = function reduceMaxBufferLength(threshold, fragDuration) { + var config = this.config; + var minLength = Math.max(Math.min(threshold - fragDuration, config.maxBufferLength), fragDuration); + var reducedLength = Math.max(threshold - fragDuration * 3, config.maxMaxBufferLength / 2, minLength); + if (reducedLength >= minLength) { + // reduce max buffer length as it might be too high. we do this to avoid loop flushing ... + config.maxMaxBufferLength = reducedLength; + this.warn("Reduce max buffer length to " + reducedLength + "s"); + return true; + } + return false; + }; + _proto.getAppendedFrag = function getAppendedFrag(position, playlistType) { + var _this$fragmentTracker; + if (playlistType === void 0) { + playlistType = PlaylistLevelType.MAIN; + } + var fragOrPart = (_this$fragmentTracker = this.fragmentTracker) == null ? void 0 : _this$fragmentTracker.getAppendedFrag(position, playlistType); + if (fragOrPart && 'fragment' in fragOrPart) { + return fragOrPart.fragment; + } + return fragOrPart; + }; + _proto.getNextFragment = function getNextFragment(pos, levelDetails) { + var fragments = levelDetails.fragments; + var fragLen = fragments.length; + if (!fragLen) { + return null; + } + + // find fragment index, contiguous with end of buffer position + var config = this.config; + var start = fragments[0].start; + var canLoadParts = config.lowLatencyMode && !!levelDetails.partList; + var frag = null; + if (levelDetails.live) { + var initialLiveManifestSize = config.initialLiveManifestSize; + if (fragLen < initialLiveManifestSize) { + this.warn("Not enough fragments to start playback (have: " + fragLen + ", need: " + initialLiveManifestSize + ")"); + return null; + } + // The real fragment start times for a live stream are only known after the PTS range for that level is known. + // In order to discover the range, we load the best matching fragment for that level and demux it. + // Do not load using live logic if the starting frag is requested - we want to use getFragmentAtPosition() so that + // we get the fragment matching that start time + if (!levelDetails.PTSKnown && !this.startFragRequested && this.startPosition === -1 || pos < start) { + if (canLoadParts && !this.loadingParts) { + this.log("LL-Part loading ON for initial live fragment"); + this.loadingParts = true; + } + frag = this.getInitialLiveFragment(levelDetails, fragments); + this.startPosition = this.nextLoadPosition = frag ? this.hls.liveSyncPosition || frag.start : pos; + } + } else if (pos <= start) { + // VoD playlist: if loadPosition before start of playlist, load first fragment + frag = fragments[0]; + } + + // If we haven't run into any special cases already, just load the fragment most closely matching the requested position + if (!frag) { + var end = this.loadingParts ? levelDetails.partEnd : levelDetails.fragmentEnd; + frag = this.getFragmentAtPosition(pos, end, levelDetails); + } + return this.mapToInitFragWhenRequired(frag); + }; + _proto.isLoopLoading = function isLoopLoading(frag, targetBufferTime) { + var trackerState = this.fragmentTracker.getState(frag); + return (trackerState === FragmentState.OK || trackerState === FragmentState.PARTIAL && !!frag.gap) && this.nextLoadPosition > targetBufferTime; + }; + _proto.getNextFragmentLoopLoading = function getNextFragmentLoopLoading(frag, levelDetails, bufferInfo, playlistType, maxBufLen) { + var nextFragment = null; + if (frag.gap) { + nextFragment = this.getNextFragment(this.nextLoadPosition, levelDetails); + if (nextFragment && !nextFragment.gap && bufferInfo.nextStart) { + // Media buffered after GAP tags should not make the next buffer timerange exceed forward buffer length + var nextbufferInfo = this.getFwdBufferInfoAtPos(this.mediaBuffer ? this.mediaBuffer : this.media, bufferInfo.nextStart, playlistType, 0); + if (nextbufferInfo !== null && bufferInfo.len + nextbufferInfo.len >= maxBufLen) { + // Returning here might result in not finding an audio and video candiate to skip to + var sn = nextFragment.sn; + if (this.loopSn !== sn) { + this.log("buffer full after gaps in \"" + playlistType + "\" playlist starting at sn: " + sn); + this.loopSn = sn; + } + return null; + } + } + } + this.loopSn = undefined; + return nextFragment; + }; + _proto.mapToInitFragWhenRequired = function mapToInitFragWhenRequired(frag) { + // If an initSegment is present, it must be buffered first + if (frag != null && frag.initSegment && !(frag != null && frag.initSegment.data) && !this.bitrateTest) { + return frag.initSegment; + } + return frag; + }; + _proto.getNextPart = function getNextPart(partList, frag, targetBufferTime) { + var nextPart = -1; + var contiguous = false; + var independentAttrOmitted = true; + for (var i = 0, len = partList.length; i < len; i++) { + var part = partList[i]; + independentAttrOmitted = independentAttrOmitted && !part.independent; + if (nextPart > -1 && targetBufferTime < part.start) { + break; + } + var loaded = part.loaded; + if (loaded) { + nextPart = -1; + } else if ((contiguous || part.independent || independentAttrOmitted) && part.fragment === frag) { + nextPart = i; + } + contiguous = loaded; + } + return nextPart; + }; + _proto.loadedEndOfParts = function loadedEndOfParts(partList, targetBufferTime) { + var lastPart = partList[partList.length - 1]; + return lastPart && targetBufferTime > lastPart.start && lastPart.loaded; + } + + /* + This method is used find the best matching first fragment for a live playlist. This fragment is used to calculate the + "sliding" of the playlist, which is its offset from the start of playback. After sliding we can compute the real + start and end times for each fragment in the playlist (after which this method will not need to be called). + */; + _proto.getInitialLiveFragment = function getInitialLiveFragment(levelDetails, fragments) { + var fragPrevious = this.fragPrevious; + var frag = null; + if (fragPrevious) { + if (levelDetails.hasProgramDateTime) { + // Prefer using PDT, because it can be accurate enough to choose the correct fragment without knowing the level sliding + this.log("Live playlist, switching playlist, load frag with same PDT: " + fragPrevious.programDateTime); + frag = findFragmentByPDT(fragments, fragPrevious.endProgramDateTime, this.config.maxFragLookUpTolerance); + } + if (!frag) { + // SN does not need to be accurate between renditions, but depending on the packaging it may be so. + var targetSN = fragPrevious.sn + 1; + if (targetSN >= levelDetails.startSN && targetSN <= levelDetails.endSN) { + var fragNext = fragments[targetSN - levelDetails.startSN]; + // Ensure that we're staying within the continuity range, since PTS resets upon a new range + if (fragPrevious.cc === fragNext.cc) { + frag = fragNext; + this.log("Live playlist, switching playlist, load frag with next SN: " + frag.sn); + } + } + // It's important to stay within the continuity range if available; otherwise the fragments in the playlist + // will have the wrong start times + if (!frag) { + frag = findFragWithCC(fragments, fragPrevious.cc); + if (frag) { + this.log("Live playlist, switching playlist, load frag with same CC: " + frag.sn); + } + } + } + } else { + // Find a new start fragment when fragPrevious is null + var liveStart = this.hls.liveSyncPosition; + if (liveStart !== null) { + frag = this.getFragmentAtPosition(liveStart, this.bitrateTest ? levelDetails.fragmentEnd : levelDetails.edge, levelDetails); + } + } + return frag; + } + + /* + This method finds the best matching fragment given the provided position. + */; + _proto.getFragmentAtPosition = function getFragmentAtPosition(bufferEnd, end, levelDetails) { + var config = this.config; + var fragPrevious = this.fragPrevious; + var fragments = levelDetails.fragments, + endSN = levelDetails.endSN; + var fragmentHint = levelDetails.fragmentHint; + var maxFragLookUpTolerance = config.maxFragLookUpTolerance; + var partList = levelDetails.partList; + var loadingParts = !!(this.loadingParts && partList != null && partList.length && fragmentHint); + if (loadingParts && fragmentHint && !this.bitrateTest) { + // Include incomplete fragment with parts at end + fragments = fragments.concat(fragmentHint); + endSN = fragmentHint.sn; + } + var frag; + if (bufferEnd < end) { + var _this$media2; + var backwardSeek = bufferEnd < this.lastCurrentTime; + var lookupTolerance = backwardSeek || bufferEnd > end - maxFragLookUpTolerance || (_this$media2 = this.media) != null && _this$media2.paused ? 0 : maxFragLookUpTolerance; + // Remove the tolerance if it would put the bufferEnd past the actual end of stream + // Uses buffer and sequence number to calculate switch segment (required if using EXT-X-DISCONTINUITY-SEQUENCE) + frag = findFragmentByPTS(fragPrevious, fragments, bufferEnd, lookupTolerance); + } else { + // reach end of playlist + frag = fragments[fragments.length - 1]; + } + if (frag) { + var curSNIdx = frag.sn - levelDetails.startSN; + // Move fragPrevious forward to support forcing the next fragment to load + // when the buffer catches up to a previously buffered range. + var fragState = this.fragmentTracker.getState(frag); + if (fragState === FragmentState.OK || fragState === FragmentState.PARTIAL && frag.gap) { + fragPrevious = frag; + } + if (fragPrevious && frag.sn === fragPrevious.sn && (!loadingParts || partList[0].fragment.sn > frag.sn)) { + // Force the next fragment to load if the previous one was already selected. This can occasionally happen with + // non-uniform fragment durations + var sameLevel = fragPrevious && frag.level === fragPrevious.level; + if (sameLevel) { + var nextFrag = fragments[curSNIdx + 1]; + if (frag.sn < endSN && this.fragmentTracker.getState(nextFrag) !== FragmentState.OK) { + frag = nextFrag; + } else { + frag = null; + } + } + } + } + return frag; + }; + _proto.synchronizeToLiveEdge = function synchronizeToLiveEdge(levelDetails) { + var config = this.config, + media = this.media; + if (!media) { + return; + } + var liveSyncPosition = this.hls.liveSyncPosition; + var currentTime = media.currentTime; + var start = levelDetails.fragments[0].start; + var end = levelDetails.edge; + var withinSlidingWindow = currentTime >= start - config.maxFragLookUpTolerance && currentTime <= end; + // Continue if we can seek forward to sync position or if current time is outside of sliding window + if (liveSyncPosition !== null && media.duration > liveSyncPosition && (currentTime < liveSyncPosition || !withinSlidingWindow)) { + // Continue if buffer is starving or if current time is behind max latency + var maxLatency = config.liveMaxLatencyDuration !== undefined ? config.liveMaxLatencyDuration : config.liveMaxLatencyDurationCount * levelDetails.targetduration; + if (!withinSlidingWindow && media.readyState < 4 || currentTime < end - maxLatency) { + if (!this.loadedmetadata) { + this.nextLoadPosition = liveSyncPosition; + } + // Only seek if ready and there is not a significant forward buffer available for playback + if (media.readyState) { + this.warn("Playback: " + currentTime.toFixed(3) + " is located too far from the end of live sliding playlist: " + end + ", reset currentTime to : " + liveSyncPosition.toFixed(3)); + media.currentTime = liveSyncPosition; + } + } + } + }; + _proto.alignPlaylists = function alignPlaylists(details, previousDetails, switchDetails) { + // FIXME: If not for `shouldAlignOnDiscontinuities` requiring fragPrevious.cc, + // this could all go in level-helper mergeDetails() + var length = details.fragments.length; + if (!length) { + this.warn("No fragments in live playlist"); + return 0; + } + var slidingStart = details.fragments[0].start; + var firstLevelLoad = !previousDetails; + var aligned = details.alignedSliding && isFiniteNumber(slidingStart); + if (firstLevelLoad || !aligned && !slidingStart) { + var fragPrevious = this.fragPrevious; + alignStream(fragPrevious, switchDetails, details); + var alignedSlidingStart = details.fragments[0].start; + this.log("Live playlist sliding: " + alignedSlidingStart.toFixed(2) + " start-sn: " + (previousDetails ? previousDetails.startSN : 'na') + "->" + details.startSN + " prev-sn: " + (fragPrevious ? fragPrevious.sn : 'na') + " fragments: " + length); + return alignedSlidingStart; + } + return slidingStart; + }; + _proto.waitForCdnTuneIn = function waitForCdnTuneIn(details) { + // Wait for Low-Latency CDN Tune-in to get an updated playlist + var advancePartLimit = 3; + return details.live && details.canBlockReload && details.partTarget && details.tuneInGoal > Math.max(details.partHoldBack, details.partTarget * advancePartLimit); + }; + _proto.setStartPosition = function setStartPosition(details, sliding) { + // compute start position if set to -1. use it straight away if value is defined + var startPosition = this.startPosition; + if (startPosition < sliding) { + startPosition = -1; + } + if (startPosition === -1 || this.lastCurrentTime === -1) { + // Use Playlist EXT-X-START:TIME-OFFSET when set + // Prioritize Multivariant Playlist offset so that main, audio, and subtitle stream-controller start times match + var offsetInMultivariantPlaylist = this.startTimeOffset !== null; + var startTimeOffset = offsetInMultivariantPlaylist ? this.startTimeOffset : details.startTimeOffset; + if (startTimeOffset !== null && isFiniteNumber(startTimeOffset)) { + startPosition = sliding + startTimeOffset; + if (startTimeOffset < 0) { + startPosition += details.edge; + } + startPosition = Math.min(Math.max(sliding, startPosition), sliding + details.totalduration); + this.log("Start time offset " + startTimeOffset + " found in " + (offsetInMultivariantPlaylist ? 'multivariant' : 'media') + " playlist, adjust startPosition to " + startPosition); + this.startPosition = startPosition; + } else if (details.live) { + // Leave this.startPosition at -1, so that we can use `getInitialLiveFragment` logic when startPosition has + // not been specified via the config or an as an argument to startLoad (#3736). + startPosition = this.hls.liveSyncPosition || sliding; + } else { + this.startPosition = startPosition = 0; + } + this.lastCurrentTime = startPosition; + } + this.nextLoadPosition = startPosition; + }; + _proto.getLoadPosition = function getLoadPosition() { + var media = this.media; + // if we have not yet loaded any fragment, start loading from start position + var pos = 0; + if (this.loadedmetadata && media) { + pos = media.currentTime; + } else if (this.nextLoadPosition) { + pos = this.nextLoadPosition; + } + return pos; + }; + _proto.handleFragLoadAborted = function handleFragLoadAborted(frag, part) { + if (this.transmuxer && frag.sn !== 'initSegment' && frag.stats.aborted) { + this.warn("Fragment " + frag.sn + (part ? ' part ' + part.index : '') + " of level " + frag.level + " was aborted"); + this.resetFragmentLoading(frag); + } + }; + _proto.resetFragmentLoading = function resetFragmentLoading(frag) { + if (!this.fragCurrent || !this.fragContextChanged(frag) && this.state !== State.FRAG_LOADING_WAITING_RETRY) { + this.state = State.IDLE; + } + }; + _proto.onFragmentOrKeyLoadError = function onFragmentOrKeyLoadError(filterType, data) { + if (data.chunkMeta && !data.frag) { + var context = this.getCurrentContext(data.chunkMeta); + if (context) { + data.frag = context.frag; + } + } + var frag = data.frag; + // Handle frag error related to caller's filterType + if (!frag || frag.type !== filterType || !this.levels) { + return; + } + if (this.fragContextChanged(frag)) { + var _this$fragCurrent2; + this.warn("Frag load error must match current frag to retry " + frag.url + " > " + ((_this$fragCurrent2 = this.fragCurrent) == null ? void 0 : _this$fragCurrent2.url)); + return; + } + var gapTagEncountered = data.details === ErrorDetails.FRAG_GAP; + if (gapTagEncountered) { + this.fragmentTracker.fragBuffered(frag, true); + } + // keep retrying until the limit will be reached + var errorAction = data.errorAction; + var _ref2 = errorAction || {}, + action = _ref2.action, + _ref2$retryCount = _ref2.retryCount, + retryCount = _ref2$retryCount === void 0 ? 0 : _ref2$retryCount, + retryConfig = _ref2.retryConfig; + if (errorAction && action === NetworkErrorAction.RetryRequest && retryConfig) { + this.resetStartWhenNotLoaded(this.levelLastLoaded); + var delay = getRetryDelay(retryConfig, retryCount); + this.warn("Fragment " + frag.sn + " of " + filterType + " " + frag.level + " errored with " + data.details + ", retrying loading " + (retryCount + 1) + "/" + retryConfig.maxNumRetry + " in " + delay + "ms"); + errorAction.resolved = true; + this.retryDate = self.performance.now() + delay; + this.state = State.FRAG_LOADING_WAITING_RETRY; + } else if (retryConfig && errorAction) { + this.resetFragmentErrors(filterType); + if (retryCount < retryConfig.maxNumRetry) { + // Network retry is skipped when level switch is preferred + if (!gapTagEncountered && action !== NetworkErrorAction.RemoveAlternatePermanently) { + errorAction.resolved = true; + } + } else { + this.warn(data.details + " reached or exceeded max retry (" + retryCount + ")"); + return; + } + } else if ((errorAction == null ? void 0 : errorAction.action) === NetworkErrorAction.SendAlternateToPenaltyBox) { + this.state = State.WAITING_LEVEL; + } else { + this.state = State.ERROR; + } + // Perform next async tick sooner to speed up error action resolution + this.tickImmediate(); + }; + _proto.reduceLengthAndFlushBuffer = function reduceLengthAndFlushBuffer(data) { + // if in appending state + if (this.state === State.PARSING || this.state === State.PARSED) { + var frag = data.frag; + var playlistType = data.parent; + var bufferedInfo = this.getFwdBufferInfo(this.mediaBuffer, playlistType); + // 0.5 : tolerance needed as some browsers stalls playback before reaching buffered end + // reduce max buf len if current position is buffered + var buffered = bufferedInfo && bufferedInfo.len > 0.5; + if (buffered) { + this.reduceMaxBufferLength(bufferedInfo.len, (frag == null ? void 0 : frag.duration) || 10); + } + var flushBuffer = !buffered; + if (flushBuffer) { + // current position is not buffered, but browser is still complaining about buffer full error + // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708 + // in that case flush the whole audio buffer to recover + this.warn("Buffer full error while media.currentTime is not buffered, flush " + playlistType + " buffer"); + } + if (frag) { + this.fragmentTracker.removeFragment(frag); + this.nextLoadPosition = frag.start; + } + this.resetLoadingState(); + return flushBuffer; + } + return false; + }; + _proto.resetFragmentErrors = function resetFragmentErrors(filterType) { + if (filterType === PlaylistLevelType.AUDIO) { + // Reset current fragment since audio track audio is essential and may not have a fail-over track + this.fragCurrent = null; + } + // Fragment errors that result in a level switch or redundant fail-over + // should reset the stream controller state to idle + if (!this.loadedmetadata) { + this.startFragRequested = false; + } + if (this.state !== State.STOPPED) { + this.state = State.IDLE; + } + }; + _proto.afterBufferFlushed = function afterBufferFlushed(media, bufferType, playlistType) { + if (!media) { + return; + } + // After successful buffer flushing, filter flushed fragments from bufferedFrags use mediaBuffered instead of media + // (so that we will check against video.buffered ranges in case of alt audio track) + var bufferedTimeRanges = BufferHelper.getBuffered(media); + this.fragmentTracker.detectEvictedFragments(bufferType, bufferedTimeRanges, playlistType); + if (this.state === State.ENDED) { + this.resetLoadingState(); + } + }; + _proto.resetLoadingState = function resetLoadingState() { + this.log('Reset loading state'); + this.fragCurrent = null; + this.fragPrevious = null; + if (this.state !== State.STOPPED) { + this.state = State.IDLE; + } + }; + _proto.resetStartWhenNotLoaded = function resetStartWhenNotLoaded(level) { + // if loadedmetadata is not set, it means that first frag request failed + // in that case, reset startFragRequested flag + if (!this.loadedmetadata) { + this.startFragRequested = false; + var details = level ? level.details : null; + if (details != null && details.live) { + // Update the start position and return to IDLE to recover live start + this.startPosition = -1; + this.setStartPosition(details, 0); + this.resetLoadingState(); + } else { + this.nextLoadPosition = this.startPosition; + } + } + }; + _proto.resetWhenMissingContext = function resetWhenMissingContext(chunkMeta) { + this.warn("The loading context changed while buffering fragment " + chunkMeta.sn + " of level " + chunkMeta.level + ". This chunk will not be buffered."); + this.removeUnbufferedFrags(); + this.resetStartWhenNotLoaded(this.levelLastLoaded); + this.resetLoadingState(); + }; + _proto.removeUnbufferedFrags = function removeUnbufferedFrags(start) { + if (start === void 0) { + start = 0; + } + this.fragmentTracker.removeFragmentsInRange(start, Infinity, this.playlistType, false, true); + }; + _proto.updateLevelTiming = function updateLevelTiming(frag, part, level, partial) { + var _this7 = this, + _this$transmuxer; + var details = level.details; + if (!details) { + this.warn('level.details undefined'); + return; + } + var parsed = Object.keys(frag.elementaryStreams).reduce(function (result, type) { + var info = frag.elementaryStreams[type]; + if (info) { + var parsedDuration = info.endPTS - info.startPTS; + if (parsedDuration <= 0) { + // Destroy the transmuxer after it's next time offset failed to advance because duration was <= 0. + // The new transmuxer will be configured with a time offset matching the next fragment start, + // preventing the timeline from shifting. + _this7.warn("Could not parse fragment " + frag.sn + " " + type + " duration reliably (" + parsedDuration + ")"); + return result || false; + } + var drift = partial ? 0 : updateFragPTSDTS(details, frag, info.startPTS, info.endPTS, info.startDTS, info.endDTS); + _this7.hls.trigger(Events.LEVEL_PTS_UPDATED, { + details: details, + level: level, + drift: drift, + type: type, + frag: frag, + start: info.startPTS, + end: info.endPTS + }); + return true; + } + return result; + }, false); + if (!parsed && ((_this$transmuxer = this.transmuxer) == null ? void 0 : _this$transmuxer.error) === null) { + var error = new Error("Found no media in fragment " + frag.sn + " of level " + frag.level + " resetting transmuxer to fallback to playlist timing"); + if (level.fragmentError === 0) { + // Mark and track the odd empty segment as a gap to avoid reloading + level.fragmentError++; + frag.gap = true; + this.fragmentTracker.removeFragment(frag); + this.fragmentTracker.fragBuffered(frag, true); + } + this.warn(error.message); + this.hls.trigger(Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.FRAG_PARSING_ERROR, + fatal: false, + error: error, + frag: frag, + reason: "Found no media in msn " + frag.sn + " of level \"" + level.url + "\"" + }); + if (!this.hls) { + return; + } + this.resetTransmuxer(); + // For this error fallthrough. Marking parsed will allow advancing to next fragment. + } + this.state = State.PARSED; + this.log("Parsed " + frag.type + " sn: " + frag.sn + (part ? ' part: ' + part.index : '') + " of " + this.fragInfo(frag) + ")"); + this.hls.trigger(Events.FRAG_PARSED, { + frag: frag, + part: part + }); + }; + _proto.playlistLabel = function playlistLabel() { + return this.playlistType === PlaylistLevelType.MAIN ? 'level' : 'track'; + }; + _proto.fragInfo = function fragInfo(frag, pts) { + var _ref3, _ref4; + if (pts === void 0) { + pts = true; + } + return this.playlistLabel() + " " + frag.level + " (frag:[" + ((_ref3 = pts ? frag.startPTS : frag.start) != null ? _ref3 : NaN).toFixed(3) + "-" + ((_ref4 = pts ? frag.endPTS : frag.end) != null ? _ref4 : NaN).toFixed(3) + "]"; + }; + _proto.resetTransmuxer = function resetTransmuxer() { + var _this$transmuxer2; + (_this$transmuxer2 = this.transmuxer) == null ? void 0 : _this$transmuxer2.reset(); + }; + _proto.recoverWorkerError = function recoverWorkerError(data) { + if (data.event === 'demuxerWorker') { + this.fragmentTracker.removeAllFragments(); + if (this.transmuxer) { + this.transmuxer.destroy(); + this.transmuxer = null; + } + this.resetStartWhenNotLoaded(this.levelLastLoaded); + this.resetLoadingState(); + } + }; + return _createClass(BaseStreamController, [{ + key: "state", + get: function get() { + return this._state; + }, + set: function set(nextState) { + var previousState = this._state; + if (previousState !== nextState) { + this._state = nextState; + this.log(previousState + "->" + nextState); + } + } + }]); + }(TaskLoop); + + var ChunkCache = /*#__PURE__*/function () { + function ChunkCache() { + this.chunks = []; + this.dataLength = 0; + } + var _proto = ChunkCache.prototype; + _proto.push = function push(chunk) { + this.chunks.push(chunk); + this.dataLength += chunk.length; + }; + _proto.flush = function flush() { + var chunks = this.chunks, + dataLength = this.dataLength; + var result; + if (!chunks.length) { + return new Uint8Array(0); + } else if (chunks.length === 1) { + result = chunks[0]; + } else { + result = concatUint8Arrays(chunks, dataLength); + } + this.reset(); + return result; + }; + _proto.reset = function reset() { + this.chunks.length = 0; + this.dataLength = 0; + }; + return ChunkCache; + }(); + function concatUint8Arrays(chunks, dataLength) { + var result = new Uint8Array(dataLength); + var offset = 0; + for (var i = 0; i < chunks.length; i++) { + var chunk = chunks[i]; + result.set(chunk, offset); + offset += chunk.length; + } + return result; + } + + function dummyTrack(type, inputTimeScale) { + if (type === void 0) { + type = ''; + } + if (inputTimeScale === void 0) { + inputTimeScale = 90000; + } + return { + type: type, + id: -1, + pid: -1, + inputTimeScale: inputTimeScale, + sequenceNumber: -1, + samples: [], + dropped: 0 + }; + } + + /** + * Returns any adjacent ID3 tags found in data starting at offset, as one block of data + * + * @param data - The data to search in + * @param offset - The offset at which to start searching + * + * @returns The block of data containing any ID3 tags found + * or `undefined` if no header is found at the starting offset + * + * @internal + * + * @group ID3 + */ + function getId3Data(data, offset) { + var front = offset; + var length = 0; + while (isId3Header(data, offset)) { + // ID3 header is 10 bytes + length += 10; + var size = readId3Size(data, offset + 6); + length += size; + if (isId3Footer(data, offset + 10)) { + // ID3 footer is 10 bytes + length += 10; + } + offset += length; + } + if (length > 0) { + return data.subarray(front, front + length); + } + return undefined; + } + + /** + * Read a 33 bit timestamp from an ID3 frame. + * + * @param timeStampFrame - the ID3 frame + * + * @returns The timestamp + * + * @internal + * + * @group ID3 + */ + function readId3Timestamp(timeStampFrame) { + if (timeStampFrame.data.byteLength === 8) { + var data = new Uint8Array(timeStampFrame.data); + // timestamp is 33 bit expressed as a big-endian eight-octet number, + // with the upper 31 bits set to zero. + var pts33Bit = data[3] & 0x1; + var timestamp = (data[4] << 23) + (data[5] << 15) + (data[6] << 7) + data[7]; + timestamp /= 45; + if (pts33Bit) { + timestamp += 47721858.84; + } // 2^32 / 90 + return Math.round(timestamp); + } + return undefined; + } + + /** + * Searches for the Elementary Stream timestamp found in the ID3 data chunk + * + * @param data - Block of data containing one or more ID3 tags + * + * @returns The timestamp + * + * @group ID3 + * + * @beta + */ + function getId3Timestamp(data) { + var frames = getId3Frames(data); + for (var i = 0; i < frames.length; i++) { + var frame = frames[i]; + if (isId3TimestampFrame(frame)) { + return readId3Timestamp(frame); + } + } + return undefined; + } + + /** + * Checks if the given data contains an ID3 tag. + * + * @param data - The data to check + * @param offset - The offset at which to start checking + * + * @returns `true` if an ID3 tag is found + * + * @group ID3 + * + * @beta + */ + function canParseId3(data, offset) { + return isId3Header(data, offset) && readId3Size(data, offset + 6) + 10 <= data.length - offset; + } + + var BaseAudioDemuxer = /*#__PURE__*/function () { + function BaseAudioDemuxer() { + this._audioTrack = void 0; + this._id3Track = void 0; + this.frameIndex = 0; + this.cachedData = null; + this.basePTS = null; + this.initPTS = null; + this.lastPTS = null; + } + var _proto = BaseAudioDemuxer.prototype; + _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) { + this._id3Track = { + type: 'id3', + id: 3, + pid: -1, + inputTimeScale: 90000, + sequenceNumber: 0, + samples: [], + dropped: 0 + }; + }; + _proto.resetTimeStamp = function resetTimeStamp(deaultTimestamp) { + this.initPTS = deaultTimestamp; + this.resetContiguity(); + }; + _proto.resetContiguity = function resetContiguity() { + this.basePTS = null; + this.lastPTS = null; + this.frameIndex = 0; + }; + _proto.canParse = function canParse(data, offset) { + return false; + }; + _proto.appendFrame = function appendFrame(track, data, offset) {} + + // feed incoming data to the front of the parsing pipeline + ; + _proto.demux = function demux(data, timeOffset) { + if (this.cachedData) { + data = appendUint8Array(this.cachedData, data); + this.cachedData = null; + } + var id3Data = getId3Data(data, 0); + var offset = id3Data ? id3Data.length : 0; + var lastDataIndex; + var track = this._audioTrack; + var id3Track = this._id3Track; + var timestamp = id3Data ? getId3Timestamp(id3Data) : undefined; + var length = data.length; + if (this.basePTS === null || this.frameIndex === 0 && isFiniteNumber(timestamp)) { + this.basePTS = initPTSFn(timestamp, timeOffset, this.initPTS); + this.lastPTS = this.basePTS; + } + if (this.lastPTS === null) { + this.lastPTS = this.basePTS; + } + + // more expressive than alternative: id3Data?.length + if (id3Data && id3Data.length > 0) { + id3Track.samples.push({ + pts: this.lastPTS, + dts: this.lastPTS, + data: id3Data, + type: MetadataSchema.audioId3, + duration: Number.POSITIVE_INFINITY + }); + } + while (offset < length) { + if (this.canParse(data, offset)) { + var frame = this.appendFrame(track, data, offset); + if (frame) { + this.frameIndex++; + this.lastPTS = frame.sample.pts; + offset += frame.length; + lastDataIndex = offset; + } else { + offset = length; + } + } else if (canParseId3(data, offset)) { + // after a canParse, a call to getId3Data *should* always returns some data + id3Data = getId3Data(data, offset); + id3Track.samples.push({ + pts: this.lastPTS, + dts: this.lastPTS, + data: id3Data, + type: MetadataSchema.audioId3, + duration: Number.POSITIVE_INFINITY + }); + offset += id3Data.length; + lastDataIndex = offset; + } else { + offset++; + } + if (offset === length && lastDataIndex !== length) { + var partialData = sliceUint8(data, lastDataIndex); + if (this.cachedData) { + this.cachedData = appendUint8Array(this.cachedData, partialData); + } else { + this.cachedData = partialData; + } + } + } + return { + audioTrack: track, + videoTrack: dummyTrack(), + id3Track: id3Track, + textTrack: dummyTrack() + }; + }; + _proto.demuxSampleAes = function demuxSampleAes(data, keyData, timeOffset) { + return Promise.reject(new Error("[" + this + "] This demuxer does not support Sample-AES decryption")); + }; + _proto.flush = function flush(timeOffset) { + // Parse cache in case of remaining frames. + var cachedData = this.cachedData; + if (cachedData) { + this.cachedData = null; + this.demux(cachedData, 0); + } + return { + audioTrack: this._audioTrack, + videoTrack: dummyTrack(), + id3Track: this._id3Track, + textTrack: dummyTrack() + }; + }; + _proto.destroy = function destroy() { + this.cachedData = null; + // @ts-ignore + this._audioTrack = this._id3Track = undefined; + }; + return BaseAudioDemuxer; + }(); + /** + * Initialize PTS + * <p> + * use timestamp unless it is undefined, NaN or Infinity + * </p> + */ + var initPTSFn = function initPTSFn(timestamp, timeOffset, initPTS) { + if (isFiniteNumber(timestamp)) { + return timestamp * 90; + } + var init90kHz = initPTS ? initPTS.baseTime * 90000 / initPTS.timescale : 0; + return timeOffset * 90000 + init90kHz; + }; + + function getAudioConfig(observer, data, offset, manifestCodec) { + var adtsSamplingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350]; + var byte2 = data[offset + 2]; + var adtsSamplingIndex = byte2 >> 2 & 0xf; + if (adtsSamplingIndex > 12) { + var error = new Error("invalid ADTS sampling index:" + adtsSamplingIndex); + observer.emit(Events.ERROR, Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.FRAG_PARSING_ERROR, + fatal: true, + error: error, + reason: error.message + }); + return; + } + // MPEG-4 Audio Object Type (profile_ObjectType+1) + var adtsObjectType = (byte2 >> 6 & 0x3) + 1; + var channelCount = data[offset + 3] >> 6 & 0x3 | (byte2 & 1) << 2; + var codec = 'mp4a.40.' + adtsObjectType; + /* refer to http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Audio_Specific_Config + ISO/IEC 14496-3 - Table 1.13 — Syntax of AudioSpecificConfig() + Audio Profile / Audio Object Type + 0: Null + 1: AAC Main + 2: AAC LC (Low Complexity) + 3: AAC SSR (Scalable Sample Rate) + 4: AAC LTP (Long Term Prediction) + 5: SBR (Spectral Band Replication) + 6: AAC Scalable + sampling freq + 0: 96000 Hz + 1: 88200 Hz + 2: 64000 Hz + 3: 48000 Hz + 4: 44100 Hz + 5: 32000 Hz + 6: 24000 Hz + 7: 22050 Hz + 8: 16000 Hz + 9: 12000 Hz + 10: 11025 Hz + 11: 8000 Hz + 12: 7350 Hz + 13: Reserved + 14: Reserved + 15: frequency is written explictly + Channel Configurations + These are the channel configurations: + 0: Defined in AOT Specifc Config + 1: 1 channel: front-center + 2: 2 channels: front-left, front-right + */ + // audioObjectType = profile => profile, the MPEG-4 Audio Object Type minus 1 + var samplerate = adtsSamplingRates[adtsSamplingIndex]; + var aacSampleIndex = adtsSamplingIndex; + if (adtsObjectType === 5 || adtsObjectType === 29) { + // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies + // there is a factor 2 between frame sample rate and output sample rate + // multiply frequency by 2 (see table above, equivalent to substract 3) + aacSampleIndex -= 3; + } + var config = [adtsObjectType << 3 | (aacSampleIndex & 0x0e) >> 1, (aacSampleIndex & 0x01) << 7 | channelCount << 3]; + logger.log("manifest codec:" + manifestCodec + ", parsed codec:" + codec + ", channels:" + channelCount + ", rate:" + samplerate + " (ADTS object type:" + adtsObjectType + " sampling index:" + adtsSamplingIndex + ")"); + return { + config: config, + samplerate: samplerate, + channelCount: channelCount, + codec: codec, + parsedCodec: codec, + manifestCodec: manifestCodec + }; + } + function isHeaderPattern$1(data, offset) { + return data[offset] === 0xff && (data[offset + 1] & 0xf6) === 0xf0; + } + function getHeaderLength(data, offset) { + return data[offset + 1] & 0x01 ? 7 : 9; + } + function getFullFrameLength(data, offset) { + return (data[offset + 3] & 0x03) << 11 | data[offset + 4] << 3 | (data[offset + 5] & 0xe0) >>> 5; + } + function canGetFrameLength(data, offset) { + return offset + 5 < data.length; + } + function isHeader$1(data, offset) { + // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1 + // Layer bits (position 14 and 15) in header should be always 0 for ADTS + // More info https://wiki.multimedia.cx/index.php?title=ADTS + return offset + 1 < data.length && isHeaderPattern$1(data, offset); + } + function canParse$1(data, offset) { + return canGetFrameLength(data, offset) && isHeaderPattern$1(data, offset) && getFullFrameLength(data, offset) <= data.length - offset; + } + function probe$1(data, offset) { + // same as isHeader but we also check that ADTS frame follows last ADTS frame + // or end of data is reached + if (isHeader$1(data, offset)) { + // ADTS header Length + var headerLength = getHeaderLength(data, offset); + if (offset + headerLength >= data.length) { + return false; + } + // ADTS frame Length + var frameLength = getFullFrameLength(data, offset); + if (frameLength <= headerLength) { + return false; + } + var newOffset = offset + frameLength; + return newOffset === data.length || isHeader$1(data, newOffset); + } + return false; + } + function initTrackConfig(track, observer, data, offset, audioCodec) { + if (!track.samplerate) { + var config = getAudioConfig(observer, data, offset, audioCodec); + if (!config) { + return; + } + _extends(track, config); + } + } + function getFrameDuration(samplerate) { + return 1024 * 90000 / samplerate; + } + function parseFrameHeader(data, offset) { + // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header + var headerLength = getHeaderLength(data, offset); + if (offset + headerLength <= data.length) { + // retrieve frame size + var frameLength = getFullFrameLength(data, offset) - headerLength; + if (frameLength > 0) { + // logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}`); + return { + headerLength: headerLength, + frameLength: frameLength + }; + } + } + } + function appendFrame$1(track, data, offset, pts, frameIndex) { + var frameDuration = getFrameDuration(track.samplerate); + var stamp = pts + frameIndex * frameDuration; + var header = parseFrameHeader(data, offset); + var unit; + if (header) { + var frameLength = header.frameLength, + headerLength = header.headerLength; + var _length = headerLength + frameLength; + var missing = Math.max(0, offset + _length - data.length); + // logger.log(`AAC frame ${frameIndex}, pts:${stamp} length@offset/total: ${frameLength}@${offset+headerLength}/${data.byteLength} missing: ${missing}`); + if (missing) { + unit = new Uint8Array(_length - headerLength); + unit.set(data.subarray(offset + headerLength, data.length), 0); + } else { + unit = data.subarray(offset + headerLength, offset + _length); + } + var _sample = { + unit: unit, + pts: stamp + }; + if (!missing) { + track.samples.push(_sample); + } + return { + sample: _sample, + length: _length, + missing: missing + }; + } + // overflow incomplete header + var length = data.length - offset; + unit = new Uint8Array(length); + unit.set(data.subarray(offset, data.length), 0); + var sample = { + unit: unit, + pts: stamp + }; + return { + sample: sample, + length: length, + missing: -1 + }; + } + + /** + * MPEG parser helper + */ + + var chromeVersion$1 = null; + var BitratesMap = [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160]; + var SamplingRateMap = [44100, 48000, 32000, 22050, 24000, 16000, 11025, 12000, 8000]; + var SamplesCoefficients = [ + // MPEG 2.5 + [0, + // Reserved + 72, + // Layer3 + 144, + // Layer2 + 12 // Layer1 + ], + // Reserved + [0, + // Reserved + 0, + // Layer3 + 0, + // Layer2 + 0 // Layer1 + ], + // MPEG 2 + [0, + // Reserved + 72, + // Layer3 + 144, + // Layer2 + 12 // Layer1 + ], + // MPEG 1 + [0, + // Reserved + 144, + // Layer3 + 144, + // Layer2 + 12 // Layer1 + ]]; + var BytesInSlot = [0, + // Reserved + 1, + // Layer3 + 1, + // Layer2 + 4 // Layer1 + ]; + function appendFrame(track, data, offset, pts, frameIndex) { + // Using http://www.datavoyage.com/mpgscript/mpeghdr.htm as a reference + if (offset + 24 > data.length) { + return; + } + var header = parseHeader(data, offset); + if (header && offset + header.frameLength <= data.length) { + var frameDuration = header.samplesPerFrame * 90000 / header.sampleRate; + var stamp = pts + frameIndex * frameDuration; + var sample = { + unit: data.subarray(offset, offset + header.frameLength), + pts: stamp, + dts: stamp + }; + track.config = []; + track.channelCount = header.channelCount; + track.samplerate = header.sampleRate; + track.samples.push(sample); + return { + sample: sample, + length: header.frameLength, + missing: 0 + }; + } + } + function parseHeader(data, offset) { + var mpegVersion = data[offset + 1] >> 3 & 3; + var mpegLayer = data[offset + 1] >> 1 & 3; + var bitRateIndex = data[offset + 2] >> 4 & 15; + var sampleRateIndex = data[offset + 2] >> 2 & 3; + if (mpegVersion !== 1 && bitRateIndex !== 0 && bitRateIndex !== 15 && sampleRateIndex !== 3) { + var paddingBit = data[offset + 2] >> 1 & 1; + var channelMode = data[offset + 3] >> 6; + var columnInBitrates = mpegVersion === 3 ? 3 - mpegLayer : mpegLayer === 3 ? 3 : 4; + var bitRate = BitratesMap[columnInBitrates * 14 + bitRateIndex - 1] * 1000; + var columnInSampleRates = mpegVersion === 3 ? 0 : mpegVersion === 2 ? 1 : 2; + var sampleRate = SamplingRateMap[columnInSampleRates * 3 + sampleRateIndex]; + var channelCount = channelMode === 3 ? 1 : 2; // If bits of channel mode are `11` then it is a single channel (Mono) + var sampleCoefficient = SamplesCoefficients[mpegVersion][mpegLayer]; + var bytesInSlot = BytesInSlot[mpegLayer]; + var samplesPerFrame = sampleCoefficient * 8 * bytesInSlot; + var frameLength = Math.floor(sampleCoefficient * bitRate / sampleRate + paddingBit) * bytesInSlot; + if (chromeVersion$1 === null) { + var userAgent = navigator.userAgent || ''; + var result = userAgent.match(/Chrome\/(\d+)/i); + chromeVersion$1 = result ? parseInt(result[1]) : 0; + } + var needChromeFix = !!chromeVersion$1 && chromeVersion$1 <= 87; + if (needChromeFix && mpegLayer === 2 && bitRate >= 224000 && channelMode === 0) { + // Work around bug in Chromium by setting channelMode to dual-channel (01) instead of stereo (00) + data[offset + 3] = data[offset + 3] | 0x80; + } + return { + sampleRate: sampleRate, + channelCount: channelCount, + frameLength: frameLength, + samplesPerFrame: samplesPerFrame + }; + } + } + function isHeaderPattern(data, offset) { + return data[offset] === 0xff && (data[offset + 1] & 0xe0) === 0xe0 && (data[offset + 1] & 0x06) !== 0x00; + } + function isHeader(data, offset) { + // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1 + // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III) + // More info http://www.mp3-tech.org/programmer/frame_header.html + return offset + 1 < data.length && isHeaderPattern(data, offset); + } + function canParse(data, offset) { + var headerSize = 4; + return isHeaderPattern(data, offset) && headerSize <= data.length - offset; + } + function probe(data, offset) { + // same as isHeader but we also check that MPEG frame follows last MPEG frame + // or end of data is reached + if (offset + 1 < data.length && isHeaderPattern(data, offset)) { + // MPEG header Length + var headerLength = 4; + // MPEG frame Length + var header = parseHeader(data, offset); + var frameLength = headerLength; + if (header != null && header.frameLength) { + frameLength = header.frameLength; + } + var newOffset = offset + frameLength; + return newOffset === data.length || isHeader(data, newOffset); + } + return false; + } + + var AACDemuxer = /*#__PURE__*/function (_BaseAudioDemuxer) { + function AACDemuxer(observer, config) { + var _this; + _this = _BaseAudioDemuxer.call(this) || this; + _this.observer = void 0; + _this.config = void 0; + _this.observer = observer; + _this.config = config; + return _this; + } + _inheritsLoose(AACDemuxer, _BaseAudioDemuxer); + var _proto = AACDemuxer.prototype; + _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) { + _BaseAudioDemuxer.prototype.resetInitSegment.call(this, initSegment, audioCodec, videoCodec, trackDuration); + this._audioTrack = { + container: 'audio/adts', + type: 'audio', + id: 2, + pid: -1, + sequenceNumber: 0, + segmentCodec: 'aac', + samples: [], + manifestCodec: audioCodec, + duration: trackDuration, + inputTimeScale: 90000, + dropped: 0 + }; + } + + // Source for probe info - https://wiki.multimedia.cx/index.php?title=ADTS + ; + AACDemuxer.probe = function probe$2(data, logger) { + if (!data) { + return false; + } + + // Check for the ADTS sync word + // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1 + // Layer bits (position 14 and 15) in header should be always 0 for ADTS + // More info https://wiki.multimedia.cx/index.php?title=ADTS + var id3Data = getId3Data(data, 0); + var offset = (id3Data == null ? void 0 : id3Data.length) || 0; + if (probe(data, offset)) { + return false; + } + for (var length = data.length; offset < length; offset++) { + if (probe$1(data, offset)) { + logger.log('ADTS sync word found !'); + return true; + } + } + return false; + }; + _proto.canParse = function canParse(data, offset) { + return canParse$1(data, offset); + }; + _proto.appendFrame = function appendFrame(track, data, offset) { + initTrackConfig(track, this.observer, data, offset, track.manifestCodec); + var frame = appendFrame$1(track, data, offset, this.basePTS, this.frameIndex); + if (frame && frame.missing === 0) { + return frame; + } + }; + return AACDemuxer; + }(BaseAudioDemuxer); + + var emsgSchemePattern = /\/emsg[-/]ID3/i; + var MP4Demuxer = /*#__PURE__*/function () { + function MP4Demuxer(observer, config) { + this.remainderData = null; + this.timeOffset = 0; + this.config = void 0; + this.videoTrack = void 0; + this.audioTrack = void 0; + this.id3Track = void 0; + this.txtTrack = void 0; + this.config = config; + } + var _proto = MP4Demuxer.prototype; + _proto.resetTimeStamp = function resetTimeStamp() {}; + _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) { + var videoTrack = this.videoTrack = dummyTrack('video', 1); + var audioTrack = this.audioTrack = dummyTrack('audio', 1); + var captionTrack = this.txtTrack = dummyTrack('text', 1); + this.id3Track = dummyTrack('id3', 1); + this.timeOffset = 0; + if (!(initSegment != null && initSegment.byteLength)) { + return; + } + var initData = parseInitSegment(initSegment); + if (initData.video) { + var _initData$video = initData.video, + id = _initData$video.id, + timescale = _initData$video.timescale, + codec = _initData$video.codec; + videoTrack.id = id; + videoTrack.timescale = captionTrack.timescale = timescale; + videoTrack.codec = codec; + } + if (initData.audio) { + var _initData$audio = initData.audio, + _id = _initData$audio.id, + _timescale = _initData$audio.timescale, + _codec = _initData$audio.codec; + audioTrack.id = _id; + audioTrack.timescale = _timescale; + audioTrack.codec = _codec; + } + captionTrack.id = RemuxerTrackIdConfig.text; + videoTrack.sampleDuration = 0; + videoTrack.duration = audioTrack.duration = trackDuration; + }; + _proto.resetContiguity = function resetContiguity() { + this.remainderData = null; + }; + MP4Demuxer.probe = function probe(data) { + return hasMoofData(data); + }; + _proto.demux = function demux(data, timeOffset) { + this.timeOffset = timeOffset; + // Load all data into the avc track. The CMAF remuxer will look for the data in the samples object; the rest of the fields do not matter + var videoSamples = data; + var videoTrack = this.videoTrack; + var textTrack = this.txtTrack; + if (this.config.progressive) { + // Split the bytestream into two ranges: one encompassing all data up until the start of the last moof, and everything else. + // This is done to guarantee that we're sending valid data to MSE - when demuxing progressively, we have no guarantee + // that the fetch loader gives us flush moof+mdat pairs. If we push jagged data to MSE, it will throw an exception. + if (this.remainderData) { + videoSamples = appendUint8Array(this.remainderData, data); + } + var segmentedData = segmentValidRange(videoSamples); + this.remainderData = segmentedData.remainder; + videoTrack.samples = segmentedData.valid || new Uint8Array(); + } else { + videoTrack.samples = videoSamples; + } + var id3Track = this.extractID3Track(videoTrack, timeOffset); + textTrack.samples = parseSamples(timeOffset, videoTrack); + return { + videoTrack: videoTrack, + audioTrack: this.audioTrack, + id3Track: id3Track, + textTrack: this.txtTrack + }; + }; + _proto.flush = function flush() { + var timeOffset = this.timeOffset; + var videoTrack = this.videoTrack; + var textTrack = this.txtTrack; + videoTrack.samples = this.remainderData || new Uint8Array(); + this.remainderData = null; + var id3Track = this.extractID3Track(videoTrack, this.timeOffset); + textTrack.samples = parseSamples(timeOffset, videoTrack); + return { + videoTrack: videoTrack, + audioTrack: dummyTrack(), + id3Track: id3Track, + textTrack: dummyTrack() + }; + }; + _proto.extractID3Track = function extractID3Track(videoTrack, timeOffset) { + var id3Track = this.id3Track; + if (videoTrack.samples.length) { + var emsgs = findBox(videoTrack.samples, ['emsg']); + if (emsgs) { + emsgs.forEach(function (data) { + var emsgInfo = parseEmsg(data); + if (emsgSchemePattern.test(emsgInfo.schemeIdUri)) { + var pts = isFiniteNumber(emsgInfo.presentationTime) ? emsgInfo.presentationTime / emsgInfo.timeScale : timeOffset + emsgInfo.presentationTimeDelta / emsgInfo.timeScale; + var duration = emsgInfo.eventDuration === 0xffffffff ? Number.POSITIVE_INFINITY : emsgInfo.eventDuration / emsgInfo.timeScale; + // Safari takes anything <= 0.001 seconds and maps it to Infinity + if (duration <= 0.001) { + duration = Number.POSITIVE_INFINITY; + } + var payload = emsgInfo.payload; + id3Track.samples.push({ + data: payload, + len: payload.byteLength, + dts: pts, + pts: pts, + type: MetadataSchema.emsg, + duration: duration + }); + } + }); + } + } + return id3Track; + }; + _proto.demuxSampleAes = function demuxSampleAes(data, keyData, timeOffset) { + return Promise.reject(new Error('The MP4 demuxer does not support SAMPLE-AES decryption')); + }; + _proto.destroy = function destroy() { + // @ts-ignore + this.config = null; + this.remainderData = null; + this.videoTrack = this.audioTrack = this.id3Track = this.txtTrack = undefined; + }; + return MP4Demuxer; + }(); + + var getAudioBSID = function getAudioBSID(data, offset) { + // check the bsid to confirm ac-3 | ec-3 + var bsid = 0; + var numBits = 5; + offset += numBits; + var temp = new Uint32Array(1); // unsigned 32 bit for temporary storage + var mask = new Uint32Array(1); // unsigned 32 bit mask value + var _byte = new Uint8Array(1); // unsigned 8 bit for temporary storage + while (numBits > 0) { + _byte[0] = data[offset]; + // read remaining bits, upto 8 bits at a time + var bits = Math.min(numBits, 8); + var shift = 8 - bits; + mask[0] = 0xff000000 >>> 24 + shift << shift; + temp[0] = (_byte[0] & mask[0]) >> shift; + bsid = !bsid ? temp[0] : bsid << bits | temp[0]; + offset += 1; + numBits -= bits; + } + return bsid; + }; + + var AC3Demuxer = /*#__PURE__*/function (_BaseAudioDemuxer) { + function AC3Demuxer(observer) { + var _this; + _this = _BaseAudioDemuxer.call(this) || this; + _this.observer = void 0; + _this.observer = observer; + return _this; + } + _inheritsLoose(AC3Demuxer, _BaseAudioDemuxer); + var _proto = AC3Demuxer.prototype; + _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) { + _BaseAudioDemuxer.prototype.resetInitSegment.call(this, initSegment, audioCodec, videoCodec, trackDuration); + this._audioTrack = { + container: 'audio/ac-3', + type: 'audio', + id: 2, + pid: -1, + sequenceNumber: 0, + segmentCodec: 'ac3', + samples: [], + manifestCodec: audioCodec, + duration: trackDuration, + inputTimeScale: 90000, + dropped: 0 + }; + }; + _proto.canParse = function canParse(data, offset) { + return offset + 64 < data.length; + }; + _proto.appendFrame = function appendFrame(track, data, offset) { + var frameLength = _appendFrame(track, data, offset, this.basePTS, this.frameIndex); + if (frameLength !== -1) { + var sample = track.samples[track.samples.length - 1]; + return { + sample: sample, + length: frameLength, + missing: 0 + }; + } + }; + AC3Demuxer.probe = function probe(data) { + if (!data) { + return false; + } + var id3Data = getId3Data(data, 0); + if (!id3Data) { + return false; + } + + // look for the ac-3 sync bytes + var offset = id3Data.length; + if (data[offset] === 0x0b && data[offset + 1] === 0x77 && getId3Timestamp(id3Data) !== undefined && + // check the bsid to confirm ac-3 + getAudioBSID(data, offset) < 16) { + return true; + } + return false; + }; + return AC3Demuxer; + }(BaseAudioDemuxer); + function _appendFrame(track, data, start, pts, frameIndex) { + if (start + 8 > data.length) { + return -1; // not enough bytes left + } + if (data[start] !== 0x0b || data[start + 1] !== 0x77) { + return -1; // invalid magic + } + + // get sample rate + var samplingRateCode = data[start + 4] >> 6; + if (samplingRateCode >= 3) { + return -1; // invalid sampling rate + } + var samplingRateMap = [48000, 44100, 32000]; + var sampleRate = samplingRateMap[samplingRateCode]; + + // get frame size + var frameSizeCode = data[start + 4] & 0x3f; + var frameSizeMap = [64, 69, 96, 64, 70, 96, 80, 87, 120, 80, 88, 120, 96, 104, 144, 96, 105, 144, 112, 121, 168, 112, 122, 168, 128, 139, 192, 128, 140, 192, 160, 174, 240, 160, 175, 240, 192, 208, 288, 192, 209, 288, 224, 243, 336, 224, 244, 336, 256, 278, 384, 256, 279, 384, 320, 348, 480, 320, 349, 480, 384, 417, 576, 384, 418, 576, 448, 487, 672, 448, 488, 672, 512, 557, 768, 512, 558, 768, 640, 696, 960, 640, 697, 960, 768, 835, 1152, 768, 836, 1152, 896, 975, 1344, 896, 976, 1344, 1024, 1114, 1536, 1024, 1115, 1536, 1152, 1253, 1728, 1152, 1254, 1728, 1280, 1393, 1920, 1280, 1394, 1920]; + var frameLength = frameSizeMap[frameSizeCode * 3 + samplingRateCode] * 2; + if (start + frameLength > data.length) { + return -1; + } + + // get channel count + var channelMode = data[start + 6] >> 5; + var skipCount = 0; + if (channelMode === 2) { + skipCount += 2; + } else { + if (channelMode & 1 && channelMode !== 1) { + skipCount += 2; + } + if (channelMode & 4) { + skipCount += 2; + } + } + var lfeon = (data[start + 6] << 8 | data[start + 7]) >> 12 - skipCount & 1; + var channelsMap = [2, 1, 2, 3, 3, 4, 4, 5]; + var channelCount = channelsMap[channelMode] + lfeon; + + // build dac3 box + var bsid = data[start + 5] >> 3; + var bsmod = data[start + 5] & 7; + var config = new Uint8Array([samplingRateCode << 6 | bsid << 1 | bsmod >> 2, (bsmod & 3) << 6 | channelMode << 3 | lfeon << 2 | frameSizeCode >> 4, frameSizeCode << 4 & 0xe0]); + var frameDuration = 1536 / sampleRate * 90000; + var stamp = pts + frameIndex * frameDuration; + var unit = data.subarray(start, start + frameLength); + track.config = config; + track.channelCount = channelCount; + track.samplerate = sampleRate; + track.samples.push({ + unit: unit, + pts: stamp + }); + return frameLength; + } + + var BaseVideoParser = /*#__PURE__*/function () { + function BaseVideoParser() { + this.VideoSample = null; + } + var _proto = BaseVideoParser.prototype; + _proto.createVideoSample = function createVideoSample(key, pts, dts) { + return { + key: key, + frame: false, + pts: pts, + dts: dts, + units: [], + length: 0 + }; + }; + _proto.getLastNalUnit = function getLastNalUnit(samples) { + var _VideoSample; + var VideoSample = this.VideoSample; + var lastUnit; + // try to fallback to previous sample if current one is empty + if (!VideoSample || VideoSample.units.length === 0) { + VideoSample = samples[samples.length - 1]; + } + if ((_VideoSample = VideoSample) != null && _VideoSample.units) { + var units = VideoSample.units; + lastUnit = units[units.length - 1]; + } + return lastUnit; + }; + _proto.pushAccessUnit = function pushAccessUnit(VideoSample, videoTrack) { + if (VideoSample.units.length && VideoSample.frame) { + // if sample does not have PTS/DTS, patch with last sample PTS/DTS + if (VideoSample.pts === undefined) { + var samples = videoTrack.samples; + var nbSamples = samples.length; + if (nbSamples) { + var lastSample = samples[nbSamples - 1]; + VideoSample.pts = lastSample.pts; + VideoSample.dts = lastSample.dts; + } else { + // dropping samples, no timestamp found + videoTrack.dropped++; + return; + } + } + videoTrack.samples.push(VideoSample); + } + }; + _proto.parseNALu = function parseNALu(track, array, endOfSegment) { + var len = array.byteLength; + var state = track.naluState || 0; + var lastState = state; + var units = []; + var i = 0; + var value; + var overflow; + var unitType; + var lastUnitStart = -1; + var lastUnitType = 0; + // logger.log('PES:' + Hex.hexDump(array)); + + if (state === -1) { + // special use case where we found 3 or 4-byte start codes exactly at the end of previous PES packet + lastUnitStart = 0; + // NALu type is value read from offset 0 + lastUnitType = this.getNALuType(array, 0); + state = 0; + i = 1; + } + while (i < len) { + value = array[i++]; + // optimization. state 0 and 1 are the predominant case. let's handle them outside of the switch/case + if (!state) { + state = value ? 0 : 1; + continue; + } + if (state === 1) { + state = value ? 0 : 2; + continue; + } + // here we have state either equal to 2 or 3 + if (!value) { + state = 3; + } else if (value === 1) { + overflow = i - state - 1; + if (lastUnitStart >= 0) { + var unit = { + data: array.subarray(lastUnitStart, overflow), + type: lastUnitType + }; + // logger.log('pushing NALU, type/size:' + unit.type + '/' + unit.data.byteLength); + units.push(unit); + } else { + // lastUnitStart is undefined => this is the first start code found in this PES packet + // first check if start code delimiter is overlapping between 2 PES packets, + // ie it started in last packet (lastState not zero) + // and ended at the beginning of this PES packet (i <= 4 - lastState) + var lastUnit = this.getLastNalUnit(track.samples); + if (lastUnit) { + if (lastState && i <= 4 - lastState) { + // start delimiter overlapping between PES packets + // strip start delimiter bytes from the end of last NAL unit + // check if lastUnit had a state different from zero + if (lastUnit.state) { + // strip last bytes + lastUnit.data = lastUnit.data.subarray(0, lastUnit.data.byteLength - lastState); + } + } + // If NAL units are not starting right at the beginning of the PES packet, push preceding data into previous NAL unit. + + if (overflow > 0) { + // logger.log('first NALU found with overflow:' + overflow); + lastUnit.data = appendUint8Array(lastUnit.data, array.subarray(0, overflow)); + lastUnit.state = 0; + } + } + } + // check if we can read unit type + if (i < len) { + unitType = this.getNALuType(array, i); + // logger.log('find NALU @ offset:' + i + ',type:' + unitType); + lastUnitStart = i; + lastUnitType = unitType; + state = 0; + } else { + // not enough byte to read unit type. let's read it on next PES parsing + state = -1; + } + } else { + state = 0; + } + } + if (lastUnitStart >= 0 && state >= 0) { + var _unit = { + data: array.subarray(lastUnitStart, len), + type: lastUnitType, + state: state + }; + units.push(_unit); + // logger.log('pushing NALU, type/size/state:' + unit.type + '/' + unit.data.byteLength + '/' + state); + } + // no NALu found + if (units.length === 0) { + // append pes.data to previous NAL unit + var _lastUnit = this.getLastNalUnit(track.samples); + if (_lastUnit) { + _lastUnit.data = appendUint8Array(_lastUnit.data, array); + } + } + track.naluState = state; + return units; + }; + return BaseVideoParser; + }(); + + /** + * Parser for exponential Golomb codes, a variable-bitwidth number encoding scheme used by h264. + */ + + var ExpGolomb = /*#__PURE__*/function () { + function ExpGolomb(data) { + this.data = void 0; + this.bytesAvailable = void 0; + this.word = void 0; + this.bitsAvailable = void 0; + this.data = data; + // the number of bytes left to examine in this.data + this.bytesAvailable = data.byteLength; + // the current word being examined + this.word = 0; // :uint + // the number of bits left to examine in the current word + this.bitsAvailable = 0; // :uint + } + + // ():void + var _proto = ExpGolomb.prototype; + _proto.loadWord = function loadWord() { + var data = this.data; + var bytesAvailable = this.bytesAvailable; + var position = data.byteLength - bytesAvailable; + var workingBytes = new Uint8Array(4); + var availableBytes = Math.min(4, bytesAvailable); + if (availableBytes === 0) { + throw new Error('no bytes available'); + } + workingBytes.set(data.subarray(position, position + availableBytes)); + this.word = new DataView(workingBytes.buffer).getUint32(0); + // track the amount of this.data that has been processed + this.bitsAvailable = availableBytes * 8; + this.bytesAvailable -= availableBytes; + } + + // (count:int):void + ; + _proto.skipBits = function skipBits(count) { + var skipBytes; // :int + count = Math.min(count, this.bytesAvailable * 8 + this.bitsAvailable); + if (this.bitsAvailable > count) { + this.word <<= count; + this.bitsAvailable -= count; + } else { + count -= this.bitsAvailable; + skipBytes = count >> 3; + count -= skipBytes << 3; + this.bytesAvailable -= skipBytes; + this.loadWord(); + this.word <<= count; + this.bitsAvailable -= count; + } + } + + // (size:int):uint + ; + _proto.readBits = function readBits(size) { + var bits = Math.min(this.bitsAvailable, size); // :uint + var valu = this.word >>> 32 - bits; // :uint + if (size > 32) { + logger.error('Cannot read more than 32 bits at a time'); + } + this.bitsAvailable -= bits; + if (this.bitsAvailable > 0) { + this.word <<= bits; + } else if (this.bytesAvailable > 0) { + this.loadWord(); + } else { + throw new Error('no bits available'); + } + bits = size - bits; + if (bits > 0 && this.bitsAvailable) { + return valu << bits | this.readBits(bits); + } else { + return valu; + } + } + + // ():uint + ; + _proto.skipLZ = function skipLZ() { + var leadingZeroCount; // :uint + for (leadingZeroCount = 0; leadingZeroCount < this.bitsAvailable; ++leadingZeroCount) { + if ((this.word & 0x80000000 >>> leadingZeroCount) !== 0) { + // the first bit of working word is 1 + this.word <<= leadingZeroCount; + this.bitsAvailable -= leadingZeroCount; + return leadingZeroCount; + } + } + // we exhausted word and still have not found a 1 + this.loadWord(); + return leadingZeroCount + this.skipLZ(); + } + + // ():void + ; + _proto.skipUEG = function skipUEG() { + this.skipBits(1 + this.skipLZ()); + } + + // ():void + ; + _proto.skipEG = function skipEG() { + this.skipBits(1 + this.skipLZ()); + } + + // ():uint + ; + _proto.readUEG = function readUEG() { + var clz = this.skipLZ(); // :uint + return this.readBits(clz + 1) - 1; + } + + // ():int + ; + _proto.readEG = function readEG() { + var valu = this.readUEG(); // :int + if (0x01 & valu) { + // the number is odd if the low order bit is set + return 1 + valu >>> 1; // add 1 to make it even, and divide by 2 + } else { + return -1 * (valu >>> 1); // divide by two then make it negative + } + } + + // Some convenience functions + // :Boolean + ; + _proto.readBoolean = function readBoolean() { + return this.readBits(1) === 1; + } + + // ():int + ; + _proto.readUByte = function readUByte() { + return this.readBits(8); + } + + // ():int + ; + _proto.readUShort = function readUShort() { + return this.readBits(16); + } + + // ():int + ; + _proto.readUInt = function readUInt() { + return this.readBits(32); + }; + return ExpGolomb; + }(); + + var AvcVideoParser = /*#__PURE__*/function (_BaseVideoParser) { + function AvcVideoParser() { + return _BaseVideoParser.apply(this, arguments) || this; + } + _inheritsLoose(AvcVideoParser, _BaseVideoParser); + var _proto = AvcVideoParser.prototype; + _proto.parsePES = function parsePES(track, textTrack, pes, endOfSegment) { + var _this = this; + var units = this.parseNALu(track, pes.data, endOfSegment); + var VideoSample = this.VideoSample; + var push; + var spsfound = false; + // free pes.data to save up some memory + pes.data = null; + + // if new NAL units found and last sample still there, let's push ... + // this helps parsing streams with missing AUD (only do this if AUD never found) + if (VideoSample && units.length && !track.audFound) { + this.pushAccessUnit(VideoSample, track); + VideoSample = this.VideoSample = this.createVideoSample(false, pes.pts, pes.dts); + } + units.forEach(function (unit) { + var _VideoSample2, _VideoSample3; + switch (unit.type) { + // NDR + case 1: + { + var iskey = false; + push = true; + var data = unit.data; + // only check slice type to detect KF in case SPS found in same packet (any keyframe is preceded by SPS ...) + if (spsfound && data.length > 4) { + // retrieve slice type by parsing beginning of NAL unit (follow H264 spec, slice_header definition) to detect keyframe embedded in NDR + var sliceType = _this.readSliceType(data); + // 2 : I slice, 4 : SI slice, 7 : I slice, 9: SI slice + // SI slice : A slice that is coded using intra prediction only and using quantisation of the prediction samples. + // An SI slice can be coded such that its decoded samples can be constructed identically to an SP slice. + // I slice: A slice that is not an SI slice that is decoded using intra prediction only. + // if (sliceType === 2 || sliceType === 7) { + if (sliceType === 2 || sliceType === 4 || sliceType === 7 || sliceType === 9) { + iskey = true; + } + } + if (iskey) { + var _VideoSample; + // if we have non-keyframe data already, that cannot belong to the same frame as a keyframe, so force a push + if ((_VideoSample = VideoSample) != null && _VideoSample.frame && !VideoSample.key) { + _this.pushAccessUnit(VideoSample, track); + VideoSample = _this.VideoSample = null; + } + } + if (!VideoSample) { + VideoSample = _this.VideoSample = _this.createVideoSample(true, pes.pts, pes.dts); + } + VideoSample.frame = true; + VideoSample.key = iskey; + break; + // IDR + } + case 5: + push = true; + // handle PES not starting with AUD + // if we have frame data already, that cannot belong to the same frame, so force a push + if ((_VideoSample2 = VideoSample) != null && _VideoSample2.frame && !VideoSample.key) { + _this.pushAccessUnit(VideoSample, track); + VideoSample = _this.VideoSample = null; + } + if (!VideoSample) { + VideoSample = _this.VideoSample = _this.createVideoSample(true, pes.pts, pes.dts); + } + VideoSample.key = true; + VideoSample.frame = true; + break; + // SEI + case 6: + { + push = true; + parseSEIMessageFromNALu(unit.data, 1, pes.pts, textTrack.samples); + break; + // SPS + } + case 7: + { + var _track$pixelRatio, _track$pixelRatio2; + push = true; + spsfound = true; + var sps = unit.data; + var config = _this.readSPS(sps); + if (!track.sps || track.width !== config.width || track.height !== config.height || ((_track$pixelRatio = track.pixelRatio) == null ? void 0 : _track$pixelRatio[0]) !== config.pixelRatio[0] || ((_track$pixelRatio2 = track.pixelRatio) == null ? void 0 : _track$pixelRatio2[1]) !== config.pixelRatio[1]) { + track.width = config.width; + track.height = config.height; + track.pixelRatio = config.pixelRatio; + track.sps = [sps]; + var codecarray = sps.subarray(1, 4); + var codecstring = 'avc1.'; + for (var i = 0; i < 3; i++) { + var h = codecarray[i].toString(16); + if (h.length < 2) { + h = '0' + h; + } + codecstring += h; + } + track.codec = codecstring; + } + break; + } + // PPS + case 8: + push = true; + track.pps = [unit.data]; + break; + // AUD + case 9: + push = true; + track.audFound = true; + if ((_VideoSample3 = VideoSample) != null && _VideoSample3.frame) { + _this.pushAccessUnit(VideoSample, track); + VideoSample = null; + } + if (!VideoSample) { + VideoSample = _this.VideoSample = _this.createVideoSample(false, pes.pts, pes.dts); + } + break; + // Filler Data + case 12: + push = true; + break; + default: + push = false; + break; + } + if (VideoSample && push) { + var _units = VideoSample.units; + _units.push(unit); + } + }); + // if last PES packet, push samples + if (endOfSegment && VideoSample) { + this.pushAccessUnit(VideoSample, track); + this.VideoSample = null; + } + }; + _proto.getNALuType = function getNALuType(data, offset) { + return data[offset] & 0x1f; + }; + _proto.readSliceType = function readSliceType(data) { + var eg = new ExpGolomb(data); + // skip NALu type + eg.readUByte(); + // discard first_mb_in_slice + eg.readUEG(); + // return slice_type + return eg.readUEG(); + } + + /** + * The scaling list is optionally transmitted as part of a sequence parameter + * set and is not relevant to transmuxing. + * @param count the number of entries in this scaling list + * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1 + */; + _proto.skipScalingList = function skipScalingList(count, reader) { + var lastScale = 8; + var nextScale = 8; + var deltaScale; + for (var j = 0; j < count; j++) { + if (nextScale !== 0) { + deltaScale = reader.readEG(); + nextScale = (lastScale + deltaScale + 256) % 256; + } + lastScale = nextScale === 0 ? lastScale : nextScale; + } + } + + /** + * Read a sequence parameter set and return some interesting video + * properties. A sequence parameter set is the H264 metadata that + * describes the properties of upcoming video frames. + * @returns an object with configuration parsed from the + * sequence parameter set, including the dimensions of the + * associated video frames. + */; + _proto.readSPS = function readSPS(sps) { + var eg = new ExpGolomb(sps); + var frameCropLeftOffset = 0; + var frameCropRightOffset = 0; + var frameCropTopOffset = 0; + var frameCropBottomOffset = 0; + var numRefFramesInPicOrderCntCycle; + var scalingListCount; + var i; + var readUByte = eg.readUByte.bind(eg); + var readBits = eg.readBits.bind(eg); + var readUEG = eg.readUEG.bind(eg); + var readBoolean = eg.readBoolean.bind(eg); + var skipBits = eg.skipBits.bind(eg); + var skipEG = eg.skipEG.bind(eg); + var skipUEG = eg.skipUEG.bind(eg); + var skipScalingList = this.skipScalingList.bind(this); + readUByte(); + var profileIdc = readUByte(); // profile_idc + readBits(5); // profileCompat constraint_set[0-4]_flag, u(5) + skipBits(3); // reserved_zero_3bits u(3), + readUByte(); // level_idc u(8) + skipUEG(); // seq_parameter_set_id + // some profiles have more optional data we don't need + if (profileIdc === 100 || profileIdc === 110 || profileIdc === 122 || profileIdc === 244 || profileIdc === 44 || profileIdc === 83 || profileIdc === 86 || profileIdc === 118 || profileIdc === 128) { + var chromaFormatIdc = readUEG(); + if (chromaFormatIdc === 3) { + skipBits(1); + } // separate_colour_plane_flag + + skipUEG(); // bit_depth_luma_minus8 + skipUEG(); // bit_depth_chroma_minus8 + skipBits(1); // qpprime_y_zero_transform_bypass_flag + if (readBoolean()) { + // seq_scaling_matrix_present_flag + scalingListCount = chromaFormatIdc !== 3 ? 8 : 12; + for (i = 0; i < scalingListCount; i++) { + if (readBoolean()) { + // seq_scaling_list_present_flag[ i ] + if (i < 6) { + skipScalingList(16, eg); + } else { + skipScalingList(64, eg); + } + } + } + } + } + skipUEG(); // log2_max_frame_num_minus4 + var picOrderCntType = readUEG(); + if (picOrderCntType === 0) { + readUEG(); // log2_max_pic_order_cnt_lsb_minus4 + } else if (picOrderCntType === 1) { + skipBits(1); // delta_pic_order_always_zero_flag + skipEG(); // offset_for_non_ref_pic + skipEG(); // offset_for_top_to_bottom_field + numRefFramesInPicOrderCntCycle = readUEG(); + for (i = 0; i < numRefFramesInPicOrderCntCycle; i++) { + skipEG(); + } // offset_for_ref_frame[ i ] + } + skipUEG(); // max_num_ref_frames + skipBits(1); // gaps_in_frame_num_value_allowed_flag + var picWidthInMbsMinus1 = readUEG(); + var picHeightInMapUnitsMinus1 = readUEG(); + var frameMbsOnlyFlag = readBits(1); + if (frameMbsOnlyFlag === 0) { + skipBits(1); + } // mb_adaptive_frame_field_flag + + skipBits(1); // direct_8x8_inference_flag + if (readBoolean()) { + // frame_cropping_flag + frameCropLeftOffset = readUEG(); + frameCropRightOffset = readUEG(); + frameCropTopOffset = readUEG(); + frameCropBottomOffset = readUEG(); + } + var pixelRatio = [1, 1]; + if (readBoolean()) { + // vui_parameters_present_flag + if (readBoolean()) { + // aspect_ratio_info_present_flag + var aspectRatioIdc = readUByte(); + switch (aspectRatioIdc) { + case 1: + pixelRatio = [1, 1]; + break; + case 2: + pixelRatio = [12, 11]; + break; + case 3: + pixelRatio = [10, 11]; + break; + case 4: + pixelRatio = [16, 11]; + break; + case 5: + pixelRatio = [40, 33]; + break; + case 6: + pixelRatio = [24, 11]; + break; + case 7: + pixelRatio = [20, 11]; + break; + case 8: + pixelRatio = [32, 11]; + break; + case 9: + pixelRatio = [80, 33]; + break; + case 10: + pixelRatio = [18, 11]; + break; + case 11: + pixelRatio = [15, 11]; + break; + case 12: + pixelRatio = [64, 33]; + break; + case 13: + pixelRatio = [160, 99]; + break; + case 14: + pixelRatio = [4, 3]; + break; + case 15: + pixelRatio = [3, 2]; + break; + case 16: + pixelRatio = [2, 1]; + break; + case 255: + { + pixelRatio = [readUByte() << 8 | readUByte(), readUByte() << 8 | readUByte()]; + break; + } + } + } + } + return { + width: Math.ceil((picWidthInMbsMinus1 + 1) * 16 - frameCropLeftOffset * 2 - frameCropRightOffset * 2), + height: (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 - (frameMbsOnlyFlag ? 2 : 4) * (frameCropTopOffset + frameCropBottomOffset), + pixelRatio: pixelRatio + }; + }; + return AvcVideoParser; + }(BaseVideoParser); + + var HevcVideoParser = /*#__PURE__*/function (_BaseVideoParser) { + function HevcVideoParser() { + var _this; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + _this = _BaseVideoParser.call.apply(_BaseVideoParser, [this].concat(args)) || this; + _this.initVPS = null; + return _this; + } + _inheritsLoose(HevcVideoParser, _BaseVideoParser); + var _proto = HevcVideoParser.prototype; + _proto.parsePES = function parsePES(track, textTrack, pes, endOfSegment) { + var _this2 = this; + var units = this.parseNALu(track, pes.data, endOfSegment); + var VideoSample = this.VideoSample; + var push; + var spsfound = false; + // free pes.data to save up some memory + pes.data = null; + + // if new NAL units found and last sample still there, let's push ... + // this helps parsing streams with missing AUD (only do this if AUD never found) + if (VideoSample && units.length && !track.audFound) { + this.pushAccessUnit(VideoSample, track); + VideoSample = this.VideoSample = this.createVideoSample(false, pes.pts, pes.dts); + } + units.forEach(function (unit) { + var _VideoSample2, _VideoSample3; + switch (unit.type) { + // NON-IDR, NON RANDOM ACCESS SLICE + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + if (!VideoSample) { + VideoSample = _this2.VideoSample = _this2.createVideoSample(false, pes.pts, pes.dts); + } + VideoSample.frame = true; + push = true; + break; + + // CRA, BLA (random access picture) + case 16: + case 17: + case 18: + case 21: + push = true; + if (spsfound) { + var _VideoSample; + // handle PES not starting with AUD + // if we have frame data already, that cannot belong to the same frame, so force a push + if ((_VideoSample = VideoSample) != null && _VideoSample.frame && !VideoSample.key) { + _this2.pushAccessUnit(VideoSample, track); + VideoSample = _this2.VideoSample = null; + } + } + if (!VideoSample) { + VideoSample = _this2.VideoSample = _this2.createVideoSample(true, pes.pts, pes.dts); + } + VideoSample.key = true; + VideoSample.frame = true; + break; + + // IDR + case 19: + case 20: + push = true; + // handle PES not starting with AUD + // if we have frame data already, that cannot belong to the same frame, so force a push + if ((_VideoSample2 = VideoSample) != null && _VideoSample2.frame && !VideoSample.key) { + _this2.pushAccessUnit(VideoSample, track); + VideoSample = _this2.VideoSample = null; + } + if (!VideoSample) { + VideoSample = _this2.VideoSample = _this2.createVideoSample(true, pes.pts, pes.dts); + } + VideoSample.key = true; + VideoSample.frame = true; + break; + + // SEI + case 39: + push = true; + parseSEIMessageFromNALu(unit.data, 2, + // NALu header size + pes.pts, textTrack.samples); + break; + + // VPS + case 32: + push = true; + if (!track.vps) { + var config = _this2.readVPS(unit.data); + track.params = _objectSpread2({}, config); + _this2.initVPS = unit.data; + } + track.vps = [unit.data]; + break; + + // SPS + case 33: + push = true; + spsfound = true; + if (typeof track.params === 'object') { + if (track.vps !== undefined && track.vps[0] !== _this2.initVPS && track.sps !== undefined && !_this2.matchSPS(track.sps[0], unit.data)) { + _this2.initVPS = track.vps[0]; + track.sps = track.pps = undefined; + } + if (!track.sps) { + var _config = _this2.readSPS(unit.data); + track.width = _config.width; + track.height = _config.height; + track.pixelRatio = _config.pixelRatio; + track.codec = _config.codecString; + track.sps = []; + for (var prop in _config.params) { + track.params[prop] = _config.params[prop]; + } + } + if (track.vps !== undefined && track.vps[0] === _this2.initVPS) { + track.sps.push(unit.data); + } + } + if (!VideoSample) { + VideoSample = _this2.VideoSample = _this2.createVideoSample(true, pes.pts, pes.dts); + } + VideoSample.key = true; + break; + + // PPS + case 34: + push = true; + if (typeof track.params === 'object') { + if (!track.pps) { + track.pps = []; + var _config2 = _this2.readPPS(unit.data); + for (var _prop in _config2) { + track.params[_prop] = _config2[_prop]; + } + } + if (_this2.initVPS !== null || track.pps.length === 0) { + track.pps.push(unit.data); + } + } + break; + + // ACCESS UNIT DELIMITER + case 35: + push = true; + track.audFound = true; + if ((_VideoSample3 = VideoSample) != null && _VideoSample3.frame) { + _this2.pushAccessUnit(VideoSample, track); + VideoSample = null; + } + if (!VideoSample) { + VideoSample = _this2.VideoSample = _this2.createVideoSample(false, pes.pts, pes.dts); + } + break; + default: + push = false; + break; + } + if (VideoSample && push) { + var _units = VideoSample.units; + _units.push(unit); + } + }); + // if last PES packet, push samples + if (endOfSegment && VideoSample) { + this.pushAccessUnit(VideoSample, track); + this.VideoSample = null; + } + }; + _proto.getNALuType = function getNALuType(data, offset) { + return (data[offset] & 0x7e) >>> 1; + }; + _proto.ebsp2rbsp = function ebsp2rbsp(arr) { + var dst = new Uint8Array(arr.byteLength); + var dstIdx = 0; + for (var i = 0; i < arr.byteLength; i++) { + if (i >= 2) { + // Unescape: Skip 0x03 after 00 00 + if (arr[i] === 0x03 && arr[i - 1] === 0x00 && arr[i - 2] === 0x00) { + continue; + } + } + dst[dstIdx] = arr[i]; + dstIdx++; + } + return new Uint8Array(dst.buffer, 0, dstIdx); + }; + _proto.readVPS = function readVPS(vps) { + var eg = new ExpGolomb(vps); + // remove header + eg.readUByte(); + eg.readUByte(); + eg.readBits(4); // video_parameter_set_id + eg.skipBits(2); + eg.readBits(6); // max_layers_minus1 + var max_sub_layers_minus1 = eg.readBits(3); + var temporal_id_nesting_flag = eg.readBoolean(); + // ...vui fps can be here, but empty fps value is not critical for metadata + + return { + numTemporalLayers: max_sub_layers_minus1 + 1, + temporalIdNested: temporal_id_nesting_flag + }; + }; + _proto.readSPS = function readSPS(sps) { + var eg = new ExpGolomb(this.ebsp2rbsp(sps)); + eg.readUByte(); + eg.readUByte(); + eg.readBits(4); //video_parameter_set_id + var max_sub_layers_minus1 = eg.readBits(3); + eg.readBoolean(); // temporal_id_nesting_flag + + // profile_tier_level + var general_profile_space = eg.readBits(2); + var general_tier_flag = eg.readBoolean(); + var general_profile_idc = eg.readBits(5); + var general_profile_compatibility_flags_1 = eg.readUByte(); + var general_profile_compatibility_flags_2 = eg.readUByte(); + var general_profile_compatibility_flags_3 = eg.readUByte(); + var general_profile_compatibility_flags_4 = eg.readUByte(); + var general_constraint_indicator_flags_1 = eg.readUByte(); + var general_constraint_indicator_flags_2 = eg.readUByte(); + var general_constraint_indicator_flags_3 = eg.readUByte(); + var general_constraint_indicator_flags_4 = eg.readUByte(); + var general_constraint_indicator_flags_5 = eg.readUByte(); + var general_constraint_indicator_flags_6 = eg.readUByte(); + var general_level_idc = eg.readUByte(); + var sub_layer_profile_present_flags = []; + var sub_layer_level_present_flags = []; + for (var i = 0; i < max_sub_layers_minus1; i++) { + sub_layer_profile_present_flags.push(eg.readBoolean()); + sub_layer_level_present_flags.push(eg.readBoolean()); + } + if (max_sub_layers_minus1 > 0) { + for (var _i = max_sub_layers_minus1; _i < 8; _i++) { + eg.readBits(2); + } + } + for (var _i2 = 0; _i2 < max_sub_layers_minus1; _i2++) { + if (sub_layer_profile_present_flags[_i2]) { + eg.readUByte(); // sub_layer_profile_space, sub_layer_tier_flag, sub_layer_profile_idc + eg.readUByte(); + eg.readUByte(); + eg.readUByte(); + eg.readUByte(); // sub_layer_profile_compatibility_flag + eg.readUByte(); + eg.readUByte(); + eg.readUByte(); + eg.readUByte(); + eg.readUByte(); + eg.readUByte(); + } + if (sub_layer_level_present_flags[_i2]) { + eg.readUByte(); + } + } + eg.readUEG(); // seq_parameter_set_id + var chroma_format_idc = eg.readUEG(); + if (chroma_format_idc == 3) { + eg.skipBits(1); //separate_colour_plane_flag + } + var pic_width_in_luma_samples = eg.readUEG(); + var pic_height_in_luma_samples = eg.readUEG(); + var conformance_window_flag = eg.readBoolean(); + var pic_left_offset = 0, + pic_right_offset = 0, + pic_top_offset = 0, + pic_bottom_offset = 0; + if (conformance_window_flag) { + pic_left_offset += eg.readUEG(); + pic_right_offset += eg.readUEG(); + pic_top_offset += eg.readUEG(); + pic_bottom_offset += eg.readUEG(); + } + var bit_depth_luma_minus8 = eg.readUEG(); + var bit_depth_chroma_minus8 = eg.readUEG(); + var log2_max_pic_order_cnt_lsb_minus4 = eg.readUEG(); + var sub_layer_ordering_info_present_flag = eg.readBoolean(); + for (var _i3 = sub_layer_ordering_info_present_flag ? 0 : max_sub_layers_minus1; _i3 <= max_sub_layers_minus1; _i3++) { + eg.skipUEG(); // max_dec_pic_buffering_minus1[i] + eg.skipUEG(); // max_num_reorder_pics[i] + eg.skipUEG(); // max_latency_increase_plus1[i] + } + eg.skipUEG(); // log2_min_luma_coding_block_size_minus3 + eg.skipUEG(); // log2_diff_max_min_luma_coding_block_size + eg.skipUEG(); // log2_min_transform_block_size_minus2 + eg.skipUEG(); // log2_diff_max_min_transform_block_size + eg.skipUEG(); // max_transform_hierarchy_depth_inter + eg.skipUEG(); // max_transform_hierarchy_depth_intra + var scaling_list_enabled_flag = eg.readBoolean(); + if (scaling_list_enabled_flag) { + var sps_scaling_list_data_present_flag = eg.readBoolean(); + if (sps_scaling_list_data_present_flag) { + for (var sizeId = 0; sizeId < 4; sizeId++) { + for (var matrixId = 0; matrixId < (sizeId === 3 ? 2 : 6); matrixId++) { + var scaling_list_pred_mode_flag = eg.readBoolean(); + if (!scaling_list_pred_mode_flag) { + eg.readUEG(); // scaling_list_pred_matrix_id_delta + } else { + var coefNum = Math.min(64, 1 << 4 + (sizeId << 1)); + if (sizeId > 1) { + eg.readEG(); + } + for (var _i4 = 0; _i4 < coefNum; _i4++) { + eg.readEG(); + } + } + } + } + } + } + eg.readBoolean(); // amp_enabled_flag + eg.readBoolean(); // sample_adaptive_offset_enabled_flag + var pcm_enabled_flag = eg.readBoolean(); + if (pcm_enabled_flag) { + eg.readUByte(); + eg.skipUEG(); + eg.skipUEG(); + eg.readBoolean(); + } + var num_short_term_ref_pic_sets = eg.readUEG(); + var num_delta_pocs = 0; + for (var _i5 = 0; _i5 < num_short_term_ref_pic_sets; _i5++) { + var inter_ref_pic_set_prediction_flag = false; + if (_i5 !== 0) { + inter_ref_pic_set_prediction_flag = eg.readBoolean(); + } + if (inter_ref_pic_set_prediction_flag) { + if (_i5 === num_short_term_ref_pic_sets) { + eg.readUEG(); + } + eg.readBoolean(); + eg.readUEG(); + var next_num_delta_pocs = 0; + for (var j = 0; j <= num_delta_pocs; j++) { + var used_by_curr_pic_flag = eg.readBoolean(); + var use_delta_flag = false; + if (!used_by_curr_pic_flag) { + use_delta_flag = eg.readBoolean(); + } + if (used_by_curr_pic_flag || use_delta_flag) { + next_num_delta_pocs++; + } + } + num_delta_pocs = next_num_delta_pocs; + } else { + var num_negative_pics = eg.readUEG(); + var num_positive_pics = eg.readUEG(); + num_delta_pocs = num_negative_pics + num_positive_pics; + for (var _j = 0; _j < num_negative_pics; _j++) { + eg.readUEG(); + eg.readBoolean(); + } + for (var _j2 = 0; _j2 < num_positive_pics; _j2++) { + eg.readUEG(); + eg.readBoolean(); + } + } + } + var long_term_ref_pics_present_flag = eg.readBoolean(); + if (long_term_ref_pics_present_flag) { + var num_long_term_ref_pics_sps = eg.readUEG(); + for (var _i6 = 0; _i6 < num_long_term_ref_pics_sps; _i6++) { + for (var _j3 = 0; _j3 < log2_max_pic_order_cnt_lsb_minus4 + 4; _j3++) { + eg.readBits(1); + } + eg.readBits(1); + } + } + var min_spatial_segmentation_idc = 0; + var sar_width = 1, + sar_height = 1; + var fps_fixed = true, + fps_den = 1, + fps_num = 0; + eg.readBoolean(); // sps_temporal_mvp_enabled_flag + eg.readBoolean(); // strong_intra_smoothing_enabled_flag + var default_display_window_flag = false; + var vui_parameters_present_flag = eg.readBoolean(); + if (vui_parameters_present_flag) { + var aspect_ratio_info_present_flag = eg.readBoolean(); + if (aspect_ratio_info_present_flag) { + var aspect_ratio_idc = eg.readUByte(); + var sar_width_table = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2]; + var sar_height_table = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1]; + if (aspect_ratio_idc > 0 && aspect_ratio_idc < 16) { + sar_width = sar_width_table[aspect_ratio_idc - 1]; + sar_height = sar_height_table[aspect_ratio_idc - 1]; + } else if (aspect_ratio_idc === 255) { + sar_width = eg.readBits(16); + sar_height = eg.readBits(16); + } + } + var overscan_info_present_flag = eg.readBoolean(); + if (overscan_info_present_flag) { + eg.readBoolean(); + } + var video_signal_type_present_flag = eg.readBoolean(); + if (video_signal_type_present_flag) { + eg.readBits(3); + eg.readBoolean(); + var colour_description_present_flag = eg.readBoolean(); + if (colour_description_present_flag) { + eg.readUByte(); + eg.readUByte(); + eg.readUByte(); + } + } + var chroma_loc_info_present_flag = eg.readBoolean(); + if (chroma_loc_info_present_flag) { + eg.readUEG(); + eg.readUEG(); + } + eg.readBoolean(); // neutral_chroma_indication_flag + eg.readBoolean(); // field_seq_flag + eg.readBoolean(); // frame_field_info_present_flag + default_display_window_flag = eg.readBoolean(); + if (default_display_window_flag) { + pic_left_offset += eg.readUEG(); + pic_right_offset += eg.readUEG(); + pic_top_offset += eg.readUEG(); + pic_bottom_offset += eg.readUEG(); + } + var vui_timing_info_present_flag = eg.readBoolean(); + if (vui_timing_info_present_flag) { + fps_den = eg.readBits(32); + fps_num = eg.readBits(32); + var vui_poc_proportional_to_timing_flag = eg.readBoolean(); + if (vui_poc_proportional_to_timing_flag) { + eg.readUEG(); + } + var vui_hrd_parameters_present_flag = eg.readBoolean(); + if (vui_hrd_parameters_present_flag) { + //const commonInfPresentFlag = true; + //if (commonInfPresentFlag) { + var nal_hrd_parameters_present_flag = eg.readBoolean(); + var vcl_hrd_parameters_present_flag = eg.readBoolean(); + var sub_pic_hrd_params_present_flag = false; + if (nal_hrd_parameters_present_flag || vcl_hrd_parameters_present_flag) { + sub_pic_hrd_params_present_flag = eg.readBoolean(); + if (sub_pic_hrd_params_present_flag) { + eg.readUByte(); + eg.readBits(5); + eg.readBoolean(); + eg.readBits(5); + } + eg.readBits(4); // bit_rate_scale + eg.readBits(4); // cpb_size_scale + if (sub_pic_hrd_params_present_flag) { + eg.readBits(4); + } + eg.readBits(5); + eg.readBits(5); + eg.readBits(5); + } + //} + for (var _i7 = 0; _i7 <= max_sub_layers_minus1; _i7++) { + fps_fixed = eg.readBoolean(); // fixed_pic_rate_general_flag + var fixed_pic_rate_within_cvs_flag = fps_fixed || eg.readBoolean(); + var low_delay_hrd_flag = false; + if (fixed_pic_rate_within_cvs_flag) { + eg.readEG(); + } else { + low_delay_hrd_flag = eg.readBoolean(); + } + var cpb_cnt = low_delay_hrd_flag ? 1 : eg.readUEG() + 1; + if (nal_hrd_parameters_present_flag) { + for (var _j4 = 0; _j4 < cpb_cnt; _j4++) { + eg.readUEG(); + eg.readUEG(); + if (sub_pic_hrd_params_present_flag) { + eg.readUEG(); + eg.readUEG(); + } + eg.skipBits(1); + } + } + if (vcl_hrd_parameters_present_flag) { + for (var _j5 = 0; _j5 < cpb_cnt; _j5++) { + eg.readUEG(); + eg.readUEG(); + if (sub_pic_hrd_params_present_flag) { + eg.readUEG(); + eg.readUEG(); + } + eg.skipBits(1); + } + } + } + } + } + var bitstream_restriction_flag = eg.readBoolean(); + if (bitstream_restriction_flag) { + eg.readBoolean(); // tiles_fixed_structure_flag + eg.readBoolean(); // motion_vectors_over_pic_boundaries_flag + eg.readBoolean(); // restricted_ref_pic_lists_flag + min_spatial_segmentation_idc = eg.readUEG(); + } + } + var width = pic_width_in_luma_samples, + height = pic_height_in_luma_samples; + if (conformance_window_flag || default_display_window_flag) { + var chroma_scale_w = 1, + chroma_scale_h = 1; + if (chroma_format_idc === 1) { + // YUV 420 + chroma_scale_w = chroma_scale_h = 2; + } else if (chroma_format_idc == 2) { + // YUV 422 + chroma_scale_w = 2; + } + width = pic_width_in_luma_samples - chroma_scale_w * pic_right_offset - chroma_scale_w * pic_left_offset; + height = pic_height_in_luma_samples - chroma_scale_h * pic_bottom_offset - chroma_scale_h * pic_top_offset; + } + var profile_space_string = general_profile_space ? ['A', 'B', 'C'][general_profile_space] : ''; + var profile_compatibility_buf = general_profile_compatibility_flags_1 << 24 | general_profile_compatibility_flags_2 << 16 | general_profile_compatibility_flags_3 << 8 | general_profile_compatibility_flags_4; + var profile_compatibility_rev = 0; + for (var _i8 = 0; _i8 < 32; _i8++) { + profile_compatibility_rev = (profile_compatibility_rev | (profile_compatibility_buf >> _i8 & 1) << 31 - _i8) >>> 0; // reverse bit position (and cast as UInt32) + } + var profile_compatibility_flags_string = profile_compatibility_rev.toString(16); + if (general_profile_idc === 1 && profile_compatibility_flags_string === '2') { + profile_compatibility_flags_string = '6'; + } + var tier_flag_string = general_tier_flag ? 'H' : 'L'; + return { + codecString: "hvc1." + profile_space_string + general_profile_idc + "." + profile_compatibility_flags_string + "." + tier_flag_string + general_level_idc + ".B0", + params: { + general_tier_flag: general_tier_flag, + general_profile_idc: general_profile_idc, + general_profile_space: general_profile_space, + general_profile_compatibility_flags: [general_profile_compatibility_flags_1, general_profile_compatibility_flags_2, general_profile_compatibility_flags_3, general_profile_compatibility_flags_4], + general_constraint_indicator_flags: [general_constraint_indicator_flags_1, general_constraint_indicator_flags_2, general_constraint_indicator_flags_3, general_constraint_indicator_flags_4, general_constraint_indicator_flags_5, general_constraint_indicator_flags_6], + general_level_idc: general_level_idc, + bit_depth: bit_depth_luma_minus8 + 8, + bit_depth_luma_minus8: bit_depth_luma_minus8, + bit_depth_chroma_minus8: bit_depth_chroma_minus8, + min_spatial_segmentation_idc: min_spatial_segmentation_idc, + chroma_format_idc: chroma_format_idc, + frame_rate: { + fixed: fps_fixed, + fps: fps_num / fps_den + } + }, + width: width, + height: height, + pixelRatio: [sar_width, sar_height] + }; + }; + _proto.readPPS = function readPPS(pps) { + var eg = new ExpGolomb(this.ebsp2rbsp(pps)); + eg.readUByte(); + eg.readUByte(); + eg.skipUEG(); // pic_parameter_set_id + eg.skipUEG(); // seq_parameter_set_id + eg.skipBits(2); // dependent_slice_segments_enabled_flag, output_flag_present_flag + eg.skipBits(3); // num_extra_slice_header_bits + eg.skipBits(2); // sign_data_hiding_enabled_flag, cabac_init_present_flag + eg.skipUEG(); + eg.skipUEG(); + eg.skipEG(); // init_qp_minus26 + eg.skipBits(2); // constrained_intra_pred_flag, transform_skip_enabled_flag + var cu_qp_delta_enabled_flag = eg.readBoolean(); + if (cu_qp_delta_enabled_flag) { + eg.skipUEG(); + } + eg.skipEG(); // cb_qp_offset + eg.skipEG(); // cr_qp_offset + eg.skipBits(4); // pps_slice_chroma_qp_offsets_present_flag, weighted_pred_flag, weighted_bipred_flag, transquant_bypass_enabled_flag + var tiles_enabled_flag = eg.readBoolean(); + var entropy_coding_sync_enabled_flag = eg.readBoolean(); + var parallelismType = 1; // slice-based parallel decoding + if (entropy_coding_sync_enabled_flag && tiles_enabled_flag) { + parallelismType = 0; // mixed-type parallel decoding + } else if (entropy_coding_sync_enabled_flag) { + parallelismType = 3; // wavefront-based parallel decoding + } else if (tiles_enabled_flag) { + parallelismType = 2; // tile-based parallel decoding + } + return { + parallelismType: parallelismType + }; + }; + _proto.matchSPS = function matchSPS(sps1, sps2) { + // compare without headers and VPS related params + return String.fromCharCode.apply(null, sps1).substr(3) === String.fromCharCode.apply(null, sps2).substr(3); + }; + return HevcVideoParser; + }(BaseVideoParser); + + /** + * SAMPLE-AES decrypter + */ + + var SampleAesDecrypter = /*#__PURE__*/function () { + function SampleAesDecrypter(observer, config, keyData) { + this.keyData = void 0; + this.decrypter = void 0; + this.keyData = keyData; + this.decrypter = new Decrypter(config, { + removePKCS7Padding: false + }); + } + var _proto = SampleAesDecrypter.prototype; + _proto.decryptBuffer = function decryptBuffer(encryptedData) { + return this.decrypter.decrypt(encryptedData, this.keyData.key.buffer, this.keyData.iv.buffer, DecrypterAesMode.cbc); + } + + // AAC - encrypt all full 16 bytes blocks starting from offset 16 + ; + _proto.decryptAacSample = function decryptAacSample(samples, sampleIndex, callback) { + var _this = this; + var curUnit = samples[sampleIndex].unit; + if (curUnit.length <= 16) { + // No encrypted portion in this sample (first 16 bytes is not + // encrypted, see https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/HLS_Sample_Encryption/Encryption/Encryption.html), + return; + } + var encryptedData = curUnit.subarray(16, curUnit.length - curUnit.length % 16); + var encryptedBuffer = encryptedData.buffer.slice(encryptedData.byteOffset, encryptedData.byteOffset + encryptedData.length); + this.decryptBuffer(encryptedBuffer).then(function (decryptedBuffer) { + var decryptedData = new Uint8Array(decryptedBuffer); + curUnit.set(decryptedData, 16); + if (!_this.decrypter.isSync()) { + _this.decryptAacSamples(samples, sampleIndex + 1, callback); + } + }); + }; + _proto.decryptAacSamples = function decryptAacSamples(samples, sampleIndex, callback) { + for (;; sampleIndex++) { + if (sampleIndex >= samples.length) { + callback(); + return; + } + if (samples[sampleIndex].unit.length < 32) { + continue; + } + this.decryptAacSample(samples, sampleIndex, callback); + if (!this.decrypter.isSync()) { + return; + } + } + } + + // AVC - encrypt one 16 bytes block out of ten, starting from offset 32 + ; + _proto.getAvcEncryptedData = function getAvcEncryptedData(decodedData) { + var encryptedDataLen = Math.floor((decodedData.length - 48) / 160) * 16 + 16; + var encryptedData = new Int8Array(encryptedDataLen); + var outputPos = 0; + for (var inputPos = 32; inputPos < decodedData.length - 16; inputPos += 160, outputPos += 16) { + encryptedData.set(decodedData.subarray(inputPos, inputPos + 16), outputPos); + } + return encryptedData; + }; + _proto.getAvcDecryptedUnit = function getAvcDecryptedUnit(decodedData, decryptedData) { + var uint8DecryptedData = new Uint8Array(decryptedData); + var inputPos = 0; + for (var outputPos = 32; outputPos < decodedData.length - 16; outputPos += 160, inputPos += 16) { + decodedData.set(uint8DecryptedData.subarray(inputPos, inputPos + 16), outputPos); + } + return decodedData; + }; + _proto.decryptAvcSample = function decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit) { + var _this2 = this; + var decodedData = discardEPB(curUnit.data); + var encryptedData = this.getAvcEncryptedData(decodedData); + this.decryptBuffer(encryptedData.buffer).then(function (decryptedBuffer) { + curUnit.data = _this2.getAvcDecryptedUnit(decodedData, decryptedBuffer); + if (!_this2.decrypter.isSync()) { + _this2.decryptAvcSamples(samples, sampleIndex, unitIndex + 1, callback); + } + }); + }; + _proto.decryptAvcSamples = function decryptAvcSamples(samples, sampleIndex, unitIndex, callback) { + if (samples instanceof Uint8Array) { + throw new Error('Cannot decrypt samples of type Uint8Array'); + } + for (;; sampleIndex++, unitIndex = 0) { + if (sampleIndex >= samples.length) { + callback(); + return; + } + var curUnits = samples[sampleIndex].units; + for (;; unitIndex++) { + if (unitIndex >= curUnits.length) { + break; + } + var curUnit = curUnits[unitIndex]; + if (curUnit.data.length <= 48 || curUnit.type !== 1 && curUnit.type !== 5) { + continue; + } + this.decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit); + if (!this.decrypter.isSync()) { + return; + } + } + } + }; + return SampleAesDecrypter; + }(); + + var PACKET_LENGTH = 188; + var TSDemuxer = /*#__PURE__*/function () { + function TSDemuxer(observer, config, typeSupported, logger) { + this.logger = void 0; + this.observer = void 0; + this.config = void 0; + this.typeSupported = void 0; + this.sampleAes = null; + this.pmtParsed = false; + this.audioCodec = void 0; + this.videoCodec = void 0; + this._pmtId = -1; + this._videoTrack = void 0; + this._audioTrack = void 0; + this._id3Track = void 0; + this._txtTrack = void 0; + this.aacOverFlow = null; + this.remainderData = null; + this.videoParser = void 0; + this.observer = observer; + this.config = config; + this.typeSupported = typeSupported; + this.logger = logger; + this.videoParser = null; + } + TSDemuxer.probe = function probe(data, logger) { + var syncOffset = TSDemuxer.syncOffset(data); + if (syncOffset > 0) { + logger.warn("MPEG2-TS detected but first sync word found @ offset " + syncOffset); + } + return syncOffset !== -1; + }; + TSDemuxer.syncOffset = function syncOffset(data) { + var length = data.length; + var scanwindow = Math.min(PACKET_LENGTH * 5, length - PACKET_LENGTH) + 1; + var i = 0; + while (i < scanwindow) { + // a TS init segment should contain at least 2 TS packets: PAT and PMT, each starting with 0x47 + var foundPat = false; + var packetStart = -1; + var tsPackets = 0; + for (var j = i; j < length; j += PACKET_LENGTH) { + if (data[j] === 0x47 && (length - j === PACKET_LENGTH || data[j + PACKET_LENGTH] === 0x47)) { + tsPackets++; + if (packetStart === -1) { + packetStart = j; + // First sync word found at offset, increase scan length (#5251) + if (packetStart !== 0) { + scanwindow = Math.min(packetStart + PACKET_LENGTH * 99, data.length - PACKET_LENGTH) + 1; + } + } + if (!foundPat) { + foundPat = parsePID(data, j) === 0; + } + // Sync word found at 0 with 3 packets, or found at offset least 2 packets up to scanwindow (#5501) + if (foundPat && tsPackets > 1 && (packetStart === 0 && tsPackets > 2 || j + PACKET_LENGTH > scanwindow)) { + return packetStart; + } + } else if (tsPackets) { + // Exit if sync word found, but does not contain contiguous packets + return -1; + } else { + break; + } + } + i++; + } + return -1; + } + + /** + * Creates a track model internal to demuxer used to drive remuxing input + */; + TSDemuxer.createTrack = function createTrack(type, duration) { + return { + container: type === 'video' || type === 'audio' ? 'video/mp2t' : undefined, + type: type, + id: RemuxerTrackIdConfig[type], + pid: -1, + inputTimeScale: 90000, + sequenceNumber: 0, + samples: [], + dropped: 0, + duration: type === 'audio' ? duration : undefined + }; + } + + /** + * Initializes a new init segment on the demuxer/remuxer interface. Needed for discontinuities/track-switches (or at stream start) + * Resets all internal track instances of the demuxer. + */; + var _proto = TSDemuxer.prototype; + _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) { + this.pmtParsed = false; + this._pmtId = -1; + this._videoTrack = TSDemuxer.createTrack('video'); + this._videoTrack.duration = trackDuration; + this._audioTrack = TSDemuxer.createTrack('audio', trackDuration); + this._id3Track = TSDemuxer.createTrack('id3'); + this._txtTrack = TSDemuxer.createTrack('text'); + this._audioTrack.segmentCodec = 'aac'; + + // flush any partial content + this.aacOverFlow = null; + this.remainderData = null; + this.audioCodec = audioCodec; + this.videoCodec = videoCodec; + }; + _proto.resetTimeStamp = function resetTimeStamp() {}; + _proto.resetContiguity = function resetContiguity() { + var _audioTrack = this._audioTrack, + _videoTrack = this._videoTrack, + _id3Track = this._id3Track; + if (_audioTrack) { + _audioTrack.pesData = null; + } + if (_videoTrack) { + _videoTrack.pesData = null; + } + if (_id3Track) { + _id3Track.pesData = null; + } + this.aacOverFlow = null; + this.remainderData = null; + }; + _proto.demux = function demux(data, timeOffset, isSampleAes, flush) { + if (isSampleAes === void 0) { + isSampleAes = false; + } + if (flush === void 0) { + flush = false; + } + if (!isSampleAes) { + this.sampleAes = null; + } + var pes; + var videoTrack = this._videoTrack; + var audioTrack = this._audioTrack; + var id3Track = this._id3Track; + var textTrack = this._txtTrack; + var videoPid = videoTrack.pid; + var videoData = videoTrack.pesData; + var audioPid = audioTrack.pid; + var id3Pid = id3Track.pid; + var audioData = audioTrack.pesData; + var id3Data = id3Track.pesData; + var unknownPID = null; + var pmtParsed = this.pmtParsed; + var pmtId = this._pmtId; + var len = data.length; + if (this.remainderData) { + data = appendUint8Array(this.remainderData, data); + len = data.length; + this.remainderData = null; + } + if (len < PACKET_LENGTH && !flush) { + this.remainderData = data; + return { + audioTrack: audioTrack, + videoTrack: videoTrack, + id3Track: id3Track, + textTrack: textTrack + }; + } + var syncOffset = Math.max(0, TSDemuxer.syncOffset(data)); + len -= (len - syncOffset) % PACKET_LENGTH; + if (len < data.byteLength && !flush) { + this.remainderData = new Uint8Array(data.buffer, len, data.buffer.byteLength - len); + } + + // loop through TS packets + var tsPacketErrors = 0; + for (var start = syncOffset; start < len; start += PACKET_LENGTH) { + if (data[start] === 0x47) { + var stt = !!(data[start + 1] & 0x40); + var pid = parsePID(data, start); + var atf = (data[start + 3] & 0x30) >> 4; + + // if an adaption field is present, its length is specified by the fifth byte of the TS packet header. + var offset = void 0; + if (atf > 1) { + offset = start + 5 + data[start + 4]; + // continue if there is only adaptation field + if (offset === start + PACKET_LENGTH) { + continue; + } + } else { + offset = start + 4; + } + switch (pid) { + case videoPid: + if (stt) { + if (videoData && (pes = parsePES(videoData, this.logger))) { + if (this.videoParser === null) { + switch (videoTrack.segmentCodec) { + case 'avc': + this.videoParser = new AvcVideoParser(); + break; + case 'hevc': + { + this.videoParser = new HevcVideoParser(); + } + break; + } + } + if (this.videoParser !== null) { + this.videoParser.parsePES(videoTrack, textTrack, pes, false); + } + } + videoData = { + data: [], + size: 0 + }; + } + if (videoData) { + videoData.data.push(data.subarray(offset, start + PACKET_LENGTH)); + videoData.size += start + PACKET_LENGTH - offset; + } + break; + case audioPid: + if (stt) { + if (audioData && (pes = parsePES(audioData, this.logger))) { + switch (audioTrack.segmentCodec) { + case 'aac': + this.parseAACPES(audioTrack, pes); + break; + case 'mp3': + this.parseMPEGPES(audioTrack, pes); + break; + case 'ac3': + { + this.parseAC3PES(audioTrack, pes); + } + break; + } + } + audioData = { + data: [], + size: 0 + }; + } + if (audioData) { + audioData.data.push(data.subarray(offset, start + PACKET_LENGTH)); + audioData.size += start + PACKET_LENGTH - offset; + } + break; + case id3Pid: + if (stt) { + if (id3Data && (pes = parsePES(id3Data, this.logger))) { + this.parseID3PES(id3Track, pes); + } + id3Data = { + data: [], + size: 0 + }; + } + if (id3Data) { + id3Data.data.push(data.subarray(offset, start + PACKET_LENGTH)); + id3Data.size += start + PACKET_LENGTH - offset; + } + break; + case 0: + if (stt) { + offset += data[offset] + 1; + } + pmtId = this._pmtId = parsePAT(data, offset); + // this.logger.log('PMT PID:' + this._pmtId); + break; + case pmtId: + { + if (stt) { + offset += data[offset] + 1; + } + var parsedPIDs = parsePMT(data, offset, this.typeSupported, isSampleAes, this.observer, this.logger); + + // only update track id if track PID found while parsing PMT + // this is to avoid resetting the PID to -1 in case + // track PID transiently disappears from the stream + // this could happen in case of transient missing audio samples for example + // NOTE this is only the PID of the track as found in TS, + // but we are not using this for MP4 track IDs. + videoPid = parsedPIDs.videoPid; + if (videoPid > 0) { + videoTrack.pid = videoPid; + videoTrack.segmentCodec = parsedPIDs.segmentVideoCodec; + } + audioPid = parsedPIDs.audioPid; + if (audioPid > 0) { + audioTrack.pid = audioPid; + audioTrack.segmentCodec = parsedPIDs.segmentAudioCodec; + } + id3Pid = parsedPIDs.id3Pid; + if (id3Pid > 0) { + id3Track.pid = id3Pid; + } + if (unknownPID !== null && !pmtParsed) { + this.logger.warn("MPEG-TS PMT found at " + start + " after unknown PID '" + unknownPID + "'. Backtracking to sync byte @" + syncOffset + " to parse all TS packets."); + unknownPID = null; + // we set it to -188, the += 188 in the for loop will reset start to 0 + start = syncOffset - 188; + } + pmtParsed = this.pmtParsed = true; + break; + } + case 0x11: + case 0x1fff: + break; + default: + unknownPID = pid; + break; + } + } else { + tsPacketErrors++; + } + } + if (tsPacketErrors > 0) { + emitParsingError(this.observer, new Error("Found " + tsPacketErrors + " TS packet/s that do not start with 0x47"), undefined, this.logger); + } + videoTrack.pesData = videoData; + audioTrack.pesData = audioData; + id3Track.pesData = id3Data; + var demuxResult = { + audioTrack: audioTrack, + videoTrack: videoTrack, + id3Track: id3Track, + textTrack: textTrack + }; + if (flush) { + this.extractRemainingSamples(demuxResult); + } + return demuxResult; + }; + _proto.flush = function flush() { + var remainderData = this.remainderData; + this.remainderData = null; + var result; + if (remainderData) { + result = this.demux(remainderData, -1, false, true); + } else { + result = { + videoTrack: this._videoTrack, + audioTrack: this._audioTrack, + id3Track: this._id3Track, + textTrack: this._txtTrack + }; + } + this.extractRemainingSamples(result); + if (this.sampleAes) { + return this.decrypt(result, this.sampleAes); + } + return result; + }; + _proto.extractRemainingSamples = function extractRemainingSamples(demuxResult) { + var audioTrack = demuxResult.audioTrack, + videoTrack = demuxResult.videoTrack, + id3Track = demuxResult.id3Track, + textTrack = demuxResult.textTrack; + var videoData = videoTrack.pesData; + var audioData = audioTrack.pesData; + var id3Data = id3Track.pesData; + // try to parse last PES packets + var pes; + if (videoData && (pes = parsePES(videoData, this.logger))) { + if (this.videoParser === null) { + switch (videoTrack.segmentCodec) { + case 'avc': + this.videoParser = new AvcVideoParser(); + break; + case 'hevc': + { + this.videoParser = new HevcVideoParser(); + } + break; + } + } + if (this.videoParser !== null) { + this.videoParser.parsePES(videoTrack, textTrack, pes, true); + videoTrack.pesData = null; + } + } else { + // either avcData null or PES truncated, keep it for next frag parsing + videoTrack.pesData = videoData; + } + if (audioData && (pes = parsePES(audioData, this.logger))) { + switch (audioTrack.segmentCodec) { + case 'aac': + this.parseAACPES(audioTrack, pes); + break; + case 'mp3': + this.parseMPEGPES(audioTrack, pes); + break; + case 'ac3': + { + this.parseAC3PES(audioTrack, pes); + } + break; + } + audioTrack.pesData = null; + } else { + if (audioData != null && audioData.size) { + this.logger.log('last AAC PES packet truncated,might overlap between fragments'); + } + + // either audioData null or PES truncated, keep it for next frag parsing + audioTrack.pesData = audioData; + } + if (id3Data && (pes = parsePES(id3Data, this.logger))) { + this.parseID3PES(id3Track, pes); + id3Track.pesData = null; + } else { + // either id3Data null or PES truncated, keep it for next frag parsing + id3Track.pesData = id3Data; + } + }; + _proto.demuxSampleAes = function demuxSampleAes(data, keyData, timeOffset) { + var demuxResult = this.demux(data, timeOffset, true, !this.config.progressive); + var sampleAes = this.sampleAes = new SampleAesDecrypter(this.observer, this.config, keyData); + return this.decrypt(demuxResult, sampleAes); + }; + _proto.decrypt = function decrypt(demuxResult, sampleAes) { + return new Promise(function (resolve) { + var audioTrack = demuxResult.audioTrack, + videoTrack = demuxResult.videoTrack; + if (audioTrack.samples && audioTrack.segmentCodec === 'aac') { + sampleAes.decryptAacSamples(audioTrack.samples, 0, function () { + if (videoTrack.samples) { + sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, function () { + resolve(demuxResult); + }); + } else { + resolve(demuxResult); + } + }); + } else if (videoTrack.samples) { + sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, function () { + resolve(demuxResult); + }); + } + }); + }; + _proto.destroy = function destroy() { + if (this.observer) { + this.observer.removeAllListeners(); + } + // @ts-ignore + this.config = this.logger = this.observer = null; + this.aacOverFlow = this.videoParser = this.remainderData = this.sampleAes = null; + this._videoTrack = this._audioTrack = this._id3Track = this._txtTrack = undefined; + }; + _proto.parseAACPES = function parseAACPES(track, pes) { + var startOffset = 0; + var aacOverFlow = this.aacOverFlow; + var data = pes.data; + if (aacOverFlow) { + this.aacOverFlow = null; + var frameMissingBytes = aacOverFlow.missing; + var sampleLength = aacOverFlow.sample.unit.byteLength; + // logger.log(`AAC: append overflowing ${sampleLength} bytes to beginning of new PES`); + if (frameMissingBytes === -1) { + data = appendUint8Array(aacOverFlow.sample.unit, data); + } else { + var frameOverflowBytes = sampleLength - frameMissingBytes; + aacOverFlow.sample.unit.set(data.subarray(0, frameMissingBytes), frameOverflowBytes); + track.samples.push(aacOverFlow.sample); + startOffset = aacOverFlow.missing; + } + } + // look for ADTS header (0xFFFx) + var offset; + var len; + for (offset = startOffset, len = data.length; offset < len - 1; offset++) { + if (isHeader$1(data, offset)) { + break; + } + } + // if ADTS header does not start straight from the beginning of the PES payload, raise an error + if (offset !== startOffset) { + var reason; + var recoverable = offset < len - 1; + if (recoverable) { + reason = "AAC PES did not start with ADTS header,offset:" + offset; + } else { + reason = 'No ADTS header found in AAC PES'; + } + emitParsingError(this.observer, new Error(reason), recoverable, this.logger); + if (!recoverable) { + return; + } + } + initTrackConfig(track, this.observer, data, offset, this.audioCodec); + var pts; + if (pes.pts !== undefined) { + pts = pes.pts; + } else if (aacOverFlow) { + // if last AAC frame is overflowing, we should ensure timestamps are contiguous: + // first sample PTS should be equal to last sample PTS + frameDuration + var frameDuration = getFrameDuration(track.samplerate); + pts = aacOverFlow.sample.pts + frameDuration; + } else { + this.logger.warn('[tsdemuxer]: AAC PES unknown PTS'); + return; + } + + // scan for aac samples + var frameIndex = 0; + var frame; + while (offset < len) { + frame = appendFrame$1(track, data, offset, pts, frameIndex); + offset += frame.length; + if (!frame.missing) { + frameIndex++; + for (; offset < len - 1; offset++) { + if (isHeader$1(data, offset)) { + break; + } + } + } else { + this.aacOverFlow = frame; + break; + } + } + }; + _proto.parseMPEGPES = function parseMPEGPES(track, pes) { + var data = pes.data; + var length = data.length; + var frameIndex = 0; + var offset = 0; + var pts = pes.pts; + if (pts === undefined) { + this.logger.warn('[tsdemuxer]: MPEG PES unknown PTS'); + return; + } + while (offset < length) { + if (isHeader(data, offset)) { + var frame = appendFrame(track, data, offset, pts, frameIndex); + if (frame) { + offset += frame.length; + frameIndex++; + } else { + // logger.log('Unable to parse Mpeg audio frame'); + break; + } + } else { + // nothing found, keep looking + offset++; + } + } + }; + _proto.parseAC3PES = function parseAC3PES(track, pes) { + { + var data = pes.data; + var pts = pes.pts; + if (pts === undefined) { + this.logger.warn('[tsdemuxer]: AC3 PES unknown PTS'); + return; + } + var length = data.length; + var frameIndex = 0; + var offset = 0; + var parsed; + while (offset < length && (parsed = _appendFrame(track, data, offset, pts, frameIndex++)) > 0) { + offset += parsed; + } + } + }; + _proto.parseID3PES = function parseID3PES(id3Track, pes) { + if (pes.pts === undefined) { + this.logger.warn('[tsdemuxer]: ID3 PES unknown PTS'); + return; + } + var id3Sample = _extends({}, pes, { + type: this._videoTrack ? MetadataSchema.emsg : MetadataSchema.audioId3, + duration: Number.POSITIVE_INFINITY + }); + id3Track.samples.push(id3Sample); + }; + return TSDemuxer; + }(); + function parsePID(data, offset) { + // pid is a 13-bit field starting at the last bit of TS[1] + return ((data[offset + 1] & 0x1f) << 8) + data[offset + 2]; + } + function parsePAT(data, offset) { + // skip the PSI header and parse the first PMT entry + return (data[offset + 10] & 0x1f) << 8 | data[offset + 11]; + } + function parsePMT(data, offset, typeSupported, isSampleAes, observer, logger) { + var result = { + audioPid: -1, + videoPid: -1, + id3Pid: -1, + segmentVideoCodec: 'avc', + segmentAudioCodec: 'aac' + }; + var sectionLength = (data[offset + 1] & 0x0f) << 8 | data[offset + 2]; + var tableEnd = offset + 3 + sectionLength - 4; + // to determine where the table is, we have to figure out how + // long the program info descriptors are + var programInfoLength = (data[offset + 10] & 0x0f) << 8 | data[offset + 11]; + // advance the offset to the first entry in the mapping table + offset += 12 + programInfoLength; + while (offset < tableEnd) { + var pid = parsePID(data, offset); + var esInfoLength = (data[offset + 3] & 0x0f) << 8 | data[offset + 4]; + switch (data[offset]) { + case 0xcf: + // SAMPLE-AES AAC + if (!isSampleAes) { + logEncryptedSamplesFoundInUnencryptedStream('ADTS AAC', logger); + break; + } + /* falls through */ + case 0x0f: + // ISO/IEC 13818-7 ADTS AAC (MPEG-2 lower bit-rate audio) + // logger.log('AAC PID:' + pid); + if (result.audioPid === -1) { + result.audioPid = pid; + } + break; + + // Packetized metadata (ID3) + case 0x15: + // logger.log('ID3 PID:' + pid); + if (result.id3Pid === -1) { + result.id3Pid = pid; + } + break; + case 0xdb: + // SAMPLE-AES AVC + if (!isSampleAes) { + logEncryptedSamplesFoundInUnencryptedStream('H.264', logger); + break; + } + /* falls through */ + case 0x1b: + // ITU-T Rec. H.264 and ISO/IEC 14496-10 (lower bit-rate video) + // logger.log('AVC PID:' + pid); + if (result.videoPid === -1) { + result.videoPid = pid; + result.segmentVideoCodec = 'avc'; + } + break; + + // ISO/IEC 11172-3 (MPEG-1 audio) + // or ISO/IEC 13818-3 (MPEG-2 halved sample rate audio) + case 0x03: + case 0x04: + // logger.log('MPEG PID:' + pid); + if (!typeSupported.mpeg && !typeSupported.mp3) { + logger.log('MPEG audio found, not supported in this browser'); + } else if (result.audioPid === -1) { + result.audioPid = pid; + result.segmentAudioCodec = 'mp3'; + } + break; + case 0xc1: + // SAMPLE-AES AC3 + if (!isSampleAes) { + logEncryptedSamplesFoundInUnencryptedStream('AC-3', logger); + break; + } + /* falls through */ + case 0x81: + { + if (!typeSupported.ac3) { + logger.log('AC-3 audio found, not supported in this browser'); + } else if (result.audioPid === -1) { + result.audioPid = pid; + result.segmentAudioCodec = 'ac3'; + } + } + break; + case 0x06: + // stream_type 6 can mean a lot of different things in case of DVB. + // We need to look at the descriptors. Right now, we're only interested + // in AC-3 audio, so we do the descriptor parsing only when we don't have + // an audio PID yet. + if (result.audioPid === -1 && esInfoLength > 0) { + var parsePos = offset + 5; + var remaining = esInfoLength; + while (remaining > 2) { + var descriptorId = data[parsePos]; + switch (descriptorId) { + case 0x6a: + // DVB Descriptor for AC-3 + { + if (typeSupported.ac3 !== true) { + logger.log('AC-3 audio found, not supported in this browser for now'); + } else { + result.audioPid = pid; + result.segmentAudioCodec = 'ac3'; + } + } + break; + } + var descriptorLen = data[parsePos + 1] + 2; + parsePos += descriptorLen; + remaining -= descriptorLen; + } + } + break; + case 0xc2: // SAMPLE-AES EC3 + /* falls through */ + case 0x87: + emitParsingError(observer, new Error('Unsupported EC-3 in M2TS found'), undefined, logger); + return result; + case 0x24: + // ITU-T Rec. H.265 and ISO/IEC 23008-2 (HEVC) + observer.emit(Events.ERROR, Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR, + fatal: false, + reason: 'Unsupported HEVC stream type found 0x24' + }); + logger.warn('Unsupported HEVC stream type found'); + { + if (result.videoPid === -1) { + result.videoPid = pid; + result.segmentVideoCodec = 'hevc'; + logger.log('HEVC in M2TS found'); + } + } + break; + } + // move to the next table entry + // skip past the elementary stream descriptors, if present + offset += esInfoLength + 5; + } + return result; + } + function emitParsingError(observer, error, levelRetry, logger) { + logger.warn("parsing error: " + error.message); + observer.emit(Events.ERROR, Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.FRAG_PARSING_ERROR, + fatal: false, + levelRetry: levelRetry, + error: error, + reason: error.message + }); + } + function logEncryptedSamplesFoundInUnencryptedStream(type, logger) { + logger.log(type + " with AES-128-CBC encryption found in unencrypted stream"); + } + function parsePES(stream, logger) { + var i = 0; + var frag; + var pesLen; + var pesHdrLen; + var pesPts; + var pesDts; + var data = stream.data; + // safety check + if (!stream || stream.size === 0) { + return null; + } + + // we might need up to 19 bytes to read PES header + // if first chunk of data is less than 19 bytes, let's merge it with following ones until we get 19 bytes + // usually only one merge is needed (and this is rare ...) + while (data[0].length < 19 && data.length > 1) { + data[0] = appendUint8Array(data[0], data[1]); + data.splice(1, 1); + } + // retrieve PTS/DTS from first fragment + frag = data[0]; + var pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2]; + if (pesPrefix === 1) { + pesLen = (frag[4] << 8) + frag[5]; + // if PES parsed length is not zero and greater than total received length, stop parsing. PES might be truncated + // minus 6 : PES header size + if (pesLen && pesLen > stream.size - 6) { + return null; + } + var pesFlags = frag[7]; + if (pesFlags & 0xc0) { + /* PES header described here : http://dvd.sourceforge.net/dvdinfo/pes-hdr.html + as PTS / DTS is 33 bit we cannot use bitwise operator in JS, + as Bitwise operators treat their operands as a sequence of 32 bits */ + pesPts = (frag[9] & 0x0e) * 536870912 + + // 1 << 29 + (frag[10] & 0xff) * 4194304 + + // 1 << 22 + (frag[11] & 0xfe) * 16384 + + // 1 << 14 + (frag[12] & 0xff) * 128 + + // 1 << 7 + (frag[13] & 0xfe) / 2; + if (pesFlags & 0x40) { + pesDts = (frag[14] & 0x0e) * 536870912 + + // 1 << 29 + (frag[15] & 0xff) * 4194304 + + // 1 << 22 + (frag[16] & 0xfe) * 16384 + + // 1 << 14 + (frag[17] & 0xff) * 128 + + // 1 << 7 + (frag[18] & 0xfe) / 2; + if (pesPts - pesDts > 60 * 90000) { + logger.warn(Math.round((pesPts - pesDts) / 90000) + "s delta between PTS and DTS, align them"); + pesPts = pesDts; + } + } else { + pesDts = pesPts; + } + } + pesHdrLen = frag[8]; + // 9 bytes : 6 bytes for PES header + 3 bytes for PES extension + var payloadStartOffset = pesHdrLen + 9; + if (stream.size <= payloadStartOffset) { + return null; + } + stream.size -= payloadStartOffset; + // reassemble PES packet + var pesData = new Uint8Array(stream.size); + for (var j = 0, dataLen = data.length; j < dataLen; j++) { + frag = data[j]; + var len = frag.byteLength; + if (payloadStartOffset) { + if (payloadStartOffset > len) { + // trim full frag if PES header bigger than frag + payloadStartOffset -= len; + continue; + } else { + // trim partial frag if PES header smaller than frag + frag = frag.subarray(payloadStartOffset); + len -= payloadStartOffset; + payloadStartOffset = 0; + } + } + pesData.set(frag, i); + i += len; + } + if (pesLen) { + // payload size : remove PES header + PES extension + pesLen -= pesHdrLen + 3; + } + return { + data: pesData, + pts: pesPts, + dts: pesDts, + len: pesLen + }; + } + return null; + } + + var MP3Demuxer = /*#__PURE__*/function (_BaseAudioDemuxer) { + function MP3Demuxer() { + return _BaseAudioDemuxer.apply(this, arguments) || this; + } + _inheritsLoose(MP3Demuxer, _BaseAudioDemuxer); + var _proto = MP3Demuxer.prototype; + _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) { + _BaseAudioDemuxer.prototype.resetInitSegment.call(this, initSegment, audioCodec, videoCodec, trackDuration); + this._audioTrack = { + container: 'audio/mpeg', + type: 'audio', + id: 2, + pid: -1, + sequenceNumber: 0, + segmentCodec: 'mp3', + samples: [], + manifestCodec: audioCodec, + duration: trackDuration, + inputTimeScale: 90000, + dropped: 0 + }; + }; + MP3Demuxer.probe = function probe$1(data) { + if (!data) { + return false; + } + + // check if data contains ID3 timestamp and MPEG sync word + // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1 + // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III) + // More info http://www.mp3-tech.org/programmer/frame_header.html + var id3Data = getId3Data(data, 0); + var offset = (id3Data == null ? void 0 : id3Data.length) || 0; + + // Check for ac-3|ec-3 sync bytes and return false if present + if (id3Data && data[offset] === 0x0b && data[offset + 1] === 0x77 && getId3Timestamp(id3Data) !== undefined && + // check the bsid to confirm ac-3 or ec-3 (not mp3) + getAudioBSID(data, offset) <= 16) { + return false; + } + for (var length = data.length; offset < length; offset++) { + if (probe(data, offset)) { + logger.log('MPEG Audio sync word found !'); + return true; + } + } + return false; + }; + _proto.canParse = function canParse$1(data, offset) { + return canParse(data, offset); + }; + _proto.appendFrame = function appendFrame$1(track, data, offset) { + if (this.basePTS === null) { + return; + } + return appendFrame(track, data, offset, this.basePTS, this.frameIndex); + }; + return MP3Demuxer; + }(BaseAudioDemuxer); + + /** + * AAC helper + */ + var AAC = /*#__PURE__*/function () { + function AAC() {} + AAC.getSilentFrame = function getSilentFrame(codec, channelCount) { + switch (codec) { + case 'mp4a.40.2': + if (channelCount === 1) { + return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]); + } else if (channelCount === 2) { + return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]); + } else if (channelCount === 3) { + return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]); + } else if (channelCount === 4) { + return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38]); + } else if (channelCount === 5) { + return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38]); + } else if (channelCount === 6) { + return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2, 0x00, 0x20, 0x08, 0xe0]); + } + break; + // handle HE-AAC below (mp4a.40.5 / mp4a.40.29) + default: + if (channelCount === 1) { + // ffmpeg -y -f lavfi -i "aevalsrc=0:d=0.05" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac + return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]); + } else if (channelCount === 2) { + // ffmpeg -y -f lavfi -i "aevalsrc=0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac + return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]); + } else if (channelCount === 3) { + // ffmpeg -y -f lavfi -i "aevalsrc=0|0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac + return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]); + } + break; + } + return undefined; + }; + return AAC; + }(); + + /** + * Generate MP4 Box + */ + + var UINT32_MAX = Math.pow(2, 32) - 1; + var MP4 = /*#__PURE__*/function () { + function MP4() {} + MP4.init = function init() { + MP4.types = { + avc1: [], + // codingname + avcC: [], + hvc1: [], + hvcC: [], + btrt: [], + dinf: [], + dref: [], + esds: [], + ftyp: [], + hdlr: [], + mdat: [], + mdhd: [], + mdia: [], + mfhd: [], + minf: [], + moof: [], + moov: [], + mp4a: [], + '.mp3': [], + dac3: [], + 'ac-3': [], + mvex: [], + mvhd: [], + pasp: [], + sdtp: [], + stbl: [], + stco: [], + stsc: [], + stsd: [], + stsz: [], + stts: [], + tfdt: [], + tfhd: [], + traf: [], + trak: [], + trun: [], + trex: [], + tkhd: [], + vmhd: [], + smhd: [] + }; + var i; + for (i in MP4.types) { + if (MP4.types.hasOwnProperty(i)) { + MP4.types[i] = [i.charCodeAt(0), i.charCodeAt(1), i.charCodeAt(2), i.charCodeAt(3)]; + } + } + var videoHdlr = new Uint8Array([0x00, + // version 0 + 0x00, 0x00, 0x00, + // flags + 0x00, 0x00, 0x00, 0x00, + // pre_defined + 0x76, 0x69, 0x64, 0x65, + // handler_type: 'vide' + 0x00, 0x00, 0x00, 0x00, + // reserved + 0x00, 0x00, 0x00, 0x00, + // reserved + 0x00, 0x00, 0x00, 0x00, + // reserved + 0x56, 0x69, 0x64, 0x65, 0x6f, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler' + ]); + var audioHdlr = new Uint8Array([0x00, + // version 0 + 0x00, 0x00, 0x00, + // flags + 0x00, 0x00, 0x00, 0x00, + // pre_defined + 0x73, 0x6f, 0x75, 0x6e, + // handler_type: 'soun' + 0x00, 0x00, 0x00, 0x00, + // reserved + 0x00, 0x00, 0x00, 0x00, + // reserved + 0x00, 0x00, 0x00, 0x00, + // reserved + 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler' + ]); + MP4.HDLR_TYPES = { + video: videoHdlr, + audio: audioHdlr + }; + var dref = new Uint8Array([0x00, + // version 0 + 0x00, 0x00, 0x00, + // flags + 0x00, 0x00, 0x00, 0x01, + // entry_count + 0x00, 0x00, 0x00, 0x0c, + // entry_size + 0x75, 0x72, 0x6c, 0x20, + // 'url' type + 0x00, + // version 0 + 0x00, 0x00, 0x01 // entry_flags + ]); + var stco = new Uint8Array([0x00, + // version + 0x00, 0x00, 0x00, + // flags + 0x00, 0x00, 0x00, 0x00 // entry_count + ]); + MP4.STTS = MP4.STSC = MP4.STCO = stco; + MP4.STSZ = new Uint8Array([0x00, + // version + 0x00, 0x00, 0x00, + // flags + 0x00, 0x00, 0x00, 0x00, + // sample_size + 0x00, 0x00, 0x00, 0x00 // sample_count + ]); + MP4.VMHD = new Uint8Array([0x00, + // version + 0x00, 0x00, 0x01, + // flags + 0x00, 0x00, + // graphicsmode + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // opcolor + ]); + MP4.SMHD = new Uint8Array([0x00, + // version + 0x00, 0x00, 0x00, + // flags + 0x00, 0x00, + // balance + 0x00, 0x00 // reserved + ]); + MP4.STSD = new Uint8Array([0x00, + // version 0 + 0x00, 0x00, 0x00, + // flags + 0x00, 0x00, 0x00, 0x01]); // entry_count + + var majorBrand = new Uint8Array([105, 115, 111, 109]); // isom + var avc1Brand = new Uint8Array([97, 118, 99, 49]); // avc1 + var minorVersion = new Uint8Array([0, 0, 0, 1]); + MP4.FTYP = MP4.box(MP4.types.ftyp, majorBrand, minorVersion, majorBrand, avc1Brand); + MP4.DINF = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, dref)); + }; + MP4.box = function box(type) { + var size = 8; + for (var _len = arguments.length, payload = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + payload[_key - 1] = arguments[_key]; + } + var i = payload.length; + var len = i; + // calculate the total size we need to allocate + while (i--) { + size += payload[i].byteLength; + } + var result = new Uint8Array(size); + result[0] = size >> 24 & 0xff; + result[1] = size >> 16 & 0xff; + result[2] = size >> 8 & 0xff; + result[3] = size & 0xff; + result.set(type, 4); + // copy the payload into the result + for (i = 0, size = 8; i < len; i++) { + // copy payload[i] array @ offset size + result.set(payload[i], size); + size += payload[i].byteLength; + } + return result; + }; + MP4.hdlr = function hdlr(type) { + return MP4.box(MP4.types.hdlr, MP4.HDLR_TYPES[type]); + }; + MP4.mdat = function mdat(data) { + return MP4.box(MP4.types.mdat, data); + }; + MP4.mdhd = function mdhd(timescale, duration) { + duration *= timescale; + var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1)); + var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1)); + return MP4.box(MP4.types.mdhd, new Uint8Array([0x01, + // version 1 + 0x00, 0x00, 0x00, + // flags + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + // creation_time + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + // modification_time + timescale >> 24 & 0xff, timescale >> 16 & 0xff, timescale >> 8 & 0xff, timescale & 0xff, + // timescale + upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x55, 0xc4, + // 'und' language (undetermined) + 0x00, 0x00])); + }; + MP4.mdia = function mdia(track) { + return MP4.box(MP4.types.mdia, MP4.mdhd(track.timescale, track.duration), MP4.hdlr(track.type), MP4.minf(track)); + }; + MP4.mfhd = function mfhd(sequenceNumber) { + return MP4.box(MP4.types.mfhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, + // flags + sequenceNumber >> 24, sequenceNumber >> 16 & 0xff, sequenceNumber >> 8 & 0xff, sequenceNumber & 0xff // sequence_number + ])); + }; + MP4.minf = function minf(track) { + if (track.type === 'audio') { + return MP4.box(MP4.types.minf, MP4.box(MP4.types.smhd, MP4.SMHD), MP4.DINF, MP4.stbl(track)); + } else { + return MP4.box(MP4.types.minf, MP4.box(MP4.types.vmhd, MP4.VMHD), MP4.DINF, MP4.stbl(track)); + } + }; + MP4.moof = function moof(sn, baseMediaDecodeTime, track) { + return MP4.box(MP4.types.moof, MP4.mfhd(sn), MP4.traf(track, baseMediaDecodeTime)); + }; + MP4.moov = function moov(tracks) { + var i = tracks.length; + var boxes = []; + while (i--) { + boxes[i] = MP4.trak(tracks[i]); + } + return MP4.box.apply(null, [MP4.types.moov, MP4.mvhd(tracks[0].timescale, tracks[0].duration)].concat(boxes).concat(MP4.mvex(tracks))); + }; + MP4.mvex = function mvex(tracks) { + var i = tracks.length; + var boxes = []; + while (i--) { + boxes[i] = MP4.trex(tracks[i]); + } + return MP4.box.apply(null, [MP4.types.mvex].concat(boxes)); + }; + MP4.mvhd = function mvhd(timescale, duration) { + duration *= timescale; + var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1)); + var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1)); + var bytes = new Uint8Array([0x01, + // version 1 + 0x00, 0x00, 0x00, + // flags + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + // creation_time + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + // modification_time + timescale >> 24 & 0xff, timescale >> 16 & 0xff, timescale >> 8 & 0xff, timescale & 0xff, + // timescale + upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x00, 0x01, 0x00, 0x00, + // 1.0 rate + 0x01, 0x00, + // 1.0 volume + 0x00, 0x00, + // reserved + 0x00, 0x00, 0x00, 0x00, + // reserved + 0x00, 0x00, 0x00, 0x00, + // reserved + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + // transformation: unity matrix + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // pre_defined + 0xff, 0xff, 0xff, 0xff // next_track_ID + ]); + return MP4.box(MP4.types.mvhd, bytes); + }; + MP4.sdtp = function sdtp(track) { + var samples = track.samples || []; + var bytes = new Uint8Array(4 + samples.length); + var i; + var flags; + // leave the full box header (4 bytes) all zero + // write the sample table + for (i = 0; i < samples.length; i++) { + flags = samples[i].flags; + bytes[i + 4] = flags.dependsOn << 4 | flags.isDependedOn << 2 | flags.hasRedundancy; + } + return MP4.box(MP4.types.sdtp, bytes); + }; + MP4.stbl = function stbl(track) { + return MP4.box(MP4.types.stbl, MP4.stsd(track), MP4.box(MP4.types.stts, MP4.STTS), MP4.box(MP4.types.stsc, MP4.STSC), MP4.box(MP4.types.stsz, MP4.STSZ), MP4.box(MP4.types.stco, MP4.STCO)); + }; + MP4.avc1 = function avc1(track) { + var sps = []; + var pps = []; + var i; + var data; + var len; + // assemble the SPSs + + for (i = 0; i < track.sps.length; i++) { + data = track.sps[i]; + len = data.byteLength; + sps.push(len >>> 8 & 0xff); + sps.push(len & 0xff); + + // SPS + sps = sps.concat(Array.prototype.slice.call(data)); + } + + // assemble the PPSs + for (i = 0; i < track.pps.length; i++) { + data = track.pps[i]; + len = data.byteLength; + pps.push(len >>> 8 & 0xff); + pps.push(len & 0xff); + pps = pps.concat(Array.prototype.slice.call(data)); + } + var avcc = MP4.box(MP4.types.avcC, new Uint8Array([0x01, + // version + sps[3], + // profile + sps[4], + // profile compat + sps[5], + // level + 0xfc | 3, + // lengthSizeMinusOne, hard-coded to 4 bytes + 0xe0 | track.sps.length // 3bit reserved (111) + numOfSequenceParameterSets + ].concat(sps).concat([track.pps.length // numOfPictureParameterSets + ]).concat(pps))); // "PPS" + var width = track.width; + var height = track.height; + var hSpacing = track.pixelRatio[0]; + var vSpacing = track.pixelRatio[1]; + return MP4.box(MP4.types.avc1, new Uint8Array([0x00, 0x00, 0x00, + // reserved + 0x00, 0x00, 0x00, + // reserved + 0x00, 0x01, + // data_reference_index + 0x00, 0x00, + // pre_defined + 0x00, 0x00, + // reserved + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // pre_defined + width >> 8 & 0xff, width & 0xff, + // width + height >> 8 & 0xff, height & 0xff, + // height + 0x00, 0x48, 0x00, 0x00, + // horizresolution + 0x00, 0x48, 0x00, 0x00, + // vertresolution + 0x00, 0x00, 0x00, 0x00, + // reserved + 0x00, 0x01, + // frame_count + 0x12, 0x64, 0x61, 0x69, 0x6c, + // dailymotion/hls.js + 0x79, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x6c, 0x73, 0x2e, 0x6a, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // compressorname + 0x00, 0x18, + // depth = 24 + 0x11, 0x11]), + // pre_defined = -1 + avcc, MP4.box(MP4.types.btrt, new Uint8Array([0x00, 0x1c, 0x9c, 0x80, + // bufferSizeDB + 0x00, 0x2d, 0xc6, 0xc0, + // maxBitrate + 0x00, 0x2d, 0xc6, 0xc0])), + // avgBitrate + MP4.box(MP4.types.pasp, new Uint8Array([hSpacing >> 24, + // hSpacing + hSpacing >> 16 & 0xff, hSpacing >> 8 & 0xff, hSpacing & 0xff, vSpacing >> 24, + // vSpacing + vSpacing >> 16 & 0xff, vSpacing >> 8 & 0xff, vSpacing & 0xff]))); + }; + MP4.esds = function esds(track) { + var config = track.config; + return new Uint8Array([0x00, + // version 0 + 0x00, 0x00, 0x00, + // flags + + 0x03, + // descriptor_type + 0x19, + // length + + 0x00, 0x01, + // es_id + + 0x00, + // stream_priority + + 0x04, + // descriptor_type + 0x11, + // length + 0x40, + // codec : mpeg4_audio + 0x15, + // stream_type + 0x00, 0x00, 0x00, + // buffer_size + 0x00, 0x00, 0x00, 0x00, + // maxBitrate + 0x00, 0x00, 0x00, 0x00, + // avgBitrate + + 0x05, + // descriptor_type + 0x02].concat(config, [0x06, 0x01, 0x02 // GASpecificConfig)); // length + audio config descriptor + ])); + }; + MP4.audioStsd = function audioStsd(track) { + var samplerate = track.samplerate; + return new Uint8Array([0x00, 0x00, 0x00, + // reserved + 0x00, 0x00, 0x00, + // reserved + 0x00, 0x01, + // data_reference_index + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // reserved + 0x00, track.channelCount, + // channelcount + 0x00, 0x10, + // sampleSize:16bits + 0x00, 0x00, 0x00, 0x00, + // reserved2 + samplerate >> 8 & 0xff, samplerate & 0xff, + // + 0x00, 0x00]); + }; + MP4.mp4a = function mp4a(track) { + return MP4.box(MP4.types.mp4a, MP4.audioStsd(track), MP4.box(MP4.types.esds, MP4.esds(track))); + }; + MP4.mp3 = function mp3(track) { + return MP4.box(MP4.types['.mp3'], MP4.audioStsd(track)); + }; + MP4.ac3 = function ac3(track) { + return MP4.box(MP4.types['ac-3'], MP4.audioStsd(track), MP4.box(MP4.types.dac3, track.config)); + }; + MP4.stsd = function stsd(track) { + if (track.type === 'audio') { + if (track.segmentCodec === 'mp3' && track.codec === 'mp3') { + return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp3(track)); + } + if (track.segmentCodec === 'ac3') { + return MP4.box(MP4.types.stsd, MP4.STSD, MP4.ac3(track)); + } + return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp4a(track)); + } else if (track.segmentCodec === 'avc') { + return MP4.box(MP4.types.stsd, MP4.STSD, MP4.avc1(track)); + } else { + return MP4.box(MP4.types.stsd, MP4.STSD, MP4.hvc1(track)); + } + }; + MP4.tkhd = function tkhd(track) { + var id = track.id; + var duration = track.duration * track.timescale; + var width = track.width; + var height = track.height; + var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1)); + var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1)); + return MP4.box(MP4.types.tkhd, new Uint8Array([0x01, + // version 1 + 0x00, 0x00, 0x07, + // flags + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + // creation_time + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + // modification_time + id >> 24 & 0xff, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff, + // track_ID + 0x00, 0x00, 0x00, 0x00, + // reserved + upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // reserved + 0x00, 0x00, + // layer + 0x00, 0x00, + // alternate_group + 0x00, 0x00, + // non-audio track volume + 0x00, 0x00, + // reserved + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + // transformation: unity matrix + width >> 8 & 0xff, width & 0xff, 0x00, 0x00, + // width + height >> 8 & 0xff, height & 0xff, 0x00, 0x00 // height + ])); + }; + MP4.traf = function traf(track, baseMediaDecodeTime) { + var sampleDependencyTable = MP4.sdtp(track); + var id = track.id; + var upperWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1)); + var lowerWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1)); + return MP4.box(MP4.types.traf, MP4.box(MP4.types.tfhd, new Uint8Array([0x00, + // version 0 + 0x00, 0x00, 0x00, + // flags + id >> 24, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff // track_ID + ])), MP4.box(MP4.types.tfdt, new Uint8Array([0x01, + // version 1 + 0x00, 0x00, 0x00, + // flags + upperWordBaseMediaDecodeTime >> 24, upperWordBaseMediaDecodeTime >> 16 & 0xff, upperWordBaseMediaDecodeTime >> 8 & 0xff, upperWordBaseMediaDecodeTime & 0xff, lowerWordBaseMediaDecodeTime >> 24, lowerWordBaseMediaDecodeTime >> 16 & 0xff, lowerWordBaseMediaDecodeTime >> 8 & 0xff, lowerWordBaseMediaDecodeTime & 0xff])), MP4.trun(track, sampleDependencyTable.length + 16 + + // tfhd + 20 + + // tfdt + 8 + + // traf header + 16 + + // mfhd + 8 + + // moof header + 8), + // mdat header + sampleDependencyTable); + } + + /** + * Generate a track box. + * @param track a track definition + */; + MP4.trak = function trak(track) { + track.duration = track.duration || 0xffffffff; + return MP4.box(MP4.types.trak, MP4.tkhd(track), MP4.mdia(track)); + }; + MP4.trex = function trex(track) { + var id = track.id; + return MP4.box(MP4.types.trex, new Uint8Array([0x00, + // version 0 + 0x00, 0x00, 0x00, + // flags + id >> 24, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff, + // track_ID + 0x00, 0x00, 0x00, 0x01, + // default_sample_description_index + 0x00, 0x00, 0x00, 0x00, + // default_sample_duration + 0x00, 0x00, 0x00, 0x00, + // default_sample_size + 0x00, 0x01, 0x00, 0x01 // default_sample_flags + ])); + }; + MP4.trun = function trun(track, offset) { + var samples = track.samples || []; + var len = samples.length; + var arraylen = 12 + 16 * len; + var array = new Uint8Array(arraylen); + var i; + var sample; + var duration; + var size; + var flags; + var cts; + offset += 8 + arraylen; + array.set([track.type === 'video' ? 0x01 : 0x00, + // version 1 for video with signed-int sample_composition_time_offset + 0x00, 0x0f, 0x01, + // flags + len >>> 24 & 0xff, len >>> 16 & 0xff, len >>> 8 & 0xff, len & 0xff, + // sample_count + offset >>> 24 & 0xff, offset >>> 16 & 0xff, offset >>> 8 & 0xff, offset & 0xff // data_offset + ], 0); + for (i = 0; i < len; i++) { + sample = samples[i]; + duration = sample.duration; + size = sample.size; + flags = sample.flags; + cts = sample.cts; + array.set([duration >>> 24 & 0xff, duration >>> 16 & 0xff, duration >>> 8 & 0xff, duration & 0xff, + // sample_duration + size >>> 24 & 0xff, size >>> 16 & 0xff, size >>> 8 & 0xff, size & 0xff, + // sample_size + flags.isLeading << 2 | flags.dependsOn, flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.paddingValue << 1 | flags.isNonSync, flags.degradPrio & 0xf0 << 8, flags.degradPrio & 0x0f, + // sample_flags + cts >>> 24 & 0xff, cts >>> 16 & 0xff, cts >>> 8 & 0xff, cts & 0xff // sample_composition_time_offset + ], 12 + 16 * i); + } + return MP4.box(MP4.types.trun, array); + }; + MP4.initSegment = function initSegment(tracks) { + if (!MP4.types) { + MP4.init(); + } + var movie = MP4.moov(tracks); + var result = appendUint8Array(MP4.FTYP, movie); + return result; + }; + MP4.hvc1 = function hvc1(track) { + var ps = track.params; + var units = [track.vps, track.sps, track.pps]; + var NALuLengthSize = 4; + var config = new Uint8Array([0x01, ps.general_profile_space << 6 | (ps.general_tier_flag ? 32 : 0) | ps.general_profile_idc, ps.general_profile_compatibility_flags[0], ps.general_profile_compatibility_flags[1], ps.general_profile_compatibility_flags[2], ps.general_profile_compatibility_flags[3], ps.general_constraint_indicator_flags[0], ps.general_constraint_indicator_flags[1], ps.general_constraint_indicator_flags[2], ps.general_constraint_indicator_flags[3], ps.general_constraint_indicator_flags[4], ps.general_constraint_indicator_flags[5], ps.general_level_idc, 240 | ps.min_spatial_segmentation_idc >> 8, 255 & ps.min_spatial_segmentation_idc, 252 | ps.parallelismType, 252 | ps.chroma_format_idc, 248 | ps.bit_depth_luma_minus8, 248 | ps.bit_depth_chroma_minus8, 0x00, parseInt(ps.frame_rate.fps), NALuLengthSize - 1 | ps.temporal_id_nested << 2 | ps.num_temporal_layers << 3 | (ps.frame_rate.fixed ? 64 : 0), units.length]); + + // compute hvcC size in bytes + var length = config.length; + for (var i = 0; i < units.length; i += 1) { + length += 3; + for (var j = 0; j < units[i].length; j += 1) { + length += 2 + units[i][j].length; + } + } + var hvcC = new Uint8Array(length); + hvcC.set(config, 0); + length = config.length; + // append parameter set units: one vps, one or more sps and pps + var iMax = units.length - 1; + for (var _i = 0; _i < units.length; _i += 1) { + hvcC.set(new Uint8Array([32 + _i | (_i === iMax ? 128 : 0), 0x00, units[_i].length]), length); + length += 3; + for (var _j = 0; _j < units[_i].length; _j += 1) { + hvcC.set(new Uint8Array([units[_i][_j].length >> 8, units[_i][_j].length & 255]), length); + length += 2; + hvcC.set(units[_i][_j], length); + length += units[_i][_j].length; + } + } + var hvcc = MP4.box(MP4.types.hvcC, hvcC); + var width = track.width; + var height = track.height; + var hSpacing = track.pixelRatio[0]; + var vSpacing = track.pixelRatio[1]; + return MP4.box(MP4.types.hvc1, new Uint8Array([0x00, 0x00, 0x00, + // reserved + 0x00, 0x00, 0x00, + // reserved + 0x00, 0x01, + // data_reference_index + 0x00, 0x00, + // pre_defined + 0x00, 0x00, + // reserved + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // pre_defined + width >> 8 & 0xff, width & 0xff, + // width + height >> 8 & 0xff, height & 0xff, + // height + 0x00, 0x48, 0x00, 0x00, + // horizresolution + 0x00, 0x48, 0x00, 0x00, + // vertresolution + 0x00, 0x00, 0x00, 0x00, + // reserved + 0x00, 0x01, + // frame_count + 0x12, 0x64, 0x61, 0x69, 0x6c, + // dailymotion/hls.js + 0x79, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x6c, 0x73, 0x2e, 0x6a, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // compressorname + 0x00, 0x18, + // depth = 24 + 0x11, 0x11]), + // pre_defined = -1 + hvcc, MP4.box(MP4.types.btrt, new Uint8Array([0x00, 0x1c, 0x9c, 0x80, + // bufferSizeDB + 0x00, 0x2d, 0xc6, 0xc0, + // maxBitrate + 0x00, 0x2d, 0xc6, 0xc0])), + // avgBitrate + MP4.box(MP4.types.pasp, new Uint8Array([hSpacing >> 24, + // hSpacing + hSpacing >> 16 & 0xff, hSpacing >> 8 & 0xff, hSpacing & 0xff, vSpacing >> 24, + // vSpacing + vSpacing >> 16 & 0xff, vSpacing >> 8 & 0xff, vSpacing & 0xff]))); + }; + return MP4; + }(); + MP4.types = void 0; + MP4.HDLR_TYPES = void 0; + MP4.STTS = void 0; + MP4.STSC = void 0; + MP4.STCO = void 0; + MP4.STSZ = void 0; + MP4.VMHD = void 0; + MP4.SMHD = void 0; + MP4.STSD = void 0; + MP4.FTYP = void 0; + MP4.DINF = void 0; + + var MPEG_TS_CLOCK_FREQ_HZ = 90000; + function toTimescaleFromBase(baseTime, destScale, srcBase, round) { + if (srcBase === void 0) { + srcBase = 1; + } + if (round === void 0) { + round = false; + } + var result = baseTime * destScale * srcBase; // equivalent to `(value * scale) / (1 / base)` + return round ? Math.round(result) : result; + } + function toTimescaleFromScale(baseTime, destScale, srcScale, round) { + if (srcScale === void 0) { + srcScale = 1; + } + if (round === void 0) { + round = false; + } + return toTimescaleFromBase(baseTime, destScale, 1 / srcScale, round); + } + function toMsFromMpegTsClock(baseTime, round) { + return toTimescaleFromBase(baseTime, 1000, 1 / MPEG_TS_CLOCK_FREQ_HZ, round); + } + function toMpegTsClockFromTimescale(baseTime, srcScale) { + if (srcScale === void 0) { + srcScale = 1; + } + return toTimescaleFromBase(baseTime, MPEG_TS_CLOCK_FREQ_HZ, 1 / srcScale); + } + + var MAX_SILENT_FRAME_DURATION = 10 * 1000; // 10 seconds + var AAC_SAMPLES_PER_FRAME = 1024; + var MPEG_AUDIO_SAMPLE_PER_FRAME = 1152; + var AC3_SAMPLES_PER_FRAME = 1536; + var chromeVersion = null; + var safariWebkitVersion = null; + var MP4Remuxer = /*#__PURE__*/function () { + function MP4Remuxer(observer, config, typeSupported, logger) { + this.logger = void 0; + this.observer = void 0; + this.config = void 0; + this.typeSupported = void 0; + this.ISGenerated = false; + this._initPTS = null; + this._initDTS = null; + this.nextAvcDts = null; + this.nextAudioPts = null; + this.videoSampleDuration = null; + this.isAudioContiguous = false; + this.isVideoContiguous = false; + this.videoTrackConfig = void 0; + this.observer = observer; + this.config = config; + this.typeSupported = typeSupported; + this.logger = logger; + this.ISGenerated = false; + if (chromeVersion === null) { + var userAgent = navigator.userAgent || ''; + var result = userAgent.match(/Chrome\/(\d+)/i); + chromeVersion = result ? parseInt(result[1]) : 0; + } + if (safariWebkitVersion === null) { + var _result = navigator.userAgent.match(/Safari\/(\d+)/i); + safariWebkitVersion = _result ? parseInt(_result[1]) : 0; + } + } + var _proto = MP4Remuxer.prototype; + _proto.destroy = function destroy() { + // @ts-ignore + this.config = this.videoTrackConfig = this._initPTS = this._initDTS = null; + }; + _proto.resetTimeStamp = function resetTimeStamp(defaultTimeStamp) { + this.logger.log('[mp4-remuxer]: initPTS & initDTS reset'); + this._initPTS = this._initDTS = defaultTimeStamp; + }; + _proto.resetNextTimestamp = function resetNextTimestamp() { + this.logger.log('[mp4-remuxer]: reset next timestamp'); + this.isVideoContiguous = false; + this.isAudioContiguous = false; + }; + _proto.resetInitSegment = function resetInitSegment() { + this.logger.log('[mp4-remuxer]: ISGenerated flag reset'); + this.ISGenerated = false; + this.videoTrackConfig = undefined; + }; + _proto.getVideoStartPts = function getVideoStartPts(videoSamples) { + var rolloverDetected = false; + var startPTS = videoSamples.reduce(function (minPTS, sample) { + var delta = sample.pts - minPTS; + if (delta < -4294967296) { + // 2^32, see PTSNormalize for reasoning, but we're hitting a rollover here, and we don't want that to impact the timeOffset calculation + rolloverDetected = true; + return normalizePts(minPTS, sample.pts); + } else if (delta > 0) { + return minPTS; + } else { + return sample.pts; + } + }, videoSamples[0].pts); + if (rolloverDetected) { + this.logger.debug('PTS rollover detected'); + } + return startPTS; + }; + _proto.remux = function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, flush, playlistType) { + var video; + var audio; + var initSegment; + var text; + var id3; + var independent; + var audioTimeOffset = timeOffset; + var videoTimeOffset = timeOffset; + + // If we're remuxing audio and video progressively, wait until we've received enough samples for each track before proceeding. + // This is done to synchronize the audio and video streams. We know if the current segment will have samples if the "pid" + // parameter is greater than -1. The pid is set when the PMT is parsed, which contains the tracks list. + // However, if the initSegment has already been generated, or we've reached the end of a segment (flush), + // then we can remux one track without waiting for the other. + var hasAudio = audioTrack.pid > -1; + var hasVideo = videoTrack.pid > -1; + var length = videoTrack.samples.length; + var enoughAudioSamples = audioTrack.samples.length > 0; + var enoughVideoSamples = flush && length > 0 || length > 1; + var canRemuxAvc = (!hasAudio || enoughAudioSamples) && (!hasVideo || enoughVideoSamples) || this.ISGenerated || flush; + if (canRemuxAvc) { + if (this.ISGenerated) { + var _videoTrack$pixelRati, _config$pixelRatio, _videoTrack$pixelRati2, _config$pixelRatio2; + var config = this.videoTrackConfig; + if (config && (videoTrack.width !== config.width || videoTrack.height !== config.height || ((_videoTrack$pixelRati = videoTrack.pixelRatio) == null ? void 0 : _videoTrack$pixelRati[0]) !== ((_config$pixelRatio = config.pixelRatio) == null ? void 0 : _config$pixelRatio[0]) || ((_videoTrack$pixelRati2 = videoTrack.pixelRatio) == null ? void 0 : _videoTrack$pixelRati2[1]) !== ((_config$pixelRatio2 = config.pixelRatio) == null ? void 0 : _config$pixelRatio2[1])) || !config && enoughVideoSamples || this.nextAudioPts === null && enoughAudioSamples) { + this.resetInitSegment(); + } + } + if (!this.ISGenerated) { + initSegment = this.generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset); + } + var isVideoContiguous = this.isVideoContiguous; + var firstKeyFrameIndex = -1; + var firstKeyFramePTS; + if (enoughVideoSamples) { + firstKeyFrameIndex = findKeyframeIndex(videoTrack.samples); + if (!isVideoContiguous && this.config.forceKeyFrameOnDiscontinuity) { + independent = true; + if (firstKeyFrameIndex > 0) { + this.logger.warn("[mp4-remuxer]: Dropped " + firstKeyFrameIndex + " out of " + length + " video samples due to a missing keyframe"); + var startPTS = this.getVideoStartPts(videoTrack.samples); + videoTrack.samples = videoTrack.samples.slice(firstKeyFrameIndex); + videoTrack.dropped += firstKeyFrameIndex; + videoTimeOffset += (videoTrack.samples[0].pts - startPTS) / videoTrack.inputTimeScale; + firstKeyFramePTS = videoTimeOffset; + } else if (firstKeyFrameIndex === -1) { + this.logger.warn("[mp4-remuxer]: No keyframe found out of " + length + " video samples"); + independent = false; + } + } + } + if (this.ISGenerated) { + if (enoughAudioSamples && enoughVideoSamples) { + // timeOffset is expected to be the offset of the first timestamp of this fragment (first DTS) + // if first audio DTS is not aligned with first video DTS then we need to take that into account + // when providing timeOffset to remuxAudio / remuxVideo. if we don't do that, there might be a permanent / small + // drift between audio and video streams + var _startPTS = this.getVideoStartPts(videoTrack.samples); + var tsDelta = normalizePts(audioTrack.samples[0].pts, _startPTS) - _startPTS; + var audiovideoTimestampDelta = tsDelta / videoTrack.inputTimeScale; + audioTimeOffset += Math.max(0, audiovideoTimestampDelta); + videoTimeOffset += Math.max(0, -audiovideoTimestampDelta); + } + + // Purposefully remuxing audio before video, so that remuxVideo can use nextAudioPts, which is calculated in remuxAudio. + if (enoughAudioSamples) { + // if initSegment was generated without audio samples, regenerate it again + if (!audioTrack.samplerate) { + this.logger.warn('[mp4-remuxer]: regenerate InitSegment as audio detected'); + initSegment = this.generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset); + } + audio = this.remuxAudio(audioTrack, audioTimeOffset, this.isAudioContiguous, accurateTimeOffset, hasVideo || enoughVideoSamples || playlistType === PlaylistLevelType.AUDIO ? videoTimeOffset : undefined); + if (enoughVideoSamples) { + var audioTrackLength = audio ? audio.endPTS - audio.startPTS : 0; + // if initSegment was generated without video samples, regenerate it again + if (!videoTrack.inputTimeScale) { + this.logger.warn('[mp4-remuxer]: regenerate InitSegment as video detected'); + initSegment = this.generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset); + } + video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, audioTrackLength); + } + } else if (enoughVideoSamples) { + video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, 0); + } + if (video) { + video.firstKeyFrame = firstKeyFrameIndex; + video.independent = firstKeyFrameIndex !== -1; + video.firstKeyFramePTS = firstKeyFramePTS; + } + } + } + + // Allow ID3 and text to remux, even if more audio/video samples are required + if (this.ISGenerated && this._initPTS && this._initDTS) { + if (id3Track.samples.length) { + id3 = flushTextTrackMetadataCueSamples(id3Track, timeOffset, this._initPTS, this._initDTS); + } + if (textTrack.samples.length) { + text = flushTextTrackUserdataCueSamples(textTrack, timeOffset, this._initPTS); + } + } + return { + audio: audio, + video: video, + initSegment: initSegment, + independent: independent, + text: text, + id3: id3 + }; + }; + _proto.generateIS = function generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset) { + var audioSamples = audioTrack.samples; + var videoSamples = videoTrack.samples; + var typeSupported = this.typeSupported; + var tracks = {}; + var _initPTS = this._initPTS; + var computePTSDTS = !_initPTS || accurateTimeOffset; + var container = 'audio/mp4'; + var initPTS; + var initDTS; + var timescale; + if (computePTSDTS) { + initPTS = initDTS = Infinity; + } + if (audioTrack.config && audioSamples.length) { + // let's use audio sampling rate as MP4 time scale. + // rationale is that there is a integer nb of audio frames per audio sample (1024 for AAC) + // using audio sampling rate here helps having an integer MP4 frame duration + // this avoids potential rounding issue and AV sync issue + audioTrack.timescale = audioTrack.samplerate; + switch (audioTrack.segmentCodec) { + case 'mp3': + if (typeSupported.mpeg) { + // Chrome and Safari + container = 'audio/mpeg'; + audioTrack.codec = ''; + } else if (typeSupported.mp3) { + // Firefox + audioTrack.codec = 'mp3'; + } + break; + case 'ac3': + audioTrack.codec = 'ac-3'; + break; + } + tracks.audio = { + id: 'audio', + container: container, + codec: audioTrack.codec, + initSegment: audioTrack.segmentCodec === 'mp3' && typeSupported.mpeg ? new Uint8Array(0) : MP4.initSegment([audioTrack]), + metadata: { + channelCount: audioTrack.channelCount + } + }; + if (computePTSDTS) { + timescale = audioTrack.inputTimeScale; + if (!_initPTS || timescale !== _initPTS.timescale) { + // remember first PTS of this demuxing context. for audio, PTS = DTS + initPTS = initDTS = audioSamples[0].pts - Math.round(timescale * timeOffset); + } else { + computePTSDTS = false; + } + } + } + if (videoTrack.sps && videoTrack.pps && videoSamples.length) { + // let's use input time scale as MP4 video timescale + // we use input time scale straight away to avoid rounding issues on frame duration / cts computation + videoTrack.timescale = videoTrack.inputTimeScale; + tracks.video = { + id: 'main', + container: 'video/mp4', + codec: videoTrack.codec, + initSegment: MP4.initSegment([videoTrack]), + metadata: { + width: videoTrack.width, + height: videoTrack.height + } + }; + if (computePTSDTS) { + timescale = videoTrack.inputTimeScale; + if (!_initPTS || timescale !== _initPTS.timescale) { + var startPTS = this.getVideoStartPts(videoSamples); + var startOffset = Math.round(timescale * timeOffset); + initDTS = Math.min(initDTS, normalizePts(videoSamples[0].dts, startPTS) - startOffset); + initPTS = Math.min(initPTS, startPTS - startOffset); + } else { + computePTSDTS = false; + } + } + this.videoTrackConfig = { + width: videoTrack.width, + height: videoTrack.height, + pixelRatio: videoTrack.pixelRatio + }; + } + if (Object.keys(tracks).length) { + this.ISGenerated = true; + if (computePTSDTS) { + this._initPTS = { + baseTime: initPTS, + timescale: timescale + }; + this._initDTS = { + baseTime: initDTS, + timescale: timescale + }; + } else { + initPTS = timescale = undefined; + } + return { + tracks: tracks, + initPTS: initPTS, + timescale: timescale + }; + } + }; + _proto.remuxVideo = function remuxVideo(track, timeOffset, contiguous, audioTrackLength) { + var timeScale = track.inputTimeScale; + var inputSamples = track.samples; + var outputSamples = []; + var nbSamples = inputSamples.length; + var initPTS = this._initPTS; + var nextAvcDts = this.nextAvcDts; + var offset = 8; + var mp4SampleDuration = this.videoSampleDuration; + var firstDTS; + var lastDTS; + var minPTS = Number.POSITIVE_INFINITY; + var maxPTS = Number.NEGATIVE_INFINITY; + var sortSamples = false; + + // if parsed fragment is contiguous with last one, let's use last DTS value as reference + if (!contiguous || nextAvcDts === null) { + var pts = timeOffset * timeScale; + var cts = inputSamples[0].pts - normalizePts(inputSamples[0].dts, inputSamples[0].pts); + if (chromeVersion && nextAvcDts !== null && Math.abs(pts - cts - nextAvcDts) < 15000) { + // treat as contigous to adjust samples that would otherwise produce video buffer gaps in Chrome + contiguous = true; + } else { + // if not contiguous, let's use target timeOffset + nextAvcDts = pts - cts; + } + } + + // PTS is coded on 33bits, and can loop from -2^32 to 2^32 + // PTSNormalize will make PTS/DTS value monotonic, we use last known DTS value as reference value + var initTime = initPTS.baseTime * timeScale / initPTS.timescale; + for (var i = 0; i < nbSamples; i++) { + var sample = inputSamples[i]; + sample.pts = normalizePts(sample.pts - initTime, nextAvcDts); + sample.dts = normalizePts(sample.dts - initTime, nextAvcDts); + if (sample.dts < inputSamples[i > 0 ? i - 1 : i].dts) { + sortSamples = true; + } + } + + // sort video samples by DTS then PTS then demux id order + if (sortSamples) { + inputSamples.sort(function (a, b) { + var deltadts = a.dts - b.dts; + var deltapts = a.pts - b.pts; + return deltadts || deltapts; + }); + } + + // Get first/last DTS + firstDTS = inputSamples[0].dts; + lastDTS = inputSamples[inputSamples.length - 1].dts; + + // Sample duration (as expected by trun MP4 boxes), should be the delta between sample DTS + // set this constant duration as being the avg delta between consecutive DTS. + var inputDuration = lastDTS - firstDTS; + var averageSampleDuration = inputDuration ? Math.round(inputDuration / (nbSamples - 1)) : mp4SampleDuration || track.inputTimeScale / 30; + + // if fragment are contiguous, detect hole/overlapping between fragments + if (contiguous) { + // check timestamp continuity across consecutive fragments (this is to remove inter-fragment gap/hole) + var delta = firstDTS - nextAvcDts; + var foundHole = delta > averageSampleDuration; + var foundOverlap = delta < -1; + if (foundHole || foundOverlap) { + if (foundHole) { + this.logger.warn((track.segmentCodec || '').toUpperCase() + ": " + toMsFromMpegTsClock(delta, true) + " ms (" + delta + "dts) hole between fragments detected at " + timeOffset.toFixed(3)); + } else { + this.logger.warn((track.segmentCodec || '').toUpperCase() + ": " + toMsFromMpegTsClock(-delta, true) + " ms (" + delta + "dts) overlapping between fragments detected at " + timeOffset.toFixed(3)); + } + if (!foundOverlap || nextAvcDts >= inputSamples[0].pts || chromeVersion) { + firstDTS = nextAvcDts; + var firstPTS = inputSamples[0].pts - delta; + if (foundHole) { + inputSamples[0].dts = firstDTS; + inputSamples[0].pts = firstPTS; + } else { + var isPTSOrderRetained = true; + for (var _i = 0; _i < inputSamples.length; _i++) { + if (inputSamples[_i].dts > firstPTS && isPTSOrderRetained) { + break; + } + var prevPTS = inputSamples[_i].pts; + inputSamples[_i].dts -= delta; + inputSamples[_i].pts -= delta; + + // check to see if this sample's PTS order has changed + // relative to the next one + if (_i < inputSamples.length - 1) { + var nextSamplePTS = inputSamples[_i + 1].pts; + var currentSamplePTS = inputSamples[_i].pts; + var currentOrder = nextSamplePTS <= currentSamplePTS; + var prevOrder = nextSamplePTS <= prevPTS; + isPTSOrderRetained = currentOrder == prevOrder; + } + } + } + this.logger.log("Video: Initial PTS/DTS adjusted: " + toMsFromMpegTsClock(firstPTS, true) + "/" + toMsFromMpegTsClock(firstDTS, true) + ", delta: " + toMsFromMpegTsClock(delta, true) + " ms"); + } + } + } + firstDTS = Math.max(0, firstDTS); + var nbNalu = 0; + var naluLen = 0; + var dtsStep = firstDTS; + for (var _i2 = 0; _i2 < nbSamples; _i2++) { + // compute total/avc sample length and nb of NAL units + var _sample = inputSamples[_i2]; + var units = _sample.units; + var nbUnits = units.length; + var sampleLen = 0; + for (var j = 0; j < nbUnits; j++) { + sampleLen += units[j].data.length; + } + naluLen += sampleLen; + nbNalu += nbUnits; + _sample.length = sampleLen; + + // ensure sample monotonic DTS + if (_sample.dts < dtsStep) { + _sample.dts = dtsStep; + dtsStep += averageSampleDuration / 4 | 0 || 1; + } else { + dtsStep = _sample.dts; + } + minPTS = Math.min(_sample.pts, minPTS); + maxPTS = Math.max(_sample.pts, maxPTS); + } + lastDTS = inputSamples[nbSamples - 1].dts; + + /* concatenate the video data and construct the mdat in place + (need 8 more bytes to fill length and mpdat type) */ + var mdatSize = naluLen + 4 * nbNalu + 8; + var mdat; + try { + mdat = new Uint8Array(mdatSize); + } catch (err) { + this.observer.emit(Events.ERROR, Events.ERROR, { + type: ErrorTypes.MUX_ERROR, + details: ErrorDetails.REMUX_ALLOC_ERROR, + fatal: false, + error: err, + bytes: mdatSize, + reason: "fail allocating video mdat " + mdatSize + }); + return; + } + var view = new DataView(mdat.buffer); + view.setUint32(0, mdatSize); + mdat.set(MP4.types.mdat, 4); + var stretchedLastFrame = false; + var minDtsDelta = Number.POSITIVE_INFINITY; + var minPtsDelta = Number.POSITIVE_INFINITY; + var maxDtsDelta = Number.NEGATIVE_INFINITY; + var maxPtsDelta = Number.NEGATIVE_INFINITY; + for (var _i3 = 0; _i3 < nbSamples; _i3++) { + var VideoSample = inputSamples[_i3]; + var VideoSampleUnits = VideoSample.units; + var mp4SampleLength = 0; + // convert NALU bitstream to MP4 format (prepend NALU with size field) + for (var _j = 0, _nbUnits = VideoSampleUnits.length; _j < _nbUnits; _j++) { + var unit = VideoSampleUnits[_j]; + var unitData = unit.data; + var unitDataLen = unit.data.byteLength; + view.setUint32(offset, unitDataLen); + offset += 4; + mdat.set(unitData, offset); + offset += unitDataLen; + mp4SampleLength += 4 + unitDataLen; + } + + // expected sample duration is the Decoding Timestamp diff of consecutive samples + var ptsDelta = void 0; + if (_i3 < nbSamples - 1) { + mp4SampleDuration = inputSamples[_i3 + 1].dts - VideoSample.dts; + ptsDelta = inputSamples[_i3 + 1].pts - VideoSample.pts; + } else { + var config = this.config; + var lastFrameDuration = _i3 > 0 ? VideoSample.dts - inputSamples[_i3 - 1].dts : averageSampleDuration; + ptsDelta = _i3 > 0 ? VideoSample.pts - inputSamples[_i3 - 1].pts : averageSampleDuration; + if (config.stretchShortVideoTrack && this.nextAudioPts !== null) { + // In some cases, a segment's audio track duration may exceed the video track duration. + // Since we've already remuxed audio, and we know how long the audio track is, we look to + // see if the delta to the next segment is longer than maxBufferHole. + // If so, playback would potentially get stuck, so we artificially inflate + // the duration of the last frame to minimize any potential gap between segments. + var gapTolerance = Math.floor(config.maxBufferHole * timeScale); + var deltaToFrameEnd = (audioTrackLength ? minPTS + audioTrackLength * timeScale : this.nextAudioPts) - VideoSample.pts; + if (deltaToFrameEnd > gapTolerance) { + // We subtract lastFrameDuration from deltaToFrameEnd to try to prevent any video + // frame overlap. maxBufferHole should be >> lastFrameDuration anyway. + mp4SampleDuration = deltaToFrameEnd - lastFrameDuration; + if (mp4SampleDuration < 0) { + mp4SampleDuration = lastFrameDuration; + } else { + stretchedLastFrame = true; + } + this.logger.log("[mp4-remuxer]: It is approximately " + deltaToFrameEnd / 90 + " ms to the next segment; using duration " + mp4SampleDuration / 90 + " ms for the last video frame."); + } else { + mp4SampleDuration = lastFrameDuration; + } + } else { + mp4SampleDuration = lastFrameDuration; + } + } + var compositionTimeOffset = Math.round(VideoSample.pts - VideoSample.dts); + minDtsDelta = Math.min(minDtsDelta, mp4SampleDuration); + maxDtsDelta = Math.max(maxDtsDelta, mp4SampleDuration); + minPtsDelta = Math.min(minPtsDelta, ptsDelta); + maxPtsDelta = Math.max(maxPtsDelta, ptsDelta); + outputSamples.push(new Mp4Sample(VideoSample.key, mp4SampleDuration, mp4SampleLength, compositionTimeOffset)); + } + if (outputSamples.length) { + if (chromeVersion) { + if (chromeVersion < 70) { + // Chrome workaround, mark first sample as being a Random Access Point (keyframe) to avoid sourcebuffer append issue + // https://code.google.com/p/chromium/issues/detail?id=229412 + var flags = outputSamples[0].flags; + flags.dependsOn = 2; + flags.isNonSync = 0; + } + } else if (safariWebkitVersion) { + // Fix for "CNN special report, with CC" in test-streams (Safari browser only) + // Ignore DTS when frame durations are irregular. Safari MSE does not handle this leading to gaps. + if (maxPtsDelta - minPtsDelta < maxDtsDelta - minDtsDelta && averageSampleDuration / maxDtsDelta < 0.025 && outputSamples[0].cts === 0) { + this.logger.warn('Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.'); + var dts = firstDTS; + for (var _i4 = 0, len = outputSamples.length; _i4 < len; _i4++) { + var nextDts = dts + outputSamples[_i4].duration; + var _pts = dts + outputSamples[_i4].cts; + if (_i4 < len - 1) { + var nextPts = nextDts + outputSamples[_i4 + 1].cts; + outputSamples[_i4].duration = nextPts - _pts; + } else { + outputSamples[_i4].duration = _i4 ? outputSamples[_i4 - 1].duration : averageSampleDuration; + } + outputSamples[_i4].cts = 0; + dts = nextDts; + } + } + } + } + // next AVC/HEVC sample DTS should be equal to last sample DTS + last sample duration (in PES timescale) + mp4SampleDuration = stretchedLastFrame || !mp4SampleDuration ? averageSampleDuration : mp4SampleDuration; + this.nextAvcDts = nextAvcDts = lastDTS + mp4SampleDuration; + this.videoSampleDuration = mp4SampleDuration; + this.isVideoContiguous = true; + var moof = MP4.moof(track.sequenceNumber++, firstDTS, _extends({}, track, { + samples: outputSamples + })); + var type = 'video'; + var data = { + data1: moof, + data2: mdat, + startPTS: minPTS / timeScale, + endPTS: (maxPTS + mp4SampleDuration) / timeScale, + startDTS: firstDTS / timeScale, + endDTS: nextAvcDts / timeScale, + type: type, + hasAudio: false, + hasVideo: true, + nb: outputSamples.length, + dropped: track.dropped + }; + track.samples = []; + track.dropped = 0; + return data; + }; + _proto.getSamplesPerFrame = function getSamplesPerFrame(track) { + switch (track.segmentCodec) { + case 'mp3': + return MPEG_AUDIO_SAMPLE_PER_FRAME; + case 'ac3': + return AC3_SAMPLES_PER_FRAME; + default: + return AAC_SAMPLES_PER_FRAME; + } + }; + _proto.remuxAudio = function remuxAudio(track, timeOffset, contiguous, accurateTimeOffset, videoTimeOffset) { + var inputTimeScale = track.inputTimeScale; + var mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale; + var scaleFactor = inputTimeScale / mp4timeScale; + var mp4SampleDuration = this.getSamplesPerFrame(track); + var inputSampleDuration = mp4SampleDuration * scaleFactor; + var initPTS = this._initPTS; + var rawMPEG = track.segmentCodec === 'mp3' && this.typeSupported.mpeg; + var outputSamples = []; + var alignedWithVideo = videoTimeOffset !== undefined; + var inputSamples = track.samples; + var offset = rawMPEG ? 0 : 8; + var nextAudioPts = this.nextAudioPts || -1; + + // window.audioSamples ? window.audioSamples.push(inputSamples.map(s => s.pts)) : (window.audioSamples = [inputSamples.map(s => s.pts)]); + + // for audio samples, also consider consecutive fragments as being contiguous (even if a level switch occurs), + // for sake of clarity: + // consecutive fragments are frags with + // - less than 100ms gaps between new time offset (if accurate) and next expected PTS OR + // - less than 20 audio frames distance + // contiguous fragments are consecutive fragments from same quality level (same level, new SN = old SN + 1) + // this helps ensuring audio continuity + // and this also avoids audio glitches/cut when switching quality, or reporting wrong duration on first audio frame + var timeOffsetMpegTS = timeOffset * inputTimeScale; + var initTime = initPTS.baseTime * inputTimeScale / initPTS.timescale; + this.isAudioContiguous = contiguous = contiguous || inputSamples.length && nextAudioPts > 0 && (accurateTimeOffset && Math.abs(timeOffsetMpegTS - nextAudioPts) < 9000 || Math.abs(normalizePts(inputSamples[0].pts - initTime, timeOffsetMpegTS) - nextAudioPts) < 20 * inputSampleDuration); + + // compute normalized PTS + inputSamples.forEach(function (sample) { + sample.pts = normalizePts(sample.pts - initTime, timeOffsetMpegTS); + }); + if (!contiguous || nextAudioPts < 0) { + // filter out sample with negative PTS that are not playable anyway + // if we don't remove these negative samples, they will shift all audio samples forward. + // leading to audio overlap between current / next fragment + inputSamples = inputSamples.filter(function (sample) { + return sample.pts >= 0; + }); + + // in case all samples have negative PTS, and have been filtered out, return now + if (!inputSamples.length) { + return; + } + if (videoTimeOffset === 0) { + // Set the start to 0 to match video so that start gaps larger than inputSampleDuration are filled with silence + nextAudioPts = 0; + } else if (accurateTimeOffset && !alignedWithVideo) { + // When not seeking, not live, and LevelDetails.PTSKnown, use fragment start as predicted next audio PTS + nextAudioPts = Math.max(0, timeOffsetMpegTS); + } else { + // if frags are not contiguous and if we cant trust time offset, let's use first sample PTS as next audio PTS + nextAudioPts = inputSamples[0].pts; + } + } + + // If the audio track is missing samples, the frames seem to get "left-shifted" within the + // resulting mp4 segment, causing sync issues and leaving gaps at the end of the audio segment. + // In an effort to prevent this from happening, we inject frames here where there are gaps. + // When possible, we inject a silent frame; when that's not possible, we duplicate the last + // frame. + + if (track.segmentCodec === 'aac') { + var maxAudioFramesDrift = this.config.maxAudioFramesDrift; + for (var i = 0, nextPts = nextAudioPts; i < inputSamples.length; i++) { + // First, let's see how far off this frame is from where we expect it to be + var sample = inputSamples[i]; + var pts = sample.pts; + var delta = pts - nextPts; + var duration = Math.abs(1000 * delta / inputTimeScale); + + // When remuxing with video, if we're overlapping by more than a duration, drop this sample to stay in sync + if (delta <= -maxAudioFramesDrift * inputSampleDuration && alignedWithVideo) { + if (i === 0) { + this.logger.warn("Audio frame @ " + (pts / inputTimeScale).toFixed(3) + "s overlaps nextAudioPts by " + Math.round(1000 * delta / inputTimeScale) + " ms."); + this.nextAudioPts = nextAudioPts = nextPts = pts; + } + } // eslint-disable-line brace-style + + // Insert missing frames if: + // 1: We're more than maxAudioFramesDrift frame away + // 2: Not more than MAX_SILENT_FRAME_DURATION away + // 3: currentTime (aka nextPtsNorm) is not 0 + // 4: remuxing with video (videoTimeOffset !== undefined) + else if (delta >= maxAudioFramesDrift * inputSampleDuration && duration < MAX_SILENT_FRAME_DURATION && alignedWithVideo) { + var missing = Math.round(delta / inputSampleDuration); + // Adjust nextPts so that silent samples are aligned with media pts. This will prevent media samples from + // later being shifted if nextPts is based on timeOffset and delta is not a multiple of inputSampleDuration. + nextPts = pts - missing * inputSampleDuration; + if (nextPts < 0) { + missing--; + nextPts += inputSampleDuration; + } + if (i === 0) { + this.nextAudioPts = nextAudioPts = nextPts; + } + this.logger.warn("[mp4-remuxer]: Injecting " + missing + " audio frame @ " + (nextPts / inputTimeScale).toFixed(3) + "s due to " + Math.round(1000 * delta / inputTimeScale) + " ms gap."); + for (var j = 0; j < missing; j++) { + var newStamp = Math.max(nextPts, 0); + var fillFrame = AAC.getSilentFrame(track.parsedCodec || track.manifestCodec || track.codec, track.channelCount); + if (!fillFrame) { + this.logger.log('[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead.'); + fillFrame = sample.unit.subarray(); + } + inputSamples.splice(i, 0, { + unit: fillFrame, + pts: newStamp + }); + nextPts += inputSampleDuration; + i++; + } + } + sample.pts = nextPts; + nextPts += inputSampleDuration; + } + } + var firstPTS = null; + var lastPTS = null; + var mdat; + var mdatSize = 0; + var sampleLength = inputSamples.length; + while (sampleLength--) { + mdatSize += inputSamples[sampleLength].unit.byteLength; + } + for (var _j2 = 0, _nbSamples = inputSamples.length; _j2 < _nbSamples; _j2++) { + var audioSample = inputSamples[_j2]; + var unit = audioSample.unit; + var _pts2 = audioSample.pts; + if (lastPTS !== null) { + // If we have more than one sample, set the duration of the sample to the "real" duration; the PTS diff with + // the previous sample + var prevSample = outputSamples[_j2 - 1]; + prevSample.duration = Math.round((_pts2 - lastPTS) / scaleFactor); + } else { + if (contiguous && track.segmentCodec === 'aac') { + // set PTS/DTS to expected PTS/DTS + _pts2 = nextAudioPts; + } + // remember first PTS of our audioSamples + firstPTS = _pts2; + if (mdatSize > 0) { + /* concatenate the audio data and construct the mdat in place + (need 8 more bytes to fill length and mdat type) */ + mdatSize += offset; + try { + mdat = new Uint8Array(mdatSize); + } catch (err) { + this.observer.emit(Events.ERROR, Events.ERROR, { + type: ErrorTypes.MUX_ERROR, + details: ErrorDetails.REMUX_ALLOC_ERROR, + fatal: false, + error: err, + bytes: mdatSize, + reason: "fail allocating audio mdat " + mdatSize + }); + return; + } + if (!rawMPEG) { + var view = new DataView(mdat.buffer); + view.setUint32(0, mdatSize); + mdat.set(MP4.types.mdat, 4); + } + } else { + // no audio samples + return; + } + } + mdat.set(unit, offset); + var unitLen = unit.byteLength; + offset += unitLen; + // Default the sample's duration to the computed mp4SampleDuration, which will either be 1024 for AAC or 1152 for MPEG + // In the case that we have 1 sample, this will be the duration. If we have more than one sample, the duration + // becomes the PTS diff with the previous sample + outputSamples.push(new Mp4Sample(true, mp4SampleDuration, unitLen, 0)); + lastPTS = _pts2; + } + + // We could end up with no audio samples if all input samples were overlapping with the previously remuxed ones + var nbSamples = outputSamples.length; + if (!nbSamples) { + return; + } + + // The next audio sample PTS should be equal to last sample PTS + duration + var lastSample = outputSamples[outputSamples.length - 1]; + this.nextAudioPts = nextAudioPts = lastPTS + scaleFactor * lastSample.duration; + + // Set the track samples from inputSamples to outputSamples before remuxing + var moof = rawMPEG ? new Uint8Array(0) : MP4.moof(track.sequenceNumber++, firstPTS / scaleFactor, _extends({}, track, { + samples: outputSamples + })); + + // Clear the track samples. This also clears the samples array in the demuxer, since the reference is shared + track.samples = []; + var start = firstPTS / inputTimeScale; + var end = nextAudioPts / inputTimeScale; + var type = 'audio'; + var audioData = { + data1: moof, + data2: mdat, + startPTS: start, + endPTS: end, + startDTS: start, + endDTS: end, + type: type, + hasAudio: true, + hasVideo: false, + nb: nbSamples + }; + this.isAudioContiguous = true; + return audioData; + }; + return MP4Remuxer; + }(); + function normalizePts(value, reference) { + var offset; + if (reference === null) { + return value; + } + if (reference < value) { + // - 2^33 + offset = -8589934592; + } else { + // + 2^33 + offset = 8589934592; + } + /* PTS is 33bit (from 0 to 2^33 -1) + if diff between value and reference is bigger than half of the amplitude (2^32) then it means that + PTS looping occured. fill the gap */ + while (Math.abs(value - reference) > 4294967296) { + value += offset; + } + return value; + } + function findKeyframeIndex(samples) { + for (var i = 0; i < samples.length; i++) { + if (samples[i].key) { + return i; + } + } + return -1; + } + function flushTextTrackMetadataCueSamples(track, timeOffset, initPTS, initDTS) { + var length = track.samples.length; + if (!length) { + return; + } + var inputTimeScale = track.inputTimeScale; + for (var index = 0; index < length; index++) { + var sample = track.samples[index]; + // setting id3 pts, dts to relative time + // using this._initPTS and this._initDTS to calculate relative time + sample.pts = normalizePts(sample.pts - initPTS.baseTime * inputTimeScale / initPTS.timescale, timeOffset * inputTimeScale) / inputTimeScale; + sample.dts = normalizePts(sample.dts - initDTS.baseTime * inputTimeScale / initDTS.timescale, timeOffset * inputTimeScale) / inputTimeScale; + } + var samples = track.samples; + track.samples = []; + return { + samples: samples + }; + } + function flushTextTrackUserdataCueSamples(track, timeOffset, initPTS) { + var length = track.samples.length; + if (!length) { + return; + } + var inputTimeScale = track.inputTimeScale; + for (var index = 0; index < length; index++) { + var sample = track.samples[index]; + // setting text pts, dts to relative time + // using this._initPTS and this._initDTS to calculate relative time + sample.pts = normalizePts(sample.pts - initPTS.baseTime * inputTimeScale / initPTS.timescale, timeOffset * inputTimeScale) / inputTimeScale; + } + track.samples.sort(function (a, b) { + return a.pts - b.pts; + }); + var samples = track.samples; + track.samples = []; + return { + samples: samples + }; + } + var Mp4Sample = function Mp4Sample(isKeyframe, duration, size, cts) { + this.size = void 0; + this.duration = void 0; + this.cts = void 0; + this.flags = void 0; + this.duration = duration; + this.size = size; + this.cts = cts; + this.flags = { + isLeading: 0, + isDependedOn: 0, + hasRedundancy: 0, + degradPrio: 0, + dependsOn: isKeyframe ? 2 : 1, + isNonSync: isKeyframe ? 0 : 1 + }; + }; + + var PassThroughRemuxer = /*#__PURE__*/function () { + function PassThroughRemuxer(observer, config, typeSupported, logger) { + this.logger = void 0; + this.emitInitSegment = false; + this.audioCodec = void 0; + this.videoCodec = void 0; + this.initData = void 0; + this.initPTS = null; + this.initTracks = void 0; + this.lastEndTime = null; + this.logger = logger; + } + var _proto = PassThroughRemuxer.prototype; + _proto.destroy = function destroy() {}; + _proto.resetTimeStamp = function resetTimeStamp(defaultInitPTS) { + this.initPTS = defaultInitPTS; + this.lastEndTime = null; + }; + _proto.resetNextTimestamp = function resetNextTimestamp() { + this.lastEndTime = null; + }; + _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, decryptdata) { + this.audioCodec = audioCodec; + this.videoCodec = videoCodec; + this.generateInitSegment(patchEncyptionData(initSegment, decryptdata)); + this.emitInitSegment = true; + }; + _proto.generateInitSegment = function generateInitSegment(initSegment) { + var audioCodec = this.audioCodec, + videoCodec = this.videoCodec; + if (!(initSegment != null && initSegment.byteLength)) { + this.initTracks = undefined; + this.initData = undefined; + return; + } + var initData = this.initData = parseInitSegment(initSegment); + + // Get codec from initSegment or fallback to default + if (initData.audio) { + audioCodec = getParsedTrackCodec(initData.audio, ElementaryStreamTypes.AUDIO); + } + if (initData.video) { + videoCodec = getParsedTrackCodec(initData.video, ElementaryStreamTypes.VIDEO); + } + var tracks = {}; + if (initData.audio && initData.video) { + tracks.audiovideo = { + container: 'video/mp4', + codec: audioCodec + ',' + videoCodec, + initSegment: initSegment, + id: 'main' + }; + } else if (initData.audio) { + tracks.audio = { + container: 'audio/mp4', + codec: audioCodec, + initSegment: initSegment, + id: 'audio' + }; + } else if (initData.video) { + tracks.video = { + container: 'video/mp4', + codec: videoCodec, + initSegment: initSegment, + id: 'main' + }; + } else { + this.logger.warn('[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes.'); + } + this.initTracks = tracks; + }; + _proto.remux = function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset) { + var _initData, _initData2; + var initPTS = this.initPTS, + lastEndTime = this.lastEndTime; + var result = { + audio: undefined, + video: undefined, + text: textTrack, + id3: id3Track, + initSegment: undefined + }; + + // If we haven't yet set a lastEndDTS, or it was reset, set it to the provided timeOffset. We want to use the + // lastEndDTS over timeOffset whenever possible; during progressive playback, the media source will not update + // the media duration (which is what timeOffset is provided as) before we need to process the next chunk. + if (!isFiniteNumber(lastEndTime)) { + lastEndTime = this.lastEndTime = timeOffset || 0; + } + + // The binary segment data is added to the videoTrack in the mp4demuxer. We don't check to see if the data is only + // audio or video (or both); adding it to video was an arbitrary choice. + var data = videoTrack.samples; + if (!(data != null && data.length)) { + return result; + } + var initSegment = { + initPTS: undefined, + timescale: 1 + }; + var initData = this.initData; + if (!((_initData = initData) != null && _initData.length)) { + this.generateInitSegment(data); + initData = this.initData; + } + if (!((_initData2 = initData) != null && _initData2.length)) { + // We can't remux if the initSegment could not be generated + this.logger.warn('[passthrough-remuxer.ts]: Failed to generate initSegment.'); + return result; + } + if (this.emitInitSegment) { + initSegment.tracks = this.initTracks; + this.emitInitSegment = false; + } + var duration = getDuration(data, initData); + var startDTS = getStartDTS(initData, data); + var decodeTime = startDTS === null ? timeOffset : startDTS; + if (isInvalidInitPts(initPTS, decodeTime, timeOffset, duration) || initSegment.timescale !== initPTS.timescale && accurateTimeOffset) { + initSegment.initPTS = decodeTime - timeOffset; + if (initPTS && initPTS.timescale === 1) { + this.logger.warn("Adjusting initPTS @" + timeOffset + " from " + initPTS.baseTime / initPTS.timescale + " to " + initSegment.initPTS); + } + this.initPTS = initPTS = { + baseTime: initSegment.initPTS, + timescale: 1 + }; + } + var startTime = audioTrack ? decodeTime - initPTS.baseTime / initPTS.timescale : lastEndTime; + var endTime = startTime + duration; + offsetStartDTS(initData, data, initPTS.baseTime / initPTS.timescale); + if (duration > 0) { + this.lastEndTime = endTime; + } else { + this.logger.warn('Duration parsed from mp4 should be greater than zero'); + this.resetNextTimestamp(); + } + var hasAudio = !!initData.audio; + var hasVideo = !!initData.video; + var type = ''; + if (hasAudio) { + type += 'audio'; + } + if (hasVideo) { + type += 'video'; + } + var track = { + data1: data, + startPTS: startTime, + startDTS: startTime, + endPTS: endTime, + endDTS: endTime, + type: type, + hasAudio: hasAudio, + hasVideo: hasVideo, + nb: 1, + dropped: 0 + }; + result.audio = track.type === 'audio' ? track : undefined; + result.video = track.type !== 'audio' ? track : undefined; + result.initSegment = initSegment; + result.id3 = flushTextTrackMetadataCueSamples(id3Track, timeOffset, initPTS, initPTS); + if (textTrack.samples.length) { + result.text = flushTextTrackUserdataCueSamples(textTrack, timeOffset, initPTS); + } + return result; + }; + return PassThroughRemuxer; + }(); + function isInvalidInitPts(initPTS, startDTS, timeOffset, duration) { + if (initPTS === null) { + return true; + } + // InitPTS is invalid when distance from program would be more than segment duration or a minimum of one second + var minDuration = Math.max(duration, 1); + var startTime = startDTS - initPTS.baseTime / initPTS.timescale; + return Math.abs(startTime - timeOffset) > minDuration; + } + function getParsedTrackCodec(track, type) { + var parsedCodec = track == null ? void 0 : track.codec; + if (parsedCodec && parsedCodec.length > 4) { + return parsedCodec; + } + if (type === ElementaryStreamTypes.AUDIO) { + if (parsedCodec === 'ec-3' || parsedCodec === 'ac-3' || parsedCodec === 'alac') { + return parsedCodec; + } + if (parsedCodec === 'fLaC' || parsedCodec === 'Opus') { + // Opting not to get `preferManagedMediaSource` from player config for isSupported() check for simplicity + var preferManagedMediaSource = false; + return getCodecCompatibleName(parsedCodec, preferManagedMediaSource); + } + var result = 'mp4a.40.5'; + this.logger.info("Parsed audio codec \"" + parsedCodec + "\" or audio object type not handled. Using \"" + result + "\""); + return result; + } + // Provide defaults based on codec type + // This allows for some playback of some fmp4 playlists without CODECS defined in manifest + this.logger.warn("Unhandled video codec \"" + parsedCodec + "\""); + if (parsedCodec === 'hvc1' || parsedCodec === 'hev1') { + return 'hvc1.1.6.L120.90'; + } + if (parsedCodec === 'av01') { + return 'av01.0.04M.08'; + } + return 'avc1.42e01e'; + } + + var now; + // performance.now() not available on WebWorker, at least on Safari Desktop + try { + now = self.performance.now.bind(self.performance); + } catch (err) { + now = Date.now; + } + var muxConfig = [{ + demux: MP4Demuxer, + remux: PassThroughRemuxer + }, { + demux: TSDemuxer, + remux: MP4Remuxer + }, { + demux: AACDemuxer, + remux: MP4Remuxer + }, { + demux: MP3Demuxer, + remux: MP4Remuxer + }]; + { + muxConfig.splice(2, 0, { + demux: AC3Demuxer, + remux: MP4Remuxer + }); + } + var Transmuxer = /*#__PURE__*/function () { + function Transmuxer(observer, typeSupported, config, vendor, id, logger) { + this.asyncResult = false; + this.logger = void 0; + this.observer = void 0; + this.typeSupported = void 0; + this.config = void 0; + this.id = void 0; + this.demuxer = void 0; + this.remuxer = void 0; + this.decrypter = void 0; + this.probe = void 0; + this.decryptionPromise = null; + this.transmuxConfig = void 0; + this.currentTransmuxState = void 0; + this.observer = observer; + this.typeSupported = typeSupported; + this.config = config; + this.id = id; + this.logger = logger; + } + var _proto = Transmuxer.prototype; + _proto.configure = function configure(transmuxConfig) { + this.transmuxConfig = transmuxConfig; + if (this.decrypter) { + this.decrypter.reset(); + } + }; + _proto.push = function push(data, decryptdata, chunkMeta, state) { + var _this = this; + var stats = chunkMeta.transmuxing; + stats.executeStart = now(); + var uintData = new Uint8Array(data); + var currentTransmuxState = this.currentTransmuxState, + transmuxConfig = this.transmuxConfig; + if (state) { + this.currentTransmuxState = state; + } + var _ref = state || currentTransmuxState, + contiguous = _ref.contiguous, + discontinuity = _ref.discontinuity, + trackSwitch = _ref.trackSwitch, + accurateTimeOffset = _ref.accurateTimeOffset, + timeOffset = _ref.timeOffset, + initSegmentChange = _ref.initSegmentChange; + var audioCodec = transmuxConfig.audioCodec, + videoCodec = transmuxConfig.videoCodec, + defaultInitPts = transmuxConfig.defaultInitPts, + duration = transmuxConfig.duration, + initSegmentData = transmuxConfig.initSegmentData; + var keyData = getEncryptionType(uintData, decryptdata); + if (keyData && isFullSegmentEncryption(keyData.method)) { + var decrypter = this.getDecrypter(); + var aesMode = getAesModeFromFullSegmentMethod(keyData.method); + + // Software decryption is synchronous; webCrypto is not + if (decrypter.isSync()) { + // Software decryption is progressive. Progressive decryption may not return a result on each call. Any cached + // data is handled in the flush() call + var decryptedData = decrypter.softwareDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer, aesMode); + // For Low-Latency HLS Parts, decrypt in place, since part parsing is expected on push progress + var loadingParts = chunkMeta.part > -1; + if (loadingParts) { + decryptedData = decrypter.flush(); + } + if (!decryptedData) { + stats.executeEnd = now(); + return emptyResult(chunkMeta); + } + uintData = new Uint8Array(decryptedData); + } else { + this.asyncResult = true; + this.decryptionPromise = decrypter.webCryptoDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer, aesMode).then(function (decryptedData) { + // Calling push here is important; if flush() is called while this is still resolving, this ensures that + // the decrypted data has been transmuxed + var result = _this.push(decryptedData, null, chunkMeta); + _this.decryptionPromise = null; + return result; + }); + return this.decryptionPromise; + } + } + var resetMuxers = this.needsProbing(discontinuity, trackSwitch); + if (resetMuxers) { + var error = this.configureTransmuxer(uintData); + if (error) { + this.logger.warn("[transmuxer] " + error.message); + this.observer.emit(Events.ERROR, Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.FRAG_PARSING_ERROR, + fatal: false, + error: error, + reason: error.message + }); + stats.executeEnd = now(); + return emptyResult(chunkMeta); + } + } + if (discontinuity || trackSwitch || initSegmentChange || resetMuxers) { + this.resetInitSegment(initSegmentData, audioCodec, videoCodec, duration, decryptdata); + } + if (discontinuity || initSegmentChange || resetMuxers) { + this.resetInitialTimestamp(defaultInitPts); + } + if (!contiguous) { + this.resetContiguity(); + } + var result = this.transmux(uintData, keyData, timeOffset, accurateTimeOffset, chunkMeta); + this.asyncResult = isPromise(result); + var currentState = this.currentTransmuxState; + currentState.contiguous = true; + currentState.discontinuity = false; + currentState.trackSwitch = false; + stats.executeEnd = now(); + return result; + } + + // Due to data caching, flush calls can produce more than one TransmuxerResult (hence the Array type) + ; + _proto.flush = function flush(chunkMeta) { + var _this2 = this; + var stats = chunkMeta.transmuxing; + stats.executeStart = now(); + var decrypter = this.decrypter, + currentTransmuxState = this.currentTransmuxState, + decryptionPromise = this.decryptionPromise; + if (decryptionPromise) { + this.asyncResult = true; + // Upon resolution, the decryption promise calls push() and returns its TransmuxerResult up the stack. Therefore + // only flushing is required for async decryption + return decryptionPromise.then(function () { + return _this2.flush(chunkMeta); + }); + } + var transmuxResults = []; + var timeOffset = currentTransmuxState.timeOffset; + if (decrypter) { + // The decrypter may have data cached, which needs to be demuxed. In this case we'll have two TransmuxResults + // This happens in the case that we receive only 1 push call for a segment (either for non-progressive downloads, + // or for progressive downloads with small segments) + var decryptedData = decrypter.flush(); + if (decryptedData) { + // Push always returns a TransmuxerResult if decryptdata is null + transmuxResults.push(this.push(decryptedData, null, chunkMeta)); + } + } + var demuxer = this.demuxer, + remuxer = this.remuxer; + if (!demuxer || !remuxer) { + // If probing failed, then Hls.js has been given content its not able to handle + stats.executeEnd = now(); + var emptyResults = [emptyResult(chunkMeta)]; + if (this.asyncResult) { + return Promise.resolve(emptyResults); + } + return emptyResults; + } + var demuxResultOrPromise = demuxer.flush(timeOffset); + if (isPromise(demuxResultOrPromise)) { + this.asyncResult = true; + // Decrypt final SAMPLE-AES samples + return demuxResultOrPromise.then(function (demuxResult) { + _this2.flushRemux(transmuxResults, demuxResult, chunkMeta); + return transmuxResults; + }); + } + this.flushRemux(transmuxResults, demuxResultOrPromise, chunkMeta); + if (this.asyncResult) { + return Promise.resolve(transmuxResults); + } + return transmuxResults; + }; + _proto.flushRemux = function flushRemux(transmuxResults, demuxResult, chunkMeta) { + var audioTrack = demuxResult.audioTrack, + videoTrack = demuxResult.videoTrack, + id3Track = demuxResult.id3Track, + textTrack = demuxResult.textTrack; + var _this$currentTransmux = this.currentTransmuxState, + accurateTimeOffset = _this$currentTransmux.accurateTimeOffset, + timeOffset = _this$currentTransmux.timeOffset; + this.logger.log("[transmuxer.ts]: Flushed " + this.id + " sn: " + chunkMeta.sn + (chunkMeta.part > -1 ? ' p: ' + chunkMeta.part : '') + " of " + (this.id === PlaylistLevelType.MAIN ? 'level' : 'track') + " " + chunkMeta.level); + var remuxResult = this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, true, this.id); + transmuxResults.push({ + remuxResult: remuxResult, + chunkMeta: chunkMeta + }); + chunkMeta.transmuxing.executeEnd = now(); + }; + _proto.resetInitialTimestamp = function resetInitialTimestamp(defaultInitPts) { + var demuxer = this.demuxer, + remuxer = this.remuxer; + if (!demuxer || !remuxer) { + return; + } + demuxer.resetTimeStamp(defaultInitPts); + remuxer.resetTimeStamp(defaultInitPts); + }; + _proto.resetContiguity = function resetContiguity() { + var demuxer = this.demuxer, + remuxer = this.remuxer; + if (!demuxer || !remuxer) { + return; + } + demuxer.resetContiguity(); + remuxer.resetNextTimestamp(); + }; + _proto.resetInitSegment = function resetInitSegment(initSegmentData, audioCodec, videoCodec, trackDuration, decryptdata) { + var demuxer = this.demuxer, + remuxer = this.remuxer; + if (!demuxer || !remuxer) { + return; + } + demuxer.resetInitSegment(initSegmentData, audioCodec, videoCodec, trackDuration); + remuxer.resetInitSegment(initSegmentData, audioCodec, videoCodec, decryptdata); + }; + _proto.destroy = function destroy() { + if (this.demuxer) { + this.demuxer.destroy(); + this.demuxer = undefined; + } + if (this.remuxer) { + this.remuxer.destroy(); + this.remuxer = undefined; + } + }; + _proto.transmux = function transmux(data, keyData, timeOffset, accurateTimeOffset, chunkMeta) { + var result; + if (keyData && keyData.method === 'SAMPLE-AES') { + result = this.transmuxSampleAes(data, keyData, timeOffset, accurateTimeOffset, chunkMeta); + } else { + result = this.transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta); + } + return result; + }; + _proto.transmuxUnencrypted = function transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta) { + var _demux = this.demuxer.demux(data, timeOffset, false, !this.config.progressive), + audioTrack = _demux.audioTrack, + videoTrack = _demux.videoTrack, + id3Track = _demux.id3Track, + textTrack = _demux.textTrack; + var remuxResult = this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, false, this.id); + return { + remuxResult: remuxResult, + chunkMeta: chunkMeta + }; + }; + _proto.transmuxSampleAes = function transmuxSampleAes(data, decryptData, timeOffset, accurateTimeOffset, chunkMeta) { + var _this3 = this; + return this.demuxer.demuxSampleAes(data, decryptData, timeOffset).then(function (demuxResult) { + var remuxResult = _this3.remuxer.remux(demuxResult.audioTrack, demuxResult.videoTrack, demuxResult.id3Track, demuxResult.textTrack, timeOffset, accurateTimeOffset, false, _this3.id); + return { + remuxResult: remuxResult, + chunkMeta: chunkMeta + }; + }); + }; + _proto.configureTransmuxer = function configureTransmuxer(data) { + var config = this.config, + observer = this.observer, + typeSupported = this.typeSupported; + // probe for content type + var mux; + for (var i = 0, len = muxConfig.length; i < len; i++) { + var _muxConfig$i$demux; + if ((_muxConfig$i$demux = muxConfig[i].demux) != null && _muxConfig$i$demux.probe(data, this.logger)) { + mux = muxConfig[i]; + break; + } + } + if (!mux) { + return new Error('Failed to find demuxer by probing fragment data'); + } + // so let's check that current remuxer and demuxer are still valid + var demuxer = this.demuxer; + var remuxer = this.remuxer; + var Remuxer = mux.remux; + var Demuxer = mux.demux; + if (!remuxer || !(remuxer instanceof Remuxer)) { + this.remuxer = new Remuxer(observer, config, typeSupported, this.logger); + } + if (!demuxer || !(demuxer instanceof Demuxer)) { + this.demuxer = new Demuxer(observer, config, typeSupported, this.logger); + this.probe = Demuxer.probe; + } + }; + _proto.needsProbing = function needsProbing(discontinuity, trackSwitch) { + // in case of continuity change, or track switch + // we might switch from content type (AAC container to TS container, or TS to fmp4 for example) + return !this.demuxer || !this.remuxer || discontinuity || trackSwitch; + }; + _proto.getDecrypter = function getDecrypter() { + var decrypter = this.decrypter; + if (!decrypter) { + decrypter = this.decrypter = new Decrypter(this.config); + } + return decrypter; + }; + return Transmuxer; + }(); + function getEncryptionType(data, decryptData) { + var encryptionType = null; + if (data.byteLength > 0 && (decryptData == null ? void 0 : decryptData.key) != null && decryptData.iv !== null && decryptData.method != null) { + encryptionType = decryptData; + } + return encryptionType; + } + var emptyResult = function emptyResult(chunkMeta) { + return { + remuxResult: {}, + chunkMeta: chunkMeta + }; + }; + function isPromise(p) { + return 'then' in p && p.then instanceof Function; + } + var TransmuxConfig = function TransmuxConfig(audioCodec, videoCodec, initSegmentData, duration, defaultInitPts) { + this.audioCodec = void 0; + this.videoCodec = void 0; + this.initSegmentData = void 0; + this.duration = void 0; + this.defaultInitPts = void 0; + this.audioCodec = audioCodec; + this.videoCodec = videoCodec; + this.initSegmentData = initSegmentData; + this.duration = duration; + this.defaultInitPts = defaultInitPts || null; + }; + var TransmuxState = function TransmuxState(discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange) { + this.discontinuity = void 0; + this.contiguous = void 0; + this.accurateTimeOffset = void 0; + this.trackSwitch = void 0; + this.timeOffset = void 0; + this.initSegmentChange = void 0; + this.discontinuity = discontinuity; + this.contiguous = contiguous; + this.accurateTimeOffset = accurateTimeOffset; + this.trackSwitch = trackSwitch; + this.timeOffset = timeOffset; + this.initSegmentChange = initSegmentChange; + }; + + var eventemitter3 = {exports: {}}; + + (function (module) { + + var has = Object.prototype.hasOwnProperty + , prefix = '~'; + + /** + * Constructor to create a storage for our `EE` objects. + * An `Events` instance is a plain object whose properties are event names. + * + * @constructor + * @private + */ + function Events() {} + + // + // We try to not inherit from `Object.prototype`. In some engines creating an + // instance in this way is faster than calling `Object.create(null)` directly. + // If `Object.create(null)` is not supported we prefix the event names with a + // character to make sure that the built-in object properties are not + // overridden or used as an attack vector. + // + if (Object.create) { + Events.prototype = Object.create(null); + + // + // This hack is needed because the `__proto__` property is still inherited in + // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5. + // + if (!new Events().__proto__) prefix = false; + } + + /** + * Representation of a single event listener. + * + * @param {Function} fn The listener function. + * @param {*} context The context to invoke the listener with. + * @param {Boolean} [once=false] Specify if the listener is a one-time listener. + * @constructor + * @private + */ + function EE(fn, context, once) { + this.fn = fn; + this.context = context; + this.once = once || false; + } + + /** + * Add a listener for a given event. + * + * @param {EventEmitter} emitter Reference to the `EventEmitter` instance. + * @param {(String|Symbol)} event The event name. + * @param {Function} fn The listener function. + * @param {*} context The context to invoke the listener with. + * @param {Boolean} once Specify if the listener is a one-time listener. + * @returns {EventEmitter} + * @private + */ + function addListener(emitter, event, fn, context, once) { + if (typeof fn !== 'function') { + throw new TypeError('The listener must be a function'); + } + + var listener = new EE(fn, context || emitter, once) + , evt = prefix ? prefix + event : event; + + if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++; + else if (!emitter._events[evt].fn) emitter._events[evt].push(listener); + else emitter._events[evt] = [emitter._events[evt], listener]; + + return emitter; + } + + /** + * Clear event by name. + * + * @param {EventEmitter} emitter Reference to the `EventEmitter` instance. + * @param {(String|Symbol)} evt The Event name. + * @private + */ + function clearEvent(emitter, evt) { + if (--emitter._eventsCount === 0) emitter._events = new Events(); + else delete emitter._events[evt]; + } + + /** + * Minimal `EventEmitter` interface that is molded against the Node.js + * `EventEmitter` interface. + * + * @constructor + * @public + */ + function EventEmitter() { + this._events = new Events(); + this._eventsCount = 0; + } + + /** + * Return an array listing the events for which the emitter has registered + * listeners. + * + * @returns {Array} + * @public + */ + EventEmitter.prototype.eventNames = function eventNames() { + var names = [] + , events + , name; + + if (this._eventsCount === 0) return names; + + for (name in (events = this._events)) { + if (has.call(events, name)) names.push(prefix ? name.slice(1) : name); + } + + if (Object.getOwnPropertySymbols) { + return names.concat(Object.getOwnPropertySymbols(events)); + } + + return names; + }; + + /** + * Return the listeners registered for a given event. + * + * @param {(String|Symbol)} event The event name. + * @returns {Array} The registered listeners. + * @public + */ + EventEmitter.prototype.listeners = function listeners(event) { + var evt = prefix ? prefix + event : event + , handlers = this._events[evt]; + + if (!handlers) return []; + if (handlers.fn) return [handlers.fn]; + + for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) { + ee[i] = handlers[i].fn; + } + + return ee; + }; + + /** + * Return the number of listeners listening to a given event. + * + * @param {(String|Symbol)} event The event name. + * @returns {Number} The number of listeners. + * @public + */ + EventEmitter.prototype.listenerCount = function listenerCount(event) { + var evt = prefix ? prefix + event : event + , listeners = this._events[evt]; + + if (!listeners) return 0; + if (listeners.fn) return 1; + return listeners.length; + }; + + /** + * Calls each of the listeners registered for a given event. + * + * @param {(String|Symbol)} event The event name. + * @returns {Boolean} `true` if the event had listeners, else `false`. + * @public + */ + EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) { + var evt = prefix ? prefix + event : event; + + if (!this._events[evt]) return false; + + var listeners = this._events[evt] + , len = arguments.length + , args + , i; + + if (listeners.fn) { + if (listeners.once) this.removeListener(event, listeners.fn, undefined, true); + + switch (len) { + case 1: return listeners.fn.call(listeners.context), true; + case 2: return listeners.fn.call(listeners.context, a1), true; + case 3: return listeners.fn.call(listeners.context, a1, a2), true; + case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true; + case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true; + case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true; + } + + for (i = 1, args = new Array(len -1); i < len; i++) { + args[i - 1] = arguments[i]; + } + + listeners.fn.apply(listeners.context, args); + } else { + var length = listeners.length + , j; + + for (i = 0; i < length; i++) { + if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true); + + switch (len) { + case 1: listeners[i].fn.call(listeners[i].context); break; + case 2: listeners[i].fn.call(listeners[i].context, a1); break; + case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break; + case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break; + default: + if (!args) for (j = 1, args = new Array(len -1); j < len; j++) { + args[j - 1] = arguments[j]; + } + + listeners[i].fn.apply(listeners[i].context, args); + } + } + } + + return true; + }; + + /** + * Add a listener for a given event. + * + * @param {(String|Symbol)} event The event name. + * @param {Function} fn The listener function. + * @param {*} [context=this] The context to invoke the listener with. + * @returns {EventEmitter} `this`. + * @public + */ + EventEmitter.prototype.on = function on(event, fn, context) { + return addListener(this, event, fn, context, false); + }; + + /** + * Add a one-time listener for a given event. + * + * @param {(String|Symbol)} event The event name. + * @param {Function} fn The listener function. + * @param {*} [context=this] The context to invoke the listener with. + * @returns {EventEmitter} `this`. + * @public + */ + EventEmitter.prototype.once = function once(event, fn, context) { + return addListener(this, event, fn, context, true); + }; + + /** + * Remove the listeners of a given event. + * + * @param {(String|Symbol)} event The event name. + * @param {Function} fn Only remove the listeners that match this function. + * @param {*} context Only remove the listeners that have this context. + * @param {Boolean} once Only remove one-time listeners. + * @returns {EventEmitter} `this`. + * @public + */ + EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) { + var evt = prefix ? prefix + event : event; + + if (!this._events[evt]) return this; + if (!fn) { + clearEvent(this, evt); + return this; + } + + var listeners = this._events[evt]; + + if (listeners.fn) { + if ( + listeners.fn === fn && + (!once || listeners.once) && + (!context || listeners.context === context) + ) { + clearEvent(this, evt); + } + } else { + for (var i = 0, events = [], length = listeners.length; i < length; i++) { + if ( + listeners[i].fn !== fn || + (once && !listeners[i].once) || + (context && listeners[i].context !== context) + ) { + events.push(listeners[i]); + } + } + + // + // Reset the array, or remove it completely if we have no more listeners. + // + if (events.length) this._events[evt] = events.length === 1 ? events[0] : events; + else clearEvent(this, evt); + } + + return this; + }; + + /** + * Remove all listeners, or those of the specified event. + * + * @param {(String|Symbol)} [event] The event name. + * @returns {EventEmitter} `this`. + * @public + */ + EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) { + var evt; + + if (event) { + evt = prefix ? prefix + event : event; + if (this._events[evt]) clearEvent(this, evt); + } else { + this._events = new Events(); + this._eventsCount = 0; + } + + return this; + }; + + // + // Alias methods names because people roll like that. + // + EventEmitter.prototype.off = EventEmitter.prototype.removeListener; + EventEmitter.prototype.addListener = EventEmitter.prototype.on; + + // + // Expose the prefix. + // + EventEmitter.prefixed = prefix; + + // + // Allow `EventEmitter` to be imported as module namespace. + // + EventEmitter.EventEmitter = EventEmitter; + + // + // Expose the module. + // + { + module.exports = EventEmitter; + } + } (eventemitter3)); + + var eventemitter3Exports = eventemitter3.exports; + var EventEmitter = /*@__PURE__*/getDefaultExportFromCjs(eventemitter3Exports); + + var transmuxers = []; + if (typeof __IN_WORKER__ !== 'undefined' && __IN_WORKER__) { + startWorker(); + } + function startWorker() { + self.addEventListener('message', function (ev) { + var data = ev.data; + var instanceNo = data.instanceNo; + if (instanceNo === undefined) { + return; + } + var transmuxer = transmuxers[instanceNo]; + if (data.cmd === 'reset') { + delete transmuxers[data.resetNo]; + if (transmuxer) { + transmuxer.destroy(); + } + data.cmd = 'init'; + } + if (data.cmd === 'init') { + var config = JSON.parse(data.config); + var observer = new EventEmitter(); + observer.on(Events.FRAG_DECRYPTED, forwardMessage); + observer.on(Events.ERROR, forwardMessage); + var logger = enableLogs(config.debug, data.id); + forwardWorkerLogs(logger, instanceNo); + transmuxers[instanceNo] = new Transmuxer(observer, data.typeSupported, config, '', data.id, logger); + forwardMessage('init', null, instanceNo); + return; + } + if (!transmuxer) { + return; + } + switch (data.cmd) { + case 'configure': + { + transmuxer.configure(data.config); + break; + } + case 'demux': + { + var transmuxResult = transmuxer.push(data.data, data.decryptdata, data.chunkMeta, data.state); + if (isPromise(transmuxResult)) { + transmuxResult.then(function (data) { + emitTransmuxComplete(self, data, instanceNo); + }).catch(function (error) { + forwardMessage(Events.ERROR, { + instanceNo: instanceNo, + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.FRAG_PARSING_ERROR, + chunkMeta: data.chunkMeta, + fatal: false, + error: error, + err: error, + reason: "transmuxer-worker push error" + }, instanceNo); + }); + } else { + emitTransmuxComplete(self, transmuxResult, instanceNo); + } + break; + } + case 'flush': + { + var chunkMeta = data.chunkMeta; + var _transmuxResult = transmuxer.flush(chunkMeta); + if (isPromise(_transmuxResult)) { + _transmuxResult.then(function (results) { + handleFlushResult(self, results, chunkMeta, instanceNo); + }).catch(function (error) { + forwardMessage(Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.FRAG_PARSING_ERROR, + chunkMeta: data.chunkMeta, + fatal: false, + error: error, + err: error, + reason: "transmuxer-worker flush error" + }, instanceNo); + }); + } else { + handleFlushResult(self, _transmuxResult, chunkMeta, instanceNo); + } + break; + } + } + }); + } + function emitTransmuxComplete(self, transmuxResult, instanceNo) { + if (isEmptyResult(transmuxResult.remuxResult)) { + return false; + } + var transferable = []; + var _transmuxResult$remux = transmuxResult.remuxResult, + audio = _transmuxResult$remux.audio, + video = _transmuxResult$remux.video; + if (audio) { + addToTransferable(transferable, audio); + } + if (video) { + addToTransferable(transferable, video); + } + self.postMessage({ + event: 'transmuxComplete', + data: transmuxResult, + instanceNo: instanceNo + }, transferable); + return true; + } + + // Converts data to a transferable object https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast) + // in order to minimize message passing overhead + function addToTransferable(transferable, track) { + if (track.data1) { + transferable.push(track.data1.buffer); + } + if (track.data2) { + transferable.push(track.data2.buffer); + } + } + function handleFlushResult(self, results, chunkMeta, instanceNo) { + var parsed = results.reduce(function (parsed, result) { + return emitTransmuxComplete(self, result, instanceNo) || parsed; + }, false); + if (!parsed) { + // Emit at least one "transmuxComplete" message even if media is not found to update stream-controller state to PARSING + self.postMessage({ + event: 'transmuxComplete', + data: results[0], + instanceNo: instanceNo + }); + } + self.postMessage({ + event: 'flush', + data: chunkMeta, + instanceNo: instanceNo + }); + } + function forwardMessage(event, data, instanceNo) { + self.postMessage({ + event: event, + data: data, + instanceNo: instanceNo + }); + } + function forwardWorkerLogs(logger, instanceNo) { + var _loop = function _loop(logFn) { + var func = function func(message) { + forwardMessage('workerLog', { + logType: logFn, + message: message + }, instanceNo); + }; + logger[logFn] = func; + }; + for (var logFn in logger) { + _loop(logFn); + } + } + function isEmptyResult(remuxResult) { + return !remuxResult.audio && !remuxResult.video && !remuxResult.text && !remuxResult.id3 && !remuxResult.initSegment; + } + + var version = undefined; + + // ensure the worker ends up in the bundle + // If the worker should not be included this gets aliased to empty.js + var workerStore = {}; + function hasUMDWorker() { + return typeof __HLS_WORKER_BUNDLE__ === 'function'; + } + function injectWorker() { + var workerContext = workerStore[version]; + if (workerContext) { + workerContext.clientCount++; + return workerContext; + } + var blob = new self.Blob(["var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(" + __HLS_WORKER_BUNDLE__.toString() + ")(true);"], { + type: 'text/javascript' + }); + var objectURL = self.URL.createObjectURL(blob); + var worker = new self.Worker(objectURL); + var result = { + worker: worker, + objectURL: objectURL, + clientCount: 1 + }; + workerStore[version] = result; + return result; + } + function loadWorker(path) { + var workerContext = workerStore[path]; + if (workerContext) { + workerContext.clientCount++; + return workerContext; + } + var scriptURL = new self.URL(path, self.location.href).href; + var worker = new self.Worker(scriptURL); + var result = { + worker: worker, + scriptURL: scriptURL, + clientCount: 1 + }; + workerStore[path] = result; + return result; + } + function removeWorkerFromStore(path) { + var workerContext = workerStore[path || version]; + if (workerContext) { + var clientCount = workerContext.clientCount--; + if (clientCount === 1) { + var worker = workerContext.worker, + objectURL = workerContext.objectURL; + delete workerStore[path || version]; + if (objectURL) { + // revoke the Object URL that was used to create transmuxer worker, so as not to leak it + self.URL.revokeObjectURL(objectURL); + } + worker.terminate(); + } + } + } + + var transmuxerInstanceCount = 0; + var TransmuxerInterface = /*#__PURE__*/function () { + function TransmuxerInterface(_hls, id, onTransmuxComplete, onFlush) { + var _this = this; + this.error = null; + this.hls = void 0; + this.id = void 0; + this.instanceNo = transmuxerInstanceCount++; + this.observer = void 0; + this.frag = null; + this.part = null; + this.useWorker = void 0; + this.workerContext = null; + this.transmuxer = null; + this.onTransmuxComplete = void 0; + this.onFlush = void 0; + this.onWorkerMessage = function (event) { + var data = event.data; + var hls = _this.hls; + if (!hls || !(data != null && data.event) || data.instanceNo !== _this.instanceNo) { + return; + } + switch (data.event) { + case 'init': + { + var _this$workerContext; + var objectURL = (_this$workerContext = _this.workerContext) == null ? void 0 : _this$workerContext.objectURL; + if (objectURL) { + // revoke the Object URL that was used to create transmuxer worker, so as not to leak it + self.URL.revokeObjectURL(objectURL); + } + break; + } + case 'transmuxComplete': + { + _this.handleTransmuxComplete(data.data); + break; + } + case 'flush': + { + _this.onFlush(data.data); + break; + } + + // pass logs from the worker thread to the main logger + case 'workerLog': + { + if (hls.logger[data.data.logType]) { + hls.logger[data.data.logType](data.data.message); + } + break; + } + default: + { + data.data = data.data || {}; + data.data.frag = _this.frag; + data.data.part = _this.part; + data.data.id = _this.id; + hls.trigger(data.event, data.data); + break; + } + } + }; + this.onWorkerError = function (event) { + if (!_this.hls) { + return; + } + var error = new Error(event.message + " (" + event.filename + ":" + event.lineno + ")"); + _this.hls.config.enableWorker = false; + _this.hls.logger.warn("Error in \"" + _this.id + "\" Web Worker, fallback to inline"); + _this.hls.trigger(Events.ERROR, { + type: ErrorTypes.OTHER_ERROR, + details: ErrorDetails.INTERNAL_EXCEPTION, + fatal: false, + event: 'demuxerWorker', + error: error + }); + }; + var config = _hls.config; + this.hls = _hls; + this.id = id; + this.useWorker = !!config.enableWorker; + this.onTransmuxComplete = onTransmuxComplete; + this.onFlush = onFlush; + var forwardMessage = function forwardMessage(ev, data) { + data = data || {}; + data.frag = _this.frag || undefined; + if (ev === Events.ERROR) { + data = data; + data.parent = _this.id; + data.part = _this.part; + _this.error = data.error; + } + _this.hls.trigger(ev, data); + }; + + // forward events to main thread + this.observer = new EventEmitter(); + this.observer.on(Events.FRAG_DECRYPTED, forwardMessage); + this.observer.on(Events.ERROR, forwardMessage); + var m2tsTypeSupported = getM2TSSupportedAudioTypes(config.preferManagedMediaSource); + if (this.useWorker && typeof Worker !== 'undefined') { + var logger = this.hls.logger; + var canCreateWorker = config.workerPath || hasUMDWorker(); + if (canCreateWorker) { + try { + if (config.workerPath) { + logger.log("loading Web Worker " + config.workerPath + " for \"" + id + "\""); + this.workerContext = loadWorker(config.workerPath); + } else { + logger.log("injecting Web Worker for \"" + id + "\""); + this.workerContext = injectWorker(); + } + var worker = this.workerContext.worker; + worker.addEventListener('message', this.onWorkerMessage); + worker.addEventListener('error', this.onWorkerError); + worker.postMessage({ + instanceNo: this.instanceNo, + cmd: 'init', + typeSupported: m2tsTypeSupported, + id: id, + config: JSON.stringify(config) + }); + } catch (err) { + logger.warn("Error setting up \"" + id + "\" Web Worker, fallback to inline", err); + this.terminateWorker(); + this.error = null; + this.transmuxer = new Transmuxer(this.observer, m2tsTypeSupported, config, '', id, _hls.logger); + } + return; + } + } + this.transmuxer = new Transmuxer(this.observer, m2tsTypeSupported, config, '', id, _hls.logger); + } + var _proto = TransmuxerInterface.prototype; + _proto.reset = function reset() { + this.frag = null; + this.part = null; + if (this.workerContext) { + var instanceNo = this.instanceNo; + this.instanceNo = transmuxerInstanceCount++; + var config = this.hls.config; + var m2tsTypeSupported = getM2TSSupportedAudioTypes(config.preferManagedMediaSource); + this.workerContext.worker.postMessage({ + instanceNo: this.instanceNo, + cmd: 'reset', + resetNo: instanceNo, + typeSupported: m2tsTypeSupported, + id: this.id, + config: JSON.stringify(config) + }); + } + }; + _proto.terminateWorker = function terminateWorker() { + if (this.workerContext) { + var worker = this.workerContext.worker; + this.workerContext = null; + worker.removeEventListener('message', this.onWorkerMessage); + worker.removeEventListener('error', this.onWorkerError); + removeWorkerFromStore(this.hls.config.workerPath); + } + }; + _proto.destroy = function destroy() { + if (this.workerContext) { + this.terminateWorker(); + // @ts-ignore + this.onWorkerMessage = this.onWorkerError = null; + } else { + var transmuxer = this.transmuxer; + if (transmuxer) { + transmuxer.destroy(); + this.transmuxer = null; + } + } + var observer = this.observer; + if (observer) { + observer.removeAllListeners(); + } + this.frag = null; + this.part = null; + // @ts-ignore + this.observer = null; + // @ts-ignore + this.hls = null; + }; + _proto.push = function push(data, initSegmentData, audioCodec, videoCodec, frag, part, duration, accurateTimeOffset, chunkMeta, defaultInitPTS) { + var _frag$initSegment, + _lastFrag$initSegment, + _this2 = this; + chunkMeta.transmuxing.start = self.performance.now(); + var instanceNo = this.instanceNo, + transmuxer = this.transmuxer; + var timeOffset = part ? part.start : frag.start; + // TODO: push "clear-lead" decrypt data for unencrypted fragments in streams with encrypted ones + var decryptdata = frag.decryptdata; + var lastFrag = this.frag; + var discontinuity = !(lastFrag && frag.cc === lastFrag.cc); + var trackSwitch = !(lastFrag && chunkMeta.level === lastFrag.level); + var snDiff = lastFrag ? chunkMeta.sn - lastFrag.sn : -1; + var partDiff = this.part ? chunkMeta.part - this.part.index : -1; + var progressive = snDiff === 0 && chunkMeta.id > 1 && chunkMeta.id === (lastFrag == null ? void 0 : lastFrag.stats.chunkCount); + var contiguous = !trackSwitch && (snDiff === 1 || snDiff === 0 && (partDiff === 1 || progressive && partDiff <= 0)); + var now = self.performance.now(); + if (trackSwitch || snDiff || frag.stats.parsing.start === 0) { + frag.stats.parsing.start = now; + } + if (part && (partDiff || !contiguous)) { + part.stats.parsing.start = now; + } + var initSegmentChange = !(lastFrag && ((_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.url) === ((_lastFrag$initSegment = lastFrag.initSegment) == null ? void 0 : _lastFrag$initSegment.url)); + var state = new TransmuxState(discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange); + if (!contiguous || discontinuity || initSegmentChange) { + this.hls.logger.log("[transmuxer-interface, " + frag.type + "]: Starting new transmux session for sn: " + chunkMeta.sn + " p: " + chunkMeta.part + " level: " + chunkMeta.level + " id: " + chunkMeta.id + "\n discontinuity: " + discontinuity + "\n trackSwitch: " + trackSwitch + "\n contiguous: " + contiguous + "\n accurateTimeOffset: " + accurateTimeOffset + "\n timeOffset: " + timeOffset + "\n initSegmentChange: " + initSegmentChange); + var config = new TransmuxConfig(audioCodec, videoCodec, initSegmentData, duration, defaultInitPTS); + this.configureTransmuxer(config); + } + this.frag = frag; + this.part = part; + + // Frags with sn of 'initSegment' are not transmuxed + if (this.workerContext) { + // post fragment payload as transferable objects for ArrayBuffer (no copy) + this.workerContext.worker.postMessage({ + instanceNo: instanceNo, + cmd: 'demux', + data: data, + decryptdata: decryptdata, + chunkMeta: chunkMeta, + state: state + }, data instanceof ArrayBuffer ? [data] : []); + } else if (transmuxer) { + var transmuxResult = transmuxer.push(data, decryptdata, chunkMeta, state); + if (isPromise(transmuxResult)) { + transmuxResult.then(function (data) { + _this2.handleTransmuxComplete(data); + }).catch(function (error) { + _this2.transmuxerError(error, chunkMeta, 'transmuxer-interface push error'); + }); + } else { + this.handleTransmuxComplete(transmuxResult); + } + } + }; + _proto.flush = function flush(chunkMeta) { + var _this3 = this; + chunkMeta.transmuxing.start = self.performance.now(); + var instanceNo = this.instanceNo, + transmuxer = this.transmuxer; + if (this.workerContext) { + this.workerContext.worker.postMessage({ + instanceNo: instanceNo, + cmd: 'flush', + chunkMeta: chunkMeta + }); + } else if (transmuxer) { + var transmuxResult = transmuxer.flush(chunkMeta); + if (isPromise(transmuxResult)) { + transmuxResult.then(function (data) { + _this3.handleFlushResult(data, chunkMeta); + }).catch(function (error) { + _this3.transmuxerError(error, chunkMeta, 'transmuxer-interface flush error'); + }); + } else { + this.handleFlushResult(transmuxResult, chunkMeta); + } + } + }; + _proto.transmuxerError = function transmuxerError(error, chunkMeta, reason) { + if (!this.hls) { + return; + } + this.error = error; + this.hls.trigger(Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.FRAG_PARSING_ERROR, + chunkMeta: chunkMeta, + frag: this.frag || undefined, + part: this.part || undefined, + fatal: false, + error: error, + err: error, + reason: reason + }); + }; + _proto.handleFlushResult = function handleFlushResult(results, chunkMeta) { + var _this4 = this; + results.forEach(function (result) { + _this4.handleTransmuxComplete(result); + }); + this.onFlush(chunkMeta); + }; + _proto.configureTransmuxer = function configureTransmuxer(config) { + var instanceNo = this.instanceNo, + transmuxer = this.transmuxer; + if (this.workerContext) { + this.workerContext.worker.postMessage({ + instanceNo: instanceNo, + cmd: 'configure', + config: config + }); + } else if (transmuxer) { + transmuxer.configure(config); + } + }; + _proto.handleTransmuxComplete = function handleTransmuxComplete(result) { + result.chunkMeta.transmuxing.end = self.performance.now(); + this.onTransmuxComplete(result); + }; + return TransmuxerInterface; + }(); + + function subtitleOptionsIdentical(trackList1, trackList2) { + if (trackList1.length !== trackList2.length) { + return false; + } + for (var i = 0; i < trackList1.length; i++) { + if (!mediaAttributesIdentical(trackList1[i].attrs, trackList2[i].attrs)) { + return false; + } + } + return true; + } + function mediaAttributesIdentical(attrs1, attrs2, customAttributes) { + // Media options with the same rendition ID must be bit identical + var stableRenditionId = attrs1['STABLE-RENDITION-ID']; + if (stableRenditionId && !customAttributes) { + return stableRenditionId === attrs2['STABLE-RENDITION-ID']; + } + // When rendition ID is not present, compare attributes + return !(customAttributes || ['LANGUAGE', 'NAME', 'CHARACTERISTICS', 'AUTOSELECT', 'DEFAULT', 'FORCED', 'ASSOC-LANGUAGE']).some(function (subtitleAttribute) { + return attrs1[subtitleAttribute] !== attrs2[subtitleAttribute]; + }); + } + function subtitleTrackMatchesTextTrack(subtitleTrack, textTrack) { + return textTrack.label.toLowerCase() === subtitleTrack.name.toLowerCase() && (!textTrack.language || textTrack.language.toLowerCase() === (subtitleTrack.lang || '').toLowerCase()); + } + + var TICK_INTERVAL$2 = 100; // how often to tick in ms + var AudioStreamController = /*#__PURE__*/function (_BaseStreamController) { + function AudioStreamController(hls, fragmentTracker, keyLoader) { + var _this; + _this = _BaseStreamController.call(this, hls, fragmentTracker, keyLoader, 'audio-stream-controller', PlaylistLevelType.AUDIO) || this; + _this.videoAnchor = null; + _this.mainFragLoading = null; + _this.bufferedTrack = null; + _this.switchingTrack = null; + _this.trackId = -1; + _this.waitingData = null; + _this.mainDetails = null; + _this.flushing = false; + _this.bufferFlushed = false; + _this.cachedTrackLoadedData = null; + _this.registerListeners(); + return _this; + } + _inheritsLoose(AudioStreamController, _BaseStreamController); + var _proto = AudioStreamController.prototype; + _proto.onHandlerDestroying = function onHandlerDestroying() { + this.unregisterListeners(); + _BaseStreamController.prototype.onHandlerDestroying.call(this); + this.mainDetails = null; + this.bufferedTrack = null; + this.switchingTrack = null; + }; + _proto.registerListeners = function registerListeners() { + _BaseStreamController.prototype.registerListeners.call(this); + var hls = this.hls; + hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this); + hls.on(Events.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this); + hls.on(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this); + hls.on(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this); + hls.on(Events.BUFFER_RESET, this.onBufferReset, this); + hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this); + hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this); + hls.on(Events.BUFFER_FLUSHED, this.onBufferFlushed, this); + hls.on(Events.INIT_PTS_FOUND, this.onInitPtsFound, this); + hls.on(Events.FRAG_LOADING, this.onFragLoading, this); + hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this); + }; + _proto.unregisterListeners = function unregisterListeners() { + var hls = this.hls; + if (!hls) { + return; + } + _BaseStreamController.prototype.unregisterListeners.call(this); + hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this); + hls.off(Events.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this); + hls.off(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this); + hls.off(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this); + hls.off(Events.BUFFER_RESET, this.onBufferReset, this); + hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this); + hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this); + hls.off(Events.BUFFER_FLUSHED, this.onBufferFlushed, this); + hls.off(Events.INIT_PTS_FOUND, this.onInitPtsFound, this); + hls.on(Events.FRAG_LOADING, this.onFragLoading, this); + hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this); + } + + // INIT_PTS_FOUND is triggered when the video track parsed in the stream-controller has a new PTS value + ; + _proto.onInitPtsFound = function onInitPtsFound(event, _ref) { + var frag = _ref.frag, + id = _ref.id, + initPTS = _ref.initPTS, + timescale = _ref.timescale; + // Always update the new INIT PTS + // Can change due level switch + if (id === PlaylistLevelType.MAIN) { + var cc = frag.cc; + var inFlightFrag = this.fragCurrent; + this.initPTS[cc] = { + baseTime: initPTS, + timescale: timescale + }; + this.log("InitPTS for cc: " + cc + " found from main: " + initPTS + "/" + timescale); + this.videoAnchor = frag; + // If we are waiting, tick immediately to unblock audio fragment transmuxing + if (this.state === State.WAITING_INIT_PTS) { + var waitingData = this.waitingData; + if (!waitingData || waitingData.frag.cc !== cc) { + this.nextLoadPosition = this.findSyncFrag(frag).start; + } + this.tick(); + } else if (!this.loadedmetadata && inFlightFrag && inFlightFrag.cc !== cc) { + this.startFragRequested = false; + this.nextLoadPosition = this.findSyncFrag(frag).start; + inFlightFrag.abortRequests(); + this.resetLoadingState(); + } + } + }; + _proto.findSyncFrag = function findSyncFrag(mainFrag) { + var trackDetails = this.getLevelDetails(); + var cc = mainFrag.cc; + return findNearestWithCC(trackDetails, cc, mainFrag) || trackDetails && findFragWithCC(trackDetails.fragments, cc) || mainFrag; + }; + _proto.startLoad = function startLoad(startPosition) { + if (!this.levels) { + this.startPosition = startPosition; + this.state = State.STOPPED; + return; + } + var lastCurrentTime = this.lastCurrentTime; + this.stopLoad(); + this.setInterval(TICK_INTERVAL$2); + if (lastCurrentTime > 0 && startPosition === -1) { + this.log("Override startPosition with lastCurrentTime @" + lastCurrentTime.toFixed(3)); + startPosition = lastCurrentTime; + this.state = State.IDLE; + } else { + this.loadedmetadata = false; + this.state = State.WAITING_TRACK; + } + this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition; + this.tick(); + }; + _proto.doTick = function doTick() { + switch (this.state) { + case State.IDLE: + this.doTickIdle(); + break; + case State.WAITING_TRACK: + { + var _levels$trackId; + var levels = this.levels, + trackId = this.trackId; + var details = levels == null ? void 0 : (_levels$trackId = levels[trackId]) == null ? void 0 : _levels$trackId.details; + if (details) { + if (this.waitForCdnTuneIn(details)) { + break; + } + this.state = State.WAITING_INIT_PTS; + } + break; + } + case State.FRAG_LOADING_WAITING_RETRY: + { + var _this$media; + var now = performance.now(); + var retryDate = this.retryDate; + // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading + if (!retryDate || now >= retryDate || (_this$media = this.media) != null && _this$media.seeking) { + var _levels = this.levels, + _trackId = this.trackId; + this.log('RetryDate reached, switch back to IDLE state'); + this.resetStartWhenNotLoaded((_levels == null ? void 0 : _levels[_trackId]) || null); + this.state = State.IDLE; + } + break; + } + case State.WAITING_INIT_PTS: + { + // Ensure we don't get stuck in the WAITING_INIT_PTS state if the waiting frag CC doesn't match any initPTS + var waitingData = this.waitingData; + if (waitingData) { + var frag = waitingData.frag, + part = waitingData.part, + cache = waitingData.cache, + complete = waitingData.complete; + var videoAnchor = this.videoAnchor; + if (this.initPTS[frag.cc] !== undefined) { + this.waitingData = null; + this.state = State.FRAG_LOADING; + var payload = cache.flush(); + var data = { + frag: frag, + part: part, + payload: payload, + networkDetails: null + }; + this._handleFragmentLoadProgress(data); + if (complete) { + _BaseStreamController.prototype._handleFragmentLoadComplete.call(this, data); + } + } else if (videoAnchor && videoAnchor.cc !== waitingData.frag.cc) { + // Drop waiting fragment if videoTrackCC has changed since waitingFragment was set and initPTS was not found + this.log("Waiting fragment cc (" + frag.cc + ") cancelled because video is at cc " + videoAnchor.cc); + this.nextLoadPosition = this.findSyncFrag(videoAnchor).start; + this.clearWaitingFragment(); + } + } else if (this.state !== State.STOPPED) { + this.state = State.IDLE; + } + } + } + this.onTickEnd(); + }; + _proto.clearWaitingFragment = function clearWaitingFragment() { + var waitingData = this.waitingData; + if (waitingData) { + if (!this.loadedmetadata) { + // Load overlapping fragment on start when discontinuity start times are not aligned + this.startFragRequested = false; + } + this.fragmentTracker.removeFragment(waitingData.frag); + this.waitingData = null; + if (this.state !== State.STOPPED) { + this.state = State.IDLE; + } + } + }; + _proto.resetLoadingState = function resetLoadingState() { + this.clearWaitingFragment(); + _BaseStreamController.prototype.resetLoadingState.call(this); + }; + _proto.onTickEnd = function onTickEnd() { + var media = this.media; + if (!(media != null && media.readyState)) { + // Exit early if we don't have media or if the media hasn't buffered anything yet (readyState 0) + return; + } + this.lastCurrentTime = media.currentTime; + }; + _proto.doTickIdle = function doTickIdle() { + var _this$mainFragLoading; + var hls = this.hls, + levels = this.levels, + media = this.media, + trackId = this.trackId; + var config = hls.config; + + // 1. if buffering is suspended + // 2. if video not attached AND + // start fragment already requested OR start frag prefetch not enabled + // 3. if tracks or track not loaded and selected + // then exit loop + // => if media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop + if (!this.buffering || !media && (this.startFragRequested || !config.startFragPrefetch) || !(levels != null && levels[trackId])) { + return; + } + var levelInfo = levels[trackId]; + var trackDetails = levelInfo.details; + if (!trackDetails || trackDetails.live && this.levelLastLoaded !== levelInfo || this.waitForCdnTuneIn(trackDetails)) { + this.state = State.WAITING_TRACK; + return; + } + var bufferable = this.mediaBuffer ? this.mediaBuffer : this.media; + if (this.bufferFlushed && bufferable) { + this.bufferFlushed = false; + this.afterBufferFlushed(bufferable, ElementaryStreamTypes.AUDIO, PlaylistLevelType.AUDIO); + } + var bufferInfo = this.getFwdBufferInfo(bufferable, PlaylistLevelType.AUDIO); + if (bufferInfo === null) { + return; + } + var bufferedTrack = this.bufferedTrack, + switchingTrack = this.switchingTrack; + if (!switchingTrack && this._streamEnded(bufferInfo, trackDetails)) { + hls.trigger(Events.BUFFER_EOS, { + type: 'audio' + }); + this.state = State.ENDED; + return; + } + var bufferLen = bufferInfo.len; + var maxBufLen = hls.maxBufferLength; + var fragments = trackDetails.fragments; + var start = fragments[0].start; + var loadPosition = this.getLoadPosition(); + var targetBufferTime = this.flushing ? loadPosition : bufferInfo.end; + if (switchingTrack && media) { + var pos = loadPosition; + // STABLE + if (bufferedTrack && !mediaAttributesIdentical(switchingTrack.attrs, bufferedTrack.attrs)) { + targetBufferTime = pos; + } + // if currentTime (pos) is less than alt audio playlist start time, it means that alt audio is ahead of currentTime + if (trackDetails.PTSKnown && pos < start) { + // if everything is buffered from pos to start or if audio buffer upfront, let's seek to start + if (bufferInfo.end > start || bufferInfo.nextStart) { + this.log('Alt audio track ahead of main track, seek to start of alt audio track'); + media.currentTime = start + 0.05; + } + } + } + + // if buffer length is less than maxBufLen, or near the end, find a fragment to load + if (bufferLen >= maxBufLen && !switchingTrack && targetBufferTime < fragments[fragments.length - 1].start) { + return; + } + var frag = this.getNextFragment(targetBufferTime, trackDetails); + // Avoid loop loading by using nextLoadPosition set for backtracking and skipping consecutive GAP tags + if (frag && this.isLoopLoading(frag, targetBufferTime)) { + frag = this.getNextFragmentLoopLoading(frag, trackDetails, bufferInfo, PlaylistLevelType.MAIN, maxBufLen); + } + if (!frag) { + this.bufferFlushed = true; + return; + } + + // Request audio segments up to one fragment ahead of main stream-controller + var mainFragLoading = (_this$mainFragLoading = this.mainFragLoading) == null ? void 0 : _this$mainFragLoading.frag; + if (this.startFragRequested && mainFragLoading && mainFragLoading.sn !== 'initSegment' && frag.sn !== 'initSegment' && !frag.endList && (!trackDetails.live || !this.loadingParts && targetBufferTime < this.hls.liveSyncPosition)) { + var mainFrag = mainFragLoading; + if (frag.start > mainFrag.end) { + // Get buffered frag at target position from tracker (loaded out of sequence) + var mainFragAtPos = this.fragmentTracker.getFragAtPos(targetBufferTime, PlaylistLevelType.MAIN); + if (mainFragAtPos && mainFragAtPos.end > mainFragLoading.end) { + mainFrag = mainFragAtPos; + this.mainFragLoading = { + frag: mainFragAtPos, + targetBufferTime: null + }; + } + } + var atBufferSyncLimit = frag.start > mainFrag.end; + if (atBufferSyncLimit) { + return; + } + } + this.loadFragment(frag, levelInfo, targetBufferTime); + }; + _proto.onMediaDetaching = function onMediaDetaching() { + this.bufferFlushed = this.flushing = false; + _BaseStreamController.prototype.onMediaDetaching.call(this); + }; + _proto.onAudioTracksUpdated = function onAudioTracksUpdated(event, _ref2) { + var audioTracks = _ref2.audioTracks; + // Reset tranxmuxer is essential for large context switches (Content Steering) + this.resetTransmuxer(); + this.levels = audioTracks.map(function (mediaPlaylist) { + return new Level(mediaPlaylist); + }); + }; + _proto.onAudioTrackSwitching = function onAudioTrackSwitching(event, data) { + // if any URL found on new audio track, it is an alternate audio track + var altAudio = !!data.url; + this.trackId = data.id; + var fragCurrent = this.fragCurrent; + if (fragCurrent) { + fragCurrent.abortRequests(); + this.removeUnbufferedFrags(fragCurrent.start); + } + this.resetLoadingState(); + + // should we switch tracks ? + if (altAudio) { + this.switchingTrack = data; + // main audio track are handled by stream-controller, just do something if switching to alt audio track + this.flushAudioIfNeeded(data); + if (this.state !== State.STOPPED) { + // switching to audio track, start timer if not already started + this.setInterval(TICK_INTERVAL$2); + this.state = State.IDLE; + this.tick(); + } + } else { + // destroy useless transmuxer when switching audio to main + this.resetTransmuxer(); + this.switchingTrack = null; + this.bufferedTrack = data; + this.clearInterval(); + } + }; + _proto.onManifestLoading = function onManifestLoading() { + _BaseStreamController.prototype.onManifestLoading.call(this); + this.bufferFlushed = this.flushing = false; + this.mainDetails = this.waitingData = this.videoAnchor = this.bufferedTrack = this.cachedTrackLoadedData = this.switchingTrack = null; + this.trackId = -1; + }; + _proto.onLevelLoaded = function onLevelLoaded(event, data) { + this.mainDetails = data.details; + if (this.cachedTrackLoadedData !== null) { + this.hls.trigger(Events.AUDIO_TRACK_LOADED, this.cachedTrackLoadedData); + this.cachedTrackLoadedData = null; + } + }; + _proto.onAudioTrackLoaded = function onAudioTrackLoaded(event, data) { + var _track$details; + if (this.mainDetails == null) { + this.cachedTrackLoadedData = data; + return; + } + var levels = this.levels; + var newDetails = data.details, + trackId = data.id; + if (!levels) { + this.warn("Audio tracks were reset while loading level " + trackId); + return; + } + this.log("Audio track " + trackId + " loaded [" + newDetails.startSN + "," + newDetails.endSN + "]" + (newDetails.lastPartSn ? "[part-" + newDetails.lastPartSn + "-" + newDetails.lastPartIndex + "]" : '') + ",duration:" + newDetails.totalduration); + var track = levels[trackId]; + var sliding = 0; + if (newDetails.live || (_track$details = track.details) != null && _track$details.live) { + this.checkLiveUpdate(newDetails); + var mainDetails = this.mainDetails; + if (newDetails.deltaUpdateFailed || !mainDetails) { + return; + } + if (!track.details && newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) { + // Make sure our audio rendition is aligned with the "main" rendition, using + // pdt as our reference times. + alignMediaPlaylistByPDT(newDetails, mainDetails); + sliding = newDetails.fragments[0].start; + } else { + var _this$levelLastLoaded; + sliding = this.alignPlaylists(newDetails, track.details, (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details); + } + } + track.details = newDetails; + this.levelLastLoaded = track; + + // compute start position if we are aligned with the main playlist + if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) { + this.setStartPosition(this.mainDetails || newDetails, sliding); + } + // only switch back to IDLE state if we were waiting for track to start downloading a new fragment + if (this.state === State.WAITING_TRACK && !this.waitForCdnTuneIn(newDetails)) { + this.state = State.IDLE; + } + + // trigger handler right now + this.tick(); + }; + _proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(data) { + var _frag$initSegment; + var frag = data.frag; + var part = data.part, + payload = data.payload; + var config = this.config, + trackId = this.trackId, + levels = this.levels; + if (!levels) { + this.warn("Audio tracks were reset while fragment load was in progress. Fragment " + frag.sn + " of level " + frag.level + " will not be buffered"); + return; + } + var track = levels[trackId]; + if (!track) { + this.warn('Audio track is undefined on fragment load progress'); + return; + } + var details = track.details; + if (!details) { + this.warn('Audio track details undefined on fragment load progress'); + this.removeUnbufferedFrags(frag.start); + return; + } + var audioCodec = config.defaultAudioCodec || track.audioCodec || 'mp4a.40.2'; + var transmuxer = this.transmuxer; + if (!transmuxer) { + transmuxer = this.transmuxer = new TransmuxerInterface(this.hls, PlaylistLevelType.AUDIO, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this)); + } + + // Check if we have video initPTS + // If not we need to wait for it + var initPTS = this.initPTS[frag.cc]; + var initSegmentData = (_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.data; + if (initPTS !== undefined) { + // this.log(`Transmuxing ${sn} of [${details.startSN} ,${details.endSN}],track ${trackId}`); + // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live) + var accurateTimeOffset = false; // details.PTSKnown || !details.live; + var partIndex = part ? part.index : -1; + var partial = partIndex !== -1; + var chunkMeta = new ChunkMetadata(frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial); + transmuxer.push(payload, initSegmentData, audioCodec, '', frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS); + } else { + this.log("Unknown video PTS for cc " + frag.cc + ", waiting for video PTS before demuxing audio frag " + frag.sn + " of [" + details.startSN + " ," + details.endSN + "],track " + trackId); + var _this$waitingData = this.waitingData = this.waitingData || { + frag: frag, + part: part, + cache: new ChunkCache(), + complete: false + }, + cache = _this$waitingData.cache; + cache.push(new Uint8Array(payload)); + this.state = State.WAITING_INIT_PTS; + } + }; + _proto._handleFragmentLoadComplete = function _handleFragmentLoadComplete(fragLoadedData) { + if (this.waitingData) { + this.waitingData.complete = true; + return; + } + _BaseStreamController.prototype._handleFragmentLoadComplete.call(this, fragLoadedData); + }; + _proto.onBufferReset = function onBufferReset(/* event: Events.BUFFER_RESET */ + ) { + // reset reference to sourcebuffers + this.mediaBuffer = null; + this.loadedmetadata = false; + }; + _proto.onBufferCreated = function onBufferCreated(event, data) { + var audioTrack = data.tracks.audio; + if (audioTrack) { + this.mediaBuffer = audioTrack.buffer || null; + } + }; + _proto.onFragLoading = function onFragLoading(event, data) { + if (data.frag.type === PlaylistLevelType.MAIN && data.frag.sn !== 'initSegment') { + this.mainFragLoading = data; + if (this.state === State.IDLE) { + this.tick(); + } + } + }; + _proto.onFragBuffered = function onFragBuffered(event, data) { + var frag = data.frag, + part = data.part; + if (frag.type !== PlaylistLevelType.AUDIO) { + if (!this.loadedmetadata && frag.type === PlaylistLevelType.MAIN) { + var bufferedState = this.fragmentTracker.getState(frag); + if (bufferedState === FragmentState.OK || bufferedState === FragmentState.PARTIAL) { + this.loadedmetadata = true; + } + } + return; + } + if (this.fragContextChanged(frag)) { + // If a level switch was requested while a fragment was buffering, it will emit the FRAG_BUFFERED event upon completion + // Avoid setting state back to IDLE or concluding the audio switch; otherwise, the switched-to track will not buffer + this.warn("Fragment " + frag.sn + (part ? ' p: ' + part.index : '') + " of level " + frag.level + " finished buffering, but was aborted. state: " + this.state + ", audioSwitch: " + (this.switchingTrack ? this.switchingTrack.name : 'false')); + return; + } + if (frag.sn !== 'initSegment') { + this.fragPrevious = frag; + var track = this.switchingTrack; + if (track) { + this.bufferedTrack = track; + this.switchingTrack = null; + this.hls.trigger(Events.AUDIO_TRACK_SWITCHED, _objectSpread2({}, track)); + } + } + this.fragBufferedComplete(frag, part); + }; + _proto.onError = function onError(event, data) { + var _data$context; + if (data.fatal) { + this.state = State.ERROR; + return; + } + switch (data.details) { + case ErrorDetails.FRAG_GAP: + case ErrorDetails.FRAG_PARSING_ERROR: + case ErrorDetails.FRAG_DECRYPT_ERROR: + case ErrorDetails.FRAG_LOAD_ERROR: + case ErrorDetails.FRAG_LOAD_TIMEOUT: + case ErrorDetails.KEY_LOAD_ERROR: + case ErrorDetails.KEY_LOAD_TIMEOUT: + this.onFragmentOrKeyLoadError(PlaylistLevelType.AUDIO, data); + break; + case ErrorDetails.AUDIO_TRACK_LOAD_ERROR: + case ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT: + case ErrorDetails.LEVEL_PARSING_ERROR: + // in case of non fatal error while loading track, if not retrying to load track, switch back to IDLE + if (!data.levelRetry && this.state === State.WAITING_TRACK && ((_data$context = data.context) == null ? void 0 : _data$context.type) === PlaylistContextType.AUDIO_TRACK) { + this.state = State.IDLE; + } + break; + case ErrorDetails.BUFFER_APPEND_ERROR: + case ErrorDetails.BUFFER_FULL_ERROR: + if (!data.parent || data.parent !== 'audio') { + return; + } + if (data.details === ErrorDetails.BUFFER_APPEND_ERROR) { + this.resetLoadingState(); + return; + } + if (this.reduceLengthAndFlushBuffer(data)) { + this.bufferedTrack = null; + _BaseStreamController.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, 'audio'); + } + break; + case ErrorDetails.INTERNAL_EXCEPTION: + this.recoverWorkerError(data); + break; + } + }; + _proto.onBufferFlushing = function onBufferFlushing(event, _ref3) { + var type = _ref3.type; + if (type !== ElementaryStreamTypes.VIDEO) { + this.flushing = true; + } + }; + _proto.onBufferFlushed = function onBufferFlushed(event, _ref4) { + var type = _ref4.type; + if (type !== ElementaryStreamTypes.VIDEO) { + this.flushing = false; + this.bufferFlushed = true; + if (this.state === State.ENDED) { + this.state = State.IDLE; + } + var mediaBuffer = this.mediaBuffer || this.media; + if (mediaBuffer) { + this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.AUDIO); + this.tick(); + } + } + }; + _proto._handleTransmuxComplete = function _handleTransmuxComplete(transmuxResult) { + var _id3$samples; + var id = 'audio'; + var hls = this.hls; + var remuxResult = transmuxResult.remuxResult, + chunkMeta = transmuxResult.chunkMeta; + var context = this.getCurrentContext(chunkMeta); + if (!context) { + this.resetWhenMissingContext(chunkMeta); + return; + } + var frag = context.frag, + part = context.part, + level = context.level; + var details = level.details; + var audio = remuxResult.audio, + text = remuxResult.text, + id3 = remuxResult.id3, + initSegment = remuxResult.initSegment; + + // Check if the current fragment has been aborted. We check this by first seeing if we're still playing the current level. + // If we are, subsequently check if the currently loading fragment (fragCurrent) has changed. + if (this.fragContextChanged(frag) || !details) { + this.fragmentTracker.removeFragment(frag); + return; + } + this.state = State.PARSING; + if (this.switchingTrack && audio) { + this.completeAudioSwitch(this.switchingTrack); + } + if (initSegment != null && initSegment.tracks) { + var mapFragment = frag.initSegment || frag; + this._bufferInitSegment(level, initSegment.tracks, mapFragment, chunkMeta); + hls.trigger(Events.FRAG_PARSING_INIT_SEGMENT, { + frag: mapFragment, + id: id, + tracks: initSegment.tracks + }); + // Only flush audio from old audio tracks when PTS is known on new audio track + } + if (audio) { + var startPTS = audio.startPTS, + endPTS = audio.endPTS, + startDTS = audio.startDTS, + endDTS = audio.endDTS; + if (part) { + part.elementaryStreams[ElementaryStreamTypes.AUDIO] = { + startPTS: startPTS, + endPTS: endPTS, + startDTS: startDTS, + endDTS: endDTS + }; + } + frag.setElementaryStreamInfo(ElementaryStreamTypes.AUDIO, startPTS, endPTS, startDTS, endDTS); + this.bufferFragmentData(audio, frag, part, chunkMeta); + } + if (id3 != null && (_id3$samples = id3.samples) != null && _id3$samples.length) { + var emittedID3 = _extends({ + id: id, + frag: frag, + details: details + }, id3); + hls.trigger(Events.FRAG_PARSING_METADATA, emittedID3); + } + if (text) { + var emittedText = _extends({ + id: id, + frag: frag, + details: details + }, text); + hls.trigger(Events.FRAG_PARSING_USERDATA, emittedText); + } + }; + _proto._bufferInitSegment = function _bufferInitSegment(currentLevel, tracks, frag, chunkMeta) { + if (this.state !== State.PARSING) { + return; + } + // delete any video track found on audio transmuxer + if (tracks.video) { + delete tracks.video; + } + if (tracks.audiovideo) { + delete tracks.audiovideo; + } + + // include levelCodec in audio and video tracks + if (!tracks.audio) { + return; + } + var track = tracks.audio; + track.id = 'audio'; + var variantAudioCodecs = currentLevel.audioCodec; + this.log("Init audio buffer, container:" + track.container + ", codecs[level/parsed]=[" + variantAudioCodecs + "/" + track.codec + "]"); + // SourceBuffer will use track.levelCodec if defined + if (variantAudioCodecs && variantAudioCodecs.split(',').length === 1) { + track.levelCodec = variantAudioCodecs; + } + this.hls.trigger(Events.BUFFER_CODECS, tracks); + var initSegment = track.initSegment; + if (initSegment != null && initSegment.byteLength) { + var segment = { + type: 'audio', + frag: frag, + part: null, + chunkMeta: chunkMeta, + parent: frag.type, + data: initSegment + }; + this.hls.trigger(Events.BUFFER_APPENDING, segment); + } + // trigger handler right now + this.tickImmediate(); + }; + _proto.loadFragment = function loadFragment(frag, track, targetBufferTime) { + // only load if fragment is not loaded or if in audio switch + var fragState = this.fragmentTracker.getState(frag); + + // we force a frag loading in audio switch as fragment tracker might not have evicted previous frags in case of quick audio switch + if (this.switchingTrack || fragState === FragmentState.NOT_LOADED || fragState === FragmentState.PARTIAL) { + var _track$details2; + if (frag.sn === 'initSegment') { + this._loadInitSegment(frag, track); + } else if ((_track$details2 = track.details) != null && _track$details2.live && !this.initPTS[frag.cc]) { + this.log("Waiting for video PTS in continuity counter " + frag.cc + " of live stream before loading audio fragment " + frag.sn + " of level " + this.trackId); + this.state = State.WAITING_INIT_PTS; + var mainDetails = this.mainDetails; + if (mainDetails && mainDetails.fragments[0].start !== track.details.fragments[0].start) { + alignMediaPlaylistByPDT(track.details, mainDetails); + } + } else { + _BaseStreamController.prototype.loadFragment.call(this, frag, track, targetBufferTime); + } + } else { + this.clearTrackerIfNeeded(frag); + } + }; + _proto.flushAudioIfNeeded = function flushAudioIfNeeded(switchingTrack) { + var media = this.media, + bufferedTrack = this.bufferedTrack; + var bufferedAttributes = bufferedTrack == null ? void 0 : bufferedTrack.attrs; + var switchAttributes = switchingTrack.attrs; + if (media && bufferedAttributes && (bufferedAttributes.CHANNELS !== switchAttributes.CHANNELS || bufferedTrack.name !== switchingTrack.name || bufferedTrack.lang !== switchingTrack.lang)) { + this.log('Switching audio track : flushing all audio'); + _BaseStreamController.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, 'audio'); + this.bufferedTrack = null; + } + }; + _proto.completeAudioSwitch = function completeAudioSwitch(switchingTrack) { + var hls = this.hls; + this.flushAudioIfNeeded(switchingTrack); + this.bufferedTrack = switchingTrack; + this.switchingTrack = null; + hls.trigger(Events.AUDIO_TRACK_SWITCHED, _objectSpread2({}, switchingTrack)); + }; + return AudioStreamController; + }(BaseStreamController); + + var AudioTrackController = /*#__PURE__*/function (_BasePlaylistControll) { + function AudioTrackController(hls) { + var _this; + _this = _BasePlaylistControll.call(this, hls, 'audio-track-controller') || this; + _this.tracks = []; + _this.groupIds = null; + _this.tracksInGroup = []; + _this.trackId = -1; + _this.currentTrack = null; + _this.selectDefaultTrack = true; + _this.registerListeners(); + return _this; + } + _inheritsLoose(AudioTrackController, _BasePlaylistControll); + var _proto = AudioTrackController.prototype; + _proto.registerListeners = function registerListeners() { + var hls = this.hls; + hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this); + hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this); + hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this); + hls.on(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this); + hls.on(Events.ERROR, this.onError, this); + }; + _proto.unregisterListeners = function unregisterListeners() { + var hls = this.hls; + hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this); + hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this); + hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this); + hls.off(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this); + hls.off(Events.ERROR, this.onError, this); + }; + _proto.destroy = function destroy() { + this.unregisterListeners(); + this.tracks.length = 0; + this.tracksInGroup.length = 0; + this.currentTrack = null; + _BasePlaylistControll.prototype.destroy.call(this); + }; + _proto.onManifestLoading = function onManifestLoading() { + this.tracks = []; + this.tracksInGroup = []; + this.groupIds = null; + this.currentTrack = null; + this.trackId = -1; + this.selectDefaultTrack = true; + }; + _proto.onManifestParsed = function onManifestParsed(event, data) { + this.tracks = data.audioTracks || []; + }; + _proto.onAudioTrackLoaded = function onAudioTrackLoaded(event, data) { + var id = data.id, + groupId = data.groupId, + details = data.details; + var trackInActiveGroup = this.tracksInGroup[id]; + if (!trackInActiveGroup || trackInActiveGroup.groupId !== groupId) { + this.warn("Audio track with id:" + id + " and group:" + groupId + " not found in active group " + (trackInActiveGroup == null ? void 0 : trackInActiveGroup.groupId)); + return; + } + var curDetails = trackInActiveGroup.details; + trackInActiveGroup.details = data.details; + this.log("Audio track " + id + " \"" + trackInActiveGroup.name + "\" lang:" + trackInActiveGroup.lang + " group:" + groupId + " loaded [" + details.startSN + "-" + details.endSN + "]"); + if (id === this.trackId) { + this.playlistLoaded(id, data, curDetails); + } + }; + _proto.onLevelLoading = function onLevelLoading(event, data) { + this.switchLevel(data.level); + }; + _proto.onLevelSwitching = function onLevelSwitching(event, data) { + this.switchLevel(data.level); + }; + _proto.switchLevel = function switchLevel(levelIndex) { + var levelInfo = this.hls.levels[levelIndex]; + if (!levelInfo) { + return; + } + var audioGroups = levelInfo.audioGroups || null; + var currentGroups = this.groupIds; + var currentTrack = this.currentTrack; + if (!audioGroups || (currentGroups == null ? void 0 : currentGroups.length) !== (audioGroups == null ? void 0 : audioGroups.length) || audioGroups != null && audioGroups.some(function (groupId) { + return (currentGroups == null ? void 0 : currentGroups.indexOf(groupId)) === -1; + })) { + this.groupIds = audioGroups; + this.trackId = -1; + this.currentTrack = null; + var audioTracks = this.tracks.filter(function (track) { + return !audioGroups || audioGroups.indexOf(track.groupId) !== -1; + }); + if (audioTracks.length) { + // Disable selectDefaultTrack if there are no default tracks + if (this.selectDefaultTrack && !audioTracks.some(function (track) { + return track.default; + })) { + this.selectDefaultTrack = false; + } + // track.id should match hls.audioTracks index + audioTracks.forEach(function (track, i) { + track.id = i; + }); + } else if (!currentTrack && !this.tracksInGroup.length) { + // Do not dispatch AUDIO_TRACKS_UPDATED when there were and are no tracks + return; + } + this.tracksInGroup = audioTracks; + + // Find preferred track + var audioPreference = this.hls.config.audioPreference; + if (!currentTrack && audioPreference) { + var groupIndex = findMatchingOption(audioPreference, audioTracks, audioMatchPredicate); + if (groupIndex > -1) { + currentTrack = audioTracks[groupIndex]; + } else { + var allIndex = findMatchingOption(audioPreference, this.tracks); + currentTrack = this.tracks[allIndex]; + } + } + + // Select initial track + var trackId = this.findTrackId(currentTrack); + if (trackId === -1 && currentTrack) { + trackId = this.findTrackId(null); + } + + // Dispatch events and load track if needed + var audioTracksUpdated = { + audioTracks: audioTracks + }; + this.log("Updating audio tracks, " + audioTracks.length + " track(s) found in group(s): " + (audioGroups == null ? void 0 : audioGroups.join(','))); + this.hls.trigger(Events.AUDIO_TRACKS_UPDATED, audioTracksUpdated); + var selectedTrackId = this.trackId; + if (trackId !== -1 && selectedTrackId === -1) { + this.setAudioTrack(trackId); + } else if (audioTracks.length && selectedTrackId === -1) { + var _this$groupIds; + var error = new Error("No audio track selected for current audio group-ID(s): " + ((_this$groupIds = this.groupIds) == null ? void 0 : _this$groupIds.join(',')) + " track count: " + audioTracks.length); + this.warn(error.message); + this.hls.trigger(Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.AUDIO_TRACK_LOAD_ERROR, + fatal: true, + error: error + }); + } + } else if (this.shouldReloadPlaylist(currentTrack)) { + // Retry playlist loading if no playlist is or has been loaded yet + this.setAudioTrack(this.trackId); + } + }; + _proto.onError = function onError(event, data) { + if (data.fatal || !data.context) { + return; + } + if (data.context.type === PlaylistContextType.AUDIO_TRACK && data.context.id === this.trackId && (!this.groupIds || this.groupIds.indexOf(data.context.groupId) !== -1)) { + this.requestScheduled = -1; + this.checkRetry(data); + } + }; + _proto.setAudioOption = function setAudioOption(audioOption) { + var hls = this.hls; + hls.config.audioPreference = audioOption; + if (audioOption) { + var allAudioTracks = this.allAudioTracks; + this.selectDefaultTrack = false; + if (allAudioTracks.length) { + // First see if current option matches (no switch op) + var currentTrack = this.currentTrack; + if (currentTrack && matchesOption(audioOption, currentTrack, audioMatchPredicate)) { + return currentTrack; + } + // Find option in available tracks (tracksInGroup) + var groupIndex = findMatchingOption(audioOption, this.tracksInGroup, audioMatchPredicate); + if (groupIndex > -1) { + var track = this.tracksInGroup[groupIndex]; + this.setAudioTrack(groupIndex); + return track; + } else if (currentTrack) { + // Find option in nearest level audio group + var searchIndex = hls.loadLevel; + if (searchIndex === -1) { + searchIndex = hls.firstAutoLevel; + } + var switchIndex = findClosestLevelWithAudioGroup(audioOption, hls.levels, allAudioTracks, searchIndex, audioMatchPredicate); + if (switchIndex === -1) { + // could not find matching variant + return null; + } + // and switch level to acheive the audio group switch + hls.nextLoadLevel = switchIndex; + } + if (audioOption.channels || audioOption.audioCodec) { + // Could not find a match with codec / channels predicate + // Find a match without channels or codec + var withoutCodecAndChannelsMatch = findMatchingOption(audioOption, allAudioTracks); + if (withoutCodecAndChannelsMatch > -1) { + return allAudioTracks[withoutCodecAndChannelsMatch]; + } + } + } + } + return null; + }; + _proto.setAudioTrack = function setAudioTrack(newId) { + var tracks = this.tracksInGroup; + + // check if level idx is valid + if (newId < 0 || newId >= tracks.length) { + this.warn("Invalid audio track id: " + newId); + return; + } + + // stopping live reloading timer if any + this.clearTimer(); + this.selectDefaultTrack = false; + var lastTrack = this.currentTrack; + var track = tracks[newId]; + var trackLoaded = track.details && !track.details.live; + if (newId === this.trackId && track === lastTrack && trackLoaded) { + return; + } + this.log("Switching to audio-track " + newId + " \"" + track.name + "\" lang:" + track.lang + " group:" + track.groupId + " channels:" + track.channels); + this.trackId = newId; + this.currentTrack = track; + this.hls.trigger(Events.AUDIO_TRACK_SWITCHING, _objectSpread2({}, track)); + // Do not reload track unless live + if (trackLoaded) { + return; + } + var hlsUrlParameters = this.switchParams(track.url, lastTrack == null ? void 0 : lastTrack.details, track.details); + this.loadPlaylist(hlsUrlParameters); + }; + _proto.findTrackId = function findTrackId(currentTrack) { + var audioTracks = this.tracksInGroup; + for (var i = 0; i < audioTracks.length; i++) { + var track = audioTracks[i]; + if (this.selectDefaultTrack && !track.default) { + continue; + } + if (!currentTrack || matchesOption(currentTrack, track, audioMatchPredicate)) { + return i; + } + } + if (currentTrack) { + var name = currentTrack.name, + lang = currentTrack.lang, + assocLang = currentTrack.assocLang, + characteristics = currentTrack.characteristics, + audioCodec = currentTrack.audioCodec, + channels = currentTrack.channels; + for (var _i = 0; _i < audioTracks.length; _i++) { + var _track = audioTracks[_i]; + if (matchesOption({ + name: name, + lang: lang, + assocLang: assocLang, + characteristics: characteristics, + audioCodec: audioCodec, + channels: channels + }, _track, audioMatchPredicate)) { + return _i; + } + } + for (var _i2 = 0; _i2 < audioTracks.length; _i2++) { + var _track2 = audioTracks[_i2]; + if (mediaAttributesIdentical(currentTrack.attrs, _track2.attrs, ['LANGUAGE', 'ASSOC-LANGUAGE', 'CHARACTERISTICS'])) { + return _i2; + } + } + for (var _i3 = 0; _i3 < audioTracks.length; _i3++) { + var _track3 = audioTracks[_i3]; + if (mediaAttributesIdentical(currentTrack.attrs, _track3.attrs, ['LANGUAGE'])) { + return _i3; + } + } + } + return -1; + }; + _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) { + var audioTrack = this.currentTrack; + if (this.shouldLoadPlaylist(audioTrack) && audioTrack) { + _BasePlaylistControll.prototype.loadPlaylist.call(this); + var id = audioTrack.id; + var groupId = audioTrack.groupId; + var url = audioTrack.url; + if (hlsUrlParameters) { + try { + url = hlsUrlParameters.addDirectives(url); + } catch (error) { + this.warn("Could not construct new URL with HLS Delivery Directives: " + error); + } + } + // track not retrieved yet, or live playlist we need to (re)load it + this.log("loading audio-track playlist " + id + " \"" + audioTrack.name + "\" lang:" + audioTrack.lang + " group:" + groupId); + this.clearTimer(); + this.hls.trigger(Events.AUDIO_TRACK_LOADING, { + url: url, + id: id, + groupId: groupId, + deliveryDirectives: hlsUrlParameters || null + }); + } + }; + return _createClass(AudioTrackController, [{ + key: "allAudioTracks", + get: function get() { + return this.tracks; + } + }, { + key: "audioTracks", + get: function get() { + return this.tracksInGroup; + } + }, { + key: "audioTrack", + get: function get() { + return this.trackId; + }, + set: function set(newId) { + // If audio track is selected from API then don't choose from the manifest default track + this.selectDefaultTrack = false; + this.setAudioTrack(newId); + } + }]); + }(BasePlaylistController); + + var TICK_INTERVAL$1 = 500; // how often to tick in ms + + var SubtitleStreamController = /*#__PURE__*/function (_BaseStreamController) { + function SubtitleStreamController(hls, fragmentTracker, keyLoader) { + var _this; + _this = _BaseStreamController.call(this, hls, fragmentTracker, keyLoader, 'subtitle-stream-controller', PlaylistLevelType.SUBTITLE) || this; + _this.currentTrackId = -1; + _this.tracksBuffered = []; + _this.mainDetails = null; + _this.registerListeners(); + return _this; + } + _inheritsLoose(SubtitleStreamController, _BaseStreamController); + var _proto = SubtitleStreamController.prototype; + _proto.onHandlerDestroying = function onHandlerDestroying() { + this.unregisterListeners(); + _BaseStreamController.prototype.onHandlerDestroying.call(this); + this.mainDetails = null; + }; + _proto.registerListeners = function registerListeners() { + _BaseStreamController.prototype.registerListeners.call(this); + var hls = this.hls; + hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this); + hls.on(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this); + hls.on(Events.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this); + hls.on(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this); + hls.on(Events.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this); + hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this); + hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this); + }; + _proto.unregisterListeners = function unregisterListeners() { + _BaseStreamController.prototype.unregisterListeners.call(this); + var hls = this.hls; + hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this); + hls.off(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this); + hls.off(Events.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this); + hls.off(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this); + hls.off(Events.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this); + hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this); + hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this); + }; + _proto.startLoad = function startLoad(startPosition) { + this.stopLoad(); + this.state = State.IDLE; + this.setInterval(TICK_INTERVAL$1); + this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition; + this.tick(); + }; + _proto.onManifestLoading = function onManifestLoading() { + _BaseStreamController.prototype.onManifestLoading.call(this); + this.mainDetails = null; + }; + _proto.onMediaDetaching = function onMediaDetaching() { + this.tracksBuffered = []; + _BaseStreamController.prototype.onMediaDetaching.call(this); + }; + _proto.onLevelLoaded = function onLevelLoaded(event, data) { + this.mainDetails = data.details; + }; + _proto.onSubtitleFragProcessed = function onSubtitleFragProcessed(event, data) { + var frag = data.frag, + success = data.success; + if (frag.sn !== 'initSegment') { + this.fragPrevious = frag; + } + this.state = State.IDLE; + if (!success) { + return; + } + var buffered = this.tracksBuffered[this.currentTrackId]; + if (!buffered) { + return; + } + + // Create/update a buffered array matching the interface used by BufferHelper.bufferedInfo + // so we can re-use the logic used to detect how much has been buffered + var timeRange; + var fragStart = frag.start; + for (var i = 0; i < buffered.length; i++) { + if (fragStart >= buffered[i].start && fragStart <= buffered[i].end) { + timeRange = buffered[i]; + break; + } + } + var fragEnd = frag.start + frag.duration; + if (timeRange) { + timeRange.end = fragEnd; + } else { + timeRange = { + start: fragStart, + end: fragEnd + }; + buffered.push(timeRange); + } + this.fragmentTracker.fragBuffered(frag); + this.fragBufferedComplete(frag, null); + }; + _proto.onBufferFlushing = function onBufferFlushing(event, data) { + var startOffset = data.startOffset, + endOffset = data.endOffset; + if (startOffset === 0 && endOffset !== Number.POSITIVE_INFINITY) { + var endOffsetSubtitles = endOffset - 1; + if (endOffsetSubtitles <= 0) { + return; + } + data.endOffsetSubtitles = Math.max(0, endOffsetSubtitles); + this.tracksBuffered.forEach(function (buffered) { + for (var i = 0; i < buffered.length;) { + if (buffered[i].end <= endOffsetSubtitles) { + buffered.shift(); + continue; + } else if (buffered[i].start < endOffsetSubtitles) { + buffered[i].start = endOffsetSubtitles; + } else { + break; + } + i++; + } + }); + this.fragmentTracker.removeFragmentsInRange(startOffset, endOffsetSubtitles, PlaylistLevelType.SUBTITLE); + } + }; + _proto.onFragBuffered = function onFragBuffered(event, data) { + if (!this.loadedmetadata && data.frag.type === PlaylistLevelType.MAIN) { + var _this$media; + if ((_this$media = this.media) != null && _this$media.buffered.length) { + this.loadedmetadata = true; + } + } + } + + // If something goes wrong, proceed to next frag, if we were processing one. + ; + _proto.onError = function onError(event, data) { + var frag = data.frag; + if ((frag == null ? void 0 : frag.type) === PlaylistLevelType.SUBTITLE) { + if (data.details === ErrorDetails.FRAG_GAP) { + this.fragmentTracker.fragBuffered(frag, true); + } + if (this.fragCurrent) { + this.fragCurrent.abortRequests(); + } + if (this.state !== State.STOPPED) { + this.state = State.IDLE; + } + } + } + + // Got all new subtitle levels. + ; + _proto.onSubtitleTracksUpdated = function onSubtitleTracksUpdated(event, _ref) { + var _this2 = this; + var subtitleTracks = _ref.subtitleTracks; + if (this.levels && subtitleOptionsIdentical(this.levels, subtitleTracks)) { + this.levels = subtitleTracks.map(function (mediaPlaylist) { + return new Level(mediaPlaylist); + }); + return; + } + this.tracksBuffered = []; + this.levels = subtitleTracks.map(function (mediaPlaylist) { + var level = new Level(mediaPlaylist); + _this2.tracksBuffered[level.id] = []; + return level; + }); + this.fragmentTracker.removeFragmentsInRange(0, Number.POSITIVE_INFINITY, PlaylistLevelType.SUBTITLE); + this.fragPrevious = null; + this.mediaBuffer = null; + }; + _proto.onSubtitleTrackSwitch = function onSubtitleTrackSwitch(event, data) { + var _this$levels; + this.currentTrackId = data.id; + if (!((_this$levels = this.levels) != null && _this$levels.length) || this.currentTrackId === -1) { + this.clearInterval(); + return; + } + + // Check if track has the necessary details to load fragments + var currentTrack = this.levels[this.currentTrackId]; + if (currentTrack != null && currentTrack.details) { + this.mediaBuffer = this.mediaBufferTimeRanges; + } else { + this.mediaBuffer = null; + } + if (currentTrack && this.state !== State.STOPPED) { + this.setInterval(TICK_INTERVAL$1); + } + } + + // Got a new set of subtitle fragments. + ; + _proto.onSubtitleTrackLoaded = function onSubtitleTrackLoaded(event, data) { + var _track$details; + var currentTrackId = this.currentTrackId, + levels = this.levels; + var newDetails = data.details, + trackId = data.id; + if (!levels) { + this.warn("Subtitle tracks were reset while loading level " + trackId); + return; + } + var track = levels[trackId]; + if (trackId >= levels.length || !track) { + return; + } + this.log("Subtitle track " + trackId + " loaded [" + newDetails.startSN + "," + newDetails.endSN + "]" + (newDetails.lastPartSn ? "[part-" + newDetails.lastPartSn + "-" + newDetails.lastPartIndex + "]" : '') + ",duration:" + newDetails.totalduration); + this.mediaBuffer = this.mediaBufferTimeRanges; + var sliding = 0; + if (newDetails.live || (_track$details = track.details) != null && _track$details.live) { + var mainDetails = this.mainDetails; + if (newDetails.deltaUpdateFailed || !mainDetails) { + return; + } + var mainSlidingStartFragment = mainDetails.fragments[0]; + if (!track.details) { + if (newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) { + alignMediaPlaylistByPDT(newDetails, mainDetails); + sliding = newDetails.fragments[0].start; + } else if (mainSlidingStartFragment) { + // line up live playlist with main so that fragments in range are loaded + sliding = mainSlidingStartFragment.start; + addSliding(newDetails, sliding); + } + } else { + var _this$levelLastLoaded; + sliding = this.alignPlaylists(newDetails, track.details, (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details); + if (sliding === 0 && mainSlidingStartFragment) { + // realign with main when there is no overlap with last refresh + sliding = mainSlidingStartFragment.start; + addSliding(newDetails, sliding); + } + } + } + track.details = newDetails; + this.levelLastLoaded = track; + if (trackId !== currentTrackId) { + return; + } + if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) { + this.setStartPosition(this.mainDetails || newDetails, sliding); + } + + // trigger handler right now + this.tick(); + + // If playlist is misaligned because of bad PDT or drift, delete details to resync with main on reload + if (newDetails.live && !this.fragCurrent && this.media && this.state === State.IDLE) { + var foundFrag = findFragmentByPTS(null, newDetails.fragments, this.media.currentTime, 0); + if (!foundFrag) { + this.warn('Subtitle playlist not aligned with playback'); + track.details = undefined; + } + } + }; + _proto._handleFragmentLoadComplete = function _handleFragmentLoadComplete(fragLoadedData) { + var _this3 = this; + var frag = fragLoadedData.frag, + payload = fragLoadedData.payload; + var decryptData = frag.decryptdata; + var hls = this.hls; + if (this.fragContextChanged(frag)) { + return; + } + // check to see if the payload needs to be decrypted + if (payload && payload.byteLength > 0 && decryptData != null && decryptData.key && decryptData.iv && isFullSegmentEncryption(decryptData.method)) { + var startTime = performance.now(); + // decrypt the subtitles + this.decrypter.decrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer, getAesModeFromFullSegmentMethod(decryptData.method)).catch(function (err) { + hls.trigger(Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.FRAG_DECRYPT_ERROR, + fatal: false, + error: err, + reason: err.message, + frag: frag + }); + throw err; + }).then(function (decryptedData) { + var endTime = performance.now(); + hls.trigger(Events.FRAG_DECRYPTED, { + frag: frag, + payload: decryptedData, + stats: { + tstart: startTime, + tdecrypt: endTime + } + }); + }).catch(function (err) { + _this3.warn(err.name + ": " + err.message); + _this3.state = State.IDLE; + }); + } + }; + _proto.doTick = function doTick() { + if (!this.media) { + this.state = State.IDLE; + return; + } + if (this.state === State.IDLE) { + var currentTrackId = this.currentTrackId, + levels = this.levels; + var track = levels == null ? void 0 : levels[currentTrackId]; + if (!track || !levels.length || !track.details) { + return; + } + var config = this.config; + var currentTime = this.getLoadPosition(); + var bufferedInfo = BufferHelper.bufferedInfo(this.tracksBuffered[this.currentTrackId] || [], currentTime, config.maxBufferHole); + var targetBufferTime = bufferedInfo.end, + bufferLen = bufferedInfo.len; + var trackDetails = track.details; + var maxBufLen = this.hls.maxBufferLength + trackDetails.levelTargetDuration; + if (bufferLen > maxBufLen) { + return; + } + var fragments = trackDetails.fragments; + var fragLen = fragments.length; + var end = trackDetails.edge; + var foundFrag = null; + var fragPrevious = this.fragPrevious; + if (targetBufferTime < end) { + var tolerance = config.maxFragLookUpTolerance; + var lookupTolerance = targetBufferTime > end - tolerance ? 0 : tolerance; + foundFrag = findFragmentByPTS(fragPrevious, fragments, Math.max(fragments[0].start, targetBufferTime), lookupTolerance); + if (!foundFrag && fragPrevious && fragPrevious.start < fragments[0].start) { + foundFrag = fragments[0]; + } + } else { + foundFrag = fragments[fragLen - 1]; + } + if (!foundFrag) { + return; + } + foundFrag = this.mapToInitFragWhenRequired(foundFrag); + if (foundFrag.sn !== 'initSegment') { + // Load earlier fragment in same discontinuity to make up for misaligned playlists and cues that extend beyond end of segment + var curSNIdx = foundFrag.sn - trackDetails.startSN; + var prevFrag = fragments[curSNIdx - 1]; + if (prevFrag && prevFrag.cc === foundFrag.cc && this.fragmentTracker.getState(prevFrag) === FragmentState.NOT_LOADED) { + foundFrag = prevFrag; + } + } + if (this.fragmentTracker.getState(foundFrag) === FragmentState.NOT_LOADED) { + // only load if fragment is not loaded + this.loadFragment(foundFrag, track, targetBufferTime); + } + } + }; + _proto.loadFragment = function loadFragment(frag, level, targetBufferTime) { + if (frag.sn === 'initSegment') { + this._loadInitSegment(frag, level); + } else { + _BaseStreamController.prototype.loadFragment.call(this, frag, level, targetBufferTime); + } + }; + return _createClass(SubtitleStreamController, [{ + key: "mediaBufferTimeRanges", + get: function get() { + return new BufferableInstance(this.tracksBuffered[this.currentTrackId] || []); + } + }]); + }(BaseStreamController); + var BufferableInstance = function BufferableInstance(timeranges) { + this.buffered = void 0; + var getRange = function getRange(name, index, length) { + index = index >>> 0; + if (index > length - 1) { + throw new DOMException("Failed to execute '" + name + "' on 'TimeRanges': The index provided (" + index + ") is greater than the maximum bound (" + length + ")"); + } + return timeranges[index][name]; + }; + this.buffered = { + get length() { + return timeranges.length; + }, + end: function end(index) { + return getRange('end', index, timeranges.length); + }, + start: function start(index) { + return getRange('start', index, timeranges.length); + } + }; + }; + + var SubtitleTrackController = /*#__PURE__*/function (_BasePlaylistControll) { + function SubtitleTrackController(hls) { + var _this; + _this = _BasePlaylistControll.call(this, hls, 'subtitle-track-controller') || this; + _this.media = null; + _this.tracks = []; + _this.groupIds = null; + _this.tracksInGroup = []; + _this.trackId = -1; + _this.currentTrack = null; + _this.selectDefaultTrack = true; + _this.queuedDefaultTrack = -1; + _this.useTextTrackPolling = false; + _this.subtitlePollingInterval = -1; + _this._subtitleDisplay = true; + _this.asyncPollTrackChange = function () { + return _this.pollTrackChange(0); + }; + _this.onTextTracksChanged = function () { + if (!_this.useTextTrackPolling) { + self.clearInterval(_this.subtitlePollingInterval); + } + // Media is undefined when switching streams via loadSource() + if (!_this.media || !_this.hls.config.renderTextTracksNatively) { + return; + } + var textTrack = null; + var tracks = filterSubtitleTracks(_this.media.textTracks); + for (var i = 0; i < tracks.length; i++) { + if (tracks[i].mode === 'hidden') { + // Do not break in case there is a following track with showing. + textTrack = tracks[i]; + } else if (tracks[i].mode === 'showing') { + textTrack = tracks[i]; + break; + } + } + + // Find internal track index for TextTrack + var trackId = _this.findTrackForTextTrack(textTrack); + if (_this.subtitleTrack !== trackId) { + _this.setSubtitleTrack(trackId); + } + }; + _this.registerListeners(); + return _this; + } + _inheritsLoose(SubtitleTrackController, _BasePlaylistControll); + var _proto = SubtitleTrackController.prototype; + _proto.destroy = function destroy() { + this.unregisterListeners(); + this.tracks.length = 0; + this.tracksInGroup.length = 0; + this.currentTrack = null; + // @ts-ignore + this.onTextTracksChanged = this.asyncPollTrackChange = null; + _BasePlaylistControll.prototype.destroy.call(this); + }; + _proto.registerListeners = function registerListeners() { + var hls = this.hls; + hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this); + hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this); + hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this); + hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this); + hls.on(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this); + hls.on(Events.ERROR, this.onError, this); + }; + _proto.unregisterListeners = function unregisterListeners() { + var hls = this.hls; + hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this); + hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this); + hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this); + hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this); + hls.off(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this); + hls.off(Events.ERROR, this.onError, this); + } + + // Listen for subtitle track change, then extract the current track ID. + ; + _proto.onMediaAttached = function onMediaAttached(event, data) { + this.media = data.media; + if (!this.media) { + return; + } + if (this.queuedDefaultTrack > -1) { + this.subtitleTrack = this.queuedDefaultTrack; + this.queuedDefaultTrack = -1; + } + this.useTextTrackPolling = !(this.media.textTracks && 'onchange' in this.media.textTracks); + if (this.useTextTrackPolling) { + this.pollTrackChange(500); + } else { + this.media.textTracks.addEventListener('change', this.asyncPollTrackChange); + } + }; + _proto.pollTrackChange = function pollTrackChange(timeout) { + self.clearInterval(this.subtitlePollingInterval); + this.subtitlePollingInterval = self.setInterval(this.onTextTracksChanged, timeout); + }; + _proto.onMediaDetaching = function onMediaDetaching() { + if (!this.media) { + return; + } + self.clearInterval(this.subtitlePollingInterval); + if (!this.useTextTrackPolling) { + this.media.textTracks.removeEventListener('change', this.asyncPollTrackChange); + } + if (this.trackId > -1) { + this.queuedDefaultTrack = this.trackId; + } + var textTracks = filterSubtitleTracks(this.media.textTracks); + // Clear loaded cues on media detachment from tracks + textTracks.forEach(function (track) { + clearCurrentCues(track); + }); + // Disable all subtitle tracks before detachment so when reattached only tracks in that content are enabled. + this.subtitleTrack = -1; + this.media = null; + }; + _proto.onManifestLoading = function onManifestLoading() { + this.tracks = []; + this.groupIds = null; + this.tracksInGroup = []; + this.trackId = -1; + this.currentTrack = null; + this.selectDefaultTrack = true; + } + + // Fired whenever a new manifest is loaded. + ; + _proto.onManifestParsed = function onManifestParsed(event, data) { + this.tracks = data.subtitleTracks; + }; + _proto.onSubtitleTrackLoaded = function onSubtitleTrackLoaded(event, data) { + var id = data.id, + groupId = data.groupId, + details = data.details; + var trackInActiveGroup = this.tracksInGroup[id]; + if (!trackInActiveGroup || trackInActiveGroup.groupId !== groupId) { + this.warn("Subtitle track with id:" + id + " and group:" + groupId + " not found in active group " + (trackInActiveGroup == null ? void 0 : trackInActiveGroup.groupId)); + return; + } + var curDetails = trackInActiveGroup.details; + trackInActiveGroup.details = data.details; + this.log("Subtitle track " + id + " \"" + trackInActiveGroup.name + "\" lang:" + trackInActiveGroup.lang + " group:" + groupId + " loaded [" + details.startSN + "-" + details.endSN + "]"); + if (id === this.trackId) { + this.playlistLoaded(id, data, curDetails); + } + }; + _proto.onLevelLoading = function onLevelLoading(event, data) { + this.switchLevel(data.level); + }; + _proto.onLevelSwitching = function onLevelSwitching(event, data) { + this.switchLevel(data.level); + }; + _proto.switchLevel = function switchLevel(levelIndex) { + var levelInfo = this.hls.levels[levelIndex]; + if (!levelInfo) { + return; + } + var subtitleGroups = levelInfo.subtitleGroups || null; + var currentGroups = this.groupIds; + var currentTrack = this.currentTrack; + if (!subtitleGroups || (currentGroups == null ? void 0 : currentGroups.length) !== (subtitleGroups == null ? void 0 : subtitleGroups.length) || subtitleGroups != null && subtitleGroups.some(function (groupId) { + return (currentGroups == null ? void 0 : currentGroups.indexOf(groupId)) === -1; + })) { + this.groupIds = subtitleGroups; + this.trackId = -1; + this.currentTrack = null; + var subtitleTracks = this.tracks.filter(function (track) { + return !subtitleGroups || subtitleGroups.indexOf(track.groupId) !== -1; + }); + if (subtitleTracks.length) { + // Disable selectDefaultTrack if there are no default tracks + if (this.selectDefaultTrack && !subtitleTracks.some(function (track) { + return track.default; + })) { + this.selectDefaultTrack = false; + } + // track.id should match hls.audioTracks index + subtitleTracks.forEach(function (track, i) { + track.id = i; + }); + } else if (!currentTrack && !this.tracksInGroup.length) { + // Do not dispatch SUBTITLE_TRACKS_UPDATED when there were and are no tracks + return; + } + this.tracksInGroup = subtitleTracks; + + // Find preferred track + var subtitlePreference = this.hls.config.subtitlePreference; + if (!currentTrack && subtitlePreference) { + this.selectDefaultTrack = false; + var groupIndex = findMatchingOption(subtitlePreference, subtitleTracks); + if (groupIndex > -1) { + currentTrack = subtitleTracks[groupIndex]; + } else { + var allIndex = findMatchingOption(subtitlePreference, this.tracks); + currentTrack = this.tracks[allIndex]; + } + } + + // Select initial track + var trackId = this.findTrackId(currentTrack); + if (trackId === -1 && currentTrack) { + trackId = this.findTrackId(null); + } + + // Dispatch events and load track if needed + var subtitleTracksUpdated = { + subtitleTracks: subtitleTracks + }; + this.log("Updating subtitle tracks, " + subtitleTracks.length + " track(s) found in \"" + (subtitleGroups == null ? void 0 : subtitleGroups.join(',')) + "\" group-id"); + this.hls.trigger(Events.SUBTITLE_TRACKS_UPDATED, subtitleTracksUpdated); + if (trackId !== -1 && this.trackId === -1) { + this.setSubtitleTrack(trackId); + } + } else if (this.shouldReloadPlaylist(currentTrack)) { + // Retry playlist loading if no playlist is or has been loaded yet + this.setSubtitleTrack(this.trackId); + } + }; + _proto.findTrackId = function findTrackId(currentTrack) { + var tracks = this.tracksInGroup; + var selectDefault = this.selectDefaultTrack; + for (var i = 0; i < tracks.length; i++) { + var track = tracks[i]; + if (selectDefault && !track.default || !selectDefault && !currentTrack) { + continue; + } + if (!currentTrack || matchesOption(track, currentTrack)) { + return i; + } + } + if (currentTrack) { + for (var _i = 0; _i < tracks.length; _i++) { + var _track = tracks[_i]; + if (mediaAttributesIdentical(currentTrack.attrs, _track.attrs, ['LANGUAGE', 'ASSOC-LANGUAGE', 'CHARACTERISTICS'])) { + return _i; + } + } + for (var _i2 = 0; _i2 < tracks.length; _i2++) { + var _track2 = tracks[_i2]; + if (mediaAttributesIdentical(currentTrack.attrs, _track2.attrs, ['LANGUAGE'])) { + return _i2; + } + } + } + return -1; + }; + _proto.findTrackForTextTrack = function findTrackForTextTrack(textTrack) { + if (textTrack) { + var tracks = this.tracksInGroup; + for (var i = 0; i < tracks.length; i++) { + var track = tracks[i]; + if (subtitleTrackMatchesTextTrack(track, textTrack)) { + return i; + } + } + } + return -1; + }; + _proto.onError = function onError(event, data) { + if (data.fatal || !data.context) { + return; + } + if (data.context.type === PlaylistContextType.SUBTITLE_TRACK && data.context.id === this.trackId && (!this.groupIds || this.groupIds.indexOf(data.context.groupId) !== -1)) { + this.checkRetry(data); + } + }; + _proto.setSubtitleOption = function setSubtitleOption(subtitleOption) { + this.hls.config.subtitlePreference = subtitleOption; + if (subtitleOption) { + var allSubtitleTracks = this.allSubtitleTracks; + this.selectDefaultTrack = false; + if (allSubtitleTracks.length) { + // First see if current option matches (no switch op) + var currentTrack = this.currentTrack; + if (currentTrack && matchesOption(subtitleOption, currentTrack)) { + return currentTrack; + } + // Find option in current group + var groupIndex = findMatchingOption(subtitleOption, this.tracksInGroup); + if (groupIndex > -1) { + var track = this.tracksInGroup[groupIndex]; + this.setSubtitleTrack(groupIndex); + return track; + } else if (currentTrack) { + // If this is not the initial selection return null + // option should have matched one in active group + return null; + } else { + // Find the option in all tracks for initial selection + var allIndex = findMatchingOption(subtitleOption, allSubtitleTracks); + if (allIndex > -1) { + return allSubtitleTracks[allIndex]; + } + } + } + } + return null; + }; + _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) { + _BasePlaylistControll.prototype.loadPlaylist.call(this); + var currentTrack = this.currentTrack; + if (this.shouldLoadPlaylist(currentTrack) && currentTrack) { + var id = currentTrack.id; + var groupId = currentTrack.groupId; + var url = currentTrack.url; + if (hlsUrlParameters) { + try { + url = hlsUrlParameters.addDirectives(url); + } catch (error) { + this.warn("Could not construct new URL with HLS Delivery Directives: " + error); + } + } + this.log("Loading subtitle playlist for id " + id); + this.hls.trigger(Events.SUBTITLE_TRACK_LOADING, { + url: url, + id: id, + groupId: groupId, + deliveryDirectives: hlsUrlParameters || null + }); + } + } + + /** + * Disables the old subtitleTrack and sets current mode on the next subtitleTrack. + * This operates on the DOM textTracks. + * A value of -1 will disable all subtitle tracks. + */; + _proto.toggleTrackModes = function toggleTrackModes() { + var media = this.media; + if (!media) { + return; + } + var textTracks = filterSubtitleTracks(media.textTracks); + var currentTrack = this.currentTrack; + var nextTrack; + if (currentTrack) { + nextTrack = textTracks.filter(function (textTrack) { + return subtitleTrackMatchesTextTrack(currentTrack, textTrack); + })[0]; + if (!nextTrack) { + this.warn("Unable to find subtitle TextTrack with name \"" + currentTrack.name + "\" and language \"" + currentTrack.lang + "\""); + } + } + [].slice.call(textTracks).forEach(function (track) { + if (track.mode !== 'disabled' && track !== nextTrack) { + track.mode = 'disabled'; + } + }); + if (nextTrack) { + var mode = this.subtitleDisplay ? 'showing' : 'hidden'; + if (nextTrack.mode !== mode) { + nextTrack.mode = mode; + } + } + } + + /** + * This method is responsible for validating the subtitle index and periodically reloading if live. + * Dispatches the SUBTITLE_TRACK_SWITCH event, which instructs the subtitle-stream-controller to load the selected track. + */; + _proto.setSubtitleTrack = function setSubtitleTrack(newId) { + var tracks = this.tracksInGroup; + + // setting this.subtitleTrack will trigger internal logic + // if media has not been attached yet, it will fail + // we keep a reference to the default track id + // and we'll set subtitleTrack when onMediaAttached is triggered + if (!this.media) { + this.queuedDefaultTrack = newId; + return; + } + + // exit if track id as already set or invalid + if (newId < -1 || newId >= tracks.length || !isFiniteNumber(newId)) { + this.warn("Invalid subtitle track id: " + newId); + return; + } + + // stopping live reloading timer if any + this.clearTimer(); + this.selectDefaultTrack = false; + var lastTrack = this.currentTrack; + var track = tracks[newId] || null; + this.trackId = newId; + this.currentTrack = track; + this.toggleTrackModes(); + if (!track) { + // switch to -1 + this.hls.trigger(Events.SUBTITLE_TRACK_SWITCH, { + id: newId + }); + return; + } + var trackLoaded = !!track.details && !track.details.live; + if (newId === this.trackId && track === lastTrack && trackLoaded) { + return; + } + this.log("Switching to subtitle-track " + newId + (track ? " \"" + track.name + "\" lang:" + track.lang + " group:" + track.groupId : '')); + var id = track.id, + _track$groupId = track.groupId, + groupId = _track$groupId === void 0 ? '' : _track$groupId, + name = track.name, + type = track.type, + url = track.url; + this.hls.trigger(Events.SUBTITLE_TRACK_SWITCH, { + id: id, + groupId: groupId, + name: name, + type: type, + url: url + }); + var hlsUrlParameters = this.switchParams(track.url, lastTrack == null ? void 0 : lastTrack.details, track.details); + this.loadPlaylist(hlsUrlParameters); + }; + return _createClass(SubtitleTrackController, [{ + key: "subtitleDisplay", + get: function get() { + return this._subtitleDisplay; + }, + set: function set(value) { + this._subtitleDisplay = value; + if (this.trackId > -1) { + this.toggleTrackModes(); + } + } + }, { + key: "allSubtitleTracks", + get: function get() { + return this.tracks; + } + + /** get alternate subtitle tracks list from playlist **/ + }, { + key: "subtitleTracks", + get: function get() { + return this.tracksInGroup; + } + + /** get/set index of the selected subtitle track (based on index in subtitle track lists) **/ + }, { + key: "subtitleTrack", + get: function get() { + return this.trackId; + }, + set: function set(newId) { + this.selectDefaultTrack = false; + this.setSubtitleTrack(newId); + } + }]); + }(BasePlaylistController); + + var BufferOperationQueue = /*#__PURE__*/function () { + function BufferOperationQueue(sourceBufferReference) { + this.buffers = void 0; + this.queues = { + video: [], + audio: [], + audiovideo: [] + }; + this.buffers = sourceBufferReference; + } + var _proto = BufferOperationQueue.prototype; + _proto.append = function append(operation, type, pending) { + var queue = this.queues[type]; + queue.push(operation); + if (queue.length === 1 && !pending) { + this.executeNext(type); + } + }; + _proto.appendBlocker = function appendBlocker(type) { + var _this = this; + return new Promise(function (resolve) { + var operation = { + execute: resolve, + onStart: function onStart() {}, + onComplete: function onComplete() {}, + onError: function onError() {} + }; + _this.append(operation, type); + }); + }; + _proto.unblockAudio = function unblockAudio(op) { + var queue = this.queues.audio; + if (queue[0] === op) { + this.shiftAndExecuteNext('audio'); + } + }; + _proto.executeNext = function executeNext(type) { + var queue = this.queues[type]; + if (queue.length) { + var operation = queue[0]; + try { + // Operations are expected to result in an 'updateend' event being fired. If not, the queue will lock. Operations + // which do not end with this event must call _onSBUpdateEnd manually + operation.execute(); + } catch (error) { + logger.warn("[buffer-operation-queue]: Exception executing \"" + type + "\" SourceBuffer operation: " + error); + operation.onError(error); + + // Only shift the current operation off, otherwise the updateend handler will do this for us + var sb = this.buffers[type]; + if (!(sb != null && sb.updating)) { + this.shiftAndExecuteNext(type); + } + } + } + }; + _proto.shiftAndExecuteNext = function shiftAndExecuteNext(type) { + this.queues[type].shift(); + this.executeNext(type); + }; + _proto.current = function current(type) { + return this.queues[type][0]; + }; + return BufferOperationQueue; + }(); + + var VIDEO_CODEC_PROFILE_REPLACE = /(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/; + var BufferController = /*#__PURE__*/function (_Logger) { + function BufferController(hls, fragmentTracker) { + var _this; + _this = _Logger.call(this, 'buffer-controller', hls.logger) || this; + // The level details used to determine duration, target-duration and live + _this.details = null; + // cache the self generated object url to detect hijack of video tag + _this._objectUrl = null; + // A queue of buffer operations which require the SourceBuffer to not be updating upon execution + _this.operationQueue = void 0; + // References to event listeners for each SourceBuffer, so that they can be referenced for event removal + _this.listeners = void 0; + _this.hls = void 0; + _this.fragmentTracker = void 0; + // The number of BUFFER_CODEC events received before any sourceBuffers are created + _this.bufferCodecEventsExpected = 0; + // The total number of BUFFER_CODEC events received + _this._bufferCodecEventsTotal = 0; + // A reference to the attached media element + _this.media = null; + // A reference to the active media source + _this.mediaSource = null; + // Last MP3 audio chunk appended + _this.lastMpegAudioChunk = null; + // Audio fragment blocked from appending until corresponding video appends or context changes + _this.blockedAudioAppend = null; + // Keep track of video append position for unblocking audio + _this.lastVideoAppendEnd = 0; + _this.appendSource = void 0; + // counters + _this.appendErrors = { + audio: 0, + video: 0, + audiovideo: 0 + }; + _this.tracks = {}; + _this.pendingTracks = {}; + _this.sourceBuffer = void 0; + _this._onEndStreaming = function (event) { + if (!_this.hls) { + return; + } + _this.hls.pauseBuffering(); + }; + _this._onStartStreaming = function (event) { + if (!_this.hls) { + return; + } + _this.hls.resumeBuffering(); + }; + // Keep as arrow functions so that we can directly reference these functions directly as event listeners + _this._onMediaSourceOpen = function () { + var _this2 = _this, + media = _this2.media, + mediaSource = _this2.mediaSource; + _this.log('Media source opened'); + if (media) { + media.removeEventListener('emptied', _this._onMediaEmptied); + var durationAndRange = _this.getDurationAndRange(); + if (durationAndRange) { + _this.updateMediaSource(durationAndRange); + } + _this.hls.trigger(Events.MEDIA_ATTACHED, { + media: media, + mediaSource: mediaSource + }); + } + if (mediaSource) { + // once received, don't listen anymore to sourceopen event + mediaSource.removeEventListener('sourceopen', _this._onMediaSourceOpen); + } + _this.checkPendingTracks(); + }; + _this._onMediaSourceClose = function () { + _this.log('Media source closed'); + }; + _this._onMediaSourceEnded = function () { + _this.log('Media source ended'); + }; + _this._onMediaEmptied = function () { + var _this3 = _this, + mediaSrc = _this3.mediaSrc, + _objectUrl = _this3._objectUrl; + if (mediaSrc !== _objectUrl) { + _this.error("Media element src was set while attaching MediaSource (" + _objectUrl + " > " + mediaSrc + ")"); + } + }; + _this.hls = hls; + _this.fragmentTracker = fragmentTracker; + _this.appendSource = isManagedMediaSource(getMediaSource(hls.config.preferManagedMediaSource)); + _this._initSourceBuffer(); + _this.registerListeners(); + return _this; + } + _inheritsLoose(BufferController, _Logger); + var _proto = BufferController.prototype; + _proto.hasSourceTypes = function hasSourceTypes() { + return this.getSourceBufferTypes().length > 0 || Object.keys(this.pendingTracks).length > 0; + }; + _proto.destroy = function destroy() { + this.unregisterListeners(); + this.details = null; + this.lastMpegAudioChunk = null; + // @ts-ignore + this.hls = this.fragmentTracker = null; + // @ts-ignore + this._onMediaSourceOpen = this._onMediaSourceClose = null; + // @ts-ignore + this._onMediaSourceEnded = null; + // @ts-ignore + this._onStartStreaming = this._onEndStreaming = null; + }; + _proto.registerListeners = function registerListeners() { + var hls = this.hls; + hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this); + hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this); + hls.on(Events.BUFFER_RESET, this.onBufferReset, this); + hls.on(Events.BUFFER_APPENDING, this.onBufferAppending, this); + hls.on(Events.BUFFER_CODECS, this.onBufferCodecs, this); + hls.on(Events.BUFFER_EOS, this.onBufferEos, this); + hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this); + hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this); + hls.on(Events.FRAG_PARSED, this.onFragParsed, this); + hls.on(Events.FRAG_CHANGED, this.onFragChanged, this); + hls.on(Events.ERROR, this.onError, this); + }; + _proto.unregisterListeners = function unregisterListeners() { + var hls = this.hls; + hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this); + hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this); + hls.off(Events.BUFFER_RESET, this.onBufferReset, this); + hls.off(Events.BUFFER_APPENDING, this.onBufferAppending, this); + hls.off(Events.BUFFER_CODECS, this.onBufferCodecs, this); + hls.off(Events.BUFFER_EOS, this.onBufferEos, this); + hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this); + hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this); + hls.off(Events.FRAG_PARSED, this.onFragParsed, this); + hls.off(Events.FRAG_CHANGED, this.onFragChanged, this); + hls.off(Events.ERROR, this.onError, this); + }; + _proto._initSourceBuffer = function _initSourceBuffer() { + this.sourceBuffer = {}; + this.operationQueue = new BufferOperationQueue(this.sourceBuffer); + this.listeners = { + audio: [], + video: [], + audiovideo: [] + }; + this.resetAppendErrors(); + this.lastMpegAudioChunk = null; + this.blockedAudioAppend = null; + this.lastVideoAppendEnd = 0; + }; + _proto.onManifestLoading = function onManifestLoading() { + this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = 0; + this.details = null; + }; + _proto.onManifestParsed = function onManifestParsed(event, data) { + // in case of alt audio 2 BUFFER_CODECS events will be triggered, one per stream controller + // sourcebuffers will be created all at once when the expected nb of tracks will be reached + // in case alt audio is not used, only one BUFFER_CODEC event will be fired from main stream controller + // it will contain the expected nb of source buffers, no need to compute it + var codecEvents = 2; + if (data.audio && !data.video || !data.altAudio || !true) { + codecEvents = 1; + } + this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = codecEvents; + this.log(this.bufferCodecEventsExpected + " bufferCodec event(s) expected"); + }; + _proto.onMediaAttaching = function onMediaAttaching(event, data) { + var media = this.media = data.media; + var MediaSource = getMediaSource(this.appendSource); + if (media && MediaSource) { + var _ms$constructor; + var ms = this.mediaSource = new MediaSource(); + this.log("created media source: " + ((_ms$constructor = ms.constructor) == null ? void 0 : _ms$constructor.name)); + // MediaSource listeners are arrow functions with a lexical scope, and do not need to be bound + ms.addEventListener('sourceopen', this._onMediaSourceOpen); + ms.addEventListener('sourceended', this._onMediaSourceEnded); + ms.addEventListener('sourceclose', this._onMediaSourceClose); + if (this.appendSource) { + ms.addEventListener('startstreaming', this._onStartStreaming); + ms.addEventListener('endstreaming', this._onEndStreaming); + } + + // cache the locally generated object url + var objectUrl = this._objectUrl = self.URL.createObjectURL(ms); + // link video and media Source + if (this.appendSource) { + try { + media.removeAttribute('src'); + // ManagedMediaSource will not open without disableRemotePlayback set to false or source alternatives + var MMS = self.ManagedMediaSource; + media.disableRemotePlayback = media.disableRemotePlayback || MMS && ms instanceof MMS; + removeSourceChildren(media); + addSource(media, objectUrl); + media.load(); + } catch (error) { + media.src = objectUrl; + } + } else { + media.src = objectUrl; + } + media.addEventListener('emptied', this._onMediaEmptied); + } + }; + _proto.onMediaDetaching = function onMediaDetaching() { + var media = this.media, + mediaSource = this.mediaSource, + _objectUrl = this._objectUrl; + if (mediaSource) { + this.log('media source detaching'); + if (mediaSource.readyState === 'open') { + try { + // endOfStream could trigger exception if any sourcebuffer is in updating state + // we don't really care about checking sourcebuffer state here, + // as we are anyway detaching the MediaSource + // let's just avoid this exception to propagate + mediaSource.endOfStream(); + } catch (err) { + this.warn("onMediaDetaching: " + err.message + " while calling endOfStream"); + } + } + // Clean up the SourceBuffers by invoking onBufferReset + this.onBufferReset(); + mediaSource.removeEventListener('sourceopen', this._onMediaSourceOpen); + mediaSource.removeEventListener('sourceended', this._onMediaSourceEnded); + mediaSource.removeEventListener('sourceclose', this._onMediaSourceClose); + if (this.appendSource) { + mediaSource.removeEventListener('startstreaming', this._onStartStreaming); + mediaSource.removeEventListener('endstreaming', this._onEndStreaming); + } + this.mediaSource = null; + this._objectUrl = null; + } + + // Detach properly the MediaSource from the HTMLMediaElement as + // suggested in https://github.com/w3c/media-source/issues/53. + if (media) { + media.removeEventListener('emptied', this._onMediaEmptied); + if (_objectUrl) { + self.URL.revokeObjectURL(_objectUrl); + } + + // clean up video tag src only if it's our own url. some external libraries might + // hijack the video tag and change its 'src' without destroying the Hls instance first + if (this.mediaSrc === _objectUrl) { + media.removeAttribute('src'); + if (this.appendSource) { + removeSourceChildren(media); + } + media.load(); + } else { + this.warn('media|source.src was changed by a third party - skip cleanup'); + } + this.media = null; + } + this.bufferCodecEventsExpected = this._bufferCodecEventsTotal; + this.pendingTracks = {}; + this.tracks = {}; + this.hls.trigger(Events.MEDIA_DETACHED, undefined); + }; + _proto.onBufferReset = function onBufferReset() { + var _this4 = this; + this.getSourceBufferTypes().forEach(function (type) { + _this4.resetBuffer(type); + }); + this._initSourceBuffer(); + this.hls.resumeBuffering(); + }; + _proto.resetBuffer = function resetBuffer(type) { + var sb = this.sourceBuffer[type]; + try { + if (sb) { + var _this$mediaSource; + this.removeBufferListeners(type); + // Synchronously remove the SB from the map before the next call in order to prevent an async function from + // accessing it + this.sourceBuffer[type] = undefined; + if ((_this$mediaSource = this.mediaSource) != null && _this$mediaSource.sourceBuffers.length) { + this.mediaSource.removeSourceBuffer(sb); + } + } + } catch (err) { + this.warn("onBufferReset " + type, err); + } + }; + _proto.onBufferCodecs = function onBufferCodecs(event, data) { + var _this5 = this; + var sourceBufferCount = this.getSourceBufferTypes().length; + var trackNames = Object.keys(data); + trackNames.forEach(function (trackName) { + if (sourceBufferCount) { + var _track$buffer; + // check if SourceBuffer codec needs to change + var track = _this5.tracks[trackName]; + if (track && typeof ((_track$buffer = track.buffer) == null ? void 0 : _track$buffer.changeType) === 'function') { + var _trackCodec; + var _data$trackName = data[trackName], + id = _data$trackName.id, + codec = _data$trackName.codec, + levelCodec = _data$trackName.levelCodec, + container = _data$trackName.container, + metadata = _data$trackName.metadata; + var currentCodecFull = pickMostCompleteCodecName(track.codec, track.levelCodec); + var currentCodec = currentCodecFull == null ? void 0 : currentCodecFull.replace(VIDEO_CODEC_PROFILE_REPLACE, '$1'); + var trackCodec = pickMostCompleteCodecName(codec, levelCodec); + var nextCodec = (_trackCodec = trackCodec) == null ? void 0 : _trackCodec.replace(VIDEO_CODEC_PROFILE_REPLACE, '$1'); + if (trackCodec && currentCodec !== nextCodec) { + if (trackName.slice(0, 5) === 'audio') { + trackCodec = getCodecCompatibleName(trackCodec, _this5.appendSource); + } + var mimeType = container + ";codecs=" + trackCodec; + _this5.appendChangeType(trackName, mimeType); + _this5.log("switching codec " + currentCodecFull + " to " + trackCodec); + _this5.tracks[trackName] = { + buffer: track.buffer, + codec: codec, + container: container, + levelCodec: levelCodec, + metadata: metadata, + id: id + }; + } + } + } else { + // if source buffer(s) not created yet, appended buffer tracks in this.pendingTracks + _this5.pendingTracks[trackName] = data[trackName]; + } + }); + + // if sourcebuffers already created, do nothing ... + if (sourceBufferCount) { + return; + } + var bufferCodecEventsExpected = Math.max(this.bufferCodecEventsExpected - 1, 0); + if (this.bufferCodecEventsExpected !== bufferCodecEventsExpected) { + this.log(bufferCodecEventsExpected + " bufferCodec event(s) expected " + trackNames.join(',')); + this.bufferCodecEventsExpected = bufferCodecEventsExpected; + } + if (this.mediaSource && this.mediaSource.readyState === 'open') { + this.checkPendingTracks(); + } + }; + _proto.appendChangeType = function appendChangeType(type, mimeType) { + var _this6 = this; + var operationQueue = this.operationQueue; + var operation = { + execute: function execute() { + var sb = _this6.sourceBuffer[type]; + if (sb) { + _this6.log("changing " + type + " sourceBuffer type to " + mimeType); + sb.changeType(mimeType); + } + operationQueue.shiftAndExecuteNext(type); + }, + onStart: function onStart() {}, + onComplete: function onComplete() {}, + onError: function onError(error) { + _this6.warn("Failed to change " + type + " SourceBuffer type", error); + } + }; + operationQueue.append(operation, type, !!this.pendingTracks[type]); + }; + _proto.blockAudio = function blockAudio(partOrFrag) { + var _this$fragmentTracker, + _this7 = this; + var pStart = partOrFrag.start; + var pTime = pStart + partOrFrag.duration * 0.05; + var atGap = ((_this$fragmentTracker = this.fragmentTracker.getAppendedFrag(pStart, PlaylistLevelType.MAIN)) == null ? void 0 : _this$fragmentTracker.gap) === true; + if (atGap) { + return; + } + var op = { + execute: function execute() { + var _this7$fragmentTracke; + if (_this7.lastVideoAppendEnd > pTime || _this7.sourceBuffer.video && BufferHelper.isBuffered(_this7.sourceBuffer.video, pTime) || ((_this7$fragmentTracke = _this7.fragmentTracker.getAppendedFrag(pTime, PlaylistLevelType.MAIN)) == null ? void 0 : _this7$fragmentTracke.gap) === true) { + _this7.blockedAudioAppend = null; + _this7.operationQueue.shiftAndExecuteNext('audio'); + } + }, + onStart: function onStart() {}, + onComplete: function onComplete() {}, + onError: function onError() {} + }; + this.blockedAudioAppend = { + op: op, + frag: partOrFrag + }; + this.operationQueue.append(op, 'audio', true); + }; + _proto.unblockAudio = function unblockAudio() { + var blockedAudioAppend = this.blockedAudioAppend; + if (blockedAudioAppend) { + this.blockedAudioAppend = null; + this.operationQueue.unblockAudio(blockedAudioAppend.op); + } + }; + _proto.onBufferAppending = function onBufferAppending(event, eventData) { + var _this8 = this; + var operationQueue = this.operationQueue, + tracks = this.tracks; + var data = eventData.data, + type = eventData.type, + parent = eventData.parent, + frag = eventData.frag, + part = eventData.part, + chunkMeta = eventData.chunkMeta; + var chunkStats = chunkMeta.buffering[type]; + var sn = frag.sn; + var bufferAppendingStart = self.performance.now(); + chunkStats.start = bufferAppendingStart; + var fragBuffering = frag.stats.buffering; + var partBuffering = part ? part.stats.buffering : null; + if (fragBuffering.start === 0) { + fragBuffering.start = bufferAppendingStart; + } + if (partBuffering && partBuffering.start === 0) { + partBuffering.start = bufferAppendingStart; + } + + // TODO: Only update timestampOffset when audio/mpeg fragment or part is not contiguous with previously appended + // Adjusting `SourceBuffer.timestampOffset` (desired point in the timeline where the next frames should be appended) + // in Chrome browser when we detect MPEG audio container and time delta between level PTS and `SourceBuffer.timestampOffset` + // is greater than 100ms (this is enough to handle seek for VOD or level change for LIVE videos). + // More info here: https://github.com/video-dev/hls.js/issues/332#issuecomment-257986486 + var audioTrack = tracks.audio; + var checkTimestampOffset = false; + if (type === 'audio' && (audioTrack == null ? void 0 : audioTrack.container) === 'audio/mpeg') { + checkTimestampOffset = !this.lastMpegAudioChunk || chunkMeta.id === 1 || this.lastMpegAudioChunk.sn !== chunkMeta.sn; + this.lastMpegAudioChunk = chunkMeta; + } + + // Block audio append until overlapping video append + var videoSb = this.sourceBuffer.video; + if (videoSb && sn !== 'initSegment') { + var partOrFrag = part || frag; + var blockedAudioAppend = this.blockedAudioAppend; + if (type === 'audio' && parent !== 'main' && !this.blockedAudioAppend) { + var pStart = partOrFrag.start; + var pTime = pStart + partOrFrag.duration * 0.05; + var vbuffered = videoSb.buffered; + var vappending = this.operationQueue.current('video'); + if (!vbuffered.length && !vappending) { + // wait for video before appending audio + this.blockAudio(partOrFrag); + } else if (!vappending && !BufferHelper.isBuffered(videoSb, pTime) && this.lastVideoAppendEnd < pTime) { + // audio is ahead of video + this.blockAudio(partOrFrag); + } + } else if (type === 'video') { + var videoAppendEnd = partOrFrag.end; + if (blockedAudioAppend) { + var audioStart = blockedAudioAppend.frag.start; + if (videoAppendEnd > audioStart || videoAppendEnd < this.lastVideoAppendEnd || BufferHelper.isBuffered(videoSb, audioStart)) { + this.unblockAudio(); + } + } + this.lastVideoAppendEnd = videoAppendEnd; + } + } + var fragStart = (part || frag).start; + var operation = { + execute: function execute() { + chunkStats.executeStart = self.performance.now(); + if (checkTimestampOffset) { + var sb = _this8.sourceBuffer[type]; + if (sb) { + var delta = fragStart - sb.timestampOffset; + if (Math.abs(delta) >= 0.1) { + _this8.log("Updating audio SourceBuffer timestampOffset to " + fragStart + " (delta: " + delta + ") sn: " + sn + ")"); + sb.timestampOffset = fragStart; + } + } + } + _this8.appendExecutor(data, type); + }, + onStart: function onStart() { + // logger.debug(`[buffer-controller]: ${type} SourceBuffer updatestart`); + }, + onComplete: function onComplete() { + // logger.debug(`[buffer-controller]: ${type} SourceBuffer updateend`); + var end = self.performance.now(); + chunkStats.executeEnd = chunkStats.end = end; + if (fragBuffering.first === 0) { + fragBuffering.first = end; + } + if (partBuffering && partBuffering.first === 0) { + partBuffering.first = end; + } + var sourceBuffer = _this8.sourceBuffer; + var timeRanges = {}; + for (var _type in sourceBuffer) { + timeRanges[_type] = BufferHelper.getBuffered(sourceBuffer[_type]); + } + _this8.appendErrors[type] = 0; + if (type === 'audio' || type === 'video') { + _this8.appendErrors.audiovideo = 0; + } else { + _this8.appendErrors.audio = 0; + _this8.appendErrors.video = 0; + } + _this8.hls.trigger(Events.BUFFER_APPENDED, { + type: type, + frag: frag, + part: part, + chunkMeta: chunkMeta, + parent: frag.type, + timeRanges: timeRanges + }); + }, + onError: function onError(error) { + // in case any error occured while appending, put back segment in segments table + var event = { + type: ErrorTypes.MEDIA_ERROR, + parent: frag.type, + details: ErrorDetails.BUFFER_APPEND_ERROR, + sourceBufferName: type, + frag: frag, + part: part, + chunkMeta: chunkMeta, + error: error, + err: error, + fatal: false + }; + if (error.code === DOMException.QUOTA_EXCEEDED_ERR) { + // QuotaExceededError: http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror + // let's stop appending any segments, and report BUFFER_FULL_ERROR error + event.details = ErrorDetails.BUFFER_FULL_ERROR; + } else { + var appendErrorCount = ++_this8.appendErrors[type]; + event.details = ErrorDetails.BUFFER_APPEND_ERROR; + /* with UHD content, we could get loop of quota exceeded error until + browser is able to evict some data from sourcebuffer. Retrying can help recover. + */ + _this8.warn("Failed " + appendErrorCount + "/" + _this8.hls.config.appendErrorMaxRetry + " times to append segment in \"" + type + "\" sourceBuffer"); + if (appendErrorCount >= _this8.hls.config.appendErrorMaxRetry) { + event.fatal = true; + } + } + _this8.hls.trigger(Events.ERROR, event); + } + }; + operationQueue.append(operation, type, !!this.pendingTracks[type]); + }; + _proto.getFlushOp = function getFlushOp(type, start, end) { + var _this9 = this; + return { + execute: function execute() { + _this9.removeExecutor(type, start, end); + }, + onStart: function onStart() { + // logger.debug(`[buffer-controller]: Started flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`); + }, + onComplete: function onComplete() { + // logger.debug(`[buffer-controller]: Finished flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`); + _this9.hls.trigger(Events.BUFFER_FLUSHED, { + type: type + }); + }, + onError: function onError(error) { + _this9.warn("Failed to remove from " + type + " SourceBuffer", error); + } + }; + }; + _proto.onBufferFlushing = function onBufferFlushing(event, data) { + var _this10 = this; + var operationQueue = this.operationQueue; + var type = data.type, + startOffset = data.startOffset, + endOffset = data.endOffset; + if (type) { + operationQueue.append(this.getFlushOp(type, startOffset, endOffset), type); + } else { + this.getSourceBufferTypes().forEach(function (sbType) { + operationQueue.append(_this10.getFlushOp(sbType, startOffset, endOffset), sbType); + }); + } + }; + _proto.onFragParsed = function onFragParsed(event, data) { + var _this11 = this; + var frag = data.frag, + part = data.part; + var buffersAppendedTo = []; + var elementaryStreams = part ? part.elementaryStreams : frag.elementaryStreams; + if (elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO]) { + buffersAppendedTo.push('audiovideo'); + } else { + if (elementaryStreams[ElementaryStreamTypes.AUDIO]) { + buffersAppendedTo.push('audio'); + } + if (elementaryStreams[ElementaryStreamTypes.VIDEO]) { + buffersAppendedTo.push('video'); + } + } + var onUnblocked = function onUnblocked() { + var now = self.performance.now(); + frag.stats.buffering.end = now; + if (part) { + part.stats.buffering.end = now; + } + var stats = part ? part.stats : frag.stats; + _this11.hls.trigger(Events.FRAG_BUFFERED, { + frag: frag, + part: part, + stats: stats, + id: frag.type + }); + }; + if (buffersAppendedTo.length === 0) { + this.warn("Fragments must have at least one ElementaryStreamType set. type: " + frag.type + " level: " + frag.level + " sn: " + frag.sn); + } + this.blockBuffers(onUnblocked, buffersAppendedTo); + }; + _proto.onFragChanged = function onFragChanged(event, data) { + this.trimBuffers(); + } + + // on BUFFER_EOS mark matching sourcebuffer(s) as ended and trigger checkEos() + // an undefined data.type will mark all buffers as EOS. + ; + _proto.onBufferEos = function onBufferEos(event, data) { + var _this12 = this; + if (data.type === 'video') { + this.unblockAudio(); + } + var ended = this.getSourceBufferTypes().reduce(function (acc, type) { + var sb = _this12.sourceBuffer[type]; + if (sb && (!data.type || data.type === type)) { + sb.ending = true; + if (!sb.ended) { + sb.ended = true; + _this12.log(type + " sourceBuffer now EOS"); + } + } + return acc && !!(!sb || sb.ended); + }, true); + if (ended) { + this.log("Queueing mediaSource.endOfStream()"); + this.blockBuffers(function () { + _this12.getSourceBufferTypes().forEach(function (type) { + var sb = _this12.sourceBuffer[type]; + if (sb) { + sb.ending = false; + } + }); + var mediaSource = _this12.mediaSource; + if (!mediaSource || mediaSource.readyState !== 'open') { + if (mediaSource) { + _this12.log("Could not call mediaSource.endOfStream(). mediaSource.readyState: " + mediaSource.readyState); + } + return; + } + _this12.log("Calling mediaSource.endOfStream()"); + // Allow this to throw and be caught by the enqueueing function + mediaSource.endOfStream(); + }); + } + }; + _proto.onLevelUpdated = function onLevelUpdated(event, _ref) { + var _this13 = this; + var details = _ref.details; + if (!details.fragments.length) { + return; + } + this.details = details; + var durationAndRange = this.getDurationAndRange(); + if (!durationAndRange) { + return; + } + if (this.getSourceBufferTypes().length) { + this.blockBuffers(function () { + return _this13.updateMediaSource(durationAndRange); + }); + } else { + this.updateMediaSource(durationAndRange); + } + }; + _proto.onError = function onError(event, data) { + if (data.details === ErrorDetails.BUFFER_APPEND_ERROR && data.frag) { + var _data$errorAction; + var nextAutoLevel = (_data$errorAction = data.errorAction) == null ? void 0 : _data$errorAction.nextAutoLevel; + if (isFiniteNumber(nextAutoLevel) && nextAutoLevel !== data.frag.level) { + this.resetAppendErrors(); + } + } + }; + _proto.resetAppendErrors = function resetAppendErrors() { + this.appendErrors = { + audio: 0, + video: 0, + audiovideo: 0 + }; + }; + _proto.trimBuffers = function trimBuffers() { + var hls = this.hls, + details = this.details, + media = this.media; + if (!media || details === null) { + return; + } + var sourceBufferTypes = this.getSourceBufferTypes(); + if (!sourceBufferTypes.length) { + return; + } + var config = hls.config; + var currentTime = media.currentTime; + var targetDuration = details.levelTargetDuration; + + // Support for deprecated liveBackBufferLength + var backBufferLength = details.live && config.liveBackBufferLength !== null ? config.liveBackBufferLength : config.backBufferLength; + if (isFiniteNumber(backBufferLength) && backBufferLength > 0) { + var maxBackBufferLength = Math.max(backBufferLength, targetDuration); + var targetBackBufferPosition = Math.floor(currentTime / targetDuration) * targetDuration - maxBackBufferLength; + this.flushBackBuffer(currentTime, targetDuration, targetBackBufferPosition); + } + if (isFiniteNumber(config.frontBufferFlushThreshold) && config.frontBufferFlushThreshold > 0) { + var frontBufferLength = Math.max(config.maxBufferLength, config.frontBufferFlushThreshold); + var maxFrontBufferLength = Math.max(frontBufferLength, targetDuration); + var targetFrontBufferPosition = Math.floor(currentTime / targetDuration) * targetDuration + maxFrontBufferLength; + this.flushFrontBuffer(currentTime, targetDuration, targetFrontBufferPosition); + } + }; + _proto.flushBackBuffer = function flushBackBuffer(currentTime, targetDuration, targetBackBufferPosition) { + var _this14 = this; + var details = this.details, + sourceBuffer = this.sourceBuffer; + var sourceBufferTypes = this.getSourceBufferTypes(); + sourceBufferTypes.forEach(function (type) { + var sb = sourceBuffer[type]; + if (sb) { + var buffered = BufferHelper.getBuffered(sb); + // when target buffer start exceeds actual buffer start + if (buffered.length > 0 && targetBackBufferPosition > buffered.start(0)) { + _this14.hls.trigger(Events.BACK_BUFFER_REACHED, { + bufferEnd: targetBackBufferPosition + }); + + // Support for deprecated event: + if (details != null && details.live) { + _this14.hls.trigger(Events.LIVE_BACK_BUFFER_REACHED, { + bufferEnd: targetBackBufferPosition + }); + } else if (sb.ended && buffered.end(buffered.length - 1) - currentTime < targetDuration * 2) { + _this14.log("Cannot flush " + type + " back buffer while SourceBuffer is in ended state"); + return; + } + _this14.hls.trigger(Events.BUFFER_FLUSHING, { + startOffset: 0, + endOffset: targetBackBufferPosition, + type: type + }); + } + } + }); + }; + _proto.flushFrontBuffer = function flushFrontBuffer(currentTime, targetDuration, targetFrontBufferPosition) { + var _this15 = this; + var sourceBuffer = this.sourceBuffer; + var sourceBufferTypes = this.getSourceBufferTypes(); + sourceBufferTypes.forEach(function (type) { + var sb = sourceBuffer[type]; + if (sb) { + var buffered = BufferHelper.getBuffered(sb); + var numBufferedRanges = buffered.length; + // The buffer is either empty or contiguous + if (numBufferedRanges < 2) { + return; + } + var bufferStart = buffered.start(numBufferedRanges - 1); + var bufferEnd = buffered.end(numBufferedRanges - 1); + // No flush if we can tolerate the current buffer length or the current buffer range we would flush is contiguous with current position + if (targetFrontBufferPosition > bufferStart || currentTime >= bufferStart && currentTime <= bufferEnd) { + return; + } else if (sb.ended && currentTime - bufferEnd < 2 * targetDuration) { + _this15.log("Cannot flush " + type + " front buffer while SourceBuffer is in ended state"); + return; + } + _this15.hls.trigger(Events.BUFFER_FLUSHING, { + startOffset: bufferStart, + endOffset: Infinity, + type: type + }); + } + }); + } + + /** + * Update Media Source duration to current level duration or override to Infinity if configuration parameter + * 'liveDurationInfinity` is set to `true` + * More details: https://github.com/video-dev/hls.js/issues/355 + */; + _proto.getDurationAndRange = function getDurationAndRange() { + if (!this.details || !this.media || !this.mediaSource || this.mediaSource.readyState !== 'open') { + return null; + } + var details = this.details, + hls = this.hls, + media = this.media, + mediaSource = this.mediaSource; + var levelDuration = details.fragments[0].start + details.totalduration; + var mediaDuration = media.duration; + var msDuration = isFiniteNumber(mediaSource.duration) ? mediaSource.duration : 0; + if (details.live && hls.config.liveDurationInfinity) { + // Override duration to Infinity + mediaSource.duration = Infinity; + var len = details.fragments.length; + if (len && details.live && !!mediaSource.setLiveSeekableRange) { + var start = Math.max(0, details.fragments[0].start); + var end = Math.max(start, start + details.totalduration); + return { + duration: Infinity, + start: start, + end: end + }; + } + return { + duration: Infinity + }; + } else if (levelDuration > msDuration && levelDuration > mediaDuration || !isFiniteNumber(mediaDuration)) { + return { + duration: levelDuration + }; + } + return null; + }; + _proto.updateMediaSource = function updateMediaSource(_ref2) { + var duration = _ref2.duration, + start = _ref2.start, + end = _ref2.end; + if (!this.media || !this.mediaSource || this.mediaSource.readyState !== 'open') { + return; + } + if (isFiniteNumber(duration)) { + this.log("Updating Media Source duration to " + duration.toFixed(3)); + } + this.mediaSource.duration = duration; + if (start !== undefined && end !== undefined) { + this.log("Media Source duration is set to " + this.mediaSource.duration + ". Setting seekable range to " + start + "-" + end + "."); + this.mediaSource.setLiveSeekableRange(start, end); + } + }; + _proto.checkPendingTracks = function checkPendingTracks() { + var bufferCodecEventsExpected = this.bufferCodecEventsExpected, + operationQueue = this.operationQueue, + pendingTracks = this.pendingTracks; + + // Check if we've received all of the expected bufferCodec events. When none remain, create all the sourceBuffers at once. + // This is important because the MSE spec allows implementations to throw QuotaExceededErrors if creating new sourceBuffers after + // data has been appended to existing ones. + // 2 tracks is the max (one for audio, one for video). If we've reach this max go ahead and create the buffers. + var pendingTracksCount = Object.keys(pendingTracks).length; + if (pendingTracksCount && (!bufferCodecEventsExpected || pendingTracksCount === 2 || 'audiovideo' in pendingTracks)) { + // ok, let's create them now ! + this.createSourceBuffers(pendingTracks); + this.pendingTracks = {}; + // append any pending segments now ! + var buffers = this.getSourceBufferTypes(); + if (buffers.length) { + this.hls.trigger(Events.BUFFER_CREATED, { + tracks: this.tracks + }); + buffers.forEach(function (type) { + operationQueue.executeNext(type); + }); + } else { + var error = new Error('could not create source buffer for media codec(s)'); + this.hls.trigger(Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.BUFFER_INCOMPATIBLE_CODECS_ERROR, + fatal: true, + error: error, + reason: error.message + }); + } + } + }; + _proto.createSourceBuffers = function createSourceBuffers(tracks) { + var _this16 = this; + var sourceBuffer = this.sourceBuffer, + mediaSource = this.mediaSource; + if (!mediaSource) { + throw Error('createSourceBuffers called when mediaSource was null'); + } + var _loop = function _loop(trackName) { + if (!sourceBuffer[trackName]) { + var _track$levelCodec; + var track = tracks[trackName]; + if (!track) { + throw Error("source buffer exists for track " + trackName + ", however track does not"); + } + // use levelCodec as first priority unless it contains multiple comma-separated codec values + var codec = ((_track$levelCodec = track.levelCodec) == null ? void 0 : _track$levelCodec.indexOf(',')) === -1 ? track.levelCodec : track.codec; + if (codec) { + if (trackName.slice(0, 5) === 'audio') { + codec = getCodecCompatibleName(codec, _this16.appendSource); + } + } + var mimeType = track.container + ";codecs=" + codec; + _this16.log("creating sourceBuffer(" + mimeType + ")"); + try { + var sb = sourceBuffer[trackName] = mediaSource.addSourceBuffer(mimeType); + var sbName = trackName; + _this16.addBufferListener(sbName, 'updatestart', _this16._onSBUpdateStart); + _this16.addBufferListener(sbName, 'updateend', _this16._onSBUpdateEnd); + _this16.addBufferListener(sbName, 'error', _this16._onSBUpdateError); + // ManagedSourceBuffer bufferedchange event + if (_this16.appendSource) { + _this16.addBufferListener(sbName, 'bufferedchange', function (type, event) { + // If media was ejected check for a change. Added ranges are redundant with changes on 'updateend' event. + var removedRanges = event.removedRanges; + if (removedRanges != null && removedRanges.length) { + _this16.hls.trigger(Events.BUFFER_FLUSHED, { + type: trackName + }); + } + }); + } + _this16.tracks[trackName] = { + buffer: sb, + codec: codec, + container: track.container, + levelCodec: track.levelCodec, + metadata: track.metadata, + id: track.id + }; + } catch (err) { + _this16.error("error while trying to add sourceBuffer: " + err.message); + _this16.hls.trigger(Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.BUFFER_ADD_CODEC_ERROR, + fatal: false, + error: err, + sourceBufferName: trackName, + mimeType: mimeType + }); + } + } + }; + for (var trackName in tracks) { + _loop(trackName); + } + }; + _proto._onSBUpdateStart = function _onSBUpdateStart(type) { + var operationQueue = this.operationQueue; + var operation = operationQueue.current(type); + operation.onStart(); + }; + _proto._onSBUpdateEnd = function _onSBUpdateEnd(type) { + var _this$mediaSource2; + if (((_this$mediaSource2 = this.mediaSource) == null ? void 0 : _this$mediaSource2.readyState) === 'closed') { + this.resetBuffer(type); + return; + } + var operationQueue = this.operationQueue; + var operation = operationQueue.current(type); + operation.onComplete(); + operationQueue.shiftAndExecuteNext(type); + }; + _proto._onSBUpdateError = function _onSBUpdateError(type, event) { + var _this$mediaSource3; + var error = new Error(type + " SourceBuffer error. MediaSource readyState: " + ((_this$mediaSource3 = this.mediaSource) == null ? void 0 : _this$mediaSource3.readyState)); + this.error("" + error, event); + // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error + // SourceBuffer errors are not necessarily fatal; if so, the HTMLMediaElement will fire an error event + this.hls.trigger(Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.BUFFER_APPENDING_ERROR, + sourceBufferName: type, + error: error, + fatal: false + }); + // updateend is always fired after error, so we'll allow that to shift the current operation off of the queue + var operation = this.operationQueue.current(type); + if (operation) { + operation.onError(error); + } + } + + // This method must result in an updateend event; if remove is not called, _onSBUpdateEnd must be called manually + ; + _proto.removeExecutor = function removeExecutor(type, startOffset, endOffset) { + var media = this.media, + mediaSource = this.mediaSource, + operationQueue = this.operationQueue, + sourceBuffer = this.sourceBuffer; + var sb = sourceBuffer[type]; + if (!media || !mediaSource || !sb) { + this.warn("Attempting to remove from the " + type + " SourceBuffer, but it does not exist"); + operationQueue.shiftAndExecuteNext(type); + return; + } + var mediaDuration = isFiniteNumber(media.duration) ? media.duration : Infinity; + var msDuration = isFiniteNumber(mediaSource.duration) ? mediaSource.duration : Infinity; + var removeStart = Math.max(0, startOffset); + var removeEnd = Math.min(endOffset, mediaDuration, msDuration); + if (removeEnd > removeStart && (!sb.ending || sb.ended)) { + sb.ended = false; + this.log("Removing [" + removeStart + "," + removeEnd + "] from the " + type + " SourceBuffer"); + sb.remove(removeStart, removeEnd); + } else { + // Cycle the queue + operationQueue.shiftAndExecuteNext(type); + } + } + + // This method must result in an updateend event; if append is not called, _onSBUpdateEnd must be called manually + ; + _proto.appendExecutor = function appendExecutor(data, type) { + var sb = this.sourceBuffer[type]; + if (!sb) { + if (!this.pendingTracks[type]) { + throw new Error("Attempting to append to the " + type + " SourceBuffer, but it does not exist"); + } + return; + } + sb.ending = false; + sb.ended = false; + sb.appendBuffer(data); + } + + // Enqueues an operation to each SourceBuffer queue which, upon execution, resolves a promise. When all promises + // resolve, the onUnblocked function is executed. Functions calling this method do not need to unblock the queue + // upon completion, since we already do it here + ; + _proto.blockBuffers = function blockBuffers(onUnblocked, buffers) { + var _this17 = this; + if (buffers === void 0) { + buffers = this.getSourceBufferTypes(); + } + if (!buffers.length) { + this.log('Blocking operation requested, but no SourceBuffers exist'); + Promise.resolve().then(onUnblocked); + return; + } + var operationQueue = this.operationQueue; + + // logger.debug(`[buffer-controller]: Blocking ${buffers} SourceBuffer`); + var blockingOperations = buffers.map(function (type) { + return operationQueue.appendBlocker(type); + }); + var audioBlocked = buffers.length > 1 && !!this.blockedAudioAppend; + if (audioBlocked) { + this.unblockAudio(); + } + Promise.all(blockingOperations).then(function (result) { + // logger.debug(`[buffer-controller]: Blocking operation resolved; unblocking ${buffers} SourceBuffer`); + onUnblocked(); + buffers.forEach(function (type, i) { + var sb = _this17.sourceBuffer[type]; + // Only cycle the queue if the SB is not updating. There's a bug in Chrome which sets the SB updating flag to + // true when changing the MediaSource duration (https://bugs.chromium.org/p/chromium/issues/detail?id=959359&can=2&q=mediasource%20duration) + // While this is a workaround, it's probably useful to have around + if (!(sb != null && sb.updating)) { + operationQueue.shiftAndExecuteNext(type); + } + }); + }); + }; + _proto.getSourceBufferTypes = function getSourceBufferTypes() { + return Object.keys(this.sourceBuffer); + }; + _proto.addBufferListener = function addBufferListener(type, event, fn) { + var buffer = this.sourceBuffer[type]; + if (!buffer) { + return; + } + var listener = fn.bind(this, type); + this.listeners[type].push({ + event: event, + listener: listener + }); + buffer.addEventListener(event, listener); + }; + _proto.removeBufferListeners = function removeBufferListeners(type) { + var buffer = this.sourceBuffer[type]; + if (!buffer) { + return; + } + this.listeners[type].forEach(function (l) { + buffer.removeEventListener(l.event, l.listener); + }); + }; + return _createClass(BufferController, [{ + key: "mediaSrc", + get: function get() { + var _this$media, _this$media$querySele; + var media = ((_this$media = this.media) == null ? void 0 : (_this$media$querySele = _this$media.querySelector) == null ? void 0 : _this$media$querySele.call(_this$media, 'source')) || this.media; + return media == null ? void 0 : media.src; + } + }]); + }(Logger); + function removeSourceChildren(node) { + var sourceChildren = node.querySelectorAll('source'); + [].slice.call(sourceChildren).forEach(function (source) { + node.removeChild(source); + }); + } + function addSource(media, url) { + var source = self.document.createElement('source'); + source.type = 'video/mp4'; + source.src = url; + media.appendChild(source); + } + + /** + * + * This code was ported from the dash.js project at: + * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js + * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2 + * + * The original copyright appears below: + * + * The copyright in this software is being made available under the BSD License, + * included below. This software may be subject to other third party and contributor + * rights, including patent rights, and no such rights are granted under this license. + * + * Copyright (c) 2015-2016, DASH Industry Forum. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * 2. Neither the name of Dash Industry Forum nor the names of its + * contributors may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + /** + * Exceptions from regular ASCII. CodePoints are mapped to UTF-16 codes + */ + + var specialCea608CharsCodes = { + 0x2a: 0xe1, + // lowercase a, acute accent + 0x5c: 0xe9, + // lowercase e, acute accent + 0x5e: 0xed, + // lowercase i, acute accent + 0x5f: 0xf3, + // lowercase o, acute accent + 0x60: 0xfa, + // lowercase u, acute accent + 0x7b: 0xe7, + // lowercase c with cedilla + 0x7c: 0xf7, + // division symbol + 0x7d: 0xd1, + // uppercase N tilde + 0x7e: 0xf1, + // lowercase n tilde + 0x7f: 0x2588, + // Full block + // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS + // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F + // THIS MEANS THAT \x50 MUST BE ADDED TO THE VALUES + 0x80: 0xae, + // Registered symbol (R) + 0x81: 0xb0, + // degree sign + 0x82: 0xbd, + // 1/2 symbol + 0x83: 0xbf, + // Inverted (open) question mark + 0x84: 0x2122, + // Trademark symbol (TM) + 0x85: 0xa2, + // Cents symbol + 0x86: 0xa3, + // Pounds sterling + 0x87: 0x266a, + // Music 8'th note + 0x88: 0xe0, + // lowercase a, grave accent + 0x89: 0x20, + // transparent space (regular) + 0x8a: 0xe8, + // lowercase e, grave accent + 0x8b: 0xe2, + // lowercase a, circumflex accent + 0x8c: 0xea, + // lowercase e, circumflex accent + 0x8d: 0xee, + // lowercase i, circumflex accent + 0x8e: 0xf4, + // lowercase o, circumflex accent + 0x8f: 0xfb, + // lowercase u, circumflex accent + // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS + // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F + 0x90: 0xc1, + // capital letter A with acute + 0x91: 0xc9, + // capital letter E with acute + 0x92: 0xd3, + // capital letter O with acute + 0x93: 0xda, + // capital letter U with acute + 0x94: 0xdc, + // capital letter U with diaresis + 0x95: 0xfc, + // lowercase letter U with diaeresis + 0x96: 0x2018, + // opening single quote + 0x97: 0xa1, + // inverted exclamation mark + 0x98: 0x2a, + // asterisk + 0x99: 0x2019, + // closing single quote + 0x9a: 0x2501, + // box drawings heavy horizontal + 0x9b: 0xa9, + // copyright sign + 0x9c: 0x2120, + // Service mark + 0x9d: 0x2022, + // (round) bullet + 0x9e: 0x201c, + // Left double quotation mark + 0x9f: 0x201d, + // Right double quotation mark + 0xa0: 0xc0, + // uppercase A, grave accent + 0xa1: 0xc2, + // uppercase A, circumflex + 0xa2: 0xc7, + // uppercase C with cedilla + 0xa3: 0xc8, + // uppercase E, grave accent + 0xa4: 0xca, + // uppercase E, circumflex + 0xa5: 0xcb, + // capital letter E with diaresis + 0xa6: 0xeb, + // lowercase letter e with diaresis + 0xa7: 0xce, + // uppercase I, circumflex + 0xa8: 0xcf, + // uppercase I, with diaresis + 0xa9: 0xef, + // lowercase i, with diaresis + 0xaa: 0xd4, + // uppercase O, circumflex + 0xab: 0xd9, + // uppercase U, grave accent + 0xac: 0xf9, + // lowercase u, grave accent + 0xad: 0xdb, + // uppercase U, circumflex + 0xae: 0xab, + // left-pointing double angle quotation mark + 0xaf: 0xbb, + // right-pointing double angle quotation mark + // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS + // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F + 0xb0: 0xc3, + // Uppercase A, tilde + 0xb1: 0xe3, + // Lowercase a, tilde + 0xb2: 0xcd, + // Uppercase I, acute accent + 0xb3: 0xcc, + // Uppercase I, grave accent + 0xb4: 0xec, + // Lowercase i, grave accent + 0xb5: 0xd2, + // Uppercase O, grave accent + 0xb6: 0xf2, + // Lowercase o, grave accent + 0xb7: 0xd5, + // Uppercase O, tilde + 0xb8: 0xf5, + // Lowercase o, tilde + 0xb9: 0x7b, + // Open curly brace + 0xba: 0x7d, + // Closing curly brace + 0xbb: 0x5c, + // Backslash + 0xbc: 0x5e, + // Caret + 0xbd: 0x5f, + // Underscore + 0xbe: 0x7c, + // Pipe (vertical line) + 0xbf: 0x223c, + // Tilde operator + 0xc0: 0xc4, + // Uppercase A, umlaut + 0xc1: 0xe4, + // Lowercase A, umlaut + 0xc2: 0xd6, + // Uppercase O, umlaut + 0xc3: 0xf6, + // Lowercase o, umlaut + 0xc4: 0xdf, + // Esszett (sharp S) + 0xc5: 0xa5, + // Yen symbol + 0xc6: 0xa4, + // Generic currency sign + 0xc7: 0x2503, + // Box drawings heavy vertical + 0xc8: 0xc5, + // Uppercase A, ring + 0xc9: 0xe5, + // Lowercase A, ring + 0xca: 0xd8, + // Uppercase O, stroke + 0xcb: 0xf8, + // Lowercase o, strok + 0xcc: 0x250f, + // Box drawings heavy down and right + 0xcd: 0x2513, + // Box drawings heavy down and left + 0xce: 0x2517, + // Box drawings heavy up and right + 0xcf: 0x251b // Box drawings heavy up and left + }; + + /** + * Utils + */ + var getCharForByte = function getCharForByte(_byte) { + return String.fromCharCode(specialCea608CharsCodes[_byte] || _byte); + }; + var NR_ROWS = 15; + var NR_COLS = 100; + // Tables to look up row from PAC data + var rowsLowCh1 = { + 0x11: 1, + 0x12: 3, + 0x15: 5, + 0x16: 7, + 0x17: 9, + 0x10: 11, + 0x13: 12, + 0x14: 14 + }; + var rowsHighCh1 = { + 0x11: 2, + 0x12: 4, + 0x15: 6, + 0x16: 8, + 0x17: 10, + 0x13: 13, + 0x14: 15 + }; + var rowsLowCh2 = { + 0x19: 1, + 0x1a: 3, + 0x1d: 5, + 0x1e: 7, + 0x1f: 9, + 0x18: 11, + 0x1b: 12, + 0x1c: 14 + }; + var rowsHighCh2 = { + 0x19: 2, + 0x1a: 4, + 0x1d: 6, + 0x1e: 8, + 0x1f: 10, + 0x1b: 13, + 0x1c: 15 + }; + var backgroundColors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'black', 'transparent']; + var CaptionsLogger = /*#__PURE__*/function () { + function CaptionsLogger() { + this.time = null; + this.verboseLevel = 0; + } + var _proto = CaptionsLogger.prototype; + _proto.log = function log(severity, msg) { + if (this.verboseLevel >= severity) { + var m = typeof msg === 'function' ? msg() : msg; + logger.log(this.time + " [" + severity + "] " + m); + } + }; + return CaptionsLogger; + }(); + var numArrayToHexArray = function numArrayToHexArray(numArray) { + var hexArray = []; + for (var j = 0; j < numArray.length; j++) { + hexArray.push(numArray[j].toString(16)); + } + return hexArray; + }; + var PenState = /*#__PURE__*/function () { + function PenState() { + this.foreground = 'white'; + this.underline = false; + this.italics = false; + this.background = 'black'; + this.flash = false; + } + var _proto2 = PenState.prototype; + _proto2.reset = function reset() { + this.foreground = 'white'; + this.underline = false; + this.italics = false; + this.background = 'black'; + this.flash = false; + }; + _proto2.setStyles = function setStyles(styles) { + var attribs = ['foreground', 'underline', 'italics', 'background', 'flash']; + for (var i = 0; i < attribs.length; i++) { + var style = attribs[i]; + if (styles.hasOwnProperty(style)) { + this[style] = styles[style]; + } + } + }; + _proto2.isDefault = function isDefault() { + return this.foreground === 'white' && !this.underline && !this.italics && this.background === 'black' && !this.flash; + }; + _proto2.equals = function equals(other) { + return this.foreground === other.foreground && this.underline === other.underline && this.italics === other.italics && this.background === other.background && this.flash === other.flash; + }; + _proto2.copy = function copy(newPenState) { + this.foreground = newPenState.foreground; + this.underline = newPenState.underline; + this.italics = newPenState.italics; + this.background = newPenState.background; + this.flash = newPenState.flash; + }; + _proto2.toString = function toString() { + return 'color=' + this.foreground + ', underline=' + this.underline + ', italics=' + this.italics + ', background=' + this.background + ', flash=' + this.flash; + }; + return PenState; + }(); + /** + * Unicode character with styling and background. + * @constructor + */ + var StyledUnicodeChar = /*#__PURE__*/function () { + function StyledUnicodeChar() { + this.uchar = ' '; + this.penState = new PenState(); + } + var _proto3 = StyledUnicodeChar.prototype; + _proto3.reset = function reset() { + this.uchar = ' '; + this.penState.reset(); + }; + _proto3.setChar = function setChar(uchar, newPenState) { + this.uchar = uchar; + this.penState.copy(newPenState); + }; + _proto3.setPenState = function setPenState(newPenState) { + this.penState.copy(newPenState); + }; + _proto3.equals = function equals(other) { + return this.uchar === other.uchar && this.penState.equals(other.penState); + }; + _proto3.copy = function copy(newChar) { + this.uchar = newChar.uchar; + this.penState.copy(newChar.penState); + }; + _proto3.isEmpty = function isEmpty() { + return this.uchar === ' ' && this.penState.isDefault(); + }; + return StyledUnicodeChar; + }(); + /** + * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar. + * @constructor + */ + var Row = /*#__PURE__*/function () { + function Row(logger) { + this.chars = []; + this.pos = 0; + this.currPenState = new PenState(); + this.cueStartTime = null; + this.logger = void 0; + for (var i = 0; i < NR_COLS; i++) { + this.chars.push(new StyledUnicodeChar()); + } + this.logger = logger; + } + var _proto4 = Row.prototype; + _proto4.equals = function equals(other) { + for (var i = 0; i < NR_COLS; i++) { + if (!this.chars[i].equals(other.chars[i])) { + return false; + } + } + return true; + }; + _proto4.copy = function copy(other) { + for (var i = 0; i < NR_COLS; i++) { + this.chars[i].copy(other.chars[i]); + } + }; + _proto4.isEmpty = function isEmpty() { + var empty = true; + for (var i = 0; i < NR_COLS; i++) { + if (!this.chars[i].isEmpty()) { + empty = false; + break; + } + } + return empty; + } + + /** + * Set the cursor to a valid column. + */; + _proto4.setCursor = function setCursor(absPos) { + if (this.pos !== absPos) { + this.pos = absPos; + } + if (this.pos < 0) { + this.logger.log(3, 'Negative cursor position ' + this.pos); + this.pos = 0; + } else if (this.pos > NR_COLS) { + this.logger.log(3, 'Too large cursor position ' + this.pos); + this.pos = NR_COLS; + } + } + + /** + * Move the cursor relative to current position. + */; + _proto4.moveCursor = function moveCursor(relPos) { + var newPos = this.pos + relPos; + if (relPos > 1) { + for (var i = this.pos + 1; i < newPos + 1; i++) { + this.chars[i].setPenState(this.currPenState); + } + } + this.setCursor(newPos); + } + + /** + * Backspace, move one step back and clear character. + */; + _proto4.backSpace = function backSpace() { + this.moveCursor(-1); + this.chars[this.pos].setChar(' ', this.currPenState); + }; + _proto4.insertChar = function insertChar(_byte2) { + var _this = this; + if (_byte2 >= 0x90) { + // Extended char + this.backSpace(); + } + var _char = getCharForByte(_byte2); + if (this.pos >= NR_COLS) { + this.logger.log(0, function () { + return 'Cannot insert ' + _byte2.toString(16) + ' (' + _char + ') at position ' + _this.pos + '. Skipping it!'; + }); + return; + } + this.chars[this.pos].setChar(_char, this.currPenState); + this.moveCursor(1); + }; + _proto4.clearFromPos = function clearFromPos(startPos) { + var i; + for (i = startPos; i < NR_COLS; i++) { + this.chars[i].reset(); + } + }; + _proto4.clear = function clear() { + this.clearFromPos(0); + this.pos = 0; + this.currPenState.reset(); + }; + _proto4.clearToEndOfRow = function clearToEndOfRow() { + this.clearFromPos(this.pos); + }; + _proto4.getTextString = function getTextString() { + var chars = []; + var empty = true; + for (var i = 0; i < NR_COLS; i++) { + var _char2 = this.chars[i].uchar; + if (_char2 !== ' ') { + empty = false; + } + chars.push(_char2); + } + if (empty) { + return ''; + } else { + return chars.join(''); + } + }; + _proto4.setPenStyles = function setPenStyles(styles) { + this.currPenState.setStyles(styles); + var currChar = this.chars[this.pos]; + currChar.setPenState(this.currPenState); + }; + return Row; + }(); + + /** + * Keep a CEA-608 screen of 32x15 styled characters + * @constructor + */ + var CaptionScreen = /*#__PURE__*/function () { + function CaptionScreen(logger) { + this.rows = []; + this.currRow = NR_ROWS - 1; + this.nrRollUpRows = null; + this.lastOutputScreen = null; + this.logger = void 0; + for (var i = 0; i < NR_ROWS; i++) { + this.rows.push(new Row(logger)); + } + this.logger = logger; + } + var _proto5 = CaptionScreen.prototype; + _proto5.reset = function reset() { + for (var i = 0; i < NR_ROWS; i++) { + this.rows[i].clear(); + } + this.currRow = NR_ROWS - 1; + }; + _proto5.equals = function equals(other) { + var equal = true; + for (var i = 0; i < NR_ROWS; i++) { + if (!this.rows[i].equals(other.rows[i])) { + equal = false; + break; + } + } + return equal; + }; + _proto5.copy = function copy(other) { + for (var i = 0; i < NR_ROWS; i++) { + this.rows[i].copy(other.rows[i]); + } + }; + _proto5.isEmpty = function isEmpty() { + var empty = true; + for (var i = 0; i < NR_ROWS; i++) { + if (!this.rows[i].isEmpty()) { + empty = false; + break; + } + } + return empty; + }; + _proto5.backSpace = function backSpace() { + var row = this.rows[this.currRow]; + row.backSpace(); + }; + _proto5.clearToEndOfRow = function clearToEndOfRow() { + var row = this.rows[this.currRow]; + row.clearToEndOfRow(); + } + + /** + * Insert a character (without styling) in the current row. + */; + _proto5.insertChar = function insertChar(_char3) { + var row = this.rows[this.currRow]; + row.insertChar(_char3); + }; + _proto5.setPen = function setPen(styles) { + var row = this.rows[this.currRow]; + row.setPenStyles(styles); + }; + _proto5.moveCursor = function moveCursor(relPos) { + var row = this.rows[this.currRow]; + row.moveCursor(relPos); + }; + _proto5.setCursor = function setCursor(absPos) { + this.logger.log(2, 'setCursor: ' + absPos); + var row = this.rows[this.currRow]; + row.setCursor(absPos); + }; + _proto5.setPAC = function setPAC(pacData) { + this.logger.log(2, function () { + return 'pacData = ' + JSON.stringify(pacData); + }); + var newRow = pacData.row - 1; + if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) { + newRow = this.nrRollUpRows - 1; + } + + // Make sure this only affects Roll-up Captions by checking this.nrRollUpRows + if (this.nrRollUpRows && this.currRow !== newRow) { + // clear all rows first + for (var i = 0; i < NR_ROWS; i++) { + this.rows[i].clear(); + } + + // Copy this.nrRollUpRows rows from lastOutputScreen and place it in the newRow location + // topRowIndex - the start of rows to copy (inclusive index) + var topRowIndex = this.currRow + 1 - this.nrRollUpRows; + // We only copy if the last position was already shown. + // We use the cueStartTime value to check this. + var lastOutputScreen = this.lastOutputScreen; + if (lastOutputScreen) { + var prevLineTime = lastOutputScreen.rows[topRowIndex].cueStartTime; + var time = this.logger.time; + if (prevLineTime !== null && time !== null && prevLineTime < time) { + for (var _i = 0; _i < this.nrRollUpRows; _i++) { + this.rows[newRow - this.nrRollUpRows + _i + 1].copy(lastOutputScreen.rows[topRowIndex + _i]); + } + } + } + } + this.currRow = newRow; + var row = this.rows[this.currRow]; + if (pacData.indent !== null) { + var indent = pacData.indent; + var prevPos = Math.max(indent - 1, 0); + row.setCursor(pacData.indent); + pacData.color = row.chars[prevPos].penState.foreground; + } + var styles = { + foreground: pacData.color, + underline: pacData.underline, + italics: pacData.italics, + background: 'black', + flash: false + }; + this.setPen(styles); + } + + /** + * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility). + */; + _proto5.setBkgData = function setBkgData(bkgData) { + this.logger.log(2, function () { + return 'bkgData = ' + JSON.stringify(bkgData); + }); + this.backSpace(); + this.setPen(bkgData); + this.insertChar(0x20); // Space + }; + _proto5.setRollUpRows = function setRollUpRows(nrRows) { + this.nrRollUpRows = nrRows; + }; + _proto5.rollUp = function rollUp() { + var _this2 = this; + if (this.nrRollUpRows === null) { + this.logger.log(3, 'roll_up but nrRollUpRows not set yet'); + return; // Not properly setup + } + this.logger.log(1, function () { + return _this2.getDisplayText(); + }); + var topRowIndex = this.currRow + 1 - this.nrRollUpRows; + var topRow = this.rows.splice(topRowIndex, 1)[0]; + topRow.clear(); + this.rows.splice(this.currRow, 0, topRow); + this.logger.log(2, 'Rolling up'); + // this.logger.log(VerboseLevel.TEXT, this.get_display_text()) + } + + /** + * Get all non-empty rows with as unicode text. + */; + _proto5.getDisplayText = function getDisplayText(asOneRow) { + asOneRow = asOneRow || false; + var displayText = []; + var text = ''; + var rowNr = -1; + for (var i = 0; i < NR_ROWS; i++) { + var rowText = this.rows[i].getTextString(); + if (rowText) { + rowNr = i + 1; + if (asOneRow) { + displayText.push('Row ' + rowNr + ": '" + rowText + "'"); + } else { + displayText.push(rowText.trim()); + } + } + } + if (displayText.length > 0) { + if (asOneRow) { + text = '[' + displayText.join(' | ') + ']'; + } else { + text = displayText.join('\n'); + } + } + return text; + }; + _proto5.getTextAndFormat = function getTextAndFormat() { + return this.rows; + }; + return CaptionScreen; + }(); + + // var modes = ['MODE_ROLL-UP', 'MODE_POP-ON', 'MODE_PAINT-ON', 'MODE_TEXT']; + var Cea608Channel = /*#__PURE__*/function () { + function Cea608Channel(channelNumber, outputFilter, logger) { + this.chNr = void 0; + this.outputFilter = void 0; + this.mode = void 0; + this.verbose = void 0; + this.displayedMemory = void 0; + this.nonDisplayedMemory = void 0; + this.lastOutputScreen = void 0; + this.currRollUpRow = void 0; + this.writeScreen = void 0; + this.cueStartTime = void 0; + this.logger = void 0; + this.chNr = channelNumber; + this.outputFilter = outputFilter; + this.mode = null; + this.verbose = 0; + this.displayedMemory = new CaptionScreen(logger); + this.nonDisplayedMemory = new CaptionScreen(logger); + this.lastOutputScreen = new CaptionScreen(logger); + this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1]; + this.writeScreen = this.displayedMemory; + this.mode = null; + this.cueStartTime = null; // Keeps track of where a cue started. + this.logger = logger; + } + var _proto6 = Cea608Channel.prototype; + _proto6.reset = function reset() { + this.mode = null; + this.displayedMemory.reset(); + this.nonDisplayedMemory.reset(); + this.lastOutputScreen.reset(); + this.outputFilter.reset(); + this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1]; + this.writeScreen = this.displayedMemory; + this.mode = null; + this.cueStartTime = null; + }; + _proto6.getHandler = function getHandler() { + return this.outputFilter; + }; + _proto6.setHandler = function setHandler(newHandler) { + this.outputFilter = newHandler; + }; + _proto6.setPAC = function setPAC(pacData) { + this.writeScreen.setPAC(pacData); + }; + _proto6.setBkgData = function setBkgData(bkgData) { + this.writeScreen.setBkgData(bkgData); + }; + _proto6.setMode = function setMode(newMode) { + if (newMode === this.mode) { + return; + } + this.mode = newMode; + this.logger.log(2, function () { + return 'MODE=' + newMode; + }); + if (this.mode === 'MODE_POP-ON') { + this.writeScreen = this.nonDisplayedMemory; + } else { + this.writeScreen = this.displayedMemory; + this.writeScreen.reset(); + } + if (this.mode !== 'MODE_ROLL-UP') { + this.displayedMemory.nrRollUpRows = null; + this.nonDisplayedMemory.nrRollUpRows = null; + } + this.mode = newMode; + }; + _proto6.insertChars = function insertChars(chars) { + var _this3 = this; + for (var i = 0; i < chars.length; i++) { + this.writeScreen.insertChar(chars[i]); + } + var screen = this.writeScreen === this.displayedMemory ? 'DISP' : 'NON_DISP'; + this.logger.log(2, function () { + return screen + ': ' + _this3.writeScreen.getDisplayText(true); + }); + if (this.mode === 'MODE_PAINT-ON' || this.mode === 'MODE_ROLL-UP') { + this.logger.log(1, function () { + return 'DISPLAYED: ' + _this3.displayedMemory.getDisplayText(true); + }); + this.outputDataUpdate(); + } + }; + _proto6.ccRCL = function ccRCL() { + // Resume Caption Loading (switch mode to Pop On) + this.logger.log(2, 'RCL - Resume Caption Loading'); + this.setMode('MODE_POP-ON'); + }; + _proto6.ccBS = function ccBS() { + // BackSpace + this.logger.log(2, 'BS - BackSpace'); + if (this.mode === 'MODE_TEXT') { + return; + } + this.writeScreen.backSpace(); + if (this.writeScreen === this.displayedMemory) { + this.outputDataUpdate(); + } + }; + _proto6.ccAOF = function ccAOF() { + // Reserved (formerly Alarm Off) + }; + _proto6.ccAON = function ccAON() { + // Reserved (formerly Alarm On) + }; + _proto6.ccDER = function ccDER() { + // Delete to End of Row + this.logger.log(2, 'DER- Delete to End of Row'); + this.writeScreen.clearToEndOfRow(); + this.outputDataUpdate(); + }; + _proto6.ccRU = function ccRU(nrRows) { + // Roll-Up Captions-2,3,or 4 Rows + this.logger.log(2, 'RU(' + nrRows + ') - Roll Up'); + this.writeScreen = this.displayedMemory; + this.setMode('MODE_ROLL-UP'); + this.writeScreen.setRollUpRows(nrRows); + }; + _proto6.ccFON = function ccFON() { + // Flash On + this.logger.log(2, 'FON - Flash On'); + this.writeScreen.setPen({ + flash: true + }); + }; + _proto6.ccRDC = function ccRDC() { + // Resume Direct Captioning (switch mode to PaintOn) + this.logger.log(2, 'RDC - Resume Direct Captioning'); + this.setMode('MODE_PAINT-ON'); + }; + _proto6.ccTR = function ccTR() { + // Text Restart in text mode (not supported, however) + this.logger.log(2, 'TR'); + this.setMode('MODE_TEXT'); + }; + _proto6.ccRTD = function ccRTD() { + // Resume Text Display in Text mode (not supported, however) + this.logger.log(2, 'RTD'); + this.setMode('MODE_TEXT'); + }; + _proto6.ccEDM = function ccEDM() { + // Erase Displayed Memory + this.logger.log(2, 'EDM - Erase Displayed Memory'); + this.displayedMemory.reset(); + this.outputDataUpdate(true); + }; + _proto6.ccCR = function ccCR() { + // Carriage Return + this.logger.log(2, 'CR - Carriage Return'); + this.writeScreen.rollUp(); + this.outputDataUpdate(true); + }; + _proto6.ccENM = function ccENM() { + // Erase Non-Displayed Memory + this.logger.log(2, 'ENM - Erase Non-displayed Memory'); + this.nonDisplayedMemory.reset(); + }; + _proto6.ccEOC = function ccEOC() { + var _this4 = this; + // End of Caption (Flip Memories) + this.logger.log(2, 'EOC - End Of Caption'); + if (this.mode === 'MODE_POP-ON') { + var tmp = this.displayedMemory; + this.displayedMemory = this.nonDisplayedMemory; + this.nonDisplayedMemory = tmp; + this.writeScreen = this.nonDisplayedMemory; + this.logger.log(1, function () { + return 'DISP: ' + _this4.displayedMemory.getDisplayText(); + }); + } + this.outputDataUpdate(true); + }; + _proto6.ccTO = function ccTO(nrCols) { + // Tab Offset 1,2, or 3 columns + this.logger.log(2, 'TO(' + nrCols + ') - Tab Offset'); + this.writeScreen.moveCursor(nrCols); + }; + _proto6.ccMIDROW = function ccMIDROW(secondByte) { + // Parse MIDROW command + var styles = { + flash: false + }; + styles.underline = secondByte % 2 === 1; + styles.italics = secondByte >= 0x2e; + if (!styles.italics) { + var colorIndex = Math.floor(secondByte / 2) - 0x10; + var colors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta']; + styles.foreground = colors[colorIndex]; + } else { + styles.foreground = 'white'; + } + this.logger.log(2, 'MIDROW: ' + JSON.stringify(styles)); + this.writeScreen.setPen(styles); + }; + _proto6.outputDataUpdate = function outputDataUpdate(dispatch) { + if (dispatch === void 0) { + dispatch = false; + } + var time = this.logger.time; + if (time === null) { + return; + } + if (this.outputFilter) { + if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) { + // Start of a new cue + this.cueStartTime = time; + } else { + if (!this.displayedMemory.equals(this.lastOutputScreen)) { + this.outputFilter.newCue(this.cueStartTime, time, this.lastOutputScreen); + if (dispatch && this.outputFilter.dispatchCue) { + this.outputFilter.dispatchCue(); + } + this.cueStartTime = this.displayedMemory.isEmpty() ? null : time; + } + } + this.lastOutputScreen.copy(this.displayedMemory); + } + }; + _proto6.cueSplitAtTime = function cueSplitAtTime(t) { + if (this.outputFilter) { + if (!this.displayedMemory.isEmpty()) { + if (this.outputFilter.newCue) { + this.outputFilter.newCue(this.cueStartTime, t, this.displayedMemory); + } + this.cueStartTime = t; + } + } + }; + return Cea608Channel; + }(); // Will be 1 or 2 when parsing captions + var Cea608Parser = /*#__PURE__*/function () { + function Cea608Parser(field, out1, out2) { + this.channels = void 0; + this.currentChannel = 0; + this.cmdHistory = createCmdHistory(); + this.logger = void 0; + var logger = this.logger = new CaptionsLogger(); + this.channels = [null, new Cea608Channel(field, out1, logger), new Cea608Channel(field + 1, out2, logger)]; + } + var _proto7 = Cea608Parser.prototype; + _proto7.getHandler = function getHandler(channel) { + return this.channels[channel].getHandler(); + }; + _proto7.setHandler = function setHandler(channel, newHandler) { + this.channels[channel].setHandler(newHandler); + } + + /** + * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs. + */; + _proto7.addData = function addData(time, byteList) { + var _this5 = this; + this.logger.time = time; + var _loop = function _loop(i) { + var a = byteList[i] & 0x7f; + var b = byteList[i + 1] & 0x7f; + var cmdFound = false; + var charsFound = null; + if (a === 0 && b === 0) { + return 0; // continue + } else { + _this5.logger.log(3, function () { + return '[' + numArrayToHexArray([byteList[i], byteList[i + 1]]) + '] -> (' + numArrayToHexArray([a, b]) + ')'; + }); + } + var cmdHistory = _this5.cmdHistory; + var isControlCode = a >= 0x10 && a <= 0x1f; + if (isControlCode) { + // Skip redundant control codes + if (hasCmdRepeated(a, b, cmdHistory)) { + setLastCmd(null, null, cmdHistory); + _this5.logger.log(3, function () { + return 'Repeated command (' + numArrayToHexArray([a, b]) + ') is dropped'; + }); + return 0; // continue + } + setLastCmd(a, b, _this5.cmdHistory); + cmdFound = _this5.parseCmd(a, b); + if (!cmdFound) { + cmdFound = _this5.parseMidrow(a, b); + } + if (!cmdFound) { + cmdFound = _this5.parsePAC(a, b); + } + if (!cmdFound) { + cmdFound = _this5.parseBackgroundAttributes(a, b); + } + } else { + setLastCmd(null, null, cmdHistory); + } + if (!cmdFound) { + charsFound = _this5.parseChars(a, b); + if (charsFound) { + var currChNr = _this5.currentChannel; + if (currChNr && currChNr > 0) { + var channel = _this5.channels[currChNr]; + channel.insertChars(charsFound); + } else { + _this5.logger.log(2, 'No channel found yet. TEXT-MODE?'); + } + } + } + if (!cmdFound && !charsFound) { + _this5.logger.log(2, function () { + return "Couldn't parse cleaned data " + numArrayToHexArray([a, b]) + ' orig: ' + numArrayToHexArray([byteList[i], byteList[i + 1]]); + }); + } + }, + _ret; + for (var i = 0; i < byteList.length; i += 2) { + _ret = _loop(i); + if (_ret === 0) continue; + } + } + + /** + * Parse Command. + * @returns True if a command was found + */; + _proto7.parseCmd = function parseCmd(a, b) { + var cond1 = (a === 0x14 || a === 0x1c || a === 0x15 || a === 0x1d) && b >= 0x20 && b <= 0x2f; + var cond2 = (a === 0x17 || a === 0x1f) && b >= 0x21 && b <= 0x23; + if (!(cond1 || cond2)) { + return false; + } + var chNr = a === 0x14 || a === 0x15 || a === 0x17 ? 1 : 2; + var channel = this.channels[chNr]; + if (a === 0x14 || a === 0x15 || a === 0x1c || a === 0x1d) { + if (b === 0x20) { + channel.ccRCL(); + } else if (b === 0x21) { + channel.ccBS(); + } else if (b === 0x22) { + channel.ccAOF(); + } else if (b === 0x23) { + channel.ccAON(); + } else if (b === 0x24) { + channel.ccDER(); + } else if (b === 0x25) { + channel.ccRU(2); + } else if (b === 0x26) { + channel.ccRU(3); + } else if (b === 0x27) { + channel.ccRU(4); + } else if (b === 0x28) { + channel.ccFON(); + } else if (b === 0x29) { + channel.ccRDC(); + } else if (b === 0x2a) { + channel.ccTR(); + } else if (b === 0x2b) { + channel.ccRTD(); + } else if (b === 0x2c) { + channel.ccEDM(); + } else if (b === 0x2d) { + channel.ccCR(); + } else if (b === 0x2e) { + channel.ccENM(); + } else if (b === 0x2f) { + channel.ccEOC(); + } + } else { + // a == 0x17 || a == 0x1F + channel.ccTO(b - 0x20); + } + this.currentChannel = chNr; + return true; + } + + /** + * Parse midrow styling command + */; + _proto7.parseMidrow = function parseMidrow(a, b) { + var chNr = 0; + if ((a === 0x11 || a === 0x19) && b >= 0x20 && b <= 0x2f) { + if (a === 0x11) { + chNr = 1; + } else { + chNr = 2; + } + if (chNr !== this.currentChannel) { + this.logger.log(0, 'Mismatch channel in midrow parsing'); + return false; + } + var channel = this.channels[chNr]; + if (!channel) { + return false; + } + channel.ccMIDROW(b); + this.logger.log(3, function () { + return 'MIDROW (' + numArrayToHexArray([a, b]) + ')'; + }); + return true; + } + return false; + } + + /** + * Parse Preable Access Codes (Table 53). + * @returns {Boolean} Tells if PAC found + */; + _proto7.parsePAC = function parsePAC(a, b) { + var row; + var case1 = (a >= 0x11 && a <= 0x17 || a >= 0x19 && a <= 0x1f) && b >= 0x40 && b <= 0x7f; + var case2 = (a === 0x10 || a === 0x18) && b >= 0x40 && b <= 0x5f; + if (!(case1 || case2)) { + return false; + } + var chNr = a <= 0x17 ? 1 : 2; + if (b >= 0x40 && b <= 0x5f) { + row = chNr === 1 ? rowsLowCh1[a] : rowsLowCh2[a]; + } else { + // 0x60 <= b <= 0x7F + row = chNr === 1 ? rowsHighCh1[a] : rowsHighCh2[a]; + } + var channel = this.channels[chNr]; + if (!channel) { + return false; + } + channel.setPAC(this.interpretPAC(row, b)); + this.currentChannel = chNr; + return true; + } + + /** + * Interpret the second byte of the pac, and return the information. + * @returns pacData with style parameters + */; + _proto7.interpretPAC = function interpretPAC(row, _byte3) { + var pacIndex; + var pacData = { + color: null, + italics: false, + indent: null, + underline: false, + row: row + }; + if (_byte3 > 0x5f) { + pacIndex = _byte3 - 0x60; + } else { + pacIndex = _byte3 - 0x40; + } + pacData.underline = (pacIndex & 1) === 1; + if (pacIndex <= 0xd) { + pacData.color = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'white'][Math.floor(pacIndex / 2)]; + } else if (pacIndex <= 0xf) { + pacData.italics = true; + pacData.color = 'white'; + } else { + pacData.indent = Math.floor((pacIndex - 0x10) / 2) * 4; + } + return pacData; // Note that row has zero offset. The spec uses 1. + } + + /** + * Parse characters. + * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise. + */; + _proto7.parseChars = function parseChars(a, b) { + var channelNr; + var charCodes = null; + var charCode1 = null; + if (a >= 0x19) { + channelNr = 2; + charCode1 = a - 8; + } else { + channelNr = 1; + charCode1 = a; + } + if (charCode1 >= 0x11 && charCode1 <= 0x13) { + // Special character + var oneCode; + if (charCode1 === 0x11) { + oneCode = b + 0x50; + } else if (charCode1 === 0x12) { + oneCode = b + 0x70; + } else { + oneCode = b + 0x90; + } + this.logger.log(2, function () { + return "Special char '" + getCharForByte(oneCode) + "' in channel " + channelNr; + }); + charCodes = [oneCode]; + } else if (a >= 0x20 && a <= 0x7f) { + charCodes = b === 0 ? [a] : [a, b]; + } + if (charCodes) { + this.logger.log(3, function () { + return 'Char codes = ' + numArrayToHexArray(charCodes).join(','); + }); + } + return charCodes; + } + + /** + * Parse extended background attributes as well as new foreground color black. + * @returns True if background attributes are found + */; + _proto7.parseBackgroundAttributes = function parseBackgroundAttributes(a, b) { + var case1 = (a === 0x10 || a === 0x18) && b >= 0x20 && b <= 0x2f; + var case2 = (a === 0x17 || a === 0x1f) && b >= 0x2d && b <= 0x2f; + if (!(case1 || case2)) { + return false; + } + var index; + var bkgData = {}; + if (a === 0x10 || a === 0x18) { + index = Math.floor((b - 0x20) / 2); + bkgData.background = backgroundColors[index]; + if (b % 2 === 1) { + bkgData.background = bkgData.background + '_semi'; + } + } else if (b === 0x2d) { + bkgData.background = 'transparent'; + } else { + bkgData.foreground = 'black'; + if (b === 0x2f) { + bkgData.underline = true; + } + } + var chNr = a <= 0x17 ? 1 : 2; + var channel = this.channels[chNr]; + channel.setBkgData(bkgData); + return true; + } + + /** + * Reset state of parser and its channels. + */; + _proto7.reset = function reset() { + for (var i = 0; i < Object.keys(this.channels).length; i++) { + var channel = this.channels[i]; + if (channel) { + channel.reset(); + } + } + setLastCmd(null, null, this.cmdHistory); + } + + /** + * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty. + */; + _proto7.cueSplitAtTime = function cueSplitAtTime(t) { + for (var i = 0; i < this.channels.length; i++) { + var channel = this.channels[i]; + if (channel) { + channel.cueSplitAtTime(t); + } + } + }; + return Cea608Parser; + }(); + function setLastCmd(a, b, cmdHistory) { + cmdHistory.a = a; + cmdHistory.b = b; + } + function hasCmdRepeated(a, b, cmdHistory) { + return cmdHistory.a === a && cmdHistory.b === b; + } + function createCmdHistory() { + return { + a: null, + b: null + }; + } + + var OutputFilter = /*#__PURE__*/function () { + function OutputFilter(timelineController, trackName) { + this.timelineController = void 0; + this.cueRanges = []; + this.trackName = void 0; + this.startTime = null; + this.endTime = null; + this.screen = null; + this.timelineController = timelineController; + this.trackName = trackName; + } + var _proto = OutputFilter.prototype; + _proto.dispatchCue = function dispatchCue() { + if (this.startTime === null) { + return; + } + this.timelineController.addCues(this.trackName, this.startTime, this.endTime, this.screen, this.cueRanges); + this.startTime = null; + }; + _proto.newCue = function newCue(startTime, endTime, screen) { + if (this.startTime === null || this.startTime > startTime) { + this.startTime = startTime; + } + this.endTime = endTime; + this.screen = screen; + this.timelineController.createCaptionsTrack(this.trackName); + }; + _proto.reset = function reset() { + this.cueRanges = []; + this.startTime = null; + }; + return OutputFilter; + }(); + + /** + * Copyright 2013 vtt.js Contributors + * + * Licensed under the Apache License, Version 2.0 (the 'License'); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + var VTTCue = (function () { + if (optionalSelf != null && optionalSelf.VTTCue) { + return self.VTTCue; + } + var AllowedDirections = ['', 'lr', 'rl']; + var AllowedAlignments = ['start', 'middle', 'end', 'left', 'right']; + function isAllowedValue(allowed, value) { + if (typeof value !== 'string') { + return false; + } + // necessary for assuring the generic conforms to the Array interface + if (!Array.isArray(allowed)) { + return false; + } + // reset the type so that the next narrowing works well + var lcValue = value.toLowerCase(); + // use the allow list to narrow the type to a specific subset of strings + if (~allowed.indexOf(lcValue)) { + return lcValue; + } + return false; + } + function findDirectionSetting(value) { + return isAllowedValue(AllowedDirections, value); + } + function findAlignSetting(value) { + return isAllowedValue(AllowedAlignments, value); + } + function extend(obj) { + for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + rest[_key - 1] = arguments[_key]; + } + var i = 1; + for (; i < arguments.length; i++) { + var cobj = arguments[i]; + for (var p in cobj) { + obj[p] = cobj[p]; + } + } + return obj; + } + function VTTCue(startTime, endTime, text) { + var cue = this; + var baseObj = { + enumerable: true + }; + /** + * Shim implementation specific properties. These properties are not in + * the spec. + */ + + // Lets us know when the VTTCue's data has changed in such a way that we need + // to recompute its display state. This lets us compute its display state + // lazily. + cue.hasBeenReset = false; + + /** + * VTTCue and TextTrackCue properties + * http://dev.w3.org/html5/webvtt/#vttcue-interface + */ + + var _id = ''; + var _pauseOnExit = false; + var _startTime = startTime; + var _endTime = endTime; + var _text = text; + var _region = null; + var _vertical = ''; + var _snapToLines = true; + var _line = 'auto'; + var _lineAlign = 'start'; + var _position = 50; + var _positionAlign = 'middle'; + var _size = 50; + var _align = 'middle'; + Object.defineProperty(cue, 'id', extend({}, baseObj, { + get: function get() { + return _id; + }, + set: function set(value) { + _id = '' + value; + } + })); + Object.defineProperty(cue, 'pauseOnExit', extend({}, baseObj, { + get: function get() { + return _pauseOnExit; + }, + set: function set(value) { + _pauseOnExit = !!value; + } + })); + Object.defineProperty(cue, 'startTime', extend({}, baseObj, { + get: function get() { + return _startTime; + }, + set: function set(value) { + if (typeof value !== 'number') { + throw new TypeError('Start time must be set to a number.'); + } + _startTime = value; + this.hasBeenReset = true; + } + })); + Object.defineProperty(cue, 'endTime', extend({}, baseObj, { + get: function get() { + return _endTime; + }, + set: function set(value) { + if (typeof value !== 'number') { + throw new TypeError('End time must be set to a number.'); + } + _endTime = value; + this.hasBeenReset = true; + } + })); + Object.defineProperty(cue, 'text', extend({}, baseObj, { + get: function get() { + return _text; + }, + set: function set(value) { + _text = '' + value; + this.hasBeenReset = true; + } + })); + + // todo: implement VTTRegion polyfill? + Object.defineProperty(cue, 'region', extend({}, baseObj, { + get: function get() { + return _region; + }, + set: function set(value) { + _region = value; + this.hasBeenReset = true; + } + })); + Object.defineProperty(cue, 'vertical', extend({}, baseObj, { + get: function get() { + return _vertical; + }, + set: function set(value) { + var setting = findDirectionSetting(value); + // Have to check for false because the setting an be an empty string. + if (setting === false) { + throw new SyntaxError('An invalid or illegal string was specified.'); + } + _vertical = setting; + this.hasBeenReset = true; + } + })); + Object.defineProperty(cue, 'snapToLines', extend({}, baseObj, { + get: function get() { + return _snapToLines; + }, + set: function set(value) { + _snapToLines = !!value; + this.hasBeenReset = true; + } + })); + Object.defineProperty(cue, 'line', extend({}, baseObj, { + get: function get() { + return _line; + }, + set: function set(value) { + if (typeof value !== 'number' && value !== 'auto') { + throw new SyntaxError('An invalid number or illegal string was specified.'); + } + _line = value; + this.hasBeenReset = true; + } + })); + Object.defineProperty(cue, 'lineAlign', extend({}, baseObj, { + get: function get() { + return _lineAlign; + }, + set: function set(value) { + var setting = findAlignSetting(value); + if (!setting) { + throw new SyntaxError('An invalid or illegal string was specified.'); + } + _lineAlign = setting; + this.hasBeenReset = true; + } + })); + Object.defineProperty(cue, 'position', extend({}, baseObj, { + get: function get() { + return _position; + }, + set: function set(value) { + if (value < 0 || value > 100) { + throw new Error('Position must be between 0 and 100.'); + } + _position = value; + this.hasBeenReset = true; + } + })); + Object.defineProperty(cue, 'positionAlign', extend({}, baseObj, { + get: function get() { + return _positionAlign; + }, + set: function set(value) { + var setting = findAlignSetting(value); + if (!setting) { + throw new SyntaxError('An invalid or illegal string was specified.'); + } + _positionAlign = setting; + this.hasBeenReset = true; + } + })); + Object.defineProperty(cue, 'size', extend({}, baseObj, { + get: function get() { + return _size; + }, + set: function set(value) { + if (value < 0 || value > 100) { + throw new Error('Size must be between 0 and 100.'); + } + _size = value; + this.hasBeenReset = true; + } + })); + Object.defineProperty(cue, 'align', extend({}, baseObj, { + get: function get() { + return _align; + }, + set: function set(value) { + var setting = findAlignSetting(value); + if (!setting) { + throw new SyntaxError('An invalid or illegal string was specified.'); + } + _align = setting; + this.hasBeenReset = true; + } + })); + + /** + * Other <track> spec defined properties + */ + + // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state + cue.displayState = undefined; + } + + /** + * VTTCue methods + */ + + VTTCue.prototype.getCueAsHTML = function () { + // Assume WebVTT.convertCueToDOMTree is on the global. + var WebVTT = self.WebVTT; + return WebVTT.convertCueToDOMTree(self, this.text); + }; + // this is a polyfill hack + return VTTCue; + })(); + + /* + * Source: https://github.com/mozilla/vtt.js/blob/master/dist/vtt.js + */ + + var StringDecoder = /*#__PURE__*/function () { + function StringDecoder() {} + var _proto = StringDecoder.prototype; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + _proto.decode = function decode(data, options) { + if (!data) { + return ''; + } + if (typeof data !== 'string') { + throw new Error('Error - expected string data.'); + } + return decodeURIComponent(encodeURIComponent(data)); + }; + return StringDecoder; + }(); // Try to parse input as a time stamp. + function parseTimeStamp(input) { + function computeSeconds(h, m, s, f) { + return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + parseFloat(f || 0); + } + var m = input.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/); + if (!m) { + return null; + } + if (parseFloat(m[2]) > 59) { + // Timestamp takes the form of [hours]:[minutes].[milliseconds] + // First position is hours as it's over 59. + return computeSeconds(m[2], m[3], 0, m[4]); + } + // Timestamp takes the form of [hours (optional)]:[minutes]:[seconds].[milliseconds] + return computeSeconds(m[1], m[2], m[3], m[4]); + } + + // A settings object holds key/value pairs and will ignore anything but the first + // assignment to a specific key. + var Settings = /*#__PURE__*/function () { + function Settings() { + this.values = Object.create(null); + } + var _proto2 = Settings.prototype; + // Only accept the first assignment to any key. + _proto2.set = function set(k, v) { + if (!this.get(k) && v !== '') { + this.values[k] = v; + } + } + // Return the value for a key, or a default value. + // If 'defaultKey' is passed then 'dflt' is assumed to be an object with + // a number of possible default values as properties where 'defaultKey' is + // the key of the property that will be chosen; otherwise it's assumed to be + // a single value. + ; + _proto2.get = function get(k, dflt, defaultKey) { + if (defaultKey) { + return this.has(k) ? this.values[k] : dflt[defaultKey]; + } + return this.has(k) ? this.values[k] : dflt; + } + // Check whether we have a value for a key. + ; + _proto2.has = function has(k) { + return k in this.values; + } + // Accept a setting if its one of the given alternatives. + ; + _proto2.alt = function alt(k, v, a) { + for (var n = 0; n < a.length; ++n) { + if (v === a[n]) { + this.set(k, v); + break; + } + } + } + // Accept a setting if its a valid (signed) integer. + ; + _proto2.integer = function integer(k, v) { + if (/^-?\d+$/.test(v)) { + // integer + this.set(k, parseInt(v, 10)); + } + } + // Accept a setting if its a valid percentage. + ; + _proto2.percent = function percent(k, v) { + if (/^([\d]{1,3})(\.[\d]*)?%$/.test(v)) { + var _percent = parseFloat(v); + if (_percent >= 0 && _percent <= 100) { + this.set(k, _percent); + return true; + } + } + return false; + }; + return Settings; + }(); // Helper function to parse input into groups separated by 'groupDelim', and + // interpret each group as a key/value pair separated by 'keyValueDelim'. + function parseOptions(input, callback, keyValueDelim, groupDelim) { + var groups = groupDelim ? input.split(groupDelim) : [input]; + for (var i in groups) { + if (typeof groups[i] !== 'string') { + continue; + } + var kv = groups[i].split(keyValueDelim); + if (kv.length !== 2) { + continue; + } + var k = kv[0]; + var v = kv[1]; + callback(k, v); + } + } + var defaults = new VTTCue(0, 0, ''); + // 'middle' was changed to 'center' in the spec: https://github.com/w3c/webvtt/pull/244 + // Safari doesn't yet support this change, but FF and Chrome do. + var center = defaults.align === 'middle' ? 'middle' : 'center'; + function parseCue(input, cue, regionList) { + // Remember the original input if we need to throw an error. + var oInput = input; + // 4.1 WebVTT timestamp + function consumeTimeStamp() { + var ts = parseTimeStamp(input); + if (ts === null) { + throw new Error('Malformed timestamp: ' + oInput); + } + + // Remove time stamp from input. + input = input.replace(/^[^\sa-zA-Z-]+/, ''); + return ts; + } + + // 4.4.2 WebVTT cue settings + function consumeCueSettings(input, cue) { + var settings = new Settings(); + parseOptions(input, function (k, v) { + var vals; + switch (k) { + case 'region': + // Find the last region we parsed with the same region id. + for (var i = regionList.length - 1; i >= 0; i--) { + if (regionList[i].id === v) { + settings.set(k, regionList[i].region); + break; + } + } + break; + case 'vertical': + settings.alt(k, v, ['rl', 'lr']); + break; + case 'line': + vals = v.split(','); + settings.integer(k, vals[0]); + if (settings.percent(k, vals[0])) { + settings.set('snapToLines', false); + } + settings.alt(k, vals[0], ['auto']); + if (vals.length === 2) { + settings.alt('lineAlign', vals[1], ['start', center, 'end']); + } + break; + case 'position': + vals = v.split(','); + settings.percent(k, vals[0]); + if (vals.length === 2) { + settings.alt('positionAlign', vals[1], ['start', center, 'end', 'line-left', 'line-right', 'auto']); + } + break; + case 'size': + settings.percent(k, v); + break; + case 'align': + settings.alt(k, v, ['start', center, 'end', 'left', 'right']); + break; + } + }, /:/, /\s/); + + // Apply default values for any missing fields. + cue.region = settings.get('region', null); + cue.vertical = settings.get('vertical', ''); + var line = settings.get('line', 'auto'); + if (line === 'auto' && defaults.line === -1) { + // set numeric line number for Safari + line = -1; + } + cue.line = line; + cue.lineAlign = settings.get('lineAlign', 'start'); + cue.snapToLines = settings.get('snapToLines', true); + cue.size = settings.get('size', 100); + cue.align = settings.get('align', center); + var position = settings.get('position', 'auto'); + if (position === 'auto' && defaults.position === 50) { + // set numeric position for Safari + position = cue.align === 'start' || cue.align === 'left' ? 0 : cue.align === 'end' || cue.align === 'right' ? 100 : 50; + } + cue.position = position; + } + function skipWhitespace() { + input = input.replace(/^\s+/, ''); + } + + // 4.1 WebVTT cue timings. + skipWhitespace(); + cue.startTime = consumeTimeStamp(); // (1) collect cue start time + skipWhitespace(); + if (input.slice(0, 3) !== '-->') { + // (3) next characters must match '-->' + throw new Error("Malformed time stamp (time stamps must be separated by '-->'): " + oInput); + } + input = input.slice(3); + skipWhitespace(); + cue.endTime = consumeTimeStamp(); // (5) collect cue end time + + // 4.1 WebVTT cue settings list. + skipWhitespace(); + consumeCueSettings(input, cue); + } + function fixLineBreaks(input) { + return input.replace(/<br(?: \/)?>/gi, '\n'); + } + var VTTParser = /*#__PURE__*/function () { + function VTTParser() { + this.state = 'INITIAL'; + this.buffer = ''; + this.decoder = new StringDecoder(); + this.regionList = []; + this.cue = null; + this.oncue = void 0; + this.onparsingerror = void 0; + this.onflush = void 0; + } + var _proto3 = VTTParser.prototype; + _proto3.parse = function parse(data) { + var _this = this; + + // If there is no data then we won't decode it, but will just try to parse + // whatever is in buffer already. This may occur in circumstances, for + // example when flush() is called. + if (data) { + // Try to decode the data that we received. + _this.buffer += _this.decoder.decode(data, { + stream: true + }); + } + function collectNextLine() { + var buffer = _this.buffer; + var pos = 0; + buffer = fixLineBreaks(buffer); + while (pos < buffer.length && buffer[pos] !== '\r' && buffer[pos] !== '\n') { + ++pos; + } + var line = buffer.slice(0, pos); + // Advance the buffer early in case we fail below. + if (buffer[pos] === '\r') { + ++pos; + } + if (buffer[pos] === '\n') { + ++pos; + } + _this.buffer = buffer.slice(pos); + return line; + } + + // 3.2 WebVTT metadata header syntax + function parseHeader(input) { + parseOptions(input, function (k, v) { + // switch (k) { + // case 'region': + // 3.3 WebVTT region metadata header syntax + // console.log('parse region', v); + // parseRegion(v); + // break; + // } + }, /:/); + } + + // 5.1 WebVTT file parsing. + try { + var line = ''; + if (_this.state === 'INITIAL') { + // We can't start parsing until we have the first line. + if (!/\r\n|\n/.test(_this.buffer)) { + return this; + } + line = collectNextLine(); + // strip of UTF-8 BOM if any + // https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8 + var m = line.match(/^()?WEBVTT([ \t].*)?$/); + if (!(m != null && m[0])) { + throw new Error('Malformed WebVTT signature.'); + } + _this.state = 'HEADER'; + } + var alreadyCollectedLine = false; + while (_this.buffer) { + // We can't parse a line until we have the full line. + if (!/\r\n|\n/.test(_this.buffer)) { + return this; + } + if (!alreadyCollectedLine) { + line = collectNextLine(); + } else { + alreadyCollectedLine = false; + } + switch (_this.state) { + case 'HEADER': + // 13-18 - Allow a header (metadata) under the WEBVTT line. + if (/:/.test(line)) { + parseHeader(line); + } else if (!line) { + // An empty line terminates the header and starts the body (cues). + _this.state = 'ID'; + } + continue; + case 'NOTE': + // Ignore NOTE blocks. + if (!line) { + _this.state = 'ID'; + } + continue; + case 'ID': + // Check for the start of NOTE blocks. + if (/^NOTE($|[ \t])/.test(line)) { + _this.state = 'NOTE'; + break; + } + // 19-29 - Allow any number of line terminators, then initialize new cue values. + if (!line) { + continue; + } + _this.cue = new VTTCue(0, 0, ''); + _this.state = 'CUE'; + // 30-39 - Check if self line contains an optional identifier or timing data. + if (line.indexOf('-->') === -1) { + _this.cue.id = line; + continue; + } + // Process line as start of a cue. + /* falls through */ + case 'CUE': + // 40 - Collect cue timings and settings. + if (!_this.cue) { + _this.state = 'BADCUE'; + continue; + } + try { + parseCue(line, _this.cue, _this.regionList); + } catch (e) { + // In case of an error ignore rest of the cue. + _this.cue = null; + _this.state = 'BADCUE'; + continue; + } + _this.state = 'CUETEXT'; + continue; + case 'CUETEXT': + { + var hasSubstring = line.indexOf('-->') !== -1; + // 34 - If we have an empty line then report the cue. + // 35 - If we have the special substring '-->' then report the cue, + // but do not collect the line as we need to process the current + // one as a new cue. + if (!line || hasSubstring && (alreadyCollectedLine = true)) { + // We are done parsing self cue. + if (_this.oncue && _this.cue) { + _this.oncue(_this.cue); + } + _this.cue = null; + _this.state = 'ID'; + continue; + } + if (_this.cue === null) { + continue; + } + if (_this.cue.text) { + _this.cue.text += '\n'; + } + _this.cue.text += line; + } + continue; + case 'BADCUE': + // 54-62 - Collect and discard the remaining cue. + if (!line) { + _this.state = 'ID'; + } + } + } + } catch (e) { + // If we are currently parsing a cue, report what we have. + if (_this.state === 'CUETEXT' && _this.cue && _this.oncue) { + _this.oncue(_this.cue); + } + _this.cue = null; + // Enter BADWEBVTT state if header was not parsed correctly otherwise + // another exception occurred so enter BADCUE state. + _this.state = _this.state === 'INITIAL' ? 'BADWEBVTT' : 'BADCUE'; + } + return this; + }; + _proto3.flush = function flush() { + var _this = this; + try { + // Finish decoding the stream. + // _this.buffer += _this.decoder.decode(); + // Synthesize the end of the current cue or region. + if (_this.cue || _this.state === 'HEADER') { + _this.buffer += '\n\n'; + _this.parse(); + } + // If we've flushed, parsed, and we're still on the INITIAL state then + // that means we don't have enough of the stream to parse the first + // line. + if (_this.state === 'INITIAL' || _this.state === 'BADWEBVTT') { + throw new Error('Malformed WebVTT signature.'); + } + } catch (e) { + if (_this.onparsingerror) { + _this.onparsingerror(e); + } + } + if (_this.onflush) { + _this.onflush(); + } + return this; + }; + return VTTParser; + }(); + + // From https://github.com/darkskyapp/string-hash + function hash(text) { + var hash = 5381; + var i = text.length; + while (i) { + hash = hash * 33 ^ text.charCodeAt(--i); + } + return (hash >>> 0).toString(); + } + + var LINEBREAKS = /\r\n|\n\r|\n|\r/g; + + // String.prototype.startsWith is not supported in IE11 + var startsWith = function startsWith(inputString, searchString, position) { + if (position === void 0) { + position = 0; + } + return inputString.slice(position, position + searchString.length) === searchString; + }; + var cueString2millis = function cueString2millis(timeString) { + var ts = parseInt(timeString.slice(-3)); + var secs = parseInt(timeString.slice(-6, -4)); + var mins = parseInt(timeString.slice(-9, -7)); + var hours = timeString.length > 9 ? parseInt(timeString.substring(0, timeString.indexOf(':'))) : 0; + if (!isFiniteNumber(ts) || !isFiniteNumber(secs) || !isFiniteNumber(mins) || !isFiniteNumber(hours)) { + throw Error("Malformed X-TIMESTAMP-MAP: Local:" + timeString); + } + ts += 1000 * secs; + ts += 60 * 1000 * mins; + ts += 60 * 60 * 1000 * hours; + return ts; + }; + + // Create a unique hash id for a cue based on start/end times and text. + // This helps timeline-controller to avoid showing repeated captions. + function generateCueId(startTime, endTime, text) { + return hash(startTime.toString()) + hash(endTime.toString()) + hash(text); + } + var calculateOffset = function calculateOffset(vttCCs, cc, presentationTime) { + var currCC = vttCCs[cc]; + var prevCC = vttCCs[currCC.prevCC]; + + // This is the first discontinuity or cues have been processed since the last discontinuity + // Offset = current discontinuity time + if (!prevCC || !prevCC.new && currCC.new) { + vttCCs.ccOffset = vttCCs.presentationOffset = currCC.start; + currCC.new = false; + return; + } + + // There have been discontinuities since cues were last parsed. + // Offset = time elapsed + while ((_prevCC = prevCC) != null && _prevCC.new) { + var _prevCC; + vttCCs.ccOffset += currCC.start - prevCC.start; + currCC.new = false; + currCC = prevCC; + prevCC = vttCCs[currCC.prevCC]; + } + vttCCs.presentationOffset = presentationTime; + }; + function parseWebVTT(vttByteArray, initPTS, vttCCs, cc, timeOffset, callBack, errorCallBack) { + var parser = new VTTParser(); + // Convert byteArray into string, replacing any somewhat exotic linefeeds with "\n", then split on that character. + // Uint8Array.prototype.reduce is not implemented in IE11 + var vttLines = utf8ArrayToStr(new Uint8Array(vttByteArray)).trim().replace(LINEBREAKS, '\n').split('\n'); + var cues = []; + var init90kHz = initPTS ? toMpegTsClockFromTimescale(initPTS.baseTime, initPTS.timescale) : 0; + var cueTime = '00:00.000'; + var timestampMapMPEGTS = 0; + var timestampMapLOCAL = 0; + var parsingError; + var inHeader = true; + parser.oncue = function (cue) { + // Adjust cue timing; clamp cues to start no earlier than - and drop cues that don't end after - 0 on timeline. + var currCC = vttCCs[cc]; + var cueOffset = vttCCs.ccOffset; + + // Calculate subtitle PTS offset + var webVttMpegTsMapOffset = (timestampMapMPEGTS - init90kHz) / 90000; + + // Update offsets for new discontinuities + if (currCC != null && currCC.new) { + if (timestampMapLOCAL !== undefined) { + // When local time is provided, offset = discontinuity start time - local time + cueOffset = vttCCs.ccOffset = currCC.start; + } else { + calculateOffset(vttCCs, cc, webVttMpegTsMapOffset); + } + } + if (webVttMpegTsMapOffset) { + if (!initPTS) { + parsingError = new Error('Missing initPTS for VTT MPEGTS'); + return; + } + // If we have MPEGTS, offset = presentation time + discontinuity offset + cueOffset = webVttMpegTsMapOffset - vttCCs.presentationOffset; + } + var duration = cue.endTime - cue.startTime; + var startTime = normalizePts((cue.startTime + cueOffset - timestampMapLOCAL) * 90000, timeOffset * 90000) / 90000; + cue.startTime = Math.max(startTime, 0); + cue.endTime = Math.max(startTime + duration, 0); + + //trim trailing webvtt block whitespaces + var text = cue.text.trim(); + + // Fix encoding of special characters + cue.text = decodeURIComponent(encodeURIComponent(text)); + + // If the cue was not assigned an id from the VTT file (line above the content), create one. + if (!cue.id) { + cue.id = generateCueId(cue.startTime, cue.endTime, text); + } + if (cue.endTime > 0) { + cues.push(cue); + } + }; + parser.onparsingerror = function (error) { + parsingError = error; + }; + parser.onflush = function () { + if (parsingError) { + errorCallBack(parsingError); + return; + } + callBack(cues); + }; + + // Go through contents line by line. + vttLines.forEach(function (line) { + if (inHeader) { + // Look for X-TIMESTAMP-MAP in header. + if (startsWith(line, 'X-TIMESTAMP-MAP=')) { + // Once found, no more are allowed anyway, so stop searching. + inHeader = false; + // Extract LOCAL and MPEGTS. + line.slice(16).split(',').forEach(function (timestamp) { + if (startsWith(timestamp, 'LOCAL:')) { + cueTime = timestamp.slice(6); + } else if (startsWith(timestamp, 'MPEGTS:')) { + timestampMapMPEGTS = parseInt(timestamp.slice(7)); + } + }); + try { + // Convert cue time to seconds + timestampMapLOCAL = cueString2millis(cueTime) / 1000; + } catch (error) { + parsingError = error; + } + // Return without parsing X-TIMESTAMP-MAP line. + return; + } else if (line === '') { + inHeader = false; + } + } + // Parse line by default. + parser.parse(line + '\n'); + }); + parser.flush(); + } + + var IMSC1_CODEC = 'stpp.ttml.im1t'; + + // Time format: h:m:s:frames(.subframes) + var HMSF_REGEX = /^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/; + + // Time format: hours, minutes, seconds, milliseconds, frames, ticks + var TIME_UNIT_REGEX = /^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/; + var textAlignToLineAlign = { + left: 'start', + center: 'center', + right: 'end', + start: 'start', + end: 'end' + }; + function parseIMSC1(payload, initPTS, callBack, errorCallBack) { + var results = findBox(new Uint8Array(payload), ['mdat']); + if (results.length === 0) { + errorCallBack(new Error('Could not parse IMSC1 mdat')); + return; + } + var ttmlList = results.map(function (mdat) { + return utf8ArrayToStr(mdat); + }); + var syncTime = toTimescaleFromScale(initPTS.baseTime, 1, initPTS.timescale); + try { + ttmlList.forEach(function (ttml) { + return callBack(parseTTML(ttml, syncTime)); + }); + } catch (error) { + errorCallBack(error); + } + } + function parseTTML(ttml, syncTime) { + var parser = new DOMParser(); + var xmlDoc = parser.parseFromString(ttml, 'text/xml'); + var tt = xmlDoc.getElementsByTagName('tt')[0]; + if (!tt) { + throw new Error('Invalid ttml'); + } + var defaultRateInfo = { + frameRate: 30, + subFrameRate: 1, + frameRateMultiplier: 0, + tickRate: 0 + }; + var rateInfo = Object.keys(defaultRateInfo).reduce(function (result, key) { + result[key] = tt.getAttribute("ttp:" + key) || defaultRateInfo[key]; + return result; + }, {}); + var trim = tt.getAttribute('xml:space') !== 'preserve'; + var styleElements = collectionToDictionary(getElementCollection(tt, 'styling', 'style')); + var regionElements = collectionToDictionary(getElementCollection(tt, 'layout', 'region')); + var cueElements = getElementCollection(tt, 'body', '[begin]'); + return [].map.call(cueElements, function (cueElement) { + var cueText = getTextContent(cueElement, trim); + if (!cueText || !cueElement.hasAttribute('begin')) { + return null; + } + var startTime = parseTtmlTime(cueElement.getAttribute('begin'), rateInfo); + var duration = parseTtmlTime(cueElement.getAttribute('dur'), rateInfo); + var endTime = parseTtmlTime(cueElement.getAttribute('end'), rateInfo); + if (startTime === null) { + throw timestampParsingError(cueElement); + } + if (endTime === null) { + if (duration === null) { + throw timestampParsingError(cueElement); + } + endTime = startTime + duration; + } + var cue = new VTTCue(startTime - syncTime, endTime - syncTime, cueText); + cue.id = generateCueId(cue.startTime, cue.endTime, cue.text); + var region = regionElements[cueElement.getAttribute('region')]; + var style = styleElements[cueElement.getAttribute('style')]; + + // Apply styles to cue + var styles = getTtmlStyles(region, style, styleElements); + var textAlign = styles.textAlign; + if (textAlign) { + // cue.positionAlign not settable in FF~2016 + var lineAlign = textAlignToLineAlign[textAlign]; + if (lineAlign) { + cue.lineAlign = lineAlign; + } + cue.align = textAlign; + } + _extends(cue, styles); + return cue; + }).filter(function (cue) { + return cue !== null; + }); + } + function getElementCollection(fromElement, parentName, childName) { + var parent = fromElement.getElementsByTagName(parentName)[0]; + if (parent) { + return [].slice.call(parent.querySelectorAll(childName)); + } + return []; + } + function collectionToDictionary(elementsWithId) { + return elementsWithId.reduce(function (dict, element) { + var id = element.getAttribute('xml:id'); + if (id) { + dict[id] = element; + } + return dict; + }, {}); + } + function getTextContent(element, trim) { + return [].slice.call(element.childNodes).reduce(function (str, node, i) { + var _node$childNodes; + if (node.nodeName === 'br' && i) { + return str + '\n'; + } + if ((_node$childNodes = node.childNodes) != null && _node$childNodes.length) { + return getTextContent(node, trim); + } else if (trim) { + return str + node.textContent.trim().replace(/\s+/g, ' '); + } + return str + node.textContent; + }, ''); + } + function getTtmlStyles(region, style, styleElements) { + var ttsNs = 'http://www.w3.org/ns/ttml#styling'; + var regionStyle = null; + var styleAttributes = ['displayAlign', 'textAlign', 'color', 'backgroundColor', 'fontSize', 'fontFamily' + // 'fontWeight', + // 'lineHeight', + // 'wrapOption', + // 'fontStyle', + // 'direction', + // 'writingMode' + ]; + var regionStyleName = region != null && region.hasAttribute('style') ? region.getAttribute('style') : null; + if (regionStyleName && styleElements.hasOwnProperty(regionStyleName)) { + regionStyle = styleElements[regionStyleName]; + } + return styleAttributes.reduce(function (styles, name) { + var value = getAttributeNS(style, ttsNs, name) || getAttributeNS(region, ttsNs, name) || getAttributeNS(regionStyle, ttsNs, name); + if (value) { + styles[name] = value; + } + return styles; + }, {}); + } + function getAttributeNS(element, ns, name) { + if (!element) { + return null; + } + return element.hasAttributeNS(ns, name) ? element.getAttributeNS(ns, name) : null; + } + function timestampParsingError(node) { + return new Error("Could not parse ttml timestamp " + node); + } + function parseTtmlTime(timeAttributeValue, rateInfo) { + if (!timeAttributeValue) { + return null; + } + var seconds = parseTimeStamp(timeAttributeValue); + if (seconds === null) { + if (HMSF_REGEX.test(timeAttributeValue)) { + seconds = parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo); + } else if (TIME_UNIT_REGEX.test(timeAttributeValue)) { + seconds = parseTimeUnits(timeAttributeValue, rateInfo); + } + } + return seconds; + } + function parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo) { + var m = HMSF_REGEX.exec(timeAttributeValue); + var frames = (m[4] | 0) + (m[5] | 0) / rateInfo.subFrameRate; + return (m[1] | 0) * 3600 + (m[2] | 0) * 60 + (m[3] | 0) + frames / rateInfo.frameRate; + } + function parseTimeUnits(timeAttributeValue, rateInfo) { + var m = TIME_UNIT_REGEX.exec(timeAttributeValue); + var value = Number(m[1]); + var unit = m[2]; + switch (unit) { + case 'h': + return value * 3600; + case 'm': + return value * 60; + case 'ms': + return value * 1000; + case 'f': + return value / rateInfo.frameRate; + case 't': + return value / rateInfo.tickRate; + } + return value; + } + + var TimelineController = /*#__PURE__*/function () { + function TimelineController(hls) { + this.hls = void 0; + this.media = null; + this.config = void 0; + this.enabled = true; + this.Cues = void 0; + this.textTracks = []; + this.tracks = []; + this.initPTS = []; + this.unparsedVttFrags = []; + this.captionsTracks = {}; + this.nonNativeCaptionsTracks = {}; + this.cea608Parser1 = void 0; + this.cea608Parser2 = void 0; + this.lastCc = -1; + // Last video (CEA-608) fragment CC + this.lastSn = -1; + // Last video (CEA-608) fragment MSN + this.lastPartIndex = -1; + // Last video (CEA-608) fragment Part Index + this.prevCC = -1; + // Last subtitle fragment CC + this.vttCCs = newVTTCCs(); + this.captionsProperties = void 0; + this.hls = hls; + this.config = hls.config; + this.Cues = hls.config.cueHandler; + this.captionsProperties = { + textTrack1: { + label: this.config.captionsTextTrack1Label, + languageCode: this.config.captionsTextTrack1LanguageCode + }, + textTrack2: { + label: this.config.captionsTextTrack2Label, + languageCode: this.config.captionsTextTrack2LanguageCode + }, + textTrack3: { + label: this.config.captionsTextTrack3Label, + languageCode: this.config.captionsTextTrack3LanguageCode + }, + textTrack4: { + label: this.config.captionsTextTrack4Label, + languageCode: this.config.captionsTextTrack4LanguageCode + } + }; + hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this); + hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this); + hls.on(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this); + hls.on(Events.FRAG_LOADING, this.onFragLoading, this); + hls.on(Events.FRAG_LOADED, this.onFragLoaded, this); + hls.on(Events.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this); + hls.on(Events.FRAG_DECRYPTED, this.onFragDecrypted, this); + hls.on(Events.INIT_PTS_FOUND, this.onInitPtsFound, this); + hls.on(Events.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this); + hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this); + } + var _proto = TimelineController.prototype; + _proto.destroy = function destroy() { + var hls = this.hls; + hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this); + hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this); + hls.off(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this); + hls.off(Events.FRAG_LOADING, this.onFragLoading, this); + hls.off(Events.FRAG_LOADED, this.onFragLoaded, this); + hls.off(Events.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this); + hls.off(Events.FRAG_DECRYPTED, this.onFragDecrypted, this); + hls.off(Events.INIT_PTS_FOUND, this.onInitPtsFound, this); + hls.off(Events.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this); + hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this); + // @ts-ignore + this.hls = this.config = this.media = null; + this.cea608Parser1 = this.cea608Parser2 = undefined; + }; + _proto.initCea608Parsers = function initCea608Parsers() { + var channel1 = new OutputFilter(this, 'textTrack1'); + var channel2 = new OutputFilter(this, 'textTrack2'); + var channel3 = new OutputFilter(this, 'textTrack3'); + var channel4 = new OutputFilter(this, 'textTrack4'); + this.cea608Parser1 = new Cea608Parser(1, channel1, channel2); + this.cea608Parser2 = new Cea608Parser(3, channel3, channel4); + }; + _proto.addCues = function addCues(trackName, startTime, endTime, screen, cueRanges) { + // skip cues which overlap more than 50% with previously parsed time ranges + var merged = false; + for (var i = cueRanges.length; i--;) { + var cueRange = cueRanges[i]; + var overlap = intersection(cueRange[0], cueRange[1], startTime, endTime); + if (overlap >= 0) { + cueRange[0] = Math.min(cueRange[0], startTime); + cueRange[1] = Math.max(cueRange[1], endTime); + merged = true; + if (overlap / (endTime - startTime) > 0.5) { + return; + } + } + } + if (!merged) { + cueRanges.push([startTime, endTime]); + } + if (this.config.renderTextTracksNatively) { + var track = this.captionsTracks[trackName]; + this.Cues.newCue(track, startTime, endTime, screen); + } else { + var cues = this.Cues.newCue(null, startTime, endTime, screen); + this.hls.trigger(Events.CUES_PARSED, { + type: 'captions', + cues: cues, + track: trackName + }); + } + } + + // Triggered when an initial PTS is found; used for synchronisation of WebVTT. + ; + _proto.onInitPtsFound = function onInitPtsFound(event, _ref) { + var _this = this; + var frag = _ref.frag, + id = _ref.id, + initPTS = _ref.initPTS, + timescale = _ref.timescale; + var unparsedVttFrags = this.unparsedVttFrags; + if (id === PlaylistLevelType.MAIN) { + this.initPTS[frag.cc] = { + baseTime: initPTS, + timescale: timescale + }; + } + + // Due to asynchronous processing, initial PTS may arrive later than the first VTT fragments are loaded. + // Parse any unparsed fragments upon receiving the initial PTS. + if (unparsedVttFrags.length) { + this.unparsedVttFrags = []; + unparsedVttFrags.forEach(function (frag) { + _this.onFragLoaded(Events.FRAG_LOADED, frag); + }); + } + }; + _proto.getExistingTrack = function getExistingTrack(label, language) { + var media = this.media; + if (media) { + for (var i = 0; i < media.textTracks.length; i++) { + var textTrack = media.textTracks[i]; + if (canReuseVttTextTrack(textTrack, { + name: label, + lang: language, + characteristics: 'transcribes-spoken-dialog,describes-music-and-sound', + attrs: {} + })) { + return textTrack; + } + } + } + return null; + }; + _proto.createCaptionsTrack = function createCaptionsTrack(trackName) { + if (this.config.renderTextTracksNatively) { + this.createNativeTrack(trackName); + } else { + this.createNonNativeTrack(trackName); + } + }; + _proto.createNativeTrack = function createNativeTrack(trackName) { + if (this.captionsTracks[trackName]) { + return; + } + var captionsProperties = this.captionsProperties, + captionsTracks = this.captionsTracks, + media = this.media; + var _captionsProperties$t = captionsProperties[trackName], + label = _captionsProperties$t.label, + languageCode = _captionsProperties$t.languageCode; + // Enable reuse of existing text track. + var existingTrack = this.getExistingTrack(label, languageCode); + if (!existingTrack) { + var textTrack = this.createTextTrack('captions', label, languageCode); + if (textTrack) { + // Set a special property on the track so we know it's managed by Hls.js + textTrack[trackName] = true; + captionsTracks[trackName] = textTrack; + } + } else { + captionsTracks[trackName] = existingTrack; + clearCurrentCues(captionsTracks[trackName]); + sendAddTrackEvent(captionsTracks[trackName], media); + } + }; + _proto.createNonNativeTrack = function createNonNativeTrack(trackName) { + if (this.nonNativeCaptionsTracks[trackName]) { + return; + } + // Create a list of a single track for the provider to consume + var trackProperties = this.captionsProperties[trackName]; + if (!trackProperties) { + return; + } + var label = trackProperties.label; + var track = { + _id: trackName, + label: label, + kind: 'captions', + default: trackProperties.media ? !!trackProperties.media.default : false, + closedCaptions: trackProperties.media + }; + this.nonNativeCaptionsTracks[trackName] = track; + this.hls.trigger(Events.NON_NATIVE_TEXT_TRACKS_FOUND, { + tracks: [track] + }); + }; + _proto.createTextTrack = function createTextTrack(kind, label, lang) { + var media = this.media; + if (!media) { + return; + } + return media.addTextTrack(kind, label, lang); + }; + _proto.onMediaAttaching = function onMediaAttaching(event, data) { + this.media = data.media; + this._cleanTracks(); + }; + _proto.onMediaDetaching = function onMediaDetaching() { + var captionsTracks = this.captionsTracks; + Object.keys(captionsTracks).forEach(function (trackName) { + clearCurrentCues(captionsTracks[trackName]); + delete captionsTracks[trackName]; + }); + this.nonNativeCaptionsTracks = {}; + this.media = null; + }; + _proto.onManifestLoading = function onManifestLoading() { + // Detect discontinuity in video fragment (CEA-608) parsing + this.lastCc = -1; + this.lastSn = -1; + this.lastPartIndex = -1; + // Detect discontinuity in subtitle manifests + this.prevCC = -1; + this.vttCCs = newVTTCCs(); + // Reset tracks + this._cleanTracks(); + this.tracks = []; + this.captionsTracks = {}; + this.nonNativeCaptionsTracks = {}; + this.textTracks = []; + this.unparsedVttFrags = []; + this.initPTS = []; + if (this.cea608Parser1 && this.cea608Parser2) { + this.cea608Parser1.reset(); + this.cea608Parser2.reset(); + } + }; + _proto._cleanTracks = function _cleanTracks() { + // clear outdated subtitles + var media = this.media; + if (!media) { + return; + } + var textTracks = media.textTracks; + if (textTracks) { + for (var i = 0; i < textTracks.length; i++) { + clearCurrentCues(textTracks[i]); + } + } + }; + _proto.onSubtitleTracksUpdated = function onSubtitleTracksUpdated(event, data) { + var _this2 = this; + var tracks = data.subtitleTracks || []; + var hasIMSC1 = tracks.some(function (track) { + return track.textCodec === IMSC1_CODEC; + }); + if (this.config.enableWebVTT || hasIMSC1 && this.config.enableIMSC1) { + var listIsIdentical = subtitleOptionsIdentical(this.tracks, tracks); + if (listIsIdentical) { + this.tracks = tracks; + return; + } + this.textTracks = []; + this.tracks = tracks; + if (this.config.renderTextTracksNatively) { + var media = this.media; + var inUseTracks = media ? filterSubtitleTracks(media.textTracks) : null; + this.tracks.forEach(function (track, index) { + // Reuse tracks with the same label and lang, but do not reuse 608/708 tracks + var textTrack; + if (inUseTracks) { + var inUseTrack = null; + for (var i = 0; i < inUseTracks.length; i++) { + if (inUseTracks[i] && canReuseVttTextTrack(inUseTracks[i], track)) { + inUseTrack = inUseTracks[i]; + inUseTracks[i] = null; + break; + } + } + if (inUseTrack) { + textTrack = inUseTrack; + } + } + if (textTrack) { + clearCurrentCues(textTrack); + } else { + var textTrackKind = captionsOrSubtitlesFromCharacteristics(track); + textTrack = _this2.createTextTrack(textTrackKind, track.name, track.lang); + if (textTrack) { + textTrack.mode = 'disabled'; + } + } + if (textTrack) { + _this2.textTracks.push(textTrack); + } + }); + // Warn when video element has captions or subtitle TextTracks carried over from another source + if (inUseTracks != null && inUseTracks.length) { + var unusedTextTracks = inUseTracks.filter(function (t) { + return t !== null; + }).map(function (t) { + return t.label; + }); + if (unusedTextTracks.length) { + this.hls.logger.warn("Media element contains unused subtitle tracks: " + unusedTextTracks.join(', ') + ". Replace media element for each source to clear TextTracks and captions menu."); + } + } + } else if (this.tracks.length) { + // Create a list of tracks for the provider to consume + var tracksList = this.tracks.map(function (track) { + return { + label: track.name, + kind: track.type.toLowerCase(), + default: track.default, + subtitleTrack: track + }; + }); + this.hls.trigger(Events.NON_NATIVE_TEXT_TRACKS_FOUND, { + tracks: tracksList + }); + } + } + }; + _proto.onManifestLoaded = function onManifestLoaded(event, data) { + var _this3 = this; + if (this.config.enableCEA708Captions && data.captions) { + data.captions.forEach(function (captionsTrack) { + var instreamIdMatch = /(?:CC|SERVICE)([1-4])/.exec(captionsTrack.instreamId); + if (!instreamIdMatch) { + return; + } + var trackName = "textTrack" + instreamIdMatch[1]; + var trackProperties = _this3.captionsProperties[trackName]; + if (!trackProperties) { + return; + } + trackProperties.label = captionsTrack.name; + if (captionsTrack.lang) { + // optional attribute + trackProperties.languageCode = captionsTrack.lang; + } + trackProperties.media = captionsTrack; + }); + } + }; + _proto.closedCaptionsForLevel = function closedCaptionsForLevel(frag) { + var level = this.hls.levels[frag.level]; + return level == null ? void 0 : level.attrs['CLOSED-CAPTIONS']; + }; + _proto.onFragLoading = function onFragLoading(event, data) { + // if this frag isn't contiguous, clear the parser so cues with bad start/end times aren't added to the textTrack + if (this.enabled && data.frag.type === PlaylistLevelType.MAIN) { + var _data$part$index, _data$part; + var cea608Parser1 = this.cea608Parser1, + cea608Parser2 = this.cea608Parser2, + lastSn = this.lastSn; + var _data$frag = data.frag, + cc = _data$frag.cc, + sn = _data$frag.sn; + var partIndex = (_data$part$index = (_data$part = data.part) == null ? void 0 : _data$part.index) != null ? _data$part$index : -1; + if (cea608Parser1 && cea608Parser2) { + if (sn !== lastSn + 1 || sn === lastSn && partIndex !== this.lastPartIndex + 1 || cc !== this.lastCc) { + cea608Parser1.reset(); + cea608Parser2.reset(); + } + } + this.lastCc = cc; + this.lastSn = sn; + this.lastPartIndex = partIndex; + } + }; + _proto.onFragLoaded = function onFragLoaded(event, data) { + var frag = data.frag, + payload = data.payload; + if (frag.type === PlaylistLevelType.SUBTITLE) { + // If fragment is subtitle type, parse as WebVTT. + if (payload.byteLength) { + var decryptData = frag.decryptdata; + // fragment after decryption has a stats object + var decrypted = 'stats' in data; + // If the subtitles are not encrypted, parse VTTs now. Otherwise, we need to wait. + if (decryptData == null || !decryptData.encrypted || decrypted) { + var trackPlaylistMedia = this.tracks[frag.level]; + var vttCCs = this.vttCCs; + if (!vttCCs[frag.cc]) { + vttCCs[frag.cc] = { + start: frag.start, + prevCC: this.prevCC, + new: true + }; + this.prevCC = frag.cc; + } + if (trackPlaylistMedia && trackPlaylistMedia.textCodec === IMSC1_CODEC) { + this._parseIMSC1(frag, payload); + } else { + this._parseVTTs(data); + } + } + } else { + // In case there is no payload, finish unsuccessfully. + this.hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, { + success: false, + frag: frag, + error: new Error('Empty subtitle payload') + }); + } + } + }; + _proto._parseIMSC1 = function _parseIMSC1(frag, payload) { + var _this4 = this; + var hls = this.hls; + parseIMSC1(payload, this.initPTS[frag.cc], function (cues) { + _this4._appendCues(cues, frag.level); + hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, { + success: true, + frag: frag + }); + }, function (error) { + hls.logger.log("Failed to parse IMSC1: " + error); + hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, { + success: false, + frag: frag, + error: error + }); + }); + }; + _proto._parseVTTs = function _parseVTTs(data) { + var _frag$initSegment, + _this5 = this; + var frag = data.frag, + payload = data.payload; + // We need an initial synchronisation PTS. Store fragments as long as none has arrived + var initPTS = this.initPTS, + unparsedVttFrags = this.unparsedVttFrags; + var maxAvCC = initPTS.length - 1; + if (!initPTS[frag.cc] && maxAvCC === -1) { + unparsedVttFrags.push(data); + return; + } + var hls = this.hls; + // Parse the WebVTT file contents. + var payloadWebVTT = (_frag$initSegment = frag.initSegment) != null && _frag$initSegment.data ? appendUint8Array(frag.initSegment.data, new Uint8Array(payload)) : payload; + parseWebVTT(payloadWebVTT, this.initPTS[frag.cc], this.vttCCs, frag.cc, frag.start, function (cues) { + _this5._appendCues(cues, frag.level); + hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, { + success: true, + frag: frag + }); + }, function (error) { + var missingInitPTS = error.message === 'Missing initPTS for VTT MPEGTS'; + if (missingInitPTS) { + unparsedVttFrags.push(data); + } else { + _this5._fallbackToIMSC1(frag, payload); + } + // Something went wrong while parsing. Trigger event with success false. + hls.logger.log("Failed to parse VTT cue: " + error); + if (missingInitPTS && maxAvCC > frag.cc) { + return; + } + hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, { + success: false, + frag: frag, + error: error + }); + }); + }; + _proto._fallbackToIMSC1 = function _fallbackToIMSC1(frag, payload) { + var _this6 = this; + // If textCodec is unknown, try parsing as IMSC1. Set textCodec based on the result + var trackPlaylistMedia = this.tracks[frag.level]; + if (!trackPlaylistMedia.textCodec) { + parseIMSC1(payload, this.initPTS[frag.cc], function () { + trackPlaylistMedia.textCodec = IMSC1_CODEC; + _this6._parseIMSC1(frag, payload); + }, function () { + trackPlaylistMedia.textCodec = 'wvtt'; + }); + } + }; + _proto._appendCues = function _appendCues(cues, fragLevel) { + var hls = this.hls; + if (this.config.renderTextTracksNatively) { + var textTrack = this.textTracks[fragLevel]; + // WebVTTParser.parse is an async method and if the currently selected text track mode is set to "disabled" + // before parsing is done then don't try to access currentTrack.cues.getCueById as cues will be null + // and trying to access getCueById method of cues will throw an exception + // Because we check if the mode is disabled, we can force check `cues` below. They can't be null. + if (!textTrack || textTrack.mode === 'disabled') { + return; + } + cues.forEach(function (cue) { + return addCueToTrack(textTrack, cue); + }); + } else { + var currentTrack = this.tracks[fragLevel]; + if (!currentTrack) { + return; + } + var track = currentTrack.default ? 'default' : 'subtitles' + fragLevel; + hls.trigger(Events.CUES_PARSED, { + type: 'subtitles', + cues: cues, + track: track + }); + } + }; + _proto.onFragDecrypted = function onFragDecrypted(event, data) { + var frag = data.frag; + if (frag.type === PlaylistLevelType.SUBTITLE) { + this.onFragLoaded(Events.FRAG_LOADED, data); + } + }; + _proto.onSubtitleTracksCleared = function onSubtitleTracksCleared() { + this.tracks = []; + this.captionsTracks = {}; + }; + _proto.onFragParsingUserdata = function onFragParsingUserdata(event, data) { + if (!this.enabled || !this.config.enableCEA708Captions) { + return; + } + var frag = data.frag, + samples = data.samples; + if (frag.type === PlaylistLevelType.MAIN && this.closedCaptionsForLevel(frag) === 'NONE') { + return; + } + // If the event contains captions (found in the bytes property), push all bytes into the parser immediately + // It will create the proper timestamps based on the PTS value + for (var i = 0; i < samples.length; i++) { + var ccBytes = samples[i].bytes; + if (ccBytes) { + if (!this.cea608Parser1) { + this.initCea608Parsers(); + } + var ccdatas = this.extractCea608Data(ccBytes); + this.cea608Parser1.addData(samples[i].pts, ccdatas[0]); + this.cea608Parser2.addData(samples[i].pts, ccdatas[1]); + } + } + }; + _proto.onBufferFlushing = function onBufferFlushing(event, _ref2) { + var startOffset = _ref2.startOffset, + endOffset = _ref2.endOffset, + endOffsetSubtitles = _ref2.endOffsetSubtitles, + type = _ref2.type; + var media = this.media; + if (!media || media.currentTime < endOffset) { + return; + } + // Clear 608 caption cues from the captions TextTracks when the video back buffer is flushed + // Forward cues are never removed because we can loose streamed 608 content from recent fragments + if (!type || type === 'video') { + var captionsTracks = this.captionsTracks; + Object.keys(captionsTracks).forEach(function (trackName) { + return removeCuesInRange(captionsTracks[trackName], startOffset, endOffset); + }); + } + if (this.config.renderTextTracksNatively) { + // Clear VTT/IMSC1 subtitle cues from the subtitle TextTracks when the back buffer is flushed + if (startOffset === 0 && endOffsetSubtitles !== undefined) { + var textTracks = this.textTracks; + Object.keys(textTracks).forEach(function (trackName) { + return removeCuesInRange(textTracks[trackName], startOffset, endOffsetSubtitles); + }); + } + } + }; + _proto.extractCea608Data = function extractCea608Data(byteArray) { + var actualCCBytes = [[], []]; + var count = byteArray[0] & 0x1f; + var position = 2; + for (var j = 0; j < count; j++) { + var tmpByte = byteArray[position++]; + var ccbyte1 = 0x7f & byteArray[position++]; + var ccbyte2 = 0x7f & byteArray[position++]; + if (ccbyte1 === 0 && ccbyte2 === 0) { + continue; + } + var ccValid = (0x04 & tmpByte) !== 0; // Support all four channels + if (ccValid) { + var ccType = 0x03 & tmpByte; + if (0x00 /* CEA608 field1*/ === ccType || 0x01 /* CEA608 field2*/ === ccType) { + // Exclude CEA708 CC data. + actualCCBytes[ccType].push(ccbyte1); + actualCCBytes[ccType].push(ccbyte2); + } + } + } + return actualCCBytes; + }; + return TimelineController; + }(); + function captionsOrSubtitlesFromCharacteristics(track) { + if (track.characteristics) { + if (/transcribes-spoken-dialog/gi.test(track.characteristics) && /describes-music-and-sound/gi.test(track.characteristics)) { + return 'captions'; + } + } + return 'subtitles'; + } + function canReuseVttTextTrack(inUseTrack, manifestTrack) { + return !!inUseTrack && inUseTrack.kind === captionsOrSubtitlesFromCharacteristics(manifestTrack) && subtitleTrackMatchesTextTrack(manifestTrack, inUseTrack); + } + function intersection(x1, x2, y1, y2) { + return Math.min(x2, y2) - Math.max(x1, y1); + } + function newVTTCCs() { + return { + ccOffset: 0, + presentationOffset: 0, + 0: { + start: 0, + prevCC: -1, + new: true + } + }; + } + + var CapLevelController = /*#__PURE__*/function () { + function CapLevelController(hls) { + this.hls = void 0; + this.autoLevelCapping = void 0; + this.firstLevel = void 0; + this.media = void 0; + this.restrictedLevels = void 0; + this.timer = void 0; + this.clientRect = void 0; + this.streamController = void 0; + this.hls = hls; + this.autoLevelCapping = Number.POSITIVE_INFINITY; + this.firstLevel = -1; + this.media = null; + this.restrictedLevels = []; + this.timer = undefined; + this.clientRect = null; + this.registerListeners(); + } + var _proto = CapLevelController.prototype; + _proto.setStreamController = function setStreamController(streamController) { + this.streamController = streamController; + }; + _proto.destroy = function destroy() { + if (this.hls) { + this.unregisterListener(); + } + if (this.timer) { + this.stopCapping(); + } + this.media = null; + this.clientRect = null; + // @ts-ignore + this.hls = this.streamController = null; + }; + _proto.registerListeners = function registerListeners() { + var hls = this.hls; + hls.on(Events.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this); + hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this); + hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this); + hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this); + hls.on(Events.BUFFER_CODECS, this.onBufferCodecs, this); + hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + }; + _proto.unregisterListener = function unregisterListener() { + var hls = this.hls; + hls.off(Events.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this); + hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this); + hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this); + hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this); + hls.off(Events.BUFFER_CODECS, this.onBufferCodecs, this); + hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + }; + _proto.onFpsDropLevelCapping = function onFpsDropLevelCapping(event, data) { + // Don't add a restricted level more than once + var level = this.hls.levels[data.droppedLevel]; + if (this.isLevelAllowed(level)) { + this.restrictedLevels.push({ + bitrate: level.bitrate, + height: level.height, + width: level.width + }); + } + }; + _proto.onMediaAttaching = function onMediaAttaching(event, data) { + this.media = data.media instanceof HTMLVideoElement ? data.media : null; + this.clientRect = null; + if (this.timer && this.hls.levels.length) { + this.detectPlayerSize(); + } + }; + _proto.onManifestParsed = function onManifestParsed(event, data) { + var hls = this.hls; + this.restrictedLevels = []; + this.firstLevel = data.firstLevel; + if (hls.config.capLevelToPlayerSize && data.video) { + // Start capping immediately if the manifest has signaled video codecs + this.startCapping(); + } + }; + _proto.onLevelsUpdated = function onLevelsUpdated(event, data) { + if (this.timer && isFiniteNumber(this.autoLevelCapping)) { + this.detectPlayerSize(); + } + } + + // Only activate capping when playing a video stream; otherwise, multi-bitrate audio-only streams will be restricted + // to the first level + ; + _proto.onBufferCodecs = function onBufferCodecs(event, data) { + var hls = this.hls; + if (hls.config.capLevelToPlayerSize && data.video) { + // If the manifest did not signal a video codec capping has been deferred until we're certain video is present + this.startCapping(); + } + }; + _proto.onMediaDetaching = function onMediaDetaching() { + this.stopCapping(); + this.media = null; + }; + _proto.detectPlayerSize = function detectPlayerSize() { + if (this.media) { + if (this.mediaHeight <= 0 || this.mediaWidth <= 0) { + this.clientRect = null; + return; + } + var levels = this.hls.levels; + if (levels.length) { + var hls = this.hls; + var maxLevel = this.getMaxLevel(levels.length - 1); + if (maxLevel !== this.autoLevelCapping) { + hls.logger.log("Setting autoLevelCapping to " + maxLevel + ": " + levels[maxLevel].height + "p@" + levels[maxLevel].bitrate + " for media " + this.mediaWidth + "x" + this.mediaHeight); + } + hls.autoLevelCapping = maxLevel; + if (hls.autoLevelEnabled && hls.autoLevelCapping > this.autoLevelCapping && this.streamController) { + // if auto level capping has a higher value for the previous one, flush the buffer using nextLevelSwitch + // usually happen when the user go to the fullscreen mode. + this.streamController.nextLevelSwitch(); + } + this.autoLevelCapping = hls.autoLevelCapping; + } + } + } + + /* + * returns level should be the one with the dimensions equal or greater than the media (player) dimensions (so the video will be downscaled) + */; + _proto.getMaxLevel = function getMaxLevel(capLevelIndex) { + var _this = this; + var levels = this.hls.levels; + if (!levels.length) { + return -1; + } + var validLevels = levels.filter(function (level, index) { + return _this.isLevelAllowed(level) && index <= capLevelIndex; + }); + this.clientRect = null; + return CapLevelController.getMaxLevelByMediaSize(validLevels, this.mediaWidth, this.mediaHeight); + }; + _proto.startCapping = function startCapping() { + if (this.timer) { + // Don't reset capping if started twice; this can happen if the manifest signals a video codec + return; + } + this.autoLevelCapping = Number.POSITIVE_INFINITY; + self.clearInterval(this.timer); + this.timer = self.setInterval(this.detectPlayerSize.bind(this), 1000); + this.detectPlayerSize(); + }; + _proto.stopCapping = function stopCapping() { + this.restrictedLevels = []; + this.firstLevel = -1; + this.autoLevelCapping = Number.POSITIVE_INFINITY; + if (this.timer) { + self.clearInterval(this.timer); + this.timer = undefined; + } + }; + _proto.getDimensions = function getDimensions() { + if (this.clientRect) { + return this.clientRect; + } + var media = this.media; + var boundsRect = { + width: 0, + height: 0 + }; + if (media) { + var clientRect = media.getBoundingClientRect(); + boundsRect.width = clientRect.width; + boundsRect.height = clientRect.height; + if (!boundsRect.width && !boundsRect.height) { + // When the media element has no width or height (equivalent to not being in the DOM), + // then use its width and height attributes (media.width, media.height) + boundsRect.width = clientRect.right - clientRect.left || media.width || 0; + boundsRect.height = clientRect.bottom - clientRect.top || media.height || 0; + } + } + this.clientRect = boundsRect; + return boundsRect; + }; + _proto.isLevelAllowed = function isLevelAllowed(level) { + var restrictedLevels = this.restrictedLevels; + return !restrictedLevels.some(function (restrictedLevel) { + return level.bitrate === restrictedLevel.bitrate && level.width === restrictedLevel.width && level.height === restrictedLevel.height; + }); + }; + CapLevelController.getMaxLevelByMediaSize = function getMaxLevelByMediaSize(levels, width, height) { + if (!(levels != null && levels.length)) { + return -1; + } + + // Levels can have the same dimensions but differing bandwidths - since levels are ordered, we can look to the next + // to determine whether we've chosen the greatest bandwidth for the media's dimensions + var atGreatestBandwidth = function atGreatestBandwidth(curLevel, nextLevel) { + if (!nextLevel) { + return true; + } + return curLevel.width !== nextLevel.width || curLevel.height !== nextLevel.height; + }; + + // If we run through the loop without breaking, the media's dimensions are greater than every level, so default to + // the max level + var maxLevelIndex = levels.length - 1; + // Prevent changes in aspect-ratio from causing capping to toggle back and forth + var squareSize = Math.max(width, height); + for (var i = 0; i < levels.length; i += 1) { + var level = levels[i]; + if ((level.width >= squareSize || level.height >= squareSize) && atGreatestBandwidth(level, levels[i + 1])) { + maxLevelIndex = i; + break; + } + } + return maxLevelIndex; + }; + return _createClass(CapLevelController, [{ + key: "mediaWidth", + get: function get() { + return this.getDimensions().width * this.contentScaleFactor; + } + }, { + key: "mediaHeight", + get: function get() { + return this.getDimensions().height * this.contentScaleFactor; + } + }, { + key: "contentScaleFactor", + get: function get() { + var pixelRatio = 1; + if (!this.hls.config.ignoreDevicePixelRatio) { + try { + pixelRatio = self.devicePixelRatio; + } catch (e) { + /* no-op */ + } + } + return pixelRatio; + } + }]); + }(); + + var FPSController = /*#__PURE__*/function () { + function FPSController(hls) { + this.hls = void 0; + this.isVideoPlaybackQualityAvailable = false; + this.timer = void 0; + this.media = null; + this.lastTime = void 0; + this.lastDroppedFrames = 0; + this.lastDecodedFrames = 0; + // stream controller must be provided as a dependency! + this.streamController = void 0; + this.hls = hls; + this.registerListeners(); + } + var _proto = FPSController.prototype; + _proto.setStreamController = function setStreamController(streamController) { + this.streamController = streamController; + }; + _proto.registerListeners = function registerListeners() { + this.hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this); + this.hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + }; + _proto.unregisterListeners = function unregisterListeners() { + this.hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this); + this.hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this); + }; + _proto.destroy = function destroy() { + if (this.timer) { + clearInterval(this.timer); + } + this.unregisterListeners(); + this.isVideoPlaybackQualityAvailable = false; + this.media = null; + }; + _proto.onMediaAttaching = function onMediaAttaching(event, data) { + var config = this.hls.config; + if (config.capLevelOnFPSDrop) { + var media = data.media instanceof self.HTMLVideoElement ? data.media : null; + this.media = media; + if (media && typeof media.getVideoPlaybackQuality === 'function') { + this.isVideoPlaybackQualityAvailable = true; + } + self.clearInterval(this.timer); + this.timer = self.setInterval(this.checkFPSInterval.bind(this), config.fpsDroppedMonitoringPeriod); + } + }; + _proto.onMediaDetaching = function onMediaDetaching() { + this.media = null; + }; + _proto.checkFPS = function checkFPS(video, decodedFrames, droppedFrames) { + var currentTime = performance.now(); + if (decodedFrames) { + if (this.lastTime) { + var currentPeriod = currentTime - this.lastTime; + var currentDropped = droppedFrames - this.lastDroppedFrames; + var currentDecoded = decodedFrames - this.lastDecodedFrames; + var droppedFPS = 1000 * currentDropped / currentPeriod; + var hls = this.hls; + hls.trigger(Events.FPS_DROP, { + currentDropped: currentDropped, + currentDecoded: currentDecoded, + totalDroppedFrames: droppedFrames + }); + if (droppedFPS > 0) { + // hls.logger.log('checkFPS : droppedFPS/decodedFPS:' + droppedFPS/(1000 * currentDecoded / currentPeriod)); + if (currentDropped > hls.config.fpsDroppedMonitoringThreshold * currentDecoded) { + var currentLevel = hls.currentLevel; + hls.logger.warn('drop FPS ratio greater than max allowed value for currentLevel: ' + currentLevel); + if (currentLevel > 0 && (hls.autoLevelCapping === -1 || hls.autoLevelCapping >= currentLevel)) { + currentLevel = currentLevel - 1; + hls.trigger(Events.FPS_DROP_LEVEL_CAPPING, { + level: currentLevel, + droppedLevel: hls.currentLevel + }); + hls.autoLevelCapping = currentLevel; + this.streamController.nextLevelSwitch(); + } + } + } + } + this.lastTime = currentTime; + this.lastDroppedFrames = droppedFrames; + this.lastDecodedFrames = decodedFrames; + } + }; + _proto.checkFPSInterval = function checkFPSInterval() { + var video = this.media; + if (video) { + if (this.isVideoPlaybackQualityAvailable) { + var videoPlaybackQuality = video.getVideoPlaybackQuality(); + this.checkFPS(video, videoPlaybackQuality.totalVideoFrames, videoPlaybackQuality.droppedVideoFrames); + } else { + // HTMLVideoElement doesn't include the webkit types + this.checkFPS(video, video.webkitDecodedFrameCount, video.webkitDroppedFrameCount); + } + } + }; + return FPSController; + }(); + + /** + * Controller to deal with encrypted media extensions (EME) + * @see https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API + * + * @class + * @constructor + */ + var EMEController = /*#__PURE__*/function (_Logger) { + function EMEController(hls) { + var _this; + _this = _Logger.call(this, 'eme', hls.logger) || this; + _this.hls = void 0; + _this.config = void 0; + _this.media = null; + _this.keyFormatPromise = null; + _this.keySystemAccessPromises = {}; + _this._requestLicenseFailureCount = 0; + _this.mediaKeySessions = []; + _this.keyIdToKeySessionPromise = {}; + _this.setMediaKeysQueue = EMEController.CDMCleanupPromise ? [EMEController.CDMCleanupPromise] : []; + _this.onMediaEncrypted = function (event) { + var initDataType = event.initDataType, + initData = event.initData; + var logMessage = "\"" + event.type + "\" event: init data type: \"" + initDataType + "\""; + _this.debug(logMessage); + + // Ignore event when initData is null + if (initData === null) { + return; + } + var keyId; + var keySystemDomain; + if (initDataType === 'sinf' && _this.getLicenseServerUrl(KeySystems.FAIRPLAY)) { + // Match sinf keyId to playlist skd://keyId= + var json = bin2str(new Uint8Array(initData)); + try { + var sinf = base64Decode(JSON.parse(json).sinf); + var tenc = parseSinf(new Uint8Array(sinf)); + if (!tenc) { + throw new Error("'schm' box missing or not cbcs/cenc with schi > tenc"); + } + keyId = tenc.subarray(8, 24); + keySystemDomain = KeySystems.FAIRPLAY; + } catch (error) { + _this.warn(logMessage + " Failed to parse sinf: " + error); + return; + } + } else if (_this.getLicenseServerUrl(KeySystems.WIDEVINE)) { + // Support Widevine clear-lead key-session creation (otherwise depend on playlist keys) + var psshResults = parseMultiPssh(initData); + + // TODO: If using keySystemAccessPromises we might want to wait until one is resolved + var keySystems = Object.keys(_this.keySystemAccessPromises); + if (!keySystems.length) { + keySystems = getKeySystemsForConfig(_this.config); + } + var psshInfo = psshResults.filter(function (pssh) { + var keySystem = pssh.systemId ? keySystemIdToKeySystemDomain(pssh.systemId) : null; + return keySystem ? keySystems.indexOf(keySystem) > -1 : false; + })[0]; + if (!psshInfo) { + if (psshResults.length === 0 || psshResults.some(function (pssh) { + return !pssh.systemId; + })) { + _this.warn(logMessage + " contains incomplete or invalid pssh data"); + } else { + _this.log("ignoring " + logMessage + " for " + psshResults.map(function (pssh) { + return keySystemIdToKeySystemDomain(pssh.systemId); + }).join(',') + " pssh data in favor of playlist keys"); + } + return; + } + keySystemDomain = keySystemIdToKeySystemDomain(psshInfo.systemId); + if (psshInfo.version === 0 && psshInfo.data) { + if (keySystemDomain === KeySystems.WIDEVINE) { + var offset = psshInfo.data.length - 22; + keyId = psshInfo.data.subarray(offset, offset + 16); + } else if (keySystemDomain === KeySystems.PLAYREADY) { + keyId = parsePlayReadyWRM(psshInfo.data); + } + } + } + if (!keySystemDomain || !keyId) { + return; + } + var keyIdHex = Hex.hexDump(keyId); + var _this2 = _this, + keyIdToKeySessionPromise = _this2.keyIdToKeySessionPromise, + mediaKeySessions = _this2.mediaKeySessions; + var keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex]; + var _loop = function _loop() { + // Match playlist key + var keyContext = mediaKeySessions[i]; + var decryptdata = keyContext.decryptdata; + if (!decryptdata.keyId) { + return 0; // continue + } + var oldKeyIdHex = Hex.hexDump(decryptdata.keyId); + if (keyIdHex === oldKeyIdHex || decryptdata.uri.replace(/-/g, '').indexOf(keyIdHex) !== -1) { + keySessionContextPromise = keyIdToKeySessionPromise[oldKeyIdHex]; + if (decryptdata.pssh) { + return 1; // break + } + delete keyIdToKeySessionPromise[oldKeyIdHex]; + decryptdata.pssh = new Uint8Array(initData); + decryptdata.keyId = keyId; + keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex] = keySessionContextPromise.then(function () { + return _this.generateRequestWithPreferredKeySession(keyContext, initDataType, initData, 'encrypted-event-key-match'); + }); + return 1; // break + } + }, + _ret; + for (var i = 0; i < mediaKeySessions.length; i++) { + _ret = _loop(); + if (_ret === 0) continue; + if (_ret === 1) break; + } + if (!keySessionContextPromise) { + // Clear-lead key (not encountered in playlist) + keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex] = _this.getKeySystemSelectionPromise([keySystemDomain]).then(function (_ref) { + var _keySystemToKeySystem; + var keySystem = _ref.keySystem, + mediaKeys = _ref.mediaKeys; + _this.throwIfDestroyed(); + var decryptdata = new LevelKey('ISO-23001-7', keyIdHex, (_keySystemToKeySystem = keySystemDomainToKeySystemFormat(keySystem)) != null ? _keySystemToKeySystem : ''); + decryptdata.pssh = new Uint8Array(initData); + decryptdata.keyId = keyId; + return _this.attemptSetMediaKeys(keySystem, mediaKeys).then(function () { + _this.throwIfDestroyed(); + var keySessionContext = _this.createMediaKeySessionContext({ + decryptdata: decryptdata, + keySystem: keySystem, + mediaKeys: mediaKeys + }); + return _this.generateRequestWithPreferredKeySession(keySessionContext, initDataType, initData, 'encrypted-event-no-match'); + }); + }); + } + keySessionContextPromise.catch(function (error) { + return _this.handleError(error); + }); + }; + _this.onWaitingForKey = function (event) { + _this.log("\"" + event.type + "\" event"); + }; + _this.hls = hls; + _this.config = hls.config; + _this.registerListeners(); + return _this; + } + _inheritsLoose(EMEController, _Logger); + var _proto = EMEController.prototype; + _proto.destroy = function destroy() { + this.unregisterListeners(); + this.onMediaDetached(); + // Remove any references that could be held in config options or callbacks + var config = this.config; + config.requestMediaKeySystemAccessFunc = null; + config.licenseXhrSetup = config.licenseResponseCallback = undefined; + config.drmSystems = config.drmSystemOptions = {}; + // @ts-ignore + this.hls = this.config = this.keyIdToKeySessionPromise = null; + // @ts-ignore + this.onMediaEncrypted = this.onWaitingForKey = null; + }; + _proto.registerListeners = function registerListeners() { + this.hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this); + this.hls.on(Events.MEDIA_DETACHED, this.onMediaDetached, this); + this.hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this); + this.hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this); + }; + _proto.unregisterListeners = function unregisterListeners() { + this.hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this); + this.hls.off(Events.MEDIA_DETACHED, this.onMediaDetached, this); + this.hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this); + this.hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this); + }; + _proto.getLicenseServerUrl = function getLicenseServerUrl(keySystem) { + var _this$config = this.config, + drmSystems = _this$config.drmSystems, + widevineLicenseUrl = _this$config.widevineLicenseUrl; + var keySystemConfiguration = drmSystems[keySystem]; + if (keySystemConfiguration) { + return keySystemConfiguration.licenseUrl; + } + + // For backward compatibility + if (keySystem === KeySystems.WIDEVINE && widevineLicenseUrl) { + return widevineLicenseUrl; + } + }; + _proto.getLicenseServerUrlOrThrow = function getLicenseServerUrlOrThrow(keySystem) { + var url = this.getLicenseServerUrl(keySystem); + if (url === undefined) { + throw new Error("no license server URL configured for key-system \"" + keySystem + "\""); + } + return url; + }; + _proto.getServerCertificateUrl = function getServerCertificateUrl(keySystem) { + var drmSystems = this.config.drmSystems; + var keySystemConfiguration = drmSystems[keySystem]; + if (keySystemConfiguration) { + return keySystemConfiguration.serverCertificateUrl; + } else { + this.log("No Server Certificate in config.drmSystems[\"" + keySystem + "\"]"); + } + }; + _proto.attemptKeySystemAccess = function attemptKeySystemAccess(keySystemsToAttempt) { + var _this3 = this; + var levels = this.hls.levels; + var uniqueCodec = function uniqueCodec(value, i, a) { + return !!value && a.indexOf(value) === i; + }; + var audioCodecs = levels.map(function (level) { + return level.audioCodec; + }).filter(uniqueCodec); + var videoCodecs = levels.map(function (level) { + return level.videoCodec; + }).filter(uniqueCodec); + if (audioCodecs.length + videoCodecs.length === 0) { + videoCodecs.push('avc1.42e01e'); + } + return new Promise(function (resolve, reject) { + var _attempt = function attempt(keySystems) { + var keySystem = keySystems.shift(); + _this3.getMediaKeysPromise(keySystem, audioCodecs, videoCodecs).then(function (mediaKeys) { + return resolve({ + keySystem: keySystem, + mediaKeys: mediaKeys + }); + }).catch(function (error) { + if (keySystems.length) { + _attempt(keySystems); + } else if (error instanceof EMEKeyError) { + reject(error); + } else { + reject(new EMEKeyError({ + type: ErrorTypes.KEY_SYSTEM_ERROR, + details: ErrorDetails.KEY_SYSTEM_NO_ACCESS, + error: error, + fatal: true + }, error.message)); + } + }); + }; + _attempt(keySystemsToAttempt); + }); + }; + _proto.requestMediaKeySystemAccess = function requestMediaKeySystemAccess$1(keySystem, supportedConfigurations) { + var requestMediaKeySystemAccessFunc = this.config.requestMediaKeySystemAccessFunc; + if (!(typeof requestMediaKeySystemAccessFunc === 'function')) { + var errMessage = "Configured requestMediaKeySystemAccess is not a function " + requestMediaKeySystemAccessFunc; + if (requestMediaKeySystemAccess === null && self.location.protocol === 'http:') { + errMessage = "navigator.requestMediaKeySystemAccess is not available over insecure protocol " + location.protocol; + } + return Promise.reject(new Error(errMessage)); + } + return requestMediaKeySystemAccessFunc(keySystem, supportedConfigurations); + }; + _proto.getMediaKeysPromise = function getMediaKeysPromise(keySystem, audioCodecs, videoCodecs) { + var _this4 = this; + // This can throw, but is caught in event handler callpath + var mediaKeySystemConfigs = getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, this.config.drmSystemOptions); + var keySystemAccessPromises = this.keySystemAccessPromises[keySystem]; + var keySystemAccess = keySystemAccessPromises == null ? void 0 : keySystemAccessPromises.keySystemAccess; + if (!keySystemAccess) { + this.log("Requesting encrypted media \"" + keySystem + "\" key-system access with config: " + JSON.stringify(mediaKeySystemConfigs)); + keySystemAccess = this.requestMediaKeySystemAccess(keySystem, mediaKeySystemConfigs); + var _keySystemAccessPromises = this.keySystemAccessPromises[keySystem] = { + keySystemAccess: keySystemAccess + }; + keySystemAccess.catch(function (error) { + _this4.log("Failed to obtain access to key-system \"" + keySystem + "\": " + error); + }); + return keySystemAccess.then(function (mediaKeySystemAccess) { + _this4.log("Access for key-system \"" + mediaKeySystemAccess.keySystem + "\" obtained"); + var certificateRequest = _this4.fetchServerCertificate(keySystem); + _this4.log("Create media-keys for \"" + keySystem + "\""); + _keySystemAccessPromises.mediaKeys = mediaKeySystemAccess.createMediaKeys().then(function (mediaKeys) { + _this4.log("Media-keys created for \"" + keySystem + "\""); + return certificateRequest.then(function (certificate) { + if (certificate) { + return _this4.setMediaKeysServerCertificate(mediaKeys, keySystem, certificate); + } + return mediaKeys; + }); + }); + _keySystemAccessPromises.mediaKeys.catch(function (error) { + _this4.error("Failed to create media-keys for \"" + keySystem + "\"}: " + error); + }); + return _keySystemAccessPromises.mediaKeys; + }); + } + return keySystemAccess.then(function () { + return keySystemAccessPromises.mediaKeys; + }); + }; + _proto.createMediaKeySessionContext = function createMediaKeySessionContext(_ref2) { + var decryptdata = _ref2.decryptdata, + keySystem = _ref2.keySystem, + mediaKeys = _ref2.mediaKeys; + this.log("Creating key-system session \"" + keySystem + "\" keyId: " + Hex.hexDump(decryptdata.keyId || [])); + var mediaKeysSession = mediaKeys.createSession(); + var mediaKeySessionContext = { + decryptdata: decryptdata, + keySystem: keySystem, + mediaKeys: mediaKeys, + mediaKeysSession: mediaKeysSession, + keyStatus: 'status-pending' + }; + this.mediaKeySessions.push(mediaKeySessionContext); + return mediaKeySessionContext; + }; + _proto.renewKeySession = function renewKeySession(mediaKeySessionContext) { + var decryptdata = mediaKeySessionContext.decryptdata; + if (decryptdata.pssh) { + var keySessionContext = this.createMediaKeySessionContext(mediaKeySessionContext); + var keyId = this.getKeyIdString(decryptdata); + var scheme = 'cenc'; + this.keyIdToKeySessionPromise[keyId] = this.generateRequestWithPreferredKeySession(keySessionContext, scheme, decryptdata.pssh, 'expired'); + } else { + this.warn("Could not renew expired session. Missing pssh initData."); + } + this.removeSession(mediaKeySessionContext); + }; + _proto.getKeyIdString = function getKeyIdString(decryptdata) { + if (!decryptdata) { + throw new Error('Could not read keyId of undefined decryptdata'); + } + if (decryptdata.keyId === null) { + throw new Error('keyId is null'); + } + return Hex.hexDump(decryptdata.keyId); + }; + _proto.updateKeySession = function updateKeySession(mediaKeySessionContext, data) { + var _mediaKeySessionConte; + var keySession = mediaKeySessionContext.mediaKeysSession; + this.log("Updating key-session \"" + keySession.sessionId + "\" for keyID " + Hex.hexDump(((_mediaKeySessionConte = mediaKeySessionContext.decryptdata) == null ? void 0 : _mediaKeySessionConte.keyId) || []) + "\n } (data length: " + (data ? data.byteLength : data) + ")"); + return keySession.update(data); + }; + _proto.selectKeySystemFormat = function selectKeySystemFormat(frag) { + var keyFormats = Object.keys(frag.levelkeys || {}); + if (!this.keyFormatPromise) { + this.log("Selecting key-system from fragment (sn: " + frag.sn + " " + frag.type + ": " + frag.level + ") key formats " + keyFormats.join(', ')); + this.keyFormatPromise = this.getKeyFormatPromise(keyFormats); + } + return this.keyFormatPromise; + }; + _proto.getKeyFormatPromise = function getKeyFormatPromise(keyFormats) { + var _this5 = this; + return new Promise(function (resolve, reject) { + var keySystemsInConfig = getKeySystemsForConfig(_this5.config); + var keySystemsToAttempt = keyFormats.map(keySystemFormatToKeySystemDomain).filter(function (value) { + return !!value && keySystemsInConfig.indexOf(value) !== -1; + }); + return _this5.getKeySystemSelectionPromise(keySystemsToAttempt).then(function (_ref3) { + var keySystem = _ref3.keySystem; + var keySystemFormat = keySystemDomainToKeySystemFormat(keySystem); + if (keySystemFormat) { + resolve(keySystemFormat); + } else { + reject(new Error("Unable to find format for key-system \"" + keySystem + "\"")); + } + }).catch(reject); + }); + }; + _proto.loadKey = function loadKey(data) { + var _this6 = this; + var decryptdata = data.keyInfo.decryptdata; + var keyId = this.getKeyIdString(decryptdata); + var keyDetails = "(keyId: " + keyId + " format: \"" + decryptdata.keyFormat + "\" method: " + decryptdata.method + " uri: " + decryptdata.uri + ")"; + this.log("Starting session for key " + keyDetails); + var keyContextPromise = this.keyIdToKeySessionPromise[keyId]; + if (!keyContextPromise) { + keyContextPromise = this.getKeySystemForKeyPromise(decryptdata).then(function (_ref4) { + var keySystem = _ref4.keySystem, + mediaKeys = _ref4.mediaKeys; + _this6.throwIfDestroyed(); + _this6.log("Handle encrypted media sn: " + data.frag.sn + " " + data.frag.type + ": " + data.frag.level + " using key " + keyDetails); + return _this6.attemptSetMediaKeys(keySystem, mediaKeys).then(function () { + _this6.throwIfDestroyed(); + return _this6.createMediaKeySessionContext({ + keySystem: keySystem, + mediaKeys: mediaKeys, + decryptdata: decryptdata + }); + }); + }); + var keySessionContextPromise = this.keyIdToKeySessionPromise[keyId] = keyContextPromise.then(function (keySessionContext) { + var scheme = 'cenc'; + return _this6.generateRequestWithPreferredKeySession(keySessionContext, scheme, decryptdata.pssh, 'playlist-key'); + }); + keySessionContextPromise.catch(function (error) { + return _this6.handleError(error); + }); + } + return keyContextPromise; + }; + _proto.throwIfDestroyed = function throwIfDestroyed(message) { + if (!this.hls) { + throw new Error('invalid state'); + } + }; + _proto.handleError = function handleError(error) { + if (!this.hls) { + return; + } + this.error(error.message); + if (error instanceof EMEKeyError) { + this.hls.trigger(Events.ERROR, error.data); + } else { + this.hls.trigger(Events.ERROR, { + type: ErrorTypes.KEY_SYSTEM_ERROR, + details: ErrorDetails.KEY_SYSTEM_NO_KEYS, + error: error, + fatal: true + }); + } + }; + _proto.getKeySystemForKeyPromise = function getKeySystemForKeyPromise(decryptdata) { + var keyId = this.getKeyIdString(decryptdata); + var mediaKeySessionContext = this.keyIdToKeySessionPromise[keyId]; + if (!mediaKeySessionContext) { + var keySystem = keySystemFormatToKeySystemDomain(decryptdata.keyFormat); + var keySystemsToAttempt = keySystem ? [keySystem] : getKeySystemsForConfig(this.config); + return this.attemptKeySystemAccess(keySystemsToAttempt); + } + return mediaKeySessionContext; + }; + _proto.getKeySystemSelectionPromise = function getKeySystemSelectionPromise(keySystemsToAttempt) { + if (!keySystemsToAttempt.length) { + keySystemsToAttempt = getKeySystemsForConfig(this.config); + } + if (keySystemsToAttempt.length === 0) { + throw new EMEKeyError({ + type: ErrorTypes.KEY_SYSTEM_ERROR, + details: ErrorDetails.KEY_SYSTEM_NO_CONFIGURED_LICENSE, + fatal: true + }, "Missing key-system license configuration options " + JSON.stringify({ + drmSystems: this.config.drmSystems + })); + } + return this.attemptKeySystemAccess(keySystemsToAttempt); + }; + _proto.attemptSetMediaKeys = function attemptSetMediaKeys(keySystem, mediaKeys) { + var _this7 = this; + var queue = this.setMediaKeysQueue.slice(); + this.log("Setting media-keys for \"" + keySystem + "\""); + // Only one setMediaKeys() can run at one time, and multiple setMediaKeys() operations + // can be queued for execution for multiple key sessions. + var setMediaKeysPromise = Promise.all(queue).then(function () { + if (!_this7.media) { + throw new Error('Attempted to set mediaKeys without media element attached'); + } + return _this7.media.setMediaKeys(mediaKeys); + }); + this.setMediaKeysQueue.push(setMediaKeysPromise); + return setMediaKeysPromise.then(function () { + _this7.log("Media-keys set for \"" + keySystem + "\""); + queue.push(setMediaKeysPromise); + _this7.setMediaKeysQueue = _this7.setMediaKeysQueue.filter(function (p) { + return queue.indexOf(p) === -1; + }); + }); + }; + _proto.generateRequestWithPreferredKeySession = function generateRequestWithPreferredKeySession(context, initDataType, initData, reason) { + var _this$config$drmSyste, + _this$config$drmSyste2, + _this8 = this; + var generateRequestFilter = (_this$config$drmSyste = this.config.drmSystems) == null ? void 0 : (_this$config$drmSyste2 = _this$config$drmSyste[context.keySystem]) == null ? void 0 : _this$config$drmSyste2.generateRequest; + if (generateRequestFilter) { + try { + var mappedInitData = generateRequestFilter.call(this.hls, initDataType, initData, context); + if (!mappedInitData) { + throw new Error('Invalid response from configured generateRequest filter'); + } + initDataType = mappedInitData.initDataType; + initData = context.decryptdata.pssh = mappedInitData.initData ? new Uint8Array(mappedInitData.initData) : null; + } catch (error) { + var _this$hls; + this.warn(error.message); + if ((_this$hls = this.hls) != null && _this$hls.config.debug) { + throw error; + } + } + } + if (initData === null) { + this.log("Skipping key-session request for \"" + reason + "\" (no initData)"); + return Promise.resolve(context); + } + var keyId = this.getKeyIdString(context.decryptdata); + this.log("Generating key-session request for \"" + reason + "\": " + keyId + " (init data type: " + initDataType + " length: " + (initData ? initData.byteLength : null) + ")"); + var licenseStatus = new EventEmitter(); + var onmessage = context._onmessage = function (event) { + var keySession = context.mediaKeysSession; + if (!keySession) { + licenseStatus.emit('error', new Error('invalid state')); + return; + } + var messageType = event.messageType, + message = event.message; + _this8.log("\"" + messageType + "\" message event for session \"" + keySession.sessionId + "\" message size: " + message.byteLength); + if (messageType === 'license-request' || messageType === 'license-renewal') { + _this8.renewLicense(context, message).catch(function (error) { + _this8.handleError(error); + licenseStatus.emit('error', error); + }); + } else if (messageType === 'license-release') { + if (context.keySystem === KeySystems.FAIRPLAY) { + _this8.updateKeySession(context, strToUtf8array('acknowledged')); + _this8.removeSession(context); + } + } else { + _this8.warn("unhandled media key message type \"" + messageType + "\""); + } + }; + var onkeystatuseschange = context._onkeystatuseschange = function (event) { + var keySession = context.mediaKeysSession; + if (!keySession) { + licenseStatus.emit('error', new Error('invalid state')); + return; + } + _this8.onKeyStatusChange(context); + var keyStatus = context.keyStatus; + licenseStatus.emit('keyStatus', keyStatus); + if (keyStatus === 'expired') { + _this8.warn(context.keySystem + " expired for key " + keyId); + _this8.renewKeySession(context); + } + }; + context.mediaKeysSession.addEventListener('message', onmessage); + context.mediaKeysSession.addEventListener('keystatuseschange', onkeystatuseschange); + var keyUsablePromise = new Promise(function (resolve, reject) { + licenseStatus.on('error', reject); + licenseStatus.on('keyStatus', function (keyStatus) { + if (keyStatus.startsWith('usable')) { + resolve(); + } else if (keyStatus === 'output-restricted') { + reject(new EMEKeyError({ + type: ErrorTypes.KEY_SYSTEM_ERROR, + details: ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED, + fatal: false + }, 'HDCP level output restricted')); + } else if (keyStatus === 'internal-error') { + reject(new EMEKeyError({ + type: ErrorTypes.KEY_SYSTEM_ERROR, + details: ErrorDetails.KEY_SYSTEM_STATUS_INTERNAL_ERROR, + fatal: true + }, "key status changed to \"" + keyStatus + "\"")); + } else if (keyStatus === 'expired') { + reject(new Error('key expired while generating request')); + } else { + _this8.warn("unhandled key status change \"" + keyStatus + "\""); + } + }); + }); + return context.mediaKeysSession.generateRequest(initDataType, initData).then(function () { + var _context$mediaKeysSes; + _this8.log("Request generated for key-session \"" + ((_context$mediaKeysSes = context.mediaKeysSession) == null ? void 0 : _context$mediaKeysSes.sessionId) + "\" keyId: " + keyId); + }).catch(function (error) { + throw new EMEKeyError({ + type: ErrorTypes.KEY_SYSTEM_ERROR, + details: ErrorDetails.KEY_SYSTEM_NO_SESSION, + error: error, + fatal: false + }, "Error generating key-session request: " + error); + }).then(function () { + return keyUsablePromise; + }).catch(function (error) { + licenseStatus.removeAllListeners(); + _this8.removeSession(context); + throw error; + }).then(function () { + licenseStatus.removeAllListeners(); + return context; + }); + }; + _proto.onKeyStatusChange = function onKeyStatusChange(mediaKeySessionContext) { + var _this9 = this; + mediaKeySessionContext.mediaKeysSession.keyStatuses.forEach(function (status, keyId) { + _this9.log("key status change \"" + status + "\" for keyStatuses keyId: " + Hex.hexDump('buffer' in keyId ? new Uint8Array(keyId.buffer, keyId.byteOffset, keyId.byteLength) : new Uint8Array(keyId)) + " session keyId: " + Hex.hexDump(new Uint8Array(mediaKeySessionContext.decryptdata.keyId || [])) + " uri: " + mediaKeySessionContext.decryptdata.uri); + mediaKeySessionContext.keyStatus = status; + }); + }; + _proto.fetchServerCertificate = function fetchServerCertificate(keySystem) { + var config = this.config; + var Loader = config.loader; + var certLoader = new Loader(config); + var url = this.getServerCertificateUrl(keySystem); + if (!url) { + return Promise.resolve(); + } + this.log("Fetching server certificate for \"" + keySystem + "\""); + return new Promise(function (resolve, reject) { + var loaderContext = { + responseType: 'arraybuffer', + url: url + }; + var loadPolicy = config.certLoadPolicy.default; + var loaderConfig = { + loadPolicy: loadPolicy, + timeout: loadPolicy.maxLoadTimeMs, + maxRetry: 0, + retryDelay: 0, + maxRetryDelay: 0 + }; + var loaderCallbacks = { + onSuccess: function onSuccess(response, stats, context, networkDetails) { + resolve(response.data); + }, + onError: function onError(response, contex, networkDetails, stats) { + reject(new EMEKeyError({ + type: ErrorTypes.KEY_SYSTEM_ERROR, + details: ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED, + fatal: true, + networkDetails: networkDetails, + response: _objectSpread2({ + url: loaderContext.url, + data: undefined + }, response) + }, "\"" + keySystem + "\" certificate request failed (" + url + "). Status: " + response.code + " (" + response.text + ")")); + }, + onTimeout: function onTimeout(stats, context, networkDetails) { + reject(new EMEKeyError({ + type: ErrorTypes.KEY_SYSTEM_ERROR, + details: ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED, + fatal: true, + networkDetails: networkDetails, + response: { + url: loaderContext.url, + data: undefined + } + }, "\"" + keySystem + "\" certificate request timed out (" + url + ")")); + }, + onAbort: function onAbort(stats, context, networkDetails) { + reject(new Error('aborted')); + } + }; + certLoader.load(loaderContext, loaderConfig, loaderCallbacks); + }); + }; + _proto.setMediaKeysServerCertificate = function setMediaKeysServerCertificate(mediaKeys, keySystem, cert) { + var _this10 = this; + return new Promise(function (resolve, reject) { + mediaKeys.setServerCertificate(cert).then(function (success) { + _this10.log("setServerCertificate " + (success ? 'success' : 'not supported by CDM') + " (" + (cert == null ? void 0 : cert.byteLength) + ") on \"" + keySystem + "\""); + resolve(mediaKeys); + }).catch(function (error) { + reject(new EMEKeyError({ + type: ErrorTypes.KEY_SYSTEM_ERROR, + details: ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED, + error: error, + fatal: true + }, error.message)); + }); + }); + }; + _proto.renewLicense = function renewLicense(context, keyMessage) { + var _this11 = this; + return this.requestLicense(context, new Uint8Array(keyMessage)).then(function (data) { + return _this11.updateKeySession(context, new Uint8Array(data)).catch(function (error) { + throw new EMEKeyError({ + type: ErrorTypes.KEY_SYSTEM_ERROR, + details: ErrorDetails.KEY_SYSTEM_SESSION_UPDATE_FAILED, + error: error, + fatal: true + }, error.message); + }); + }); + }; + _proto.unpackPlayReadyKeyMessage = function unpackPlayReadyKeyMessage(xhr, licenseChallenge) { + // On Edge, the raw license message is UTF-16-encoded XML. We need + // to unpack the Challenge element (base64-encoded string containing the + // actual license request) and any HttpHeader elements (sent as request + // headers). + // For PlayReady CDMs, we need to dig the Challenge out of the XML. + var xmlString = String.fromCharCode.apply(null, new Uint16Array(licenseChallenge.buffer)); + if (!xmlString.includes('PlayReadyKeyMessage')) { + // This does not appear to be a wrapped message as on Edge. Some + // clients do not need this unwrapping, so we will assume this is one of + // them. Note that "xml" at this point probably looks like random + // garbage, since we interpreted UTF-8 as UTF-16. + xhr.setRequestHeader('Content-Type', 'text/xml; charset=utf-8'); + return licenseChallenge; + } + var keyMessageXml = new DOMParser().parseFromString(xmlString, 'application/xml'); + // Set request headers. + var headers = keyMessageXml.querySelectorAll('HttpHeader'); + if (headers.length > 0) { + var header; + for (var i = 0, len = headers.length; i < len; i++) { + var _header$querySelector, _header$querySelector2; + header = headers[i]; + var name = (_header$querySelector = header.querySelector('name')) == null ? void 0 : _header$querySelector.textContent; + var value = (_header$querySelector2 = header.querySelector('value')) == null ? void 0 : _header$querySelector2.textContent; + if (name && value) { + xhr.setRequestHeader(name, value); + } + } + } + var challengeElement = keyMessageXml.querySelector('Challenge'); + var challengeText = challengeElement == null ? void 0 : challengeElement.textContent; + if (!challengeText) { + throw new Error("Cannot find <Challenge> in key message"); + } + return strToUtf8array(atob(challengeText)); + }; + _proto.setupLicenseXHR = function setupLicenseXHR(xhr, url, keysListItem, licenseChallenge) { + var _this12 = this; + var licenseXhrSetup = this.config.licenseXhrSetup; + if (!licenseXhrSetup) { + xhr.open('POST', url, true); + return Promise.resolve({ + xhr: xhr, + licenseChallenge: licenseChallenge + }); + } + return Promise.resolve().then(function () { + if (!keysListItem.decryptdata) { + throw new Error('Key removed'); + } + return licenseXhrSetup.call(_this12.hls, xhr, url, keysListItem, licenseChallenge); + }).catch(function (error) { + if (!keysListItem.decryptdata) { + // Key session removed. Cancel license request. + throw error; + } + // let's try to open before running setup + xhr.open('POST', url, true); + return licenseXhrSetup.call(_this12.hls, xhr, url, keysListItem, licenseChallenge); + }).then(function (licenseXhrSetupResult) { + // if licenseXhrSetup did not yet call open, let's do it now + if (!xhr.readyState) { + xhr.open('POST', url, true); + } + var finalLicenseChallenge = licenseXhrSetupResult ? licenseXhrSetupResult : licenseChallenge; + return { + xhr: xhr, + licenseChallenge: finalLicenseChallenge + }; + }); + }; + _proto.requestLicense = function requestLicense(keySessionContext, licenseChallenge) { + var _this13 = this; + var keyLoadPolicy = this.config.keyLoadPolicy.default; + return new Promise(function (resolve, reject) { + var url = _this13.getLicenseServerUrlOrThrow(keySessionContext.keySystem); + _this13.log("Sending license request to URL: " + url); + var xhr = new XMLHttpRequest(); + xhr.responseType = 'arraybuffer'; + xhr.onreadystatechange = function () { + if (!_this13.hls || !keySessionContext.mediaKeysSession) { + return reject(new Error('invalid state')); + } + if (xhr.readyState === 4) { + if (xhr.status === 200) { + _this13._requestLicenseFailureCount = 0; + var data = xhr.response; + _this13.log("License received " + (data instanceof ArrayBuffer ? data.byteLength : data)); + var licenseResponseCallback = _this13.config.licenseResponseCallback; + if (licenseResponseCallback) { + try { + data = licenseResponseCallback.call(_this13.hls, xhr, url, keySessionContext); + } catch (error) { + _this13.error(error); + } + } + resolve(data); + } else { + var retryConfig = keyLoadPolicy.errorRetry; + var maxNumRetry = retryConfig ? retryConfig.maxNumRetry : 0; + _this13._requestLicenseFailureCount++; + if (_this13._requestLicenseFailureCount > maxNumRetry || xhr.status >= 400 && xhr.status < 500) { + reject(new EMEKeyError({ + type: ErrorTypes.KEY_SYSTEM_ERROR, + details: ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED, + fatal: true, + networkDetails: xhr, + response: { + url: url, + data: undefined, + code: xhr.status, + text: xhr.statusText + } + }, "License Request XHR failed (" + url + "). Status: " + xhr.status + " (" + xhr.statusText + ")")); + } else { + var attemptsLeft = maxNumRetry - _this13._requestLicenseFailureCount + 1; + _this13.warn("Retrying license request, " + attemptsLeft + " attempts left"); + _this13.requestLicense(keySessionContext, licenseChallenge).then(resolve, reject); + } + } + } + }; + if (keySessionContext.licenseXhr && keySessionContext.licenseXhr.readyState !== XMLHttpRequest.DONE) { + keySessionContext.licenseXhr.abort(); + } + keySessionContext.licenseXhr = xhr; + _this13.setupLicenseXHR(xhr, url, keySessionContext, licenseChallenge).then(function (_ref5) { + var xhr = _ref5.xhr, + licenseChallenge = _ref5.licenseChallenge; + if (keySessionContext.keySystem == KeySystems.PLAYREADY) { + licenseChallenge = _this13.unpackPlayReadyKeyMessage(xhr, licenseChallenge); + } + xhr.send(licenseChallenge); + }); + }); + }; + _proto.onMediaAttached = function onMediaAttached(event, data) { + if (!this.config.emeEnabled) { + return; + } + var media = data.media; + + // keep reference of media + this.media = media; + media.addEventListener('encrypted', this.onMediaEncrypted); + media.addEventListener('waitingforkey', this.onWaitingForKey); + }; + _proto.onMediaDetached = function onMediaDetached() { + var _this14 = this, + _media$setMediaKeys; + var media = this.media; + var mediaKeysList = this.mediaKeySessions; + if (media) { + media.removeEventListener('encrypted', this.onMediaEncrypted); + media.removeEventListener('waitingforkey', this.onWaitingForKey); + this.media = null; + } + this._requestLicenseFailureCount = 0; + this.setMediaKeysQueue = []; + this.mediaKeySessions = []; + this.keyIdToKeySessionPromise = {}; + LevelKey.clearKeyUriToKeyIdMap(); + + // Close all sessions and remove media keys from the video element. + var keySessionCount = mediaKeysList.length; + EMEController.CDMCleanupPromise = Promise.all(mediaKeysList.map(function (mediaKeySessionContext) { + return _this14.removeSession(mediaKeySessionContext); + }).concat(media == null ? void 0 : (_media$setMediaKeys = media.setMediaKeys(null)) == null ? void 0 : _media$setMediaKeys.catch(function (error) { + _this14.log("Could not clear media keys: " + error); + }))).then(function () { + if (keySessionCount) { + _this14.log('finished closing key sessions and clearing media keys'); + mediaKeysList.length = 0; + } + }).catch(function (error) { + _this14.log("Could not close sessions and clear media keys: " + error); + }); + }; + _proto.onManifestLoading = function onManifestLoading() { + this.keyFormatPromise = null; + }; + _proto.onManifestLoaded = function onManifestLoaded(event, _ref6) { + var sessionKeys = _ref6.sessionKeys; + if (!sessionKeys || !this.config.emeEnabled) { + return; + } + if (!this.keyFormatPromise) { + var keyFormats = sessionKeys.reduce(function (formats, sessionKey) { + if (formats.indexOf(sessionKey.keyFormat) === -1) { + formats.push(sessionKey.keyFormat); + } + return formats; + }, []); + this.log("Selecting key-system from session-keys " + keyFormats.join(', ')); + this.keyFormatPromise = this.getKeyFormatPromise(keyFormats); + } + }; + _proto.removeSession = function removeSession(mediaKeySessionContext) { + var _this15 = this; + var mediaKeysSession = mediaKeySessionContext.mediaKeysSession, + licenseXhr = mediaKeySessionContext.licenseXhr; + if (mediaKeysSession) { + this.log("Remove licenses and keys and close session " + mediaKeysSession.sessionId); + if (mediaKeySessionContext._onmessage) { + mediaKeysSession.removeEventListener('message', mediaKeySessionContext._onmessage); + mediaKeySessionContext._onmessage = undefined; + } + if (mediaKeySessionContext._onkeystatuseschange) { + mediaKeysSession.removeEventListener('keystatuseschange', mediaKeySessionContext._onkeystatuseschange); + mediaKeySessionContext._onkeystatuseschange = undefined; + } + if (licenseXhr && licenseXhr.readyState !== XMLHttpRequest.DONE) { + licenseXhr.abort(); + } + mediaKeySessionContext.mediaKeysSession = mediaKeySessionContext.decryptdata = mediaKeySessionContext.licenseXhr = undefined; + var index = this.mediaKeySessions.indexOf(mediaKeySessionContext); + if (index > -1) { + this.mediaKeySessions.splice(index, 1); + } + return mediaKeysSession.remove().catch(function (error) { + _this15.log("Could not remove session: " + error); + }).then(function () { + return mediaKeysSession.close(); + }).catch(function (error) { + _this15.log("Could not close session: " + error); + }); + } + }; + return EMEController; + }(Logger); + EMEController.CDMCleanupPromise = void 0; + var EMEKeyError = /*#__PURE__*/function (_Error) { + function EMEKeyError(data, message) { + var _this16; + _this16 = _Error.call(this, message) || this; + _this16.data = void 0; + data.error || (data.error = new Error(message)); + _this16.data = data; + data.err = data.error; + return _this16; + } + _inheritsLoose(EMEKeyError, _Error); + return EMEKeyError; + }(/*#__PURE__*/_wrapNativeSuper(Error)); + + /** + * Common Media Client Data Object Type + * + * @group CMCD + * + * @beta + */ + var CmcdObjectType; + (function (CmcdObjectType) { + /** + * text file, such as a manifest or playlist + */ + CmcdObjectType["MANIFEST"] = "m"; + /** + * audio only + */ + CmcdObjectType["AUDIO"] = "a"; + /** + * video only + */ + CmcdObjectType["VIDEO"] = "v"; + /** + * muxed audio and video + */ + CmcdObjectType["MUXED"] = "av"; + /** + * init segment + */ + CmcdObjectType["INIT"] = "i"; + /** + * caption or subtitle + */ + CmcdObjectType["CAPTION"] = "c"; + /** + * ISOBMFF timed text track + */ + CmcdObjectType["TIMED_TEXT"] = "tt"; + /** + * cryptographic key, license or certificate. + */ + CmcdObjectType["KEY"] = "k"; + /** + * other + */ + CmcdObjectType["OTHER"] = "o"; + })(CmcdObjectType || (CmcdObjectType = {})); + + /** + * Common Media Client Data Streaming Format + * + * @group CMCD + * + * @beta + */ + var CmcdStreamingFormat; + (function (CmcdStreamingFormat) { + /** + * MPEG DASH + */ + CmcdStreamingFormat["DASH"] = "d"; + /** + * HTTP Live Streaming (HLS) + */ + CmcdStreamingFormat["HLS"] = "h"; + /** + * Smooth Streaming + */ + CmcdStreamingFormat["SMOOTH"] = "s"; + /** + * Other + */ + CmcdStreamingFormat["OTHER"] = "o"; + })(CmcdStreamingFormat || (CmcdStreamingFormat = {})); + + /** + * CMCD header fields. + * + * @group CMCD + * + * @beta + */ + var CmcdHeaderField; + (function (CmcdHeaderField) { + /** + * keys whose values vary with the object being requested. + */ + CmcdHeaderField["OBJECT"] = "CMCD-Object"; + /** + * keys whose values vary with each request. + */ + CmcdHeaderField["REQUEST"] = "CMCD-Request"; + /** + * keys whose values are expected to be invariant over the life of the session. + */ + CmcdHeaderField["SESSION"] = "CMCD-Session"; + /** + * keys whose values do not vary with every request or object. + */ + CmcdHeaderField["STATUS"] = "CMCD-Status"; + })(CmcdHeaderField || (CmcdHeaderField = {})); + + var _CmcdHeaderMap; + /** + * The map of CMCD header fields to official CMCD keys. + * + * @internal + * + * @group CMCD + */ + var CmcdHeaderMap = (_CmcdHeaderMap = {}, _CmcdHeaderMap[CmcdHeaderField.OBJECT] = ['br', 'd', 'ot', 'tb'], _CmcdHeaderMap[CmcdHeaderField.REQUEST] = ['bl', 'dl', 'mtp', 'nor', 'nrr', 'su'], _CmcdHeaderMap[CmcdHeaderField.SESSION] = ['cid', 'pr', 'sf', 'sid', 'st', 'v'], _CmcdHeaderMap[CmcdHeaderField.STATUS] = ['bs', 'rtp'], _CmcdHeaderMap); + + /** + * Structured Field Item + * + * @group Structured Field + * + * @beta + */ + var SfItem = function SfItem(value, params) { + if (Array.isArray(value)) { + value = value.map(function (v) { + return v instanceof SfItem ? v : new SfItem(v); + }); + } + this.value = value; + this.params = params; + }; + + var DICT = 'Dict'; + + function format(value) { + if (Array.isArray(value)) { + return JSON.stringify(value); + } + if (value instanceof Map) { + return 'Map{}'; + } + if (value instanceof Set) { + return 'Set{}'; + } + if (typeof value === 'object') { + return JSON.stringify(value); + } + return String(value); + } + function throwError(action, src, type, cause) { + return new Error("failed to " + action + " \"" + format(src) + "\" as " + type, { + cause: cause + }); + } + + function serializeError(src, type, cause) { + return throwError('serialize', src, type, cause); + } + + /** + * A class to represent structured field tokens when `Symbol` is not available. + * + * @group Structured Field + * + * @beta + */ + var SfToken = function SfToken(description) { + this.description = description; + }; + + var BARE_ITEM = 'Bare Item'; + + var BOOLEAN = 'Boolean'; + + // 4.1.9. Serializing a Boolean + // + // Given a Boolean as input_boolean, return an ASCII string suitable for + // use in a HTTP field value. + // + // 1. If input_boolean is not a boolean, fail serialization. + // + // 2. Let output be an empty string. + // + // 3. Append "?" to output. + // + // 4. If input_boolean is true, append "1" to output. + // + // 5. If input_boolean is false, append "0" to output. + // + // 6. Return output. + function serializeBoolean(value) { + if (typeof value !== 'boolean') { + throw serializeError(value, BOOLEAN); + } + return value ? '?1' : '?0'; + } + + var BYTES = 'Byte Sequence'; + + // 4.1.8. Serializing a Byte Sequence + // + // Given a Byte Sequence as input_bytes, return an ASCII string suitable + // for use in a HTTP field value. + // + // 1. If input_bytes is not a sequence of bytes, fail serialization. + // + // 2. Let output be an empty string. + // + // 3. Append ":" to output. + // + // 4. Append the result of base64-encoding input_bytes as per + // [RFC4648], Section 4, taking account of the requirements below. + // + // 5. Append ":" to output. + // + // 6. Return output. + // + // The encoded data is required to be padded with "=", as per [RFC4648], + // Section 3.2. + // + // Likewise, encoded data SHOULD have pad bits set to zero, as per + // [RFC4648], Section 3.5, unless it is not possible to do so due to + // implementation constraints. + function serializeByteSequence(value) { + if (ArrayBuffer.isView(value) === false) { + throw serializeError(value, BYTES); + } + return ":" + base64encode(value) + ":"; + } + + var INTEGER = 'Integer'; + + function isInvalidInt(value) { + return value < -999999999999999 || 999999999999999 < value; + } + + // 4.1.4. Serializing an Integer + // + // Given an Integer as input_integer, return an ASCII string suitable + // for use in a HTTP field value. + // + // 1. If input_integer is not an integer in the range of + // -999,999,999,999,999 to 999,999,999,999,999 inclusive, fail + // serialization. + // + // 2. Let output be an empty string. + // + // 3. If input_integer is less than (but not equal to) 0, append "-" to + // output. + // + // 4. Append input_integer's numeric value represented in base 10 using + // only decimal digits to output. + // + // 5. Return output. + function serializeInteger(value) { + if (isInvalidInt(value)) { + throw serializeError(value, INTEGER); + } + return value.toString(); + } + + // 4.1.10. Serializing a Date + // + // Given a Date as input_integer, return an ASCII string suitable for + // use in an HTTP field value. + // 1. Let output be "@". + // 2. Append to output the result of running Serializing an Integer + // with input_date (Section 4.1.4). + // 3. Return output. + function serializeDate(value) { + return "@" + serializeInteger(value.getTime() / 1000); + } + + var DECIMAL = 'Decimal'; + + // 4.1.5. Serializing a Decimal + // + // Given a decimal number as input_decimal, return an ASCII string + // suitable for use in a HTTP field value. + // + // 1. If input_decimal is not a decimal number, fail serialization. + // + // 2. If input_decimal has more than three significant digits to the + // right of the decimal point, round it to three decimal places, + // rounding the final digit to the nearest value, or to the even + // value if it is equidistant. + // + // 3. If input_decimal has more than 12 significant digits to the left + // of the decimal point after rounding, fail serialization. + // + // 4. Let output be an empty string. + // + // 5. If input_decimal is less than (but not equal to) 0, append "-" + // to output. + // + // 6. Append input_decimal's integer component represented in base 10 + // (using only decimal digits) to output; if it is zero, append + // "0". + // + // 7. Append "." to output. + // + // 8. If input_decimal's fractional component is zero, append "0" to + // output. + // + // 9. Otherwise, append the significant digits of input_decimal's + // fractional component represented in base 10 (using only decimal + // digits) to output. + // + // 10. Return output. + function serializeDecimal(value) { + var roundedValue = roundToEven(value, 3); // round to 3 decimal places + if (Math.floor(Math.abs(roundedValue)).toString().length > 12) { + throw serializeError(value, DECIMAL); + } + var stringValue = roundedValue.toString(); + return stringValue.includes('.') ? stringValue : stringValue + ".0"; + } + + var STRING = 'String'; + + var STRING_REGEX = /[\x00-\x1f\x7f]+/; // eslint-disable-line no-control-regex + + // 4.1.6. Serializing a String + // + // Given a String as input_string, return an ASCII string suitable for + // use in a HTTP field value. + // + // 1. Convert input_string into a sequence of ASCII characters; if + // conversion fails, fail serialization. + // + // 2. If input_string contains characters in the range %x00-1f or %x7f + // (i.e., not in VCHAR or SP), fail serialization. + // + // 3. Let output be the string DQUOTE. + // + // 4. For each character char in input_string: + // + // 1. If char is "\" or DQUOTE: + // + // 1. Append "\" to output. + // + // 2. Append char to output. + // + // 5. Append DQUOTE to output. + // + // 6. Return output. + function serializeString(value) { + if (STRING_REGEX.test(value)) { + throw serializeError(value, STRING); + } + return "\"" + value.replace(/\\/g, "\\\\").replace(/"/g, "\\\"") + "\""; + } + + /** + * Converts a symbol to a string. + * + * @param symbol - The symbol to convert. + * + * @returns The string representation of the symbol. + * + * @internal + */ + function symbolToStr(symbol) { + return symbol.description || symbol.toString().slice(7, -1); + } + + var TOKEN = 'Token'; + + function serializeToken(token) { + var value = symbolToStr(token); + if (/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(value) === false) { + throw serializeError(value, TOKEN); + } + return value; + } + + // 4.1.3.1. Serializing a Bare Item + // + // Given an Item as input_item, return an ASCII string suitable for use + // in a HTTP field value. + // + // 1. If input_item is an Integer, return the result of running + // Serializing an Integer (Section 4.1.4) with input_item. + // + // 2. If input_item is a Decimal, return the result of running + // Serializing a Decimal (Section 4.1.5) with input_item. + // + // 3. If input_item is a String, return the result of running + // Serializing a String (Section 4.1.6) with input_item. + // + // 4. If input_item is a Token, return the result of running + // Serializing a Token (Section 4.1.7) with input_item. + // + // 5. If input_item is a Boolean, return the result of running + // Serializing a Boolean (Section 4.1.9) with input_item. + // + // 6. If input_item is a Byte Sequence, return the result of running + // Serializing a Byte Sequence (Section 4.1.8) with input_item. + // + // 7. If input_item is a Date, return the result of running Serializing + // a Date (Section 4.1.10) with input_item. + // + // 8. Otherwise, fail serialization. + function serializeBareItem(value) { + switch (typeof value) { + case 'number': + if (!isFiniteNumber(value)) { + throw serializeError(value, BARE_ITEM); + } + if (Number.isInteger(value)) { + return serializeInteger(value); + } + return serializeDecimal(value); + case 'string': + return serializeString(value); + case 'symbol': + return serializeToken(value); + case 'boolean': + return serializeBoolean(value); + case 'object': + if (value instanceof Date) { + return serializeDate(value); + } + if (value instanceof Uint8Array) { + return serializeByteSequence(value); + } + if (value instanceof SfToken) { + return serializeToken(value); + } + default: + // fail + throw serializeError(value, BARE_ITEM); + } + } + + var KEY = 'Key'; + + // 4.1.1.3. Serializing a Key + // + // Given a key as input_key, return an ASCII string suitable for use in + // a HTTP field value. + // + // 1. Convert input_key into a sequence of ASCII characters; if + // conversion fails, fail serialization. + // + // 2. If input_key contains characters not in lcalpha, DIGIT, "_", "-", + // ".", or "*" fail serialization. + // + // 3. If the first character of input_key is not lcalpha or "*", fail + // serialization. + // + // 4. Let output be an empty string. + // + // 5. Append input_key to output. + // + // 6. Return output. + function serializeKey(value) { + if (/^[a-z*][a-z0-9\-_.*]*$/.test(value) === false) { + throw serializeError(value, KEY); + } + return value; + } + + // 4.1.1.2. Serializing Parameters + // + // Given an ordered Dictionary as input_parameters (each member having a + // param_name and a param_value), return an ASCII string suitable for + // use in a HTTP field value. + // + // 1. Let output be an empty string. + // + // 2. For each param_name with a value of param_value in + // input_parameters: + // + // 1. Append ";" to output. + // + // 2. Append the result of running Serializing a Key + // (Section 4.1.1.3) with param_name to output. + // + // 3. If param_value is not Boolean true: + // + // 1. Append "=" to output. + // + // 2. Append the result of running Serializing a bare Item + // (Section 4.1.3.1) with param_value to output. + // + // 3. Return output. + function serializeParams(params) { + if (params == null) { + return ''; + } + return Object.entries(params).map(function (_ref) { + var key = _ref[0], + value = _ref[1]; + if (value === true) { + return ";" + serializeKey(key); // omit true + } + return ";" + serializeKey(key) + "=" + serializeBareItem(value); + }).join(''); + } + + // 4.1.3. Serializing an Item + // + // Given an Item as bare_item and Parameters as item_parameters, return + // an ASCII string suitable for use in a HTTP field value. + // + // 1. Let output be an empty string. + // + // 2. Append the result of running Serializing a Bare Item + // Section 4.1.3.1 with bare_item to output. + // + // 3. Append the result of running Serializing Parameters + // Section 4.1.1.2 with item_parameters to output. + // + // 4. Return output. + function serializeItem(value) { + if (value instanceof SfItem) { + return "" + serializeBareItem(value.value) + serializeParams(value.params); + } else { + return serializeBareItem(value); + } + } + + // 4.1.1.1. Serializing an Inner List + // + // Given an array of (member_value, parameters) tuples as inner_list, + // and parameters as list_parameters, return an ASCII string suitable + // for use in a HTTP field value. + // + // 1. Let output be the string "(". + // + // 2. For each (member_value, parameters) of inner_list: + // + // 1. Append the result of running Serializing an Item + // (Section 4.1.3) with (member_value, parameters) to output. + // + // 2. If more values remain in inner_list, append a single SP to + // output. + // + // 3. Append ")" to output. + // + // 4. Append the result of running Serializing Parameters + // (Section 4.1.1.2) with list_parameters to output. + // + // 5. Return output. + function serializeInnerList(value) { + return "(" + value.value.map(serializeItem).join(' ') + ")" + serializeParams(value.params); + } + + // 4.1.2. Serializing a Dictionary + // + // Given an ordered Dictionary as input_dictionary (each member having a + // member_name and a tuple value of (member_value, parameters)), return + // an ASCII string suitable for use in a HTTP field value. + // + // 1. Let output be an empty string. + // + // 2. For each member_name with a value of (member_value, parameters) + // in input_dictionary: + // + // 1. Append the result of running Serializing a Key + // (Section 4.1.1.3) with member's member_name to output. + // + // 2. If member_value is Boolean true: + // + // 1. Append the result of running Serializing Parameters + // (Section 4.1.1.2) with parameters to output. + // + // 3. Otherwise: + // + // 1. Append "=" to output. + // + // 2. If member_value is an array, append the result of running + // Serializing an Inner List (Section 4.1.1.1) with + // (member_value, parameters) to output. + // + // 3. Otherwise, append the result of running Serializing an + // Item (Section 4.1.3) with (member_value, parameters) to + // output. + // + // 4. If more members remain in input_dictionary: + // + // 1. Append "," to output. + // + // 2. Append a single SP to output. + // + // 3. Return output. + function serializeDict(dict, options) { + if (options === void 0) { + options = { + whitespace: true + }; + } + if (typeof dict !== 'object') { + throw serializeError(dict, DICT); + } + var entries = dict instanceof Map ? dict.entries() : Object.entries(dict); + var optionalWhiteSpace = (options === null || options === void 0 ? void 0 : options.whitespace) ? ' ' : ''; + return Array.from(entries).map(function (_ref) { + var key = _ref[0], + item = _ref[1]; + if (item instanceof SfItem === false) { + item = new SfItem(item); + } + var output = serializeKey(key); + if (item.value === true) { + output += serializeParams(item.params); + } else { + output += '='; + if (Array.isArray(item.value)) { + output += serializeInnerList(item); + } else { + output += serializeItem(item); + } + } + return output; + }).join("," + optionalWhiteSpace); + } + + /** + * Encode an object into a structured field dictionary + * + * @param value - The structured field dictionary to encode + * @param options - Encoding options + * + * @returns The structured field string + * + * @group Structured Field + * + * @beta + */ + function encodeSfDict(value, options) { + return serializeDict(value, options); + } + + /** + * Checks if the given key is a token field. + * + * @param key - The key to check. + * + * @returns `true` if the key is a token field. + * + * @internal + */ + function isTokenField(key) { + return key === 'ot' || key === 'sf' || key === 'st'; + } + + /** + * Checks if the given value is valid + * + * @param value - The value to check. + * + * @returns `true` if the key is a value is valid. + * + * @internal + */ + function isValid(value) { + if (typeof value === 'number') { + return isFiniteNumber(value); + } + return value != null && value !== '' && value !== false; + } + + var toRounded = function toRounded(value) { + return Math.round(value); + }; + var toUrlSafe = function toUrlSafe(value, options) { + if (options === null || options === void 0 ? void 0 : options.baseUrl) { + value = urlToRelativePath(value, options.baseUrl); + } + return encodeURIComponent(value); + }; + var toHundred = function toHundred(value) { + return toRounded(value / 100) * 100; + }; + /** + * The default formatters for CMCD values. + * + * @group CMCD + * + * @beta + */ + var CmcdFormatters = { + /** + * Bitrate (kbps) rounded integer + */ + br: toRounded, + /** + * Duration (milliseconds) rounded integer + */ + d: toRounded, + /** + * Buffer Length (milliseconds) rounded nearest 100ms + */ + bl: toHundred, + /** + * Deadline (milliseconds) rounded nearest 100ms + */ + dl: toHundred, + /** + * Measured Throughput (kbps) rounded nearest 100kbps + */ + mtp: toHundred, + /** + * Next Object Request URL encoded + */ + nor: toUrlSafe, + /** + * Requested maximum throughput (kbps) rounded nearest 100kbps + */ + rtp: toHundred, + /** + * Top Bitrate (kbps) rounded integer + */ + tb: toRounded + }; + + /** + * Internal CMCD processing function. + * + * @param obj - The CMCD object to process. + * @param map - The mapping function to use. + * @param options - Options for encoding. + * + * @internal + * + * @group CMCD + */ + function processCmcd(obj, options) { + var results = {}; + if (obj == null || typeof obj !== 'object') { + return results; + } + var keys = Object.keys(obj).sort(); + var formatters = _extends({}, CmcdFormatters, options === null || options === void 0 ? void 0 : options.formatters); + var filter = options === null || options === void 0 ? void 0 : options.filter; + keys.forEach(function (key) { + if (filter === null || filter === void 0 ? void 0 : filter(key)) { + return; + } + var value = obj[key]; + var formatter = formatters[key]; + if (formatter) { + value = formatter(value, options); + } + // Version should only be reported if not equal to 1. + if (key === 'v' && value === 1) { + return; + } + // Playback rate should only be sent if not equal to 1. + if (key == 'pr' && value === 1) { + return; + } + // ignore invalid values + if (!isValid(value)) { + return; + } + if (isTokenField(key) && typeof value === 'string') { + value = new SfToken(value); + } + results[key] = value; + }); + return results; + } + + /** + * Encode a CMCD object to a string. + * + * @param cmcd - The CMCD object to encode. + * @param options - Options for encoding. + * + * @returns The encoded CMCD string. + * + * @group CMCD + * + * @beta + */ + function encodeCmcd(cmcd, options) { + if (options === void 0) { + options = {}; + } + if (!cmcd) { + return ''; + } + return encodeSfDict(processCmcd(cmcd, options), _extends({ + whitespace: false + }, options)); + } + + /** + * Convert a CMCD data object to request headers + * + * @param cmcd - The CMCD data object to convert. + * @param options - Options for encoding the CMCD object. + * + * @returns The CMCD header shards. + * + * @group CMCD + * + * @beta + */ + function toCmcdHeaders(cmcd, options) { + if (options === void 0) { + options = {}; + } + var result = {}; + if (!cmcd) { + return result; + } + var entries = Object.entries(cmcd); + var headerMap = Object.entries(CmcdHeaderMap).concat(Object.entries((options === null || options === void 0 ? void 0 : options.customHeaderMap) || {})); + var shards = entries.reduce(function (acc, entry) { + var _a, _b; + var key = entry[0], + value = entry[1]; + var field = ((_a = headerMap.find(function (entry) { + return entry[1].includes(key); + })) === null || _a === void 0 ? void 0 : _a[0]) || CmcdHeaderField.REQUEST; + (_b = acc[field]) !== null && _b !== void 0 ? _b : acc[field] = {}; + acc[field][key] = value; + return acc; + }, {}); + return Object.entries(shards).reduce(function (acc, _ref) { + var field = _ref[0], + value = _ref[1]; + acc[field] = encodeCmcd(value, options); + return acc; + }, result); + } + + /** + * Append CMCD query args to a header object. + * + * @param headers - The headers to append to. + * @param cmcd - The CMCD object to append. + * @param options - Encode options. + * + * @returns The headers with the CMCD header shards appended. + * + * @group CMCD + * + * @beta + */ + function appendCmcdHeaders(headers, cmcd, options) { + return _extends(headers, toCmcdHeaders(cmcd, options)); + } + + /** + * CMCD parameter name. + * + * @group CMCD + * + * @beta + */ + var CMCD_PARAM = 'CMCD'; + + /** + * Convert a CMCD data object to a query arg. + * + * @param cmcd - The CMCD object to convert. + * @param options - Options for encoding the CMCD object. + * + * @returns The CMCD query arg. + * + * @group CMCD + * + * @beta + */ + function toCmcdQuery(cmcd, options) { + if (options === void 0) { + options = {}; + } + if (!cmcd) { + return ''; + } + var params = encodeCmcd(cmcd, options); + return CMCD_PARAM + "=" + encodeURIComponent(params); + } + + var REGEX = /CMCD=[^&#]+/; + /** + * Append CMCD query args to a URL. + * + * @param url - The URL to append to. + * @param cmcd - The CMCD object to append. + * @param options - Options for encoding the CMCD object. + * + * @returns The URL with the CMCD query args appended. + * + * @group CMCD + * + * @beta + */ + function appendCmcdQuery(url, cmcd, options) { + // TODO: Replace with URLSearchParams once we drop Safari < 10.1 & Chrome < 49 support. + // https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams + var query = toCmcdQuery(cmcd, options); + if (!query) { + return url; + } + if (REGEX.test(url)) { + return url.replace(REGEX, query); + } + var separator = url.includes('?') ? '&' : '?'; + return "" + url + separator + query; + } + + /** + * Controller to deal with Common Media Client Data (CMCD) + * @see https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf + */ + var CMCDController = /*#__PURE__*/function () { + // eslint-disable-line no-restricted-globals + + function CMCDController(hls) { + var _this = this; + this.hls = void 0; + this.config = void 0; + this.media = void 0; + this.sid = void 0; + this.cid = void 0; + this.useHeaders = false; + this.includeKeys = void 0; + this.initialized = false; + this.starved = false; + this.buffering = true; + this.audioBuffer = void 0; + // eslint-disable-line no-restricted-globals + this.videoBuffer = void 0; + this.onWaiting = function () { + if (_this.initialized) { + _this.starved = true; + } + _this.buffering = true; + }; + this.onPlaying = function () { + if (!_this.initialized) { + _this.initialized = true; + } + _this.buffering = false; + }; + /** + * Apply CMCD data to a manifest request. + */ + this.applyPlaylistData = function (context) { + try { + _this.apply(context, { + ot: CmcdObjectType.MANIFEST, + su: !_this.initialized + }); + } catch (error) { + _this.hls.logger.warn('Could not generate manifest CMCD data.', error); + } + }; + /** + * Apply CMCD data to a segment request + */ + this.applyFragmentData = function (context) { + try { + var frag = context.frag, + part = context.part; + var level = _this.hls.levels[frag.level]; + var ot = _this.getObjectType(frag); + var data = { + d: (part || frag).duration * 1000, + ot: ot + }; + if (ot === CmcdObjectType.VIDEO || ot === CmcdObjectType.AUDIO || ot == CmcdObjectType.MUXED) { + data.br = level.bitrate / 1000; + data.tb = _this.getTopBandwidth(ot) / 1000; + data.bl = _this.getBufferLength(ot); + } + var next = part ? _this.getNextPart(part) : _this.getNextFrag(frag); + if (next != null && next.url && next.url !== frag.url) { + data.nor = next.url; + } + _this.apply(context, data); + } catch (error) { + _this.hls.logger.warn('Could not generate segment CMCD data.', error); + } + }; + this.hls = hls; + var config = this.config = hls.config; + var cmcd = config.cmcd; + if (cmcd != null) { + config.pLoader = this.createPlaylistLoader(); + config.fLoader = this.createFragmentLoader(); + this.sid = cmcd.sessionId || uuid(); + this.cid = cmcd.contentId; + this.useHeaders = cmcd.useHeaders === true; + this.includeKeys = cmcd.includeKeys; + this.registerListeners(); + } + } + var _proto = CMCDController.prototype; + _proto.registerListeners = function registerListeners() { + var hls = this.hls; + hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this); + hls.on(Events.MEDIA_DETACHED, this.onMediaDetached, this); + hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this); + }; + _proto.unregisterListeners = function unregisterListeners() { + var hls = this.hls; + hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this); + hls.off(Events.MEDIA_DETACHED, this.onMediaDetached, this); + hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this); + }; + _proto.destroy = function destroy() { + this.unregisterListeners(); + this.onMediaDetached(); + + // @ts-ignore + this.hls = this.config = this.audioBuffer = this.videoBuffer = null; + // @ts-ignore + this.onWaiting = this.onPlaying = this.media = null; + }; + _proto.onMediaAttached = function onMediaAttached(event, data) { + this.media = data.media; + this.media.addEventListener('waiting', this.onWaiting); + this.media.addEventListener('playing', this.onPlaying); + }; + _proto.onMediaDetached = function onMediaDetached() { + if (!this.media) { + return; + } + this.media.removeEventListener('waiting', this.onWaiting); + this.media.removeEventListener('playing', this.onPlaying); + + // @ts-ignore + this.media = null; + }; + _proto.onBufferCreated = function onBufferCreated(event, data) { + var _data$tracks$audio, _data$tracks$video; + this.audioBuffer = (_data$tracks$audio = data.tracks.audio) == null ? void 0 : _data$tracks$audio.buffer; + this.videoBuffer = (_data$tracks$video = data.tracks.video) == null ? void 0 : _data$tracks$video.buffer; + }; + /** + * Create baseline CMCD data + */ + _proto.createData = function createData() { + var _this$media; + return { + v: 1, + sf: CmcdStreamingFormat.HLS, + sid: this.sid, + cid: this.cid, + pr: (_this$media = this.media) == null ? void 0 : _this$media.playbackRate, + mtp: this.hls.bandwidthEstimate / 1000 + }; + } + + /** + * Apply CMCD data to a request. + */; + _proto.apply = function apply(context, data) { + if (data === void 0) { + data = {}; + } + // apply baseline data + _extends(data, this.createData()); + var isVideo = data.ot === CmcdObjectType.INIT || data.ot === CmcdObjectType.VIDEO || data.ot === CmcdObjectType.MUXED; + if (this.starved && isVideo) { + data.bs = true; + data.su = true; + this.starved = false; + } + if (data.su == null) { + data.su = this.buffering; + } + + // TODO: Implement rtp, nrr, dl + + var includeKeys = this.includeKeys; + if (includeKeys) { + data = Object.keys(data).reduce(function (acc, key) { + includeKeys.includes(key) && (acc[key] = data[key]); + return acc; + }, {}); + } + var options = { + baseUrl: context.url + }; + if (this.useHeaders) { + if (!context.headers) { + context.headers = {}; + } + appendCmcdHeaders(context.headers, data, options); + } else { + context.url = appendCmcdQuery(context.url, data, options); + } + }; + _proto.getNextFrag = function getNextFrag(fragment) { + var _this$hls$levels$frag; + var levelDetails = (_this$hls$levels$frag = this.hls.levels[fragment.level]) == null ? void 0 : _this$hls$levels$frag.details; + if (levelDetails) { + var index = fragment.sn - levelDetails.startSN; + return levelDetails.fragments[index + 1]; + } + return undefined; + }; + _proto.getNextPart = function getNextPart(part) { + var _this$hls$levels$frag2, _this$hls$levels$frag3; + var index = part.index, + fragment = part.fragment; + var partList = (_this$hls$levels$frag2 = this.hls.levels[fragment.level]) == null ? void 0 : (_this$hls$levels$frag3 = _this$hls$levels$frag2.details) == null ? void 0 : _this$hls$levels$frag3.partList; + if (partList) { + var sn = fragment.sn; + for (var i = partList.length - 1; i >= 0; i--) { + var p = partList[i]; + if (p.index === index && p.fragment.sn === sn) { + return partList[i + 1]; + } + } + } + return undefined; + } + + /** + * The CMCD object type. + */; + _proto.getObjectType = function getObjectType(fragment) { + var type = fragment.type; + if (type === 'subtitle') { + return CmcdObjectType.TIMED_TEXT; + } + if (fragment.sn === 'initSegment') { + return CmcdObjectType.INIT; + } + if (type === 'audio') { + return CmcdObjectType.AUDIO; + } + if (type === 'main') { + if (!this.hls.audioTracks.length) { + return CmcdObjectType.MUXED; + } + return CmcdObjectType.VIDEO; + } + return undefined; + } + + /** + * Get the highest bitrate. + */; + _proto.getTopBandwidth = function getTopBandwidth(type) { + var bitrate = 0; + var levels; + var hls = this.hls; + if (type === CmcdObjectType.AUDIO) { + levels = hls.audioTracks; + } else { + var max = hls.maxAutoLevel; + var len = max > -1 ? max + 1 : hls.levels.length; + levels = hls.levels.slice(0, len); + } + for (var _iterator = _createForOfIteratorHelperLoose(levels), _step; !(_step = _iterator()).done;) { + var level = _step.value; + if (level.bitrate > bitrate) { + bitrate = level.bitrate; + } + } + return bitrate > 0 ? bitrate : NaN; + } + + /** + * Get the buffer length for a media type in milliseconds + */; + _proto.getBufferLength = function getBufferLength(type) { + var media = this.media; + var buffer = type === CmcdObjectType.AUDIO ? this.audioBuffer : this.videoBuffer; + if (!buffer || !media) { + return NaN; + } + var info = BufferHelper.bufferInfo(buffer, media.currentTime, this.config.maxBufferHole); + return info.len * 1000; + } + + /** + * Create a playlist loader + */; + _proto.createPlaylistLoader = function createPlaylistLoader() { + var pLoader = this.config.pLoader; + var apply = this.applyPlaylistData; + var Ctor = pLoader || this.config.loader; + return /*#__PURE__*/function () { + function CmcdPlaylistLoader(config) { + this.loader = void 0; + this.loader = new Ctor(config); + } + var _proto2 = CmcdPlaylistLoader.prototype; + _proto2.destroy = function destroy() { + this.loader.destroy(); + }; + _proto2.abort = function abort() { + this.loader.abort(); + }; + _proto2.load = function load(context, config, callbacks) { + apply(context); + this.loader.load(context, config, callbacks); + }; + return _createClass(CmcdPlaylistLoader, [{ + key: "stats", + get: function get() { + return this.loader.stats; + } + }, { + key: "context", + get: function get() { + return this.loader.context; + } + }]); + }(); + } + + /** + * Create a playlist loader + */; + _proto.createFragmentLoader = function createFragmentLoader() { + var fLoader = this.config.fLoader; + var apply = this.applyFragmentData; + var Ctor = fLoader || this.config.loader; + return /*#__PURE__*/function () { + function CmcdFragmentLoader(config) { + this.loader = void 0; + this.loader = new Ctor(config); + } + var _proto3 = CmcdFragmentLoader.prototype; + _proto3.destroy = function destroy() { + this.loader.destroy(); + }; + _proto3.abort = function abort() { + this.loader.abort(); + }; + _proto3.load = function load(context, config, callbacks) { + apply(context); + this.loader.load(context, config, callbacks); + }; + return _createClass(CmcdFragmentLoader, [{ + key: "stats", + get: function get() { + return this.loader.stats; + } + }, { + key: "context", + get: function get() { + return this.loader.context; + } + }]); + }(); + }; + return CMCDController; + }(); + + var PATHWAY_PENALTY_DURATION_MS = 300000; + var ContentSteeringController = /*#__PURE__*/function (_Logger) { + function ContentSteeringController(hls) { + var _this; + _this = _Logger.call(this, 'content-steering', hls.logger) || this; + _this.hls = void 0; + _this.loader = null; + _this.uri = null; + _this.pathwayId = '.'; + _this._pathwayPriority = null; + _this.timeToLoad = 300; + _this.reloadTimer = -1; + _this.updated = 0; + _this.started = false; + _this.enabled = true; + _this.levels = null; + _this.audioTracks = null; + _this.subtitleTracks = null; + _this.penalizedPathways = {}; + _this.hls = hls; + _this.registerListeners(); + return _this; + } + _inheritsLoose(ContentSteeringController, _Logger); + var _proto = ContentSteeringController.prototype; + _proto.registerListeners = function registerListeners() { + var hls = this.hls; + hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this); + hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this); + hls.on(Events.ERROR, this.onError, this); + }; + _proto.unregisterListeners = function unregisterListeners() { + var hls = this.hls; + if (!hls) { + return; + } + hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this); + hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this); + hls.off(Events.ERROR, this.onError, this); + }; + _proto.pathways = function pathways() { + return (this.levels || []).reduce(function (pathways, level) { + if (pathways.indexOf(level.pathwayId) === -1) { + pathways.push(level.pathwayId); + } + return pathways; + }, []); + }; + _proto.startLoad = function startLoad() { + this.started = true; + this.clearTimeout(); + if (this.enabled && this.uri) { + if (this.updated) { + var ttl = this.timeToLoad * 1000 - (performance.now() - this.updated); + if (ttl > 0) { + this.scheduleRefresh(this.uri, ttl); + return; + } + } + this.loadSteeringManifest(this.uri); + } + }; + _proto.stopLoad = function stopLoad() { + this.started = false; + if (this.loader) { + this.loader.destroy(); + this.loader = null; + } + this.clearTimeout(); + }; + _proto.clearTimeout = function clearTimeout() { + if (this.reloadTimer !== -1) { + self.clearTimeout(this.reloadTimer); + this.reloadTimer = -1; + } + }; + _proto.destroy = function destroy() { + this.unregisterListeners(); + this.stopLoad(); + // @ts-ignore + this.hls = null; + this.levels = this.audioTracks = this.subtitleTracks = null; + }; + _proto.removeLevel = function removeLevel(levelToRemove) { + var levels = this.levels; + if (levels) { + this.levels = levels.filter(function (level) { + return level !== levelToRemove; + }); + } + }; + _proto.onManifestLoading = function onManifestLoading() { + this.stopLoad(); + this.enabled = true; + this.timeToLoad = 300; + this.updated = 0; + this.uri = null; + this.pathwayId = '.'; + this.levels = this.audioTracks = this.subtitleTracks = null; + }; + _proto.onManifestLoaded = function onManifestLoaded(event, data) { + var contentSteering = data.contentSteering; + if (contentSteering === null) { + return; + } + this.pathwayId = contentSteering.pathwayId; + this.uri = contentSteering.uri; + if (this.started) { + this.startLoad(); + } + }; + _proto.onManifestParsed = function onManifestParsed(event, data) { + this.audioTracks = data.audioTracks; + this.subtitleTracks = data.subtitleTracks; + }; + _proto.onError = function onError(event, data) { + var errorAction = data.errorAction; + if ((errorAction == null ? void 0 : errorAction.action) === NetworkErrorAction.SendAlternateToPenaltyBox && errorAction.flags === ErrorActionFlags.MoveAllAlternatesMatchingHost) { + var levels = this.levels; + var pathwayPriority = this._pathwayPriority; + var errorPathway = this.pathwayId; + if (data.context) { + var _data$context = data.context, + groupId = _data$context.groupId, + pathwayId = _data$context.pathwayId, + type = _data$context.type; + if (groupId && levels) { + errorPathway = this.getPathwayForGroupId(groupId, type, errorPathway); + } else if (pathwayId) { + errorPathway = pathwayId; + } + } + if (!(errorPathway in this.penalizedPathways)) { + this.penalizedPathways[errorPathway] = performance.now(); + } + if (!pathwayPriority && levels) { + // If PATHWAY-PRIORITY was not provided, list pathways for error handling + pathwayPriority = this.pathways(); + } + if (pathwayPriority && pathwayPriority.length > 1) { + this.updatePathwayPriority(pathwayPriority); + errorAction.resolved = this.pathwayId !== errorPathway; + } + if (!errorAction.resolved) { + this.warn("Could not resolve " + data.details + " (\"" + data.error.message + "\") with content-steering for Pathway: " + errorPathway + " levels: " + (levels ? levels.length : levels) + " priorities: " + JSON.stringify(pathwayPriority) + " penalized: " + JSON.stringify(this.penalizedPathways)); + } + } + }; + _proto.filterParsedLevels = function filterParsedLevels(levels) { + // Filter levels to only include those that are in the initial pathway + this.levels = levels; + var pathwayLevels = this.getLevelsForPathway(this.pathwayId); + if (pathwayLevels.length === 0) { + var pathwayId = levels[0].pathwayId; + this.log("No levels found in Pathway " + this.pathwayId + ". Setting initial Pathway to \"" + pathwayId + "\""); + pathwayLevels = this.getLevelsForPathway(pathwayId); + this.pathwayId = pathwayId; + } + if (pathwayLevels.length !== levels.length) { + this.log("Found " + pathwayLevels.length + "/" + levels.length + " levels in Pathway \"" + this.pathwayId + "\""); + return pathwayLevels; + } + return levels; + }; + _proto.getLevelsForPathway = function getLevelsForPathway(pathwayId) { + if (this.levels === null) { + return []; + } + return this.levels.filter(function (level) { + return pathwayId === level.pathwayId; + }); + }; + _proto.updatePathwayPriority = function updatePathwayPriority(pathwayPriority) { + this._pathwayPriority = pathwayPriority; + var levels; + + // Evaluate if we should remove the pathway from the penalized list + var penalizedPathways = this.penalizedPathways; + var now = performance.now(); + Object.keys(penalizedPathways).forEach(function (pathwayId) { + if (now - penalizedPathways[pathwayId] > PATHWAY_PENALTY_DURATION_MS) { + delete penalizedPathways[pathwayId]; + } + }); + for (var i = 0; i < pathwayPriority.length; i++) { + var pathwayId = pathwayPriority[i]; + if (pathwayId in penalizedPathways) { + continue; + } + if (pathwayId === this.pathwayId) { + return; + } + var selectedIndex = this.hls.nextLoadLevel; + var selectedLevel = this.hls.levels[selectedIndex]; + levels = this.getLevelsForPathway(pathwayId); + if (levels.length > 0) { + this.log("Setting Pathway to \"" + pathwayId + "\""); + this.pathwayId = pathwayId; + reassignFragmentLevelIndexes(levels); + this.hls.trigger(Events.LEVELS_UPDATED, { + levels: levels + }); + // Set LevelController's level to trigger LEVEL_SWITCHING which loads playlist if needed + var levelAfterChange = this.hls.levels[selectedIndex]; + if (selectedLevel && levelAfterChange && this.levels) { + if (levelAfterChange.attrs['STABLE-VARIANT-ID'] !== selectedLevel.attrs['STABLE-VARIANT-ID'] && levelAfterChange.bitrate !== selectedLevel.bitrate) { + this.log("Unstable Pathways change from bitrate " + selectedLevel.bitrate + " to " + levelAfterChange.bitrate); + } + this.hls.nextLoadLevel = selectedIndex; + } + break; + } + } + }; + _proto.getPathwayForGroupId = function getPathwayForGroupId(groupId, type, defaultPathway) { + var levels = this.getLevelsForPathway(defaultPathway).concat(this.levels || []); + for (var i = 0; i < levels.length; i++) { + if (type === PlaylistContextType.AUDIO_TRACK && levels[i].hasAudioGroup(groupId) || type === PlaylistContextType.SUBTITLE_TRACK && levels[i].hasSubtitleGroup(groupId)) { + return levels[i].pathwayId; + } + } + return defaultPathway; + }; + _proto.clonePathways = function clonePathways(pathwayClones) { + var _this2 = this; + var levels = this.levels; + if (!levels) { + return; + } + var audioGroupCloneMap = {}; + var subtitleGroupCloneMap = {}; + pathwayClones.forEach(function (pathwayClone) { + var cloneId = pathwayClone.ID, + baseId = pathwayClone['BASE-ID'], + uriReplacement = pathwayClone['URI-REPLACEMENT']; + if (levels.some(function (level) { + return level.pathwayId === cloneId; + })) { + return; + } + var clonedVariants = _this2.getLevelsForPathway(baseId).map(function (baseLevel) { + var attributes = new AttrList(baseLevel.attrs); + attributes['PATHWAY-ID'] = cloneId; + var clonedAudioGroupId = attributes.AUDIO && attributes.AUDIO + "_clone_" + cloneId; + var clonedSubtitleGroupId = attributes.SUBTITLES && attributes.SUBTITLES + "_clone_" + cloneId; + if (clonedAudioGroupId) { + audioGroupCloneMap[attributes.AUDIO] = clonedAudioGroupId; + attributes.AUDIO = clonedAudioGroupId; + } + if (clonedSubtitleGroupId) { + subtitleGroupCloneMap[attributes.SUBTITLES] = clonedSubtitleGroupId; + attributes.SUBTITLES = clonedSubtitleGroupId; + } + var url = performUriReplacement(baseLevel.uri, attributes['STABLE-VARIANT-ID'], 'PER-VARIANT-URIS', uriReplacement); + var clonedLevel = new Level({ + attrs: attributes, + audioCodec: baseLevel.audioCodec, + bitrate: baseLevel.bitrate, + height: baseLevel.height, + name: baseLevel.name, + url: url, + videoCodec: baseLevel.videoCodec, + width: baseLevel.width + }); + if (baseLevel.audioGroups) { + for (var i = 1; i < baseLevel.audioGroups.length; i++) { + clonedLevel.addGroupId('audio', baseLevel.audioGroups[i] + "_clone_" + cloneId); + } + } + if (baseLevel.subtitleGroups) { + for (var _i = 1; _i < baseLevel.subtitleGroups.length; _i++) { + clonedLevel.addGroupId('text', baseLevel.subtitleGroups[_i] + "_clone_" + cloneId); + } + } + return clonedLevel; + }); + levels.push.apply(levels, clonedVariants); + cloneRenditionGroups(_this2.audioTracks, audioGroupCloneMap, uriReplacement, cloneId); + cloneRenditionGroups(_this2.subtitleTracks, subtitleGroupCloneMap, uriReplacement, cloneId); + }); + }; + _proto.loadSteeringManifest = function loadSteeringManifest(uri) { + var _this3 = this; + var config = this.hls.config; + var Loader = config.loader; + if (this.loader) { + this.loader.destroy(); + } + this.loader = new Loader(config); + var url; + try { + url = new self.URL(uri); + } catch (error) { + this.enabled = false; + this.log("Failed to parse Steering Manifest URI: " + uri); + return; + } + if (url.protocol !== 'data:') { + var throughput = (this.hls.bandwidthEstimate || config.abrEwmaDefaultEstimate) | 0; + url.searchParams.set('_HLS_pathway', this.pathwayId); + url.searchParams.set('_HLS_throughput', '' + throughput); + } + var context = { + responseType: 'json', + url: url.href + }; + var loadPolicy = config.steeringManifestLoadPolicy.default; + var legacyRetryCompatibility = loadPolicy.errorRetry || loadPolicy.timeoutRetry || {}; + var loaderConfig = { + loadPolicy: loadPolicy, + timeout: loadPolicy.maxLoadTimeMs, + maxRetry: legacyRetryCompatibility.maxNumRetry || 0, + retryDelay: legacyRetryCompatibility.retryDelayMs || 0, + maxRetryDelay: legacyRetryCompatibility.maxRetryDelayMs || 0 + }; + var callbacks = { + onSuccess: function onSuccess(response, stats, context, networkDetails) { + _this3.log("Loaded steering manifest: \"" + url + "\""); + var steeringData = response.data; + if ((steeringData == null ? void 0 : steeringData.VERSION) !== 1) { + _this3.log("Steering VERSION " + steeringData.VERSION + " not supported!"); + return; + } + _this3.updated = performance.now(); + _this3.timeToLoad = steeringData.TTL; + var reloadUri = steeringData['RELOAD-URI'], + pathwayClones = steeringData['PATHWAY-CLONES'], + pathwayPriority = steeringData['PATHWAY-PRIORITY']; + if (reloadUri) { + try { + _this3.uri = new self.URL(reloadUri, url).href; + } catch (error) { + _this3.enabled = false; + _this3.log("Failed to parse Steering Manifest RELOAD-URI: " + reloadUri); + return; + } + } + _this3.scheduleRefresh(_this3.uri || context.url); + if (pathwayClones) { + _this3.clonePathways(pathwayClones); + } + var loadedSteeringData = { + steeringManifest: steeringData, + url: url.toString() + }; + _this3.hls.trigger(Events.STEERING_MANIFEST_LOADED, loadedSteeringData); + if (pathwayPriority) { + _this3.updatePathwayPriority(pathwayPriority); + } + }, + onError: function onError(error, context, networkDetails, stats) { + _this3.log("Error loading steering manifest: " + error.code + " " + error.text + " (" + context.url + ")"); + _this3.stopLoad(); + if (error.code === 410) { + _this3.enabled = false; + _this3.log("Steering manifest " + context.url + " no longer available"); + return; + } + var ttl = _this3.timeToLoad * 1000; + if (error.code === 429) { + var loader = _this3.loader; + if (typeof (loader == null ? void 0 : loader.getResponseHeader) === 'function') { + var retryAfter = loader.getResponseHeader('Retry-After'); + if (retryAfter) { + ttl = parseFloat(retryAfter) * 1000; + } + } + _this3.log("Steering manifest " + context.url + " rate limited"); + return; + } + _this3.scheduleRefresh(_this3.uri || context.url, ttl); + }, + onTimeout: function onTimeout(stats, context, networkDetails) { + _this3.log("Timeout loading steering manifest (" + context.url + ")"); + _this3.scheduleRefresh(_this3.uri || context.url); + } + }; + this.log("Requesting steering manifest: " + url); + this.loader.load(context, loaderConfig, callbacks); + }; + _proto.scheduleRefresh = function scheduleRefresh(uri, ttlMs) { + var _this4 = this; + if (ttlMs === void 0) { + ttlMs = this.timeToLoad * 1000; + } + this.clearTimeout(); + this.reloadTimer = self.setTimeout(function () { + var _this4$hls; + var media = (_this4$hls = _this4.hls) == null ? void 0 : _this4$hls.media; + if (media && !media.ended) { + _this4.loadSteeringManifest(uri); + return; + } + _this4.scheduleRefresh(uri, _this4.timeToLoad * 1000); + }, ttlMs); + }; + return _createClass(ContentSteeringController, [{ + key: "pathwayPriority", + get: function get() { + return this._pathwayPriority; + }, + set: function set(pathwayPriority) { + this.updatePathwayPriority(pathwayPriority); + } + }]); + }(Logger); + function cloneRenditionGroups(tracks, groupCloneMap, uriReplacement, cloneId) { + if (!tracks) { + return; + } + Object.keys(groupCloneMap).forEach(function (audioGroupId) { + var clonedTracks = tracks.filter(function (track) { + return track.groupId === audioGroupId; + }).map(function (track) { + var clonedTrack = _extends({}, track); + clonedTrack.details = undefined; + clonedTrack.attrs = new AttrList(clonedTrack.attrs); + clonedTrack.url = clonedTrack.attrs.URI = performUriReplacement(track.url, track.attrs['STABLE-RENDITION-ID'], 'PER-RENDITION-URIS', uriReplacement); + clonedTrack.groupId = clonedTrack.attrs['GROUP-ID'] = groupCloneMap[audioGroupId]; + clonedTrack.attrs['PATHWAY-ID'] = cloneId; + return clonedTrack; + }); + tracks.push.apply(tracks, clonedTracks); + }); + } + function performUriReplacement(uri, stableId, perOptionKey, uriReplacement) { + var host = uriReplacement.HOST, + params = uriReplacement.PARAMS, + perOptionUris = uriReplacement[perOptionKey]; + var perVariantUri; + if (stableId) { + perVariantUri = perOptionUris == null ? void 0 : perOptionUris[stableId]; + if (perVariantUri) { + uri = perVariantUri; + } + } + var url = new self.URL(uri); + if (host && !perVariantUri) { + url.host = host; + } + if (params) { + Object.keys(params).sort().forEach(function (key) { + if (key) { + url.searchParams.set(key, params[key]); + } + }); + } + return url.href; + } + + var AGE_HEADER_LINE_REGEX = /^age:\s*[\d.]+\s*$/im; + var XhrLoader = /*#__PURE__*/function () { + function XhrLoader(config) { + this.xhrSetup = void 0; + this.requestTimeout = void 0; + this.retryTimeout = void 0; + this.retryDelay = void 0; + this.config = null; + this.callbacks = null; + this.context = null; + this.loader = null; + this.stats = void 0; + this.xhrSetup = config ? config.xhrSetup || null : null; + this.stats = new LoadStats(); + this.retryDelay = 0; + } + var _proto = XhrLoader.prototype; + _proto.destroy = function destroy() { + this.callbacks = null; + this.abortInternal(); + this.loader = null; + this.config = null; + this.context = null; + this.xhrSetup = null; + }; + _proto.abortInternal = function abortInternal() { + var loader = this.loader; + self.clearTimeout(this.requestTimeout); + self.clearTimeout(this.retryTimeout); + if (loader) { + loader.onreadystatechange = null; + loader.onprogress = null; + if (loader.readyState !== 4) { + this.stats.aborted = true; + loader.abort(); + } + } + }; + _proto.abort = function abort() { + var _this$callbacks; + this.abortInternal(); + if ((_this$callbacks = this.callbacks) != null && _this$callbacks.onAbort) { + this.callbacks.onAbort(this.stats, this.context, this.loader); + } + }; + _proto.load = function load(context, config, callbacks) { + if (this.stats.loading.start) { + throw new Error('Loader can only be used once.'); + } + this.stats.loading.start = self.performance.now(); + this.context = context; + this.config = config; + this.callbacks = callbacks; + this.loadInternal(); + }; + _proto.loadInternal = function loadInternal() { + var _this = this; + var config = this.config, + context = this.context; + if (!config || !context) { + return; + } + var xhr = this.loader = new self.XMLHttpRequest(); + var stats = this.stats; + stats.loading.first = 0; + stats.loaded = 0; + stats.aborted = false; + var xhrSetup = this.xhrSetup; + if (xhrSetup) { + Promise.resolve().then(function () { + if (_this.loader !== xhr || _this.stats.aborted) return; + return xhrSetup(xhr, context.url); + }).catch(function (error) { + if (_this.loader !== xhr || _this.stats.aborted) return; + xhr.open('GET', context.url, true); + return xhrSetup(xhr, context.url); + }).then(function () { + if (_this.loader !== xhr || _this.stats.aborted) return; + _this.openAndSendXhr(xhr, context, config); + }).catch(function (error) { + // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS + _this.callbacks.onError({ + code: xhr.status, + text: error.message + }, context, xhr, stats); + return; + }); + } else { + this.openAndSendXhr(xhr, context, config); + } + }; + _proto.openAndSendXhr = function openAndSendXhr(xhr, context, config) { + if (!xhr.readyState) { + xhr.open('GET', context.url, true); + } + var headers = context.headers; + var _config$loadPolicy = config.loadPolicy, + maxTimeToFirstByteMs = _config$loadPolicy.maxTimeToFirstByteMs, + maxLoadTimeMs = _config$loadPolicy.maxLoadTimeMs; + if (headers) { + for (var header in headers) { + xhr.setRequestHeader(header, headers[header]); + } + } + if (context.rangeEnd) { + xhr.setRequestHeader('Range', 'bytes=' + context.rangeStart + '-' + (context.rangeEnd - 1)); + } + xhr.onreadystatechange = this.readystatechange.bind(this); + xhr.onprogress = this.loadprogress.bind(this); + xhr.responseType = context.responseType; + // setup timeout before we perform request + self.clearTimeout(this.requestTimeout); + config.timeout = maxTimeToFirstByteMs && isFiniteNumber(maxTimeToFirstByteMs) ? maxTimeToFirstByteMs : maxLoadTimeMs; + this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.timeout); + xhr.send(); + }; + _proto.readystatechange = function readystatechange() { + var context = this.context, + xhr = this.loader, + stats = this.stats; + if (!context || !xhr) { + return; + } + var readyState = xhr.readyState; + var config = this.config; + + // don't proceed if xhr has been aborted + if (stats.aborted) { + return; + } + + // >= HEADERS_RECEIVED + if (readyState >= 2) { + if (stats.loading.first === 0) { + stats.loading.first = Math.max(self.performance.now(), stats.loading.start); + // readyState >= 2 AND readyState !==4 (readyState = HEADERS_RECEIVED || LOADING) rearm timeout as xhr not finished yet + if (config.timeout !== config.loadPolicy.maxLoadTimeMs) { + self.clearTimeout(this.requestTimeout); + config.timeout = config.loadPolicy.maxLoadTimeMs; + this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.loadPolicy.maxLoadTimeMs - (stats.loading.first - stats.loading.start)); + } + } + if (readyState === 4) { + self.clearTimeout(this.requestTimeout); + xhr.onreadystatechange = null; + xhr.onprogress = null; + var _status = xhr.status; + // http status between 200 to 299 are all successful + var useResponse = xhr.responseType !== 'text'; + if (_status >= 200 && _status < 300 && (useResponse && xhr.response || xhr.responseText !== null)) { + stats.loading.end = Math.max(self.performance.now(), stats.loading.first); + var data = useResponse ? xhr.response : xhr.responseText; + var len = xhr.responseType === 'arraybuffer' ? data.byteLength : data.length; + stats.loaded = stats.total = len; + stats.bwEstimate = stats.total * 8000 / (stats.loading.end - stats.loading.first); + if (!this.callbacks) { + return; + } + var onProgress = this.callbacks.onProgress; + if (onProgress) { + onProgress(stats, context, data, xhr); + } + if (!this.callbacks) { + return; + } + var response = { + url: xhr.responseURL, + data: data, + code: _status + }; + this.callbacks.onSuccess(response, stats, context, xhr); + } else { + var retryConfig = config.loadPolicy.errorRetry; + var retryCount = stats.retry; + // if max nb of retries reached or if http status between 400 and 499 (such error cannot be recovered, retrying is useless), return error + var _response = { + url: context.url, + data: undefined, + code: _status + }; + if (shouldRetry(retryConfig, retryCount, false, _response)) { + this.retry(retryConfig); + } else { + logger.error(_status + " while loading " + context.url); + this.callbacks.onError({ + code: _status, + text: xhr.statusText + }, context, xhr, stats); + } + } + } + } + }; + _proto.loadtimeout = function loadtimeout() { + if (!this.config) return; + var retryConfig = this.config.loadPolicy.timeoutRetry; + var retryCount = this.stats.retry; + if (shouldRetry(retryConfig, retryCount, true)) { + this.retry(retryConfig); + } else { + var _this$context; + logger.warn("timeout while loading " + ((_this$context = this.context) == null ? void 0 : _this$context.url)); + var callbacks = this.callbacks; + if (callbacks) { + this.abortInternal(); + callbacks.onTimeout(this.stats, this.context, this.loader); + } + } + }; + _proto.retry = function retry(retryConfig) { + var context = this.context, + stats = this.stats; + this.retryDelay = getRetryDelay(retryConfig, stats.retry); + stats.retry++; + logger.warn((status ? 'HTTP Status ' + status : 'Timeout') + " while loading " + (context == null ? void 0 : context.url) + ", retrying " + stats.retry + "/" + retryConfig.maxNumRetry + " in " + this.retryDelay + "ms"); + // abort and reset internal state + this.abortInternal(); + this.loader = null; + // schedule retry + self.clearTimeout(this.retryTimeout); + this.retryTimeout = self.setTimeout(this.loadInternal.bind(this), this.retryDelay); + }; + _proto.loadprogress = function loadprogress(event) { + var stats = this.stats; + stats.loaded = event.loaded; + if (event.lengthComputable) { + stats.total = event.total; + } + }; + _proto.getCacheAge = function getCacheAge() { + var result = null; + if (this.loader && AGE_HEADER_LINE_REGEX.test(this.loader.getAllResponseHeaders())) { + var ageHeader = this.loader.getResponseHeader('age'); + result = ageHeader ? parseFloat(ageHeader) : null; + } + return result; + }; + _proto.getResponseHeader = function getResponseHeader(name) { + if (this.loader && new RegExp("^" + name + ":\\s*[\\d.]+\\s*$", 'im').test(this.loader.getAllResponseHeaders())) { + return this.loader.getResponseHeader(name); + } + return null; + }; + return XhrLoader; + }(); + + function fetchSupported() { + if ( + // @ts-ignore + self.fetch && self.AbortController && self.ReadableStream && self.Request) { + try { + new self.ReadableStream({}); // eslint-disable-line no-new + return true; + } catch (e) { + /* noop */ + } + } + return false; + } + var BYTERANGE = /(\d+)-(\d+)\/(\d+)/; + var FetchLoader = /*#__PURE__*/function () { + function FetchLoader(config /* HlsConfig */) { + this.fetchSetup = void 0; + this.requestTimeout = void 0; + this.request = null; + this.response = null; + this.controller = void 0; + this.context = null; + this.config = null; + this.callbacks = null; + this.stats = void 0; + this.loader = null; + this.fetchSetup = config.fetchSetup || getRequest; + this.controller = new self.AbortController(); + this.stats = new LoadStats(); + } + var _proto = FetchLoader.prototype; + _proto.destroy = function destroy() { + this.loader = this.callbacks = this.context = this.config = this.request = null; + this.abortInternal(); + this.response = null; + // @ts-ignore + this.fetchSetup = this.controller = this.stats = null; + }; + _proto.abortInternal = function abortInternal() { + if (this.controller && !this.stats.loading.end) { + this.stats.aborted = true; + this.controller.abort(); + } + }; + _proto.abort = function abort() { + var _this$callbacks; + this.abortInternal(); + if ((_this$callbacks = this.callbacks) != null && _this$callbacks.onAbort) { + this.callbacks.onAbort(this.stats, this.context, this.response); + } + }; + _proto.load = function load(context, config, callbacks) { + var _this = this; + var stats = this.stats; + if (stats.loading.start) { + throw new Error('Loader can only be used once.'); + } + stats.loading.start = self.performance.now(); + var initParams = getRequestParameters(context, this.controller.signal); + var onProgress = callbacks.onProgress; + var isArrayBuffer = context.responseType === 'arraybuffer'; + var LENGTH = isArrayBuffer ? 'byteLength' : 'length'; + var _config$loadPolicy = config.loadPolicy, + maxTimeToFirstByteMs = _config$loadPolicy.maxTimeToFirstByteMs, + maxLoadTimeMs = _config$loadPolicy.maxLoadTimeMs; + this.context = context; + this.config = config; + this.callbacks = callbacks; + this.request = this.fetchSetup(context, initParams); + self.clearTimeout(this.requestTimeout); + config.timeout = maxTimeToFirstByteMs && isFiniteNumber(maxTimeToFirstByteMs) ? maxTimeToFirstByteMs : maxLoadTimeMs; + this.requestTimeout = self.setTimeout(function () { + _this.abortInternal(); + callbacks.onTimeout(stats, context, _this.response); + }, config.timeout); + self.fetch(this.request).then(function (response) { + _this.response = _this.loader = response; + var first = Math.max(self.performance.now(), stats.loading.start); + self.clearTimeout(_this.requestTimeout); + config.timeout = maxLoadTimeMs; + _this.requestTimeout = self.setTimeout(function () { + _this.abortInternal(); + callbacks.onTimeout(stats, context, _this.response); + }, maxLoadTimeMs - (first - stats.loading.start)); + if (!response.ok) { + var status = response.status, + statusText = response.statusText; + throw new FetchError(statusText || 'fetch, bad network response', status, response); + } + stats.loading.first = first; + stats.total = getContentLength(response.headers) || stats.total; + if (onProgress && isFiniteNumber(config.highWaterMark)) { + return _this.loadProgressively(response, stats, context, config.highWaterMark, onProgress); + } + if (isArrayBuffer) { + return response.arrayBuffer(); + } + if (context.responseType === 'json') { + return response.json(); + } + return response.text(); + }).then(function (responseData) { + var response = _this.response; + if (!response) { + throw new Error('loader destroyed'); + } + self.clearTimeout(_this.requestTimeout); + stats.loading.end = Math.max(self.performance.now(), stats.loading.first); + var total = responseData[LENGTH]; + if (total) { + stats.loaded = stats.total = total; + } + var loaderResponse = { + url: response.url, + data: responseData, + code: response.status + }; + if (onProgress && !isFiniteNumber(config.highWaterMark)) { + onProgress(stats, context, responseData, response); + } + callbacks.onSuccess(loaderResponse, stats, context, response); + }).catch(function (error) { + self.clearTimeout(_this.requestTimeout); + if (stats.aborted) { + return; + } + // CORS errors result in an undefined code. Set it to 0 here to align with XHR's behavior + // when destroying, 'error' itself can be undefined + var code = !error ? 0 : error.code || 0; + var text = !error ? null : error.message; + callbacks.onError({ + code: code, + text: text + }, context, error ? error.details : null, stats); + }); + }; + _proto.getCacheAge = function getCacheAge() { + var result = null; + if (this.response) { + var ageHeader = this.response.headers.get('age'); + result = ageHeader ? parseFloat(ageHeader) : null; + } + return result; + }; + _proto.getResponseHeader = function getResponseHeader(name) { + return this.response ? this.response.headers.get(name) : null; + }; + _proto.loadProgressively = function loadProgressively(response, stats, context, highWaterMark, onProgress) { + if (highWaterMark === void 0) { + highWaterMark = 0; + } + var chunkCache = new ChunkCache(); + var reader = response.body.getReader(); + var _pump = function pump() { + return reader.read().then(function (data) { + if (data.done) { + if (chunkCache.dataLength) { + onProgress(stats, context, chunkCache.flush(), response); + } + return Promise.resolve(new ArrayBuffer(0)); + } + var chunk = data.value; + var len = chunk.length; + stats.loaded += len; + if (len < highWaterMark || chunkCache.dataLength) { + // The current chunk is too small to to be emitted or the cache already has data + // Push it to the cache + chunkCache.push(chunk); + if (chunkCache.dataLength >= highWaterMark) { + // flush in order to join the typed arrays + onProgress(stats, context, chunkCache.flush(), response); + } + } else { + // If there's nothing cached already, and the chache is large enough + // just emit the progress event + onProgress(stats, context, chunk, response); + } + return _pump(); + }).catch(function () { + /* aborted */ + return Promise.reject(); + }); + }; + return _pump(); + }; + return FetchLoader; + }(); + function getRequestParameters(context, signal) { + var initParams = { + method: 'GET', + mode: 'cors', + credentials: 'same-origin', + signal: signal, + headers: new self.Headers(_extends({}, context.headers)) + }; + if (context.rangeEnd) { + initParams.headers.set('Range', 'bytes=' + context.rangeStart + '-' + String(context.rangeEnd - 1)); + } + return initParams; + } + function getByteRangeLength(byteRangeHeader) { + var result = BYTERANGE.exec(byteRangeHeader); + if (result) { + return parseInt(result[2]) - parseInt(result[1]) + 1; + } + } + function getContentLength(headers) { + var contentRange = headers.get('Content-Range'); + if (contentRange) { + var byteRangeLength = getByteRangeLength(contentRange); + if (isFiniteNumber(byteRangeLength)) { + return byteRangeLength; + } + } + var contentLength = headers.get('Content-Length'); + if (contentLength) { + return parseInt(contentLength); + } + } + function getRequest(context, initParams) { + return new self.Request(context.url, initParams); + } + var FetchError = /*#__PURE__*/function (_Error) { + function FetchError(message, code, details) { + var _this2; + _this2 = _Error.call(this, message) || this; + _this2.code = void 0; + _this2.details = void 0; + _this2.code = code; + _this2.details = details; + return _this2; + } + _inheritsLoose(FetchError, _Error); + return FetchError; + }(/*#__PURE__*/_wrapNativeSuper(Error)); + + var WHITESPACE_CHAR = /\s/; + var Cues = { + newCue: function newCue(track, startTime, endTime, captionScreen) { + var result = []; + var row; + // the type data states this is VTTCue, but it can potentially be a TextTrackCue on old browsers + var cue; + var indenting; + var indent; + var text; + var Cue = self.VTTCue || self.TextTrackCue; + for (var r = 0; r < captionScreen.rows.length; r++) { + row = captionScreen.rows[r]; + indenting = true; + indent = 0; + text = ''; + if (!row.isEmpty()) { + var _track$cues; + for (var c = 0; c < row.chars.length; c++) { + if (WHITESPACE_CHAR.test(row.chars[c].uchar) && indenting) { + indent++; + } else { + text += row.chars[c].uchar; + indenting = false; + } + } + // To be used for cleaning-up orphaned roll-up captions + row.cueStartTime = startTime; + + // Give a slight bump to the endTime if it's equal to startTime to avoid a SyntaxError in IE + if (startTime === endTime) { + endTime += 0.0001; + } + if (indent >= 16) { + indent--; + } else { + indent++; + } + var cueText = fixLineBreaks(text.trim()); + var id = generateCueId(startTime, endTime, cueText); + + // If this cue already exists in the track do not push it + if (!(track != null && (_track$cues = track.cues) != null && _track$cues.getCueById(id))) { + cue = new Cue(startTime, endTime, cueText); + cue.id = id; + cue.line = r + 1; + cue.align = 'left'; + // Clamp the position between 10 and 80 percent (CEA-608 PAC indent code) + // https://dvcs.w3.org/hg/text-tracks/raw-file/default/608toVTT/608toVTT.html#positioning-in-cea-608 + // Firefox throws an exception and captions break with out of bounds 0-100 values + cue.position = 10 + Math.min(80, Math.floor(indent * 8 / 32) * 10); + result.push(cue); + } + } + } + if (track && result.length) { + // Sort bottom cues in reverse order so that they render in line order when overlapping in Chrome + result.sort(function (cueA, cueB) { + if (cueA.line === 'auto' || cueB.line === 'auto') { + return 0; + } + if (cueA.line > 8 && cueB.line > 8) { + return cueB.line - cueA.line; + } + return cueA.line - cueB.line; + }); + result.forEach(function (cue) { + return addCueToTrack(track, cue); + }); + } + return result; + } + }; + + /** + * @deprecated use fragLoadPolicy.default + */ + + /** + * @deprecated use manifestLoadPolicy.default and playlistLoadPolicy.default + */ + + var defaultLoadPolicy = { + maxTimeToFirstByteMs: 8000, + maxLoadTimeMs: 20000, + timeoutRetry: null, + errorRetry: null + }; + + /** + * @ignore + * If possible, keep hlsDefaultConfig shallow + * It is cloned whenever a new Hls instance is created, by keeping the config + * shallow the properties are cloned, and we don't end up manipulating the default + */ + var hlsDefaultConfig = _objectSpread2(_objectSpread2({ + autoStartLoad: true, + // used by stream-controller + startPosition: -1, + // used by stream-controller + defaultAudioCodec: undefined, + // used by stream-controller + debug: false, + // used by logger + capLevelOnFPSDrop: false, + // used by fps-controller + capLevelToPlayerSize: false, + // used by cap-level-controller + ignoreDevicePixelRatio: false, + // used by cap-level-controller + preferManagedMediaSource: true, + initialLiveManifestSize: 1, + // used by stream-controller + maxBufferLength: 30, + // used by stream-controller + backBufferLength: Infinity, + // used by buffer-controller + frontBufferFlushThreshold: Infinity, + maxBufferSize: 60 * 1000 * 1000, + // used by stream-controller + maxBufferHole: 0.1, + // used by stream-controller + highBufferWatchdogPeriod: 2, + // used by stream-controller + nudgeOffset: 0.1, + // used by stream-controller + nudgeMaxRetry: 3, + // used by stream-controller + maxFragLookUpTolerance: 0.25, + // used by stream-controller + liveSyncDurationCount: 3, + // used by latency-controller + liveSyncOnStallIncrease: 1, + // used by latency-controller + liveMaxLatencyDurationCount: Infinity, + // used by latency-controller + liveSyncDuration: undefined, + // used by latency-controller + liveMaxLatencyDuration: undefined, + // used by latency-controller + maxLiveSyncPlaybackRate: 1, + // used by latency-controller + liveDurationInfinity: false, + // used by buffer-controller + /** + * @deprecated use backBufferLength + */ + liveBackBufferLength: null, + // used by buffer-controller + maxMaxBufferLength: 600, + // used by stream-controller + enableWorker: true, + // used by transmuxer + workerPath: null, + // used by transmuxer + enableSoftwareAES: true, + // used by decrypter + startLevel: undefined, + // used by level-controller + startFragPrefetch: false, + // used by stream-controller + fpsDroppedMonitoringPeriod: 5000, + // used by fps-controller + fpsDroppedMonitoringThreshold: 0.2, + // used by fps-controller + appendErrorMaxRetry: 3, + // used by buffer-controller + loader: XhrLoader, + // loader: FetchLoader, + fLoader: undefined, + // used by fragment-loader + pLoader: undefined, + // used by playlist-loader + xhrSetup: undefined, + // used by xhr-loader + licenseXhrSetup: undefined, + // used by eme-controller + licenseResponseCallback: undefined, + // used by eme-controller + abrController: AbrController, + bufferController: BufferController, + capLevelController: CapLevelController, + errorController: ErrorController, + fpsController: FPSController, + stretchShortVideoTrack: false, + // used by mp4-remuxer + maxAudioFramesDrift: 1, + // used by mp4-remuxer + forceKeyFrameOnDiscontinuity: true, + // used by ts-demuxer + abrEwmaFastLive: 3, + // used by abr-controller + abrEwmaSlowLive: 9, + // used by abr-controller + abrEwmaFastVoD: 3, + // used by abr-controller + abrEwmaSlowVoD: 9, + // used by abr-controller + abrEwmaDefaultEstimate: 5e5, + // 500 kbps // used by abr-controller + abrEwmaDefaultEstimateMax: 5e6, + // 5 mbps + abrBandWidthFactor: 0.95, + // used by abr-controller + abrBandWidthUpFactor: 0.7, + // used by abr-controller + abrMaxWithRealBitrate: false, + // used by abr-controller + maxStarvationDelay: 4, + // used by abr-controller + maxLoadingDelay: 4, + // used by abr-controller + minAutoBitrate: 0, + // used by hls + emeEnabled: false, + // used by eme-controller + widevineLicenseUrl: undefined, + // used by eme-controller + drmSystems: {}, + // used by eme-controller + drmSystemOptions: {}, + // used by eme-controller + requestMediaKeySystemAccessFunc: requestMediaKeySystemAccess , + // used by eme-controller + testBandwidth: true, + progressive: false, + lowLatencyMode: true, + cmcd: undefined, + enableDateRangeMetadataCues: true, + enableEmsgMetadataCues: true, + enableID3MetadataCues: true, + useMediaCapabilities: true, + certLoadPolicy: { + default: defaultLoadPolicy + }, + keyLoadPolicy: { + default: { + maxTimeToFirstByteMs: 8000, + maxLoadTimeMs: 20000, + timeoutRetry: { + maxNumRetry: 1, + retryDelayMs: 1000, + maxRetryDelayMs: 20000, + backoff: 'linear' + }, + errorRetry: { + maxNumRetry: 8, + retryDelayMs: 1000, + maxRetryDelayMs: 20000, + backoff: 'linear' + } + } + }, + manifestLoadPolicy: { + default: { + maxTimeToFirstByteMs: Infinity, + maxLoadTimeMs: 20000, + timeoutRetry: { + maxNumRetry: 2, + retryDelayMs: 0, + maxRetryDelayMs: 0 + }, + errorRetry: { + maxNumRetry: 1, + retryDelayMs: 1000, + maxRetryDelayMs: 8000 + } + } + }, + playlistLoadPolicy: { + default: { + maxTimeToFirstByteMs: 10000, + maxLoadTimeMs: 20000, + timeoutRetry: { + maxNumRetry: 2, + retryDelayMs: 0, + maxRetryDelayMs: 0 + }, + errorRetry: { + maxNumRetry: 2, + retryDelayMs: 1000, + maxRetryDelayMs: 8000 + } + } + }, + fragLoadPolicy: { + default: { + maxTimeToFirstByteMs: 10000, + maxLoadTimeMs: 120000, + timeoutRetry: { + maxNumRetry: 4, + retryDelayMs: 0, + maxRetryDelayMs: 0 + }, + errorRetry: { + maxNumRetry: 6, + retryDelayMs: 1000, + maxRetryDelayMs: 8000 + } + } + }, + steeringManifestLoadPolicy: { + default: { + maxTimeToFirstByteMs: 10000, + maxLoadTimeMs: 20000, + timeoutRetry: { + maxNumRetry: 2, + retryDelayMs: 0, + maxRetryDelayMs: 0 + }, + errorRetry: { + maxNumRetry: 1, + retryDelayMs: 1000, + maxRetryDelayMs: 8000 + } + } + }, + // These default settings are deprecated in favor of the above policies + // and are maintained for backwards compatibility + manifestLoadingTimeOut: 10000, + manifestLoadingMaxRetry: 1, + manifestLoadingRetryDelay: 1000, + manifestLoadingMaxRetryTimeout: 64000, + levelLoadingTimeOut: 10000, + levelLoadingMaxRetry: 4, + levelLoadingRetryDelay: 1000, + levelLoadingMaxRetryTimeout: 64000, + fragLoadingTimeOut: 20000, + fragLoadingMaxRetry: 6, + fragLoadingRetryDelay: 1000, + fragLoadingMaxRetryTimeout: 64000 + }, timelineConfig()), {}, { + subtitleStreamController: SubtitleStreamController , + subtitleTrackController: SubtitleTrackController , + timelineController: TimelineController , + audioStreamController: AudioStreamController , + audioTrackController: AudioTrackController , + emeController: EMEController , + cmcdController: CMCDController , + contentSteeringController: ContentSteeringController + }); + function timelineConfig() { + return { + cueHandler: Cues, + // used by timeline-controller + enableWebVTT: true, + // used by timeline-controller + enableIMSC1: true, + // used by timeline-controller + enableCEA708Captions: true, + // used by timeline-controller + captionsTextTrack1Label: 'English', + // used by timeline-controller + captionsTextTrack1LanguageCode: 'en', + // used by timeline-controller + captionsTextTrack2Label: 'Spanish', + // used by timeline-controller + captionsTextTrack2LanguageCode: 'es', + // used by timeline-controller + captionsTextTrack3Label: 'Unknown CC', + // used by timeline-controller + captionsTextTrack3LanguageCode: '', + // used by timeline-controller + captionsTextTrack4Label: 'Unknown CC', + // used by timeline-controller + captionsTextTrack4LanguageCode: '', + // used by timeline-controller + renderTextTracksNatively: true + }; + } + + /** + * @ignore + */ + function mergeConfig(defaultConfig, userConfig, logger) { + if ((userConfig.liveSyncDurationCount || userConfig.liveMaxLatencyDurationCount) && (userConfig.liveSyncDuration || userConfig.liveMaxLatencyDuration)) { + throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration"); + } + if (userConfig.liveMaxLatencyDurationCount !== undefined && (userConfig.liveSyncDurationCount === undefined || userConfig.liveMaxLatencyDurationCount <= userConfig.liveSyncDurationCount)) { + throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"'); + } + if (userConfig.liveMaxLatencyDuration !== undefined && (userConfig.liveSyncDuration === undefined || userConfig.liveMaxLatencyDuration <= userConfig.liveSyncDuration)) { + throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"'); + } + var defaultsCopy = deepCpy(defaultConfig); + + // Backwards compatibility with deprecated config values + var deprecatedSettingTypes = ['manifest', 'level', 'frag']; + var deprecatedSettings = ['TimeOut', 'MaxRetry', 'RetryDelay', 'MaxRetryTimeout']; + deprecatedSettingTypes.forEach(function (type) { + var policyName = (type === 'level' ? 'playlist' : type) + "LoadPolicy"; + var policyNotSet = userConfig[policyName] === undefined; + var report = []; + deprecatedSettings.forEach(function (setting) { + var deprecatedSetting = type + "Loading" + setting; + var value = userConfig[deprecatedSetting]; + if (value !== undefined && policyNotSet) { + report.push(deprecatedSetting); + var settings = defaultsCopy[policyName].default; + userConfig[policyName] = { + default: settings + }; + switch (setting) { + case 'TimeOut': + settings.maxLoadTimeMs = value; + settings.maxTimeToFirstByteMs = value; + break; + case 'MaxRetry': + settings.errorRetry.maxNumRetry = value; + settings.timeoutRetry.maxNumRetry = value; + break; + case 'RetryDelay': + settings.errorRetry.retryDelayMs = value; + settings.timeoutRetry.retryDelayMs = value; + break; + case 'MaxRetryTimeout': + settings.errorRetry.maxRetryDelayMs = value; + settings.timeoutRetry.maxRetryDelayMs = value; + break; + } + } + }); + if (report.length) { + logger.warn("hls.js config: \"" + report.join('", "') + "\" setting(s) are deprecated, use \"" + policyName + "\": " + JSON.stringify(userConfig[policyName])); + } + }); + return _objectSpread2(_objectSpread2({}, defaultsCopy), userConfig); + } + function deepCpy(obj) { + if (obj && typeof obj === 'object') { + if (Array.isArray(obj)) { + return obj.map(deepCpy); + } + return Object.keys(obj).reduce(function (result, key) { + result[key] = deepCpy(obj[key]); + return result; + }, {}); + } + return obj; + } + + /** + * @ignore + */ + function enableStreamingMode(config, logger) { + var currentLoader = config.loader; + if (currentLoader !== FetchLoader && currentLoader !== XhrLoader) { + // If a developer has configured their own loader, respect that choice + logger.log('[config]: Custom loader detected, cannot enable progressive streaming'); + config.progressive = false; + } else { + var canStreamProgressively = fetchSupported(); + if (canStreamProgressively) { + config.loader = FetchLoader; + config.progressive = true; + config.enableSoftwareAES = true; + logger.log('[config]: Progressive streaming enabled, using FetchLoader'); + } + } + } + + var LevelController = /*#__PURE__*/function (_BasePlaylistControll) { + function LevelController(hls, contentSteeringController) { + var _this; + _this = _BasePlaylistControll.call(this, hls, 'level-controller') || this; + _this._levels = []; + _this._firstLevel = -1; + _this._maxAutoLevel = -1; + _this._startLevel = void 0; + _this.currentLevel = null; + _this.currentLevelIndex = -1; + _this.manualLevelIndex = -1; + _this.steering = void 0; + _this.onParsedComplete = void 0; + _this.steering = contentSteeringController; + _this._registerListeners(); + return _this; + } + _inheritsLoose(LevelController, _BasePlaylistControll); + var _proto = LevelController.prototype; + _proto._registerListeners = function _registerListeners() { + var hls = this.hls; + hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this); + hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this); + hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this); + hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this); + hls.on(Events.ERROR, this.onError, this); + }; + _proto._unregisterListeners = function _unregisterListeners() { + var hls = this.hls; + hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this); + hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this); + hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this); + hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this); + hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this); + hls.off(Events.ERROR, this.onError, this); + }; + _proto.destroy = function destroy() { + this._unregisterListeners(); + this.steering = null; + this.resetLevels(); + _BasePlaylistControll.prototype.destroy.call(this); + }; + _proto.stopLoad = function stopLoad() { + var levels = this._levels; + + // clean up live level details to force reload them, and reset load errors + levels.forEach(function (level) { + level.loadError = 0; + level.fragmentError = 0; + }); + _BasePlaylistControll.prototype.stopLoad.call(this); + }; + _proto.resetLevels = function resetLevels() { + this._startLevel = undefined; + this.manualLevelIndex = -1; + this.currentLevelIndex = -1; + this.currentLevel = null; + this._levels = []; + this._maxAutoLevel = -1; + }; + _proto.onManifestLoading = function onManifestLoading(event, data) { + this.resetLevels(); + }; + _proto.onManifestLoaded = function onManifestLoaded(event, data) { + var preferManagedMediaSource = this.hls.config.preferManagedMediaSource; + var levels = []; + var redundantSet = {}; + var generatePathwaySet = {}; + var resolutionFound = false; + var videoCodecFound = false; + var audioCodecFound = false; + data.levels.forEach(function (levelParsed) { + var _videoCodec; + var attributes = levelParsed.attrs; + var audioCodec = levelParsed.audioCodec, + videoCodec = levelParsed.videoCodec; + if (audioCodec) { + // Returns empty and set to undefined for 'mp4a.40.34' with fallback to 'audio/mpeg' SourceBuffer + levelParsed.audioCodec = audioCodec = getCodecCompatibleName(audioCodec, preferManagedMediaSource) || undefined; + } + if (((_videoCodec = videoCodec) == null ? void 0 : _videoCodec.indexOf('avc1')) === 0) { + videoCodec = levelParsed.videoCodec = convertAVC1ToAVCOTI(videoCodec); + } + + // only keep levels with supported audio/video codecs + var width = levelParsed.width, + height = levelParsed.height, + unknownCodecs = levelParsed.unknownCodecs; + resolutionFound || (resolutionFound = !!(width && height)); + videoCodecFound || (videoCodecFound = !!videoCodec); + audioCodecFound || (audioCodecFound = !!audioCodec); + if (unknownCodecs != null && unknownCodecs.length || audioCodec && !areCodecsMediaSourceSupported(audioCodec, 'audio', preferManagedMediaSource) || videoCodec && !areCodecsMediaSourceSupported(videoCodec, 'video', preferManagedMediaSource)) { + return; + } + var CODECS = attributes.CODECS, + FRAMERATE = attributes['FRAME-RATE'], + HDCP = attributes['HDCP-LEVEL'], + PATHWAY = attributes['PATHWAY-ID'], + RESOLUTION = attributes.RESOLUTION, + VIDEO_RANGE = attributes['VIDEO-RANGE']; + var contentSteeringPrefix = (PATHWAY || '.') + "-"; + var levelKey = "" + contentSteeringPrefix + levelParsed.bitrate + "-" + RESOLUTION + "-" + FRAMERATE + "-" + CODECS + "-" + VIDEO_RANGE + "-" + HDCP; + if (!redundantSet[levelKey]) { + var level = new Level(levelParsed); + redundantSet[levelKey] = level; + generatePathwaySet[levelKey] = 1; + levels.push(level); + } else if (redundantSet[levelKey].uri !== levelParsed.url && !levelParsed.attrs['PATHWAY-ID']) { + // Assign Pathway IDs to Redundant Streams (default Pathways is ".". Redundant Streams "..", "...", and so on.) + // Content Steering controller to handles Pathway fallback on error + var pathwayCount = generatePathwaySet[levelKey] += 1; + levelParsed.attrs['PATHWAY-ID'] = new Array(pathwayCount + 1).join('.'); + var _level = new Level(levelParsed); + redundantSet[levelKey] = _level; + levels.push(_level); + } else { + redundantSet[levelKey].addGroupId('audio', attributes.AUDIO); + redundantSet[levelKey].addGroupId('text', attributes.SUBTITLES); + } + }); + this.filterAndSortMediaOptions(levels, data, resolutionFound, videoCodecFound, audioCodecFound); + }; + _proto.filterAndSortMediaOptions = function filterAndSortMediaOptions(filteredLevels, data, resolutionFound, videoCodecFound, audioCodecFound) { + var _this2 = this; + var audioTracks = []; + var subtitleTracks = []; + var levels = filteredLevels; + + // remove audio-only and invalid video-range levels if we also have levels with video codecs or RESOLUTION signalled + if ((resolutionFound || videoCodecFound) && audioCodecFound) { + levels = levels.filter(function (_ref) { + var videoCodec = _ref.videoCodec, + videoRange = _ref.videoRange, + width = _ref.width, + height = _ref.height; + return (!!videoCodec || !!(width && height)) && isVideoRange(videoRange); + }); + } + if (levels.length === 0) { + // Dispatch error after MANIFEST_LOADED is done propagating + Promise.resolve().then(function () { + if (_this2.hls) { + if (data.levels.length) { + _this2.warn("One or more CODECS in variant not supported: " + JSON.stringify(data.levels[0].attrs)); + } + var error = new Error('no level with compatible codecs found in manifest'); + _this2.hls.trigger(Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR, + fatal: true, + url: data.url, + error: error, + reason: error.message + }); + } + }); + return; + } + if (data.audioTracks) { + var preferManagedMediaSource = this.hls.config.preferManagedMediaSource; + audioTracks = data.audioTracks.filter(function (track) { + return !track.audioCodec || areCodecsMediaSourceSupported(track.audioCodec, 'audio', preferManagedMediaSource); + }); + // Assign ids after filtering as array indices by group-id + assignTrackIdsByGroup(audioTracks); + } + if (data.subtitles) { + subtitleTracks = data.subtitles; + assignTrackIdsByGroup(subtitleTracks); + } + // start bitrate is the first bitrate of the manifest + var unsortedLevels = levels.slice(0); + // sort levels from lowest to highest + levels.sort(function (a, b) { + if (a.attrs['HDCP-LEVEL'] !== b.attrs['HDCP-LEVEL']) { + return (a.attrs['HDCP-LEVEL'] || '') > (b.attrs['HDCP-LEVEL'] || '') ? 1 : -1; + } + // sort on height before bitrate for cap-level-controller + if (resolutionFound && a.height !== b.height) { + return a.height - b.height; + } + if (a.frameRate !== b.frameRate) { + return a.frameRate - b.frameRate; + } + if (a.videoRange !== b.videoRange) { + return VideoRangeValues.indexOf(a.videoRange) - VideoRangeValues.indexOf(b.videoRange); + } + if (a.videoCodec !== b.videoCodec) { + var valueA = videoCodecPreferenceValue(a.videoCodec); + var valueB = videoCodecPreferenceValue(b.videoCodec); + if (valueA !== valueB) { + return valueB - valueA; + } + } + if (a.uri === b.uri && a.codecSet !== b.codecSet) { + var _valueA = codecsSetSelectionPreferenceValue(a.codecSet); + var _valueB = codecsSetSelectionPreferenceValue(b.codecSet); + if (_valueA !== _valueB) { + return _valueB - _valueA; + } + } + if (a.averageBitrate !== b.averageBitrate) { + return a.averageBitrate - b.averageBitrate; + } + return 0; + }); + var firstLevelInPlaylist = unsortedLevels[0]; + if (this.steering) { + levels = this.steering.filterParsedLevels(levels); + if (levels.length !== unsortedLevels.length) { + for (var i = 0; i < unsortedLevels.length; i++) { + if (unsortedLevels[i].pathwayId === levels[0].pathwayId) { + firstLevelInPlaylist = unsortedLevels[i]; + break; + } + } + } + } + this._levels = levels; + + // find index of first level in sorted levels + for (var _i = 0; _i < levels.length; _i++) { + if (levels[_i] === firstLevelInPlaylist) { + var _this$hls$userConfig; + this._firstLevel = _i; + var firstLevelBitrate = firstLevelInPlaylist.bitrate; + var bandwidthEstimate = this.hls.bandwidthEstimate; + this.log("manifest loaded, " + levels.length + " level(s) found, first bitrate: " + firstLevelBitrate); + // Update default bwe to first variant bitrate as long it has not been configured or set + if (((_this$hls$userConfig = this.hls.userConfig) == null ? void 0 : _this$hls$userConfig.abrEwmaDefaultEstimate) === undefined) { + var startingBwEstimate = Math.min(firstLevelBitrate, this.hls.config.abrEwmaDefaultEstimateMax); + if (startingBwEstimate > bandwidthEstimate && bandwidthEstimate === hlsDefaultConfig.abrEwmaDefaultEstimate) { + this.hls.bandwidthEstimate = startingBwEstimate; + } + } + break; + } + } + + // Audio is only alternate if manifest include a URI along with the audio group tag, + // and this is not an audio-only stream where levels contain audio-only + var audioOnly = audioCodecFound && !videoCodecFound; + var edata = { + levels: levels, + audioTracks: audioTracks, + subtitleTracks: subtitleTracks, + sessionData: data.sessionData, + sessionKeys: data.sessionKeys, + firstLevel: this._firstLevel, + stats: data.stats, + audio: audioCodecFound, + video: videoCodecFound, + altAudio: !audioOnly && audioTracks.some(function (t) { + return !!t.url; + }) + }; + this.hls.trigger(Events.MANIFEST_PARSED, edata); + + // Initiate loading after all controllers have received MANIFEST_PARSED + if (this.hls.config.autoStartLoad || this.hls.forceStartLoad) { + this.hls.startLoad(this.hls.config.startPosition); + } + }; + _proto.onError = function onError(event, data) { + if (data.fatal || !data.context) { + return; + } + if (data.context.type === PlaylistContextType.LEVEL && data.context.level === this.level) { + this.checkRetry(data); + } + } + + // reset errors on the successful load of a fragment + ; + _proto.onFragBuffered = function onFragBuffered(event, _ref2) { + var frag = _ref2.frag; + if (frag !== undefined && frag.type === PlaylistLevelType.MAIN) { + var el = frag.elementaryStreams; + if (!Object.keys(el).some(function (type) { + return !!el[type]; + })) { + return; + } + var level = this._levels[frag.level]; + if (level != null && level.loadError) { + this.log("Resetting level error count of " + level.loadError + " on frag buffered"); + level.loadError = 0; + } + } + }; + _proto.onLevelLoaded = function onLevelLoaded(event, data) { + var _data$deliveryDirecti2; + var level = data.level, + details = data.details; + var curLevel = this._levels[level]; + if (!curLevel) { + var _data$deliveryDirecti; + this.warn("Invalid level index " + level); + if ((_data$deliveryDirecti = data.deliveryDirectives) != null && _data$deliveryDirecti.skip) { + details.deltaUpdateFailed = true; + } + return; + } + + // only process level loaded events matching with expected level + if (level === this.currentLevelIndex) { + // reset level load error counter on successful level loaded only if there is no issues with fragments + if (curLevel.fragmentError === 0) { + curLevel.loadError = 0; + } + // Ignore matching details populated by loading a Media Playlist directly + var previousDetails = curLevel.details; + if (previousDetails === data.details && previousDetails.advanced) { + previousDetails = undefined; + } + this.playlistLoaded(level, data, previousDetails); + } else if ((_data$deliveryDirecti2 = data.deliveryDirectives) != null && _data$deliveryDirecti2.skip) { + // received a delta playlist update that cannot be merged + details.deltaUpdateFailed = true; + } + }; + _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) { + _BasePlaylistControll.prototype.loadPlaylist.call(this); + var currentLevelIndex = this.currentLevelIndex; + var currentLevel = this.currentLevel; + if (currentLevel && this.shouldLoadPlaylist(currentLevel)) { + var url = currentLevel.uri; + if (hlsUrlParameters) { + try { + url = hlsUrlParameters.addDirectives(url); + } catch (error) { + this.warn("Could not construct new URL with HLS Delivery Directives: " + error); + } + } + var pathwayId = currentLevel.attrs['PATHWAY-ID']; + this.log("Loading level index " + currentLevelIndex + ((hlsUrlParameters == null ? void 0 : hlsUrlParameters.msn) !== undefined ? ' at sn ' + hlsUrlParameters.msn + ' part ' + hlsUrlParameters.part : '') + " with" + (pathwayId ? ' Pathway ' + pathwayId : '') + " " + url); + + // console.log('Current audio track group ID:', this.hls.audioTracks[this.hls.audioTrack].groupId); + // console.log('New video quality level audio group id:', levelObject.attrs.AUDIO, level); + this.clearTimer(); + this.hls.trigger(Events.LEVEL_LOADING, { + url: url, + level: currentLevelIndex, + pathwayId: currentLevel.attrs['PATHWAY-ID'], + id: 0, + // Deprecated Level urlId + deliveryDirectives: hlsUrlParameters || null + }); + } + }; + _proto.removeLevel = function removeLevel(levelIndex) { + var _this3 = this, + _this$currentLevel; + var levels = this._levels.filter(function (level, index) { + if (index !== levelIndex) { + return true; + } + if (_this3.steering) { + _this3.steering.removeLevel(level); + } + if (level === _this3.currentLevel) { + _this3.currentLevel = null; + _this3.currentLevelIndex = -1; + if (level.details) { + level.details.fragments.forEach(function (f) { + return f.level = -1; + }); + } + } + return false; + }); + reassignFragmentLevelIndexes(levels); + this._levels = levels; + if (this.currentLevelIndex > -1 && (_this$currentLevel = this.currentLevel) != null && _this$currentLevel.details) { + this.currentLevelIndex = this.currentLevel.details.fragments[0].level; + } + this.hls.trigger(Events.LEVELS_UPDATED, { + levels: levels + }); + }; + _proto.onLevelsUpdated = function onLevelsUpdated(event, _ref3) { + var levels = _ref3.levels; + this._levels = levels; + }; + _proto.checkMaxAutoUpdated = function checkMaxAutoUpdated() { + var _this$hls = this.hls, + autoLevelCapping = _this$hls.autoLevelCapping, + maxAutoLevel = _this$hls.maxAutoLevel, + maxHdcpLevel = _this$hls.maxHdcpLevel; + if (this._maxAutoLevel !== maxAutoLevel) { + this._maxAutoLevel = maxAutoLevel; + this.hls.trigger(Events.MAX_AUTO_LEVEL_UPDATED, { + autoLevelCapping: autoLevelCapping, + levels: this.levels, + maxAutoLevel: maxAutoLevel, + minAutoLevel: this.hls.minAutoLevel, + maxHdcpLevel: maxHdcpLevel + }); + } + }; + return _createClass(LevelController, [{ + key: "levels", + get: function get() { + if (this._levels.length === 0) { + return null; + } + return this._levels; + } + }, { + key: "level", + get: function get() { + return this.currentLevelIndex; + }, + set: function set(newLevel) { + var levels = this._levels; + if (levels.length === 0) { + return; + } + // check if level idx is valid + if (newLevel < 0 || newLevel >= levels.length) { + // invalid level id given, trigger error + var error = new Error('invalid level idx'); + var fatal = newLevel < 0; + this.hls.trigger(Events.ERROR, { + type: ErrorTypes.OTHER_ERROR, + details: ErrorDetails.LEVEL_SWITCH_ERROR, + level: newLevel, + fatal: fatal, + error: error, + reason: error.message + }); + if (fatal) { + return; + } + newLevel = Math.min(newLevel, levels.length - 1); + } + var lastLevelIndex = this.currentLevelIndex; + var lastLevel = this.currentLevel; + var lastPathwayId = lastLevel ? lastLevel.attrs['PATHWAY-ID'] : undefined; + var level = levels[newLevel]; + var pathwayId = level.attrs['PATHWAY-ID']; + this.currentLevelIndex = newLevel; + this.currentLevel = level; + if (lastLevelIndex === newLevel && level.details && lastLevel && lastPathwayId === pathwayId) { + return; + } + this.log("Switching to level " + newLevel + " (" + (level.height ? level.height + 'p ' : '') + (level.videoRange ? level.videoRange + ' ' : '') + (level.codecSet ? level.codecSet + ' ' : '') + "@" + level.bitrate + ")" + (pathwayId ? ' with Pathway ' + pathwayId : '') + " from level " + lastLevelIndex + (lastPathwayId ? ' with Pathway ' + lastPathwayId : '')); + var levelSwitchingData = { + level: newLevel, + attrs: level.attrs, + details: level.details, + bitrate: level.bitrate, + averageBitrate: level.averageBitrate, + maxBitrate: level.maxBitrate, + realBitrate: level.realBitrate, + width: level.width, + height: level.height, + codecSet: level.codecSet, + audioCodec: level.audioCodec, + videoCodec: level.videoCodec, + audioGroups: level.audioGroups, + subtitleGroups: level.subtitleGroups, + loaded: level.loaded, + loadError: level.loadError, + fragmentError: level.fragmentError, + name: level.name, + id: level.id, + uri: level.uri, + url: level.url, + urlId: 0, + audioGroupIds: level.audioGroupIds, + textGroupIds: level.textGroupIds + }; + this.hls.trigger(Events.LEVEL_SWITCHING, levelSwitchingData); + // check if we need to load playlist for this level + var levelDetails = level.details; + if (!levelDetails || levelDetails.live) { + // level not retrieved yet, or live playlist we need to (re)load it + var hlsUrlParameters = this.switchParams(level.uri, lastLevel == null ? void 0 : lastLevel.details, levelDetails); + this.loadPlaylist(hlsUrlParameters); + } + } + }, { + key: "manualLevel", + get: function get() { + return this.manualLevelIndex; + }, + set: function set(newLevel) { + this.manualLevelIndex = newLevel; + if (this._startLevel === undefined) { + this._startLevel = newLevel; + } + if (newLevel !== -1) { + this.level = newLevel; + } + } + }, { + key: "firstLevel", + get: function get() { + return this._firstLevel; + }, + set: function set(newLevel) { + this._firstLevel = newLevel; + } + }, { + key: "startLevel", + get: function get() { + // Setting hls.startLevel (this._startLevel) overrides config.startLevel + if (this._startLevel === undefined) { + var configStartLevel = this.hls.config.startLevel; + if (configStartLevel !== undefined) { + return configStartLevel; + } + return this.hls.firstAutoLevel; + } + return this._startLevel; + }, + set: function set(newLevel) { + this._startLevel = newLevel; + } + }, { + key: "pathwayPriority", + get: function get() { + if (this.steering) { + return this.steering.pathwayPriority; + } + return null; + }, + set: function set(pathwayPriority) { + if (this.steering) { + var pathwaysList = this.steering.pathways(); + var filteredPathwayPriority = pathwayPriority.filter(function (pathwayId) { + return pathwaysList.indexOf(pathwayId) !== -1; + }); + if (pathwayPriority.length < 1) { + this.warn("pathwayPriority " + pathwayPriority + " should contain at least one pathway from list: " + pathwaysList); + return; + } + this.steering.pathwayPriority = filteredPathwayPriority; + } + } + }, { + key: "nextLoadLevel", + get: function get() { + if (this.manualLevelIndex !== -1) { + return this.manualLevelIndex; + } else { + return this.hls.nextAutoLevel; + } + }, + set: function set(nextLevel) { + this.level = nextLevel; + if (this.manualLevelIndex === -1) { + this.hls.nextAutoLevel = nextLevel; + } + } + }]); + }(BasePlaylistController); + function assignTrackIdsByGroup(tracks) { + var groups = {}; + tracks.forEach(function (track) { + var groupId = track.groupId || ''; + track.id = groups[groupId] = groups[groupId] || 0; + groups[groupId]++; + }); + } + + var KeyLoader = /*#__PURE__*/function () { + function KeyLoader(config) { + this.config = void 0; + this.keyUriToKeyInfo = {}; + this.emeController = null; + this.config = config; + } + var _proto = KeyLoader.prototype; + _proto.abort = function abort(type) { + for (var uri in this.keyUriToKeyInfo) { + var loader = this.keyUriToKeyInfo[uri].loader; + if (loader) { + var _loader$context; + if (type && type !== ((_loader$context = loader.context) == null ? void 0 : _loader$context.frag.type)) { + return; + } + loader.abort(); + } + } + }; + _proto.detach = function detach() { + for (var uri in this.keyUriToKeyInfo) { + var keyInfo = this.keyUriToKeyInfo[uri]; + // Remove cached EME keys on detach + if (keyInfo.mediaKeySessionContext || keyInfo.decryptdata.isCommonEncryption) { + delete this.keyUriToKeyInfo[uri]; + } + } + }; + _proto.destroy = function destroy() { + this.detach(); + for (var uri in this.keyUriToKeyInfo) { + var loader = this.keyUriToKeyInfo[uri].loader; + if (loader) { + loader.destroy(); + } + } + this.keyUriToKeyInfo = {}; + }; + _proto.createKeyLoadError = function createKeyLoadError(frag, details, error, networkDetails, response) { + if (details === void 0) { + details = ErrorDetails.KEY_LOAD_ERROR; + } + return new LoadError({ + type: ErrorTypes.NETWORK_ERROR, + details: details, + fatal: false, + frag: frag, + response: response, + error: error, + networkDetails: networkDetails + }); + }; + _proto.loadClear = function loadClear(loadingFrag, encryptedFragments) { + var _this = this; + if (this.emeController && this.config.emeEnabled) { + // access key-system with nearest key on start (loaidng frag is unencrypted) + var sn = loadingFrag.sn, + cc = loadingFrag.cc; + var _loop = function _loop() { + var frag = encryptedFragments[i]; + if (cc <= frag.cc && (sn === 'initSegment' || frag.sn === 'initSegment' || sn < frag.sn)) { + _this.emeController.selectKeySystemFormat(frag).then(function (keySystemFormat) { + frag.setKeyFormat(keySystemFormat); + }); + return 1; // break + } + }; + for (var i = 0; i < encryptedFragments.length; i++) { + if (_loop()) break; + } + } + }; + _proto.load = function load(frag) { + var _this2 = this; + if (!frag.decryptdata && frag.encrypted && this.emeController) { + // Multiple keys, but none selected, resolve in eme-controller + return this.emeController.selectKeySystemFormat(frag).then(function (keySystemFormat) { + return _this2.loadInternal(frag, keySystemFormat); + }); + } + return this.loadInternal(frag); + }; + _proto.loadInternal = function loadInternal(frag, keySystemFormat) { + var _keyInfo, _keyInfo2; + if (keySystemFormat) { + frag.setKeyFormat(keySystemFormat); + } + var decryptdata = frag.decryptdata; + if (!decryptdata) { + var error = new Error(keySystemFormat ? "Expected frag.decryptdata to be defined after setting format " + keySystemFormat : 'Missing decryption data on fragment in onKeyLoading'); + return Promise.reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, error)); + } + var uri = decryptdata.uri; + if (!uri) { + return Promise.reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error("Invalid key URI: \"" + uri + "\""))); + } + var keyInfo = this.keyUriToKeyInfo[uri]; + if ((_keyInfo = keyInfo) != null && _keyInfo.decryptdata.key) { + decryptdata.key = keyInfo.decryptdata.key; + return Promise.resolve({ + frag: frag, + keyInfo: keyInfo + }); + } + // Return key load promise as long as it does not have a mediakey session with an unusable key status + if ((_keyInfo2 = keyInfo) != null && _keyInfo2.keyLoadPromise) { + var _keyInfo$mediaKeySess; + switch ((_keyInfo$mediaKeySess = keyInfo.mediaKeySessionContext) == null ? void 0 : _keyInfo$mediaKeySess.keyStatus) { + case undefined: + case 'status-pending': + case 'usable': + case 'usable-in-future': + return keyInfo.keyLoadPromise.then(function (keyLoadedData) { + // Return the correct fragment with updated decryptdata key and loaded keyInfo + decryptdata.key = keyLoadedData.keyInfo.decryptdata.key; + return { + frag: frag, + keyInfo: keyInfo + }; + }); + } + // If we have a key session and status and it is not pending or usable, continue + // This will go back to the eme-controller for expired keys to get a new keyLoadPromise + } + + // Load the key or return the loading promise + keyInfo = this.keyUriToKeyInfo[uri] = { + decryptdata: decryptdata, + keyLoadPromise: null, + loader: null, + mediaKeySessionContext: null + }; + switch (decryptdata.method) { + case 'ISO-23001-7': + case 'SAMPLE-AES': + case 'SAMPLE-AES-CENC': + case 'SAMPLE-AES-CTR': + if (decryptdata.keyFormat === 'identity') { + // loadKeyHTTP handles http(s) and data URLs + return this.loadKeyHTTP(keyInfo, frag); + } + return this.loadKeyEME(keyInfo, frag); + case 'AES-128': + case 'AES-256': + case 'AES-256-CTR': + return this.loadKeyHTTP(keyInfo, frag); + default: + return Promise.reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error("Key supplied with unsupported METHOD: \"" + decryptdata.method + "\""))); + } + }; + _proto.loadKeyEME = function loadKeyEME(keyInfo, frag) { + var keyLoadedData = { + frag: frag, + keyInfo: keyInfo + }; + if (this.emeController && this.config.emeEnabled) { + var keySessionContextPromise = this.emeController.loadKey(keyLoadedData); + if (keySessionContextPromise) { + return (keyInfo.keyLoadPromise = keySessionContextPromise.then(function (keySessionContext) { + keyInfo.mediaKeySessionContext = keySessionContext; + return keyLoadedData; + })).catch(function (error) { + // Remove promise for license renewal or retry + keyInfo.keyLoadPromise = null; + throw error; + }); + } + } + return Promise.resolve(keyLoadedData); + }; + _proto.loadKeyHTTP = function loadKeyHTTP(keyInfo, frag) { + var _this3 = this; + var config = this.config; + var Loader = config.loader; + var keyLoader = new Loader(config); + frag.keyLoader = keyInfo.loader = keyLoader; + return keyInfo.keyLoadPromise = new Promise(function (resolve, reject) { + var loaderContext = { + keyInfo: keyInfo, + frag: frag, + responseType: 'arraybuffer', + url: keyInfo.decryptdata.uri + }; + + // maxRetry is 0 so that instead of retrying the same key on the same variant multiple times, + // key-loader will trigger an error and rely on stream-controller to handle retry logic. + // this will also align retry logic with fragment-loader + var loadPolicy = config.keyLoadPolicy.default; + var loaderConfig = { + loadPolicy: loadPolicy, + timeout: loadPolicy.maxLoadTimeMs, + maxRetry: 0, + retryDelay: 0, + maxRetryDelay: 0 + }; + var loaderCallbacks = { + onSuccess: function onSuccess(response, stats, context, networkDetails) { + var frag = context.frag, + keyInfo = context.keyInfo, + uri = context.url; + if (!frag.decryptdata || keyInfo !== _this3.keyUriToKeyInfo[uri]) { + return reject(_this3.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error('after key load, decryptdata unset or changed'), networkDetails)); + } + keyInfo.decryptdata.key = frag.decryptdata.key = new Uint8Array(response.data); + + // detach fragment key loader on load success + frag.keyLoader = null; + keyInfo.loader = null; + resolve({ + frag: frag, + keyInfo: keyInfo + }); + }, + onError: function onError(response, context, networkDetails, stats) { + _this3.resetLoader(context); + reject(_this3.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error("HTTP Error " + response.code + " loading key " + response.text), networkDetails, _objectSpread2({ + url: loaderContext.url, + data: undefined + }, response))); + }, + onTimeout: function onTimeout(stats, context, networkDetails) { + _this3.resetLoader(context); + reject(_this3.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_TIMEOUT, new Error('key loading timed out'), networkDetails)); + }, + onAbort: function onAbort(stats, context, networkDetails) { + _this3.resetLoader(context); + reject(_this3.createKeyLoadError(frag, ErrorDetails.INTERNAL_ABORTED, new Error('key loading aborted'), networkDetails)); + } + }; + keyLoader.load(loaderContext, loaderConfig, loaderCallbacks); + }); + }; + _proto.resetLoader = function resetLoader(context) { + var frag = context.frag, + keyInfo = context.keyInfo, + uri = context.url; + var loader = keyInfo.loader; + if (frag.keyLoader === loader) { + frag.keyLoader = null; + keyInfo.loader = null; + } + delete this.keyUriToKeyInfo[uri]; + if (loader) { + loader.destroy(); + } + }; + return KeyLoader; + }(); + + function getSourceBuffer() { + return self.SourceBuffer || self.WebKitSourceBuffer; + } + function isMSESupported() { + var mediaSource = getMediaSource(); + if (!mediaSource) { + return false; + } + + // if SourceBuffer is exposed ensure its API is valid + // Older browsers do not expose SourceBuffer globally so checking SourceBuffer.prototype is impossible + var sourceBuffer = getSourceBuffer(); + return !sourceBuffer || sourceBuffer.prototype && typeof sourceBuffer.prototype.appendBuffer === 'function' && typeof sourceBuffer.prototype.remove === 'function'; + } + function isSupported() { + if (!isMSESupported()) { + return false; + } + var mediaSource = getMediaSource(); + return typeof (mediaSource == null ? void 0 : mediaSource.isTypeSupported) === 'function' && (['avc1.42E01E,mp4a.40.2', 'av01.0.01M.08', 'vp09.00.50.08'].some(function (codecsForVideoContainer) { + return mediaSource.isTypeSupported(mimeTypeForCodec(codecsForVideoContainer, 'video')); + }) || ['mp4a.40.2', 'fLaC'].some(function (codecForAudioContainer) { + return mediaSource.isTypeSupported(mimeTypeForCodec(codecForAudioContainer, 'audio')); + })); + } + function changeTypeSupported() { + var _sourceBuffer$prototy; + var sourceBuffer = getSourceBuffer(); + return typeof (sourceBuffer == null ? void 0 : (_sourceBuffer$prototy = sourceBuffer.prototype) == null ? void 0 : _sourceBuffer$prototy.changeType) === 'function'; + } + + var STALL_MINIMUM_DURATION_MS = 250; + var MAX_START_GAP_JUMP = 2.0; + var SKIP_BUFFER_HOLE_STEP_SECONDS = 0.1; + var SKIP_BUFFER_RANGE_START = 0.05; + var GapController = /*#__PURE__*/function (_Logger) { + function GapController(config, media, fragmentTracker, hls) { + var _this; + _this = _Logger.call(this, 'gap-controller', hls.logger) || this; + _this.config = void 0; + _this.media = null; + _this.fragmentTracker = void 0; + _this.hls = void 0; + _this.nudgeRetry = 0; + _this.stallReported = false; + _this.stalled = null; + _this.moved = false; + _this.seeking = false; + _this.ended = 0; + _this.config = config; + _this.media = media; + _this.fragmentTracker = fragmentTracker; + _this.hls = hls; + return _this; + } + _inheritsLoose(GapController, _Logger); + var _proto = GapController.prototype; + _proto.destroy = function destroy() { + this.media = null; + // @ts-ignore + this.hls = this.fragmentTracker = null; + } + + /** + * Checks if the playhead is stuck within a gap, and if so, attempts to free it. + * A gap is an unbuffered range between two buffered ranges (or the start and the first buffered range). + * + * @param lastCurrentTime - Previously read playhead position + */; + _proto.poll = function poll(lastCurrentTime, activeFrag, levelDetails, state) { + var config = this.config, + media = this.media, + stalled = this.stalled; + if (media === null) { + return; + } + var currentTime = media.currentTime, + seeking = media.seeking; + var seeked = this.seeking && !seeking; + var beginSeek = !this.seeking && seeking; + this.seeking = seeking; + + // The playhead is moving, no-op + if (currentTime !== lastCurrentTime) { + this.ended = 0; + this.moved = true; + if (!seeking) { + this.nudgeRetry = 0; + } + if (stalled !== null) { + // The playhead is now moving, but was previously stalled + if (this.stallReported) { + var _stalledDuration = self.performance.now() - stalled; + this.warn("playback not stuck anymore @" + currentTime + ", after " + Math.round(_stalledDuration) + "ms"); + this.stallReported = false; + } + this.stalled = null; + } + return; + } + + // Clear stalled state when beginning or finishing seeking so that we don't report stalls coming out of a seek + if (beginSeek || seeked) { + this.stalled = null; + return; + } + + // The playhead should not be moving + if (media.paused && !seeking || media.ended || media.playbackRate === 0 || !BufferHelper.getBuffered(media).length) { + this.nudgeRetry = 0; + return; + } + var bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0); + var nextStart = bufferInfo.nextStart || 0; + if (seeking) { + // Waiting for seeking in a buffered range to complete + var hasEnoughBuffer = bufferInfo.len > MAX_START_GAP_JUMP; + // Next buffered range is too far ahead to jump to while still seeking + var noBufferGap = !nextStart || activeFrag && activeFrag.start <= currentTime || nextStart - currentTime > MAX_START_GAP_JUMP && !this.fragmentTracker.getPartialFragment(currentTime); + if (hasEnoughBuffer || noBufferGap) { + return; + } + // Reset moved state when seeking to a point in or before a gap + this.moved = false; + } + + // Skip start gaps if we haven't played, but the last poll detected the start of a stall + // The addition poll gives the browser a chance to jump the gap for us + if (!this.moved && this.stalled !== null) { + // There is no playable buffer (seeked, waiting for buffer) + var isBuffered = bufferInfo.len > 0; + if (!isBuffered && !nextStart) { + return; + } + // Jump start gaps within jump threshold + var startJump = Math.max(nextStart, bufferInfo.start || 0) - currentTime; + + // When joining a live stream with audio tracks, account for live playlist window sliding by allowing + // a larger jump over start gaps caused by the audio-stream-controller buffering a start fragment + // that begins over 1 target duration after the video start position. + var isLive = !!(levelDetails != null && levelDetails.live); + var maxStartGapJump = isLive ? levelDetails.targetduration * 2 : MAX_START_GAP_JUMP; + var partialOrGap = this.fragmentTracker.getPartialFragment(currentTime); + if (startJump > 0 && (startJump <= maxStartGapJump || partialOrGap)) { + if (!media.paused) { + this._trySkipBufferHole(partialOrGap); + } + return; + } + } + + // Start tracking stall time + var tnow = self.performance.now(); + if (stalled === null) { + this.stalled = tnow; + return; + } + var stalledDuration = tnow - stalled; + if (!seeking && stalledDuration >= STALL_MINIMUM_DURATION_MS) { + // Dispatch MEDIA_ENDED when media.ended/ended event is not signalled at end of stream + if (state === State.ENDED && !(levelDetails != null && levelDetails.live) && Math.abs(currentTime - ((levelDetails == null ? void 0 : levelDetails.edge) || 0)) < 1) { + if (stalledDuration < 1000 || this.ended) { + return; + } + this.ended = currentTime; + this.hls.trigger(Events.MEDIA_ENDED, { + stalled: true + }); + return; + } + // Report stalling after trying to fix + this._reportStall(bufferInfo); + if (!this.media) { + return; + } + } + var bufferedWithHoles = BufferHelper.bufferInfo(media, currentTime, config.maxBufferHole); + this._tryFixBufferStall(bufferedWithHoles, stalledDuration); + } + + /** + * Detects and attempts to fix known buffer stalling issues. + * @param bufferInfo - The properties of the current buffer. + * @param stalledDurationMs - The amount of time Hls.js has been stalling for. + * @private + */; + _proto._tryFixBufferStall = function _tryFixBufferStall(bufferInfo, stalledDurationMs) { + var config = this.config, + fragmentTracker = this.fragmentTracker, + media = this.media; + if (media === null) { + return; + } + var currentTime = media.currentTime; + var partial = fragmentTracker.getPartialFragment(currentTime); + if (partial) { + // Try to skip over the buffer hole caused by a partial fragment + // This method isn't limited by the size of the gap between buffered ranges + var targetTime = this._trySkipBufferHole(partial); + // we return here in this case, meaning + // the branch below only executes when we haven't seeked to a new position + if (targetTime || !this.media) { + return; + } + } + + // if we haven't had to skip over a buffer hole of a partial fragment + // we may just have to "nudge" the playlist as the browser decoding/rendering engine + // needs to cross some sort of threshold covering all source-buffers content + // to start playing properly. + if ((bufferInfo.len > config.maxBufferHole || bufferInfo.nextStart && bufferInfo.nextStart - currentTime < config.maxBufferHole) && stalledDurationMs > config.highBufferWatchdogPeriod * 1000) { + this.warn('Trying to nudge playhead over buffer-hole'); + // Try to nudge currentTime over a buffer hole if we've been stalling for the configured amount of seconds + // We only try to jump the hole if it's under the configured size + // Reset stalled so to rearm watchdog timer + this.stalled = null; + this._tryNudgeBuffer(); + } + } + + /** + * Triggers a BUFFER_STALLED_ERROR event, but only once per stall period. + * @param bufferLen - The playhead distance from the end of the current buffer segment. + * @private + */; + _proto._reportStall = function _reportStall(bufferInfo) { + var hls = this.hls, + media = this.media, + stallReported = this.stallReported; + if (!stallReported && media) { + // Report stalled error once + this.stallReported = true; + var error = new Error("Playback stalling at @" + media.currentTime + " due to low buffer (" + JSON.stringify(bufferInfo) + ")"); + this.warn(error.message); + hls.trigger(Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.BUFFER_STALLED_ERROR, + fatal: false, + error: error, + buffer: bufferInfo.len + }); + } + } + + /** + * Attempts to fix buffer stalls by jumping over known gaps caused by partial fragments + * @param partial - The partial fragment found at the current time (where playback is stalling). + * @private + */; + _proto._trySkipBufferHole = function _trySkipBufferHole(partial) { + var config = this.config, + hls = this.hls, + media = this.media; + if (media === null) { + return 0; + } + + // Check if currentTime is between unbuffered regions of partial fragments + var currentTime = media.currentTime; + var bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0); + var startTime = currentTime < bufferInfo.start ? bufferInfo.start : bufferInfo.nextStart; + if (startTime) { + var bufferStarved = bufferInfo.len <= config.maxBufferHole; + var waiting = bufferInfo.len > 0 && bufferInfo.len < 1 && media.readyState < 3; + var gapLength = startTime - currentTime; + if (gapLength > 0 && (bufferStarved || waiting)) { + // Only allow large gaps to be skipped if it is a start gap, or all fragments in skip range are partial + if (gapLength > config.maxBufferHole) { + var fragmentTracker = this.fragmentTracker; + var startGap = false; + if (currentTime === 0) { + var startFrag = fragmentTracker.getAppendedFrag(0, PlaylistLevelType.MAIN); + if (startFrag && startTime < startFrag.end) { + startGap = true; + } + } + if (!startGap) { + var startProvisioned = partial || fragmentTracker.getAppendedFrag(currentTime, PlaylistLevelType.MAIN); + if (startProvisioned) { + var moreToLoad = false; + var pos = startProvisioned.end; + while (pos < startTime) { + var provisioned = fragmentTracker.getPartialFragment(pos); + if (provisioned) { + pos += provisioned.duration; + } else { + moreToLoad = true; + break; + } + } + if (moreToLoad) { + return 0; + } + } + } + } + var targetTime = Math.max(startTime + SKIP_BUFFER_RANGE_START, currentTime + SKIP_BUFFER_HOLE_STEP_SECONDS); + this.warn("skipping hole, adjusting currentTime from " + currentTime + " to " + targetTime); + this.moved = true; + this.stalled = null; + media.currentTime = targetTime; + if (partial && !partial.gap) { + var error = new Error("fragment loaded with buffer holes, seeking from " + currentTime + " to " + targetTime); + hls.trigger(Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.BUFFER_SEEK_OVER_HOLE, + fatal: false, + error: error, + reason: error.message, + frag: partial + }); + } + return targetTime; + } + } + return 0; + } + + /** + * Attempts to fix buffer stalls by advancing the mediaElement's current time by a small amount. + * @private + */; + _proto._tryNudgeBuffer = function _tryNudgeBuffer() { + var config = this.config, + hls = this.hls, + media = this.media, + nudgeRetry = this.nudgeRetry; + if (media === null) { + return; + } + var currentTime = media.currentTime; + this.nudgeRetry++; + if (nudgeRetry < config.nudgeMaxRetry) { + var targetTime = currentTime + (nudgeRetry + 1) * config.nudgeOffset; + // playback stalled in buffered area ... let's nudge currentTime to try to overcome this + var error = new Error("Nudging 'currentTime' from " + currentTime + " to " + targetTime); + this.warn(error.message); + media.currentTime = targetTime; + hls.trigger(Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.BUFFER_NUDGE_ON_STALL, + error: error, + fatal: false + }); + } else { + var _error = new Error("Playhead still not moving while enough data buffered @" + currentTime + " after " + config.nudgeMaxRetry + " nudges"); + this.error(_error.message); + hls.trigger(Events.ERROR, { + type: ErrorTypes.MEDIA_ERROR, + details: ErrorDetails.BUFFER_STALLED_ERROR, + error: _error, + fatal: true + }); + } + }; + return GapController; + }(Logger); + + var TICK_INTERVAL = 100; // how often to tick in ms + var StreamController = /*#__PURE__*/function (_BaseStreamController) { + function StreamController(hls, fragmentTracker, keyLoader) { + var _this; + _this = _BaseStreamController.call(this, hls, fragmentTracker, keyLoader, 'stream-controller', PlaylistLevelType.MAIN) || this; + _this.audioCodecSwap = false; + _this.gapController = null; + _this.level = -1; + _this._forceStartLoad = false; + _this.altAudio = false; + _this.audioOnly = false; + _this.fragPlaying = null; + _this.fragLastKbps = 0; + _this.couldBacktrack = false; + _this.backtrackFragment = null; + _this.audioCodecSwitch = false; + _this.videoBuffer = null; + _this.onMediaPlaying = function () { + // tick to speed up FRAG_CHANGED triggering + _this.tick(); + }; + _this.onMediaSeeked = function () { + var media = _this.media; + var currentTime = media ? media.currentTime : null; + if (isFiniteNumber(currentTime)) { + _this.log("Media seeked to " + currentTime.toFixed(3)); + } + + // If seeked was issued before buffer was appended do not tick immediately + var bufferInfo = _this.getMainFwdBufferInfo(); + if (bufferInfo === null || bufferInfo.len === 0) { + _this.warn("Main forward buffer length on \"seeked\" event " + (bufferInfo ? bufferInfo.len : 'empty') + ")"); + return; + } + + // tick to speed up FRAG_CHANGED triggering + _this.tick(); + }; + _this.registerListeners(); + return _this; + } + _inheritsLoose(StreamController, _BaseStreamController); + var _proto = StreamController.prototype; + _proto.registerListeners = function registerListeners() { + _BaseStreamController.prototype.registerListeners.call(this); + var hls = this.hls; + hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this); + hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this); + hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this); + hls.on(Events.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this); + hls.on(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this); + hls.on(Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this); + hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this); + hls.on(Events.BUFFER_FLUSHED, this.onBufferFlushed, this); + hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this); + hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this); + }; + _proto.unregisterListeners = function unregisterListeners() { + _BaseStreamController.prototype.unregisterListeners.call(this); + var hls = this.hls; + hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this); + hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this); + hls.off(Events.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this); + hls.off(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this); + hls.off(Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this); + hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this); + hls.off(Events.BUFFER_FLUSHED, this.onBufferFlushed, this); + hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this); + hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this); + }; + _proto.onHandlerDestroying = function onHandlerDestroying() { + // @ts-ignore + this.onMediaPlaying = this.onMediaSeeked = null; + this.unregisterListeners(); + _BaseStreamController.prototype.onHandlerDestroying.call(this); + }; + _proto.startLoad = function startLoad(startPosition) { + if (this.levels) { + var lastCurrentTime = this.lastCurrentTime, + hls = this.hls; + this.stopLoad(); + this.setInterval(TICK_INTERVAL); + this.level = -1; + if (!this.startFragRequested) { + // determine load level + var startLevel = hls.startLevel; + if (startLevel === -1) { + if (hls.config.testBandwidth && this.levels.length > 1) { + // -1 : guess start Level by doing a bitrate test by loading first fragment of lowest quality level + startLevel = 0; + this.bitrateTest = true; + } else { + startLevel = hls.firstAutoLevel; + } + } + // set new level to playlist loader : this will trigger start level load + // hls.nextLoadLevel remains until it is set to a new value or until a new frag is successfully loaded + hls.nextLoadLevel = startLevel; + this.level = hls.loadLevel; + this.loadedmetadata = false; + } + // if startPosition undefined but lastCurrentTime set, set startPosition to last currentTime + if (lastCurrentTime > 0 && startPosition === -1) { + this.log("Override startPosition with lastCurrentTime @" + lastCurrentTime.toFixed(3)); + startPosition = lastCurrentTime; + } + this.state = State.IDLE; + this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition; + this.tick(); + } else { + this._forceStartLoad = true; + this.state = State.STOPPED; + } + }; + _proto.stopLoad = function stopLoad() { + this._forceStartLoad = false; + _BaseStreamController.prototype.stopLoad.call(this); + }; + _proto.doTick = function doTick() { + switch (this.state) { + case State.WAITING_LEVEL: + { + var levels = this.levels, + level = this.level; + var currentLevel = levels == null ? void 0 : levels[level]; + var details = currentLevel == null ? void 0 : currentLevel.details; + if (details && (!details.live || this.levelLastLoaded === currentLevel)) { + if (this.waitForCdnTuneIn(details)) { + break; + } + this.state = State.IDLE; + break; + } else if (this.hls.nextLoadLevel !== this.level) { + this.state = State.IDLE; + break; + } + break; + } + case State.FRAG_LOADING_WAITING_RETRY: + { + var _this$media; + var now = self.performance.now(); + var retryDate = this.retryDate; + // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading + if (!retryDate || now >= retryDate || (_this$media = this.media) != null && _this$media.seeking) { + var _levels = this.levels, + _level = this.level; + var _currentLevel = _levels == null ? void 0 : _levels[_level]; + this.resetStartWhenNotLoaded(_currentLevel || null); + this.state = State.IDLE; + } + } + break; + } + if (this.state === State.IDLE) { + this.doTickIdle(); + } + this.onTickEnd(); + }; + _proto.onTickEnd = function onTickEnd() { + _BaseStreamController.prototype.onTickEnd.call(this); + this.checkBuffer(); + this.checkFragmentChanged(); + }; + _proto.doTickIdle = function doTickIdle() { + if (!this.buffering) { + return; + } + var hls = this.hls, + levelLastLoaded = this.levelLastLoaded, + levels = this.levels, + media = this.media; + + // if start level not parsed yet OR + // if video not attached AND start fragment already requested OR start frag prefetch not enabled + // exit loop, as we either need more info (level not parsed) or we need media to be attached to load new fragment + if (levelLastLoaded === null || !media && (this.startFragRequested || !hls.config.startFragPrefetch)) { + return; + } + + // If the "main" level is audio-only but we are loading an alternate track in the same group, do not load anything + if (this.altAudio && this.audioOnly) { + return; + } + var level = hls.nextLoadLevel; + if (!(levels != null && levels[level])) { + return; + } + var levelInfo = levels[level]; + + // if buffer length is less than maxBufLen try to load a new fragment + + var bufferInfo = this.getMainFwdBufferInfo(); + if (bufferInfo === null) { + return; + } + var lastDetails = this.getLevelDetails(); + if (lastDetails && this._streamEnded(bufferInfo, lastDetails)) { + var data = {}; + if (this.altAudio) { + data.type = 'video'; + } + this.hls.trigger(Events.BUFFER_EOS, data); + this.state = State.ENDED; + return; + } + + // set next load level : this will trigger a playlist load if needed + if (hls.loadLevel !== level && hls.manualLevel === -1) { + this.log("Adapting to level " + level + " from level " + this.level); + } + this.level = hls.nextLoadLevel = level; + var levelDetails = levelInfo.details; + // if level info not retrieved yet, switch state and wait for level retrieval + // if live playlist, ensure that new playlist has been refreshed to avoid loading/try to load + // a useless and outdated fragment (that might even introduce load error if it is already out of the live playlist) + if (!levelDetails || this.state === State.WAITING_LEVEL || levelDetails.live && this.levelLastLoaded !== levelInfo) { + this.level = level; + this.state = State.WAITING_LEVEL; + return; + } + var bufferLen = bufferInfo.len; + + // compute max Buffer Length that we could get from this load level, based on level bitrate. don't buffer more than 60 MB and more than 30s + var maxBufLen = this.getMaxBufferLength(levelInfo.maxBitrate); + + // Stay idle if we are still with buffer margins + if (bufferLen >= maxBufLen) { + return; + } + if (this.backtrackFragment && this.backtrackFragment.start > bufferInfo.end) { + this.backtrackFragment = null; + } + var targetBufferTime = this.backtrackFragment ? this.backtrackFragment.start : bufferInfo.end; + var frag = this.getNextFragment(targetBufferTime, levelDetails); + // Avoid backtracking by loading an earlier segment in streams with segments that do not start with a key frame (flagged by `couldBacktrack`) + if (this.couldBacktrack && !this.fragPrevious && frag && frag.sn !== 'initSegment' && this.fragmentTracker.getState(frag) !== FragmentState.OK) { + var _this$backtrackFragme; + var backtrackSn = ((_this$backtrackFragme = this.backtrackFragment) != null ? _this$backtrackFragme : frag).sn; + var fragIdx = backtrackSn - levelDetails.startSN; + var backtrackFrag = levelDetails.fragments[fragIdx - 1]; + if (backtrackFrag && frag.cc === backtrackFrag.cc) { + frag = backtrackFrag; + this.fragmentTracker.removeFragment(backtrackFrag); + } + } else if (this.backtrackFragment && bufferInfo.len) { + this.backtrackFragment = null; + } + // Avoid loop loading by using nextLoadPosition set for backtracking and skipping consecutive GAP tags + if (frag && this.isLoopLoading(frag, targetBufferTime)) { + var gapStart = frag.gap; + if (!gapStart) { + // Cleanup the fragment tracker before trying to find the next unbuffered fragment + var type = this.audioOnly && !this.altAudio ? ElementaryStreamTypes.AUDIO : ElementaryStreamTypes.VIDEO; + var mediaBuffer = (type === ElementaryStreamTypes.VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media; + if (mediaBuffer) { + this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.MAIN); + } + } + frag = this.getNextFragmentLoopLoading(frag, levelDetails, bufferInfo, PlaylistLevelType.MAIN, maxBufLen); + } + if (!frag) { + return; + } + if (frag.initSegment && !frag.initSegment.data && !this.bitrateTest) { + frag = frag.initSegment; + } + this.loadFragment(frag, levelInfo, targetBufferTime); + }; + _proto.loadFragment = function loadFragment(frag, level, targetBufferTime) { + // Check if fragment is not loaded + var fragState = this.fragmentTracker.getState(frag); + if (fragState === FragmentState.NOT_LOADED || fragState === FragmentState.PARTIAL) { + if (frag.sn === 'initSegment') { + this._loadInitSegment(frag, level); + } else if (this.bitrateTest) { + this.log("Fragment " + frag.sn + " of level " + frag.level + " is being downloaded to test bitrate and will not be buffered"); + this._loadBitrateTestFrag(frag, level); + } else { + _BaseStreamController.prototype.loadFragment.call(this, frag, level, targetBufferTime); + } + } else { + this.clearTrackerIfNeeded(frag); + } + }; + _proto.getBufferedFrag = function getBufferedFrag(position) { + return this.fragmentTracker.getBufferedFrag(position, PlaylistLevelType.MAIN); + }; + _proto.followingBufferedFrag = function followingBufferedFrag(frag) { + if (frag) { + // try to get range of next fragment (500ms after this range) + return this.getBufferedFrag(frag.end + 0.5); + } + return null; + } + + /* + on immediate level switch : + - pause playback if playing + - cancel any pending load request + - and trigger a buffer flush + */; + _proto.immediateLevelSwitch = function immediateLevelSwitch() { + this.abortCurrentFrag(); + this.flushMainBuffer(0, Number.POSITIVE_INFINITY); + } + + /** + * try to switch ASAP without breaking video playback: + * in order to ensure smooth but quick level switching, + * we need to find the next flushable buffer range + * we should take into account new segment fetch time + */; + _proto.nextLevelSwitch = function nextLevelSwitch() { + var levels = this.levels, + media = this.media; + // ensure that media is defined and that metadata are available (to retrieve currentTime) + if (media != null && media.readyState) { + var fetchdelay; + var fragPlayingCurrent = this.getAppendedFrag(media.currentTime); + if (fragPlayingCurrent && fragPlayingCurrent.start > 1) { + // flush buffer preceding current fragment (flush until current fragment start offset) + // minus 1s to avoid video freezing, that could happen if we flush keyframe of current video ... + this.flushMainBuffer(0, fragPlayingCurrent.start - 1); + } + var levelDetails = this.getLevelDetails(); + if (levelDetails != null && levelDetails.live) { + var bufferInfo = this.getMainFwdBufferInfo(); + // Do not flush in live stream with low buffer + if (!bufferInfo || bufferInfo.len < levelDetails.targetduration * 2) { + return; + } + } + if (!media.paused && levels) { + // add a safety delay of 1s + var nextLevelId = this.hls.nextLoadLevel; + var nextLevel = levels[nextLevelId]; + var fragLastKbps = this.fragLastKbps; + if (fragLastKbps && this.fragCurrent) { + fetchdelay = this.fragCurrent.duration * nextLevel.maxBitrate / (1000 * fragLastKbps) + 1; + } else { + fetchdelay = 0; + } + } else { + fetchdelay = 0; + } + // this.log('fetchdelay:'+fetchdelay); + // find buffer range that will be reached once new fragment will be fetched + var bufferedFrag = this.getBufferedFrag(media.currentTime + fetchdelay); + if (bufferedFrag) { + // we can flush buffer range following this one without stalling playback + var nextBufferedFrag = this.followingBufferedFrag(bufferedFrag); + if (nextBufferedFrag) { + // if we are here, we can also cancel any loading/demuxing in progress, as they are useless + this.abortCurrentFrag(); + // start flush position is in next buffered frag. Leave some padding for non-independent segments and smoother playback. + var maxStart = nextBufferedFrag.maxStartPTS ? nextBufferedFrag.maxStartPTS : nextBufferedFrag.start; + var fragDuration = nextBufferedFrag.duration; + var startPts = Math.max(bufferedFrag.end, maxStart + Math.min(Math.max(fragDuration - this.config.maxFragLookUpTolerance, fragDuration * (this.couldBacktrack ? 0.5 : 0.125)), fragDuration * (this.couldBacktrack ? 0.75 : 0.25))); + this.flushMainBuffer(startPts, Number.POSITIVE_INFINITY); + } + } + } + }; + _proto.abortCurrentFrag = function abortCurrentFrag() { + var fragCurrent = this.fragCurrent; + this.fragCurrent = null; + this.backtrackFragment = null; + if (fragCurrent) { + fragCurrent.abortRequests(); + this.fragmentTracker.removeFragment(fragCurrent); + } + switch (this.state) { + case State.KEY_LOADING: + case State.FRAG_LOADING: + case State.FRAG_LOADING_WAITING_RETRY: + case State.PARSING: + case State.PARSED: + this.state = State.IDLE; + break; + } + this.nextLoadPosition = this.getLoadPosition(); + }; + _proto.flushMainBuffer = function flushMainBuffer(startOffset, endOffset) { + _BaseStreamController.prototype.flushMainBuffer.call(this, startOffset, endOffset, this.altAudio ? 'video' : null); + }; + _proto.onMediaAttached = function onMediaAttached(event, data) { + _BaseStreamController.prototype.onMediaAttached.call(this, event, data); + var media = data.media; + media.addEventListener('playing', this.onMediaPlaying); + media.addEventListener('seeked', this.onMediaSeeked); + this.gapController = new GapController(this.config, media, this.fragmentTracker, this.hls); + }; + _proto.onMediaDetaching = function onMediaDetaching() { + var media = this.media; + if (media) { + media.removeEventListener('playing', this.onMediaPlaying); + media.removeEventListener('seeked', this.onMediaSeeked); + } + this.videoBuffer = null; + this.fragPlaying = null; + if (this.gapController) { + this.gapController.destroy(); + this.gapController = null; + } + _BaseStreamController.prototype.onMediaDetaching.call(this); + }; + _proto.onManifestLoading = function onManifestLoading() { + _BaseStreamController.prototype.onManifestLoading.call(this); + // reset buffer on manifest loading + this.log('Trigger BUFFER_RESET'); + this.hls.trigger(Events.BUFFER_RESET, undefined); + this.couldBacktrack = false; + this.fragLastKbps = 0; + this.fragPlaying = this.backtrackFragment = null; + this.altAudio = this.audioOnly = false; + }; + _proto.onManifestParsed = function onManifestParsed(event, data) { + // detect if we have different kind of audio codecs used amongst playlists + var aac = false; + var heaac = false; + data.levels.forEach(function (level) { + var codec = level.audioCodec; + if (codec) { + aac = aac || codec.indexOf('mp4a.40.2') !== -1; + heaac = heaac || codec.indexOf('mp4a.40.5') !== -1; + } + }); + this.audioCodecSwitch = aac && heaac && !changeTypeSupported(); + if (this.audioCodecSwitch) { + this.log('Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC'); + } + this.levels = data.levels; + this.startFragRequested = false; + }; + _proto.onLevelLoading = function onLevelLoading(event, data) { + var levels = this.levels; + if (!levels || this.state !== State.IDLE) { + return; + } + var level = levels[data.level]; + if (!level.details || level.details.live && this.levelLastLoaded !== level || this.waitForCdnTuneIn(level.details)) { + this.state = State.WAITING_LEVEL; + } + }; + _proto.onLevelLoaded = function onLevelLoaded(event, data) { + var _curLevel$details; + var levels = this.levels; + var newLevelId = data.level; + var newDetails = data.details; + var duration = newDetails.totalduration; + if (!levels) { + this.warn("Levels were reset while loading level " + newLevelId); + return; + } + this.log("Level " + newLevelId + " loaded [" + newDetails.startSN + "," + newDetails.endSN + "]" + (newDetails.lastPartSn ? "[part-" + newDetails.lastPartSn + "-" + newDetails.lastPartIndex + "]" : '') + ", cc [" + newDetails.startCC + ", " + newDetails.endCC + "] duration:" + duration); + var curLevel = levels[newLevelId]; + var fragCurrent = this.fragCurrent; + if (fragCurrent && (this.state === State.FRAG_LOADING || this.state === State.FRAG_LOADING_WAITING_RETRY)) { + if (fragCurrent.level !== data.level && fragCurrent.loader) { + this.abortCurrentFrag(); + } + } + var sliding = 0; + if (newDetails.live || (_curLevel$details = curLevel.details) != null && _curLevel$details.live) { + var _this$levelLastLoaded; + this.checkLiveUpdate(newDetails); + if (newDetails.deltaUpdateFailed) { + return; + } + sliding = this.alignPlaylists(newDetails, curLevel.details, (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details); + } + // override level info + curLevel.details = newDetails; + this.levelLastLoaded = curLevel; + this.hls.trigger(Events.LEVEL_UPDATED, { + details: newDetails, + level: newLevelId + }); + + // only switch back to IDLE state if we were waiting for level to start downloading a new fragment + if (this.state === State.WAITING_LEVEL) { + if (this.waitForCdnTuneIn(newDetails)) { + // Wait for Low-Latency CDN Tune-in + return; + } + this.state = State.IDLE; + } + if (!this.startFragRequested) { + this.setStartPosition(newDetails, sliding); + } else if (newDetails.live) { + this.synchronizeToLiveEdge(newDetails); + } + + // trigger handler right now + this.tick(); + }; + _proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(data) { + var _frag$initSegment; + var frag = data.frag; + var part = data.part, + payload = data.payload; + var levels = this.levels; + if (!levels) { + this.warn("Levels were reset while fragment load was in progress. Fragment " + frag.sn + " of level " + frag.level + " will not be buffered"); + return; + } + var currentLevel = levels[frag.level]; + var details = currentLevel.details; + if (!details) { + this.warn("Dropping fragment " + frag.sn + " of level " + frag.level + " after level details were reset"); + this.fragmentTracker.removeFragment(frag); + return; + } + var videoCodec = currentLevel.videoCodec; + + // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live) + var accurateTimeOffset = details.PTSKnown || !details.live; + var initSegmentData = (_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.data; + var audioCodec = this._getAudioCodec(currentLevel); + + // transmux the MPEG-TS data to ISO-BMFF segments + // this.log(`Transmuxing ${frag.sn} of [${details.startSN} ,${details.endSN}],level ${frag.level}, cc ${frag.cc}`); + var transmuxer = this.transmuxer = this.transmuxer || new TransmuxerInterface(this.hls, PlaylistLevelType.MAIN, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this)); + var partIndex = part ? part.index : -1; + var partial = partIndex !== -1; + var chunkMeta = new ChunkMetadata(frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial); + var initPTS = this.initPTS[frag.cc]; + transmuxer.push(payload, initSegmentData, audioCodec, videoCodec, frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS); + }; + _proto.onAudioTrackSwitching = function onAudioTrackSwitching(event, data) { + // if any URL found on new audio track, it is an alternate audio track + var fromAltAudio = this.altAudio; + var altAudio = !!data.url; + // if we switch on main audio, ensure that main fragment scheduling is synced with media.buffered + // don't do anything if we switch to alt audio: audio stream controller is handling it. + // we will just have to change buffer scheduling on audioTrackSwitched + if (!altAudio) { + if (this.mediaBuffer !== this.media) { + this.log('Switching on main audio, use media.buffered to schedule main fragment loading'); + this.mediaBuffer = this.media; + var fragCurrent = this.fragCurrent; + // we need to refill audio buffer from main: cancel any frag loading to speed up audio switch + if (fragCurrent) { + this.log('Switching to main audio track, cancel main fragment load'); + fragCurrent.abortRequests(); + this.fragmentTracker.removeFragment(fragCurrent); + } + // destroy transmuxer to force init segment generation (following audio switch) + this.resetTransmuxer(); + // switch to IDLE state to load new fragment + this.resetLoadingState(); + } else if (this.audioOnly) { + // Reset audio transmuxer so when switching back to main audio we're not still appending where we left off + this.resetTransmuxer(); + } + var hls = this.hls; + // If switching from alt to main audio, flush all audio and trigger track switched + if (fromAltAudio) { + hls.trigger(Events.BUFFER_FLUSHING, { + startOffset: 0, + endOffset: Number.POSITIVE_INFINITY, + type: null + }); + this.fragmentTracker.removeAllFragments(); + } + hls.trigger(Events.AUDIO_TRACK_SWITCHED, data); + } + }; + _proto.onAudioTrackSwitched = function onAudioTrackSwitched(event, data) { + var trackId = data.id; + var altAudio = !!this.hls.audioTracks[trackId].url; + if (altAudio) { + var videoBuffer = this.videoBuffer; + // if we switched on alternate audio, ensure that main fragment scheduling is synced with video sourcebuffer buffered + if (videoBuffer && this.mediaBuffer !== videoBuffer) { + this.log('Switching on alternate audio, use video.buffered to schedule main fragment loading'); + this.mediaBuffer = videoBuffer; + } + } + this.altAudio = altAudio; + this.tick(); + }; + _proto.onBufferCreated = function onBufferCreated(event, data) { + var tracks = data.tracks; + var mediaTrack; + var name; + var alternate = false; + for (var type in tracks) { + var track = tracks[type]; + if (track.id === 'main') { + name = type; + mediaTrack = track; + // keep video source buffer reference + if (type === 'video') { + var videoTrack = tracks[type]; + if (videoTrack) { + this.videoBuffer = videoTrack.buffer; + } + } + } else { + alternate = true; + } + } + if (alternate && mediaTrack) { + this.log("Alternate track found, use " + name + ".buffered to schedule main fragment loading"); + this.mediaBuffer = mediaTrack.buffer; + } else { + this.mediaBuffer = this.media; + } + }; + _proto.onFragBuffered = function onFragBuffered(event, data) { + var frag = data.frag, + part = data.part; + if (frag && frag.type !== PlaylistLevelType.MAIN) { + return; + } + if (this.fragContextChanged(frag)) { + // If a level switch was requested while a fragment was buffering, it will emit the FRAG_BUFFERED event upon completion + // Avoid setting state back to IDLE, since that will interfere with a level switch + this.warn("Fragment " + frag.sn + (part ? ' p: ' + part.index : '') + " of level " + frag.level + " finished buffering, but was aborted. state: " + this.state); + if (this.state === State.PARSED) { + this.state = State.IDLE; + } + return; + } + var stats = part ? part.stats : frag.stats; + this.fragLastKbps = Math.round(8 * stats.total / (stats.buffering.end - stats.loading.first)); + if (frag.sn !== 'initSegment') { + this.fragPrevious = frag; + } + this.fragBufferedComplete(frag, part); + }; + _proto.onError = function onError(event, data) { + var _data$context; + if (data.fatal) { + this.state = State.ERROR; + return; + } + switch (data.details) { + case ErrorDetails.FRAG_GAP: + case ErrorDetails.FRAG_PARSING_ERROR: + case ErrorDetails.FRAG_DECRYPT_ERROR: + case ErrorDetails.FRAG_LOAD_ERROR: + case ErrorDetails.FRAG_LOAD_TIMEOUT: + case ErrorDetails.KEY_LOAD_ERROR: + case ErrorDetails.KEY_LOAD_TIMEOUT: + this.onFragmentOrKeyLoadError(PlaylistLevelType.MAIN, data); + break; + case ErrorDetails.LEVEL_LOAD_ERROR: + case ErrorDetails.LEVEL_LOAD_TIMEOUT: + case ErrorDetails.LEVEL_PARSING_ERROR: + // in case of non fatal error while loading level, if level controller is not retrying to load level, switch back to IDLE + if (!data.levelRetry && this.state === State.WAITING_LEVEL && ((_data$context = data.context) == null ? void 0 : _data$context.type) === PlaylistContextType.LEVEL) { + this.state = State.IDLE; + } + break; + case ErrorDetails.BUFFER_APPEND_ERROR: + case ErrorDetails.BUFFER_FULL_ERROR: + if (!data.parent || data.parent !== 'main') { + return; + } + if (data.details === ErrorDetails.BUFFER_APPEND_ERROR) { + this.resetLoadingState(); + return; + } + if (this.reduceLengthAndFlushBuffer(data)) { + this.flushMainBuffer(0, Number.POSITIVE_INFINITY); + } + break; + case ErrorDetails.INTERNAL_EXCEPTION: + this.recoverWorkerError(data); + break; + } + } + + // Checks the health of the buffer and attempts to resolve playback stalls. + ; + _proto.checkBuffer = function checkBuffer() { + var media = this.media, + gapController = this.gapController; + if (!media || !gapController || !media.readyState) { + // Exit early if we don't have media or if the media hasn't buffered anything yet (readyState 0) + return; + } + if (this.loadedmetadata || !BufferHelper.getBuffered(media).length) { + // Resolve gaps using the main buffer, whose ranges are the intersections of the A/V sourcebuffers + var state = this.state; + var activeFrag = state !== State.IDLE ? this.fragCurrent : null; + var levelDetails = this.getLevelDetails(); + gapController.poll(this.lastCurrentTime, activeFrag, levelDetails, state); + } + this.lastCurrentTime = media.currentTime; + }; + _proto.onFragLoadEmergencyAborted = function onFragLoadEmergencyAborted() { + this.state = State.IDLE; + // if loadedmetadata is not set, it means that we are emergency switch down on first frag + // in that case, reset startFragRequested flag + if (!this.loadedmetadata) { + this.startFragRequested = false; + this.nextLoadPosition = this.lastCurrentTime; + } + this.tickImmediate(); + }; + _proto.onBufferFlushed = function onBufferFlushed(event, _ref) { + var type = _ref.type; + if (type !== ElementaryStreamTypes.AUDIO || this.audioOnly && !this.altAudio) { + var mediaBuffer = (type === ElementaryStreamTypes.VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media; + this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.MAIN); + this.tick(); + } + }; + _proto.onLevelsUpdated = function onLevelsUpdated(event, data) { + if (this.level > -1 && this.fragCurrent) { + this.level = this.fragCurrent.level; + } + this.levels = data.levels; + }; + _proto.swapAudioCodec = function swapAudioCodec() { + this.audioCodecSwap = !this.audioCodecSwap; + } + + /** + * Seeks to the set startPosition if not equal to the mediaElement's current time. + */; + _proto.seekToStartPos = function seekToStartPos() { + var media = this.media; + if (!media) { + return; + } + var currentTime = media.currentTime; + var startPosition = this.startPosition; + // only adjust currentTime if different from startPosition or if startPosition not buffered + // at that stage, there should be only one buffered range, as we reach that code after first fragment has been buffered + if (startPosition >= 0 && currentTime < startPosition) { + if (media.seeking) { + this.log("could not seek to " + startPosition + ", already seeking at " + currentTime); + return; + } + var buffered = BufferHelper.getBuffered(media); + var bufferStart = buffered.length ? buffered.start(0) : 0; + var delta = bufferStart - startPosition; + if (delta > 0 && (delta < this.config.maxBufferHole || delta < this.config.maxFragLookUpTolerance)) { + this.log("adjusting start position by " + delta + " to match buffer start"); + startPosition += delta; + this.startPosition = startPosition; + } + this.log("seek to target start position " + startPosition + " from current time " + currentTime); + media.currentTime = startPosition; + } + }; + _proto._getAudioCodec = function _getAudioCodec(currentLevel) { + var audioCodec = this.config.defaultAudioCodec || currentLevel.audioCodec; + if (this.audioCodecSwap && audioCodec) { + this.log('Swapping audio codec'); + if (audioCodec.indexOf('mp4a.40.5') !== -1) { + audioCodec = 'mp4a.40.2'; + } else { + audioCodec = 'mp4a.40.5'; + } + } + return audioCodec; + }; + _proto._loadBitrateTestFrag = function _loadBitrateTestFrag(frag, level) { + var _this2 = this; + frag.bitrateTest = true; + this._doFragLoad(frag, level).then(function (data) { + var hls = _this2.hls; + if (!data || _this2.fragContextChanged(frag)) { + return; + } + level.fragmentError = 0; + _this2.state = State.IDLE; + _this2.startFragRequested = false; + _this2.bitrateTest = false; + var stats = frag.stats; + // Bitrate tests fragments are neither parsed nor buffered + stats.parsing.start = stats.parsing.end = stats.buffering.start = stats.buffering.end = self.performance.now(); + hls.trigger(Events.FRAG_LOADED, data); + frag.bitrateTest = false; + }); + }; + _proto._handleTransmuxComplete = function _handleTransmuxComplete(transmuxResult) { + var _id3$samples; + var id = this.playlistType; + var hls = this.hls; + var remuxResult = transmuxResult.remuxResult, + chunkMeta = transmuxResult.chunkMeta; + var context = this.getCurrentContext(chunkMeta); + if (!context) { + this.resetWhenMissingContext(chunkMeta); + return; + } + var frag = context.frag, + part = context.part, + level = context.level; + var video = remuxResult.video, + text = remuxResult.text, + id3 = remuxResult.id3, + initSegment = remuxResult.initSegment; + var details = level.details; + // The audio-stream-controller handles audio buffering if Hls.js is playing an alternate audio track + var audio = this.altAudio ? undefined : remuxResult.audio; + + // Check if the current fragment has been aborted. We check this by first seeing if we're still playing the current level. + // If we are, subsequently check if the currently loading fragment (fragCurrent) has changed. + if (this.fragContextChanged(frag)) { + this.fragmentTracker.removeFragment(frag); + return; + } + this.state = State.PARSING; + if (initSegment) { + if (initSegment != null && initSegment.tracks) { + var mapFragment = frag.initSegment || frag; + this._bufferInitSegment(level, initSegment.tracks, mapFragment, chunkMeta); + hls.trigger(Events.FRAG_PARSING_INIT_SEGMENT, { + frag: mapFragment, + id: id, + tracks: initSegment.tracks + }); + } + + // This would be nice if Number.isFinite acted as a typeguard, but it doesn't. See: https://github.com/Microsoft/TypeScript/issues/10038 + var initPTS = initSegment.initPTS; + var timescale = initSegment.timescale; + if (isFiniteNumber(initPTS)) { + this.initPTS[frag.cc] = { + baseTime: initPTS, + timescale: timescale + }; + hls.trigger(Events.INIT_PTS_FOUND, { + frag: frag, + id: id, + initPTS: initPTS, + timescale: timescale + }); + } + } + + // Avoid buffering if backtracking this fragment + if (video && details) { + var prevFrag = details.fragments[frag.sn - 1 - details.startSN]; + var isFirstFragment = frag.sn === details.startSN; + var isFirstInDiscontinuity = !prevFrag || frag.cc > prevFrag.cc; + if (remuxResult.independent !== false) { + var startPTS = video.startPTS, + endPTS = video.endPTS, + startDTS = video.startDTS, + endDTS = video.endDTS; + if (part) { + part.elementaryStreams[video.type] = { + startPTS: startPTS, + endPTS: endPTS, + startDTS: startDTS, + endDTS: endDTS + }; + } else { + if (video.firstKeyFrame && video.independent && chunkMeta.id === 1 && !isFirstInDiscontinuity) { + this.couldBacktrack = true; + } + if (video.dropped && video.independent) { + // Backtrack if dropped frames create a gap after currentTime + + var bufferInfo = this.getMainFwdBufferInfo(); + var targetBufferTime = (bufferInfo ? bufferInfo.end : this.getLoadPosition()) + this.config.maxBufferHole; + var startTime = video.firstKeyFramePTS ? video.firstKeyFramePTS : startPTS; + if (!isFirstFragment && targetBufferTime < startTime - this.config.maxBufferHole && !isFirstInDiscontinuity) { + this.backtrack(frag); + return; + } else if (isFirstInDiscontinuity) { + // Mark segment with a gap to avoid loop loading + frag.gap = true; + } + // Set video stream start to fragment start so that truncated samples do not distort the timeline, and mark it partial + frag.setElementaryStreamInfo(video.type, frag.start, endPTS, frag.start, endDTS, true); + } else if (isFirstFragment && startPTS > MAX_START_GAP_JUMP) { + // Mark segment with a gap to skip large start gap + frag.gap = true; + } + } + frag.setElementaryStreamInfo(video.type, startPTS, endPTS, startDTS, endDTS); + if (this.backtrackFragment) { + this.backtrackFragment = frag; + } + this.bufferFragmentData(video, frag, part, chunkMeta, isFirstFragment || isFirstInDiscontinuity); + } else if (isFirstFragment || isFirstInDiscontinuity) { + // Mark segment with a gap to avoid loop loading + frag.gap = true; + } else { + this.backtrack(frag); + return; + } + } + if (audio) { + var _startPTS = audio.startPTS, + _endPTS = audio.endPTS, + _startDTS = audio.startDTS, + _endDTS = audio.endDTS; + if (part) { + part.elementaryStreams[ElementaryStreamTypes.AUDIO] = { + startPTS: _startPTS, + endPTS: _endPTS, + startDTS: _startDTS, + endDTS: _endDTS + }; + } + frag.setElementaryStreamInfo(ElementaryStreamTypes.AUDIO, _startPTS, _endPTS, _startDTS, _endDTS); + this.bufferFragmentData(audio, frag, part, chunkMeta); + } + if (details && id3 != null && (_id3$samples = id3.samples) != null && _id3$samples.length) { + var emittedID3 = { + id: id, + frag: frag, + details: details, + samples: id3.samples + }; + hls.trigger(Events.FRAG_PARSING_METADATA, emittedID3); + } + if (details && text) { + var emittedText = { + id: id, + frag: frag, + details: details, + samples: text.samples + }; + hls.trigger(Events.FRAG_PARSING_USERDATA, emittedText); + } + }; + _proto._bufferInitSegment = function _bufferInitSegment(currentLevel, tracks, frag, chunkMeta) { + var _this3 = this; + if (this.state !== State.PARSING) { + return; + } + this.audioOnly = !!tracks.audio && !tracks.video; + + // if audio track is expected to come from audio stream controller, discard any coming from main + if (this.altAudio && !this.audioOnly) { + delete tracks.audio; + } + // include levelCodec in audio and video tracks + var audio = tracks.audio, + video = tracks.video, + audiovideo = tracks.audiovideo; + if (audio) { + var audioCodec = currentLevel.audioCodec; + var ua = navigator.userAgent.toLowerCase(); + if (this.audioCodecSwitch) { + if (audioCodec) { + if (audioCodec.indexOf('mp4a.40.5') !== -1) { + audioCodec = 'mp4a.40.2'; + } else { + audioCodec = 'mp4a.40.5'; + } + } + // In the case that AAC and HE-AAC audio codecs are signalled in manifest, + // force HE-AAC, as it seems that most browsers prefers it. + // don't force HE-AAC if mono stream, or in Firefox + var audioMetadata = audio.metadata; + if (audioMetadata && 'channelCount' in audioMetadata && (audioMetadata.channelCount || 1) !== 1 && ua.indexOf('firefox') === -1) { + audioCodec = 'mp4a.40.5'; + } + } + // HE-AAC is broken on Android, always signal audio codec as AAC even if variant manifest states otherwise + if (audioCodec && audioCodec.indexOf('mp4a.40.5') !== -1 && ua.indexOf('android') !== -1 && audio.container !== 'audio/mpeg') { + // Exclude mpeg audio + audioCodec = 'mp4a.40.2'; + this.log("Android: force audio codec to " + audioCodec); + } + if (currentLevel.audioCodec && currentLevel.audioCodec !== audioCodec) { + this.log("Swapping manifest audio codec \"" + currentLevel.audioCodec + "\" for \"" + audioCodec + "\""); + } + audio.levelCodec = audioCodec; + audio.id = 'main'; + this.log("Init audio buffer, container:" + audio.container + ", codecs[selected/level/parsed]=[" + (audioCodec || '') + "/" + (currentLevel.audioCodec || '') + "/" + audio.codec + "]"); + delete tracks.audiovideo; + } + if (video) { + video.levelCodec = currentLevel.videoCodec; + video.id = 'main'; + this.log("Init video buffer, container:" + video.container + ", codecs[level/parsed]=[" + (currentLevel.videoCodec || '') + "/" + video.codec + "]"); + delete tracks.audiovideo; + } + if (audiovideo) { + this.log("Init audiovideo buffer, container:" + audiovideo.container + ", codecs[level/parsed]=[" + currentLevel.codecs + "/" + audiovideo.codec + "]"); + delete tracks.video; + delete tracks.audio; + } + var trackTypes = Object.keys(tracks); + if (trackTypes.length) { + this.hls.trigger(Events.BUFFER_CODECS, tracks); + // loop through tracks that are going to be provided to bufferController + trackTypes.forEach(function (trackName) { + var track = tracks[trackName]; + var initSegment = track.initSegment; + if (initSegment != null && initSegment.byteLength) { + _this3.hls.trigger(Events.BUFFER_APPENDING, { + type: trackName, + data: initSegment, + frag: frag, + part: null, + chunkMeta: chunkMeta, + parent: frag.type + }); + } + }); + } + // trigger handler right now + this.tickImmediate(); + }; + _proto.getMainFwdBufferInfo = function getMainFwdBufferInfo() { + return this.getFwdBufferInfo(this.mediaBuffer ? this.mediaBuffer : this.media, PlaylistLevelType.MAIN); + }; + _proto.backtrack = function backtrack(frag) { + this.couldBacktrack = true; + // Causes findFragments to backtrack through fragments to find the keyframe + this.backtrackFragment = frag; + this.resetTransmuxer(); + this.flushBufferGap(frag); + this.fragmentTracker.removeFragment(frag); + this.fragPrevious = null; + this.nextLoadPosition = frag.start; + this.state = State.IDLE; + }; + _proto.checkFragmentChanged = function checkFragmentChanged() { + var video = this.media; + var fragPlayingCurrent = null; + if (video && video.readyState > 1 && video.seeking === false) { + var currentTime = video.currentTime; + /* if video element is in seeked state, currentTime can only increase. + (assuming that playback rate is positive ...) + As sometimes currentTime jumps back to zero after a + media decode error, check this, to avoid seeking back to + wrong position after a media decode error + */ + + if (BufferHelper.isBuffered(video, currentTime)) { + fragPlayingCurrent = this.getAppendedFrag(currentTime); + } else if (BufferHelper.isBuffered(video, currentTime + 0.1)) { + /* ensure that FRAG_CHANGED event is triggered at startup, + when first video frame is displayed and playback is paused. + add a tolerance of 100ms, in case current position is not buffered, + check if current pos+100ms is buffered and use that buffer range + for FRAG_CHANGED event reporting */ + fragPlayingCurrent = this.getAppendedFrag(currentTime + 0.1); + } + if (fragPlayingCurrent) { + this.backtrackFragment = null; + var fragPlaying = this.fragPlaying; + var fragCurrentLevel = fragPlayingCurrent.level; + if (!fragPlaying || fragPlayingCurrent.sn !== fragPlaying.sn || fragPlaying.level !== fragCurrentLevel) { + this.fragPlaying = fragPlayingCurrent; + this.hls.trigger(Events.FRAG_CHANGED, { + frag: fragPlayingCurrent + }); + if (!fragPlaying || fragPlaying.level !== fragCurrentLevel) { + this.hls.trigger(Events.LEVEL_SWITCHED, { + level: fragCurrentLevel + }); + } + } + } + } + }; + return _createClass(StreamController, [{ + key: "maxBufferLength", + get: function get() { + var levels = this.levels, + level = this.level; + var levelInfo = levels == null ? void 0 : levels[level]; + if (!levelInfo) { + return this.config.maxBufferLength; + } + return this.getMaxBufferLength(levelInfo.maxBitrate); + } + }, { + key: "nextLevel", + get: function get() { + var frag = this.nextBufferedFrag; + if (frag) { + return frag.level; + } + return -1; + } + }, { + key: "currentFrag", + get: function get() { + var _this$media2; + if (this.fragPlaying) { + return this.fragPlaying; + } + var currentTime = ((_this$media2 = this.media) == null ? void 0 : _this$media2.currentTime) || this.lastCurrentTime; + if (isFiniteNumber(currentTime)) { + return this.getAppendedFrag(currentTime); + } + return null; + } + }, { + key: "currentProgramDateTime", + get: function get() { + var _this$media3; + var currentTime = ((_this$media3 = this.media) == null ? void 0 : _this$media3.currentTime) || this.lastCurrentTime; + if (isFiniteNumber(currentTime)) { + var details = this.getLevelDetails(); + var frag = this.currentFrag || (details ? findFragmentByPTS(null, details.fragments, currentTime) : null); + if (frag) { + var programDateTime = frag.programDateTime; + if (programDateTime !== null) { + var epocMs = programDateTime + (currentTime - frag.start) * 1000; + return new Date(epocMs); + } + } + } + return null; + } + }, { + key: "currentLevel", + get: function get() { + var frag = this.currentFrag; + if (frag) { + return frag.level; + } + return -1; + } + }, { + key: "nextBufferedFrag", + get: function get() { + var frag = this.currentFrag; + if (frag) { + return this.followingBufferedFrag(frag); + } + return null; + } + }, { + key: "forceStartLoad", + get: function get() { + return this._forceStartLoad; + } + }]); + }(BaseStreamController); + + /** + * The `Hls` class is the core of the HLS.js library used to instantiate player instances. + * @public + */ + var Hls = /*#__PURE__*/function () { + /** + * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`. + * @param userConfig - Configuration options applied over `Hls.DefaultConfig` + */ + function Hls(userConfig) { + if (userConfig === void 0) { + userConfig = {}; + } + /** + * The runtime configuration used by the player. At instantiation this is combination of `hls.userConfig` merged over `Hls.DefaultConfig`. + */ + this.config = void 0; + /** + * The configuration object provided on player instantiation. + */ + this.userConfig = void 0; + /** + * The logger functions used by this player instance, configured on player instantiation. + */ + this.logger = void 0; + this.coreComponents = void 0; + this.networkControllers = void 0; + this._emitter = new EventEmitter(); + this._autoLevelCapping = -1; + this._maxHdcpLevel = null; + this.abrController = void 0; + this.bufferController = void 0; + this.capLevelController = void 0; + this.latencyController = void 0; + this.levelController = void 0; + this.streamController = void 0; + this.audioTrackController = void 0; + this.subtitleTrackController = void 0; + this.emeController = void 0; + this.cmcdController = void 0; + this._media = null; + this._url = null; + this.triggeringException = void 0; + var logger = this.logger = enableLogs(userConfig.debug || false, 'Hls instance'); + var config = this.config = mergeConfig(Hls.DefaultConfig, userConfig, logger); + this.userConfig = userConfig; + if (config.progressive) { + enableStreamingMode(config, logger); + } + + // core controllers and network loaders + var ConfigAbrController = config.abrController, + ConfigBufferController = config.bufferController, + ConfigCapLevelController = config.capLevelController, + ConfigErrorController = config.errorController, + ConfigFpsController = config.fpsController; + var errorController = new ConfigErrorController(this); + var abrController = this.abrController = new ConfigAbrController(this); + // FragmentTracker must be defined before StreamController because the order of event handling is important + var fragmentTracker = new FragmentTracker(this); + var bufferController = this.bufferController = new ConfigBufferController(this, fragmentTracker); + var capLevelController = this.capLevelController = new ConfigCapLevelController(this); + var fpsController = new ConfigFpsController(this); + var playListLoader = new PlaylistLoader(this); + var id3TrackController = new ID3TrackController(this); + var ConfigContentSteeringController = config.contentSteeringController; + // ContentSteeringController is defined before LevelController to receive Multivariant Playlist events first + var contentSteering = ConfigContentSteeringController ? new ConfigContentSteeringController(this) : null; + var levelController = this.levelController = new LevelController(this, contentSteering); + var keyLoader = new KeyLoader(this.config); + var streamController = this.streamController = new StreamController(this, fragmentTracker, keyLoader); + + // Cap level controller uses streamController to flush the buffer + capLevelController.setStreamController(streamController); + // fpsController uses streamController to switch when frames are being dropped + fpsController.setStreamController(streamController); + var networkControllers = [playListLoader, levelController, streamController]; + if (contentSteering) { + networkControllers.splice(1, 0, contentSteering); + } + this.networkControllers = networkControllers; + var coreComponents = [abrController, bufferController, capLevelController, fpsController, id3TrackController, fragmentTracker]; + this.audioTrackController = this.createController(config.audioTrackController, networkControllers); + var AudioStreamControllerClass = config.audioStreamController; + if (AudioStreamControllerClass) { + networkControllers.push(new AudioStreamControllerClass(this, fragmentTracker, keyLoader)); + } + // Instantiate subtitleTrackController before SubtitleStreamController to receive level events first + this.subtitleTrackController = this.createController(config.subtitleTrackController, networkControllers); + var SubtitleStreamControllerClass = config.subtitleStreamController; + if (SubtitleStreamControllerClass) { + networkControllers.push(new SubtitleStreamControllerClass(this, fragmentTracker, keyLoader)); + } + this.createController(config.timelineController, coreComponents); + keyLoader.emeController = this.emeController = this.createController(config.emeController, coreComponents); + this.cmcdController = this.createController(config.cmcdController, coreComponents); + this.latencyController = this.createController(LatencyController, coreComponents); + this.coreComponents = coreComponents; + + // Error controller handles errors before and after all other controllers + // This listener will be invoked after all other controllers error listeners + networkControllers.push(errorController); + var onErrorOut = errorController.onErrorOut; + if (typeof onErrorOut === 'function') { + this.on(Events.ERROR, onErrorOut, errorController); + } + } + /** + * Check if the required MediaSource Extensions are available. + */ + Hls.isMSESupported = function isMSESupported$1() { + return isMSESupported(); + } + + /** + * Check if MediaSource Extensions are available and isTypeSupported checks pass for any baseline codecs. + */; + Hls.isSupported = function isSupported$1() { + return isSupported(); + } + + /** + * Get the MediaSource global used for MSE playback (ManagedMediaSource, MediaSource, or WebKitMediaSource). + */; + Hls.getMediaSource = function getMediaSource$1() { + return getMediaSource(); + }; + var _proto = Hls.prototype; + _proto.createController = function createController(ControllerClass, components) { + if (ControllerClass) { + var controllerInstance = new ControllerClass(this); + if (components) { + components.push(controllerInstance); + } + return controllerInstance; + } + return null; + } + + // Delegate the EventEmitter through the public API of Hls.js + ; + _proto.on = function on(event, listener, context) { + if (context === void 0) { + context = this; + } + this._emitter.on(event, listener, context); + }; + _proto.once = function once(event, listener, context) { + if (context === void 0) { + context = this; + } + this._emitter.once(event, listener, context); + }; + _proto.removeAllListeners = function removeAllListeners(event) { + this._emitter.removeAllListeners(event); + }; + _proto.off = function off(event, listener, context, once) { + if (context === void 0) { + context = this; + } + this._emitter.off(event, listener, context, once); + }; + _proto.listeners = function listeners(event) { + return this._emitter.listeners(event); + }; + _proto.emit = function emit(event, name, eventObject) { + return this._emitter.emit(event, name, eventObject); + }; + _proto.trigger = function trigger(event, eventObject) { + if (this.config.debug) { + return this.emit(event, event, eventObject); + } else { + try { + return this.emit(event, event, eventObject); + } catch (error) { + this.logger.error('An internal error happened while handling event ' + event + '. Error message: "' + error.message + '". Here is a stacktrace:', error); + // Prevent recursion in error event handlers that throw #5497 + if (!this.triggeringException) { + this.triggeringException = true; + var fatal = event === Events.ERROR; + this.trigger(Events.ERROR, { + type: ErrorTypes.OTHER_ERROR, + details: ErrorDetails.INTERNAL_EXCEPTION, + fatal: fatal, + event: event, + error: error + }); + this.triggeringException = false; + } + } + } + return false; + }; + _proto.listenerCount = function listenerCount(event) { + return this._emitter.listenerCount(event); + } + + /** + * Dispose of the instance + */; + _proto.destroy = function destroy() { + this.logger.log('destroy'); + this.trigger(Events.DESTROYING, undefined); + this.detachMedia(); + this.removeAllListeners(); + this._autoLevelCapping = -1; + this._url = null; + this.networkControllers.forEach(function (component) { + return component.destroy(); + }); + this.networkControllers.length = 0; + this.coreComponents.forEach(function (component) { + return component.destroy(); + }); + this.coreComponents.length = 0; + // Remove any references that could be held in config options or callbacks + var config = this.config; + config.xhrSetup = config.fetchSetup = undefined; + // @ts-ignore + this.userConfig = null; + } + + /** + * Attaches Hls.js to a media element + */; + _proto.attachMedia = function attachMedia(media) { + if (!media) { + var error = new Error("attachMedia failed: media argument is " + media); + this.trigger(Events.ERROR, { + type: ErrorTypes.OTHER_ERROR, + details: ErrorDetails.ATTACH_MEDIA_ERROR, + fatal: true, + error: error + }); + return; + } + this.logger.log('attachMedia'); + this._media = media; + this.trigger(Events.MEDIA_ATTACHING, { + media: media + }); + } + + /** + * Detach Hls.js from the media + */; + _proto.detachMedia = function detachMedia() { + this.logger.log('detachMedia'); + this.trigger(Events.MEDIA_DETACHING, undefined); + this._media = null; + } + + /** + * Set the source URL. Can be relative or absolute. + */; + _proto.loadSource = function loadSource(url) { + this.stopLoad(); + var media = this.media; + var loadedSource = this._url; + var loadingSource = this._url = urlToolkitExports.buildAbsoluteURL(self.location.href, url, { + alwaysNormalize: true + }); + this._autoLevelCapping = -1; + this._maxHdcpLevel = null; + this.logger.log("loadSource:" + loadingSource); + if (media && loadedSource && (loadedSource !== loadingSource || this.bufferController.hasSourceTypes())) { + this.detachMedia(); + this.attachMedia(media); + } + // when attaching to a source URL, trigger a playlist load + this.trigger(Events.MANIFEST_LOADING, { + url: url + }); + } + + /** + * Gets the currently loaded URL + */; + /** + * Start loading data from the stream source. + * Depending on default config, client starts loading automatically when a source is set. + * + * @param startPosition - Set the start position to stream from. + * Defaults to -1 (None: starts from earliest point) + */ + _proto.startLoad = function startLoad(startPosition) { + if (startPosition === void 0) { + startPosition = -1; + } + this.logger.log("startLoad(" + startPosition + ")"); + this.networkControllers.forEach(function (controller) { + controller.startLoad(startPosition); + }); + } + + /** + * Stop loading of any stream data. + */; + _proto.stopLoad = function stopLoad() { + this.logger.log('stopLoad'); + this.networkControllers.forEach(function (controller) { + controller.stopLoad(); + }); + } + + /** + * Resumes stream controller segment loading after `pauseBuffering` has been called. + */; + _proto.resumeBuffering = function resumeBuffering() { + this.networkControllers.forEach(function (controller) { + if (controller.resumeBuffering) { + controller.resumeBuffering(); + } + }); + } + + /** + * Prevents stream controller from loading new segments until `resumeBuffering` is called. + * This allows for media buffering to be paused without interupting playlist loading. + */; + _proto.pauseBuffering = function pauseBuffering() { + this.networkControllers.forEach(function (controller) { + if (controller.pauseBuffering) { + controller.pauseBuffering(); + } + }); + } + + /** + * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1) + */; + _proto.swapAudioCodec = function swapAudioCodec() { + this.logger.log('swapAudioCodec'); + this.streamController.swapAudioCodec(); + } + + /** + * When the media-element fails, this allows to detach and then re-attach it + * as one call (convenience method). + * + * Automatic recovery of media-errors by this process is configurable. + */; + _proto.recoverMediaError = function recoverMediaError() { + this.logger.log('recoverMediaError'); + var media = this._media; + this.detachMedia(); + if (media) { + this.attachMedia(media); + } + }; + _proto.removeLevel = function removeLevel(levelIndex) { + this.levelController.removeLevel(levelIndex); + } + + /** + * @returns an array of levels (variants) sorted by HDCP-LEVEL, RESOLUTION (height), FRAME-RATE, CODECS, VIDEO-RANGE, and BANDWIDTH + */; + /** + * Find and select the best matching audio track, making a level switch when a Group change is necessary. + * Updates `hls.config.audioPreference`. Returns the selected track, or null when no matching track is found. + */ + _proto.setAudioOption = function setAudioOption(audioOption) { + var _this$audioTrackContr; + return ((_this$audioTrackContr = this.audioTrackController) == null ? void 0 : _this$audioTrackContr.setAudioOption(audioOption)) || null; + } + /** + * Find and select the best matching subtitle track, making a level switch when a Group change is necessary. + * Updates `hls.config.subtitlePreference`. Returns the selected track, or null when no matching track is found. + */; + _proto.setSubtitleOption = function setSubtitleOption(subtitleOption) { + var _this$subtitleTrackCo; + return ((_this$subtitleTrackCo = this.subtitleTrackController) == null ? void 0 : _this$subtitleTrackCo.setSubtitleOption(subtitleOption)) || null; + } + + /** + * Get the complete list of audio tracks across all media groups + */; + return _createClass(Hls, [{ + key: "url", + get: function get() { + return this._url; + } + }, { + key: "levels", + get: function get() { + var levels = this.levelController.levels; + return levels ? levels : []; + } + + /** + * Index of quality level (variant) currently played + */ + }, { + key: "currentLevel", + get: function get() { + return this.streamController.currentLevel; + } + + /** + * Set quality level index immediately. This will flush the current buffer to replace the quality asap. That means playback will interrupt at least shortly to re-buffer and re-sync eventually. Set to -1 for automatic level selection. + */, + set: function set(newLevel) { + this.logger.log("set currentLevel:" + newLevel); + this.levelController.manualLevel = newLevel; + this.streamController.immediateLevelSwitch(); + } + + /** + * Index of next quality level loaded as scheduled by stream controller. + */ + }, { + key: "nextLevel", + get: function get() { + return this.streamController.nextLevel; + } + + /** + * Set quality level index for next loaded data. + * This will switch the video quality asap, without interrupting playback. + * May abort current loading of data, and flush parts of buffer (outside currently played fragment region). + * @param newLevel - Pass -1 for automatic level selection + */, + set: function set(newLevel) { + this.logger.log("set nextLevel:" + newLevel); + this.levelController.manualLevel = newLevel; + this.streamController.nextLevelSwitch(); + } + + /** + * Return the quality level of the currently or last (of none is loaded currently) segment + */ + }, { + key: "loadLevel", + get: function get() { + return this.levelController.level; + } + + /** + * Set quality level index for next loaded data in a conservative way. + * This will switch the quality without flushing, but interrupt current loading. + * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer. + * @param newLevel - Pass -1 for automatic level selection + */, + set: function set(newLevel) { + this.logger.log("set loadLevel:" + newLevel); + this.levelController.manualLevel = newLevel; + } + + /** + * get next quality level loaded + */ + }, { + key: "nextLoadLevel", + get: function get() { + return this.levelController.nextLoadLevel; + } + + /** + * Set quality level of next loaded segment in a fully "non-destructive" way. + * Same as `loadLevel` but will wait for next switch (until current loading is done). + */, + set: function set(level) { + this.levelController.nextLoadLevel = level; + } + + /** + * Return "first level": like a default level, if not set, + * falls back to index of first level referenced in manifest + */ + }, { + key: "firstLevel", + get: function get() { + return Math.max(this.levelController.firstLevel, this.minAutoLevel); + } + + /** + * Sets "first-level", see getter. + */, + set: function set(newLevel) { + this.logger.log("set firstLevel:" + newLevel); + this.levelController.firstLevel = newLevel; + } + + /** + * Return the desired start level for the first fragment that will be loaded. + * The default value of -1 indicates automatic start level selection. + * Setting hls.nextAutoLevel without setting a startLevel will result in + * the nextAutoLevel value being used for one fragment load. + */ + }, { + key: "startLevel", + get: function get() { + var startLevel = this.levelController.startLevel; + if (startLevel === -1 && this.abrController.forcedAutoLevel > -1) { + return this.abrController.forcedAutoLevel; + } + return startLevel; + } + + /** + * set start level (level of first fragment that will be played back) + * if not overrided by user, first level appearing in manifest will be used as start level + * if -1 : automatic start level selection, playback will start from level matching download bandwidth + * (determined from download of first segment) + */, + set: function set(newLevel) { + this.logger.log("set startLevel:" + newLevel); + // if not in automatic start level detection, ensure startLevel is greater than minAutoLevel + if (newLevel !== -1) { + newLevel = Math.max(newLevel, this.minAutoLevel); + } + this.levelController.startLevel = newLevel; + } + + /** + * Whether level capping is enabled. + * Default value is set via `config.capLevelToPlayerSize`. + */ + }, { + key: "capLevelToPlayerSize", + get: function get() { + return this.config.capLevelToPlayerSize; + } + + /** + * Enables or disables level capping. If disabled after previously enabled, `nextLevelSwitch` will be immediately called. + */, + set: function set(shouldStartCapping) { + var newCapLevelToPlayerSize = !!shouldStartCapping; + if (newCapLevelToPlayerSize !== this.config.capLevelToPlayerSize) { + if (newCapLevelToPlayerSize) { + this.capLevelController.startCapping(); // If capping occurs, nextLevelSwitch will happen based on size. + } else { + this.capLevelController.stopCapping(); + this.autoLevelCapping = -1; + this.streamController.nextLevelSwitch(); // Now we're uncapped, get the next level asap. + } + this.config.capLevelToPlayerSize = newCapLevelToPlayerSize; + } + } + + /** + * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`) + */ + }, { + key: "autoLevelCapping", + get: function get() { + return this._autoLevelCapping; + } + + /** + * Returns the current bandwidth estimate in bits per second, when available. Otherwise, `NaN` is returned. + */, + set: + /** + * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`) + */ + function set(newLevel) { + if (this._autoLevelCapping !== newLevel) { + this.logger.log("set autoLevelCapping:" + newLevel); + this._autoLevelCapping = newLevel; + this.levelController.checkMaxAutoUpdated(); + } + } + }, { + key: "bandwidthEstimate", + get: function get() { + var bwEstimator = this.abrController.bwEstimator; + if (!bwEstimator) { + return NaN; + } + return bwEstimator.getEstimate(); + }, + set: function set(abrEwmaDefaultEstimate) { + this.abrController.resetEstimator(abrEwmaDefaultEstimate); + } + + /** + * get time to first byte estimate + * @type {number} + */ + }, { + key: "ttfbEstimate", + get: function get() { + var bwEstimator = this.abrController.bwEstimator; + if (!bwEstimator) { + return NaN; + } + return bwEstimator.getEstimateTTFB(); + } + }, { + key: "maxHdcpLevel", + get: function get() { + return this._maxHdcpLevel; + }, + set: function set(value) { + if (isHdcpLevel(value) && this._maxHdcpLevel !== value) { + this._maxHdcpLevel = value; + this.levelController.checkMaxAutoUpdated(); + } + } + + /** + * True when automatic level selection enabled + */ + }, { + key: "autoLevelEnabled", + get: function get() { + return this.levelController.manualLevel === -1; + } + + /** + * Level set manually (if any) + */ + }, { + key: "manualLevel", + get: function get() { + return this.levelController.manualLevel; + } + + /** + * min level selectable in auto mode according to config.minAutoBitrate + */ + }, { + key: "minAutoLevel", + get: function get() { + var levels = this.levels, + minAutoBitrate = this.config.minAutoBitrate; + if (!levels) return 0; + var len = levels.length; + for (var i = 0; i < len; i++) { + if (levels[i].maxBitrate >= minAutoBitrate) { + return i; + } + } + return 0; + } + + /** + * max level selectable in auto mode according to autoLevelCapping + */ + }, { + key: "maxAutoLevel", + get: function get() { + var levels = this.levels, + autoLevelCapping = this.autoLevelCapping, + maxHdcpLevel = this.maxHdcpLevel; + var maxAutoLevel; + if (autoLevelCapping === -1 && levels != null && levels.length) { + maxAutoLevel = levels.length - 1; + } else { + maxAutoLevel = autoLevelCapping; + } + if (maxHdcpLevel) { + for (var i = maxAutoLevel; i--;) { + var hdcpLevel = levels[i].attrs['HDCP-LEVEL']; + if (hdcpLevel && hdcpLevel <= maxHdcpLevel) { + return i; + } + } + } + return maxAutoLevel; + } + }, { + key: "firstAutoLevel", + get: function get() { + return this.abrController.firstAutoLevel; + } + + /** + * next automatically selected quality level + */ + }, { + key: "nextAutoLevel", + get: function get() { + return this.abrController.nextAutoLevel; + } + + /** + * this setter is used to force next auto level. + * this is useful to force a switch down in auto mode: + * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example) + * forced value is valid for one fragment. upon successful frag loading at forced level, + * this value will be resetted to -1 by ABR controller. + */, + set: function set(nextLevel) { + this.abrController.nextAutoLevel = nextLevel; + } + + /** + * get the datetime value relative to media.currentTime for the active level Program Date Time if present + */ + }, { + key: "playingDate", + get: function get() { + return this.streamController.currentProgramDateTime; + } + }, { + key: "mainForwardBufferInfo", + get: function get() { + return this.streamController.getMainFwdBufferInfo(); + } + }, { + key: "maxBufferLength", + get: function get() { + return this.streamController.maxBufferLength; + } + }, { + key: "allAudioTracks", + get: function get() { + var audioTrackController = this.audioTrackController; + return audioTrackController ? audioTrackController.allAudioTracks : []; + } + + /** + * Get the list of selectable audio tracks + */ + }, { + key: "audioTracks", + get: function get() { + var audioTrackController = this.audioTrackController; + return audioTrackController ? audioTrackController.audioTracks : []; + } + + /** + * index of the selected audio track (index in audio track lists) + */ + }, { + key: "audioTrack", + get: function get() { + var audioTrackController = this.audioTrackController; + return audioTrackController ? audioTrackController.audioTrack : -1; + } + + /** + * selects an audio track, based on its index in audio track lists + */, + set: function set(audioTrackId) { + var audioTrackController = this.audioTrackController; + if (audioTrackController) { + audioTrackController.audioTrack = audioTrackId; + } + } + + /** + * get the complete list of subtitle tracks across all media groups + */ + }, { + key: "allSubtitleTracks", + get: function get() { + var subtitleTrackController = this.subtitleTrackController; + return subtitleTrackController ? subtitleTrackController.allSubtitleTracks : []; + } + + /** + * get alternate subtitle tracks list from playlist + */ + }, { + key: "subtitleTracks", + get: function get() { + var subtitleTrackController = this.subtitleTrackController; + return subtitleTrackController ? subtitleTrackController.subtitleTracks : []; + } + + /** + * index of the selected subtitle track (index in subtitle track lists) + */ + }, { + key: "subtitleTrack", + get: function get() { + var subtitleTrackController = this.subtitleTrackController; + return subtitleTrackController ? subtitleTrackController.subtitleTrack : -1; + }, + set: + /** + * select an subtitle track, based on its index in subtitle track lists + */ + function set(subtitleTrackId) { + var subtitleTrackController = this.subtitleTrackController; + if (subtitleTrackController) { + subtitleTrackController.subtitleTrack = subtitleTrackId; + } + } + + /** + * Whether subtitle display is enabled or not + */ + }, { + key: "media", + get: function get() { + return this._media; + } + }, { + key: "subtitleDisplay", + get: function get() { + var subtitleTrackController = this.subtitleTrackController; + return subtitleTrackController ? subtitleTrackController.subtitleDisplay : false; + } + + /** + * Enable/disable subtitle display rendering + */, + set: function set(value) { + var subtitleTrackController = this.subtitleTrackController; + if (subtitleTrackController) { + subtitleTrackController.subtitleDisplay = value; + } + } + + /** + * get mode for Low-Latency HLS loading + */ + }, { + key: "lowLatencyMode", + get: function get() { + return this.config.lowLatencyMode; + } + + /** + * Enable/disable Low-Latency HLS part playlist and segment loading, and start live streams at playlist PART-HOLD-BACK rather than HOLD-BACK. + */, + set: function set(mode) { + this.config.lowLatencyMode = mode; + } + + /** + * Position (in seconds) of live sync point (ie edge of live position minus safety delay defined by ```hls.config.liveSyncDuration```) + * @returns null prior to loading live Playlist + */ + }, { + key: "liveSyncPosition", + get: function get() { + return this.latencyController.liveSyncPosition; + } + + /** + * Estimated position (in seconds) of live edge (ie edge of live playlist plus time sync playlist advanced) + * @returns 0 before first playlist is loaded + */ + }, { + key: "latency", + get: function get() { + return this.latencyController.latency; + } + + /** + * maximum distance from the edge before the player seeks forward to ```hls.liveSyncPosition``` + * configured using ```liveMaxLatencyDurationCount``` (multiple of target duration) or ```liveMaxLatencyDuration``` + * @returns 0 before first playlist is loaded + */ + }, { + key: "maxLatency", + get: function get() { + return this.latencyController.maxLatency; + } + + /** + * target distance from the edge as calculated by the latency controller + */ + }, { + key: "targetLatency", + get: function get() { + return this.latencyController.targetLatency; + }, + set: function set(latency) { + this.latencyController.targetLatency = latency; + } + + /** + * the rate at which the edge of the current live playlist is advancing or 1 if there is none + */ + }, { + key: "drift", + get: function get() { + return this.latencyController.drift; + } + + /** + * set to true when startLoad is called before MANIFEST_PARSED event + */ + }, { + key: "forceStartLoad", + get: function get() { + return this.streamController.forceStartLoad; + } + + /** + * ContentSteering pathwayPriority getter/setter + */ + }, { + key: "pathwayPriority", + get: function get() { + return this.levelController.pathwayPriority; + }, + set: function set(pathwayPriority) { + this.levelController.pathwayPriority = pathwayPriority; + } + }], [{ + key: "version", + get: + /** + * Get the video-dev/hls.js package version. + */ + function get() { + return version; + } + }, { + key: "Events", + get: function get() { + return Events; + } + }, { + key: "ErrorTypes", + get: function get() { + return ErrorTypes; + } + }, { + key: "ErrorDetails", + get: function get() { + return ErrorDetails; + } + + /** + * Get the default configuration applied to new instances. + */ + }, { + key: "DefaultConfig", + get: function get() { + if (!Hls.defaultConfig) { + return hlsDefaultConfig; + } + return Hls.defaultConfig; + } + + /** + * Replace the default configuration applied to new instances. + */, + set: function set(defaultConfig) { + Hls.defaultConfig = defaultConfig; + } + }]); + }(); + Hls.defaultConfig = void 0; + + return Hls; + +})); +})(false); +/*! mp4box 19-03-2022 */ + +var Log=function(){var i=new Date,r=4;return{setLogLevel:function(t){r=t==this.debug?1:t==this.info?2:t==this.warn?3:(this.error,4)},debug:function(t,e){void 0===console.debug&&(console.debug=console.log),r<=1&&console.debug("["+Log.getDurationString(new Date-i,1e3)+"]","["+t+"]",e)},log:function(t,e){this.debug(t.msg)},info:function(t,e){r<=2&&console.info("["+Log.getDurationString(new Date-i,1e3)+"]","["+t+"]",e)},warn:function(t,e){r<=3&&console.warn("["+Log.getDurationString(new Date-i,1e3)+"]","["+t+"]",e)},error:function(t,e){r<=4&&console.error("["+Log.getDurationString(new Date-i,1e3)+"]","["+t+"]",e)}}}();Log.getDurationString=function(t,e){var i;function r(t,e){for(var i=(""+t).split(".");i[0].length<e;)i[0]="0"+i[0];return i.join(".")}t<0?(i=!0,t=-t):i=!1;var s=t/(e||1),a=Math.floor(s/3600);s-=3600*a;t=Math.floor(s/60),e=1e3*(s-=60*t);return e-=1e3*(s=Math.floor(s)),e=Math.floor(e),(i?"-":"")+a+":"+r(t,2)+":"+r(s,2)+"."+r(e,3)},Log.printRanges=function(t){var e=t.length;if(0<e){for(var i="",r=0;r<e;r++)0<r&&(i+=","),i+="["+Log.getDurationString(t.start(r))+","+Log.getDurationString(t.end(r))+"]";return i}return"(empty)"},"undefined"!=typeof exports&&(exports.Log=Log);var MP4BoxStream=function(t){if(!(t instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=t,this.dataview=new DataView(t),this.position=0};MP4BoxStream.prototype.getPosition=function(){return this.position},MP4BoxStream.prototype.getEndPosition=function(){return this.buffer.byteLength},MP4BoxStream.prototype.getLength=function(){return this.buffer.byteLength},MP4BoxStream.prototype.seek=function(t){t=Math.max(0,Math.min(this.buffer.byteLength,t));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},MP4BoxStream.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},MP4BoxStream.prototype.readAnyInt=function(t,e){var i=0;if(this.position+t<=this.buffer.byteLength){switch(t){case 1:i=e?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:i=e?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(e)throw"No method for reading signed 24 bits values";i=this.dataview.getUint8(this.position)<<16,i|=this.dataview.getUint8(this.position+1)<<8,i|=this.dataview.getUint8(this.position+2);break;case 4:i=e?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(e)throw"No method for reading signed 64 bits values";i=this.dataview.getUint32(this.position)<<32,i|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+t}return this.position+=t,i}throw"Not enough bytes in buffer"},MP4BoxStream.prototype.readUint8=function(){return this.readAnyInt(1,!1)},MP4BoxStream.prototype.readUint16=function(){return this.readAnyInt(2,!1)},MP4BoxStream.prototype.readUint24=function(){return this.readAnyInt(3,!1)},MP4BoxStream.prototype.readUint32=function(){return this.readAnyInt(4,!1)},MP4BoxStream.prototype.readUint64=function(){return this.readAnyInt(8,!1)},MP4BoxStream.prototype.readString=function(t){if(this.position+t<=this.buffer.byteLength){for(var e="",i=0;i<t;i++)e+=String.fromCharCode(this.readUint8());return e}throw"Not enough bytes in buffer"},MP4BoxStream.prototype.readCString=function(){for(var t=[];;){var e=this.readUint8();if(0===e)break;t.push(e)}return String.fromCharCode.apply(null,t)},MP4BoxStream.prototype.readInt8=function(){return this.readAnyInt(1,!0)},MP4BoxStream.prototype.readInt16=function(){return this.readAnyInt(2,!0)},MP4BoxStream.prototype.readInt32=function(){return this.readAnyInt(4,!0)},MP4BoxStream.prototype.readInt64=function(){return this.readAnyInt(8,!1)},MP4BoxStream.prototype.readUint8Array=function(t){for(var e=new Uint8Array(t),i=0;i<t;i++)e[i]=this.readUint8();return e},MP4BoxStream.prototype.readInt16Array=function(t){for(var e=new Int16Array(t),i=0;i<t;i++)e[i]=this.readInt16();return e},MP4BoxStream.prototype.readUint16Array=function(t){for(var e=new Int16Array(t),i=0;i<t;i++)e[i]=this.readUint16();return e},MP4BoxStream.prototype.readUint32Array=function(t){for(var e=new Uint32Array(t),i=0;i<t;i++)e[i]=this.readUint32();return e},MP4BoxStream.prototype.readInt32Array=function(t){for(var e=new Int32Array(t),i=0;i<t;i++)e[i]=this.readInt32();return e},"undefined"!=typeof exports&&(exports.MP4BoxStream=MP4BoxStream);var DataStream=function(t,e,i){this._byteOffset=e||0,t instanceof ArrayBuffer?this.buffer=t:"object"==typeof t?(this.dataView=t,e&&(this._byteOffset+=e)):this.buffer=new ArrayBuffer(t||0),this.position=0,this.endianness=null==i?DataStream.LITTLE_ENDIAN:i};DataStream.prototype={},DataStream.prototype.getPosition=function(){return this.position},DataStream.prototype._realloc=function(t){if(this._dynamicSize){var e=this._byteOffset+this.position+t,i=this._buffer.byteLength;if(e<=i)e>this._byteLength&&(this._byteLength=e);else{for(i<1&&(i=1);i<e;)i*=2;var r=new ArrayBuffer(i),t=new Uint8Array(this._buffer);new Uint8Array(r,0,t.length).set(t),this.buffer=r,this._byteLength=e}}},DataStream.prototype._trimAlloc=function(){var t,e,i;this._byteLength!=this._buffer.byteLength&&(t=new ArrayBuffer(this._byteLength),e=new Uint8Array(t),i=new Uint8Array(this._buffer,0,e.length),e.set(i),this.buffer=t)},DataStream.BIG_ENDIAN=!1,DataStream.LITTLE_ENDIAN=!0,DataStream.prototype._byteLength=0,Object.defineProperty(DataStream.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(DataStream.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(t){this._buffer=t,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(DataStream.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(t){this._byteOffset=t,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(DataStream.prototype,"dataView",{get:function(){return this._dataView},set:function(t){this._byteOffset=t.byteOffset,this._buffer=t.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+t.byteLength}}),DataStream.prototype.seek=function(t){t=Math.max(0,Math.min(this.byteLength,t));this.position=isNaN(t)||!isFinite(t)?0:t},DataStream.prototype.isEof=function(){return this.position>=this._byteLength},DataStream.prototype.mapUint8Array=function(t){this._realloc(+t);var e=new Uint8Array(this._buffer,this.byteOffset+this.position,t);return this.position+=+t,e},DataStream.prototype.readInt32Array=function(t,e){t=null==t?this.byteLength-this.position/4:t;var i=new Int32Array(t);return DataStream.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),DataStream.arrayToNative(i,null==e?this.endianness:e),this.position+=i.byteLength,i},DataStream.prototype.readInt16Array=function(t,e){t=null==t?this.byteLength-this.position/2:t;var i=new Int16Array(t);return DataStream.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),DataStream.arrayToNative(i,null==e?this.endianness:e),this.position+=i.byteLength,i},DataStream.prototype.readInt8Array=function(t){t=null==t?this.byteLength-this.position:t;var e=new Int8Array(t);return DataStream.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,t*e.BYTES_PER_ELEMENT),this.position+=e.byteLength,e},DataStream.prototype.readUint32Array=function(t,e){t=null==t?this.byteLength-this.position/4:t;var i=new Uint32Array(t);return DataStream.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),DataStream.arrayToNative(i,null==e?this.endianness:e),this.position+=i.byteLength,i},DataStream.prototype.readUint16Array=function(t,e){t=null==t?this.byteLength-this.position/2:t;var i=new Uint16Array(t);return DataStream.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),DataStream.arrayToNative(i,null==e?this.endianness:e),this.position+=i.byteLength,i},DataStream.prototype.readUint8Array=function(t){t=null==t?this.byteLength-this.position:t;var e=new Uint8Array(t);return DataStream.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,t*e.BYTES_PER_ELEMENT),this.position+=e.byteLength,e},DataStream.prototype.readFloat64Array=function(t,e){t=null==t?this.byteLength-this.position/8:t;var i=new Float64Array(t);return DataStream.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),DataStream.arrayToNative(i,null==e?this.endianness:e),this.position+=i.byteLength,i},DataStream.prototype.readFloat32Array=function(t,e){t=null==t?this.byteLength-this.position/4:t;var i=new Float32Array(t);return DataStream.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,t*i.BYTES_PER_ELEMENT),DataStream.arrayToNative(i,null==e?this.endianness:e),this.position+=i.byteLength,i},DataStream.prototype.readInt32=function(t){t=this._dataView.getInt32(this.position,null==t?this.endianness:t);return this.position+=4,t},DataStream.prototype.readInt16=function(t){t=this._dataView.getInt16(this.position,null==t?this.endianness:t);return this.position+=2,t},DataStream.prototype.readInt8=function(){var t=this._dataView.getInt8(this.position);return this.position+=1,t},DataStream.prototype.readUint32=function(t){t=this._dataView.getUint32(this.position,null==t?this.endianness:t);return this.position+=4,t},DataStream.prototype.readUint16=function(t){t=this._dataView.getUint16(this.position,null==t?this.endianness:t);return this.position+=2,t},DataStream.prototype.readUint8=function(){var t=this._dataView.getUint8(this.position);return this.position+=1,t},DataStream.prototype.readFloat32=function(t){t=this._dataView.getFloat32(this.position,null==t?this.endianness:t);return this.position+=4,t},DataStream.prototype.readFloat64=function(t){t=this._dataView.getFloat64(this.position,null==t?this.endianness:t);return this.position+=8,t},DataStream.endianness=0<new Int8Array(new Int16Array([1]).buffer)[0],DataStream.memcpy=function(t,e,i,r,s){e=new Uint8Array(t,e,s),s=new Uint8Array(i,r,s);e.set(s)},DataStream.arrayToNative=function(t,e){return e==this.endianness?t:this.flipArrayEndianness(t)},DataStream.nativeToEndian=function(t,e){return this.endianness==e?t:this.flipArrayEndianness(t)},DataStream.flipArrayEndianness=function(t){for(var e=new Uint8Array(t.buffer,t.byteOffset,t.byteLength),i=0;i<t.byteLength;i+=t.BYTES_PER_ELEMENT)for(var r=i+t.BYTES_PER_ELEMENT-1,s=i;s<r;r--,s++){var a=e[s];e[s]=e[r],e[r]=a}return t},DataStream.prototype.failurePosition=0,String.fromCharCodeUint8=function(t){for(var e=[],i=0;i<t.length;i++)e[i]=t[i];return String.fromCharCode.apply(null,e)},DataStream.prototype.readString=function(t,e){return null==e||"ASCII"==e?String.fromCharCodeUint8.apply(null,[this.mapUint8Array(null==t?this.byteLength-this.position:t)]):new TextDecoder(e).decode(this.mapUint8Array(t))},DataStream.prototype.readCString=function(t){var e=this.byteLength-this.position,i=new Uint8Array(this._buffer,this._byteOffset+this.position),r=e;null!=t&&(r=Math.min(t,e));for(var s=0;s<r&&0!==i[s];s++);var a=String.fromCharCodeUint8.apply(null,[this.mapUint8Array(s)]);return null!=t?this.position+=r-s:s!=e&&(this.position+=1),a};var MAX_SIZE=Math.pow(2,32);DataStream.prototype.readInt64=function(){return this.readInt32()*MAX_SIZE+this.readUint32()},DataStream.prototype.readUint64=function(){return this.readUint32()*MAX_SIZE+this.readUint32()},DataStream.prototype.readInt64=function(){return this.readUint32()*MAX_SIZE+this.readUint32()},DataStream.prototype.readUint24=function(){return(this.readUint8()<<16)+(this.readUint8()<<8)+this.readUint8()},"undefined"!=typeof exports&&(exports.DataStream=DataStream),DataStream.prototype.save=function(t){var e=new Blob([this.buffer]);if(!window.URL||!URL.createObjectURL)throw"DataStream.save: Can't create object URL.";var i=window.URL.createObjectURL(e),e=document.createElement("a");document.body.appendChild(e),e.setAttribute("href",i),e.setAttribute("download",t),e.setAttribute("target","_self"),e.click(),window.URL.revokeObjectURL(i)},DataStream.prototype._dynamicSize=!0,Object.defineProperty(DataStream.prototype,"dynamicSize",{get:function(){return this._dynamicSize},set:function(t){t||this._trimAlloc(),this._dynamicSize=t}}),DataStream.prototype.shift=function(t){var e=new ArrayBuffer(this._byteLength-t),i=new Uint8Array(e),r=new Uint8Array(this._buffer,t,i.length);i.set(r),this.buffer=e,this.position-=t},DataStream.prototype.writeInt32Array=function(t,e){if(this._realloc(4*t.length),t instanceof Int32Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)DataStream.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapInt32Array(t.length,e);else for(var i=0;i<t.length;i++)this.writeInt32(t[i],e)},DataStream.prototype.writeInt16Array=function(t,e){if(this._realloc(2*t.length),t instanceof Int16Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)DataStream.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapInt16Array(t.length,e);else for(var i=0;i<t.length;i++)this.writeInt16(t[i],e)},DataStream.prototype.writeInt8Array=function(t){if(this._realloc(+t.length),t instanceof Int8Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)DataStream.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapInt8Array(t.length);else for(var e=0;e<t.length;e++)this.writeInt8(t[e])},DataStream.prototype.writeUint32Array=function(t,e){if(this._realloc(4*t.length),t instanceof Uint32Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)DataStream.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapUint32Array(t.length,e);else for(var i=0;i<t.length;i++)this.writeUint32(t[i],e)},DataStream.prototype.writeUint16Array=function(t,e){if(this._realloc(2*t.length),t instanceof Uint16Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)DataStream.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapUint16Array(t.length,e);else for(var i=0;i<t.length;i++)this.writeUint16(t[i],e)},DataStream.prototype.writeUint8Array=function(t){if(this._realloc(+t.length),t instanceof Uint8Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)DataStream.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapUint8Array(t.length);else for(var e=0;e<t.length;e++)this.writeUint8(t[e])},DataStream.prototype.writeFloat64Array=function(t,e){if(this._realloc(8*t.length),t instanceof Float64Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)DataStream.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapFloat64Array(t.length,e);else for(var i=0;i<t.length;i++)this.writeFloat64(t[i],e)},DataStream.prototype.writeFloat32Array=function(t,e){if(this._realloc(4*t.length),t instanceof Float32Array&&this.byteOffset+this.position%t.BYTES_PER_ELEMENT===0)DataStream.memcpy(this._buffer,this.byteOffset+this.position,t.buffer,0,t.byteLength),this.mapFloat32Array(t.length,e);else for(var i=0;i<t.length;i++)this.writeFloat32(t[i],e)},DataStream.prototype.writeInt32=function(t,e){this._realloc(4),this._dataView.setInt32(this.position,t,null==e?this.endianness:e),this.position+=4},DataStream.prototype.writeInt16=function(t,e){this._realloc(2),this._dataView.setInt16(this.position,t,null==e?this.endianness:e),this.position+=2},DataStream.prototype.writeInt8=function(t){this._realloc(1),this._dataView.setInt8(this.position,t),this.position+=1},DataStream.prototype.writeUint32=function(t,e){this._realloc(4),this._dataView.setUint32(this.position,t,null==e?this.endianness:e),this.position+=4},DataStream.prototype.writeUint16=function(t,e){this._realloc(2),this._dataView.setUint16(this.position,t,null==e?this.endianness:e),this.position+=2},DataStream.prototype.writeUint8=function(t){this._realloc(1),this._dataView.setUint8(this.position,t),this.position+=1},DataStream.prototype.writeFloat32=function(t,e){this._realloc(4),this._dataView.setFloat32(this.position,t,null==e?this.endianness:e),this.position+=4},DataStream.prototype.writeFloat64=function(t,e){this._realloc(8),this._dataView.setFloat64(this.position,t,null==e?this.endianness:e),this.position+=8},DataStream.prototype.writeUCS2String=function(t,e,i){null==i&&(i=t.length);for(var r=0;r<t.length&&r<i;r++)this.writeUint16(t.charCodeAt(r),e);for(;r<i;r++)this.writeUint16(0)},DataStream.prototype.writeString=function(t,e,i){var r=0;if(null==e||"ASCII"==e)if(null!=i){for(var s=Math.min(t.length,i),r=0;r<s;r++)this.writeUint8(t.charCodeAt(r));for(;r<i;r++)this.writeUint8(0)}else for(r=0;r<t.length;r++)this.writeUint8(t.charCodeAt(r));else this.writeUint8Array(new TextEncoder(e).encode(t.substring(0,i)))},DataStream.prototype.writeCString=function(t,e){var i=0;if(null!=e){for(var r=Math.min(t.length,e),i=0;i<r;i++)this.writeUint8(t.charCodeAt(i));for(;i<e;i++)this.writeUint8(0)}else{for(i=0;i<t.length;i++)this.writeUint8(t.charCodeAt(i));this.writeUint8(0)}},DataStream.prototype.writeStruct=function(t,e){for(var i=0;i<t.length;i+=2){var r=t[i+1];this.writeType(r,e[t[i]],e)}},DataStream.prototype.writeType=function(t,e,i){var r;if("function"==typeof t)return t(this,e);if("object"==typeof t&&!(t instanceof Array))return t.set(this,e,i);var s=null,a="ASCII",i=this.position;switch("string"==typeof t&&/:/.test(t)&&(t=(r=t.split(":"))[0],s=parseInt(r[1])),"string"==typeof t&&/,/.test(t)&&(t=(r=t.split(","))[0],a=parseInt(r[1])),t){case"uint8":this.writeUint8(e);break;case"int8":this.writeInt8(e);break;case"uint16":this.writeUint16(e,this.endianness);break;case"int16":this.writeInt16(e,this.endianness);break;case"uint32":this.writeUint32(e,this.endianness);break;case"int32":this.writeInt32(e,this.endianness);break;case"float32":this.writeFloat32(e,this.endianness);break;case"float64":this.writeFloat64(e,this.endianness);break;case"uint16be":this.writeUint16(e,DataStream.BIG_ENDIAN);break;case"int16be":this.writeInt16(e,DataStream.BIG_ENDIAN);break;case"uint32be":this.writeUint32(e,DataStream.BIG_ENDIAN);break;case"int32be":this.writeInt32(e,DataStream.BIG_ENDIAN);break;case"float32be":this.writeFloat32(e,DataStream.BIG_ENDIAN);break;case"float64be":this.writeFloat64(e,DataStream.BIG_ENDIAN);break;case"uint16le":this.writeUint16(e,DataStream.LITTLE_ENDIAN);break;case"int16le":this.writeInt16(e,DataStream.LITTLE_ENDIAN);break;case"uint32le":this.writeUint32(e,DataStream.LITTLE_ENDIAN);break;case"int32le":this.writeInt32(e,DataStream.LITTLE_ENDIAN);break;case"float32le":this.writeFloat32(e,DataStream.LITTLE_ENDIAN);break;case"float64le":this.writeFloat64(e,DataStream.LITTLE_ENDIAN);break;case"cstring":this.writeCString(e,s);break;case"string":this.writeString(e,a,s);break;case"u16string":this.writeUCS2String(e,this.endianness,s);break;case"u16stringle":this.writeUCS2String(e,DataStream.LITTLE_ENDIAN,s);break;case"u16stringbe":this.writeUCS2String(e,DataStream.BIG_ENDIAN,s);break;default:if(3==t.length){for(var n=t[1],o=0;o<e.length;o++)this.writeType(n,e[o]);break}this.writeStruct(t,e)}null!=s&&(this.position=i,this._realloc(s),this.position=i+s)},DataStream.prototype.writeUint64=function(t){var e=Math.floor(t/MAX_SIZE);this.writeUint32(e),this.writeUint32(4294967295&t)},DataStream.prototype.writeUint24=function(t){this.writeUint8((16711680&t)>>16),this.writeUint8((65280&t)>>8),this.writeUint8(255&t)},DataStream.prototype.adjustUint32=function(t,e){var i=this.position;this.seek(t),this.writeUint32(e),this.seek(i)},DataStream.prototype.mapInt32Array=function(t,e){this._realloc(4*t);var i=new Int32Array(this._buffer,this.byteOffset+this.position,t);return DataStream.arrayToNative(i,null==e?this.endianness:e),this.position+=4*t,i},DataStream.prototype.mapInt16Array=function(t,e){this._realloc(2*t);var i=new Int16Array(this._buffer,this.byteOffset+this.position,t);return DataStream.arrayToNative(i,null==e?this.endianness:e),this.position+=2*t,i},DataStream.prototype.mapInt8Array=function(t){this._realloc(+t);var e=new Int8Array(this._buffer,this.byteOffset+this.position,t);return this.position+=+t,e},DataStream.prototype.mapUint32Array=function(t,e){this._realloc(4*t);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,t);return DataStream.arrayToNative(i,null==e?this.endianness:e),this.position+=4*t,i},DataStream.prototype.mapUint16Array=function(t,e){this._realloc(2*t);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,t);return DataStream.arrayToNative(i,null==e?this.endianness:e),this.position+=2*t,i},DataStream.prototype.mapFloat64Array=function(t,e){this._realloc(8*t);var i=new Float64Array(this._buffer,this.byteOffset+this.position,t);return DataStream.arrayToNative(i,null==e?this.endianness:e),this.position+=8*t,i},DataStream.prototype.mapFloat32Array=function(t,e){this._realloc(4*t);var i=new Float32Array(this._buffer,this.byteOffset+this.position,t);return DataStream.arrayToNative(i,null==e?this.endianness:e),this.position+=4*t,i};var MultiBufferStream=function(t){this.buffers=[],this.bufferIndex=-1,t&&(this.insertBuffer(t),this.bufferIndex=0)};MultiBufferStream.prototype=new DataStream(new ArrayBuffer,0,DataStream.BIG_ENDIAN),MultiBufferStream.prototype.initialized=function(){var t;return-1<this.bufferIndex||(0<this.buffers.length?0===(t=this.buffers[0]).fileStart?(this.buffer=t,this.bufferIndex=0,Log.debug("MultiBufferStream","Stream ready for parsing"),!0):(Log.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(Log.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(t,e){Log.debug("ArrayBuffer","Trying to create a new buffer of size: "+(t.byteLength+e.byteLength));var i=new Uint8Array(t.byteLength+e.byteLength);return i.set(new Uint8Array(t),0),i.set(new Uint8Array(e),t.byteLength),i.buffer},MultiBufferStream.prototype.reduceBuffer=function(t,e,i){var r=new Uint8Array(i);return r.set(new Uint8Array(t,e,i)),r.buffer.fileStart=t.fileStart+e,r.buffer.usedBytes=0,r.buffer},MultiBufferStream.prototype.insertBuffer=function(t){for(var e=!0,i=0;i<this.buffers.length;i++){var r=this.buffers[i];if(t.fileStart<=r.fileStart){if(t.fileStart===r.fileStart){if(t.byteLength>r.byteLength){this.buffers.splice(i,1),i--;continue}Log.warn("MultiBufferStream","Buffer (fileStart: "+t.fileStart+" - Length: "+t.byteLength+") already appended, ignoring")}else t.fileStart+t.byteLength<=r.fileStart||(t=this.reduceBuffer(t,0,r.fileStart-t.fileStart)),Log.debug("MultiBufferStream","Appending new buffer (fileStart: "+t.fileStart+" - Length: "+t.byteLength+")"),this.buffers.splice(i,0,t),0===i&&(this.buffer=t);e=!1;break}if(t.fileStart<r.fileStart+r.byteLength){var s=r.fileStart+r.byteLength-t.fileStart,r=t.byteLength-s;if(!(0<r)){e=!1;break}t=this.reduceBuffer(t,s,r)}}e&&(Log.debug("MultiBufferStream","Appending new buffer (fileStart: "+t.fileStart+" - Length: "+t.byteLength+")"),this.buffers.push(t),0===i&&(this.buffer=t))},MultiBufferStream.prototype.logBufferLevel=function(t){for(var e,i,r=[],s="",a=0,n=0,o=0;o<this.buffers.length;o++)e=this.buffers[o],0===o?(i={},r.push(i),i.start=e.fileStart,i.end=e.fileStart+e.byteLength,s+="["+i.start+"-"):i.end===e.fileStart?i.end=e.fileStart+e.byteLength:((i={}).start=e.fileStart,s+=r[r.length-1].end-1+"], ["+i.start+"-",i.end=e.fileStart+e.byteLength,r.push(i)),a+=e.usedBytes,n+=e.byteLength;0<r.length&&(s+=i.end-1+"]");t=t?Log.info:Log.debug;0===this.buffers.length?t("MultiBufferStream","No more buffer in memory"):t("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+a+"/"+n+" bytes), continuous ranges: "+s)},MultiBufferStream.prototype.cleanBuffers=function(){for(var t,e=0;e<this.buffers.length;e++)(t=this.buffers[e]).usedBytes===t.byteLength&&(Log.debug("MultiBufferStream","Removing buffer #"+e),this.buffers.splice(e,1),e--)},MultiBufferStream.prototype.mergeNextBuffer=function(){var t;if(this.bufferIndex+1<this.buffers.length){if((t=this.buffers[this.bufferIndex+1]).fileStart!==this.buffer.fileStart+this.buffer.byteLength)return!1;var e=this.buffer.byteLength,i=this.buffer.usedBytes,r=this.buffer.fileStart;return this.buffers[this.bufferIndex]=ArrayBuffer.concat(this.buffer,t),this.buffer=this.buffers[this.bufferIndex],this.buffers.splice(this.bufferIndex+1,1),this.buffer.usedBytes=i,this.buffer.fileStart=r,Log.debug("ISOFile","Concatenating buffer for box parsing (length: "+e+"->"+this.buffer.byteLength+")"),!0}return!1},MultiBufferStream.prototype.findPosition=function(t,e,i){for(var r=null,s=-1,a=!0===t?0:this.bufferIndex;a<this.buffers.length&&(r=this.buffers[a]).fileStart<=e;)s=a,i&&(r.fileStart+r.byteLength<=e?r.usedBytes=r.byteLength:r.usedBytes=e-r.fileStart,this.logBufferLevel()),a++;return-1!==s&&(r=this.buffers[s]).fileStart+r.byteLength>=e?(Log.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},MultiBufferStream.prototype.findEndContiguousBuf=function(t){var e,i,t=void 0!==t?t:this.bufferIndex,r=this.buffers[t];if(this.buffers.length>t+1)for(e=t+1;e<this.buffers.length&&(i=this.buffers[e]).fileStart===r.fileStart+r.byteLength;e++)r=i;return r.fileStart+r.byteLength},MultiBufferStream.prototype.getEndFilePositionAfter=function(t){var e=this.findPosition(!0,t,!1);return-1!==e?this.findEndContiguousBuf(e):t},MultiBufferStream.prototype.addUsedBytes=function(t){this.buffer.usedBytes+=t,this.logBufferLevel()},MultiBufferStream.prototype.setAllUsedBytes=function(){this.buffer.usedBytes=this.buffer.byteLength,this.logBufferLevel()},MultiBufferStream.prototype.seek=function(t,e,i){i=this.findPosition(e,t,i);return-1!==i?(this.buffer=this.buffers[i],this.bufferIndex=i,this.position=t-this.buffer.fileStart,Log.debug("MultiBufferStream","Repositioning parser at buffer position: "+this.position),!0):(Log.debug("MultiBufferStream","Position "+t+" not found in buffered data"),!1)},MultiBufferStream.prototype.getPosition=function(){if(-1===this.bufferIndex||null===this.buffers[this.bufferIndex])throw"Error accessing position in the MultiBufferStream";return this.buffers[this.bufferIndex].fileStart+this.position},MultiBufferStream.prototype.getLength=function(){return this.byteLength},MultiBufferStream.prototype.getEndPosition=function(){if(-1===this.bufferIndex||null===this.buffers[this.bufferIndex])throw"Error accessing position in the MultiBufferStream";return this.buffers[this.bufferIndex].fileStart+this.byteLength},"undefined"!=typeof exports&&(exports.MultiBufferStream=MultiBufferStream);var MPEG4DescriptorParser=function(){var s=[];s[3]="ES_Descriptor",s[4]="DecoderConfigDescriptor",s[5]="DecoderSpecificInfo",s[6]="SLConfigDescriptor",this.getDescriptorName=function(t){return s[t]};var r=this,a={};return this.parseOneDescriptor=function(t){var e,i=0,r=t.readUint8();for(e=t.readUint8(),0;128&e;)i=(127&e)<<7,e=t.readUint8(),0;return i+=127&e,Log.debug("MPEG4DescriptorParser","Found "+(s[r]||"Descriptor "+r)+", size "+i+" at position "+t.getPosition()),(r=new(s[r]?a[s[r]]:a.Descriptor)(i)).parse(t),r},a.Descriptor=function(t,e){this.tag=t,this.size=e,this.descs=[]},a.Descriptor.prototype.parse=function(t){this.data=t.readUint8Array(this.size)},a.Descriptor.prototype.findDescriptor=function(t){for(var e=0;e<this.descs.length;e++)if(this.descs[e].tag==t)return this.descs[e];return null},a.Descriptor.prototype.parseRemainingDescriptors=function(t){for(var e=t.position;t.position<e+this.size;){var i=r.parseOneDescriptor(t);this.descs.push(i)}},a.ES_Descriptor=function(t){a.Descriptor.call(this,3,t)},a.ES_Descriptor.prototype=new a.Descriptor,a.ES_Descriptor.prototype.parse=function(t){var e;this.ES_ID=t.readUint16(),this.flags=t.readUint8(),this.size-=3,128&this.flags?(this.dependsOn_ES_ID=t.readUint16(),this.size-=2):this.dependsOn_ES_ID=0,64&this.flags?(e=t.readUint8(),this.URL=t.readString(e),this.size-=e+1):this.URL="",32&this.flags?(this.OCR_ES_ID=t.readUint16(),this.size-=2):this.OCR_ES_ID=0,this.parseRemainingDescriptors(t)},a.ES_Descriptor.prototype.getOTI=function(t){var e=this.findDescriptor(4);return e?e.oti:0},a.ES_Descriptor.prototype.getAudioConfig=function(t){var e=this.findDescriptor(4);if(!e)return null;var i=e.findDescriptor(5);if(i&&i.data){e=(248&i.data[0])>>3;return 31===e&&2<=i.data.length&&(e=32+((7&i.data[0])<<3)+((224&i.data[1])>>5)),e}return null},a.DecoderConfigDescriptor=function(t){a.Descriptor.call(this,4,t)},a.DecoderConfigDescriptor.prototype=new a.Descriptor,a.DecoderConfigDescriptor.prototype.parse=function(t){this.oti=t.readUint8(),this.streamType=t.readUint8(),this.bufferSize=t.readUint24(),this.maxBitrate=t.readUint32(),this.avgBitrate=t.readUint32(),this.size-=13,this.parseRemainingDescriptors(t)},a.DecoderSpecificInfo=function(t){a.Descriptor.call(this,5,t)},a.DecoderSpecificInfo.prototype=new a.Descriptor,a.SLConfigDescriptor=function(t){a.Descriptor.call(this,6,t)},a.SLConfigDescriptor.prototype=new a.Descriptor,this};"undefined"!=typeof exports&&(exports.MPEG4DescriptorParser=MPEG4DescriptorParser);var BoxParser={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){BoxParser.FullBox.prototype=new BoxParser.Box,BoxParser.ContainerBox.prototype=new BoxParser.Box,BoxParser.SampleEntry.prototype=new BoxParser.Box,BoxParser.TrackGroupTypeBox.prototype=new BoxParser.FullBox,BoxParser.BASIC_BOXES.forEach(function(t){BoxParser.createBoxCtor(t)}),BoxParser.FULL_BOXES.forEach(function(t){BoxParser.createFullBoxCtor(t)}),BoxParser.CONTAINER_BOXES.forEach(function(t){BoxParser.createContainerBoxCtor(t[0],null,t[1])})},Box:function(t,e,i){this.type=t,this.size=e,this.uuid=i},FullBox:function(t,e,i){BoxParser.Box.call(this,t,e,i),this.flags=0,this.version=0},ContainerBox:function(t,e,i){BoxParser.Box.call(this,t,e,i),this.boxes=[]},SampleEntry:function(t,e,i,r){BoxParser.ContainerBox.call(this,t,e),this.hdr_size=i,this.start=r},SampleGroupEntry:function(t){this.grouping_type=t},TrackGroupTypeBox:function(t,e){BoxParser.FullBox.call(this,t,e)},createBoxCtor:function(e,t){BoxParser.boxCodes.push(e),BoxParser[e+"Box"]=function(t){BoxParser.Box.call(this,e,t)},BoxParser[e+"Box"].prototype=new BoxParser.Box,t&&(BoxParser[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,i){BoxParser[e+"Box"]=function(t){BoxParser.FullBox.call(this,e,t)},BoxParser[e+"Box"].prototype=new BoxParser.FullBox,BoxParser[e+"Box"].prototype.parse=function(t){this.parseFullHeader(t),i&&i.call(this,t)}},addSubBoxArrays:function(t){if(t)for(var e=(this.subBoxNames=t).length,i=0;i<e;i++)this[t[i]+"s"]=[]},createContainerBoxCtor:function(e,t,i){BoxParser[e+"Box"]=function(t){BoxParser.ContainerBox.call(this,e,t),BoxParser.addSubBoxArrays.call(this,i)},BoxParser[e+"Box"].prototype=new BoxParser.ContainerBox,t&&(BoxParser[e+"Box"].prototype.parse=t)},createMediaSampleEntryCtor:function(t,e,i){BoxParser.sampleEntryCodes[t]=[],BoxParser[t+"SampleEntry"]=function(t,e){BoxParser.SampleEntry.call(this,t,e),BoxParser.addSubBoxArrays.call(this,i)},BoxParser[t+"SampleEntry"].prototype=new BoxParser.SampleEntry,e&&(BoxParser[t+"SampleEntry"].prototype.parse=e)},createSampleEntryCtor:function(e,i,t,r){BoxParser.sampleEntryCodes[e].push(i),BoxParser[i+"SampleEntry"]=function(t){BoxParser[e+"SampleEntry"].call(this,i,t),BoxParser.addSubBoxArrays.call(this,r)},BoxParser[i+"SampleEntry"].prototype=new BoxParser[e+"SampleEntry"],t&&(BoxParser[i+"SampleEntry"].prototype.parse=t)},createEncryptedSampleEntryCtor:function(t,e,i){BoxParser.createSampleEntryCtor.call(this,t,e,i,["sinf"])},createSampleGroupCtor:function(e,t){BoxParser[e+"SampleGroupEntry"]=function(t){BoxParser.SampleGroupEntry.call(this,e,t)},BoxParser[e+"SampleGroupEntry"].prototype=new BoxParser.SampleGroupEntry,t&&(BoxParser[e+"SampleGroupEntry"].prototype.parse=t)},createTrackGroupCtor:function(e,t){BoxParser[e+"TrackGroupTypeBox"]=function(t){BoxParser.TrackGroupTypeBox.call(this,e,t)},BoxParser[e+"TrackGroupTypeBox"].prototype=new BoxParser.TrackGroupTypeBox,t&&(BoxParser[e+"TrackGroupTypeBox"].prototype.parse=t)},createUUIDBox:function(e,i,r,s){BoxParser.UUIDs.push(e),BoxParser.UUIDBoxes[e]=function(t){(i?BoxParser.FullBox:r?BoxParser.ContainerBox:BoxParser.Box).call(this,"uuid",t,e)},BoxParser.UUIDBoxes[e].prototype=new(i?BoxParser.FullBox:r?BoxParser.ContainerBox:BoxParser.Box),s&&(BoxParser.UUIDBoxes[e].prototype.parse=i?function(t){this.parseFullHeader(t),s&&s.call(this,t)}:s)}};BoxParser.initialize(),BoxParser.TKHD_FLAG_ENABLED=1,BoxParser.TKHD_FLAG_IN_MOVIE=2,BoxParser.TKHD_FLAG_IN_PREVIEW=4,BoxParser.TFHD_FLAG_BASE_DATA_OFFSET=1,BoxParser.TFHD_FLAG_SAMPLE_DESC=2,BoxParser.TFHD_FLAG_SAMPLE_DUR=8,BoxParser.TFHD_FLAG_SAMPLE_SIZE=16,BoxParser.TFHD_FLAG_SAMPLE_FLAGS=32,BoxParser.TFHD_FLAG_DUR_EMPTY=65536,BoxParser.TFHD_FLAG_DEFAULT_BASE_IS_MOOF=131072,BoxParser.TRUN_FLAGS_DATA_OFFSET=1,BoxParser.TRUN_FLAGS_FIRST_FLAG=4,BoxParser.TRUN_FLAGS_DURATION=256,BoxParser.TRUN_FLAGS_SIZE=512,BoxParser.TRUN_FLAGS_FLAGS=1024,BoxParser.TRUN_FLAGS_CTS_OFFSET=2048,BoxParser.Box.prototype.add=function(t){return this.addBox(new BoxParser[t+"Box"])},BoxParser.Box.prototype.addBox=function(t){return this.boxes.push(t),this[t.type+"s"]?this[t.type+"s"].push(t):this[t.type]=t,t},BoxParser.Box.prototype.set=function(t,e){return this[t]=e,this},BoxParser.Box.prototype.addEntry=function(t,e){e=e||"entries";return this[e]||(this[e]=[]),this[e].push(t),this},"undefined"!=typeof exports&&(exports.BoxParser=BoxParser),BoxParser.parseUUID=function(t){return BoxParser.parseHex16(t)},BoxParser.parseHex16=function(t){for(var e="",i=0;i<16;i++){var r=t.readUint8().toString(16);e+=1===r.length?"0"+r:r}return e},BoxParser.parseOneBox=function(t,e,i){var r,s,a=t.getPosition(),n=0;if(t.getEndPosition()-a<8)return Log.debug("BoxParser","Not enough data in stream to parse the type and size of the box"),{code:BoxParser.ERR_NOT_ENOUGH_DATA};if(i&&i<8)return Log.debug("BoxParser","Not enough bytes left in the parent box to parse a new box"),{code:BoxParser.ERR_NOT_ENOUGH_DATA};var o=t.readUint32(),h=t.readString(4),d=h;if(Log.debug("BoxParser","Found box of type '"+h+"' and size "+o+" at position "+a),n=8,"uuid"==h){if(t.getEndPosition()-t.getPosition()<16||i-n<16)return t.seek(a),Log.debug("BoxParser","Not enough bytes left in the parent box to parse a UUID box"),{code:BoxParser.ERR_NOT_ENOUGH_DATA};n+=16,d=s=BoxParser.parseUUID(t)}if(1==o){if(t.getEndPosition()-t.getPosition()<8||i&&i-n<8)return t.seek(a),Log.warn("BoxParser",'Not enough data in stream to parse the extended size of the "'+h+'" box'),{code:BoxParser.ERR_NOT_ENOUGH_DATA};o=t.readUint64(),n+=8}else if(0===o)if(i)o=i;else if("mdat"!==h)return Log.error("BoxParser","Unlimited box size not supported for type: '"+h+"'"),r=new BoxParser.Box(h,o),{code:BoxParser.OK,box:r,size:r.size};return 0!==o&&o<n?(Log.error("BoxParser","Box of type "+h+" has an invalid size "+o+" (too small to be a box)"),{code:BoxParser.ERR_NOT_ENOUGH_DATA,type:h,size:o,hdr_size:n,start:a}):0!==o&&i&&i<o?(Log.error("BoxParser","Box of type '"+h+"' has a size "+o+" greater than its container size "+i),{code:BoxParser.ERR_NOT_ENOUGH_DATA,type:h,size:o,hdr_size:n,start:a}):0!==o&&a+o>t.getEndPosition()?(t.seek(a),Log.info("BoxParser","Not enough data in stream to parse the entire '"+h+"' box"),{code:BoxParser.ERR_NOT_ENOUGH_DATA,type:h,size:o,hdr_size:n,start:a}):e?{code:BoxParser.OK,type:h,size:o,hdr_size:n,start:a}:(BoxParser[h+"Box"]?r=new BoxParser[h+"Box"](o):"uuid"!==h?(Log.warn("BoxParser","Unknown box type: '"+h+"'"),(r=new BoxParser.Box(h,o)).has_unparsed_data=!0):BoxParser.UUIDBoxes[s]?r=new BoxParser.UUIDBoxes[s](o):(Log.warn("BoxParser","Unknown uuid type: '"+s+"'"),(r=new BoxParser.Box(h,o)).uuid=s,r.has_unparsed_data=!0),r.hdr_size=n,r.start=a,r.write===BoxParser.Box.prototype.write&&"mdat"!==r.type&&(Log.info("BoxParser","'"+d+"' box writing not yet implemented, keeping unparsed data in memory for later write"),r.parseDataAndRewind(t)),r.parse(t),(a=t.getPosition()-(r.start+r.size))<0?(Log.warn("BoxParser","Parsing of box '"+d+"' did not read the entire indicated box data size (missing "+-a+" bytes), seeking forward"),t.seek(r.start+r.size)):0<a&&(Log.error("BoxParser","Parsing of box '"+d+"' read "+a+" more bytes than the indicated box data size, seeking backwards"),0!==r.size&&t.seek(r.start+r.size)),{code:BoxParser.OK,box:r,size:r.size})},BoxParser.Box.prototype.parse=function(t){"mdat"!=this.type?this.data=t.readUint8Array(this.size-this.hdr_size):0===this.size?t.seek(t.getEndPosition()):t.seek(this.start+this.size)},BoxParser.Box.prototype.parseDataAndRewind=function(t){this.data=t.readUint8Array(this.size-this.hdr_size),t.position-=this.size-this.hdr_size},BoxParser.FullBox.prototype.parseDataAndRewind=function(t){this.parseFullHeader(t),this.data=t.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,t.position-=this.size-this.hdr_size},BoxParser.FullBox.prototype.parseFullHeader=function(t){this.version=t.readUint8(),this.flags=t.readUint24(),this.hdr_size+=4},BoxParser.FullBox.prototype.parse=function(t){this.parseFullHeader(t),this.data=t.readUint8Array(this.size-this.hdr_size)},BoxParser.ContainerBox.prototype.parse=function(t){for(;t.getPosition()<this.start+this.size;){if((e=BoxParser.parseOneBox(t,!1,this.size-(t.getPosition()-this.start))).code!==BoxParser.OK)return;var e,i=e.box;this.boxes.push(i),this.subBoxNames&&-1!=this.subBoxNames.indexOf(i.type)?this[this.subBoxNames[this.subBoxNames.indexOf(i.type)]+"s"].push(i):this[e="uuid"!==i.type?i.type:i.uuid]?Log.warn("Box of type "+e+" already stored in field of this type"):this[e]=i}},BoxParser.Box.prototype.parseLanguage=function(t){this.language=t.readUint16();t=[];t[0]=this.language>>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},BoxParser.SAMPLE_ENTRY_TYPE_VISUAL="Visual",BoxParser.SAMPLE_ENTRY_TYPE_AUDIO="Audio",BoxParser.SAMPLE_ENTRY_TYPE_HINT="Hint",BoxParser.SAMPLE_ENTRY_TYPE_METADATA="Metadata",BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",BoxParser.SAMPLE_ENTRY_TYPE_SYSTEM="System",BoxParser.SAMPLE_ENTRY_TYPE_TEXT="Text",BoxParser.SampleEntry.prototype.parseHeader=function(t){t.readUint8Array(6),this.data_reference_index=t.readUint16(),this.hdr_size+=8},BoxParser.SampleEntry.prototype.parse=function(t){this.parseHeader(t),this.data=t.readUint8Array(this.size-this.hdr_size)},BoxParser.SampleEntry.prototype.parseDataAndRewind=function(t){this.parseHeader(t),this.data=t.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,t.position-=this.size-this.hdr_size},BoxParser.SampleEntry.prototype.parseFooter=function(t){BoxParser.ContainerBox.prototype.parse.call(this,t)},BoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_HINT),BoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA),BoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE),BoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SYSTEM),BoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_TEXT),BoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,function(t){var e;this.parseHeader(t),t.readUint16(),t.readUint16(),t.readUint32Array(3),this.width=t.readUint16(),this.height=t.readUint16(),this.horizresolution=t.readUint32(),this.vertresolution=t.readUint32(),t.readUint32(),this.frame_count=t.readUint16(),e=Math.min(31,t.readUint8()),this.compressorname=t.readString(e),e<31&&t.readString(31-e),this.depth=t.readUint16(),t.readUint16(),this.parseFooter(t)}),BoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO,function(t){this.parseHeader(t),t.readUint32Array(2),this.channel_count=t.readUint16(),this.samplesize=t.readUint16(),t.readUint16(),t.readUint16(),this.samplerate=t.readUint32()/65536,this.parseFooter(t)}),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),BoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),BoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),BoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),BoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),BoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_TEXT,"enct"),BoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA,"encm"),BoxParser.createBoxCtor("a1lx",function(t){var e=16*(1+(1&(1&t.readUint8())));this.layer_size=[];for(var i=0;i<3;i++)this.layer_size[i]=16==e?t.readUint16():t.readUint32()}),BoxParser.createBoxCtor("a1op",function(t){this.op_index=t.readUint8()}),BoxParser.createFullBoxCtor("auxC",function(t){this.aux_type=t.readCString();var e=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=t.readUint8Array(e)}),BoxParser.createBoxCtor("av1C",function(t){var e=t.readUint8();if(e>>7&!1)Log.error("av1C marker problem");else if(this.version=127&e,1===this.version)if(e=t.readUint8(),this.seq_profile=e>>5&7,this.seq_level_idx_0=31&e,e=t.readUint8(),this.seq_tier_0=e>>7&1,this.high_bitdepth=e>>6&1,this.twelve_bit=e>>5&1,this.monochrome=e>>4&1,this.chroma_subsampling_x=e>>3&1,this.chroma_subsampling_y=e>>2&1,this.chroma_sample_position=3&e,e=t.readUint8(),this.reserved_1=e>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=e>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&e;else if(this.reserved_2=15&e,0!==this.reserved_2)return void Log.error("av1C reserved_2 parsing problem");e=this.size-this.hdr_size-4;this.configOBUs=t.readUint8Array(e)}else Log.error("av1C reserved_1 parsing problem");else Log.error("av1C version "+this.version+" not supported")}),BoxParser.createBoxCtor("avcC",function(t){var e,i;for(this.configurationVersion=t.readUint8(),this.AVCProfileIndication=t.readUint8(),this.profile_compatibility=t.readUint8(),this.AVCLevelIndication=t.readUint8(),this.lengthSizeMinusOne=3&t.readUint8(),this.nb_SPS_nalus=31&t.readUint8(),i=this.size-this.hdr_size-6,this.SPS=[],e=0;e<this.nb_SPS_nalus;e++)this.SPS[e]={},this.SPS[e].length=t.readUint16(),this.SPS[e].nalu=t.readUint8Array(this.SPS[e].length),i-=2+this.SPS[e].length;for(this.nb_PPS_nalus=t.readUint8(),i--,this.PPS=[],e=0;e<this.nb_PPS_nalus;e++)this.PPS[e]={},this.PPS[e].length=t.readUint16(),this.PPS[e].nalu=t.readUint8Array(this.PPS[e].length),i-=2+this.PPS[e].length;0<i&&(this.ext=t.readUint8Array(i))}),BoxParser.createBoxCtor("btrt",function(t){this.bufferSizeDB=t.readUint32(),this.maxBitrate=t.readUint32(),this.avgBitrate=t.readUint32()}),BoxParser.createBoxCtor("clap",function(t){this.cleanApertureWidthN=t.readUint32(),this.cleanApertureWidthD=t.readUint32(),this.cleanApertureHeightN=t.readUint32(),this.cleanApertureHeightD=t.readUint32(),this.horizOffN=t.readUint32(),this.horizOffD=t.readUint32(),this.vertOffN=t.readUint32(),this.vertOffD=t.readUint32()}),BoxParser.createBoxCtor("clli",function(t){this.max_content_light_level=t.readUint16(),this.max_pic_average_light_level=t.readUint16()}),BoxParser.createFullBoxCtor("co64",function(t){var e,i=t.readUint32();if(this.chunk_offsets=[],0===this.version)for(e=0;e<i;e++)this.chunk_offsets.push(t.readUint64())}),BoxParser.createFullBoxCtor("CoLL",function(t){this.maxCLL=t.readUint16(),this.maxFALL=t.readUint16()}),BoxParser.createBoxCtor("colr",function(t){var e;this.colour_type=t.readString(4),"nclx"===this.colour_type?(this.colour_primaries=t.readUint16(),this.transfer_characteristics=t.readUint16(),this.matrix_coefficients=t.readUint16(),e=t.readUint8(),this.full_range_flag=e>>7):"rICC"!==this.colour_type&&"prof"!==this.colour_type||(this.ICC_profile=t.readUint8Array(this.size-4))}),BoxParser.createFullBoxCtor("cprt",function(t){this.parseLanguage(t),this.notice=t.readCString()}),BoxParser.createFullBoxCtor("cslg",function(t){0===this.version&&(this.compositionToDTSShift=t.readInt32(),this.leastDecodeToDisplayDelta=t.readInt32(),this.greatestDecodeToDisplayDelta=t.readInt32(),this.compositionStartTime=t.readInt32(),this.compositionEndTime=t.readInt32())}),BoxParser.createFullBoxCtor("ctts",function(t){var e,i=t.readUint32();if(this.sample_counts=[],this.sample_offsets=[],0===this.version)for(e=0;e<i;e++){this.sample_counts.push(t.readUint32());var r=t.readInt32();r<0&&Log.warn("BoxParser","ctts box uses negative values without using version 1"),this.sample_offsets.push(r)}else if(1==this.version)for(e=0;e<i;e++)this.sample_counts.push(t.readUint32()),this.sample_offsets.push(t.readInt32())}),BoxParser.createBoxCtor("dac3",function(t){var e=t.readUint8(),i=t.readUint8(),t=t.readUint8();this.fscod=e>>6,this.bsid=e>>1&31,this.bsmod=(1&e)<<2|i>>6&3,this.acmod=i>>3&7,this.lfeon=i>>2&1,this.bit_rate_code=3&i|t>>5&7}),BoxParser.createBoxCtor("dec3",function(t){var e=t.readUint16();this.data_rate=e>>3,this.num_ind_sub=7&e,this.ind_subs=[];for(var i=0;i<this.num_ind_sub+1;i++){var r={};this.ind_subs.push(r);var s=t.readUint8(),a=t.readUint8(),n=t.readUint8();r.fscod=s>>6,r.bsid=s>>1&31,r.bsmod=(1&s)<<4|a>>4&15,r.acmod=a>>1&7,r.lfeon=1&a,r.num_dep_sub=n>>1&15,0<r.num_dep_sub&&(r.chan_loc=(1&n)<<8|t.readUint8())}}),BoxParser.createFullBoxCtor("dfLa",function(t){var e=[],i=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(t);;){var r=t.readUint8(),s=Math.min(127&r,i.length-1);if(s?t.readUint8Array(t.readUint24()):(t.readUint8Array(13),this.samplerate=t.readUint32()>>12,t.readUint8Array(20)),e.push(i[s]),128&r)break}this.numMetadataBlocks=e.length+" ("+e.join(", ")+")"}),BoxParser.createBoxCtor("dimm",function(t){this.bytessent=t.readUint64()}),BoxParser.createBoxCtor("dmax",function(t){this.time=t.readUint32()}),BoxParser.createBoxCtor("dmed",function(t){this.bytessent=t.readUint64()}),BoxParser.createBoxCtor("dOps",function(t){if(this.Version=t.readUint8(),this.OutputChannelCount=t.readUint8(),this.PreSkip=t.readUint16(),this.InputSampleRate=t.readUint32(),this.OutputGain=t.readInt16(),this.ChannelMappingFamily=t.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=t.readUint8(),this.CoupledCount=t.readUint8(),this.ChannelMapping=[];for(var e=0;e<this.OutputChannelCount;e++)this.ChannelMapping[e]=t.readUint8()}}),BoxParser.createFullBoxCtor("dref",function(t){var e;this.entries=[];for(var i=t.readUint32(),r=0;r<i;r++){if((e=BoxParser.parseOneBox(t,!1,this.size-(t.getPosition()-this.start))).code!==BoxParser.OK)return;e=e.box,this.entries.push(e)}}),BoxParser.createBoxCtor("drep",function(t){this.bytessent=t.readUint64()}),BoxParser.createFullBoxCtor("elng",function(t){this.extended_language=t.readString(this.size-this.hdr_size)}),BoxParser.createFullBoxCtor("elst",function(t){this.entries=[];for(var e=t.readUint32(),i=0;i<e;i++){var r={};this.entries.push(r),1===this.version?(r.segment_duration=t.readUint64(),r.media_time=t.readInt64()):(r.segment_duration=t.readUint32(),r.media_time=t.readInt32()),r.media_rate_integer=t.readInt16(),r.media_rate_fraction=t.readInt16()}}),BoxParser.createFullBoxCtor("emsg",function(t){1==this.version?(this.timescale=t.readUint32(),this.presentation_time=t.readUint64(),this.event_duration=t.readUint32(),this.id=t.readUint32(),this.scheme_id_uri=t.readCString(),this.value=t.readCString()):(this.scheme_id_uri=t.readCString(),this.value=t.readCString(),this.timescale=t.readUint32(),this.presentation_time_delta=t.readUint32(),this.event_duration=t.readUint32(),this.id=t.readUint32());var e=this.size-this.hdr_size-(16+(this.scheme_id_uri.length+1)+(this.value.length+1));1==this.version&&(e-=4),this.message_data=t.readUint8Array(e)}),BoxParser.createFullBoxCtor("esds",function(t){var e=t.readUint8Array(this.size-this.hdr_size);void 0!==MPEG4DescriptorParser&&(t=new MPEG4DescriptorParser,this.esd=t.parseOneDescriptor(new DataStream(e.buffer,0,DataStream.BIG_ENDIAN)))}),BoxParser.createBoxCtor("fiel",function(t){this.fieldCount=t.readUint8(),this.fieldOrdering=t.readUint8()}),BoxParser.createBoxCtor("frma",function(t){this.data_format=t.readString(4)}),BoxParser.createBoxCtor("ftyp",function(t){var e=this.size-this.hdr_size;this.major_brand=t.readString(4),this.minor_version=t.readUint32(),e-=8,this.compatible_brands=[];for(var i=0;4<=e;)this.compatible_brands[i]=t.readString(4),e-=4,i++}),BoxParser.createFullBoxCtor("hdlr",function(t){0===this.version&&(t.readUint32(),this.handler=t.readString(4),t.readUint32Array(3),this.name=t.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))}),BoxParser.createBoxCtor("hvcC",function(t){var e,i;this.configurationVersion=t.readUint8(),i=t.readUint8(),this.general_profile_space=i>>6,this.general_tier_flag=(32&i)>>5,this.general_profile_idc=31&i,this.general_profile_compatibility=t.readUint32(),this.general_constraint_indicator=t.readUint8Array(6),this.general_level_idc=t.readUint8(),this.min_spatial_segmentation_idc=4095&t.readUint16(),this.parallelismType=3&t.readUint8(),this.chroma_format_idc=3&t.readUint8(),this.bit_depth_luma_minus8=7&t.readUint8(),this.bit_depth_chroma_minus8=7&t.readUint8(),this.avgFrameRate=t.readUint16(),i=t.readUint8(),this.constantFrameRate=i>>6,this.numTemporalLayers=(13&i)>>3,this.temporalIdNested=(4&i)>>2,this.lengthSizeMinusOne=3&i,this.nalu_arrays=[];for(var r=t.readUint8(),s=0;s<r;s++){var a=[];this.nalu_arrays.push(a),i=t.readUint8(),a.completeness=(128&i)>>7,a.nalu_type=63&i;for(var n=t.readUint16(),o=0;o<n;o++){var h={};a.push(h),e=t.readUint16(),h.data=t.readUint8Array(e)}}}),BoxParser.createFullBoxCtor("iinf",function(t){var e;0===this.version?this.entry_count=t.readUint16():this.entry_count=t.readUint32(),this.item_infos=[];for(var i=0;i<this.entry_count;i++){if((e=BoxParser.parseOneBox(t,!1,this.size-(t.getPosition()-this.start))).code!==BoxParser.OK)return;"infe"!==e.box.type&&Log.error("BoxParser","Expected 'infe' box, got "+e.box.type),this.item_infos[i]=e.box}}),BoxParser.createFullBoxCtor("iloc",function(t){var e=t.readUint8();this.offset_size=e>>4&15,this.length_size=15&e,e=t.readUint8(),this.base_offset_size=e>>4&15,1===this.version||2===this.version?this.index_size=15&e:this.index_size=0,this.items=[];var i=0;if(this.version<2)i=t.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";i=t.readUint32()}for(var r=0;r<i;r++){var s={};if(this.items.push(s),this.version<2)s.item_ID=t.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";s.item_ID=t.readUint16()}switch(1===this.version||2===this.version?s.construction_method=15&t.readUint16():s.construction_method=0,s.data_reference_index=t.readUint16(),this.base_offset_size){case 0:s.base_offset=0;break;case 4:s.base_offset=t.readUint32();break;case 8:s.base_offset=t.readUint64();break;default:throw"Error reading base offset size"}var a=t.readUint16();s.extents=[];for(var n=0;n<a;n++){var o={};if(s.extents.push(o),1===this.version||2===this.version)switch(this.index_size){case 0:o.extent_index=0;break;case 4:o.extent_index=t.readUint32();break;case 8:o.extent_index=t.readUint64();break;default:throw"Error reading extent index"}switch(this.offset_size){case 0:o.extent_offset=0;break;case 4:o.extent_offset=t.readUint32();break;case 8:o.extent_offset=t.readUint64();break;default:throw"Error reading extent index"}switch(this.length_size){case 0:o.extent_length=0;break;case 4:o.extent_length=t.readUint32();break;case 8:o.extent_length=t.readUint64();break;default:throw"Error reading extent index"}}}}),BoxParser.createBoxCtor("imir",function(t){t=t.readUint8();this.reserved=t>>7,this.axis=1&t}),BoxParser.createFullBoxCtor("infe",function(t){return 0!==this.version&&1!==this.version||(this.item_ID=t.readUint16(),this.item_protection_index=t.readUint16(),this.item_name=t.readCString(),this.content_type=t.readCString(),this.content_encoding=t.readCString()),1===this.version?(this.extension_type=t.readString(4),Log.warn("BoxParser","Cannot parse extension type"),void t.seek(this.start+this.size)):void(2<=this.version&&(2===this.version?this.item_ID=t.readUint16():3===this.version&&(this.item_ID=t.readUint32()),this.item_protection_index=t.readUint16(),this.item_type=t.readString(4),this.item_name=t.readCString(),"mime"===this.item_type?(this.content_type=t.readCString(),this.content_encoding=t.readCString()):"uri "===this.item_type&&(this.item_uri_type=t.readCString())))}),BoxParser.createFullBoxCtor("ipma",function(t){var e,i;for(entry_count=t.readUint32(),this.associations=[],e=0;e<entry_count;e++){var r={};this.associations.push(r),this.version<1?r.id=t.readUint16():r.id=t.readUint32();var s=t.readUint8();for(r.props=[],i=0;i<s;i++){var a=t.readUint8(),n={};r.props.push(n),n.essential=(128&a)>>7==1,1&this.flags?n.property_index=(127&a)<<8|t.readUint8():n.property_index=127&a}}}),BoxParser.createFullBoxCtor("iref",function(t){var e;for(this.references=[];t.getPosition()<this.start+this.size;){if((e=BoxParser.parseOneBox(t,!0,this.size-(t.getPosition()-this.start))).code!==BoxParser.OK)return;(e=new(0===this.version?BoxParser.SingleItemTypeReferenceBox:BoxParser.SingleItemTypeReferenceBoxLarge)(e.type,e.size,e.hdr_size,e.start)).write===BoxParser.Box.prototype.write&&"mdat"!==e.type&&(Log.warn("BoxParser",e.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),e.parseDataAndRewind(t)),e.parse(t),this.references.push(e)}}),BoxParser.createBoxCtor("irot",function(t){this.angle=3&t.readUint8()}),BoxParser.createFullBoxCtor("ispe",function(t){this.image_width=t.readUint32(),this.image_height=t.readUint32()}),BoxParser.createFullBoxCtor("kind",function(t){this.schemeURI=t.readCString(),this.value=t.readCString()}),BoxParser.createFullBoxCtor("leva",function(t){var e=t.readUint8();this.levels=[];for(var i=0;i<e;i++){var r={};(this.levels[i]=r).track_ID=t.readUint32();var s=t.readUint8();switch(r.padding_flag=s>>7,r.assignment_type=127&s,r.assignment_type){case 0:r.grouping_type=t.readString(4);break;case 1:r.grouping_type=t.readString(4),r.grouping_type_parameter=t.readUint32();break;case 2:case 3:break;case 4:r.sub_track_id=t.readUint32();break;default:Log.warn("BoxParser","Unknown leva assignement type")}}}),BoxParser.createBoxCtor("lsel",function(t){this.layer_id=t.readUint16()}),BoxParser.createBoxCtor("maxr",function(t){this.period=t.readUint32(),this.bytes=t.readUint32()}),BoxParser.createBoxCtor("mdcv",function(t){this.display_primaries=[],this.display_primaries[0]={},this.display_primaries[0].x=t.readUint16(),this.display_primaries[0].y=t.readUint16(),this.display_primaries[1]={},this.display_primaries[1].x=t.readUint16(),this.display_primaries[1].y=t.readUint16(),this.display_primaries[2]={},this.display_primaries[2].x=t.readUint16(),this.display_primaries[2].y=t.readUint16(),this.white_point={},this.white_point.x=t.readUint16(),this.white_point.y=t.readUint16(),this.max_display_mastering_luminance=t.readUint32(),this.min_display_mastering_luminance=t.readUint32()}),BoxParser.createFullBoxCtor("mdhd",function(t){1==this.version?(this.creation_time=t.readUint64(),this.modification_time=t.readUint64(),this.timescale=t.readUint32(),this.duration=t.readUint64()):(this.creation_time=t.readUint32(),this.modification_time=t.readUint32(),this.timescale=t.readUint32(),this.duration=t.readUint32()),this.parseLanguage(t),t.readUint16()}),BoxParser.createFullBoxCtor("mehd",function(t){1&this.flags&&(Log.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=t.readUint64():this.fragment_duration=t.readUint32()}),BoxParser.createFullBoxCtor("meta",function(t){this.boxes=[],BoxParser.ContainerBox.prototype.parse.call(this,t)}),BoxParser.createFullBoxCtor("mfhd",function(t){this.sequence_number=t.readUint32()}),BoxParser.createFullBoxCtor("mfro",function(t){this._size=t.readUint32()}),BoxParser.createFullBoxCtor("mvhd",function(t){1==this.version?(this.creation_time=t.readUint64(),this.modification_time=t.readUint64(),this.timescale=t.readUint32(),this.duration=t.readUint64()):(this.creation_time=t.readUint32(),this.modification_time=t.readUint32(),this.timescale=t.readUint32(),this.duration=t.readUint32()),this.rate=t.readUint32(),this.volume=t.readUint16()>>8,t.readUint16(),t.readUint32Array(2),this.matrix=t.readUint32Array(9),t.readUint32Array(6),this.next_track_id=t.readUint32()}),BoxParser.createBoxCtor("npck",function(t){this.packetssent=t.readUint32()}),BoxParser.createBoxCtor("nump",function(t){this.packetssent=t.readUint64()}),BoxParser.createFullBoxCtor("padb",function(t){var e=t.readUint32();this.padbits=[];for(var i=0;i<Math.floor((e+1)/2);i++)this.padbits=t.readUint8()}),BoxParser.createBoxCtor("pasp",function(t){this.hSpacing=t.readUint32(),this.vSpacing=t.readUint32()}),BoxParser.createBoxCtor("payl",function(t){this.text=t.readString(this.size-this.hdr_size)}),BoxParser.createBoxCtor("payt",function(t){this.payloadID=t.readUint32();var e=t.readUint8();this.rtpmap_string=t.readString(e)}),BoxParser.createFullBoxCtor("pdin",function(t){var e=(this.size-this.hdr_size)/8;this.rate=[],this.initial_delay=[];for(var i=0;i<e;i++)this.rate[i]=t.readUint32(),this.initial_delay[i]=t.readUint32()}),BoxParser.createFullBoxCtor("pitm",function(t){0===this.version?this.item_id=t.readUint16():this.item_id=t.readUint32()}),BoxParser.createFullBoxCtor("pixi",function(t){var e;for(this.num_channels=t.readUint8(),this.bits_per_channels=[],e=0;e<this.num_channels;e++)this.bits_per_channels[e]=t.readUint8()}),BoxParser.createBoxCtor("pmax",function(t){this.bytes=t.readUint32()}),BoxParser.createFullBoxCtor("prft",function(t){this.ref_track_id=t.readUint32(),this.ntp_timestamp=t.readUint64(),0===this.version?this.media_time=t.readUint32():this.media_time=t.readUint64()}),BoxParser.createFullBoxCtor("pssh",function(t){if(this.system_id=BoxParser.parseHex16(t),0<this.version){var e=t.readUint32();this.kid=[];for(var i=0;i<e;i++)this.kid[i]=BoxParser.parseHex16(t)}var r=t.readUint32();0<r&&(this.data=t.readUint8Array(r))}),BoxParser.createFullBoxCtor("clef",function(t){this.width=t.readUint32(),this.height=t.readUint32()}),BoxParser.createFullBoxCtor("enof",function(t){this.width=t.readUint32(),this.height=t.readUint32()}),BoxParser.createFullBoxCtor("prof",function(t){this.width=t.readUint32(),this.height=t.readUint32()}),BoxParser.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),BoxParser.createBoxCtor("rtp ",function(t){this.descriptionformat=t.readString(4),this.sdptext=t.readString(this.size-this.hdr_size-4)}),BoxParser.createFullBoxCtor("saio",function(t){1&this.flags&&(this.aux_info_type=t.readUint32(),this.aux_info_type_parameter=t.readUint32());var e=t.readUint32();this.offset=[];for(var i=0;i<e;i++)0===this.version?this.offset[i]=t.readUint32():this.offset[i]=t.readUint64()}),BoxParser.createFullBoxCtor("saiz",function(t){1&this.flags&&(this.aux_info_type=t.readUint32(),this.aux_info_type_parameter=t.readUint32()),this.default_sample_info_size=t.readUint8();var e=t.readUint32();if(this.sample_info_size=[],0===this.default_sample_info_size)for(var i=0;i<e;i++)this.sample_info_size[i]=t.readUint8()}),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA,"mett",function(t){this.parseHeader(t),this.content_encoding=t.readCString(),this.mime_format=t.readCString(),this.parseFooter(t)}),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA,"metx",function(t){this.parseHeader(t),this.content_encoding=t.readCString(),this.namespace=t.readCString(),this.schema_location=t.readCString(),this.parseFooter(t)}),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE,"sbtt",function(t){this.parseHeader(t),this.content_encoding=t.readCString(),this.mime_format=t.readCString(),this.parseFooter(t)}),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE,"stpp",function(t){this.parseHeader(t),this.namespace=t.readCString(),this.schema_location=t.readCString(),this.auxiliary_mime_types=t.readCString(),this.parseFooter(t)}),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE,"stxt",function(t){this.parseHeader(t),this.content_encoding=t.readCString(),this.mime_format=t.readCString(),this.parseFooter(t)}),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE,"tx3g",function(t){this.parseHeader(t),this.displayFlags=t.readUint32(),this.horizontal_justification=t.readInt8(),this.vertical_justification=t.readInt8(),this.bg_color_rgba=t.readUint8Array(4),this.box_record=t.readInt16Array(4),this.style_record=t.readUint8Array(12),this.parseFooter(t)}),BoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA,"wvtt",function(t){this.parseHeader(t),this.parseFooter(t)}),BoxParser.createSampleGroupCtor("alst",function(t){var e,i=t.readUint16();for(this.first_output_sample=t.readUint16(),this.sample_offset=[],e=0;e<i;e++)this.sample_offset[e]=t.readUint32();var r=this.description_length-4-4*i;for(this.num_output_samples=[],this.num_total_samples=[],e=0;e<r/4;e++)this.num_output_samples[e]=t.readUint16(),this.num_total_samples[e]=t.readUint16()}),BoxParser.createSampleGroupCtor("avll",function(t){this.layerNumber=t.readUint8(),this.accurateStatisticsFlag=t.readUint8(),this.avgBitRate=t.readUint16(),this.avgFrameRate=t.readUint16()}),BoxParser.createSampleGroupCtor("avss",function(t){this.subSequenceIdentifier=t.readUint16(),this.layerNumber=t.readUint8();var e=t.readUint8();this.durationFlag=e>>7,this.avgRateFlag=e>>6&1,this.durationFlag&&(this.duration=t.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=t.readUint8(),this.avgBitRate=t.readUint16(),this.avgFrameRate=t.readUint16()),this.dependency=[];for(var i=t.readUint8(),r=0;r<i;r++){var s={};this.dependency.push(s),s.subSeqDirectionFlag=t.readUint8(),s.layerNumber=t.readUint8(),s.subSequenceIdentifier=t.readUint16()}}),BoxParser.createSampleGroupCtor("dtrt",function(t){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),BoxParser.createSampleGroupCtor("mvif",function(t){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),BoxParser.createSampleGroupCtor("prol",function(t){this.roll_distance=t.readInt16()}),BoxParser.createSampleGroupCtor("rap ",function(t){t=t.readUint8();this.num_leading_samples_known=t>>7,this.num_leading_samples=127&t}),BoxParser.createSampleGroupCtor("rash",function(t){if(this.operation_point_count=t.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)Log.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=t.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=t.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var e=0;e<this.operation_point_count;e++)this.available_bitrate[e]=t.readUint32(),this.target_rate_share[e]=t.readUint16()}this.maximum_bitrate=t.readUint32(),this.minimum_bitrate=t.readUint32(),this.discard_priority=t.readUint8()}}),BoxParser.createSampleGroupCtor("roll",function(t){this.roll_distance=t.readInt16()}),BoxParser.SampleGroupEntry.prototype.parse=function(t){Log.warn("BoxParser","Unknown Sample Group type: "+this.grouping_type),this.data=t.readUint8Array(this.description_length)},BoxParser.createSampleGroupCtor("scif",function(t){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),BoxParser.createSampleGroupCtor("scnm",function(t){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),BoxParser.createSampleGroupCtor("seig",function(t){this.reserved=t.readUint8();var e=t.readUint8();this.crypt_byte_block=e>>4,this.skip_byte_block=15&e,this.isProtected=t.readUint8(),this.Per_Sample_IV_Size=t.readUint8(),this.KID=BoxParser.parseHex16(t),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=t.readUint8(),this.constant_IV=t.readUint8Array(this.constant_IV_size))}),BoxParser.createSampleGroupCtor("stsa",function(t){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),BoxParser.createSampleGroupCtor("sync",function(t){t=t.readUint8();this.NAL_unit_type=63&t}),BoxParser.createSampleGroupCtor("tele",function(t){t=t.readUint8();this.level_independently_decodable=t>>7}),BoxParser.createSampleGroupCtor("tsas",function(t){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),BoxParser.createSampleGroupCtor("tscl",function(t){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),BoxParser.createSampleGroupCtor("vipr",function(t){Log.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}),BoxParser.createFullBoxCtor("sbgp",function(t){this.grouping_type=t.readString(4),1===this.version?this.grouping_type_parameter=t.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var e=t.readUint32(),i=0;i<e;i++){var r={};this.entries.push(r),r.sample_count=t.readInt32(),r.group_description_index=t.readInt32()}}),BoxParser.createFullBoxCtor("schm",function(t){this.scheme_type=t.readString(4),this.scheme_version=t.readUint32(),1&this.flags&&(this.scheme_uri=t.readString(this.size-this.hdr_size-8))}),BoxParser.createBoxCtor("sdp ",function(t){this.sdptext=t.readString(this.size-this.hdr_size)}),BoxParser.createFullBoxCtor("sdtp",function(t){var e,i=this.size-this.hdr_size;this.is_leading=[],this.sample_depends_on=[],this.sample_is_depended_on=[],this.sample_has_redundancy=[];for(var r=0;r<i;r++)e=t.readUint8(),this.is_leading[r]=e>>6,this.sample_depends_on[r]=e>>4&3,this.sample_is_depended_on[r]=e>>2&3,this.sample_has_redundancy[r]=3&e}),BoxParser.createFullBoxCtor("senc"),BoxParser.createFullBoxCtor("sgpd",function(t){this.grouping_type=t.readString(4),Log.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=t.readUint32():this.default_length=0,2<=this.version&&(this.default_group_description_index=t.readUint32()),this.entries=[];for(var e=t.readUint32(),i=0;i<e;i++){var r=new(BoxParser[this.grouping_type+"SampleGroupEntry"]?BoxParser[this.grouping_type+"SampleGroupEntry"]:BoxParser.SampleGroupEntry)(this.grouping_type);this.entries.push(r),1===this.version&&0===this.default_length?r.description_length=t.readUint32():r.description_length=this.default_length,r.write===BoxParser.SampleGroupEntry.prototype.write&&(Log.info("BoxParser","SampleGroup for type "+this.grouping_type+" writing not yet implemented, keeping unparsed data in memory for later write"),r.data=t.readUint8Array(r.description_length),t.position-=r.description_length),r.parse(t)}}),BoxParser.createFullBoxCtor("sidx",function(t){this.reference_ID=t.readUint32(),this.timescale=t.readUint32(),0===this.version?(this.earliest_presentation_time=t.readUint32(),this.first_offset=t.readUint32()):(this.earliest_presentation_time=t.readUint64(),this.first_offset=t.readUint64()),t.readUint16(),this.references=[];for(var e=t.readUint16(),i=0;i<e;i++){var r={};this.references.push(r);var s=t.readUint32();r.reference_type=s>>31&1,r.referenced_size=2147483647&s,r.subsegment_duration=t.readUint32(),s=t.readUint32(),r.starts_with_SAP=s>>31&1,r.SAP_type=s>>28&7,r.SAP_delta_time=268435455&s}}),BoxParser.SingleItemTypeReferenceBox=function(t,e,i,r){BoxParser.Box.call(this,t,e),this.hdr_size=i,this.start=r},BoxParser.SingleItemTypeReferenceBox.prototype=new BoxParser.Box,BoxParser.SingleItemTypeReferenceBox.prototype.parse=function(t){this.from_item_ID=t.readUint16();var e=t.readUint16();this.references=[];for(var i=0;i<e;i++)this.references[i]=t.readUint16()},BoxParser.SingleItemTypeReferenceBoxLarge=function(t,e,i,r){BoxParser.Box.call(this,t,e),this.hdr_size=i,this.start=r},BoxParser.SingleItemTypeReferenceBoxLarge.prototype=new BoxParser.Box,BoxParser.SingleItemTypeReferenceBoxLarge.prototype.parse=function(t){this.from_item_ID=t.readUint32();var e=t.readUint16();this.references=[];for(var i=0;i<e;i++)this.references[i]=t.readUint32()},BoxParser.createFullBoxCtor("SmDm",function(t){this.primaryRChromaticity_x=t.readUint16(),this.primaryRChromaticity_y=t.readUint16(),this.primaryGChromaticity_x=t.readUint16(),this.primaryGChromaticity_y=t.readUint16(),this.primaryBChromaticity_x=t.readUint16(),this.primaryBChromaticity_y=t.readUint16(),this.whitePointChromaticity_x=t.readUint16(),this.whitePointChromaticity_y=t.readUint16(),this.luminanceMax=t.readUint32(),this.luminanceMin=t.readUint32()}),BoxParser.createFullBoxCtor("smhd",function(t){this.balance=t.readUint16(),t.readUint16()}),BoxParser.createFullBoxCtor("ssix",function(t){this.subsegments=[];for(var e=t.readUint32(),i=0;i<e;i++){var r={};this.subsegments.push(r),r.ranges=[];for(var s=t.readUint32(),a=0;a<s;a++){var n={};r.ranges.push(n),n.level=t.readUint8(),n.range_size=t.readUint24()}}}),BoxParser.createFullBoxCtor("stco",function(t){var e=t.readUint32();if(this.chunk_offsets=[],0===this.version)for(var i=0;i<e;i++)this.chunk_offsets.push(t.readUint32())}),BoxParser.createFullBoxCtor("stdp",function(t){var e=(this.size-this.hdr_size)/2;this.priority=[];for(var i=0;i<e;i++)this.priority[i]=t.readUint16()}),BoxParser.createFullBoxCtor("sthd"),BoxParser.createFullBoxCtor("stri",function(t){this.switch_group=t.readUint16(),this.alternate_group=t.readUint16(),this.sub_track_id=t.readUint32();var e=(this.size-this.hdr_size-8)/4;this.attribute_list=[];for(var i=0;i<e;i++)this.attribute_list[i]=t.readUint32()}),BoxParser.createFullBoxCtor("stsc",function(t){var e,i=t.readUint32();if(this.first_chunk=[],this.samples_per_chunk=[],this.sample_description_index=[],0===this.version)for(e=0;e<i;e++)this.first_chunk.push(t.readUint32()),this.samples_per_chunk.push(t.readUint32()),this.sample_description_index.push(t.readUint32())}),BoxParser.createFullBoxCtor("stsd",function(t){var e,i,r,s;for(this.entries=[],r=t.readUint32(),e=1;e<=r;e++){if((i=BoxParser.parseOneBox(t,!0,this.size-(t.getPosition()-this.start))).code!==BoxParser.OK)return;BoxParser[i.type+"SampleEntry"]?((s=new BoxParser[i.type+"SampleEntry"](i.size)).hdr_size=i.hdr_size,s.start=i.start):(Log.warn("BoxParser","Unknown sample entry type: "+i.type),s=new BoxParser.SampleEntry(i.type,i.size,i.hdr_size,i.start)),s.write===BoxParser.SampleEntry.prototype.write&&(Log.info("BoxParser","SampleEntry "+s.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),s.parseDataAndRewind(t)),s.parse(t),this.entries.push(s)}}),BoxParser.createFullBoxCtor("stsg",function(t){this.grouping_type=t.readUint32();var e=t.readUint16();this.group_description_index=[];for(var i=0;i<e;i++)this.group_description_index[i]=t.readUint32()}),BoxParser.createFullBoxCtor("stsh",function(t){var e,i=t.readUint32();if(this.shadowed_sample_numbers=[],this.sync_sample_numbers=[],0===this.version)for(e=0;e<i;e++)this.shadowed_sample_numbers.push(t.readUint32()),this.sync_sample_numbers.push(t.readUint32())}),BoxParser.createFullBoxCtor("stss",function(t){var e,i=t.readUint32();if(0===this.version)for(this.sample_numbers=[],e=0;e<i;e++)this.sample_numbers.push(t.readUint32())}),BoxParser.createFullBoxCtor("stsz",function(t){var e;if(this.sample_sizes=[],0===this.version)for(this.sample_size=t.readUint32(),this.sample_count=t.readUint32(),e=0;e<this.sample_count;e++)0===this.sample_size?this.sample_sizes.push(t.readUint32()):this.sample_sizes[e]=this.sample_size}),BoxParser.createFullBoxCtor("stts",function(t){var e,i,r=t.readUint32();if(this.sample_counts=[],this.sample_deltas=[],0===this.version)for(e=0;e<r;e++)this.sample_counts.push(t.readUint32()),(i=t.readInt32())<0&&(Log.warn("BoxParser","File uses negative stts sample delta, using value 1 instead, sync may be lost!"),i=1),this.sample_deltas.push(i)}),BoxParser.createFullBoxCtor("stvi",function(t){var e=t.readUint32();this.single_view_allowed=3&e,this.stereo_scheme=t.readUint32();var i,e=t.readUint32();for(this.stereo_indication_type=t.readString(e),this.boxes=[];t.getPosition()<this.start+this.size;){if((i=BoxParser.parseOneBox(t,!1,this.size-(t.getPosition()-this.start))).code!==BoxParser.OK)return;i=i.box,this.boxes.push(i),this[i.type]=i}}),BoxParser.createBoxCtor("styp",function(t){BoxParser.ftypBox.prototype.parse.call(this,t)}),BoxParser.createFullBoxCtor("stz2",function(t){var e,i;if(this.sample_sizes=[],0===this.version)if(this.reserved=t.readUint24(),this.field_size=t.readUint8(),i=t.readUint32(),4===this.field_size)for(e=0;e<i;e+=2){var r=t.readUint8();this.sample_sizes[e]=r>>4&15,this.sample_sizes[e+1]=15&r}else if(8===this.field_size)for(e=0;e<i;e++)this.sample_sizes[e]=t.readUint8();else if(16===this.field_size)for(e=0;e<i;e++)this.sample_sizes[e]=t.readUint16();else Log.error("BoxParser","Error in length field in stz2 box")}),BoxParser.createFullBoxCtor("subs",function(t){var e,i,r,s=t.readUint32();for(this.entries=[],e=0;e<s;e++){var a={};if((this.entries[e]=a).sample_delta=t.readUint32(),a.subsamples=[],0<(r=t.readUint16()))for(i=0;i<r;i++){var n={};a.subsamples.push(n),1==this.version?n.size=t.readUint32():n.size=t.readUint16(),n.priority=t.readUint8(),n.discardable=t.readUint8(),n.codec_specific_parameters=t.readUint32()}}}),BoxParser.createFullBoxCtor("tenc",function(t){var e;t.readUint8(),0===this.version?t.readUint8():(e=t.readUint8(),this.default_crypt_byte_block=e>>4&15,this.default_skip_byte_block=15&e),this.default_isProtected=t.readUint8(),this.default_Per_Sample_IV_Size=t.readUint8(),this.default_KID=BoxParser.parseHex16(t),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=t.readUint8(),this.default_constant_IV=t.readUint8Array(this.default_constant_IV_size))}),BoxParser.createFullBoxCtor("tfdt",function(t){1==this.version?this.baseMediaDecodeTime=t.readUint64():this.baseMediaDecodeTime=t.readUint32()}),BoxParser.createFullBoxCtor("tfhd",function(t){var e=0;this.track_id=t.readUint32(),this.size-this.hdr_size>e&&this.flags&BoxParser.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=t.readUint64(),e+=8):this.base_data_offset=0,this.size-this.hdr_size>e&&this.flags&BoxParser.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=t.readUint32(),e+=4):this.default_sample_description_index=0,this.size-this.hdr_size>e&&this.flags&BoxParser.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=t.readUint32(),e+=4):this.default_sample_duration=0,this.size-this.hdr_size>e&&this.flags&BoxParser.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=t.readUint32(),e+=4):this.default_sample_size=0,this.size-this.hdr_size>e&&this.flags&BoxParser.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=t.readUint32(),e+=4):this.default_sample_flags=0}),BoxParser.createFullBoxCtor("tfra",function(t){this.track_ID=t.readUint32(),t.readUint24();var e=t.readUint8();this.length_size_of_traf_num=e>>4&3,this.length_size_of_trun_num=e>>2&3,this.length_size_of_sample_num=3&e,this.entries=[];for(var i=t.readUint32(),r=0;r<i;r++)1===this.version?(this.time=t.readUint64(),this.moof_offset=t.readUint64()):(this.time=t.readUint32(),this.moof_offset=t.readUint32()),this.traf_number=t["readUint"+8*(this.length_size_of_traf_num+1)](),this.trun_number=t["readUint"+8*(this.length_size_of_trun_num+1)](),this.sample_number=t["readUint"+8*(this.length_size_of_sample_num+1)]()}),BoxParser.createFullBoxCtor("tkhd",function(t){1==this.version?(this.creation_time=t.readUint64(),this.modification_time=t.readUint64(),this.track_id=t.readUint32(),t.readUint32(),this.duration=t.readUint64()):(this.creation_time=t.readUint32(),this.modification_time=t.readUint32(),this.track_id=t.readUint32(),t.readUint32(),this.duration=t.readUint32()),t.readUint32Array(2),this.layer=t.readInt16(),this.alternate_group=t.readInt16(),this.volume=t.readInt16()>>8,t.readUint16(),this.matrix=t.readInt32Array(9),this.width=t.readUint32(),this.height=t.readUint32()}),BoxParser.createBoxCtor("tmax",function(t){this.time=t.readUint32()}),BoxParser.createBoxCtor("tmin",function(t){this.time=t.readUint32()}),BoxParser.createBoxCtor("totl",function(t){this.bytessent=t.readUint32()}),BoxParser.createBoxCtor("tpay",function(t){this.bytessent=t.readUint32()}),BoxParser.createBoxCtor("tpyl",function(t){this.bytessent=t.readUint64()}),BoxParser.TrackGroupTypeBox.prototype.parse=function(t){this.parseFullHeader(t),this.track_group_id=t.readUint32()},BoxParser.createTrackGroupCtor("msrc"),BoxParser.TrackReferenceTypeBox=function(t,e,i,r){BoxParser.Box.call(this,t,e),this.hdr_size=i,this.start=r},BoxParser.TrackReferenceTypeBox.prototype=new BoxParser.Box,BoxParser.TrackReferenceTypeBox.prototype.parse=function(t){this.track_ids=t.readUint32Array((this.size-this.hdr_size)/4)},BoxParser.trefBox.prototype.parse=function(t){for(var e;t.getPosition()<this.start+this.size;){if((e=BoxParser.parseOneBox(t,!0,this.size-(t.getPosition()-this.start))).code!==BoxParser.OK)return;(e=new BoxParser.TrackReferenceTypeBox(e.type,e.size,e.hdr_size,e.start)).write===BoxParser.Box.prototype.write&&"mdat"!==e.type&&(Log.info("BoxParser","TrackReference "+e.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),e.parseDataAndRewind(t)),e.parse(t),this.boxes.push(e)}},BoxParser.createFullBoxCtor("trep",function(t){for(this.track_ID=t.readUint32(),this.boxes=[];t.getPosition()<this.start+this.size;){if(ret=BoxParser.parseOneBox(t,!1,this.size-(t.getPosition()-this.start)),ret.code!==BoxParser.OK)return;box=ret.box,this.boxes.push(box)}}),BoxParser.createFullBoxCtor("trex",function(t){this.track_id=t.readUint32(),this.default_sample_description_index=t.readUint32(),this.default_sample_duration=t.readUint32(),this.default_sample_size=t.readUint32(),this.default_sample_flags=t.readUint32()}),BoxParser.createBoxCtor("trpy",function(t){this.bytessent=t.readUint64()}),BoxParser.createFullBoxCtor("trun",function(t){var e=0;if(this.sample_count=t.readUint32(),e+=4,this.size-this.hdr_size>e&&this.flags&BoxParser.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=t.readInt32(),e+=4):this.data_offset=0,this.size-this.hdr_size>e&&this.flags&BoxParser.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=t.readUint32(),e+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>e)for(var i=0;i<this.sample_count;i++)this.flags&BoxParser.TRUN_FLAGS_DURATION&&(this.sample_duration[i]=t.readUint32()),this.flags&BoxParser.TRUN_FLAGS_SIZE&&(this.sample_size[i]=t.readUint32()),this.flags&BoxParser.TRUN_FLAGS_FLAGS&&(this.sample_flags[i]=t.readUint32()),this.flags&BoxParser.TRUN_FLAGS_CTS_OFFSET&&(0===this.version?this.sample_composition_time_offset[i]=t.readUint32():this.sample_composition_time_offset[i]=t.readInt32())}),BoxParser.createFullBoxCtor("tsel",function(t){this.switch_group=t.readUint32();var e=(this.size-this.hdr_size-4)/4;this.attribute_list=[];for(var i=0;i<e;i++)this.attribute_list[i]=t.readUint32()}),BoxParser.createFullBoxCtor("txtC",function(t){this.config=t.readCString()}),BoxParser.createFullBoxCtor("url ",function(t){1!==this.flags&&(this.location=t.readCString())}),BoxParser.createFullBoxCtor("urn ",function(t){this.name=t.readCString(),0<this.size-this.hdr_size-this.name.length-1&&(this.location=t.readCString())}),BoxParser.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,function(t){this.LiveServerManifest=t.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}),BoxParser.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,function(t){this.system_id=BoxParser.parseHex16(t);var e=t.readUint32();0<e&&(this.data=t.readUint8Array(e))}),BoxParser.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),BoxParser.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,function(t){this.default_AlgorithmID=t.readUint24(),this.default_IV_size=t.readUint8(),this.default_KID=BoxParser.parseHex16(t)}),BoxParser.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,function(t){this.fragment_count=t.readUint8(),this.entries=[];for(var e=0;e<this.fragment_count;e++){var i={},r=0,s=0,s=1===this.version?(r=t.readUint64(),t.readUint64()):(r=t.readUint32(),t.readUint32());i.absolute_time=r,i.absolute_duration=s,this.entries.push(i)}}),BoxParser.createUUIDBox("6d1d9b0542d544e680e2141daff757b2",!0,!1,function(t){1===this.version?(this.absolute_time=t.readUint64(),this.duration=t.readUint64()):(this.absolute_time=t.readUint32(),this.duration=t.readUint32())}),BoxParser.createFullBoxCtor("vmhd",function(t){this.graphicsmode=t.readUint16(),this.opcolor=t.readUint16Array(3)}),BoxParser.createFullBoxCtor("vpcC",function(t){var e;1===this.version?(this.profile=t.readUint8(),this.level=t.readUint8(),e=t.readUint8(),this.bitDepth=e>>4,this.chromaSubsampling=e>>1&7,this.videoFullRangeFlag=1&e,this.colourPrimaries=t.readUint8(),this.transferCharacteristics=t.readUint8(),this.matrixCoefficients=t.readUint8()):(this.profile=t.readUint8(),this.level=t.readUint8(),e=t.readUint8(),this.bitDepth=e>>4&15,this.colorSpace=15&e,e=t.readUint8(),this.chromaSubsampling=e>>4&15,this.transferFunction=e>>1&7,this.videoFullRangeFlag=1&e),this.codecIntializationDataSize=t.readUint16(),this.codecIntializationData=t.readUint8Array(this.codecIntializationDataSize)}),BoxParser.createBoxCtor("vttC",function(t){this.text=t.readString(this.size-this.hdr_size)}),BoxParser.createFullBoxCtor("vvcC",function(t){var e,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(t){this.held_bits=t.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(t){this.held_bits=t.readUint16(),this.num_held_bits=16},extract_bits:function(t){var e=this.held_bits>>this.num_held_bits-t&(1<<t)-1;return this.num_held_bits-=t,e}};if(i.stream_read_1_bytes(t),i.extract_bits(5),this.lengthSizeMinusOne=i.extract_bits(2),this.ptl_present_flag=i.extract_bits(1),this.ptl_present_flag){if(i.stream_read_2_bytes(t),this.ols_idx=i.extract_bits(9),this.num_sublayers=i.extract_bits(3),this.constant_frame_rate=i.extract_bits(2),this.chroma_format_idc=i.extract_bits(2),i.stream_read_1_bytes(t),this.bit_depth_minus8=i.extract_bits(3),i.extract_bits(5),i.stream_read_2_bytes(t),i.extract_bits(2),this.num_bytes_constraint_info=i.extract_bits(6),this.general_profile_idc=i.extract_bits(7),this.general_tier_flag=i.extract_bits(1),this.general_level_idc=t.readUint8(),i.stream_read_1_bytes(t),this.ptl_frame_only_constraint_flag=i.extract_bits(1),this.ptl_multilayer_enabled_flag=i.extract_bits(1),this.general_constraint_info=new Uint8Array(this.num_bytes_constraint_info),this.num_bytes_constraint_info){for(o=0;o<this.num_bytes_constraint_info-1;o++){var r=i.extract_bits(6);i.stream_read_1_bytes(t);var s=i.extract_bits(2);this.general_constraint_info[o]=r<<2|s}this.general_constraint_info[this.num_bytes_constraint_info-1]=i.extract_bits(6)}else i.extract_bits(6);for(i.stream_read_1_bytes(t),this.ptl_sublayer_present_mask=0,e=this.num_sublayers-2;0<=e;--e){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<<e}for(e=this.num_sublayers;e<=8&&1<this.num_sublayers;++e)i.extract_bits(1);for(e=this.num_sublayers-2;0<=e;--e)this.ptl_sublayer_present_mask&1<<e&&(this.sublayer_level_idc[e]=t.readUint8());if(this.ptl_num_sub_profiles=t.readUint8(),this.general_sub_profile_idc=[],this.ptl_num_sub_profiles)for(o=0;o<this.ptl_num_sub_profiles;o++)this.general_sub_profile_idc.push(t.readUint32());this.max_picture_width=t.readUint16(),this.max_picture_height=t.readUint16(),this.avg_frame_rate=t.readUint16()}this.nalu_arrays=[];for(var n=t.readUint8(),o=0;o<n;o++){var h=[];this.nalu_arrays.push(h),i.stream_read_1_bytes(t),h.completeness=i.extract_bits(1),i.extract_bits(2),h.nalu_type=i.extract_bits(5);var d=1;for(13!=h.nalu_type&&12!=h.nalu_type&&(d=t.readUint16()),e=0;e<d;e++){var l=t.readUint16();h.push({data:t.readUint8Array(l),length:l})}}}),BoxParser.createFullBoxCtor("vvnC",function(t){var e=strm.readUint8();this.lengthSizeMinusOne=3&e}),BoxParser.SampleEntry.prototype.isVideo=function(){return!1},BoxParser.SampleEntry.prototype.isAudio=function(){return!1},BoxParser.SampleEntry.prototype.isSubtitle=function(){return!1},BoxParser.SampleEntry.prototype.isMetadata=function(){return!1},BoxParser.SampleEntry.prototype.isHint=function(){return!1},BoxParser.SampleEntry.prototype.getCodec=function(){return this.type.replace(".","")},BoxParser.SampleEntry.prototype.getWidth=function(){return""},BoxParser.SampleEntry.prototype.getHeight=function(){return""},BoxParser.SampleEntry.prototype.getChannelCount=function(){return""},BoxParser.SampleEntry.prototype.getSampleRate=function(){return""},BoxParser.SampleEntry.prototype.getSampleSize=function(){return""},BoxParser.VisualSampleEntry.prototype.isVideo=function(){return!0},BoxParser.VisualSampleEntry.prototype.getWidth=function(){return this.width},BoxParser.VisualSampleEntry.prototype.getHeight=function(){return this.height},BoxParser.AudioSampleEntry.prototype.isAudio=function(){return!0},BoxParser.AudioSampleEntry.prototype.getChannelCount=function(){return this.channel_count},BoxParser.AudioSampleEntry.prototype.getSampleRate=function(){return this.samplerate},BoxParser.AudioSampleEntry.prototype.getSampleSize=function(){return this.samplesize},BoxParser.SubtitleSampleEntry.prototype.isSubtitle=function(){return!0},BoxParser.MetadataSampleEntry.prototype.isMetadata=function(){return!0},BoxParser.decimalToHex=function(t,e){var i=Number(t).toString(16);for(e=null==e?e=2:e;i.length<e;)i="0"+i;return i},BoxParser.avc1SampleEntry.prototype.getCodec=BoxParser.avc2SampleEntry.prototype.getCodec=BoxParser.avc3SampleEntry.prototype.getCodec=BoxParser.avc4SampleEntry.prototype.getCodec=function(){var t=BoxParser.SampleEntry.prototype.getCodec.call(this);return this.avcC?t+"."+BoxParser.decimalToHex(this.avcC.AVCProfileIndication)+BoxParser.decimalToHex(this.avcC.profile_compatibility)+BoxParser.decimalToHex(this.avcC.AVCLevelIndication):t},BoxParser.hev1SampleEntry.prototype.getCodec=BoxParser.hvc1SampleEntry.prototype.getCodec=function(){var t=BoxParser.SampleEntry.prototype.getCodec.call(this);if(this.hvcC){switch(t+=".",this.hvcC.general_profile_space){case 0:t+="";break;case 1:t+="A";break;case 2:t+="B";break;case 3:t+="C"}t+=this.hvcC.general_profile_idc,t+=".";for(var e=this.hvcC.general_profile_compatibility,i=0,r=0;r<32&&(i|=1&e,31!=r);r++)i<<=1,e>>=1;t+=BoxParser.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var s=!1,a="";for(r=5;0<=r;r--)(this.hvcC.general_constraint_indicator[r]||s)&&(a="."+BoxParser.decimalToHex(this.hvcC.general_constraint_indicator[r],0)+a,s=!0);t+=a}return t},BoxParser.vvc1SampleEntry.prototype.getCodec=BoxParser.vvi1SampleEntry.prototype.getCodec=function(){var t=BoxParser.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var e="";if(this.vvcC.general_constraint_info){var i,r=[],s=0;for(s|=this.vvcC.ptl_frame_only_constraint<<7,s|=this.vvcC.ptl_multilayer_enabled<<6,h=0;h<this.vvcC.general_constraint_info.length;++h)s|=this.vvcC.general_constraint_info[h]>>2&63,r.push(s),s&&(i=h),s=this.vvcC.general_constraint_info[h]>>2&3;if(void 0===i)e=".CA";else{e=".C";for(var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",n=0,o=0,h=0;h<=i;++h)for(n=n<<8|r[h],o+=8;5<=o;)e+=a[n>>o-5&31],n&=(1<<(o-=5))-1;o&&(e+=a[31&(n<<=5-o)])}}t+=e}return t},BoxParser.mp4aSampleEntry.prototype.getCodec=function(){var t=BoxParser.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var e=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return t+"."+BoxParser.decimalToHex(e)+(i?"."+i:"")}return t},BoxParser.stxtSampleEntry.prototype.getCodec=function(){var t=BoxParser.SampleEntry.prototype.getCodec.call(this);return this.mime_format?t+"."+this.mime_format:t},BoxParser.vp08SampleEntry.prototype.getCodec=BoxParser.vp09SampleEntry.prototype.getCodec=function(){var t=BoxParser.SampleEntry.prototype.getCodec.call(this),e=this.vpcC.level;0==e&&(e="00");var i=this.vpcC.bitDepth;return 8==i&&(i="08"),t+".0"+this.vpcC.profile+"."+e+"."+i},BoxParser.av01SampleEntry.prototype.getCodec=function(){var t,e=BoxParser.SampleEntry.prototype.getCodec.call(this),i=this.av1C.seq_level_idx_0;return i<10&&(i="0"+i),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?t=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(t=1===this.av1C.high_bitdepth?"10":"08"),e+"."+this.av1C.seq_profile+"."+i+(this.av1C.seq_tier_0?"H":"M")+"."+t},BoxParser.Box.prototype.writeHeader=function(t,e){this.size+=8,this.size>MAX_SIZE&&(this.size+=8),"uuid"===this.type&&(this.size+=16),Log.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+t.getPosition()+(e||"")),this.size>MAX_SIZE?t.writeUint32(1):(this.sizePosition=t.getPosition(),t.writeUint32(this.size)),t.writeString(this.type,null,4),"uuid"===this.type&&t.writeUint8Array(this.uuid),this.size>MAX_SIZE&&t.writeUint64(this.size)},BoxParser.FullBox.prototype.writeHeader=function(t){this.size+=4,BoxParser.Box.prototype.writeHeader.call(this,t," v="+this.version+" f="+this.flags),t.writeUint8(this.version),t.writeUint24(this.flags)},BoxParser.Box.prototype.write=function(t){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(t),t.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(t),this.data&&t.writeUint8Array(this.data))},BoxParser.ContainerBox.prototype.write=function(t){this.size=0,this.writeHeader(t);for(var e=0;e<this.boxes.length;e++)this.boxes[e]&&(this.boxes[e].write(t),this.size+=this.boxes[e].size);Log.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),t.adjustUint32(this.sizePosition,this.size)},BoxParser.TrackReferenceTypeBox.prototype.write=function(t){this.size=4*this.track_ids.length,this.writeHeader(t),t.writeUint32Array(this.track_ids)},BoxParser.avcCBox.prototype.write=function(t){var e;for(this.size=7,e=0;e<this.SPS.length;e++)this.size+=2+this.SPS[e].length;for(e=0;e<this.PPS.length;e++)this.size+=2+this.PPS[e].length;for(this.ext&&(this.size+=this.ext.length),this.writeHeader(t),t.writeUint8(this.configurationVersion),t.writeUint8(this.AVCProfileIndication),t.writeUint8(this.profile_compatibility),t.writeUint8(this.AVCLevelIndication),t.writeUint8(this.lengthSizeMinusOne+252),t.writeUint8(this.SPS.length+224),e=0;e<this.SPS.length;e++)t.writeUint16(this.SPS[e].length),t.writeUint8Array(this.SPS[e].nalu);for(t.writeUint8(this.PPS.length),e=0;e<this.PPS.length;e++)t.writeUint16(this.PPS[e].length),t.writeUint8Array(this.PPS[e].nalu);this.ext&&t.writeUint8Array(this.ext)},BoxParser.co64Box.prototype.write=function(t){var e;for(this.version=0,this.flags=0,this.size=4+8*this.chunk_offsets.length,this.writeHeader(t),t.writeUint32(this.chunk_offsets.length),e=0;e<this.chunk_offsets.length;e++)t.writeUint64(this.chunk_offsets[e])},BoxParser.cslgBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=20,this.writeHeader(t),t.writeInt32(this.compositionToDTSShift),t.writeInt32(this.leastDecodeToDisplayDelta),t.writeInt32(this.greatestDecodeToDisplayDelta),t.writeInt32(this.compositionStartTime),t.writeInt32(this.compositionEndTime)},BoxParser.cttsBox.prototype.write=function(t){var e;for(this.version=0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(t),t.writeUint32(this.sample_counts.length),e=0;e<this.sample_counts.length;e++)t.writeUint32(this.sample_counts[e]),1===this.version?t.writeInt32(this.sample_offsets[e]):t.writeUint32(this.sample_offsets[e])},BoxParser.drefBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4,this.writeHeader(t),t.writeUint32(this.entries.length);for(var e=0;e<this.entries.length;e++)this.entries[e].write(t),this.size+=this.entries[e].size;Log.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),t.adjustUint32(this.sizePosition,this.size)},BoxParser.elngBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=this.extended_language.length,this.writeHeader(t),t.writeString(this.extended_language)},BoxParser.elstBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4+12*this.entries.length,this.writeHeader(t),t.writeUint32(this.entries.length);for(var e=0;e<this.entries.length;e++){var i=this.entries[e];t.writeUint32(i.segment_duration),t.writeInt32(i.media_time),t.writeInt16(i.media_rate_integer),t.writeInt16(i.media_rate_fraction)}},BoxParser.emsgBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=16+this.message_data.length+(this.scheme_id_uri.length+1)+(this.value.length+1),this.writeHeader(t),t.writeCString(this.scheme_id_uri),t.writeCString(this.value),t.writeUint32(this.timescale),t.writeUint32(this.presentation_time_delta),t.writeUint32(this.event_duration),t.writeUint32(this.id),t.writeUint8Array(this.message_data)},BoxParser.ftypBox.prototype.write=function(t){this.size=8+4*this.compatible_brands.length,this.writeHeader(t),t.writeString(this.major_brand,null,4),t.writeUint32(this.minor_version);for(var e=0;e<this.compatible_brands.length;e++)t.writeString(this.compatible_brands[e],null,4)},BoxParser.hdlrBox.prototype.write=function(t){this.size=20+this.name.length+1,this.version=0,this.flags=0,this.writeHeader(t),t.writeUint32(0),t.writeString(this.handler,null,4),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeCString(this.name)},BoxParser.kindBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=this.schemeURI.length+1+(this.value.length+1),this.writeHeader(t),t.writeCString(this.schemeURI),t.writeCString(this.value)},BoxParser.mdhdBox.prototype.write=function(t){this.size=20,this.flags=0,this.version=0,this.writeHeader(t),t.writeUint32(this.creation_time),t.writeUint32(this.modification_time),t.writeUint32(this.timescale),t.writeUint32(this.duration),t.writeUint16(this.language),t.writeUint16(0)},BoxParser.mehdBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4,this.writeHeader(t),t.writeUint32(this.fragment_duration)},BoxParser.mfhdBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4,this.writeHeader(t),t.writeUint32(this.sequence_number)},BoxParser.mvhdBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=96,this.writeHeader(t),t.writeUint32(this.creation_time),t.writeUint32(this.modification_time),t.writeUint32(this.timescale),t.writeUint32(this.duration),t.writeUint32(this.rate),t.writeUint16(this.volume<<8),t.writeUint16(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32Array(this.matrix),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32(this.next_track_id)},BoxParser.SampleEntry.prototype.writeHeader=function(t){this.size=8,BoxParser.Box.prototype.writeHeader.call(this,t),t.writeUint8(0),t.writeUint8(0),t.writeUint8(0),t.writeUint8(0),t.writeUint8(0),t.writeUint8(0),t.writeUint16(this.data_reference_index)},BoxParser.SampleEntry.prototype.writeFooter=function(t){for(var e=0;e<this.boxes.length;e++)this.boxes[e].write(t),this.size+=this.boxes[e].size;Log.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),t.adjustUint32(this.sizePosition,this.size)},BoxParser.SampleEntry.prototype.write=function(t){this.writeHeader(t),t.writeUint8Array(this.data),this.size+=this.data.length,Log.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),t.adjustUint32(this.sizePosition,this.size)},BoxParser.VisualSampleEntry.prototype.write=function(t){this.writeHeader(t),this.size+=70,t.writeUint16(0),t.writeUint16(0),t.writeUint32(0),t.writeUint32(0),t.writeUint32(0),t.writeUint16(this.width),t.writeUint16(this.height),t.writeUint32(this.horizresolution),t.writeUint32(this.vertresolution),t.writeUint32(0),t.writeUint16(this.frame_count),t.writeUint8(Math.min(31,this.compressorname.length)),t.writeString(this.compressorname,null,31),t.writeUint16(this.depth),t.writeInt16(-1),this.writeFooter(t)},BoxParser.AudioSampleEntry.prototype.write=function(t){this.writeHeader(t),this.size+=20,t.writeUint32(0),t.writeUint32(0),t.writeUint16(this.channel_count),t.writeUint16(this.samplesize),t.writeUint16(0),t.writeUint16(0),t.writeUint32(this.samplerate<<16),this.writeFooter(t)},BoxParser.stppSampleEntry.prototype.write=function(t){this.writeHeader(t),this.size+=this.namespace.length+1+this.schema_location.length+1+this.auxiliary_mime_types.length+1,t.writeCString(this.namespace),t.writeCString(this.schema_location),t.writeCString(this.auxiliary_mime_types),this.writeFooter(t)},BoxParser.SampleGroupEntry.prototype.write=function(t){t.writeUint8Array(this.data)},BoxParser.sbgpBox.prototype.write=function(t){this.version=1,this.flags=0,this.size=12+8*this.entries.length,this.writeHeader(t),t.writeString(this.grouping_type,null,4),t.writeUint32(this.grouping_type_parameter),t.writeUint32(this.entries.length);for(var e=0;e<this.entries.length;e++){var i=this.entries[e];t.writeInt32(i.sample_count),t.writeInt32(i.group_description_index)}},BoxParser.sgpdBox.prototype.write=function(t){var e,i;for(this.flags=0,this.size=12,e=0;e<this.entries.length;e++)i=this.entries[e],1===this.version&&(0===this.default_length&&(this.size+=4),this.size+=i.data.length);for(this.writeHeader(t),t.writeString(this.grouping_type,null,4),1===this.version&&t.writeUint32(this.default_length),2<=this.version&&t.writeUint32(this.default_sample_description_index),t.writeUint32(this.entries.length),e=0;e<this.entries.length;e++)i=this.entries[e],1===this.version&&0===this.default_length&&t.writeUint32(i.description_length),i.write(t)},BoxParser.sidxBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=20+12*this.references.length,this.writeHeader(t),t.writeUint32(this.reference_ID),t.writeUint32(this.timescale),t.writeUint32(this.earliest_presentation_time),t.writeUint32(this.first_offset),t.writeUint16(0),t.writeUint16(this.references.length);for(var e=0;e<this.references.length;e++){var i=this.references[e];t.writeUint32(i.reference_type<<31|i.referenced_size),t.writeUint32(i.subsegment_duration),t.writeUint32(i.starts_with_SAP<<31|i.SAP_type<<28|i.SAP_delta_time)}},BoxParser.smhdBox.prototype.write=function(t){this.version=0,this.flags=1,this.size=4,this.writeHeader(t),t.writeUint16(this.balance),t.writeUint16(0)},BoxParser.stcoBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4+4*this.chunk_offsets.length,this.writeHeader(t),t.writeUint32(this.chunk_offsets.length),t.writeUint32Array(this.chunk_offsets)},BoxParser.stscBox.prototype.write=function(t){var e;for(this.version=0,this.flags=0,this.size=4+12*this.first_chunk.length,this.writeHeader(t),t.writeUint32(this.first_chunk.length),e=0;e<this.first_chunk.length;e++)t.writeUint32(this.first_chunk[e]),t.writeUint32(this.samples_per_chunk[e]),t.writeUint32(this.sample_description_index[e])},BoxParser.stsdBox.prototype.write=function(t){var e;for(this.version=0,this.flags=0,this.size=0,this.writeHeader(t),t.writeUint32(this.entries.length),this.size+=4,e=0;e<this.entries.length;e++)this.entries[e].write(t),this.size+=this.entries[e].size;Log.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),t.adjustUint32(this.sizePosition,this.size)},BoxParser.stshBox.prototype.write=function(t){var e;for(this.version=0,this.flags=0,this.size=4+8*this.shadowed_sample_numbers.length,this.writeHeader(t),t.writeUint32(this.shadowed_sample_numbers.length),e=0;e<this.shadowed_sample_numbers.length;e++)t.writeUint32(this.shadowed_sample_numbers[e]),t.writeUint32(this.sync_sample_numbers[e])},BoxParser.stssBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=4+4*this.sample_numbers.length,this.writeHeader(t),t.writeUint32(this.sample_numbers.length),t.writeUint32Array(this.sample_numbers)},BoxParser.stszBox.prototype.write=function(t){var e,i=!0;if(this.version=0,(this.flags=0)<this.sample_sizes.length)for(e=0;e+1<this.sample_sizes.length;){if(this.sample_sizes[e+1]!==this.sample_sizes[0]){i=!1;break}e++}else i=!1;this.size=8,i||(this.size+=4*this.sample_sizes.length),this.writeHeader(t),i?t.writeUint32(this.sample_sizes[0]):t.writeUint32(0),t.writeUint32(this.sample_sizes.length),i||t.writeUint32Array(this.sample_sizes)},BoxParser.sttsBox.prototype.write=function(t){var e;for(this.version=0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(t),t.writeUint32(this.sample_counts.length),e=0;e<this.sample_counts.length;e++)t.writeUint32(this.sample_counts[e]),t.writeUint32(this.sample_deltas[e])},BoxParser.tfdtBox.prototype.write=function(t){var e=Math.pow(2,32)-1;this.version=this.baseMediaDecodeTime>e?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(t),1===this.version?t.writeUint64(this.baseMediaDecodeTime):t.writeUint32(this.baseMediaDecodeTime)},BoxParser.tfhdBox.prototype.write=function(t){this.version=0,this.size=4,this.flags&BoxParser.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&BoxParser.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&BoxParser.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&BoxParser.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&BoxParser.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(t),t.writeUint32(this.track_id),this.flags&BoxParser.TFHD_FLAG_BASE_DATA_OFFSET&&t.writeUint64(this.base_data_offset),this.flags&BoxParser.TFHD_FLAG_SAMPLE_DESC&&t.writeUint32(this.default_sample_description_index),this.flags&BoxParser.TFHD_FLAG_SAMPLE_DUR&&t.writeUint32(this.default_sample_duration),this.flags&BoxParser.TFHD_FLAG_SAMPLE_SIZE&&t.writeUint32(this.default_sample_size),this.flags&BoxParser.TFHD_FLAG_SAMPLE_FLAGS&&t.writeUint32(this.default_sample_flags)},BoxParser.tkhdBox.prototype.write=function(t){this.version=0,this.size=80,this.writeHeader(t),t.writeUint32(this.creation_time),t.writeUint32(this.modification_time),t.writeUint32(this.track_id),t.writeUint32(0),t.writeUint32(this.duration),t.writeUint32(0),t.writeUint32(0),t.writeInt16(this.layer),t.writeInt16(this.alternate_group),t.writeInt16(this.volume<<8),t.writeUint16(0),t.writeInt32Array(this.matrix),t.writeUint32(this.width),t.writeUint32(this.height)},BoxParser.trexBox.prototype.write=function(t){this.version=0,this.flags=0,this.size=20,this.writeHeader(t),t.writeUint32(this.track_id),t.writeUint32(this.default_sample_description_index),t.writeUint32(this.default_sample_duration),t.writeUint32(this.default_sample_size),t.writeUint32(this.default_sample_flags)},BoxParser.trunBox.prototype.write=function(t){this.version=0,this.size=4,this.flags&BoxParser.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&BoxParser.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&BoxParser.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&BoxParser.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&BoxParser.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&BoxParser.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(t),t.writeUint32(this.sample_count),this.flags&BoxParser.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=t.getPosition(),t.writeInt32(this.data_offset)),this.flags&BoxParser.TRUN_FLAGS_FIRST_FLAG&&t.writeUint32(this.first_sample_flags);for(var e=0;e<this.sample_count;e++)this.flags&BoxParser.TRUN_FLAGS_DURATION&&t.writeUint32(this.sample_duration[e]),this.flags&BoxParser.TRUN_FLAGS_SIZE&&t.writeUint32(this.sample_size[e]),this.flags&BoxParser.TRUN_FLAGS_FLAGS&&t.writeUint32(this.sample_flags[e]),this.flags&BoxParser.TRUN_FLAGS_CTS_OFFSET&&(0===this.version?t.writeUint32(this.sample_composition_time_offset[e]):t.writeInt32(this.sample_composition_time_offset[e]))},BoxParser["url Box"].prototype.write=function(t){this.version=0,this.location?(this.flags=0,this.size=this.location.length+1):(this.flags=1,this.size=0),this.writeHeader(t),this.location&&t.writeCString(this.location)},BoxParser["urn Box"].prototype.write=function(t){this.version=0,this.flags=0,this.size=this.name.length+1+(this.location?this.location.length+1:0),this.writeHeader(t),t.writeCString(this.name),this.location&&t.writeCString(this.location)},BoxParser.vmhdBox.prototype.write=function(t){this.version=0,this.flags=1,this.size=8,this.writeHeader(t),t.writeUint16(this.graphicsmode),t.writeUint16Array(this.opcolor)},BoxParser.cttsBox.prototype.unpack=function(t){for(var e,i=0,r=0;r<this.sample_counts.length;r++)for(e=0;e<this.sample_counts[r];e++)t[i].pts=t[i].dts+this.sample_offsets[r],i++},BoxParser.sttsBox.prototype.unpack=function(t){for(var e,i=0,r=0;r<this.sample_counts.length;r++)for(e=0;e<this.sample_counts[r];e++)t[i].dts=0===i?0:t[i-1].dts+this.sample_deltas[r],i++},BoxParser.stcoBox.prototype.unpack=function(t){for(var e=0;e<this.chunk_offsets.length;e++)t[e].offset=this.chunk_offsets[e]},BoxParser.stscBox.prototype.unpack=function(t){for(var e,i,r=0,s=0,a=0;a<this.first_chunk.length;a++)for(e=0;e<(a+1<this.first_chunk.length?this.first_chunk[a+1]:1/0);e++)for(s++,i=0;i<this.samples_per_chunk[a];i++){if(!t[r])return;t[r].description_index=this.sample_description_index[a],t[r].chunk_index=s,r++}},BoxParser.stszBox.prototype.unpack=function(t){for(var e=0;e<this.sample_sizes.length;e++)t[e].size=this.sample_sizes[e]},BoxParser.DIFF_BOXES_PROP_NAMES=["boxes","entries","references","subsamples","items","item_infos","extents","associations","subsegments","ranges","seekLists","seekPoints","esd","levels"],BoxParser.DIFF_PRIMITIVE_ARRAY_PROP_NAMES=["compatible_brands","matrix","opcolor","sample_counts","sample_counts","sample_deltas","first_chunk","samples_per_chunk","sample_sizes","chunk_offsets","sample_offsets","sample_description_index","sample_duration"],BoxParser.boxEqualFields=function(t,e){if(t&&!e)return!1;for(var i in t)if(!(-1<BoxParser.DIFF_BOXES_PROP_NAMES.indexOf(i)||t[i]instanceof BoxParser.Box||e[i]instanceof BoxParser.Box||void 0===t[i]||void 0===e[i]||"function"==typeof t[i]||"function"==typeof e[i]||t.subBoxNames&&-1<t.subBoxNames.indexOf(i.slice(0,4))||e.subBoxNames&&-1<e.subBoxNames.indexOf(i.slice(0,4))||"data"===i||"start"===i||"size"===i||"creation_time"===i||"modification_time"===i||-1<BoxParser.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)||t[i]===e[i]))return!1;return!0},BoxParser.boxEqual=function(t,e){if(!BoxParser.boxEqualFields(t,e))return!1;for(var i=0;i<BoxParser.DIFF_BOXES_PROP_NAMES.length;i++){var r=BoxParser.DIFF_BOXES_PROP_NAMES[i];if(t[r]&&e[r]&&!BoxParser.boxEqual(t[r],e[r]))return!1}return!0};var VTTin4Parser=function(){};VTTin4Parser.prototype.parseSample=function(t){for(var e,i=new MP4BoxStream(t.buffer),r=[];!i.isEos();)(e=BoxParser.parseOneBox(i,!1)).code===BoxParser.OK&&"vttc"===e.box.type&&r.push(e.box);return r},VTTin4Parser.prototype.getText=function(t,e,i){function s(t,e,i){return i=i||"0",(t+="").length>=e?t:new Array(e-t.length+1).join(i)+t}function r(t){var e=Math.floor(t/3600),i=Math.floor((t-3600*e)/60),r=Math.floor(t-3600*e-60*i),t=Math.floor(1e3*(t-3600*e-60*i-r));return s(e,2)+":"+s(i,2)+":"+s(r,2)+"."+s(t,3)}for(var a=this.parseSample(i),n="",o=0;o<a.length;o++){var h=a[o];n+=r(t)+" --\x3e "+r(e)+"\r\n",n+=h.payl.text}return n};var XMLSubtitlein4Parser=function(){};XMLSubtitlein4Parser.prototype.parseSample=function(t){var e,i={resources:[]},r=new MP4BoxStream(t.data.buffer);if(t.subsamples&&0!==t.subsamples.length){if(i.documentString=r.readString(t.subsamples[0].size),1<t.subsamples.length)for(e=1;e<t.subsamples.length;e++)i.resources[e]=r.readUint8Array(t.subsamples[e].size)}else i.documentString=r.readString(t.data.length);return"undefined"!=typeof DOMParser&&(i.document=(new DOMParser).parseFromString(i.documentString,"application/xml")),i};var Textin4Parser=function(){};Textin4Parser.prototype.parseSample=function(t){return new MP4BoxStream(t.data.buffer).readString(t.data.length)},Textin4Parser.prototype.parseConfig=function(t){t=new MP4BoxStream(t.buffer);return t.readUint32(),t.readCString()},"undefined"!=typeof exports&&(exports.XMLSubtitlein4Parser=XMLSubtitlein4Parser,exports.Textin4Parser=Textin4Parser);var ISOFile=function(t){this.stream=t||new MultiBufferStream,this.boxes=[],this.mdats=[],this.moofs=[],this.isProgressive=!1,this.moovStartFound=!1,this.onMoovStart=null,this.moovStartSent=!1,this.onReady=null,this.readySent=!1,this.onSegment=null,this.onSamples=null,this.onError=null,this.sampleListBuilt=!1,this.fragmentedTracks=[],this.extractedTracks=[],this.isFragmentationInitialized=!1,this.sampleProcessingStarted=!1,this.nextMoofNumber=0,this.itemListBuilt=!1,this.onSidx=null,this.sidxSent=!1};ISOFile.prototype.setSegmentOptions=function(t,e,i){var r,s=this.getTrackById(t);s&&(r={},this.fragmentedTracks.push(r),r.id=t,r.user=e,(r.trak=s).nextSample=0,r.segmentStream=null,r.nb_samples=1e3,r.rapAlignement=!0,i&&(i.nbSamples&&(r.nb_samples=i.nbSamples),i.rapAlignement&&(r.rapAlignement=i.rapAlignement)))},ISOFile.prototype.unsetSegmentOptions=function(t){for(var e=-1,i=0;i<this.fragmentedTracks.length;i++)this.fragmentedTracks[i].id==t&&(e=i);-1<e&&this.fragmentedTracks.splice(e,1)},ISOFile.prototype.setExtractionOptions=function(t,e,i){var r,s=this.getTrackById(t);s&&(r={},this.extractedTracks.push(r),r.id=t,r.user=e,(r.trak=s).nextSample=0,r.nb_samples=1e3,r.samples=[],i&&i.nbSamples&&(r.nb_samples=i.nbSamples))},ISOFile.prototype.unsetExtractionOptions=function(t){for(var e=-1,i=0;i<this.extractedTracks.length;i++)this.extractedTracks[i].id==t&&(e=i);-1<e&&this.extractedTracks.splice(e,1)},ISOFile.prototype.parse=function(){var t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;)if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(!this.processIncompleteMdat())return}else if(this.saveParsePosition&&this.saveParsePosition(),(t=BoxParser.parseOneBox(this.stream,!1)).code===BoxParser.ERR_NOT_ENOUGH_DATA){if(!this.processIncompleteBox)return;if(!this.processIncompleteBox(t))return}else{var e,i="uuid"!==(e=t.box).type?e.type:e.uuid;switch(this.boxes.push(e),i){case"mdat":this.mdats.push(e);break;case"moof":this.moofs.push(e);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[i]&&Log.warn("ISOFile","Duplicate Box of type: "+i+", overriding previous occurrence"),this[i]=e}this.updateUsedBytes&&this.updateUsedBytes(e,t)}},ISOFile.prototype.checkBuffer=function(t){if(null==t)throw"Buffer must be defined and non empty";if(void 0===t.fileStart)throw"Buffer must have a fileStart property";return 0===t.byteLength?(Log.warn("ISOFile","Ignoring empty buffer (fileStart: "+t.fileStart+")"),this.stream.logBufferLevel(),!1):(Log.info("ISOFile","Processing buffer (fileStart: "+t.fileStart+")"),t.usedBytes=0,this.stream.insertBuffer(t),this.stream.logBufferLevel(),!!this.stream.initialized()||(Log.warn("ISOFile","Not ready to start parsing"),!1))},ISOFile.prototype.appendBuffer=function(t,e){var i;if(this.checkBuffer(t))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(e),this.nextSeekPosition?(i=this.nextSeekPosition,this.nextSeekPosition=void 0):i=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(i=this.stream.getEndFilePositionAfter(i))):i=this.nextParsePosition||0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(Log.info("ISOFile","Done processing buffer (fileStart: "+t.fileStart+") - next buffer to fetch should have a fileStart position of "+i),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),Log.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),i},ISOFile.prototype.getInfo=function(){var t,e,i,r,s,a,n={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(n.hasMoov=!0,n.duration=this.moov.mvhd.duration,n.timescale=this.moov.mvhd.timescale,n.isFragmented=null!=this.moov.mvex,n.isFragmented&&this.moov.mvex.mehd&&(n.fragment_duration=this.moov.mvex.mehd.fragment_duration),n.isProgressive=this.isProgressive,n.hasIOD=null!=this.moov.iods,n.brands=[],n.brands.push(this.ftyp.major_brand),n.brands=n.brands.concat(this.ftyp.compatible_brands),n.created=new Date(o+1e3*this.moov.mvhd.creation_time),n.modified=new Date(o+1e3*this.moov.mvhd.modification_time),n.tracks=[],n.audioTracks=[],n.videoTracks=[],n.subtitleTracks=[],n.metadataTracks=[],n.hintTracks=[],n.otherTracks=[],t=0;t<this.moov.traks.length;t++){if(a=(i=this.moov.traks[t]).mdia.minf.stbl.stsd.entries[0],r={},n.tracks.push(r),r.id=i.tkhd.track_id,r.name=i.mdia.hdlr.name,r.references=[],i.tref)for(e=0;e<i.tref.boxes.length;e++)s={},r.references.push(s),s.type=i.tref.boxes[e].type,s.track_ids=i.tref.boxes[e].track_ids;i.edts&&(r.edits=i.edts.elst.entries),r.created=new Date(o+1e3*i.tkhd.creation_time),r.modified=new Date(o+1e3*i.tkhd.modification_time),r.movie_duration=i.tkhd.duration,r.movie_timescale=n.timescale,r.layer=i.tkhd.layer,r.alternate_group=i.tkhd.alternate_group,r.volume=i.tkhd.volume,r.matrix=i.tkhd.matrix,r.track_width=i.tkhd.width/65536,r.track_height=i.tkhd.height/65536,r.timescale=i.mdia.mdhd.timescale,r.cts_shift=i.mdia.minf.stbl.cslg,r.duration=i.mdia.mdhd.duration,r.samples_duration=i.samples_duration,r.codec=a.getCodec(),r.kind=i.udta&&i.udta.kinds.length?i.udta.kinds[0]:{schemeURI:"",value:""},r.language=i.mdia.elng?i.mdia.elng.extended_language:i.mdia.mdhd.languageString,r.nb_samples=i.samples.length,r.size=i.samples_size,r.bitrate=8*r.size*r.timescale/r.samples_duration,a.isAudio()?(r.type="audio",n.audioTracks.push(r),r.audio={},r.audio.sample_rate=a.getSampleRate(),r.audio.channel_count=a.getChannelCount(),r.audio.sample_size=a.getSampleSize()):a.isVideo()?(r.type="video",n.videoTracks.push(r),r.video={},r.video.width=a.getWidth(),r.video.height=a.getHeight()):a.isSubtitle()?(r.type="subtitles",n.subtitleTracks.push(r)):a.isHint()?(r.type="metadata",n.hintTracks.push(r)):a.isMetadata()?(r.type="metadata",n.metadataTracks.push(r)):(r.type="metadata",n.otherTracks.push(r))}else n.hasMoov=!1;if(n.mime="",n.hasMoov&&n.tracks){for(n.videoTracks&&0<n.videoTracks.length?n.mime+='video/mp4; codecs="':n.audioTracks&&0<n.audioTracks.length?n.mime+='audio/mp4; codecs="':n.mime+='application/mp4; codecs="',t=0;t<n.tracks.length;t++)0!==t&&(n.mime+=","),n.mime+=n.tracks[t].codec;n.mime+='"; profiles="',n.mime+=this.ftyp.compatible_brands.join(),n.mime+='"'}return n},ISOFile.prototype.processSamples=function(t){var e;if(this.sampleProcessingStarted){if(this.isFragmentationInitialized&&null!==this.onSegment)for(e=0;e<this.fragmentedTracks.length;e++)for(var i=this.fragmentedTracks[e],r=i.trak;r.nextSample<r.samples.length&&this.sampleProcessingStarted;){Log.debug("ISOFile","Creating media fragment on track #"+i.id+" for sample "+r.nextSample);var s=this.createFragment(i.id,r.nextSample,i.segmentStream);if(!s)break;if(i.segmentStream=s,r.nextSample++,(r.nextSample%i.nb_samples==0||t||r.nextSample>=r.samples.length)&&(Log.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),Log.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,t||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[e]))break}if(null!==this.onSamples)for(e=0;e<this.extractedTracks.length;e++){var a=this.extractedTracks[e];for(r=a.trak;r.nextSample<r.samples.length&&this.sampleProcessingStarted;){Log.debug("ISOFile","Exporting on track #"+a.id+" sample #"+r.nextSample);var n=this.getSample(r,r.nextSample);if(!n)break;if(r.nextSample++,a.samples.push(n),(r.nextSample%a.nb_samples==0||r.nextSample>=r.samples.length)&&(Log.debug("ISOFile","Sending samples on track #"+a.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(a.id,a.user,a.samples),a.samples=[],a!==this.extractedTracks[e]))break}}}},ISOFile.prototype.getBox=function(t){t=this.getBoxes(t,!0);return t.length?t[0]:null},ISOFile.prototype.getBoxes=function(t,e){var i=[];return ISOFile._sweep.call(this,t,i,e),i},ISOFile._sweep=function(t,e,i){for(var r in this.type&&this.type==t&&e.push(this),this.boxes){if(e.length&&i)return;ISOFile._sweep.call(this.boxes[r],t,e,i)}},ISOFile.prototype.getTrackSamplesInfo=function(t){t=this.getTrackById(t);if(t)return t.samples},ISOFile.prototype.getTrackSample=function(t,e){t=this.getTrackById(t);return this.getSample(t,e)},ISOFile.prototype.releaseUsedSamples=function(t,e){var i=0,r=this.getTrackById(t);r.lastValidSample||(r.lastValidSample=0);for(var s=r.lastValidSample;s<e;s++)i+=this.releaseSample(r,s);Log.info("ISOFile","Track #"+t+" released samples up to "+e+" (released size: "+i+", remaining: "+this.samplesDataSize+")"),r.lastValidSample=e},ISOFile.prototype.start=function(){this.sampleProcessingStarted=!0,this.processSamples(!1)},ISOFile.prototype.stop=function(){this.sampleProcessingStarted=!1},ISOFile.prototype.flush=function(){Log.info("ISOFile","Flushing remaining samples"),this.updateSampleLists(),this.processSamples(!0),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0)},ISOFile.prototype.seekTrack=function(t,e,i){var r,s,a,n,o=0,h=0;if(0===i.samples.length)return Log.info("ISOFile","No sample in track, cannot seek! Using time "+Log.getDurationString(0,1)+" and offset: 0"),{offset:0,time:0};for(r=0;r<i.samples.length;r++){if(s=i.samples[r],0===r)h=0,n=s.timescale;else if(s.cts>t*s.timescale){h=r-1;break}e&&s.is_sync&&(o=r)}for(e&&(h=o),t=i.samples[h].cts,i.nextSample=h;i.samples[h].alreadyRead===i.samples[h].size&&i.samples[h+1];)h++;return a=i.samples[h].offset+i.samples[h].alreadyRead,Log.info("ISOFile","Seeking to "+(e?"RAP":"")+" sample #"+i.nextSample+" on track "+i.tkhd.track_id+", time "+Log.getDurationString(t,n)+" and offset: "+a),{offset:a,time:t/n}},ISOFile.prototype.seek=function(t,e){var i,r,s=this.moov,a={offset:1/0,time:1/0};if(this.moov){for(r=0;r<s.traks.length;r++)i=s.traks[r],(i=this.seekTrack(t,e,i)).offset<a.offset&&(a.offset=i.offset),i.time<a.time&&(a.time=i.time);return Log.info("ISOFile","Seeking at time "+Log.getDurationString(a.time,1)+" needs a buffer with a fileStart position of "+a.offset),a.offset===1/0?a={offset:this.nextParsePosition,time:0}:a.offset=this.stream.getEndFilePositionAfter(a.offset),Log.info("ISOFile","Adjusted seek position (after checking data already in buffer): "+a.offset),a}throw"Cannot seek: moov not received!"},ISOFile.prototype.equal=function(t){for(var e=0;e<this.boxes.length&&e<t.boxes.length;){var i=this.boxes[e],r=t.boxes[e];if(!BoxParser.boxEqual(i,r))return!1;e++}return!0},"undefined"!=typeof exports&&(exports.ISOFile=ISOFile),ISOFile.prototype.lastBoxStartPosition=0,ISOFile.prototype.parsingMdat=null,ISOFile.prototype.nextParsePosition=0,ISOFile.prototype.discardMdatData=!1,ISOFile.prototype.processIncompleteBox=function(t){var e;return"mdat"===t.type?(e=new BoxParser[t.type+"Box"](t.size),this.parsingMdat=e,this.boxes.push(e),this.mdats.push(e),e.start=t.start,e.hdr_size=t.hdr_size,this.stream.addUsedBytes(e.hdr_size),this.lastBoxStartPosition=e.start+e.size,this.stream.seek(e.start+e.size,!1,this.discardMdatData)?!(this.parsingMdat=null):(this.moovStartFound?this.nextParsePosition=this.stream.findEndContiguousBuf():this.nextParsePosition=e.start+e.size,!1)):("moov"===t.type&&(this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0)),!!this.stream.mergeNextBuffer&&this.stream.mergeNextBuffer()?(this.nextParsePosition=this.stream.getEndPosition(),!0):(!t.type||this.moovStartFound?this.nextParsePosition=this.stream.getEndPosition():this.nextParsePosition=this.stream.getPosition()+t.size,!1))},ISOFile.prototype.hasIncompleteMdat=function(){return null!==this.parsingMdat},ISOFile.prototype.processIncompleteMdat=function(){var t=this.parsingMdat;return this.stream.seek(t.start+t.size,!1,this.discardMdatData)?(Log.debug("ISOFile","Found 'mdat' end in buffered data"),!(this.parsingMdat=null)):(this.nextParsePosition=this.stream.findEndContiguousBuf(),!1)},ISOFile.prototype.restoreParsePosition=function(){return this.stream.seek(this.lastBoxStartPosition,!0,this.discardMdatData)},ISOFile.prototype.saveParsePosition=function(){this.lastBoxStartPosition=this.stream.getPosition()},ISOFile.prototype.updateUsedBytes=function(t,e){this.stream.addUsedBytes&&("mdat"===t.type?(this.stream.addUsedBytes(t.hdr_size),this.discardMdatData&&this.stream.addUsedBytes(t.size-t.hdr_size)):this.stream.addUsedBytes(t.size))},ISOFile.prototype.add=BoxParser.Box.prototype.add,ISOFile.prototype.addBox=BoxParser.Box.prototype.addBox,ISOFile.prototype.init=function(t){var e=t||{},t=(this.add("ftyp").set("major_brand",e.brands&&e.brands[0]||"iso4").set("minor_version",0).set("compatible_brands",e.brands||["iso4"]),this.add("moov"));return t.add("mvhd").set("timescale",e.timescale||600).set("rate",e.rate||65536).set("creation_time",0).set("modification_time",0).set("duration",e.duration||0).set("volume",e.width?0:256).set("matrix",[65536,0,0,0,65536,0,0,0,1073741824]).set("next_track_id",1),t.add("mvex"),this},ISOFile.prototype.addTrack=function(t){this.moov||this.init(t);var e=t||{};e.width=e.width||320,e.height=e.height||320,e.id=e.id||this.moov.mvhd.next_track_id,e.type=e.type||"avc1";var i=this.moov.add("trak");this.moov.mvhd.next_track_id=e.id+1,i.add("tkhd").set("flags",BoxParser.TKHD_FLAG_ENABLED|BoxParser.TKHD_FLAG_IN_MOVIE|BoxParser.TKHD_FLAG_IN_PREVIEW).set("creation_time",0).set("modification_time",0).set("track_id",e.id).set("duration",e.duration||0).set("layer",e.layer||0).set("alternate_group",0).set("volume",1).set("matrix",[0,0,0,0,0,0,0,0,0]).set("width",e.width<<16).set("height",e.height<<16);t=i.add("mdia");t.add("mdhd").set("creation_time",0).set("modification_time",0).set("timescale",e.timescale||1).set("duration",e.media_duration||0).set("language",e.language||"und"),t.add("hdlr").set("handler",e.hdlr||"vide").set("name",e.name||"Track created with MP4Box.js"),t.add("elng").set("extended_language",e.language||"fr-FR");var r=t.add("minf");if(void 0!==BoxParser[e.type+"SampleEntry"]){var s=new BoxParser[e.type+"SampleEntry"];s.data_reference_index=1;var a,n,o,h="";for(a in BoxParser.sampleEntryCodes)for(var d=BoxParser.sampleEntryCodes[a],l=0;l<d.length;l++)if(-1<d.indexOf(e.type)){h=a;break}switch(h){case"Visual":r.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),s.set("width",e.width).set("height",e.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",e.type+" Compressor").set("depth",24),e.avcDecoderConfigRecord&&(n=new BoxParser.avcCBox,o=new MP4BoxStream(e.avcDecoderConfigRecord),n.parse(o),s.addBox(n));break;case"Audio":r.add("smhd").set("balance",e.balance||0),s.set("channel_count",e.channel_count||2).set("samplesize",e.samplesize||16).set("samplerate",e.samplerate||65536);break;case"Hint":r.add("hmhd");break;case"Subtitle":r.add("sthd"),"stpp"===e.type&&s.set("namespace",e.namespace||"nonamespace").set("schema_location",e.schema_location||"").set("auxiliary_mime_types",e.auxiliary_mime_types||"");break;case"Metadata":case"System":default:r.add("nmhd")}e.description&&s.addBox(e.description),e.description_boxes&&e.description_boxes.forEach(function(t){s.addBox(t)}),r.add("dinf").add("dref").addEntry((new BoxParser["url Box"]).set("flags",1));t=r.add("stbl");return t.add("stsd").addEntry(s),t.add("stts").set("sample_counts",[]).set("sample_deltas",[]),t.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),t.add("stco").set("chunk_offsets",[]),t.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",e.id).set("default_sample_description_index",e.default_sample_description_index||1).set("default_sample_duration",e.default_sample_duration||0).set("default_sample_size",e.default_sample_size||0).set("default_sample_flags",e.default_sample_flags||0),this.buildTrakSampleLists(i),e.id}},BoxParser.Box.prototype.computeSize=function(t){t=t||new DataStream;t.endianness=DataStream.BIG_ENDIAN,this.write(t)},ISOFile.prototype.addSample=function(t,e,i){var r=i||{},i={},t=this.getTrackById(t);if(null!==t){i.number=t.samples.length,i.track_id=t.tkhd.track_id,i.timescale=t.mdia.mdhd.timescale,i.description_index=r.sample_description_index?r.sample_description_index-1:0,i.description=t.mdia.minf.stbl.stsd.entries[i.description_index],i.data=e,i.size=e.byteLength,i.alreadyRead=i.size,i.duration=r.duration||1,i.cts=r.cts||0,i.dts=r.dts||0,i.is_sync=r.is_sync||!1,i.is_leading=r.is_leading||0,i.depends_on=r.depends_on||0,i.is_depended_on=r.is_depended_on||0,i.has_redundancy=r.has_redundancy||0,i.degradation_priority=r.degradation_priority||0,i.offset=0,i.subsamples=r.subsamples,t.samples.push(i),t.samples_size+=i.size,t.samples_duration+=i.duration,t.first_dts||(t.first_dts=r.dts),this.processSamples();r=this.createSingleSampleMoof(i);return this.addBox(r),r.computeSize(),r.trafs[0].truns[0].data_offset=r.size+8,this.add("mdat").data=new Uint8Array(e),i}},ISOFile.prototype.createSingleSampleMoof=function(t){var e=0,e=t.is_sync?1<<25:65536,i=new BoxParser.moofBox;i.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var r=i.add("traf"),s=this.getTrackById(t.track_id);return r.add("tfhd").set("track_id",t.track_id).set("flags",BoxParser.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),r.add("tfdt").set("baseMediaDecodeTime",t.dts-(s.first_dts||0)),r.add("trun").set("flags",BoxParser.TRUN_FLAGS_DATA_OFFSET|BoxParser.TRUN_FLAGS_DURATION|BoxParser.TRUN_FLAGS_SIZE|BoxParser.TRUN_FLAGS_FLAGS|BoxParser.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[t.duration]).set("sample_size",[t.size]).set("sample_flags",[e]).set("sample_composition_time_offset",[t.cts-t.dts]),i},ISOFile.prototype.lastMoofIndex=0,ISOFile.prototype.samplesDataSize=0,ISOFile.prototype.resetTables=function(){var t,e;for(this.initial_duration=this.moov.mvhd.duration,t=this.moov.mvhd.duration=0;t<this.moov.traks.length;t++){(e=this.moov.traks[t]).tkhd.duration=0,e.mdia.mdhd.duration=0,(e.mdia.minf.stbl.stco||e.mdia.minf.stbl.co64).chunk_offsets=[],(i=e.mdia.minf.stbl.stsc).first_chunk=[],i.samples_per_chunk=[],i.sample_description_index=[],(e.mdia.minf.stbl.stsz||e.mdia.minf.stbl.stz2).sample_sizes=[],(i=e.mdia.minf.stbl.stts).sample_counts=[],i.sample_deltas=[],(i=e.mdia.minf.stbl.ctts)&&(i.sample_counts=[],i.sample_offsets=[]),i=e.mdia.minf.stbl.stss;var i=e.mdia.minf.stbl.boxes.indexOf(i);-1!=i&&(e.mdia.minf.stbl.boxes[i]=null)}},ISOFile.initSampleGroups=function(t,e,i,r,s){var a,n,o,h;function d(t,e,i){this.grouping_type=t,this.grouping_type_parameter=e,this.sbgp=i,this.last_sample_in_run=-1,this.entry_index=-1}for(e&&(e.sample_groups_info=[]),t.sample_groups_info||(t.sample_groups_info=[]),n=0;n<i.length;n++){for(h=i[n].grouping_type+"/"+i[n].grouping_type_parameter,o=new d(i[n].grouping_type,i[n].grouping_type_parameter,i[n]),e&&(e.sample_groups_info[h]=o),t.sample_groups_info[h]||(t.sample_groups_info[h]=o),a=0;a<r.length;a++)r[a].grouping_type===i[n].grouping_type&&(o.description=r[a],o.description.used=!0);if(s)for(a=0;a<s.length;a++)s[a].grouping_type===i[n].grouping_type&&(o.fragment_description=s[a],o.fragment_description.used=!0,o.is_fragment=!0)}if(e){if(s)for(n=0;n<s.length;n++)!s[n].used&&2<=s[n].version&&(h=s[n].grouping_type+"/0",(o=new d(s[n].grouping_type,0)).is_fragment=!0,e.sample_groups_info[h]||(e.sample_groups_info[h]=o))}else for(n=0;n<r.length;n++)!r[n].used&&2<=r[n].version&&(h=r[n].grouping_type+"/0",o=new d(r[n].grouping_type,0),t.sample_groups_info[h]||(t.sample_groups_info[h]=o))},ISOFile.setSampleGroupProperties=function(t,e,i,r){var s,a,n;for(s in e.sample_groups=[],r)e.sample_groups[s]={},e.sample_groups[s].grouping_type=r[s].grouping_type,e.sample_groups[s].grouping_type_parameter=r[s].grouping_type_parameter,i>=r[s].last_sample_in_run&&(r[s].last_sample_in_run<0&&(r[s].last_sample_in_run=0),r[s].entry_index++,r[s].entry_index<=r[s].sbgp.entries.length-1&&(r[s].last_sample_in_run+=r[s].sbgp.entries[r[s].entry_index].sample_count)),r[s].entry_index<=r[s].sbgp.entries.length-1?e.sample_groups[s].group_description_index=r[s].sbgp.entries[r[s].entry_index].group_description_index:e.sample_groups[s].group_description_index=-1,0!==e.sample_groups[s].group_description_index&&(n=r[s].fragment_description||r[s].description,0<e.sample_groups[s].group_description_index?(a=65535<e.sample_groups[s].group_description_index?(e.sample_groups[s].group_description_index>>16)-1:e.sample_groups[s].group_description_index-1,n&&0<=a&&(e.sample_groups[s].description=n.entries[a])):n&&2<=n.version&&0<n.default_group_description_index&&(e.sample_groups[s].description=n.entries[n.default_group_description_index-1]))},ISOFile.process_sdtp=function(t,e,i){e&&(t?(e.is_leading=t.is_leading[i],e.depends_on=t.sample_depends_on[i],e.is_depended_on=t.sample_is_depended_on[i],e.has_redundancy=t.sample_has_redundancy[i]):(e.is_leading=0,e.depends_on=0,e.is_depended_on=0,e.has_redundancy=0))},ISOFile.prototype.buildSampleLists=function(){for(var t,e=0;e<this.moov.traks.length;e++)t=this.moov.traks[e],this.buildTrakSampleLists(t)},ISOFile.prototype.buildTrakSampleLists=function(t){var e,i,r,s,a,n,o,h,d,l,p,f,u,_,c,m,g,x,y,B,S,P,U,b;if(t.samples=[],t.samples_duration=0,t.samples_size=0,i=t.mdia.minf.stbl.stco||t.mdia.minf.stbl.co64,r=t.mdia.minf.stbl.stsc,s=t.mdia.minf.stbl.stsz||t.mdia.minf.stbl.stz2,a=t.mdia.minf.stbl.stts,n=t.mdia.minf.stbl.ctts,o=t.mdia.minf.stbl.stss,h=t.mdia.minf.stbl.stsd,d=t.mdia.minf.stbl.subs,f=t.mdia.minf.stbl.stdp,l=t.mdia.minf.stbl.sbgps,p=t.mdia.minf.stbl.sgpds,S=B=y=x=-1,b=U=P=0,ISOFile.initSampleGroups(t,null,l,p),void 0!==s){for(e=0;e<s.sample_sizes.length;e++){var v={};v.number=e,v.track_id=t.tkhd.track_id,v.timescale=t.mdia.mdhd.timescale,v.alreadyRead=0,(t.samples[e]=v).size=s.sample_sizes[e],t.samples_size+=v.size,0===e?(_=1,u=0,v.chunk_index=_,v.chunk_run_index=u,g=r.samples_per_chunk[u],m=0,c=u+1<r.first_chunk.length?r.first_chunk[u+1]-1:1/0):e<g?(v.chunk_index=_,v.chunk_run_index=u):(_++,m=0,(v.chunk_index=_)<=c||(c=++u+1<r.first_chunk.length?r.first_chunk[u+1]-1:1/0),v.chunk_run_index=u,g+=r.samples_per_chunk[u]),v.description_index=r.sample_description_index[v.chunk_run_index]-1,v.description=h.entries[v.description_index],v.offset=i.chunk_offsets[v.chunk_index-1]+m,m+=v.size,x<e&&(y++,x<0&&(x=0),x+=a.sample_counts[y]),0<e?(t.samples[e-1].duration=a.sample_deltas[y],t.samples_duration+=t.samples[e-1].duration,v.dts=t.samples[e-1].dts+t.samples[e-1].duration):v.dts=0,n?(B<=e&&(S++,B<0&&(B=0),B+=n.sample_counts[S]),v.cts=t.samples[e].dts+n.sample_offsets[S]):v.cts=v.dts,o?(e==o.sample_numbers[P]-1?(v.is_sync=!0,P++):(v.is_sync=!1,v.degradation_priority=0),d&&d.entries[U].sample_delta+b==e+1&&(v.subsamples=d.entries[U].subsamples,b+=d.entries[U].sample_delta,U++)):v.is_sync=!0,ISOFile.process_sdtp(t.mdia.minf.stbl.sdtp,v,v.number),v.degradation_priority=f?f.priority[e]:0,d&&d.entries[U].sample_delta+b==e&&(v.subsamples=d.entries[U].subsamples,b+=d.entries[U].sample_delta),(0<l.length||0<p.length)&&ISOFile.setSampleGroupProperties(t,v,e,t.sample_groups_info)}0<e&&(t.samples[e-1].duration=Math.max(t.mdia.mdhd.duration-t.samples[e-1].dts,0),t.samples_duration+=t.samples[e-1].duration)}},ISOFile.prototype.updateSampleLists=function(){var t,e,i,r,s,a,n,o,h,d,l,p;if(void 0!==this.moov)for(;this.lastMoofIndex<this.moofs.length;)if(n=this.moofs[this.lastMoofIndex],this.lastMoofIndex++,"moof"==n.type)for(o=n,t=0;t<o.trafs.length;t++){for(h=o.trafs[t],d=this.getTrackById(h.tfhd.track_id),l=this.getTrexById(h.tfhd.track_id),e=h.tfhd.flags&BoxParser.TFHD_FLAG_SAMPLE_DESC?h.tfhd.default_sample_description_index:l?l.default_sample_description_index:1,i=h.tfhd.flags&BoxParser.TFHD_FLAG_SAMPLE_DUR?h.tfhd.default_sample_duration:l?l.default_sample_duration:0,r=h.tfhd.flags&BoxParser.TFHD_FLAG_SAMPLE_SIZE?h.tfhd.default_sample_size:l?l.default_sample_size:0,s=h.tfhd.flags&BoxParser.TFHD_FLAG_SAMPLE_FLAGS?h.tfhd.default_sample_flags:l?l.default_sample_flags:0,(h.sample_number=0)<h.sbgps.length&&ISOFile.initSampleGroups(d,h,h.sbgps,d.mdia.minf.stbl.sgpds,h.sgpds),y=0;y<h.truns.length;y++)for(var f=h.truns[y],u=0;u<f.sample_count;u++){(p={}).moof_number=this.lastMoofIndex,p.number_in_traf=h.sample_number,h.sample_number++,p.number=d.samples.length,h.first_sample_index=d.samples.length,d.samples.push(p),p.track_id=d.tkhd.track_id,p.timescale=d.mdia.mdhd.timescale,p.description_index=e-1,p.description=d.mdia.minf.stbl.stsd.entries[p.description_index],p.size=r,f.flags&BoxParser.TRUN_FLAGS_SIZE&&(p.size=f.sample_size[u]),d.samples_size+=p.size,p.duration=i,f.flags&BoxParser.TRUN_FLAGS_DURATION&&(p.duration=f.sample_duration[u]),d.samples_duration+=p.duration,d.first_traf_merged||0<u?p.dts=d.samples[d.samples.length-2].dts+d.samples[d.samples.length-2].duration:(h.tfdt?p.dts=h.tfdt.baseMediaDecodeTime:p.dts=0,d.first_traf_merged=!0),p.cts=p.dts,f.flags&BoxParser.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+f.sample_composition_time_offset[u]),g=s,f.flags&BoxParser.TRUN_FLAGS_FLAGS?g=f.sample_flags[u]:0===u&&f.flags&BoxParser.TRUN_FLAGS_FIRST_FLAG&&(g=f.first_sample_flags),p.is_sync=!(g>>16&1),p.is_leading=g>>26&3,p.depends_on=g>>24&3,p.is_depended_on=g>>22&3,p.has_redundancy=g>>20&3,p.degradation_priority=65535&g;var _=!!(h.tfhd.flags&BoxParser.TFHD_FLAG_BASE_DATA_OFFSET),c=!!(h.tfhd.flags&BoxParser.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),m=!!(f.flags&BoxParser.TRUN_FLAGS_DATA_OFFSET),g=0,g=_?h.tfhd.base_data_offset:c||0===y?o.start:a;p.offset=0===y&&0===u?m?g+f.data_offset:g:a,a=p.offset+p.size,(0<h.sbgps.length||0<h.sgpds.length||0<d.mdia.minf.stbl.sbgps.length||0<d.mdia.minf.stbl.sgpds.length)&&ISOFile.setSampleGroupProperties(d,p,p.number_in_traf,h.sample_groups_info)}if(h.subs){d.has_fragment_subsamples=!0;for(var x=h.first_sample_index,y=0;y<h.subs.entries.length;y++)x+=h.subs.entries[y].sample_delta,(p=d.samples[x-1]).subsamples=h.subs.entries[y].subsamples}}},ISOFile.prototype.getSample=function(t,e){var i,r=t.samples[e];if(!this.moov)return null;if(r.data){if(r.alreadyRead==r.size)return r}else r.data=new Uint8Array(r.size),r.alreadyRead=0,this.samplesDataSize+=r.size,Log.debug("ISOFile","Allocating sample #"+e+" on track #"+t.tkhd.track_id+" of size "+r.size+" (total: "+this.samplesDataSize+")");for(;;){var s=this.stream.findPosition(!0,r.offset+r.alreadyRead,!1);if(!(-1<s))return null;s=(i=this.stream.buffers[s]).byteLength-(r.offset+r.alreadyRead-i.fileStart);if(r.size-r.alreadyRead<=s)return Log.debug("ISOFile","Getting sample #"+e+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-i.fileStart)+" read size: "+(r.size-r.alreadyRead)+" full size: "+r.size+")"),DataStream.memcpy(r.data.buffer,r.alreadyRead,i,r.offset+r.alreadyRead-i.fileStart,r.size-r.alreadyRead),i.usedBytes+=r.size-r.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead=r.size,r;if(0==s)return null;Log.debug("ISOFile","Getting sample #"+e+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-i.fileStart)+" read size: "+s+" full size: "+r.size+")"),DataStream.memcpy(r.data.buffer,r.alreadyRead,i,r.offset+r.alreadyRead-i.fileStart,s),r.alreadyRead+=s,i.usedBytes+=s,this.stream.logBufferLevel()}},ISOFile.prototype.releaseSample=function(t,e){e=t.samples[e];return e.data?(this.samplesDataSize-=e.size,e.data=null,e.alreadyRead=0,e.size):0},ISOFile.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},ISOFile.prototype.getCodecs=function(){for(var t="",e=0;e<this.moov.traks.length;e++)0<e&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec();return t},ISOFile.prototype.getTrexById=function(t){var e;if(!this.moov||!this.moov.mvex)return null;for(e=0;e<this.moov.mvex.trexs.length;e++){var i=this.moov.mvex.trexs[e];if(i.track_id==t)return i}return null},ISOFile.prototype.getTrackById=function(t){if(void 0===this.moov)return null;for(var e=0;e<this.moov.traks.length;e++){var i=this.moov.traks[e];if(i.tkhd.track_id==t)return i}return null},ISOFile.prototype.items=[],ISOFile.prototype.itemsDataSize=0,ISOFile.prototype.flattenItemInfo=function(){var t=this.items,e=this.meta;if(null!=e&&void 0!==e.hdlr&&void 0!==e.iinf){for(h=0;h<e.iinf.item_infos.length;h++)(r={}).id=e.iinf.item_infos[h].item_ID,(t[r.id]=r).ref_to=[],r.name=e.iinf.item_infos[h].item_name,0<e.iinf.item_infos[h].protection_index&&(r.protection=e.ipro.protections[e.iinf.item_infos[h].protection_index-1]),e.iinf.item_infos[h].item_type?r.type=e.iinf.item_infos[h].item_type:r.type="mime",r.content_type=e.iinf.item_infos[h].content_type,r.content_encoding=e.iinf.item_infos[h].content_encoding;if(e.iloc)for(h=0;h<e.iloc.items.length;h++){var i=e.iloc.items[h],r=t[i.item_ID];switch(0!==i.data_reference_index&&(Log.warn("Item storage with reference to other files: not supported"),r.source=e.dinf.boxes[i.data_reference_index-1]),i.construction_method){case 0:break;case 1:case 2:Log.warn("Item storage with construction_method : not supported")}for(r.extents=[],a=r.size=0;a<i.extents.length;a++)r.extents[a]={},r.extents[a].offset=i.extents[a].extent_offset+i.base_offset,r.extents[a].length=i.extents[a].extent_length,r.extents[a].alreadyRead=0,r.size+=r.extents[a].length}if(e.pitm&&(t[e.pitm.item_id].primary=!0),e.iref)for(h=0;h<e.iref.references.length;h++)for(var s=e.iref.references[h],a=0;a<s.references.length;a++)t[s.from_item_ID].ref_to.push({type:s.type,id:s.references[a]});if(e.iprp)for(var n=0;n<e.iprp.ipmas.length;n++)for(var o=e.iprp.ipmas[n],h=0;h<o.associations.length;h++){var d=o.associations[h];for(void 0===(r=t[d.id]).properties&&(r.properties={},r.properties.boxes=[]),a=0;a<d.props.length;a++){var l=d.props[a];0<l.property_index&&l.property_index-1<e.iprp.ipco.boxes.length&&(l=e.iprp.ipco.boxes[l.property_index-1],r.properties[l.type]=l,r.properties.boxes.push(l))}}}},ISOFile.prototype.getItem=function(t){var e,i;if(!this.meta)return null;if(!(i=this.items[t]).data&&i.size)i.data=new Uint8Array(i.size),i.alreadyRead=0,this.itemsDataSize+=i.size,Log.debug("ISOFile","Allocating item #"+t+" of size "+i.size+" (total: "+this.itemsDataSize+")");else if(i.alreadyRead===i.size)return i;for(var r=0;r<i.extents.length;r++){var s=i.extents[r];if(s.alreadyRead!==s.length){var a=this.stream.findPosition(!0,s.offset+s.alreadyRead,!1);if(!(-1<a))return null;a=(e=this.stream.buffers[a]).byteLength-(s.offset+s.alreadyRead-e.fileStart);if(!(s.length-s.alreadyRead<=a))return Log.debug("ISOFile","Getting item #"+t+" extent #"+r+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-e.fileStart)+" read size: "+a+" full extent size: "+s.length+" full item size: "+i.size+")"),DataStream.memcpy(i.data.buffer,i.alreadyRead,e,s.offset+s.alreadyRead-e.fileStart,a),s.alreadyRead+=a,i.alreadyRead+=a,e.usedBytes+=a,this.stream.logBufferLevel(),null;Log.debug("ISOFile","Getting item #"+t+" extent #"+r+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-e.fileStart)+" read size: "+(s.length-s.alreadyRead)+" full extent size: "+s.length+" full item size: "+i.size+")"),DataStream.memcpy(i.data.buffer,i.alreadyRead,e,s.offset+s.alreadyRead-e.fileStart,s.length-s.alreadyRead),e.usedBytes+=s.length-s.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead+=s.length-s.alreadyRead,s.alreadyRead=s.length}}return i.alreadyRead===i.size?i:null},ISOFile.prototype.releaseItem=function(t){var e=this.items[t];if(e.data){this.itemsDataSize-=e.size,e.data=null;for(var i=e.alreadyRead=0;i<e.extents.length;i++)e.extents[i].alreadyRead=0;return e.size}return 0},ISOFile.prototype.processItems=function(t){for(var e in this.items){var i=this.items[e];this.getItem(i.id),t&&!i.sent&&(t(i),i.sent=!0,i.data=null)}},ISOFile.prototype.hasItem=function(t){for(var e in this.items){var i=this.items[e];if(i.name===t)return i.id}return-1},ISOFile.prototype.getMetaHandler=function(){return this.meta?this.meta.hdlr.handler:null},ISOFile.prototype.getPrimaryItem=function(){return this.meta&&this.meta.pitm?this.getItem(this.meta.pitm.item_id):null},ISOFile.prototype.itemToFragmentedTrackFile=function(t){var e=t||{},i=null;if(null==(i=e.itemId?this.getItem(e.itemId):this.getPrimaryItem()))return null;t=new ISOFile;t.discardMdatData=!1;e={type:i.type,description_boxes:i.properties.boxes};i.properties.ispe&&(e.width=i.properties.ispe.image_width,e.height=i.properties.ispe.image_height);e=t.addTrack(e);return e?(t.addSample(e,i.data),t):null},ISOFile.prototype.write=function(t){for(var e=0;e<this.boxes.length;e++)this.boxes[e].write(t)},ISOFile.prototype.createFragment=function(t,e,i){var r=this.getTrackById(t),t=this.getSample(r,e);if(null==t)return t=r.samples[e],this.nextSeekPosition?this.nextSeekPosition=Math.min(t.offset+t.alreadyRead,this.nextSeekPosition):this.nextSeekPosition=r.samples[e].offset+t.alreadyRead,null;e=i||new DataStream;e.endianness=DataStream.BIG_ENDIAN;i=this.createSingleSampleMoof(t);i.write(e),i.trafs[0].truns[0].data_offset=i.size+8,Log.debug("MP4Box","Adjusting data_offset with new value "+i.trafs[0].truns[0].data_offset),e.adjustUint32(i.trafs[0].truns[0].data_offset_position,i.trafs[0].truns[0].data_offset);i=new BoxParser.mdatBox;return i.data=t.data,i.write(e),e},ISOFile.writeInitializationSegment=function(t,e,i,r){var s;Log.debug("ISOFile","Generating initialization segment");var a=new DataStream;a.endianness=DataStream.BIG_ENDIAN,t.write(a);var n=e.add("mvex");for(i&&n.add("mehd").set("fragment_duration",i),s=0;s<e.traks.length;s++)n.add("trex").set("track_id",e.traks[s].tkhd.track_id).set("default_sample_description_index",1).set("default_sample_duration",r).set("default_sample_size",0).set("default_sample_flags",65536);return e.write(a),a.buffer},ISOFile.prototype.save=function(t){var e=new DataStream;e.endianness=DataStream.BIG_ENDIAN,this.write(e),e.save(t)},ISOFile.prototype.getBuffer=function(){var t=new DataStream;return t.endianness=DataStream.BIG_ENDIAN,this.write(t),t.buffer},ISOFile.prototype.initializeSegmentation=function(){var t,e,i,r;for(null===this.onSegment&&Log.warn("MP4Box","No segmentation callback set!"),this.isFragmentationInitialized||(this.isFragmentationInitialized=!0,this.nextMoofNumber=0,this.resetTables()),e=[],t=0;t<this.fragmentedTracks.length;t++){var s=new BoxParser.moovBox;s.mvhd=this.moov.mvhd,s.boxes.push(s.mvhd),i=this.getTrackById(this.fragmentedTracks[t].id),s.boxes.push(i),s.traks.push(i),(r={}).id=i.tkhd.track_id,r.user=this.fragmentedTracks[t].user,r.buffer=ISOFile.writeInitializationSegment(this.ftyp,s,this.moov.mvex&&this.moov.mvex.mehd?this.moov.mvex.mehd.fragment_duration:void 0,0<this.moov.traks[t].samples.length?this.moov.traks[t].samples[0].duration:0),e.push(r)}return e},BoxParser.Box.prototype.printHeader=function(t){this.size+=8,this.size>MAX_SIZE&&(this.size+=8),"uuid"===this.type&&(this.size+=16),t.log(t.indent+"size:"+this.size),t.log(t.indent+"type:"+this.type)},BoxParser.FullBox.prototype.printHeader=function(t){this.size+=4,BoxParser.Box.prototype.printHeader.call(this,t),t.log(t.indent+"version:"+this.version),t.log(t.indent+"flags:"+this.flags)},BoxParser.Box.prototype.print=function(t){this.printHeader(t)},BoxParser.ContainerBox.prototype.print=function(t){this.printHeader(t);for(var e,i=0;i<this.boxes.length;i++)this.boxes[i]&&(e=t.indent,t.indent+=" ",this.boxes[i].print(t),t.indent=e)},ISOFile.prototype.print=function(t){t.indent="";for(var e=0;e<this.boxes.length;e++)this.boxes[e]&&this.boxes[e].print(t)},BoxParser.mvhdBox.prototype.print=function(t){BoxParser.FullBox.prototype.printHeader.call(this,t),t.log(t.indent+"creation_time: "+this.creation_time),t.log(t.indent+"modification_time: "+this.modification_time),t.log(t.indent+"timescale: "+this.timescale),t.log(t.indent+"duration: "+this.duration),t.log(t.indent+"rate: "+this.rate),t.log(t.indent+"volume: "+(this.volume>>8)),t.log(t.indent+"matrix: "+this.matrix.join(", ")),t.log(t.indent+"next_track_id: "+this.next_track_id)},BoxParser.tkhdBox.prototype.print=function(t){BoxParser.FullBox.prototype.printHeader.call(this,t),t.log(t.indent+"creation_time: "+this.creation_time),t.log(t.indent+"modification_time: "+this.modification_time),t.log(t.indent+"track_id: "+this.track_id),t.log(t.indent+"duration: "+this.duration),t.log(t.indent+"volume: "+(this.volume>>8)),t.log(t.indent+"matrix: "+this.matrix.join(", ")),t.log(t.indent+"layer: "+this.layer),t.log(t.indent+"alternate_group: "+this.alternate_group),t.log(t.indent+"width: "+this.width),t.log(t.indent+"height: "+this.height)};var MP4Box={createFile:function(t,e){t=void 0===t||t,e=new ISOFile(e);return e.discardMdatData=!t,e}};"undefined"!=typeof exports&&(exports.createFile=MP4Box.createFile); +/** + * @file plugin.js + */ + +let flvjs = window.flvjs +let flv265 = window.flv265 +let videojs = window.videojs + + +let Html5 = videojs.getTech('Html5'); +let mergeOptions = videojs.obj.merge || videojs.util.obj.merge; +let defaults = { + mediaDataSource: {}, + config: {} +}; + +class Flvjs extends Html5 { + + /** + * Create an instance of this Tech. + * + * @param {Object} [options] + * The key/value store of player options. + * + * @param {Component~ReadyCallback} ready + * Callback function to call when the `Flvjs` Tech is ready. + */ + constructor(options, ready) { + options = mergeOptions(defaults, options); + super(options, ready); + } + + /** + * A getter/setter for the `Flvjs` Tech's source object. + * + * @param {Tech~SourceObject} [src] + * The source object you want to set on the `Flvjs` techs. + * + * @return {Tech~SourceObject|undefined} + * - The current source object when a source is not passed in. + * - undefined when setting + */ + setSrc(src) { + if (this.flvPlayer) { + // Is this necessary to change source? + this.flvPlayer.detachMediaElement(); + this.flvPlayer.destroy(); + } + + const mediaDataSource = this.options_.mediaDataSource; + const config = this.options_.config; + + mediaDataSource.type = mediaDataSource.type === undefined ? 'flv' : mediaDataSource.type; + mediaDataSource.url = src; + const features = flv265.getFeatureList() + if (features.nativeMP4H265Playback && config.decodeType !== 'soft') this.flvPlayer = flv265.createPlayer(mediaDataSource, config); + else this.flvPlayer = flvjs.createPlayer(mediaDataSource, config); + this.flvPlayer.attachMediaElement(this.el_); + this.flvPlayer.load(); + } + + /** + * Dispose of flvjs. + */ + dispose() { + if (this.flvPlayer) { + this.flvPlayer.detachMediaElement(); + this.flvPlayer.destroy(); + } + super.dispose(); + } + +} + +/** + * Check if the Flvjs tech is currently supported. + * + * @return {boolean} + * - True if the Flvjs tech is supported. + * - False otherwise. + */ +Flvjs.isSupported = function () { + + return flvjs && flvjs.isSupported(); +}; + +/** + * Flvjs supported mime types. + * + * @constant {Object} + */ +Flvjs.formats = { + 'video/flv': 'FLV', + 'video/x-flv': 'FLV' +}; + +/** + * Check if the tech can support the given type + * + * @param {string} type + * The mimetype to check + * @return {string} 'probably', 'maybe', or '' (empty string) + */ +Flvjs.canPlayType = function (type) { + if (Flvjs.isSupported() && type in Flvjs.formats) { + return 'maybe'; + } + + return ''; +}; + +/** + * Check if the tech can support the given source + * @param {Object} srcObj + * The source object + * @param {Object} options + * The options passed to the tech + * @return {string} 'probably', 'maybe', or '' (empty string) + */ +Flvjs.canPlaySource = function (srcObj, options) { + return Flvjs.canPlayType(srcObj.type); +}; + +// Include the version number. +Flvjs.VERSION = '__VERSION__'; + +videojs.registerTech('Flvjs', Flvjs); + +/** + * @file plugin.js + */ + +const Hls = window.Hls + +class Hlsjs extends Html5 { + + /** + * Create an instance of this Tech. + * + * @param {Object} [options] + * The key/value store of player options. + * + * @param {Component~ReadyCallback} ready + * Callback function to call when the `Hlsjs` Tech is ready. + */ + constructor(options, ready) { + options = videojs.obj.merge(defaults, options); + super(options, ready); + } + + /** + * A getter/setter for the `Hlsjs` Tech's source object. + * + * @param {Tech~SourceObject} [src] + * The source object you want to set on the `Hlsjs` techs. + * + * @return {Tech~SourceObject|undefined} + * - The current source object when a source is not passed in. + * - undefined when setting + */ + setSrc(src) { + if (this.hlsPlayer) { + this.hlsPlayer.detachMedia(); + this.hlsPlayer.destroy(); + } + this.src_ = src + this.hlsPlayer = new Hls(); + this.hlsPlayer.attachMedia(this.el_); + this.hlsPlayer.loadSource(this.src_); + this.hlsPlayer.once(Hls.Events.LEVEL_PTS_UPDATED, (event, data) => this.isLive_ = data.details.live) // 设置直播状态 + } + + autoplay() { + return this.options_.autoplay; + } + + currentSrc() { + if (this.hlsPlayer) return this.hlsPlayer.url; + return this.el_.currentSrc; + } + + setCurrentTime(seconds) { + this.el_.currentTime = seconds; + } + + play() { + this.el_.play(); + } + + duration() { + if (this.isLive_) return Infinity + else return this.el_.duration + } + + /** + * Dispose of Hlsjs. + */ + dispose() { + if (this.hlsPlayer) { + this.hlsPlayer.detachMedia(); + this.hlsPlayer.destroy(); + } + super.dispose(); + } + +} + +/** + * Check if the Hlsjs tech is currently supported. + * + * @return {boolean} + * - True if the Hlsjs tech is supported. + * - False otherwise. + */ +Hlsjs.isSupported = function () { + return Hls && Hls.isSupported(); +}; + +/** + * Check if the tech can support the given source + * @param {Object} srcObj + * The source object + * @param {Object} options + * The options passed to the tech + * @return {string} 'probably', 'maybe', or '' (empty string) + */ +// Hlsjs.canPlaySource = function (srcObj, options) { +// return Hlsjs.canPlayType(srcObj.type); +// }; + +// Include the version number. +Hlsjs.VERSION = '1.0.0'; + +videojs.registerTech('Hlsjs', Hlsjs); + + +class Fmp4JS extends Html5 { + + constructor(options, ready) { + options = videojs.obj.merge(defaults, options); + super(options, ready); + this.TAG = "Fmp4JS"; + this.fmp4_src = null; + this.fmp4_box = null; + this.fmp4_is_ws = true; + this.restart_timer = null; + this.fmp4_websocket = null; + this.fmp4_frame_queue = []; + this.fmp4_source_buffer = null; + this.fmp4_ws_first_frame = true; + this._emitter = new EventEmitter(); + this.fmp4_media_source = new MediaSource(); + this.fmp4_http_controller = new AbortController(); + this.fmp4js_options = new Proxy({mime_codec: 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"', live: false, is_hev: false}, { + get(target, property, value) { + return target[property] + }, + set(target, property, value) { + target[property] = value + const _self = this.getCxt() + if (property === 'live') _self.handlerLive() + if (property === 'is_hev') { + setTimeout(() => _self._emitter.emit("FMP4JS_HEVC", value), 200) + } + if (property === 'mime_codec') _self.fmp4MediaSourceOpen() + return true + }, + getCxt: () => this + } + ) + } + + setSrc(src) { + this.fmp4_src = src + this.fmp4_is_ws = this.fmp4_src.startsWith("ws") + this.fmp4js_options.live = this.options_.config.live + this.createFMP4Box(); + if (this.fmp4_is_ws) this.getWebSocketBuffer() + else this.getHttpMp4Buffer() + } + + dispose() { + super.dispose(); + this.fmp4_websocket && this.fmp4_websocket.close() + this._emitter = null; + this.fmp4_src = null; + this.fmp4_box = null; + this.fmp4_is_ws = null; + this.fmp4_websocket = null; + this.fmp4_frame_queue = null; + this.fmp4_media_source = null; + this.fmp4_source_buffer = null; + this.fmp4_ws_first_frame = null; + this.fmp4_http_controller = null; + + this.restart_timer && clearTimeout(this.restart_timer) + this.restart_timer = null; + } + + getHttpMp4Buffer() { + this.el_.src = this.fmp4_src + let offset = 0 + fetch(this.fmp4_src, {signal: this.fmp4_http_controller.signal}).then(res => { + const reader = res.body.getReader() + reader.read().then(({value}) => { + const buffer = value.buffer + buffer.fileStart = offset + offset += buffer.byteLength + this.fmp4_box.appendBuffer(buffer) + }) + }) + } + + createFMP4Box() { + this.fmp4_box = new MP4Box.createFile() + this.fmp4_box.onReady = (info) => { + const {tracks, duration} = info + let codecs = []; + for (let i = 0; i < tracks.length; i++) codecs.push(tracks[i].codec); + codecs.splice(2, codecs.length - 2) + this.fmp4js_options.mime_codec = `video/mp4; codecs="${codecs.join(', ')}"` + this.fmp4js_options.is_hev = !!codecs.find(code => code.includes('hvc1.')) + console.warn(this.TAG, "MP4Box info", info) + this.fmp4_http_controller.abort(); + this.fmp4_http_controller = null; + } + } + + getWebSocketBuffer() { + this.fmp4_websocket = new WebSocket(this.fmp4_src); + this.fmp4_websocket.binaryType = 'arraybuffer'; + this.fmp4_websocket.onmessage = (e) => { + if (this.fmp4_ws_first_frame) { + this.fmp4_ws_first_frame = false + e.data.fileStart = 0 + this.fmp4_box.appendBuffer(e.data) + } + this.fmp4_frame_queue.push(e.data); + if (!this.fmp4_source_buffer || this.fmp4_source_buffer.updating) return; + if (this.fmp4_frame_queue.length === 1) this.fmp4_source_buffer.appendBuffer(this.fmp4_frame_queue.shift()); + else { + let byte_length = 0; + for (const frame of this.fmp4_frame_queue) byte_length += frame.byteLength; + let mp4_frame_buffer = new Uint8Array(byte_length); + let offset = 0; + for (const frame of this.fmp4_frame_queue) { + let frame_buffer = new Uint8Array(frame); + mp4_frame_buffer.set(frame_buffer, offset); + offset += frame.byteLength; + } + this.fmp4_source_buffer.appendBuffer(mp4_frame_buffer); + this.fmp4_frame_queue.splice(0, this.fmp4_frame_queue.length); + } + + this.restart_timer && clearTimeout(this.restart_timer) + this.restart_timer = setTimeout(() => this._emitter.emit("FMP4JS_RESTART"), 1000 * 10) + } + + this.fmp4_websocket.onclose = () => this._emitter.emit("FMP4JS_RESTART") + + this.fmp4_websocket.onerror = () => this._emitter.emit("FMP4JS_RESTART") + + } + + fmp4MediaSourceOpen() { + if (!this.fmp4_is_ws) return + else this.el_.src = URL.createObjectURL(this.fmp4_media_source) + + let pre_pos = 0; + + this.fmp4_media_source.addEventListener('sourceopen', () => { + + this.fmp4_source_buffer = this.fmp4_media_source.addSourceBuffer(this.fmp4js_options.mime_codec); + + this.fmp4_source_buffer.addEventListener('updateend', () => { + let pos = this.el_.currentTime; + if (this.el_.buffered.length > 0) { + let start = this.el_.buffered.start(this.el_.buffered.length - 1); + let end = this.el_.buffered.end(this.el_.buffered.length - 1); + if (pos < start) this.el_.currentTime = start; + if (pos > end) this.el_.currentTime = start; + if (pos - pre_pos !== 0 && end - pos > 3) this.el_.currentTime = end; + + for (let i = 0; i < this.el_.buffered.length - 1; i++) { + let pre_start = this.el_.buffered.start(i); + let pre_end = this.el_.buffered.end(i); + if (!this.fmp4_source_buffer.updating) this.fmp4_source_buffer.remove(pre_start, pre_end); + } + + if (pos - start > 10 && !this.fmp4_source_buffer.updating) this.fmp4_source_buffer.remove(0, pos - 3); + + if (end - pos > 10 && !this.fmp4_source_buffer.updating) this.fmp4_source_buffer.remove(0, end - 3); + } + pre_pos = pos; + if (!this.fmp4_source_buffer.updating) this.handlerLoading() + }) + + }) + } + + handlerLoading() { + const loading_el = this.el_.parentNode.querySelector('.easy-player-loading') + if (loading_el && loading_el.style.opacity === '1') return loading_el.style.opacity = "0" + } + + handlerLive() { + if (!this.fmp4js_options.live) return + const vjs_playback_rate = this.el_.parentNode.querySelector(".vjs-playback-rate") + const vjs_remaining_time = this.el_.parentNode.querySelector(".vjs-remaining-time") + const vjs_progress_control = this.el_.parentNode.querySelector(".vjs-progress-control") + if (vjs_playback_rate) vjs_playback_rate.style.opacity = "0"; + if (vjs_remaining_time) vjs_remaining_time.style.opacity = "0"; + if (vjs_progress_control) vjs_progress_control.style.opacity = "0"; + } + + + play() { + if (this.el_.paused) this.el_.play() + } +} + +Fmp4JS.VERSION = '1.0.0'; +Fmp4JS.AUTHOR = 'Magic.XL'; +videojs.registerTech('fmp4js', Fmp4JS); + +const Component = videojs.getComponent("Component"); + +class Watermark extends Component { + + constructor(player, options) { + super(player, options); + if (options.watermark) this.updateTextContent(options.watermark); + } + + createEl() { + let parent_style = "position: absolute;background-color: rgba(0, 0, 0, 0.0);pointer-events: none;display: grid;"; + let grid_template_rows = "", grid_template_columns = ""; + if (!this.options_.watermark) return + let {row = 4, col = 4, type = ""} = typeof this.options_.watermark === 'string' ? JSON.parse(this.options_.watermark) : this.options_.watermark + const el = videojs.dom.createEl('div'); + if (type.toUpperCase() === 'FULL_SCREEN') { + for (let i = 0; i < row; i++) grid_template_rows += "1fr " + for (let k = 0; k < col; k++) grid_template_columns += "1fr " + parent_style += `top:0;bottom:0;left:0;right:0;grid-template-rows:${grid_template_rows};grid-template-columns:${grid_template_columns};` + } else { + if (type.toUpperCase() === 'LEFT_TOP') parent_style += `top:0;left: 0;margin: 12px;` + if (type.toUpperCase() === 'RIGHT_TOP') parent_style += `top:0;right: 0;margin: 12px;` + if (type.toUpperCase() === 'LEFT_BOTTOM') parent_style += `bottom:0;left: 0;margin: 12px;` + if (type.toUpperCase() === 'RIGHT_BOTTOM') parent_style += `bottom:0;right: 0;margin: 12px;` + } + el.setAttribute("style", parent_style) + return el + } + + buildCSSClass() { + return ''; + } + + updateTextContent(watermark) { + if (typeof watermark === 'string') watermark = JSON.parse(watermark) + let {row = 4, col = 4, fontSize = 18, opacity = 0.6, color = "#FFF", rotate = -18, type = "", txt} = watermark + if (!txt) return + + let custom_style = `display: flex;flex-direction: column;align-items: center;justify-content: center;font-family: "微软雅黑"; + font-size: ${fontSize}px;opacity:${opacity};color:${color};` + + videojs.dom.emptyEl(this.el()); + if (type.toUpperCase() === 'FULL_SCREEN') custom_style += `transform:rotate(${rotate}deg)` + else { + row = col = 1; + custom_style += `padding: 8px;background-color: rgba(0,0,0,0.6)` + } + for (let i = 0; i < row * col; i++) { + const txt_el = document.createTextNode(txt); + const watermark_item = document.createElement('div'); + watermark_item.appendChild(txt_el) + watermark_item.setAttribute('class', 'easy-watermark-item') + watermark_item.setAttribute('style', custom_style) + this.el().appendChild(watermark_item) + } + + } +} + +Watermark.VERSION = '1.0.0'; +Watermark.AUTHOR = 'Magic.XL'; +Component.registerComponent('watermark', Watermark); + + + +/*! videojs-resolution-switcher - 2015-7-26 + * Copyright (c) 2016 Kasper Moskwiak + * Modified by Pierre Kraft + * Licensed under the Apache-2.0 license. */ + +(function() { + /* jshint eqnull: true*/ + /* global require */ + 'use strict'; + var videojs = null; + if(typeof window.videojs === 'undefined' && typeof require === 'function') { + videojs = require('video.js'); + } else { + videojs = window.videojs; + } + + (function(window, videojs) { + + + var defaults = {}, + videoJsResolutionSwitcher, + currentResolution = {}, // stores current resolution + menuItemsHolder = {}; // stores menuItems + + function setSourcesSanitized(player, sources, label, customSourcePicker) { + currentResolution = { + label: label, + sources: sources + }; + if(typeof customSourcePicker === 'function'){ + return customSourcePicker(player, sources, label); + } + return player.src(sources.map(function(src) { + return {src: src.src, type: src.type, res: src.res}; + })); + } + + /* + * Resolution menu item + */ + var MenuItem = videojs.getComponent('MenuItem'); + + // const Component = videojs.getComponent('Component'); + + class ResolutionMenuItem extends MenuItem { + constructor(player, options, onClickListener, label){ + super(player, options, onClickListener, label) + this.onClickListener = onClickListener; + this.label = label; + // Sets this.player_, this.options_ and initializes the component + MenuItem.call(this, player, options); + this.src = options.src; + + this.on('click', this.onClick); + this.on('touchstart', this.onClick); + + if (options.initialySelected) { + this.showAsLabel(); + this.selected(true); + + this.addClass('vjs-selected'); + } + } + showAsLabel() { + // Change menu button label to the label of this item if the menu button label is provided + if(this.label) { + this.label.innerHTML = this.options_.label; + } + } + onClick(customSourcePicker){ + this.onClickListener(this); + // Remember player state + var currentTime = this.player_.currentTime(); + var isPaused = this.player_.paused(); + this.showAsLabel(); + + // add .current class + this.addClass('vjs-selected'); + + // Hide bigPlayButton + if(!isPaused){ + this.player_.bigPlayButton.hide(); + } + if(typeof customSourcePicker !== 'function' && + typeof this.options_.customSourcePicker === 'function'){ + customSourcePicker = this.options_.customSourcePicker; + } + // Change player source and wait for loadeddata event, then play video + // loadedmetadata doesn't work right now for flash. + // Probably because of https://github.com/videojs/video-js-swf/issues/124 + // If player preload is 'none' and then loadeddata not fired. So, we need timeupdate event for seek handle (timeupdate doesn't work properly with flash) + var handleSeekEvent = 'loadeddata'; + if(this.player_.techName_ !== 'Youtube' && this.player_.preload() === 'none' && this.player_.techName_ !== 'Flash') { + handleSeekEvent = 'timeupdate'; + } + setSourcesSanitized(this.player_, this.src, this.options_.label, customSourcePicker) + this.player_.one(handleSeekEvent, function() { + this.player_.currentTime(currentTime); + this.player_.handleTechSeeked_(); + this.player_.trigger('resolutionchange'); + }); + } + } + videojs.registerComponent('ResolutionMenuItem', ResolutionMenuItem); + + // var ResolutionMenuItem = videojs.extend(MenuItem, { + // constructor: function(player, options, onClickListener, label){ + // this.onClickListener = onClickListener; + // this.label = label; + // // Sets this.player_, this.options_ and initializes the component + // MenuItem.call(this, player, options); + // this.src = options.src; + // + // this.on('click', this.onClick); + // this.on('touchstart', this.onClick); + // + // if (options.initialySelected) { + // this.showAsLabel(); + // this.selected(true); + // + // this.addClass('vjs-selected'); + // } + // }, + // showAsLabel: function() { + // // Change menu button label to the label of this item if the menu button label is provided + // if(this.label) { + // this.label.innerHTML = this.options_.label; + // } + // }, + // onClick: function(customSourcePicker){ + // this.onClickListener(this); + // // Remember player state + // var currentTime = this.player_.currentTime(); + // var isPaused = this.player_.paused(); + // this.showAsLabel(); + // + // // add .current class + // this.addClass('vjs-selected'); + // + // // Hide bigPlayButton + // if(!isPaused){ + // this.player_.bigPlayButton.hide(); + // } + // if(typeof customSourcePicker !== 'function' && + // typeof this.options_.customSourcePicker === 'function'){ + // customSourcePicker = this.options_.customSourcePicker; + // } + // // Change player source and wait for loadeddata event, then play video + // // loadedmetadata doesn't work right now for flash. + // // Probably because of https://github.com/videojs/video-js-swf/issues/124 + // // If player preload is 'none' and then loadeddata not fired. So, we need timeupdate event for seek handle (timeupdate doesn't work properly with flash) + // var handleSeekEvent = 'loadeddata'; + // if(this.player_.techName_ !== 'Youtube' && this.player_.preload() === 'none' && this.player_.techName_ !== 'Flash') { + // handleSeekEvent = 'timeupdate'; + // } + // setSourcesSanitized(this.player_, this.src, this.options_.label, customSourcePicker) + // this.player_.one(handleSeekEvent, function() { + // this.player_.currentTime(currentTime); + // this.player_.handleTechSeeked_(); + // this.player_.trigger('resolutionchange'); + // }); + // } + // }); + + + /* + * Resolution menu button + */ + var MenuButton = videojs.getComponent('MenuButton'); + class ResolutionMenuButton extends MenuButton { + constructor(player, options, settings, label){ + super(player, options, settings, label) + this.sources = options.sources; + this.label = label; + this.label.innerHTML = options.initialySelectedLabel; + // Sets this.player_, this.options_ and initializes the component + MenuButton.call(this, player, options, settings); + this.controlText('Quality'); + + if(settings.dynamicLabel){ + this.el().appendChild(label); + }else{ + var staticLabel = document.createElement('span'); + videojs.dom.addClass(staticLabel, 'vjs-resolution-button-staticlabel'); + this.el().appendChild(staticLabel); + } + } + createItems(){ + var menuItems = []; + var labels = (this.sources && this.sources.label) || {}; + var onClickUnselectOthers = function(clickedItem) { + menuItems.map(function(item) { + item.selected(item === clickedItem); + item.removeClass('vjs-selected'); + }); + }; + + for (var key in labels) { + if (labels.hasOwnProperty(key)) { + menuItems.push(new ResolutionMenuItem( + this.player_, + { + label: key, + src: labels[key], + initialySelected: key === this.options_.initialySelectedLabel, + customSourcePicker: this.options_.customSourcePicker + }, + onClickUnselectOthers, + this.label)); + // Store menu item for API calls + menuItemsHolder[key] = menuItems[menuItems.length - 1]; + } + } + return menuItems; + } + } + videojs.registerComponent('ResolutionMenuButton', ResolutionMenuButton); + // var ResolutionMenuButton = videojs.extend(MenuButton, { + // constructor: function(player, options, settings, label){ + // this.sources = options.sources; + // this.label = label; + // this.label.innerHTML = options.initialySelectedLabel; + // // Sets this.player_, this.options_ and initializes the component + // MenuButton.call(this, player, options, settings); + // this.controlText('Quality'); + // + // if(settings.dynamicLabel){ + // this.el().appendChild(label); + // }else{ + // var staticLabel = document.createElement('span'); + // videojs.dom.addClass(staticLabel, 'vjs-resolution-button-staticlabel'); + // this.el().appendChild(staticLabel); + // } + // }, + // createItems: function(){ + // var menuItems = []; + // var labels = (this.sources && this.sources.label) || {}; + // var onClickUnselectOthers = function(clickedItem) { + // menuItems.map(function(item) { + // item.selected(item === clickedItem); + // item.removeClass('vjs-selected'); + // }); + // }; + // + // for (var key in labels) { + // if (labels.hasOwnProperty(key)) { + // menuItems.push(new ResolutionMenuItem( + // this.player_, + // { + // label: key, + // src: labels[key], + // initialySelected: key === this.options_.initialySelectedLabel, + // customSourcePicker: this.options_.customSourcePicker + // }, + // onClickUnselectOthers, + // this.label)); + // // Store menu item for API calls + // menuItemsHolder[key] = menuItems[menuItems.length - 1]; + // } + // } + // return menuItems; + // } + // }); + + /** + * Initialize the plugin. + * @param {object} [options] configuration for the plugin + */ + videoJsResolutionSwitcher = function(options) { + var settings = videojs.mergeOptions(defaults, options), + player = this, + label = document.createElement('span'), + groupedSrc = {}; + + videojs.dom.addClass(label, 'vjs-resolution-button-label'); + + /** + * Updates player sources or returns current source URL + * @param {Array} [src] array of sources [{src: '', type: '', label: '', res: ''}] + * @returns {Object|String|Array} videojs player object if used as setter or current source URL, object, or array of sources + */ + player.updateSrc = function(src){ + //Return current src if src is not given + if(!src){ return player.src(); } + // Dispose old resolution menu button before adding new sources + if(player.controlBar.resolutionSwitcher){ + player.controlBar.resolutionSwitcher.dispose(); + delete player.controlBar.resolutionSwitcher; + } + //Sort sources + src = src.sort(compareResolutions); + groupedSrc = bucketSources(src); + var choosen = chooseSrc(groupedSrc, src); + var menuButton = new ResolutionMenuButton(player, { sources: groupedSrc, initialySelectedLabel: choosen.label , initialySelectedRes: choosen.res , customSourcePicker: settings.customSourcePicker}, settings, label); + videojs.dom.addClass(menuButton.el(), 'vjs-resolution-button'); + player.controlBar.resolutionSwitcher = player.controlBar.el_.insertBefore(menuButton.el_, player.controlBar.getChild('fullscreenToggle').el_); + player.controlBar.resolutionSwitcher.dispose = function(){ + this.parentNode.removeChild(this); + }; + return setSourcesSanitized(player, choosen.sources, choosen.label); + }; + + /** + * Returns current resolution or sets one when label is specified + * @param {String} [label] label name + * @param {Function} [customSourcePicker] custom function to choose source. Takes 3 arguments: player, sources, label. Must return player object. + * @returns {Object} current resolution object {label: '', sources: []} if used as getter or player object if used as setter + */ + player.currentResolution = function(label, customSourcePicker){ + if(label == null) { return currentResolution; } + if(menuItemsHolder[label] != null){ + menuItemsHolder[label].onClick(customSourcePicker); + } + return player; + }; + + /** + * Returns grouped sources by label, resolution and type + * @returns {Object} grouped sources: { label: { key: [] }, res: { key: [] }, type: { key: [] } } + */ + player.getGroupedSrc = function(){ + return groupedSrc; + }; + + /** + * Method used for sorting list of sources + * @param {Object} a - source object with res property + * @param {Object} b - source object with res property + * @returns {Number} result of comparation + */ + function compareResolutions(a, b){ + if(!a.res || !b.res){ return 0; } + return (+b.res)-(+a.res); + } + + /** + * Group sources by label, resolution and type + * @param {Array} src Array of sources + * @returns {Object} grouped sources: { label: { key: [] }, res: { key: [] }, type: { key: [] } } + */ + function bucketSources(src){ + var resolutions = { + label: {}, + res: {}, + type: {} + }; + src.map(function(source) { + initResolutionKey(resolutions, 'label', source); + initResolutionKey(resolutions, 'res', source); + initResolutionKey(resolutions, 'type', source); + + appendSourceToKey(resolutions, 'label', source); + appendSourceToKey(resolutions, 'res', source); + appendSourceToKey(resolutions, 'type', source); + }); + return resolutions; + } + + function initResolutionKey(resolutions, key, source) { + if(resolutions[key][source[key]] == null) { + resolutions[key][source[key]] = []; + } + } + + function appendSourceToKey(resolutions, key, source) { + resolutions[key][source[key]].push(source); + } + + /** + * Choose src if option.default is specified + * @param {Object} groupedSrc {res: { key: [] }} + * @param {Array} src Array of sources sorted by resolution used to find high and low res + * @returns {Object} {res: string, sources: []} + */ + function chooseSrc(groupedSrc, src){ + var selectedRes = settings['default']; // use array access as default is a reserved keyword + var selectedLabel = ''; + if (selectedRes === 'high') { + selectedRes = src[0].res; + selectedLabel = src[0].label; + } else if (selectedRes === 'low' || selectedRes == null || !groupedSrc.res[selectedRes]) { + // Select low-res if default is low or not set + selectedRes = src[src.length - 1].res; + selectedLabel = src[src.length -1].label; + } else if (groupedSrc.res[selectedRes]) { + selectedLabel = groupedSrc.res[selectedRes][0].label; + } + + return {res: selectedRes, label: selectedLabel, sources: groupedSrc.res[selectedRes]}; + } + + function initResolutionForYt(player){ + // Init resolution + player.tech_.ytPlayer.setPlaybackQuality('default'); + + // Capture events + player.tech_.ytPlayer.addEventListener('onPlaybackQualityChange', function(){ + player.trigger('resolutionchange'); + }); + + // We must wait for play event + player.one('play', function(){ + var qualities = player.tech_.ytPlayer.getAvailableQualityLevels(); + // Map youtube qualities names + var _yts = { + highres: {res: 1080, label: '1080', yt: 'highres'}, + hd1080: {res: 1080, label: '1080', yt: 'hd1080'}, + hd720: {res: 720, label: '720', yt: 'hd720'}, + large: {res: 480, label: '480', yt: 'large'}, + medium: {res: 360, label: '360', yt: 'medium'}, + small: {res: 240, label: '240', yt: 'small'}, + tiny: {res: 144, label: '144', yt: 'tiny'}, + auto: {res: 0, label: 'auto', yt: 'default'} + }; + + var _sources = []; + + qualities.map(function(q){ + _sources.push({ + src: player.src().src, + type: player.src().type, + label: _yts[q].label, + res: _yts[q].res, + _yt: _yts[q].yt + }); + }); + + groupedSrc = bucketSources(_sources); + + // Overwrite defualt sourcePicer function + var _customSourcePicker = function(_player, _sources, _label){ + player.tech_.ytPlayer.setPlaybackQuality(_sources[0]._yt); + return player; + }; + + var choosen = {label: 'auto', res: 0, sources: groupedSrc.label.auto}; + var menuButton = new ResolutionMenuButton(player, { + sources: groupedSrc, + initialySelectedLabel: choosen.label, + initialySelectedRes: choosen.res, + customSourcePicker: _customSourcePicker + }, settings, label); + + menuButton.el().classList.add('vjs-resolution-button'); + player.controlBar.resolutionSwitcher = player.controlBar.addChild(menuButton); + }); + } + + player.ready(function(){ + if(player.options_.sources.length > 1){ + // tech: Html5 and Flash + // Create resolution switcher for videos form <source> tag inside <video> + player.updateSrc(player.options_.sources); + } + + if(player.techName_ === 'Youtube'){ + // tech: YouTube + initResolutionForYt(player); + } + }); + + }; + + // register the plugin + videojs.registerPlugin('videoJsResolutionSwitcher', videoJsResolutionSwitcher); + })(window, videojs); +})(); +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "+8RM": +/***/ (function(module, exports) { + +module.exports = "data:font/ttf;base64,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" + +/***/ }), + +/***/ "+olj": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return UIMixins; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__config__ = __webpack_require__("FhoZ"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_assets_js_logo_loading_json__ = __webpack_require__("jxY5"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_assets_js_logo_loading_json___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_assets_js_logo_loading_json__); +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + + + + +var loadingGifLength = __WEBPACK_IMPORTED_MODULE_0__config__["a" /* default */].loadingGifLength, + logoGifLength = __WEBPACK_IMPORTED_MODULE_0__config__["a" /* default */].logoGifLength; + +var UIMixins = { + methods: { + initVideoEle: function initVideoEle() { + var _this = this; + + if (this.noSingleEle && this.noSingleEle.parentNode) this.noSingleEle.parentNode.removeChild(this.noSingleEle); + this.videoEle = this.$el.querySelector("video"); + if (this.videoEle && this.videoEle.parentNode) this.videoEle.parentNode.removeChild(this.videoEle); + this._videoId = "easy_player_" + this.getUUID().split("-").join(''); + if (!this.videoUrl.startsWith("webrtc")) { + //TODO 不是webRTC + this.videoEle = document.createElement("video"); + this.videoEle.setAttribute("id", this._videoId); + this.videoEle.setAttribute("ref", 'easyPlayer'); + this.videoEle.setAttribute('loop', "true"); + this.videoEle.setAttribute('preload', "true"); + this.videoEle.setAttribute("webkit-playsinline", "true"); + this.videoEle.setAttribute("playsinline", 'playsinline'); //阻止弹出层 + this.videoEle.setAttribute('x5-playsinline', 'x5-playsinline'); + this.videoEle.setAttribute('x-webkit-airplay', 'allow'); + this.videoEle.setAttribute("x5-video-player-type", 'h5'); + this.videoEle.setAttribute("x5-video-player-fullscreen", "true"); + this.videoEle.setAttribute('x5-video-orientation', 'portrait'); + this.videoEle.setAttribute('x5-video-ignore-metadata', "true"); + this.videoEle.setAttribute('crossOrigin', 'anonymous'); + this.videoEle.setAttribute("x5-crossOrigin", 'anonymous'); + this.videoEle.controls = false; + this.videoEle.muted = this.playerMuted; + this.videoEle.autoplay = this.autoplay; + this.videoEle.classList = "video-js vjs-default-skin vjs-big-play-centered magic-video"; + this.videoEle.style = "width:100%;height: 100%"; + } + // 加载loading标签 + var videoWidth = parseInt(this.easyVideoPlayerInnerEle.offsetWidth); + this.easyPlayerLoadingEle = document.createElement("div"); + var loadingImgEle = document.createElement("img"); + var loadingTextEle = document.createElement("div"); + this.easyPlayerLoadingEle.setAttribute("ref", "loadingPage"); + this.easyPlayerLoadingEle.classList = "easy-player-loading"; + loadingTextEle.classList = "loading-text"; + loadingTextEle.setAttribute("ref", "loadingText"); + loadingTextEle.innerHTML = "加载中..."; + loadingImgEle.classList = 'logo'; + if (videoWidth < 625) { + loadingImgEle.style = "width:90px;height:24px;line-height: 24px;"; + loadingTextEle.style.height = '24px'; + this.$refs.loadingTextInfo.style.fontSize = '10px'; + } else { + loadingImgEle.style.width = '180'; + loadingImgEle.style.height = '40px'; + loadingTextEle.style.height = '24px'; + this.$refs.loadingTextInfo.style.fontSize = '12px'; + } + loadingImgEle.setAttribute("src", this.showEnterprise ? __WEBPACK_IMPORTED_MODULE_1_assets_js_logo_loading_json___default.a.logoGif : __WEBPACK_IMPORTED_MODULE_1_assets_js_logo_loading_json___default.a.loading); + this.easyPlayerLoadingEle.appendChild(loadingImgEle); + this.easyPlayerLoadingEle.appendChild(loadingTextEle); + if (this.videoEle) this.easyVideoPlayerInnerEle.appendChild(this.videoEle); + //TODO 检查是否更换logo + setTimeout(function () { + var currentLength = loadingImgEle.src.length; + if (_this.showEnterprise && currentLength !== logoGifLength) return _this.destroyPlayer(); //企业logo + if (!_this.showEnterprise && currentLength !== loadingGifLength) return _this.destroyPlayer(); //非企业logo + }, 1000); + }, + _createVideoLoadingEle: function _createVideoLoadingEle() { + if (document.querySelector(".easy-player-loading")) return; + document.getElementById(this._videoId).appendChild(this.easyPlayerLoadingEle); + }, + _handlerVideoProgress: function _handlerVideoProgress() { + //TODO 处理是否显示进度条 + if (this.$el.querySelector(".vjs-progress-control")) this.$el.querySelector(".vjs-progress-control").style.opacity = this.progress ? 1 : 0; + }, + _createVideoPlayBtnEle: function _createVideoPlayBtnEle() { + var _this2 = this; + + if (this.autoplay && this.playerMuted) return; + var videoParentEle = document.getElementById(this._videoId); + var playBtn = document.createElement("div"); + var spanEle = document.createElement("span"); + spanEle.style = "font-size:3em"; + spanEle.classList = 'iconfont icon-bofang easy-play-btn'; + playBtn.appendChild(spanEle); + videoParentEle.appendChild(playBtn); + var playBtnEle = this.$el.querySelector(".easy-play-btn"); + playBtnEle.onclick = function () { + _this2.playerPlaying = false; + var type = _this2.playerOption.type; + + _this2.easyPlayer.src({ src: _this2.videoUrl, type: type }); + _this2.easyPlayer.load(); + videoParentEle.removeChild(playBtnEle.parentNode); + playBtnEle = null; + setTimeout(function () { + return _this2.easyPlayer.play(); + }, 200); + setTimeout(function () { + return _this2.setHLSListener(); + }, 200); //监测是否是HLS265 + setTimeout(function () { + return _this2.setFlvPlayerListener(_this2.easyPlayer); + }, 200); + }; + }, + + + // TODO 渲染自定义菜单按钮 + createPlayerMenusBtn: function createPlayerMenusBtn() { + var _this3 = this; + + var playerControlBar = this.easyPlayer.controlBar.el_; + + var _playerControlBar$get = playerControlBar.getElementsByClassName("vjs-fullscreen-control"), + _playerControlBar$get2 = _slicedToArray(_playerControlBar$get, 1), + fullscreenBtn = _playerControlBar$get2[0]; + // TODO 渲染拉伸模式 + + + var stretchBtn = document.createElement("button"); + stretchBtn.className = "vjs-control vjs-button vjs-stretch-control"; + stretchBtn.type = "button"; + stretchBtn.title = "拉伸模式"; + stretchBtn.innerText = this.stretch ? "拉伸" : "标准"; + stretchBtn.addEventListener("click", function () { + _this3.stretch = !_this3.stretch; + stretchBtn.innerText = _this3.stretch ? "拉伸" : "标准"; + }); + playerControlBar.insertBefore(stretchBtn, fullscreenBtn); + + //TODO 录像 + this.luXiangEle = document.createElement("span"); + this.luXiangEle.title = "录像"; + this.luXiangEle.style = "font-size:16px;width:40px;height: 30px;color:#FFF;text-align:center;display:flex;flex-direction: row;justify-content: center;align-items: center;"; + this.luXiangEle.classList = "iconfont icon-luxiang2"; + + this.luXiangEle.onclick = function () { + _this3._recordingUIChange(); + }; + + playerControlBar.insertBefore(this.luXiangEle, fullscreenBtn); + + // TODO 渲染快照 + var snapshotBtn = document.createElement("button"); + snapshotBtn.className = "vjs-control vjs-button vjs-snapshot-control"; + snapshotBtn.type = "button"; + snapshotBtn.title = "快照"; + snapshotBtn.innerHTML = '<span class="iconfont icon-xiangji"></span>'; + playerControlBar.insertBefore(snapshotBtn, fullscreenBtn); + snapshotBtn.addEventListener("click", function () { + return _this3.snapshot(); + }); + + // TODO 码率 + if (!this.videoUrl.includes(".mp4")) { + var bitRate = document.createElement("span"); + bitRate.className = "vjs-control vjs-button vjs-bitrate-control"; + bitRate.type = "span"; + bitRate.title = "码率"; + bitRate.style = "line-height: 30px;width: 75px"; + playerControlBar.insertBefore(bitRate, stretchBtn); + } + }, + setFLVListener: function setFLVListener() { + this.createKbps(Math.ceil(this.easyPlayer.tech_.flvPlayer._transmuxer._controller._ioctl._speedSampler.averageKBps * 8)); + }, + + + //TODO 渲染 码率 + createKbps: function createKbps(kbps) { + if (this.pause) return this.$el.querySelector(".vjs-bitrate-control").innerHTML = ""; + if (kbps > 1024) kbps = (kbps / 1024).toFixed(2) + " Mb/s";else kbps = kbps.toFixed(2) + " Kb/s"; + this.$el.querySelector(".vjs-bitrate-control").innerHTML = kbps; + }, + + + //TODO 显示版本信息 + showVersion: function showVersion() { + var _this4 = this; + + //TODO 加载版本号 2021年11月01日 + var easyH5Player = this.$refs.easyH5Player; + var videoEle = this.$el.querySelector(".easy-video-player-inner"); + if (videoEle) videoEle.setAttribute('oncontextmenu', 'return false'); //禁止原生video 右击事件 + easyH5Player.oncontextmenu = function (e) { + var positionStyle = { + left: e.offsetX + "px", + top: e.offsetY + "px", + pointerEvents: 'auto' + }; + _this4.showRightMenu = _this4.hiddenRightMenu ? false : !!_this4.videoUrl; + _this4.versionStyle = Object.assign(_this4.versionStyle, positionStyle); + }; + easyH5Player.onclick = function () { + _this4.showRightMenu = false; + _this4.versionStyle = Object.assign(_this4.versionStyle, { pointerEvents: 'none' }); + }; + }, + + + //TODO 右击复制播放地址 + onTouchCopyVideoSrc: function onTouchCopyVideoSrc() { + var inputEle = document.createElement('input'); + this.$refs.easyH5Player.appendChild(inputEle); + inputEle.value = this.videoUrl; // 复制到剪切板的内容 + inputEle.select(); + if (!document.execCommand) return; + document.execCommand("copy"); + this.$refs.easyH5Player.removeChild(inputEle); + }, + onTouchRightMenuClose: function onTouchRightMenuClose() { + var _this5 = this; + + if (!this.videoUrl) return; + this.$emit("change", ''); + this.$emit("rightMenuClose"); + this.$nextTick(function () { + if (document.getElementById(_this5._videoId)) _this5.destroyPlayer(); + }); + }, + + + //TODO 保存快照 + saveLocalSnapshot: function saveLocalSnapshot() { + try { + var date = new Date(); //实例一个时间对象; + var year = date.getFullYear(); //获取系统的年; + var month = date.getMonth() + 1; //获取系统月份,由于月份是从0开始计算,所以要加1 + var day = date.getDate(); //获取系统日 + var hour = date.getHours(); //获取系统时间 + var minute = date.getMinutes(); //分 + var second = date.getSeconds(); //秒 + var fileName = this.recordFileName ? this.recordFileName + "-" + year + month + day + hour + minute + second + ".png" : "EasyPlayer-" + year + month + day + hour + minute + second + ".png"; + var fileType = "png"; // 如果文件名中没有带后缀,默认使用png + // 判断保存的图片格式 + switch (fileName) { + case fileName.indexOf("png") > -1: + fileType = "png"; + break; + case fileName.indexOf("jpg") > -1: + fileType = "jpg"; + break; + + case fileName.indexOf("jpeg") > -1: + fileType = "jpeg"; + break; + case fileName.indexOf("bmp") > -1: + fileType = "bmp"; + break; + case fileName.indexOf("gif") > -1: + fileType = "gif"; + break; + default: + fileType = "png"; + break; + } + var strDataURL = void 0, + canvas = void 0; + if (this.easyPlayer === null) return; + + var _easyPlayer$el_$child = _slicedToArray(this.easyPlayer.el_.children, 1), + video = _easyPlayer$el_$child[0]; + + if (!!video && video.tagName.toUpperCase() === "object".toUpperCase()) { + // 如果是播放rtmp流时,截图调用这个 + strDataURL = video.vjs_snap(); + } else { + canvas = window.canvas = document.createElement("canvas"); + canvas.width = video.videoWidth; + canvas.height = video.videoHeight; + canvas.getContext("2d").drawImage(video, 0, 0, canvas.width, canvas.height); // 图片大小和视频分辨率一致 + strDataURL = canvas.toDataURL("image/" + fileType); // canvas中video中取一帧图片并转成dataURL + } + if (strDataURL.trim().length === 6) return; + if (this.isCacheCleanUp) return this.restartSnapshot = strDataURL; + var arr = strDataURL.split(","), + mime = arr[0].match(/:(.*?);/)[1], + bstr = atob(arr[1]), + n = bstr.length, + u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + var blob = new Blob([u8arr], { + type: mime + }); + var url = window.URL.createObjectURL(blob); + var a = document.createElement("a"); + a.style.display = "none"; + a.href = url; + a.download = fileName; + a.click(); + document.body.appendChild(a); + setTimeout(function () { + document.body.removeChild(a); + window.URL.revokeObjectURL(url); + }, 1000); + this.$emit("snapshot", blob); + } catch (e) { + console.log("e", e); + } + } + } +}; + +/***/ }), + +/***/ "+wZ5": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var curves = exports; + +var hash = __webpack_require__("JSLd"); +var curve = __webpack_require__("OJ8B"); +var utils = __webpack_require__("UXd7"); + +var assert = utils.assert; + +function PresetCurve(options) { + if (options.type === 'short') + this.curve = new curve.short(options); + else if (options.type === 'edwards') + this.curve = new curve.edwards(options); + else + this.curve = new curve.mont(options); + this.g = this.curve.g; + this.n = this.curve.n; + this.hash = options.hash; + + assert(this.g.validate(), 'Invalid curve'); + assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O'); +} +curves.PresetCurve = PresetCurve; + +function defineCurve(name, options) { + Object.defineProperty(curves, name, { + configurable: true, + enumerable: true, + get: function() { + var curve = new PresetCurve(options); + Object.defineProperty(curves, name, { + configurable: true, + enumerable: true, + value: curve, + }); + return curve; + }, + }); +} + +defineCurve('p192', { + type: 'short', + prime: 'p192', + p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff', + a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc', + b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1', + n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831', + hash: hash.sha256, + gRed: false, + g: [ + '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012', + '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811', + ], +}); + +defineCurve('p224', { + type: 'short', + prime: 'p224', + p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001', + a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe', + b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4', + n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d', + hash: hash.sha256, + gRed: false, + g: [ + 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21', + 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34', + ], +}); + +defineCurve('p256', { + type: 'short', + prime: null, + p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff', + a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc', + b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b', + n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551', + hash: hash.sha256, + gRed: false, + g: [ + '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296', + '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5', + ], +}); + +defineCurve('p384', { + type: 'short', + prime: null, + p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + + 'fffffffe ffffffff 00000000 00000000 ffffffff', + a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + + 'fffffffe ffffffff 00000000 00000000 fffffffc', + b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' + + '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef', + n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' + + 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973', + hash: hash.sha384, + gRed: false, + g: [ + 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' + + '5502f25d bf55296c 3a545e38 72760ab7', + '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' + + '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f', + ], +}); + +defineCurve('p521', { + type: 'short', + prime: null, + p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + + 'ffffffff ffffffff ffffffff ffffffff ffffffff', + a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + + 'ffffffff ffffffff ffffffff ffffffff fffffffc', + b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' + + '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' + + '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00', + n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + + 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' + + 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409', + hash: hash.sha512, + gRed: false, + g: [ + '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' + + '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' + + 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66', + '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' + + '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' + + '3fad0761 353c7086 a272c240 88be9476 9fd16650', + ], +}); + +defineCurve('curve25519', { + type: 'mont', + prime: 'p25519', + p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed', + a: '76d06', + b: '1', + n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed', + hash: hash.sha256, + gRed: false, + g: [ + '9', + ], +}); + +defineCurve('ed25519', { + type: 'edwards', + prime: 'p25519', + p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed', + a: '-1', + c: '1', + // -121665 * (121666^(-1)) (mod P) + d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3', + n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed', + hash: hash.sha256, + gRed: false, + g: [ + '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a', + + // 4/5 + '6666666666666666666666666666666666666666666666666666666666666658', + ], +}); + +var pre; +try { + pre = __webpack_require__("3Ngr"); +} catch (e) { + pre = undefined; +} + +defineCurve('secp256k1', { + type: 'short', + prime: 'k256', + p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f', + a: '0', + b: '7', + n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141', + h: '1', + hash: hash.sha256, + + // Precomputed endomorphism + beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee', + lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72', + basis: [ + { + a: '3086d221a7d46bcde86c90e49284eb15', + b: '-e4437ed6010e88286f547fa90abfe4c3', + }, + { + a: '114ca50f7a8e2f3f657c1108d9d44cfd8', + b: '3086d221a7d46bcde86c90e49284eb15', + }, + ], + + gRed: false, + g: [ + '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798', + '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8', + pre, + ], +}); + + +/***/ }), + +/***/ "/2GC": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Maldivian [dv] +//! author : Jawish Hameed : https://github.com/jawish + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var months = [ + 'ޖެނުއަރީ', + 'ފެބްރުއަރީ', + 'މާރިޗު', + 'އޭޕްރީލު', + 'މޭ', + 'ޖޫން', + 'ޖުލައި', + 'އޯގަސްޓު', + 'ސެޕްޓެމްބަރު', + 'އޮކްޓޯބަރު', + 'ނޮވެމްބަރު', + 'ޑިސެމްބަރު' +]; +var weekdays = [ + 'އާދިއްތަ', + 'ހޯމަ', + 'އަންގާރަ', + 'ބުދަ', + 'ބުރާސްފަތި', + 'ހުކުރު', + 'ހޮނިހިރު' +]; + +var dv = moment.defineLocale('dv', { + months : months, + monthsShort : months, + weekdays : weekdays, + weekdaysShort : weekdays, + weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), + longDateFormat : { + + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'D/M/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /މކ|މފ/, + isPM : function (input) { + return 'މފ' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'މކ'; + } else { + return 'މފ'; + } + }, + calendar : { + sameDay : '[މިއަދު] LT', + nextDay : '[މާދަމާ] LT', + nextWeek : 'dddd LT', + lastDay : '[އިއްޔެ] LT', + lastWeek : '[ފާއިތުވި] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : 'ތެރޭގައި %s', + past : 'ކުރިން %s', + s : 'ސިކުންތުކޮޅެއް', + m : 'މިނިޓެއް', + mm : 'މިނިޓު %d', + h : 'ގަޑިއިރެއް', + hh : 'ގަޑިއިރު %d', + d : 'ދުވަހެއް', + dd : 'ދުވަސް %d', + M : 'މަހެއް', + MM : 'މަސް %d', + y : 'އަހަރެއް', + yy : 'އަހަރު %d' + }, + preparse: function (string) { + return string.replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/,/g, '،'); + }, + week : { + dow : 7, // Sunday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +return dv; + +}))); + + +/***/ }), + +/***/ "/TTR": +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a <style> tag + +// load the styles +var content = __webpack_require__("g38Z"); +if(typeof content === 'string') content = [[module.i, content, '']]; +// Prepare cssTransformation +var transform; + +var options = {"hmr":true} +options.transform = transform +// add the styles to the DOM +var update = __webpack_require__("uOJK")(content, options); +if(content.locals) module.exports = content.locals; +// Hot Module Replacement +if(false) { + // When the styles change, update the <style> tags + if(!content.locals) { + module.hot.accept("!!../../node_modules/_css-loader@0.28.7@css-loader/index.js!./video-js.css", function() { + var newContent = require("!!../../node_modules/_css-loader@0.28.7@css-loader/index.js!./video-js.css"); + if(typeof newContent === 'string') newContent = [[module.id, newContent, '']]; + update(newContent); + }); + } + // When the module is disposed, remove the <style> tags + module.hot.dispose(function() { update(); }); +} + +/***/ }), + +/***/ "/XLp": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Lao [lo] +//! author : Ryan Hart : https://github.com/ryanhart2 + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var lo = moment.defineLocale('lo', { + months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'), + monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'), + weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), + weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), + weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'ວັນdddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/, + isPM: function (input) { + return input === 'ຕອນແລງ'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ຕອນເຊົ້າ'; + } else { + return 'ຕອນແລງ'; + } + }, + calendar : { + sameDay : '[ມື້ນີ້ເວລາ] LT', + nextDay : '[ມື້ອື່ນເວລາ] LT', + nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT', + lastDay : '[ມື້ວານນີ້ເວລາ] LT', + lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'ອີກ %s', + past : '%sຜ່ານມາ', + s : 'ບໍ່ເທົ່າໃດວິນາທີ', + m : '1 ນາທີ', + mm : '%d ນາທີ', + h : '1 ຊົ່ວໂມງ', + hh : '%d ຊົ່ວໂມງ', + d : '1 ມື້', + dd : '%d ມື້', + M : '1 ເດືອນ', + MM : '%d ເດືອນ', + y : '1 ປີ', + yy : '%d ປີ' + }, + dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/, + ordinal : function (number) { + return 'ທີ່' + number; + } +}); + +return lo; + +}))); + + +/***/ }), + +/***/ "/gF+": +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__("DLTi").Buffer +var ZEROES = Buffer.alloc(16, 0) + +function toArray (buf) { + return [ + buf.readUInt32BE(0), + buf.readUInt32BE(4), + buf.readUInt32BE(8), + buf.readUInt32BE(12) + ] +} + +function fromArray (out) { + var buf = Buffer.allocUnsafe(16) + buf.writeUInt32BE(out[0] >>> 0, 0) + buf.writeUInt32BE(out[1] >>> 0, 4) + buf.writeUInt32BE(out[2] >>> 0, 8) + buf.writeUInt32BE(out[3] >>> 0, 12) + return buf +} + +function GHASH (key) { + this.h = key + this.state = Buffer.alloc(16, 0) + this.cache = Buffer.allocUnsafe(0) +} + +// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html +// by Juho Vähä-Herttua +GHASH.prototype.ghash = function (block) { + var i = -1 + while (++i < block.length) { + this.state[i] ^= block[i] + } + this._multiply() +} + +GHASH.prototype._multiply = function () { + var Vi = toArray(this.h) + var Zi = [0, 0, 0, 0] + var j, xi, lsbVi + var i = -1 + while (++i < 128) { + xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0 + if (xi) { + // Z_i+1 = Z_i ^ V_i + Zi[0] ^= Vi[0] + Zi[1] ^= Vi[1] + Zi[2] ^= Vi[2] + Zi[3] ^= Vi[3] + } + + // Store the value of LSB(V_i) + lsbVi = (Vi[3] & 1) !== 0 + + // V_i+1 = V_i >> 1 + for (j = 3; j > 0; j--) { + Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31) + } + Vi[0] = Vi[0] >>> 1 + + // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R + if (lsbVi) { + Vi[0] = Vi[0] ^ (0xe1 << 24) + } + } + this.state = fromArray(Zi) +} + +GHASH.prototype.update = function (buf) { + this.cache = Buffer.concat([this.cache, buf]) + var chunk + while (this.cache.length >= 16) { + chunk = this.cache.slice(0, 16) + this.cache = this.cache.slice(16) + this.ghash(chunk) + } +} + +GHASH.prototype.final = function (abl, bl) { + if (this.cache.length) { + this.ghash(Buffer.concat([this.cache, ZEROES], 16)) + } + + this.ghash(fromArray([0, abl, 0, bl])) + return this.state +} + +module.exports = GHASH + + +/***/ }), + +/***/ "/sSn": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/*<replacement>*/ + +var pna = __webpack_require__("z2li"); +/*</replacement>*/ + +// undocumented cb() API, needed for core, not for public API +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err && (!this._writableState || !this._writableState.errorEmitted)) { + pna.nextTick(emitErrorNT, this, err); + } + return this; + } + + // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + if (this._readableState) { + this._readableState.destroyed = true; + } + + // if this is a duplex stream mark the writable part as destroyed as well + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + pna.nextTick(emitErrorNT, _this, err); + if (_this._writableState) { + _this._writableState.errorEmitted = true; + } + } else if (cb) { + cb(err); + } + }); + + return this; +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy +}; + +/***/ }), + +/***/ 0: +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__("8liJ"); + + +/***/ }), + +/***/ "0+t1": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Hungarian [hu] +//! author : Adam Brunner : https://github.com/adambrunner + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); +function translate(number, withoutSuffix, key, isFuture) { + var num = number, + suffix; + switch (key) { + case 's': + return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; + case 'm': + return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'mm': + return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'h': + return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'hh': + return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'd': + return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'dd': + return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'M': + return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'MM': + return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'y': + return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); + case 'yy': + return num + (isFuture || withoutSuffix ? ' év' : ' éve'); + } + return ''; +} +function week(isFuture) { + return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; +} + +var hu = moment.defineLocale('hu', { + months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), + monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), + weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), + weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), + weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'YYYY.MM.DD.', + LL : 'YYYY. MMMM D.', + LLL : 'YYYY. MMMM D. H:mm', + LLLL : 'YYYY. MMMM D., dddd H:mm' + }, + meridiemParse: /de|du/i, + isPM: function (input) { + return input.charAt(1).toLowerCase() === 'u'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower === true ? 'de' : 'DE'; + } else { + return isLower === true ? 'du' : 'DU'; + } + }, + calendar : { + sameDay : '[ma] LT[-kor]', + nextDay : '[holnap] LT[-kor]', + nextWeek : function () { + return week.call(this, true); + }, + lastDay : '[tegnap] LT[-kor]', + lastWeek : function () { + return week.call(this, false); + }, + sameElse : 'L' + }, + relativeTime : { + future : '%s múlva', + past : '%s', + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return hu; + +}))); + + +/***/ }), + +/***/ "0I3d": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var Buffer = __webpack_require__("DLTi").Buffer +var Transform = __webpack_require__("WTPY").Transform +var inherits = __webpack_require__("mwrz") + +function throwIfNotStringOrBuffer (val, prefix) { + if (!Buffer.isBuffer(val) && typeof val !== 'string') { + throw new TypeError(prefix + ' must be a string or a buffer') + } +} + +function HashBase (blockSize) { + Transform.call(this) + + this._block = Buffer.allocUnsafe(blockSize) + this._blockSize = blockSize + this._blockOffset = 0 + this._length = [0, 0, 0, 0] + + this._finalized = false +} + +inherits(HashBase, Transform) + +HashBase.prototype._transform = function (chunk, encoding, callback) { + var error = null + try { + this.update(chunk, encoding) + } catch (err) { + error = err + } + + callback(error) +} + +HashBase.prototype._flush = function (callback) { + var error = null + try { + this.push(this.digest()) + } catch (err) { + error = err + } + + callback(error) +} + +HashBase.prototype.update = function (data, encoding) { + throwIfNotStringOrBuffer(data, 'Data') + if (this._finalized) throw new Error('Digest already called') + if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding) + + // consume data + var block = this._block + var offset = 0 + while (this._blockOffset + data.length - offset >= this._blockSize) { + for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++] + this._update() + this._blockOffset = 0 + } + while (offset < data.length) block[this._blockOffset++] = data[offset++] + + // update length + for (var j = 0, carry = data.length * 8; carry > 0; ++j) { + this._length[j] += carry + carry = (this._length[j] / 0x0100000000) | 0 + if (carry > 0) this._length[j] -= 0x0100000000 * carry + } + + return this +} + +HashBase.prototype._update = function () { + throw new Error('_update is not implemented') +} + +HashBase.prototype.digest = function (encoding) { + if (this._finalized) throw new Error('Digest already called') + this._finalized = true + + var digest = this._digest() + if (encoding !== undefined) digest = digest.toString(encoding) + + // reset state + this._block.fill(0) + this._blockOffset = 0 + for (var i = 0; i < 4; ++i) this._length[i] = 0 + + return digest +} + +HashBase.prototype._digest = function () { + throw new Error('_digest is not implemented') +} + +module.exports = HashBase + + +/***/ }), + +/***/ "0Nqt": +/***/ (function(module, exports) { + + + +/***/ }), + +/***/ "0Owf": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Kyrgyz [ky] +//! author : Chyngyz Arystan uulu : https://github.com/chyngyz + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + + +var suffixes = { + 0: '-чү', + 1: '-чи', + 2: '-чи', + 3: '-чү', + 4: '-чү', + 5: '-чи', + 6: '-чы', + 7: '-чи', + 8: '-чи', + 9: '-чу', + 10: '-чу', + 20: '-чы', + 30: '-чу', + 40: '-чы', + 50: '-чү', + 60: '-чы', + 70: '-чи', + 80: '-чи', + 90: '-чу', + 100: '-чү' +}; + +var ky = moment.defineLocale('ky', { + months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), + weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'), + weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), + weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Бүгүн саат] LT', + nextDay : '[Эртең саат] LT', + nextWeek : 'dddd [саат] LT', + lastDay : '[Кече саат] LT', + lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ичинде', + past : '%s мурун', + s : 'бирнече секунд', + m : 'бир мүнөт', + mm : '%d мүнөт', + h : 'бир саат', + hh : '%d саат', + d : 'бир күн', + dd : '%d күн', + M : 'бир ай', + MM : '%d ай', + y : 'бир жыл', + yy : '%d жыл' + }, + dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/, + ordinal : function (number) { + var a = number % 10, + b = number >= 100 ? 100 : null; + return number + (suffixes[number] || suffixes[a] || suffixes[b]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return ky; + +}))); + + +/***/ }), + +/***/ 1: +/***/ (function(module, exports) { + +/* (ignored) */ + +/***/ }), + +/***/ "1+vN": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Breton [br] +//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +function relativeTimeWithMutation(number, withoutSuffix, key) { + var format = { + 'mm': 'munutenn', + 'MM': 'miz', + 'dd': 'devezh' + }; + return number + ' ' + mutation(format[key], number); +} +function specialMutationForYears(number) { + switch (lastNumber(number)) { + case 1: + case 3: + case 4: + case 5: + case 9: + return number + ' bloaz'; + default: + return number + ' vloaz'; + } +} +function lastNumber(number) { + if (number > 9) { + return lastNumber(number % 10); + } + return number; +} +function mutation(text, number) { + if (number === 2) { + return softMutation(text); + } + return text; +} +function softMutation(text) { + var mutationTable = { + 'm': 'v', + 'b': 'v', + 'd': 'z' + }; + if (mutationTable[text.charAt(0)] === undefined) { + return text; + } + return mutationTable[text.charAt(0)] + text.substring(1); +} + +var br = moment.defineLocale('br', { + months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), + monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), + weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'), + weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), + weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'h[e]mm A', + LTS : 'h[e]mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D [a viz] MMMM YYYY', + LLL : 'D [a viz] MMMM YYYY h[e]mm A', + LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' + }, + calendar : { + sameDay : '[Hiziv da] LT', + nextDay : '[Warc\'hoazh da] LT', + nextWeek : 'dddd [da] LT', + lastDay : '[Dec\'h da] LT', + lastWeek : 'dddd [paset da] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'a-benn %s', + past : '%s \'zo', + s : 'un nebeud segondennoù', + m : 'ur vunutenn', + mm : relativeTimeWithMutation, + h : 'un eur', + hh : '%d eur', + d : 'un devezh', + dd : relativeTimeWithMutation, + M : 'ur miz', + MM : relativeTimeWithMutation, + y : 'ur bloaz', + yy : specialMutationForYears + }, + dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/, + ordinal : function (number) { + var output = (number === 1) ? 'añ' : 'vet'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return br; + +}))); + + +/***/ }), + +/***/ "183T": +/***/ (function(module, exports, __webpack_require__) { + +// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js +var Buffer = __webpack_require__("DLTi").Buffer +var BN = __webpack_require__("DoTB") +var EC = __webpack_require__("qve+").ec +var parseKeys = __webpack_require__("UjI3") +var curves = __webpack_require__("D380") + +function verify (sig, hash, key, signType, tag) { + var pub = parseKeys(key) + if (pub.type === 'ec') { + // rsa keys can be interpreted as ecdsa ones in openssl + if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type') + return ecVerify(sig, hash, pub) + } else if (pub.type === 'dsa') { + if (signType !== 'dsa') throw new Error('wrong public key type') + return dsaVerify(sig, hash, pub) + } else { + if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type') + } + hash = Buffer.concat([tag, hash]) + var len = pub.modulus.byteLength() + var pad = [1] + var padNum = 0 + while (hash.length + pad.length + 2 < len) { + pad.push(0xff) + padNum++ + } + pad.push(0x00) + var i = -1 + while (++i < hash.length) { + pad.push(hash[i]) + } + pad = Buffer.from(pad) + var red = BN.mont(pub.modulus) + sig = new BN(sig).toRed(red) + + sig = sig.redPow(new BN(pub.publicExponent)) + sig = Buffer.from(sig.fromRed().toArray()) + var out = padNum < 8 ? 1 : 0 + len = Math.min(sig.length, pad.length) + if (sig.length !== pad.length) out = 1 + + i = -1 + while (++i < len) out |= sig[i] ^ pad[i] + return out === 0 +} + +function ecVerify (sig, hash, pub) { + var curveId = curves[pub.data.algorithm.curve.join('.')] + if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.')) + + var curve = new EC(curveId) + var pubkey = pub.data.subjectPrivateKey.data + + return curve.verify(hash, sig, pubkey) +} + +function dsaVerify (sig, hash, pub) { + var p = pub.data.p + var q = pub.data.q + var g = pub.data.g + var y = pub.data.pub_key + var unpacked = parseKeys.signature.decode(sig, 'der') + var s = unpacked.s + var r = unpacked.r + checkValue(s, q) + checkValue(r, q) + var montp = BN.mont(p) + var w = s.invm(q) + var v = g.toRed(montp) + .redPow(new BN(hash).mul(w).mod(q)) + .fromRed() + .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed()) + .mod(p) + .mod(q) + return v.cmp(r) === 0 +} + +function checkValue (b, q) { + if (b.cmpn(0) <= 0) throw new Error('invalid sig') + if (b.cmp(q) >= q) throw new Error('invalid sig') +} + +module.exports = verify + + +/***/ }), + +/***/ "1J4X": +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a <style> tag + +// load the styles +var content = __webpack_require__("DllE"); +if(typeof content === 'string') content = [[module.i, content, '']]; +if(content.locals) module.exports = content.locals; +// add the styles to the DOM +var update = __webpack_require__("FIqI")("80106fe8", content, true, {}); + +/***/ }), + +/***/ "1uDJ": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Tetun Dili (East Timor) [tet] +//! author : Joshua Brooks : https://github.com/joshbrooks +//! author : Onorio De J. Afonso : https://github.com/marobo + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var tet = moment.defineLocale('tet', { + months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu'.split('_'), + weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sext_Sab'.split('_'), + weekdaysMin : 'Do_Seg_Te_Ku_Ki_Sex_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Ohin iha] LT', + nextDay: '[Aban iha] LT', + nextWeek: 'dddd [iha] LT', + lastDay: '[Horiseik iha] LT', + lastWeek: 'dddd [semana kotuk] [iha] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'iha %s', + past : '%s liuba', + s : 'minutu balun', + m : 'minutu ida', + mm : 'minutus %d', + h : 'horas ida', + hh : 'horas %d', + d : 'loron ida', + dd : 'loron %d', + M : 'fulan ida', + MM : 'fulan %d', + y : 'tinan ida', + yy : 'tinan %d' + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return tet; + +}))); + + +/***/ }), + +/***/ 2: +/***/ (function(module, exports) { + +/* (ignored) */ + +/***/ }), + +/***/ "2IbP": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Malay [ms] +//! author : Weldan Jamili : https://github.com/weldan + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var ms = moment.defineLocale('ms', { + months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), + monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|tengahari|petang|malam/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Esok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kelmarin pukul] LT', + lastWeek : 'dddd [lepas pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lepas', + s : 'beberapa saat', + m : 'seminit', + mm : '%d minit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return ms; + +}))); + + +/***/ }), + +/***/ "2Ml6": +/***/ (function(module, exports) { + +module.exports = "data:application/vnd.ms-fontobject;base64,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" + +/***/ }), + +/***/ "2SHD": +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__("qI9I"); + + +/***/ }), + +/***/ "2SrI": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Arabic [ar] +//! author : Abdel Said: https://github.com/abdelsaid +//! author : Ahmed Elkhatib +//! author : forabi https://github.com/forabi + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var symbolMap = { + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠' +}; +var numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0' +}; +var pluralForm = function (n) { + return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; +}; +var plurals = { + s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], + m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], + h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], + d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], + M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], + y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] +}; +var pluralize = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm(number), + str = plurals[u][pluralForm(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; +}; +var months = [ + 'كانون الثاني يناير', + 'شباط فبراير', + 'آذار مارس', + 'نيسان أبريل', + 'أيار مايو', + 'حزيران يونيو', + 'تموز يوليو', + 'آب أغسطس', + 'أيلول سبتمبر', + 'تشرين الأول أكتوبر', + 'تشرين الثاني نوفمبر', + 'كانون الأول ديسمبر' +]; + +var ar = moment.defineLocale('ar', { + months : months, + monthsShort : months, + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'D/\u200FM/\u200FYYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar : { + sameDay: '[اليوم عند الساعة] LT', + nextDay: '[غدًا عند الساعة] LT', + nextWeek: 'dddd [عند الساعة] LT', + lastDay: '[أمس عند الساعة] LT', + lastWeek: 'dddd [عند الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'بعد %s', + past : 'منذ %s', + s : pluralize('s'), + m : pluralize('m'), + mm : pluralize('m'), + h : pluralize('h'), + hh : pluralize('h'), + d : pluralize('d'), + dd : pluralize('d'), + M : pluralize('M'), + MM : pluralize('M'), + y : pluralize('y'), + yy : pluralize('y') + }, + preparse: function (string) { + return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }).replace(/,/g, '،'); + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +return ar; + +}))); + + +/***/ }), + +/***/ "2ZN/": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {var BN = __webpack_require__("DoTB") +var randomBytes = __webpack_require__("kyRq") + +function blind (priv) { + var r = getr(priv) + var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed() + return { blinder: blinder, unblinder: r.invm(priv.modulus) } +} + +function getr (priv) { + var len = priv.modulus.byteLength() + var r + do { + r = new BN(randomBytes(len)) + } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) + return r +} + +function crt (msg, priv) { + var blinds = blind(priv) + var len = priv.modulus.byteLength() + var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus) + var c1 = blinded.toRed(BN.mont(priv.prime1)) + var c2 = blinded.toRed(BN.mont(priv.prime2)) + var qinv = priv.coefficient + var p = priv.prime1 + var q = priv.prime2 + var m1 = c1.redPow(priv.exponent1).fromRed() + var m2 = c2.redPow(priv.exponent2).fromRed() + var h = m1.isub(m2).imul(qinv).umod(p).imul(q) + return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len) +} +crt.getr = getr + +module.exports = crt + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("NfRg").Buffer)) + +/***/ }), + +/***/ "2gOs": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var assert = __webpack_require__("tSXQ"); +var inherits = __webpack_require__("mwrz"); + +var utils = __webpack_require__("riO0"); +var Cipher = __webpack_require__("UZZ8"); + +function DESState() { + this.tmp = new Array(2); + this.keys = null; +} + +function DES(options) { + Cipher.call(this, options); + + var state = new DESState(); + this._desState = state; + + this.deriveKeys(state, options.key); +} +inherits(DES, Cipher); +module.exports = DES; + +DES.create = function create(options) { + return new DES(options); +}; + +var shiftTable = [ + 1, 1, 2, 2, 2, 2, 2, 2, + 1, 2, 2, 2, 2, 2, 2, 1 +]; + +DES.prototype.deriveKeys = function deriveKeys(state, key) { + state.keys = new Array(16 * 2); + + assert.equal(key.length, this.blockSize, 'Invalid key length'); + + var kL = utils.readUInt32BE(key, 0); + var kR = utils.readUInt32BE(key, 4); + + utils.pc1(kL, kR, state.tmp, 0); + kL = state.tmp[0]; + kR = state.tmp[1]; + for (var i = 0; i < state.keys.length; i += 2) { + var shift = shiftTable[i >>> 1]; + kL = utils.r28shl(kL, shift); + kR = utils.r28shl(kR, shift); + utils.pc2(kL, kR, state.keys, i); + } +}; + +DES.prototype._update = function _update(inp, inOff, out, outOff) { + var state = this._desState; + + var l = utils.readUInt32BE(inp, inOff); + var r = utils.readUInt32BE(inp, inOff + 4); + + // Initial Permutation + utils.ip(l, r, state.tmp, 0); + l = state.tmp[0]; + r = state.tmp[1]; + + if (this.type === 'encrypt') + this._encrypt(state, l, r, state.tmp, 0); + else + this._decrypt(state, l, r, state.tmp, 0); + + l = state.tmp[0]; + r = state.tmp[1]; + + utils.writeUInt32BE(out, l, outOff); + utils.writeUInt32BE(out, r, outOff + 4); +}; + +DES.prototype._pad = function _pad(buffer, off) { + var value = buffer.length - off; + for (var i = off; i < buffer.length; i++) + buffer[i] = value; + + return true; +}; + +DES.prototype._unpad = function _unpad(buffer) { + var pad = buffer[buffer.length - 1]; + for (var i = buffer.length - pad; i < buffer.length; i++) + assert.equal(buffer[i], pad); + + return buffer.slice(0, buffer.length - pad); +}; + +DES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) { + var l = lStart; + var r = rStart; + + // Apply f() x16 times + for (var i = 0; i < state.keys.length; i += 2) { + var keyL = state.keys[i]; + var keyR = state.keys[i + 1]; + + // f(r, k) + utils.expand(r, state.tmp, 0); + + keyL ^= state.tmp[0]; + keyR ^= state.tmp[1]; + var s = utils.substitute(keyL, keyR); + var f = utils.permute(s); + + var t = r; + r = (l ^ f) >>> 0; + l = t; + } + + // Reverse Initial Permutation + utils.rip(r, l, out, off); +}; + +DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) { + var l = rStart; + var r = lStart; + + // Apply f() x16 times + for (var i = state.keys.length - 2; i >= 0; i -= 2) { + var keyL = state.keys[i]; + var keyR = state.keys[i + 1]; + + // f(r, k) + utils.expand(l, state.tmp, 0); + + keyL ^= state.tmp[0]; + keyR ^= state.tmp[1]; + var s = utils.substitute(keyL, keyR); + var f = utils.permute(s); + + var t = l; + l = (r ^ f) >>> 0; + r = t; + } + + // Reverse Initial Permutation + utils.rip(l, r, out, off); +}; + + +/***/ }), + +/***/ "2z0l": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { + +var _Object$setPrototypeO; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var finished = __webpack_require__("h8TZ"); + +var kLastResolve = Symbol('lastResolve'); +var kLastReject = Symbol('lastReject'); +var kError = Symbol('error'); +var kEnded = Symbol('ended'); +var kLastPromise = Symbol('lastPromise'); +var kHandlePromise = Symbol('handlePromise'); +var kStream = Symbol('stream'); + +function createIterResult(value, done) { + return { + value: value, + done: done + }; +} + +function readAndResolve(iter) { + var resolve = iter[kLastResolve]; + + if (resolve !== null) { + var data = iter[kStream].read(); // we defer if data is null + // we can be expecting either 'end' or + // 'error' + + if (data !== null) { + iter[kLastPromise] = null; + iter[kLastResolve] = null; + iter[kLastReject] = null; + resolve(createIterResult(data, false)); + } + } +} + +function onReadable(iter) { + // we wait for the next tick, because it might + // emit an error with process.nextTick + process.nextTick(readAndResolve, iter); +} + +function wrapForNext(lastPromise, iter) { + return function (resolve, reject) { + lastPromise.then(function () { + if (iter[kEnded]) { + resolve(createIterResult(undefined, true)); + return; + } + + iter[kHandlePromise](resolve, reject); + }, reject); + }; +} + +var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); +var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { + get stream() { + return this[kStream]; + }, + + next: function next() { + var _this = this; + + // if we have detected an error in the meanwhile + // reject straight away + var error = this[kError]; + + if (error !== null) { + return Promise.reject(error); + } + + if (this[kEnded]) { + return Promise.resolve(createIterResult(undefined, true)); + } + + if (this[kStream].destroyed) { + // We need to defer via nextTick because if .destroy(err) is + // called, the error will be emitted via nextTick, and + // we cannot guarantee that there is no error lingering around + // waiting to be emitted. + return new Promise(function (resolve, reject) { + process.nextTick(function () { + if (_this[kError]) { + reject(_this[kError]); + } else { + resolve(createIterResult(undefined, true)); + } + }); + }); + } // if we have multiple next() calls + // we will wait for the previous Promise to finish + // this logic is optimized to support for await loops, + // where next() is only called once at a time + + + var lastPromise = this[kLastPromise]; + var promise; + + if (lastPromise) { + promise = new Promise(wrapForNext(lastPromise, this)); + } else { + // fast path needed to support multiple this.push() + // without triggering the next() queue + var data = this[kStream].read(); + + if (data !== null) { + return Promise.resolve(createIterResult(data, false)); + } + + promise = new Promise(this[kHandlePromise]); + } + + this[kLastPromise] = promise; + return promise; + } +}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { + return this; +}), _defineProperty(_Object$setPrototypeO, "return", function _return() { + var _this2 = this; + + // destroy(err, cb) is a private API + // we can guarantee we have that here, because we control the + // Readable class this is attached to + return new Promise(function (resolve, reject) { + _this2[kStream].destroy(null, function (err) { + if (err) { + reject(err); + return; + } + + resolve(createIterResult(undefined, true)); + }); + }); +}), _Object$setPrototypeO), AsyncIteratorPrototype); + +var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { + var _Object$create; + + var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { + value: stream, + writable: true + }), _defineProperty(_Object$create, kLastResolve, { + value: null, + writable: true + }), _defineProperty(_Object$create, kLastReject, { + value: null, + writable: true + }), _defineProperty(_Object$create, kError, { + value: null, + writable: true + }), _defineProperty(_Object$create, kEnded, { + value: stream._readableState.endEmitted, + writable: true + }), _defineProperty(_Object$create, kHandlePromise, { + value: function value(resolve, reject) { + var data = iterator[kStream].read(); + + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + }), _Object$create)); + iterator[kLastPromise] = null; + finished(stream, function (err) { + if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise + // returned by next() and store the error + + if (reject !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + reject(err); + } + + iterator[kError] = err; + return; + } + + var resolve = iterator[kLastResolve]; + + if (resolve !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(undefined, true)); + } + + iterator[kEnded] = true; + }); + stream.on('readable', onReadable.bind(null, iterator)); + return iterator; +}; + +module.exports = createReadableStreamAsyncIterator; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("V0EG"))) + +/***/ }), + +/***/ 3: +/***/ (function(module, exports) { + +/* (ignored) */ + +/***/ }), + +/***/ "37+g": +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__("y7x+"); + + +/***/ }), + +/***/ "3Ngr": +/***/ (function(module, exports) { + +module.exports = { + doubles: { + step: 4, + points: [ + [ + 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a', + 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821', + ], + [ + '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508', + '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf', + ], + [ + '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739', + 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695', + ], + [ + '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640', + '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9', + ], + [ + '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c', + '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36', + ], + [ + '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda', + '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f', + ], + [ + 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa', + '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999', + ], + [ + '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0', + 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09', + ], + [ + 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d', + '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d', + ], + [ + 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d', + 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088', + ], + [ + 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1', + '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d', + ], + [ + '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0', + '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8', + ], + [ + '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047', + '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a', + ], + [ + '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862', + '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453', + ], + [ + '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7', + '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160', + ], + [ + '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd', + '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0', + ], + [ + '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83', + '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6', + ], + [ + '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a', + '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589', + ], + [ + '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8', + 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17', + ], + [ + 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d', + '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda', + ], + [ + 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725', + '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd', + ], + [ + '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754', + '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2', + ], + [ + '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c', + '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6', + ], + [ + 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6', + '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f', + ], + [ + '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39', + 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01', + ], + [ + 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891', + '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3', + ], + [ + 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b', + 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f', + ], + [ + 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03', + '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7', + ], + [ + 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d', + 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78', + ], + [ + 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070', + '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1', + ], + [ + '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4', + 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150', + ], + [ + '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da', + '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82', + ], + [ + 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11', + '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc', + ], + [ + '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e', + 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b', + ], + [ + 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41', + '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51', + ], + [ + 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef', + '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45', + ], + [ + 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8', + 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120', + ], + [ + '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d', + '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84', + ], + [ + '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96', + '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d', + ], + [ + '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd', + 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d', + ], + [ + '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5', + '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8', + ], + [ + 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266', + '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8', + ], + [ + '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71', + '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac', + ], + [ + '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac', + 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f', + ], + [ + '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751', + '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962', + ], + [ + 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e', + '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907', + ], + [ + '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241', + 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec', + ], + [ + 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3', + 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d', + ], + [ + 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f', + '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414', + ], + [ + '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19', + 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd', + ], + [ + '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be', + 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0', + ], + [ + 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9', + '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811', + ], + [ + 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2', + '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1', + ], + [ + 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13', + '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c', + ], + [ + '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c', + 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73', + ], + [ + '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba', + '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd', + ], + [ + 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151', + 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405', + ], + [ + '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073', + 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589', + ], + [ + '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458', + '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e', + ], + [ + '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b', + '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27', + ], + [ + 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366', + 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1', + ], + [ + '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa', + '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482', + ], + [ + '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0', + '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945', + ], + [ + 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787', + '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573', + ], + [ + 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e', + 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82', + ], + ], + }, + naf: { + wnd: 7, + points: [ + [ + 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9', + '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672', + ], + [ + '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4', + 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6', + ], + [ + '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc', + '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da', + ], + [ + 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe', + 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37', + ], + [ + '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb', + 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b', + ], + [ + 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8', + 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81', + ], + [ + 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e', + '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58', + ], + [ + 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34', + '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77', + ], + [ + '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c', + '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a', + ], + [ + '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5', + '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c', + ], + [ + '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f', + '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67', + ], + [ + '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714', + '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402', + ], + [ + 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729', + 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55', + ], + [ + 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db', + '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482', + ], + [ + '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4', + 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82', + ], + [ + '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5', + 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396', + ], + [ + '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479', + '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49', + ], + [ + '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d', + '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf', + ], + [ + '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f', + '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a', + ], + [ + '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb', + 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7', + ], + [ + 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9', + 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933', + ], + [ + '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963', + '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a', + ], + [ + '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74', + '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6', + ], + [ + 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530', + 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37', + ], + [ + '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b', + '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e', + ], + [ + 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247', + 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6', + ], + [ + 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1', + 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476', + ], + [ + '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120', + '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40', + ], + [ + '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435', + '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61', + ], + [ + '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18', + '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683', + ], + [ + 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8', + '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5', + ], + [ + '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb', + '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b', + ], + [ + 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f', + '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417', + ], + [ + '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143', + 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868', + ], + [ + '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba', + 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a', + ], + [ + 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45', + 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6', + ], + [ + '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a', + '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996', + ], + [ + '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e', + 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e', + ], + [ + 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8', + 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d', + ], + [ + '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c', + '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2', + ], + [ + '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519', + 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e', + ], + [ + '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab', + '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437', + ], + [ + '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca', + 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311', + ], + [ + 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf', + '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4', + ], + [ + '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610', + '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575', + ], + [ + '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4', + 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d', + ], + [ + '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c', + 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d', + ], + [ + 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940', + 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629', + ], + [ + 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980', + 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06', + ], + [ + '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3', + '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374', + ], + [ + '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf', + '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee', + ], + [ + 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63', + '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1', + ], + [ + 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448', + 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b', + ], + [ + '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf', + '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661', + ], + [ + '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5', + '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6', + ], + [ + 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6', + '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e', + ], + [ + '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5', + '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d', + ], + [ + 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99', + 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc', + ], + [ + '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51', + 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4', + ], + [ + '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5', + '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c', + ], + [ + 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5', + '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b', + ], + [ + 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997', + '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913', + ], + [ + '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881', + '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154', + ], + [ + '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5', + '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865', + ], + [ + '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66', + 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc', + ], + [ + '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726', + 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224', + ], + [ + '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede', + '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e', + ], + [ + '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94', + '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6', + ], + [ + '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31', + '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511', + ], + [ + '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51', + 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b', + ], + [ + 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252', + 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2', + ], + [ + '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5', + 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c', + ], + [ + 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b', + '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3', + ], + [ + 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4', + '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d', + ], + [ + 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f', + '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700', + ], + [ + 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889', + '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4', + ], + [ + '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246', + 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196', + ], + [ + '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984', + '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4', + ], + [ + '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a', + 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257', + ], + [ + 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030', + 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13', + ], + [ + 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197', + '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096', + ], + [ + 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593', + 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38', + ], + [ + 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef', + '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f', + ], + [ + '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38', + '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448', + ], + [ + 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a', + '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a', + ], + [ + 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111', + '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4', + ], + [ + '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502', + '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437', + ], + [ + '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea', + 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7', + ], + [ + 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26', + '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d', + ], + [ + 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986', + '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a', + ], + [ + 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e', + '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54', + ], + [ + '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4', + '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77', + ], + [ + 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda', + 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517', + ], + [ + '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859', + 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10', + ], + [ + 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f', + 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125', + ], + [ + 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c', + '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e', + ], + [ + '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942', + 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1', + ], + [ + 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a', + '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2', + ], + [ + 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80', + '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423', + ], + [ + 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d', + '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8', + ], + [ + '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1', + 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758', + ], + [ + '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63', + 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375', + ], + [ + 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352', + '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d', + ], + [ + '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193', + 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec', + ], + [ + '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00', + '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0', + ], + [ + '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58', + 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c', + ], + [ + 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7', + 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4', + ], + [ + '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8', + 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f', + ], + [ + '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e', + '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649', + ], + [ + '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d', + 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826', + ], + [ + '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b', + '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5', + ], + [ + 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f', + 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87', + ], + [ + '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6', + '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b', + ], + [ + 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297', + '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc', + ], + [ + '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a', + '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c', + ], + [ + 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c', + 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f', + ], + [ + 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52', + '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a', + ], + [ + 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb', + 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46', + ], + [ + '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065', + 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f', + ], + [ + '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917', + '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03', + ], + [ + '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9', + 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08', + ], + [ + '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3', + '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8', + ], + [ + '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57', + '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373', + ], + [ + '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66', + 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3', + ], + [ + '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8', + '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8', + ], + [ + '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721', + '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1', + ], + [ + '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180', + '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9', + ], + ], + }, +}; + + +/***/ }), + +/***/ "3SLs": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Bengali [bn] +//! author : Kaushik Gandhi : https://github.com/kaushikgandhi + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var symbolMap = { + '1': '১', + '2': '২', + '3': '৩', + '4': '৪', + '5': '৫', + '6': '৬', + '7': '৭', + '8': '৮', + '9': '৯', + '0': '০' +}; +var numberMap = { + '১': '1', + '২': '2', + '৩': '3', + '৪': '4', + '৫': '5', + '৬': '6', + '৭': '7', + '৮': '8', + '৯': '9', + '০': '0' +}; + +var bn = moment.defineLocale('bn', { + months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), + monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'), + weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'), + weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), + weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'), + longDateFormat : { + LT : 'A h:mm সময়', + LTS : 'A h:mm:ss সময়', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm সময়', + LLLL : 'dddd, D MMMM YYYY, A h:mm সময়' + }, + calendar : { + sameDay : '[আজ] LT', + nextDay : '[আগামীকাল] LT', + nextWeek : 'dddd, LT', + lastDay : '[গতকাল] LT', + lastWeek : '[গত] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s পরে', + past : '%s আগে', + s : 'কয়েক সেকেন্ড', + m : 'এক মিনিট', + mm : '%d মিনিট', + h : 'এক ঘন্টা', + hh : '%d ঘন্টা', + d : 'এক দিন', + dd : '%d দিন', + M : 'এক মাস', + MM : '%d মাস', + y : 'এক বছর', + yy : '%d বছর' + }, + preparse: function (string) { + return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if ((meridiem === 'রাত' && hour >= 4) || + (meridiem === 'দুপুর' && hour < 5) || + meridiem === 'বিকাল') { + return hour + 12; + } else { + return hour; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'রাত'; + } else if (hour < 10) { + return 'সকাল'; + } else if (hour < 17) { + return 'দুপুর'; + } else if (hour < 20) { + return 'বিকাল'; + } else { + return 'রাত'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +return bn; + +}))); + + +/***/ }), + +/***/ "3TgZ": +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__("DLTi").Buffer + +function encryptByte (self, byteParam, decrypt) { + var pad + var i = -1 + var len = 8 + var out = 0 + var bit, value + while (++i < len) { + pad = self._cipher.encryptBlock(self._prev) + bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0 + value = pad[0] ^ bit + out += ((value & 0x80) >> (i % 8)) + self._prev = shiftIn(self._prev, decrypt ? bit : value) + } + return out +} + +function shiftIn (buffer, value) { + var len = buffer.length + var i = -1 + var out = Buffer.allocUnsafe(buffer.length) + buffer = Buffer.concat([buffer, Buffer.from([value])]) + + while (++i < len) { + out[i] = buffer[i] << 1 | buffer[i + 1] >> (7) + } + + return out +} + +exports.encrypt = function (self, chunk, decrypt) { + var len = chunk.length + var out = Buffer.allocUnsafe(len) + var i = -1 + + while (++i < len) { + out[i] = encryptByte(self, chunk[i], decrypt) + } + + return out +} + + +/***/ }), + +/***/ "3XBS": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const asn1 = exports; + +asn1.bignum = __webpack_require__("u/Wk"); + +asn1.define = __webpack_require__("WBsi").define; +asn1.base = __webpack_require__("iXrg"); +asn1.constants = __webpack_require__("Zanr"); +asn1.decoders = __webpack_require__("IhCH"); +asn1.encoders = __webpack_require__("J1E3"); + + +/***/ }), + +/***/ "3Zew": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.utils = __webpack_require__("riO0"); +exports.Cipher = __webpack_require__("UZZ8"); +exports.DES = __webpack_require__("2gOs"); +exports.CBC = __webpack_require__("w4dA"); +exports.EDE = __webpack_require__("3c8D"); + + +/***/ }), + +/***/ "3c8D": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var assert = __webpack_require__("tSXQ"); +var inherits = __webpack_require__("mwrz"); + +var Cipher = __webpack_require__("UZZ8"); +var DES = __webpack_require__("2gOs"); + +function EDEState(type, key) { + assert.equal(key.length, 24, 'Invalid key length'); + + var k1 = key.slice(0, 8); + var k2 = key.slice(8, 16); + var k3 = key.slice(16, 24); + + if (type === 'encrypt') { + this.ciphers = [ + DES.create({ type: 'encrypt', key: k1 }), + DES.create({ type: 'decrypt', key: k2 }), + DES.create({ type: 'encrypt', key: k3 }) + ]; + } else { + this.ciphers = [ + DES.create({ type: 'decrypt', key: k3 }), + DES.create({ type: 'encrypt', key: k2 }), + DES.create({ type: 'decrypt', key: k1 }) + ]; + } +} + +function EDE(options) { + Cipher.call(this, options); + + var state = new EDEState(this.type, this.options.key); + this._edeState = state; +} +inherits(EDE, Cipher); + +module.exports = EDE; + +EDE.create = function create(options) { + return new EDE(options); +}; + +EDE.prototype._update = function _update(inp, inOff, out, outOff) { + var state = this._edeState; + + state.ciphers[0]._update(inp, inOff, out, outOff); + state.ciphers[1]._update(out, outOff, out, outOff); + state.ciphers[2]._update(out, outOff, out, outOff); +}; + +EDE.prototype._pad = DES.prototype._pad; +EDE.prototype._unpad = DES.prototype._unpad; + + +/***/ }), + +/***/ 4: +/***/ (function(module, exports) { + +/* (ignored) */ + +/***/ }), + +/***/ "4/lZ": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var BN = __webpack_require__("u/Wk"); +var utils = __webpack_require__("UXd7"); +var assert = utils.assert; + +function KeyPair(ec, options) { + this.ec = ec; + this.priv = null; + this.pub = null; + + // KeyPair(ec, { priv: ..., pub: ... }) + if (options.priv) + this._importPrivate(options.priv, options.privEnc); + if (options.pub) + this._importPublic(options.pub, options.pubEnc); +} +module.exports = KeyPair; + +KeyPair.fromPublic = function fromPublic(ec, pub, enc) { + if (pub instanceof KeyPair) + return pub; + + return new KeyPair(ec, { + pub: pub, + pubEnc: enc, + }); +}; + +KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) { + if (priv instanceof KeyPair) + return priv; + + return new KeyPair(ec, { + priv: priv, + privEnc: enc, + }); +}; + +KeyPair.prototype.validate = function validate() { + var pub = this.getPublic(); + + if (pub.isInfinity()) + return { result: false, reason: 'Invalid public key' }; + if (!pub.validate()) + return { result: false, reason: 'Public key is not a point' }; + if (!pub.mul(this.ec.curve.n).isInfinity()) + return { result: false, reason: 'Public key * N != O' }; + + return { result: true, reason: null }; +}; + +KeyPair.prototype.getPublic = function getPublic(compact, enc) { + // compact is optional argument + if (typeof compact === 'string') { + enc = compact; + compact = null; + } + + if (!this.pub) + this.pub = this.ec.g.mul(this.priv); + + if (!enc) + return this.pub; + + return this.pub.encode(enc, compact); +}; + +KeyPair.prototype.getPrivate = function getPrivate(enc) { + if (enc === 'hex') + return this.priv.toString(16, 2); + else + return this.priv; +}; + +KeyPair.prototype._importPrivate = function _importPrivate(key, enc) { + this.priv = new BN(key, enc || 16); + + // Ensure that the priv won't be bigger than n, otherwise we may fail + // in fixed multiplication method + this.priv = this.priv.umod(this.ec.curve.n); +}; + +KeyPair.prototype._importPublic = function _importPublic(key, enc) { + if (key.x || key.y) { + // Montgomery points only have an `x` coordinate. + // Weierstrass/Edwards points on the other hand have both `x` and + // `y` coordinates. + if (this.ec.curve.type === 'mont') { + assert(key.x, 'Need x coordinate'); + } else if (this.ec.curve.type === 'short' || + this.ec.curve.type === 'edwards') { + assert(key.x && key.y, 'Need both x and y coordinate'); + } + this.pub = this.ec.curve.point(key.x, key.y); + return; + } + this.pub = this.ec.curve.decodePoint(key, enc); +}; + +// ECDH +KeyPair.prototype.derive = function derive(pub) { + if(!pub.validate()) { + assert(pub.validate(), 'public point not validated'); + } + return pub.mul(this.priv).getX(); +}; + +// ECDSA +KeyPair.prototype.sign = function sign(msg, enc, options) { + return this.ec.sign(msg, this, enc, options); +}; + +KeyPair.prototype.verify = function verify(msg, signature) { + return this.ec.verify(msg, signature, this); +}; + +KeyPair.prototype.inspect = function inspect() { + return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) + + ' pub: ' + (this.pub && this.pub.inspect()) + ' >'; +}; + + +/***/ }), + +/***/ "46Yf": +/***/ (function(module, exports) { + +/* globals __VUE_SSR_CONTEXT__ */ + +// IMPORTANT: Do NOT use ES2015 features in this file. +// This module is a runtime utility for cleaner component module output and will +// be included in the final webpack user bundle. + +module.exports = function normalizeComponent ( + rawScriptExports, + compiledTemplate, + functionalTemplate, + injectStyles, + scopeId, + moduleIdentifier /* server only */ +) { + var esModule + var scriptExports = rawScriptExports = rawScriptExports || {} + + // ES6 modules interop + var type = typeof rawScriptExports.default + if (type === 'object' || type === 'function') { + esModule = rawScriptExports + scriptExports = rawScriptExports.default + } + + // Vue.extend constructor export interop + var options = typeof scriptExports === 'function' + ? scriptExports.options + : scriptExports + + // render functions + if (compiledTemplate) { + options.render = compiledTemplate.render + options.staticRenderFns = compiledTemplate.staticRenderFns + options._compiled = true + } + + // functional template + if (functionalTemplate) { + options.functional = true + } + + // scopedId + if (scopeId) { + options._scopeId = scopeId + } + + var hook + if (moduleIdentifier) { // server build + hook = function (context) { + // 2.3 injection + context = + context || // cached call + (this.$vnode && this.$vnode.ssrContext) || // stateful + (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional + // 2.2 with runInNewContext: true + if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { + context = __VUE_SSR_CONTEXT__ + } + // inject component styles + if (injectStyles) { + injectStyles.call(this, context) + } + // register component module identifier for async chunk inferrence + if (context && context._registeredComponents) { + context._registeredComponents.add(moduleIdentifier) + } + } + // used by ssr in case component is cached and beforeCreate + // never gets called + options._ssrRegister = hook + } else if (injectStyles) { + hook = injectStyles + } + + if (hook) { + var functional = options.functional + var existing = functional + ? options.render + : options.beforeCreate + + if (!functional) { + // inject component registration as beforeCreate hook + options.beforeCreate = existing + ? [].concat(existing, hook) + : [hook] + } else { + // for template-only hot-reload because in that case the render fn doesn't + // go through the normalizer + options._injectStyles = hook + // register for functioal component in vue file + options.render = function renderWithStyleInjection (h, context) { + hook.call(context) + return existing(h, context) + } + } + } + + return { + esModule: esModule, + exports: scriptExports, + options: options + } +} + + +/***/ }), + +/***/ "4P1X": +/***/ (function(module, exports, __webpack_require__) { + +var modeModules = { + ECB: __webpack_require__("99pL"), + CBC: __webpack_require__("YQM0"), + CFB: __webpack_require__("BuFl"), + CFB8: __webpack_require__("jBRl"), + CFB1: __webpack_require__("3TgZ"), + OFB: __webpack_require__("evnR"), + CTR: __webpack_require__("V61e"), + GCM: __webpack_require__("V61e") +} + +var modes = __webpack_require__("gCvn") + +for (var key in modes) { + modes[key].module = modeModules[modes[key].mode] +} + +module.exports = modes + + +/***/ }), + +/***/ "4SnW": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Serbian [sr] +//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var translator = { + words: { //Different grammatical cases + m: ['jedan minut', 'jedne minute'], + mm: ['minut', 'minute', 'minuta'], + h: ['jedan sat', 'jednog sata'], + hh: ['sat', 'sata', 'sati'], + dd: ['dan', 'dana', 'dana'], + MM: ['mesec', 'meseca', 'meseci'], + yy: ['godina', 'godine', 'godina'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + translator.correctGrammaticalCase(number, wordKey); + } + } +}; + +var sr = moment.defineLocale('sr', { + months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), + monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), + monthsParseExact: true, + weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'), + weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact : true, + longDateFormat: { + LT: 'H:mm', + LTS : 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sutra u] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[u] [nedelju] [u] LT'; + case 3: + return '[u] [sredu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[juče u] LT', + lastWeek : function () { + var lastWeekDays = [ + '[prošle] [nedelje] [u] LT', + '[prošlog] [ponedeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'pre %s', + s : 'nekoliko sekundi', + m : translator.translate, + mm : translator.translate, + h : translator.translate, + hh : translator.translate, + d : 'dan', + dd : translator.translate, + M : 'mesec', + MM : translator.translate, + y : 'godinu', + yy : translator.translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return sr; + +}))); + + +/***/ }), + +/***/ "4aDo": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Belarusian [be] +//! author : Dmitry Demidov : https://github.com/demidov91 +//! author: Praleska: http://praleska.pro/ +//! Author : Menelion Elensúle : https://github.com/Oire + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); +} +function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', + 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', + 'dd': 'дзень_дні_дзён', + 'MM': 'месяц_месяцы_месяцаў', + 'yy': 'год_гады_гадоў' + }; + if (key === 'm') { + return withoutSuffix ? 'хвіліна' : 'хвіліну'; + } + else if (key === 'h') { + return withoutSuffix ? 'гадзіна' : 'гадзіну'; + } + else { + return number + ' ' + plural(format[key], +number); + } +} + +var be = moment.defineLocale('be', { + months : { + format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'), + standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_') + }, + monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), + weekdays : { + format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'), + standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), + isFormat: /\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/ + }, + weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY г.', + LLL : 'D MMMM YYYY г., HH:mm', + LLLL : 'dddd, D MMMM YYYY г., HH:mm' + }, + calendar : { + sameDay: '[Сёння ў] LT', + nextDay: '[Заўтра ў] LT', + lastDay: '[Учора ў] LT', + nextWeek: function () { + return '[У] dddd [ў] LT'; + }, + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return '[У мінулую] dddd [ў] LT'; + case 1: + case 2: + case 4: + return '[У мінулы] dddd [ў] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'праз %s', + past : '%s таму', + s : 'некалькі секунд', + m : relativeTimeWithPlural, + mm : relativeTimeWithPlural, + h : relativeTimeWithPlural, + hh : relativeTimeWithPlural, + d : 'дзень', + dd : relativeTimeWithPlural, + M : 'месяц', + MM : relativeTimeWithPlural, + y : 'год', + yy : relativeTimeWithPlural + }, + meridiemParse: /ночы|раніцы|дня|вечара/, + isPM : function (input) { + return /^(дня|вечара)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночы'; + } else if (hour < 12) { + return 'раніцы'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечара'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; + case 'D': + return number + '-га'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return be; + +}))); + + +/***/ }), + +/***/ "4mOe": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + + +module.exports = Transform; + +var _require$codes = __webpack_require__("DzCi").codes, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, + ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; + +var Duplex = __webpack_require__("4zZu"); + +__webpack_require__("mwrz")(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + var cb = ts.writecb; + + if (cb === null) { + return this.emit('error', new ERR_MULTIPLE_CALLBACK()); + } + + ts.writechunk = null; + ts.writecb = null; + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + cb(er); + var rs = this._readableState; + rs.reading = false; + + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + Duplex.call(this, options); + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; // start out asking for a readable event once data is transformed. + + this._readableState.needReadable = true; // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + if (typeof options.flush === 'function') this._flush = options.flush; + } // When the writable side finishes, then flush out anything remaining. + + + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function' && !this._readableState.destroyed) { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; // This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. + + +Transform.prototype._transform = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; // Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. + + +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && !ts.transforming) { + ts.transforming = true; + + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); // TODO(BridgeAR): Write a test for these two error cases + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + + if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); + if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); + return stream.push(null); +} + +/***/ }), + +/***/ "4zZu": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + +/*<replacement>*/ + +var objectKeys = Object.keys || function (obj) { + var keys = []; + + for (var key in obj) { + keys.push(key); + } + + return keys; +}; +/*</replacement>*/ + + +module.exports = Duplex; + +var Readable = __webpack_require__("y+MR"); + +var Writable = __webpack_require__("BMRL"); + +__webpack_require__("mwrz")(Duplex, Readable); + +{ + // Allow the keys array to be GC'ed. + var keys = objectKeys(Writable.prototype); + + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + Readable.call(this, options); + Writable.call(this, options); + this.allowHalfOpen = true; + + if (options) { + if (options.readable === false) this.readable = false; + if (options.writable === false) this.writable = false; + + if (options.allowHalfOpen === false) { + this.allowHalfOpen = false; + this.once('end', onend); + } + } +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); +Object.defineProperty(Duplex.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); +Object.defineProperty(Duplex.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); // the no-half-open enforcer + +function onend() { + // If the writable side ended, then we're ok. + if (this._writableState.ended) return; // no more data can be written. + // But allow more writes to happen in this tick. + + process.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("V0EG"))) + +/***/ }), + +/***/ 5: +/***/ (function(module, exports) { + +/* (ignored) */ + +/***/ }), + +/***/ "5K7w": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Arabic (Algeria) [ar-dz] +//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var arDz = moment.defineLocale('ar-dz', { + months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'في %s', + past : 'منذ %s', + s : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 4 // The week that contains Jan 1st is the first week of the year. + } +}); + +return arDz; + +}))); + + +/***/ }), + +/***/ "5RIO": +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + + +/***/ }), + +/***/ "5p4y": +/***/ (function(module, exports) { + +/** + * Translates the list format produced by css-loader into something + * easier to manipulate. + */ +module.exports = function listToStyles (parentId, list) { + var styles = [] + var newStyles = {} + for (var i = 0; i < list.length; i++) { + var item = list[i] + var id = item[0] + var css = item[1] + var media = item[2] + var sourceMap = item[3] + var part = { + id: parentId + ':' + i, + css: css, + media: media, + sourceMap: sourceMap + } + if (!newStyles[id]) { + styles.push(newStyles[id] = { id: id, parts: [part] }) + } else { + newStyles[id].parts.push(part) + } + } + return styles +} + + +/***/ }), + +/***/ "5qzm": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Tibetan [bo] +//! author : Thupten N. Chakrishar : https://github.com/vajradog + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var symbolMap = { + '1': '༡', + '2': '༢', + '3': '༣', + '4': '༤', + '5': '༥', + '6': '༦', + '7': '༧', + '8': '༨', + '9': '༩', + '0': '༠' +}; +var numberMap = { + '༡': '1', + '༢': '2', + '༣': '3', + '༤': '4', + '༥': '5', + '༦': '6', + '༧': '7', + '༨': '8', + '༩': '9', + '༠': '0' +}; + +var bo = moment.defineLocale('bo', { + months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), + monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), + weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), + weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), + weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), + longDateFormat : { + LT : 'A h:mm', + LTS : 'A h:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm', + LLLL : 'dddd, D MMMM YYYY, A h:mm' + }, + calendar : { + sameDay : '[དི་རིང] LT', + nextDay : '[སང་ཉིན] LT', + nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT', + lastDay : '[ཁ་སང] LT', + lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ལ་', + past : '%s སྔན་ལ', + s : 'ལམ་སང', + m : 'སྐར་མ་གཅིག', + mm : '%d སྐར་མ', + h : 'ཆུ་ཚོད་གཅིག', + hh : '%d ཆུ་ཚོད', + d : 'ཉིན་གཅིག', + dd : '%d ཉིན་', + M : 'ཟླ་བ་གཅིག', + MM : '%d ཟླ་བ', + y : 'ལོ་གཅིག', + yy : '%d ལོ' + }, + preparse: function (string) { + return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if ((meridiem === 'མཚན་མོ' && hour >= 4) || + (meridiem === 'ཉིན་གུང' && hour < 5) || + meridiem === 'དགོང་དག') { + return hour + 12; + } else { + return hour; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'མཚན་མོ'; + } else if (hour < 10) { + return 'ཞོགས་ཀས'; + } else if (hour < 17) { + return 'ཉིན་གུང'; + } else if (hour < 20) { + return 'དགོང་དག'; + } else { + return 'མཚན་མོ'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +return bo; + +}))); + + +/***/ }), + +/***/ "5wIR": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Russian [ru] +//! author : Viktorminator : https://github.com/Viktorminator +//! Author : Menelion Elensúle : https://github.com/Oire +//! author : Коренберг Марк : https://github.com/socketpair + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); +} +function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', + 'hh': 'час_часа_часов', + 'dd': 'день_дня_дней', + 'MM': 'месяц_месяца_месяцев', + 'yy': 'год_года_лет' + }; + if (key === 'm') { + return withoutSuffix ? 'минута' : 'минуту'; + } + else { + return number + ' ' + plural(format[key], +number); + } +} +var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i]; + +// http://new.gramota.ru/spravka/rules/139-prop : § 103 +// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 +// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 +var ru = moment.defineLocale('ru', { + months : { + format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'), + standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_') + }, + monthsShort : { + // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ? + format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'), + standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_') + }, + weekdays : { + standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), + format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'), + isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/ + }, + weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + monthsParse : monthsParse, + longMonthsParse : monthsParse, + shortMonthsParse : monthsParse, + + // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки + monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, + + // копия предыдущего + monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, + + // полные названия с падежами + monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i, + + // Выражение, которое соотвествует только сокращённым формам + monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY г.', + LLL : 'D MMMM YYYY г., HH:mm', + LLLL : 'dddd, D MMMM YYYY г., HH:mm' + }, + calendar : { + sameDay: '[Сегодня в] LT', + nextDay: '[Завтра в] LT', + lastDay: '[Вчера в] LT', + nextWeek: function (now) { + if (now.week() !== this.week()) { + switch (this.day()) { + case 0: + return '[В следующее] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В следующий] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В следующую] dddd [в] LT'; + } + } else { + if (this.day() === 2) { + return '[Во] dddd [в] LT'; + } else { + return '[В] dddd [в] LT'; + } + } + }, + lastWeek: function (now) { + if (now.week() !== this.week()) { + switch (this.day()) { + case 0: + return '[В прошлое] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В прошлый] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В прошлую] dddd [в] LT'; + } + } else { + if (this.day() === 2) { + return '[Во] dddd [в] LT'; + } else { + return '[В] dddd [в] LT'; + } + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'через %s', + past : '%s назад', + s : 'несколько секунд', + m : relativeTimeWithPlural, + mm : relativeTimeWithPlural, + h : 'час', + hh : relativeTimeWithPlural, + d : 'день', + dd : relativeTimeWithPlural, + M : 'месяц', + MM : relativeTimeWithPlural, + y : 'год', + yy : relativeTimeWithPlural + }, + meridiemParse: /ночи|утра|дня|вечера/i, + isPM : function (input) { + return /^(дня|вечера)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночи'; + } else if (hour < 12) { + return 'утра'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечера'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + return number + '-й'; + case 'D': + return number + '-го'; + case 'w': + case 'W': + return number + '-я'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return ru; + +}))); + + +/***/ }), + +/***/ "5zLF": +/***/ (function(module, exports) { + +function incr32 (iv) { + var len = iv.length + var item + while (len--) { + item = iv.readUInt8(len) + if (item === 255) { + iv.writeUInt8(0, len) + } else { + item++ + iv.writeUInt8(item, len) + break + } + } +} +module.exports = incr32 + + +/***/ }), + +/***/ 6: +/***/ (function(module, exports) { + +/* (ignored) */ + +/***/ }), + +/***/ "685M": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Arabic (Kuwait) [ar-kw] +//! author : Nusret Parlak: https://github.com/nusretparlak + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var arKw = moment.defineLocale('ar-kw', { + months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'في %s', + past : 'منذ %s', + s : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +return arKw; + +}))); + + +/***/ }), + +/***/ "6BOp": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Reporter = __webpack_require__("WXsb").Reporter; +const EncoderBuffer = __webpack_require__("cKvS").EncoderBuffer; +const DecoderBuffer = __webpack_require__("cKvS").DecoderBuffer; +const assert = __webpack_require__("tSXQ"); + +// Supported tags +const tags = [ + 'seq', 'seqof', 'set', 'setof', 'objid', 'bool', + 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc', + 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str', + 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr' +]; + +// Public methods list +const methods = [ + 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice', + 'any', 'contains' +].concat(tags); + +// Overrided methods list +const overrided = [ + '_peekTag', '_decodeTag', '_use', + '_decodeStr', '_decodeObjid', '_decodeTime', + '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList', + + '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime', + '_encodeNull', '_encodeInt', '_encodeBool' +]; + +function Node(enc, parent, name) { + const state = {}; + this._baseState = state; + + state.name = name; + state.enc = enc; + + state.parent = parent || null; + state.children = null; + + // State + state.tag = null; + state.args = null; + state.reverseArgs = null; + state.choice = null; + state.optional = false; + state.any = false; + state.obj = false; + state.use = null; + state.useDecoder = null; + state.key = null; + state['default'] = null; + state.explicit = null; + state.implicit = null; + state.contains = null; + + // Should create new instance on each method + if (!state.parent) { + state.children = []; + this._wrap(); + } +} +module.exports = Node; + +const stateProps = [ + 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice', + 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit', + 'implicit', 'contains' +]; + +Node.prototype.clone = function clone() { + const state = this._baseState; + const cstate = {}; + stateProps.forEach(function(prop) { + cstate[prop] = state[prop]; + }); + const res = new this.constructor(cstate.parent); + res._baseState = cstate; + return res; +}; + +Node.prototype._wrap = function wrap() { + const state = this._baseState; + methods.forEach(function(method) { + this[method] = function _wrappedMethod() { + const clone = new this.constructor(this); + state.children.push(clone); + return clone[method].apply(clone, arguments); + }; + }, this); +}; + +Node.prototype._init = function init(body) { + const state = this._baseState; + + assert(state.parent === null); + body.call(this); + + // Filter children + state.children = state.children.filter(function(child) { + return child._baseState.parent === this; + }, this); + assert.equal(state.children.length, 1, 'Root node can have only one child'); +}; + +Node.prototype._useArgs = function useArgs(args) { + const state = this._baseState; + + // Filter children and args + const children = args.filter(function(arg) { + return arg instanceof this.constructor; + }, this); + args = args.filter(function(arg) { + return !(arg instanceof this.constructor); + }, this); + + if (children.length !== 0) { + assert(state.children === null); + state.children = children; + + // Replace parent to maintain backward link + children.forEach(function(child) { + child._baseState.parent = this; + }, this); + } + if (args.length !== 0) { + assert(state.args === null); + state.args = args; + state.reverseArgs = args.map(function(arg) { + if (typeof arg !== 'object' || arg.constructor !== Object) + return arg; + + const res = {}; + Object.keys(arg).forEach(function(key) { + if (key == (key | 0)) + key |= 0; + const value = arg[key]; + res[value] = key; + }); + return res; + }); + } +}; + +// +// Overrided methods +// + +overrided.forEach(function(method) { + Node.prototype[method] = function _overrided() { + const state = this._baseState; + throw new Error(method + ' not implemented for encoding: ' + state.enc); + }; +}); + +// +// Public methods +// + +tags.forEach(function(tag) { + Node.prototype[tag] = function _tagMethod() { + const state = this._baseState; + const args = Array.prototype.slice.call(arguments); + + assert(state.tag === null); + state.tag = tag; + + this._useArgs(args); + + return this; + }; +}); + +Node.prototype.use = function use(item) { + assert(item); + const state = this._baseState; + + assert(state.use === null); + state.use = item; + + return this; +}; + +Node.prototype.optional = function optional() { + const state = this._baseState; + + state.optional = true; + + return this; +}; + +Node.prototype.def = function def(val) { + const state = this._baseState; + + assert(state['default'] === null); + state['default'] = val; + state.optional = true; + + return this; +}; + +Node.prototype.explicit = function explicit(num) { + const state = this._baseState; + + assert(state.explicit === null && state.implicit === null); + state.explicit = num; + + return this; +}; + +Node.prototype.implicit = function implicit(num) { + const state = this._baseState; + + assert(state.explicit === null && state.implicit === null); + state.implicit = num; + + return this; +}; + +Node.prototype.obj = function obj() { + const state = this._baseState; + const args = Array.prototype.slice.call(arguments); + + state.obj = true; + + if (args.length !== 0) + this._useArgs(args); + + return this; +}; + +Node.prototype.key = function key(newKey) { + const state = this._baseState; + + assert(state.key === null); + state.key = newKey; + + return this; +}; + +Node.prototype.any = function any() { + const state = this._baseState; + + state.any = true; + + return this; +}; + +Node.prototype.choice = function choice(obj) { + const state = this._baseState; + + assert(state.choice === null); + state.choice = obj; + this._useArgs(Object.keys(obj).map(function(key) { + return obj[key]; + })); + + return this; +}; + +Node.prototype.contains = function contains(item) { + const state = this._baseState; + + assert(state.use === null); + state.contains = item; + + return this; +}; + +// +// Decoding +// + +Node.prototype._decode = function decode(input, options) { + const state = this._baseState; + + // Decode root node + if (state.parent === null) + return input.wrapResult(state.children[0]._decode(input, options)); + + let result = state['default']; + let present = true; + + let prevKey = null; + if (state.key !== null) + prevKey = input.enterKey(state.key); + + // Check if tag is there + if (state.optional) { + let tag = null; + if (state.explicit !== null) + tag = state.explicit; + else if (state.implicit !== null) + tag = state.implicit; + else if (state.tag !== null) + tag = state.tag; + + if (tag === null && !state.any) { + // Trial and Error + const save = input.save(); + try { + if (state.choice === null) + this._decodeGeneric(state.tag, input, options); + else + this._decodeChoice(input, options); + present = true; + } catch (e) { + present = false; + } + input.restore(save); + } else { + present = this._peekTag(input, tag, state.any); + + if (input.isError(present)) + return present; + } + } + + // Push object on stack + let prevObj; + if (state.obj && present) + prevObj = input.enterObject(); + + if (present) { + // Unwrap explicit values + if (state.explicit !== null) { + const explicit = this._decodeTag(input, state.explicit); + if (input.isError(explicit)) + return explicit; + input = explicit; + } + + const start = input.offset; + + // Unwrap implicit and normal values + if (state.use === null && state.choice === null) { + let save; + if (state.any) + save = input.save(); + const body = this._decodeTag( + input, + state.implicit !== null ? state.implicit : state.tag, + state.any + ); + if (input.isError(body)) + return body; + + if (state.any) + result = input.raw(save); + else + input = body; + } + + if (options && options.track && state.tag !== null) + options.track(input.path(), start, input.length, 'tagged'); + + if (options && options.track && state.tag !== null) + options.track(input.path(), input.offset, input.length, 'content'); + + // Select proper method for tag + if (state.any) { + // no-op + } else if (state.choice === null) { + result = this._decodeGeneric(state.tag, input, options); + } else { + result = this._decodeChoice(input, options); + } + + if (input.isError(result)) + return result; + + // Decode children + if (!state.any && state.choice === null && state.children !== null) { + state.children.forEach(function decodeChildren(child) { + // NOTE: We are ignoring errors here, to let parser continue with other + // parts of encoded data + child._decode(input, options); + }); + } + + // Decode contained/encoded by schema, only in bit or octet strings + if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) { + const data = new DecoderBuffer(result); + result = this._getUse(state.contains, input._reporterState.obj) + ._decode(data, options); + } + } + + // Pop object + if (state.obj && present) + result = input.leaveObject(prevObj); + + // Set key + if (state.key !== null && (result !== null || present === true)) + input.leaveKey(prevKey, state.key, result); + else if (prevKey !== null) + input.exitKey(prevKey); + + return result; +}; + +Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) { + const state = this._baseState; + + if (tag === 'seq' || tag === 'set') + return null; + if (tag === 'seqof' || tag === 'setof') + return this._decodeList(input, tag, state.args[0], options); + else if (/str$/.test(tag)) + return this._decodeStr(input, tag, options); + else if (tag === 'objid' && state.args) + return this._decodeObjid(input, state.args[0], state.args[1], options); + else if (tag === 'objid') + return this._decodeObjid(input, null, null, options); + else if (tag === 'gentime' || tag === 'utctime') + return this._decodeTime(input, tag, options); + else if (tag === 'null_') + return this._decodeNull(input, options); + else if (tag === 'bool') + return this._decodeBool(input, options); + else if (tag === 'objDesc') + return this._decodeStr(input, tag, options); + else if (tag === 'int' || tag === 'enum') + return this._decodeInt(input, state.args && state.args[0], options); + + if (state.use !== null) { + return this._getUse(state.use, input._reporterState.obj) + ._decode(input, options); + } else { + return input.error('unknown tag: ' + tag); + } +}; + +Node.prototype._getUse = function _getUse(entity, obj) { + + const state = this._baseState; + // Create altered use decoder if implicit is set + state.useDecoder = this._use(entity, obj); + assert(state.useDecoder._baseState.parent === null); + state.useDecoder = state.useDecoder._baseState.children[0]; + if (state.implicit !== state.useDecoder._baseState.implicit) { + state.useDecoder = state.useDecoder.clone(); + state.useDecoder._baseState.implicit = state.implicit; + } + return state.useDecoder; +}; + +Node.prototype._decodeChoice = function decodeChoice(input, options) { + const state = this._baseState; + let result = null; + let match = false; + + Object.keys(state.choice).some(function(key) { + const save = input.save(); + const node = state.choice[key]; + try { + const value = node._decode(input, options); + if (input.isError(value)) + return false; + + result = { type: key, value: value }; + match = true; + } catch (e) { + input.restore(save); + return false; + } + return true; + }, this); + + if (!match) + return input.error('Choice not matched'); + + return result; +}; + +// +// Encoding +// + +Node.prototype._createEncoderBuffer = function createEncoderBuffer(data) { + return new EncoderBuffer(data, this.reporter); +}; + +Node.prototype._encode = function encode(data, reporter, parent) { + const state = this._baseState; + if (state['default'] !== null && state['default'] === data) + return; + + const result = this._encodeValue(data, reporter, parent); + if (result === undefined) + return; + + if (this._skipDefault(result, reporter, parent)) + return; + + return result; +}; + +Node.prototype._encodeValue = function encode(data, reporter, parent) { + const state = this._baseState; + + // Decode root node + if (state.parent === null) + return state.children[0]._encode(data, reporter || new Reporter()); + + let result = null; + + // Set reporter to share it with a child class + this.reporter = reporter; + + // Check if data is there + if (state.optional && data === undefined) { + if (state['default'] !== null) + data = state['default']; + else + return; + } + + // Encode children first + let content = null; + let primitive = false; + if (state.any) { + // Anything that was given is translated to buffer + result = this._createEncoderBuffer(data); + } else if (state.choice) { + result = this._encodeChoice(data, reporter); + } else if (state.contains) { + content = this._getUse(state.contains, parent)._encode(data, reporter); + primitive = true; + } else if (state.children) { + content = state.children.map(function(child) { + if (child._baseState.tag === 'null_') + return child._encode(null, reporter, data); + + if (child._baseState.key === null) + return reporter.error('Child should have a key'); + const prevKey = reporter.enterKey(child._baseState.key); + + if (typeof data !== 'object') + return reporter.error('Child expected, but input is not object'); + + const res = child._encode(data[child._baseState.key], reporter, data); + reporter.leaveKey(prevKey); + + return res; + }, this).filter(function(child) { + return child; + }); + content = this._createEncoderBuffer(content); + } else { + if (state.tag === 'seqof' || state.tag === 'setof') { + // TODO(indutny): this should be thrown on DSL level + if (!(state.args && state.args.length === 1)) + return reporter.error('Too many args for : ' + state.tag); + + if (!Array.isArray(data)) + return reporter.error('seqof/setof, but data is not Array'); + + const child = this.clone(); + child._baseState.implicit = null; + content = this._createEncoderBuffer(data.map(function(item) { + const state = this._baseState; + + return this._getUse(state.args[0], data)._encode(item, reporter); + }, child)); + } else if (state.use !== null) { + result = this._getUse(state.use, parent)._encode(data, reporter); + } else { + content = this._encodePrimitive(state.tag, data); + primitive = true; + } + } + + // Encode data itself + if (!state.any && state.choice === null) { + const tag = state.implicit !== null ? state.implicit : state.tag; + const cls = state.implicit === null ? 'universal' : 'context'; + + if (tag === null) { + if (state.use === null) + reporter.error('Tag could be omitted only for .use()'); + } else { + if (state.use === null) + result = this._encodeComposite(tag, primitive, cls, content); + } + } + + // Wrap in explicit + if (state.explicit !== null) + result = this._encodeComposite(state.explicit, false, 'context', result); + + return result; +}; + +Node.prototype._encodeChoice = function encodeChoice(data, reporter) { + const state = this._baseState; + + const node = state.choice[data.type]; + if (!node) { + assert( + false, + data.type + ' not found in ' + + JSON.stringify(Object.keys(state.choice))); + } + return node._encode(data.value, reporter); +}; + +Node.prototype._encodePrimitive = function encodePrimitive(tag, data) { + const state = this._baseState; + + if (/str$/.test(tag)) + return this._encodeStr(data, tag); + else if (tag === 'objid' && state.args) + return this._encodeObjid(data, state.reverseArgs[0], state.args[1]); + else if (tag === 'objid') + return this._encodeObjid(data, null, null); + else if (tag === 'gentime' || tag === 'utctime') + return this._encodeTime(data, tag); + else if (tag === 'null_') + return this._encodeNull(); + else if (tag === 'int' || tag === 'enum') + return this._encodeInt(data, state.args && state.reverseArgs[0]); + else if (tag === 'bool') + return this._encodeBool(data); + else if (tag === 'objDesc') + return this._encodeStr(data, tag); + else + throw new Error('Unsupported tag: ' + tag); +}; + +Node.prototype._isNumstr = function isNumstr(str) { + return /^[0-9 ]*$/.test(str); +}; + +Node.prototype._isPrintstr = function isPrintstr(str) { + return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str); +}; + + +/***/ }), + +/***/ "6Dfl": +/***/ (function(module, exports) { + +module.exports = function () { + throw new Error('Readable.from is not available in the browser') +}; + + +/***/ }), + +/***/ "6Xwq": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Romanian [ro] +//! author : Vlad Gurdiga : https://github.com/gurdiga +//! author : Valentin Agachi : https://github.com/avaly + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'minute', + 'hh': 'ore', + 'dd': 'zile', + 'MM': 'luni', + 'yy': 'ani' + }, + separator = ' '; + if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { + separator = ' de '; + } + return number + separator + format[key]; +} + +var ro = moment.defineLocale('ro', { + months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), + monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), + monthsParseExact: true, + weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), + weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), + weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' + }, + calendar : { + sameDay: '[azi la] LT', + nextDay: '[mâine la] LT', + nextWeek: 'dddd [la] LT', + lastDay: '[ieri la] LT', + lastWeek: '[fosta] dddd [la] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'peste %s', + past : '%s în urmă', + s : 'câteva secunde', + m : 'un minut', + mm : relativeTimeWithPlural, + h : 'o oră', + hh : relativeTimeWithPlural, + d : 'o zi', + dd : relativeTimeWithPlural, + M : 'o lună', + MM : relativeTimeWithPlural, + y : 'un an', + yy : relativeTimeWithPlural + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return ro; + +}))); + + +/***/ }), + +/***/ "6fEV": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Welsh [cy] +//! author : Robert Allen : https://github.com/robgallen +//! author : https://github.com/ryangreaves + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var cy = moment.defineLocale('cy', { + months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), + monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), + weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), + weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), + weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), + weekdaysParseExact : true, + // time formats are the same as en-gb + longDateFormat: { + LT: 'HH:mm', + LTS : 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[Heddiw am] LT', + nextDay: '[Yfory am] LT', + nextWeek: 'dddd [am] LT', + lastDay: '[Ddoe am] LT', + lastWeek: 'dddd [diwethaf am] LT', + sameElse: 'L' + }, + relativeTime: { + future: 'mewn %s', + past: '%s yn ôl', + s: 'ychydig eiliadau', + m: 'munud', + mm: '%d munud', + h: 'awr', + hh: '%d awr', + d: 'diwrnod', + dd: '%d diwrnod', + M: 'mis', + MM: '%d mis', + y: 'blwyddyn', + yy: '%d flynedd' + }, + dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, + // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh + ordinal: function (number) { + var b = number, + output = '', + lookup = [ + '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed + 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed + ]; + if (b > 20) { + if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { + output = 'fed'; // not 30ain, 70ain or 90ain + } else { + output = 'ain'; + } + } else if (b > 0) { + output = lookup[b]; + } + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return cy; + +}))); + + +/***/ }), + +/***/ "6z9i": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Scottish Gaelic [gd] +//! author : Jon Ashdown : https://github.com/jonashdown + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var months = [ + 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd' +]; + +var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh']; + +var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne']; + +var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis']; + +var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; + +var gd = moment.defineLocale('gd', { + months : months, + monthsShort : monthsShort, + monthsParseExact : true, + weekdays : weekdays, + weekdaysShort : weekdaysShort, + weekdaysMin : weekdaysMin, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[An-diugh aig] LT', + nextDay : '[A-màireach aig] LT', + nextWeek : 'dddd [aig] LT', + lastDay : '[An-dè aig] LT', + lastWeek : 'dddd [seo chaidh] [aig] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'ann an %s', + past : 'bho chionn %s', + s : 'beagan diogan', + m : 'mionaid', + mm : '%d mionaidean', + h : 'uair', + hh : '%d uairean', + d : 'latha', + dd : '%d latha', + M : 'mìos', + MM : '%d mìosan', + y : 'bliadhna', + yy : '%d bliadhna' + }, + dayOfMonthOrdinalParse : /\d{1,2}(d|na|mh)/, + ordinal : function (number) { + var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return gd; + +}))); + + +/***/ }), + +/***/ 7: +/***/ (function(module, exports) { + +/* (ignored) */ + +/***/ }), + +/***/ "79e1": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Slovak [sk] +//! author : Martin Minka : https://github.com/k2s +//! based on work of petrbela : https://github.com/petrbela + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'); +var monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); +function plural(n) { + return (n > 1) && (n < 5); +} +function translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minúty' : 'minút'); + } else { + return result + 'minútami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodín'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dni' : 'dní'); + } else { + return result + 'dňami'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'mesiace' : 'mesiacov'); + } else { + return result + 'mesiacmi'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'rokov'); + } else { + return result + 'rokmi'; + } + break; + } +} + +var sk = moment.defineLocale('sk', { + months : months, + monthsShort : monthsShort, + weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), + weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'), + weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'), + longDateFormat : { + LT: 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd D. MMMM YYYY H:mm' + }, + calendar : { + sameDay: '[dnes o] LT', + nextDay: '[zajtra o] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v nedeľu o] LT'; + case 1: + case 2: + return '[v] dddd [o] LT'; + case 3: + return '[v stredu o] LT'; + case 4: + return '[vo štvrtok o] LT'; + case 5: + return '[v piatok o] LT'; + case 6: + return '[v sobotu o] LT'; + } + }, + lastDay: '[včera o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulú nedeľu o] LT'; + case 1: + case 2: + return '[minulý] dddd [o] LT'; + case 3: + return '[minulú stredu o] LT'; + case 4: + case 5: + return '[minulý] dddd [o] LT'; + case 6: + return '[minulú sobotu o] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'za %s', + past : 'pred %s', + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return sk; + +}))); + + +/***/ }), + +/***/ "7FEM": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__("maJs"); +var common = __webpack_require__("P1/4"); +var shaCommon = __webpack_require__("UOWd"); +var assert = __webpack_require__("tSXQ"); + +var sum32 = utils.sum32; +var sum32_4 = utils.sum32_4; +var sum32_5 = utils.sum32_5; +var ch32 = shaCommon.ch32; +var maj32 = shaCommon.maj32; +var s0_256 = shaCommon.s0_256; +var s1_256 = shaCommon.s1_256; +var g0_256 = shaCommon.g0_256; +var g1_256 = shaCommon.g1_256; + +var BlockHash = common.BlockHash; + +var sha256_K = [ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, + 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, + 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, + 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, + 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, + 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 +]; + +function SHA256() { + if (!(this instanceof SHA256)) + return new SHA256(); + + BlockHash.call(this); + this.h = [ + 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, + 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 + ]; + this.k = sha256_K; + this.W = new Array(64); +} +utils.inherits(SHA256, BlockHash); +module.exports = SHA256; + +SHA256.blockSize = 512; +SHA256.outSize = 256; +SHA256.hmacStrength = 192; +SHA256.padLength = 64; + +SHA256.prototype._update = function _update(msg, start) { + var W = this.W; + + for (var i = 0; i < 16; i++) + W[i] = msg[start + i]; + for (; i < W.length; i++) + W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]); + + var a = this.h[0]; + var b = this.h[1]; + var c = this.h[2]; + var d = this.h[3]; + var e = this.h[4]; + var f = this.h[5]; + var g = this.h[6]; + var h = this.h[7]; + + assert(this.k.length === W.length); + for (i = 0; i < W.length; i++) { + var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]); + var T2 = sum32(s0_256(a), maj32(a, b, c)); + h = g; + g = f; + f = e; + e = sum32(d, T1); + d = c; + c = b; + b = a; + a = sum32(T1, T2); + } + + this.h[0] = sum32(this.h[0], a); + this.h[1] = sum32(this.h[1], b); + this.h[2] = sum32(this.h[2], c); + this.h[3] = sum32(this.h[3], d); + this.h[4] = sum32(this.h[4], e); + this.h[5] = sum32(this.h[5], f); + this.h[6] = sum32(this.h[6], g); + this.h[7] = sum32(this.h[7], h); +}; + +SHA256.prototype._digest = function digest(enc) { + if (enc === 'hex') + return utils.toHex32(this.h, 'big'); + else + return utils.split32(this.h, 'big'); +}; + + +/***/ }), + +/***/ "7Gjy": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return HlsMixins; }); +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +var HlsMixins = { + methods: { + //TODO 检查播放是否是HLS的监听事件 + setHLSListener: function setHLSListener() { + var _this = this; + + if (this.isStreamH265) return; + if (!this.videoUrl.includes('.m3u8')) return; + if (!this.easyPlayer.tech_.hlsPlayer) return setTimeout(function () { + return _this.setHLSListener(); + }, 50); + this.easyPlayer.tech_.hlsPlayer.on(Hls.Events.ERROR, function (event, data) { + var type = data.type, + reason = data.reason, + response = data.response; + + switch (type) { + case 'networkError': + if (response.code === 404) { + if (_this._recording) { + // this.recordDownload(); + _this._recording = false; + setTimeout(function () { + return _this.initPlayer(); + }, 1500); + } else { + _this.initPlayer(); + } + } + break; + case 'mediaError': + //TODO 记载265 播放器 + if (reason !== "Unsupported HEVC stream type found 0x24") return; + if (!_this.isStreamH265) _this.initH265Player(12); + _this.isStreamH265 = true; + break; + default: + break; + } + }); + //处理hls 码率问题 + this.easyPlayer.tech_.hlsPlayer.on(Hls.Events.FRAG_BUFFERED, function (eventName, data) { + var _data$frag$tagList$fi = _slicedToArray(data.frag.tagList.filter(function (item) { + return item.indexOf("INF") !== -1; + })[0], 2), + _ = _data$frag$tagList$fi[0], + extInf = _data$frag$tagList$fi[1]; + + _this.createKbps(Math.round(data.stats.total / (data.stats.buffering.end - data.stats.loading.first)) / extInf); + }); + // m3u8 录像问题 + // this.easyPlayer.tech_.hlsPlayer.on(Hls.Events.RECORDING, (event, {data: buffer}) => { + // if (this._recording === undefined) this._recording = false + // if (this._cacheArrayBuffer === undefined) this._cacheArrayBuffer = [] + // if (this._recordArrayBuffer === undefined) this._recordArrayBuffer = [] + // if (this._recordOffset === undefined) this._recordOffset = 0 + // if (this.recordFileName === undefined) this.recordFileName = `${this.dateFormat(new Date(), "YYYYMMDDhhmmss")}.mp4` + // if (!this._recording) { + // if (this._cacheArrayBuffer.length === 2) this._cacheArrayBuffer.shift(); + // this._cacheArrayBuffer.push(buffer) + // this.recordDownload() + // } else { + // if (this._recordArrayBuffer.length === 0) this._recordArrayBuffer = new Uint8Array(this.recordMaxFileSize * 1024 * 1024) + // // TODO 给视频预留缓存 加上缓存 + // if (this._cacheArrayBuffer.length !== 0) { + // this._cacheArrayBuffer.forEach(_cache => { + // this._recordArrayBuffer.set(new Int8Array(_cache), this._recordOffset); + // this._recordOffset += _cache.byteLength + // }) + // } + // this._cacheArrayBuffer = [] + // this._recordArrayBuffer.set(new Int8Array(buffer), this._recordOffset); + // this._recordOffset += buffer.byteLength; + // } + // }) + } + } +}; + +/***/ }), + +/***/ "7P+W": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_moment__ = __webpack_require__("hsap"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_moment___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_moment__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_events__ = __webpack_require__("cGIK"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_events___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_events__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_assets_js_EBML_js__ = __webpack_require__("Nobj"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_assets_js_EBML_js___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_assets_js_EBML_js__); +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + + + + +var WebRtcPlayer = function () { + function WebRtcPlayer() { + var videoSrc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + var videoParentEle = arguments[1]; + var autoplay = arguments[2]; + var loadingEle = arguments[3]; + var _videoId = arguments[4]; + var iceServers = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : []; + var playerMuted = arguments[6]; + var recordFileName = arguments[7]; + var watermark = arguments[8]; + + _classCallCheck(this, WebRtcPlayer); + + this.TAG = "WebRtcPlayer"; + this._emitter = new __WEBPACK_IMPORTED_MODULE_1_events___default.a(); + if (videoSrc.includes("webrtcs://")) this._videoSrc = videoSrc.replace("webrtcs:", "https:");else if (videoSrc.includes("webrtc://")) this._videoSrc = videoSrc.replace("webrtc://", "http://");else this._videoSrc = videoSrc; + this._videoEle = null; + this._audioEle = null; + this._videoId = _videoId; + this._videoJsPlayer = null; + this._isFristPlaying = true; + this._localSessionDesc = ''; + this._videoParentEle = videoParentEle; + this._luXiangEle = null; + this._rtcPC = new RTCPeerConnection({ iceServers: iceServers }); + this._playing = true; + this._autoplay = autoplay; + this._loadingEle = loadingEle; + this._fullScreenBtnEle = null; + this._playBtnEle = null; + this._mute = playerMuted; + this._isFullScreen = false; + this._videoTools = null; + this._videoTimeout = null; + this._mobile = this._isMobile(); + this._webrtcRecordedBlobs = []; + this._webrtcMediaRecorder = null; + this._webrtcMimeType = { mimeType: 'video/webm;codecs=vp9,opus' }; + this._webrtcRecording = false; + this._isAndroid = navigator.userAgent.toLocaleLowerCase().includes("android"); // 是否android + + this._setOntrack(); + this.initRTC(); + this._loadingEle.style.opacity = this._autoplay ? 1 : 0; + this._videoParentEle.appendChild(this._loadingEle); + this._recordFileName = recordFileName; + + //TODO webrtc 绘画 + this._webrtc_tracks = []; + this._webrtc_ws = null; + this._webrtc_sei_url = ""; + this._webrtc_sei_channel_id = ""; + this._mediaStream = new MediaStream(); + // this.initWebSocket(videoSrc, _videoId); 创建 sei 消息通道 + this._transformFn = this._renderSeiStream(); + this._webrtc_sei = [ + // {SeiType: 2, Positions: [0, 0], Data: "文本框", Textcolor: "#fff", DurationTime: 15000, Bgcolor: "rgba(255,0,0,0.5)", Textsize: 30}, + ]; + this.watermark = watermark; + this.initWaterMark(); + } + + _createClass(WebRtcPlayer, [{ + key: "initWaterMark", + value: function initWaterMark() { + var parent_style = "position: absolute;background-color: rgba(0, 0, 0, 0.0);pointer-events: none;display: grid;z-index: 1;"; + var grid_template_rows = "", + grid_template_columns = ""; + if (!this.watermark) return; + + var _ref = typeof this.watermark === 'string' ? JSON.parse(this.watermark) : this.watermark, + _ref$row = _ref.row, + row = _ref$row === undefined ? 4 : _ref$row, + _ref$col = _ref.col, + col = _ref$col === undefined ? 4 : _ref$col, + _ref$fontSize = _ref.fontSize, + fontSize = _ref$fontSize === undefined ? 18 : _ref$fontSize, + _ref$opacity = _ref.opacity, + opacity = _ref$opacity === undefined ? 0.6 : _ref$opacity, + _ref$color = _ref.color, + color = _ref$color === undefined ? "#FFF" : _ref$color, + _ref$rotate = _ref.rotate, + rotate = _ref$rotate === undefined ? -18 : _ref$rotate, + _ref$type = _ref.type, + type = _ref$type === undefined ? "FULL_SCREEN" : _ref$type, + txt = _ref.txt; + + if (!txt) return; + var el = document.createElement("div"); + if (type.toUpperCase() === 'FULL_SCREEN') { + for (var i = 0; i < row; i++) { + grid_template_rows += "1fr "; + }for (var k = 0; k < col; k++) { + grid_template_columns += "1fr "; + }parent_style += "top:0;bottom:0;left:0;right:0;grid-template-rows:" + grid_template_rows + ";grid-template-columns:" + grid_template_columns + ";"; + } else { + if (type.toUpperCase() === 'LEFT_TOP') parent_style += "top:0;left: 0;margin: 12px;"; + if (type.toUpperCase() === 'RIGHT_TOP') parent_style += "top:0;right: 0;margin: 12px;"; + if (type.toUpperCase() === 'LEFT_BOTTOM') parent_style += "bottom:0;left: 0;margin: 12px;"; + if (type.toUpperCase() === 'RIGHT_BOTTOM') parent_style += "bottom:0;right: 0;margin: 12px;"; + } + el.setAttribute("style", parent_style); + el.setAttribute("class", "webrtc-watermark"); + + var custom_style = "display: flex;flex-direction: column;align-items: center;justify-content: center;font-family: \"\u5FAE\u8F6F\u96C5\u9ED1\";\n font-size: " + fontSize + "px;opacity:" + opacity + ";color:" + color + ";"; + + if (type.toUpperCase() === 'FULL_SCREEN') custom_style += "transform:rotate(" + rotate + "deg)";else { + row = col = 1; + custom_style += "padding: 8px;background-color: rgba(0,0,0,0.6)"; + } + for (var _i = 0; _i < row * col; _i++) { + var txt_el = document.createTextNode(txt); + var watermark_item = document.createElement('div'); + watermark_item.appendChild(txt_el); + watermark_item.setAttribute('class', 'easy-watermark-item'); + watermark_item.setAttribute('style', custom_style); + el.appendChild(watermark_item); + } + + this._videoParentEle.appendChild(el); + } + }, { + key: "initWebSocket", + value: function initWebSocket(url, videoId) { + var _this = this; + + var server = void 0, + pattern = void 0, + http = void 0, + channel_id_pattern = /channelid=([^&]+)/; + if (url.startsWith("webrtcs")) pattern = /(webrtcs?:\/\/)([^:/]+)(:\d+)?/, http = 'wss://';else if (url.startsWith("webrtc")) pattern = /(webrtc?:\/\/)([^:/]+)(:\d+)?/, http = 'ws://'; + var match = url.match(pattern); + var channel_id_match = url.match(channel_id_pattern); + if (match) server = match[2] + (match[3] || ''); + var uuids = videoId.split("_"); + + if (channel_id_match) this._webrtc_sei_channel_id = parseInt(channel_id_match[1]); + + this._webrtc_sei_url = "" + http + server + "/api/v1/webrtc/sei?reqid=" + uuids[2] + "_webrtc_sei"; + + if (this._webrtc_ws) return; + + this._webrtc_ws = new WebSocket(this._webrtc_sei_url); + + this._webrtc_ws.onmessage = function (_ref2) { + var data = _ref2.data; + + if (typeof data === 'string') data = JSON.parse(data); + if (data.length) data.forEach(function (item) { + if (item.ChannelID === _this._webrtc_sei_channel_id) _this._webrtc_sei.push(item); + }); + }; + + this._webrtc_ws.onclose = function () { + return _this._webrtc_ws = null; + }; + } + }, { + key: "_renderSeiStream", + value: function _renderSeiStream() { + return function transform(frame, controller) { + var _this2 = this; + + //TODO 发现 清理 指令 + var clear_sei = this._webrtc_sei.find(function (sei) { + return sei.SeiType === -1; + }); + if (clear_sei) this._webrtc_sei = []; + + //TODO 处理结束时间 + this._webrtc_sei = this._webrtc_sei.map(function (sei) { + if (sei.end_duration || sei.DurationTime === 0) return sei; + return Object.assign(sei, { end_duration: __WEBPACK_IMPORTED_MODULE_0_moment___default()().add(sei.DurationTime, 'milliseconds') }); + }); + + //TODO 清除到期的 sei 数据 + this._webrtc_sei = this._webrtc_sei.filter(function (sei) { + return sei.end_duration && sei.end_duration.diff(__WEBPACK_IMPORTED_MODULE_0_moment___default()()) > 0 || sei.DurationTime === 0; + }); + + if (this._webrtc_sei.length !== 0) { + //TODO 创建绘制模板 + var canvas = new OffscreenCanvas(1, 1); + var ctx = canvas.getContext('2d'); + var width = frame.displayWidth, + height = frame.displayHeight; + + canvas.width = width; + canvas.height = height; + ctx.clearRect(0, 0, width, height); + ctx.drawImage(frame, 0, 0, width, height); + + //TODO 绘制 逻辑 + this._webrtc_sei.forEach(function (sei) { + if (sei.SeiType === 1) { + var points = sei.Positions, + bgColor = sei.Bgcolor; + + _this2._renderGeometry(points, bgColor, ctx, width, height); + } else if (sei.SeiType === 2) { + var position = sei.Positions, + text = sei.Data, + color = sei.Textcolor, + fontSize = sei.Textsize; + + _this2._renderText({ text: text, position: position, color: color, fontSize: fontSize }, ctx, width, height); + } + }); + var newFrame = new VideoFrame(canvas, { timestamp: frame.timestamp }); + frame.close(); + controller.enqueue(newFrame); + } else controller.enqueue(frame); + }; + } + }, { + key: "_renderText", + value: function _renderText(options, ctx, width, height) { + var text = options.text, + color = options.color, + fontSize = options.fontSize, + _options$txtFont = options.txtFont, + txtFont = _options$txtFont === undefined ? "sans-serif" : _options$txtFont, + position = options.position; + + var font_size = parseInt(fontSize); + + var _position = _slicedToArray(position, 2), + x = _position[0], + y = _position[1]; + + x = width / 2 * (1 - x); + y = height / 2 * (1 - y); + ctx.font = "italic " + font_size + "px " + txtFont; + ctx.fillStyle = color; + ctx.fillText(text, x, y); + } + }, { + key: "_renderGeometry", + value: function _renderGeometry(points, bgColor, ctx, width, height) { + // 开始绘制路径 + ctx.beginPath(); + // 将画笔移动到第一个顶点 + + var _points = _slicedToArray(points, 2), + x = _points[0], + y = _points[1]; + + x = width / 2 * (1 + x); + y = height / 2 * (1 - y); + ctx.moveTo(x, y); + // 依次连接四个顶点 + var next_points = points.slice(2); + for (var i = 0; i < next_points.length; i += 2) { + ctx.lineTo(width / 2 * (1 + next_points[i]), height / 2 * (1 - next_points[i + 1])); + } // 闭合路径 + ctx.closePath(); + // 设置边框样式和填充颜色 + ctx.strokeStyle = "transparent"; // 边框颜色 + ctx.lineWidth = 1; // 边框宽度 + ctx.fillStyle = bgColor; // 填充颜色 + // 绘制边框和填充多边形 + ctx.stroke(); + ctx.fill(); + } + }, { + key: "_setOntrack", + value: function _setOntrack() { + var _this3 = this; + + this._rtcPC.ontrack = function (_ref3) { + var track = _ref3.track, + streams = _ref3.streams; + + if (track.kind === "video") { + if (_this3._autoplay) _this3._playing = true;else _this3._playing = false; + _this3._loadingEle.style.opacity = _this3._playing ? 1 : 0; + // TODO 创建标签 + _this3._videoEle = document.createElement(track.kind); + var aspect = "aspect-ratio:" + _this3._videoParentEle.offsetWidth + "/" + _this3._videoParentEle.offsetHeight; + _this3._videoEle.style = "position: absolute;top: 0;left: 0;width:100%;height: 100%;object-fit: fill;" + aspect + ";"; + _this3._videoEle.setAttribute('id', _this3._videoId); + _this3._videoEle.setAttribute('loop', true); + _this3._videoEle.setAttribute('preload', true); + _this3._videoEle.setAttribute('controls', false); + _this3._videoEle.setAttribute('webkit-playsinline', true); + _this3._videoEle.setAttribute('playsinline', 'playsinline'); //阻止弹出层 + _this3._videoEle.setAttribute('x5-playsinline', 'x5-playsinline'); + _this3._videoEle.setAttribute('x-webkit-airplay', 'allow'); + _this3._videoEle.setAttribute('x5-video-player-type', 'h5'); + _this3._videoEle.setAttribute('x5-video-player-fullscreen', 'true'); + _this3._videoEle.setAttribute('x5-video-orientation', 'portrait'); + _this3._videoEle.setAttribute('x5-video-ignore-metadata', true); + _this3._videoEle.setAttribute('x5-video-orientation', 'landscape'); + _this3._videoEle.setAttribute('crossOrigin', 'Anonymous'); + _this3._videoEle.setAttribute('autoplay', "" + _this3._autoplay); + _this3._videoEle.muted = true; + _this3._videoEle.controls = false; + _this3._videoEle.autoplay = _this3._autoplay; + _this3._videoEle.playsInline = true; + _this3._renderVideoTools(); + _this3._videoParentEle.appendChild(_this3._videoEle); + _this3._setVideoEleEventListener(); + window.stream = event.streams[0]; + + //TODO webrtc 画框代码 + var new_track = _this3.createProcessedTrack({ track: track, transform: function transform(frame, controller) { + return _this3._transformFn(frame, controller); + } }); + _this3._mediaStream.addTrack(new_track); + _this3._webrtc_tracks.push(new_track); + _this3._videoEle.srcObject = _this3._mediaStream; + } else { + _this3._audioEle = document.createElement(track.kind); + _this3._audioEle.srcObject = streams[0]; + _this3._videoParentEle.appendChild(_this3._audioEle); + if (!_this3._mute) _this3._audioEle.play(); + } + }; + } + }, { + key: "createProcessedTrack", + value: function createProcessedTrack(_ref4) { + var track = _ref4.track, + transform = _ref4.transform; + + var trackProcessor = new MediaStreamTrackProcessor({ track: track }); + var trackGenerator = new MediaStreamTrackGenerator({ kind: track.kind }); + var transformer = new TransformStream({ transform: transform }); + trackProcessor.readable.pipeThrough(transformer).pipeTo(trackGenerator.writable).catch(function (error) { + return console.warn(error); + }); + return trackGenerator; + } + }, { + key: "initRTC", + value: function initRTC() { + var _this4 = this; + + this._rtcPC.oniceconnectionstatechange = function (event) { + return _this4._emitter.emit("oniceconnectionstatechange", event); + }; + this._rtcPC.onicecandidate = function (event) { + if (event.candidate === null) { + _this4._localSessionDesc = btoa(_this4._rtcPC.localDescription.sdp); + setTimeout(function () { + return _this4.play(); + }, 200); + } + }; + this._rtcPC.addTransceiver('video', { 'direction': 'sendrecv' }); + this._rtcPC.addTransceiver('audio', { 'direction': 'sendrecv' }); + this._rtcPC.createOffer().then(function (d) { + return _this4._rtcPC.setLocalDescription(d); + }).catch(function (e) { + return console.log(e); + }); + } + }, { + key: "play", + value: function play() { + var _this5 = this; + + if (this._videoSrc === '') return console.error("播放地址不能为空"); + if (this._localSessionDesc === '') { + if (!this._isFristPlaying) return; + if (this._isFristPlaying) this._isFristPlaying = false; + return setTimeout(function () { + return _this5.play(); + }, 200); + } + var xhr = new XMLHttpRequest(); + xhr.open("POST", this._videoSrc, true); + xhr.setRequestHeader("Content-type", "text/plain; charset=utf-8"); + xhr.onload = function () { + try { + var remoteSessionDescription = atob(xhr.response); + _this5._rtcPC.setRemoteDescription(new RTCSessionDescription({ sdp: remoteSessionDescription, type: "answer" })); + _this5._videoTimeout = setTimeout(function () { + console.log("videotimeout2"); + _this5._emitter.emit("videotimeout"); + }, 3000); + } catch (error) { + setTimeout(function () { + return _this5._emitter.emit("oniceconnectionstatechange", { currentTarget: { iceConnectionState: 'disconnected' } }); + }, 10 * 1000); + } + }; + xhr.send(this._localSessionDesc); + } + }, { + key: "_setVideoEleEventListener", + value: function _setVideoEleEventListener() { + var _this6 = this; + + this._videoEle.addEventListener('waiting', function (e) { + _this6._loadingEle.style.opacity = 1; + _this6._emitter.emit("waiting", e); + }); + this._videoEle.addEventListener('playing', function (e) { + _this6._emitter.emit("playing", e); + _this6._playing = true; + _this6._loadingEle.style.opacity = 0; + }); + this._videoEle.addEventListener('canplay', function (e) { + if (_this6._autoplay) _this6._videoEle.play(); + }); + this._videoEle.addEventListener('timeupdate', function (e) { + if (_this6._videoTimeout) { + clearTimeout(_this6._videoTimeout); + _this6._videoTimeout = null; + } + }); + this._videoEle.addEventListener('dblclick', function (e) { + _this6._onTouchFullScreen(); + }); + this._videoEle.addEventListener('click', function (e) { + _this6._emitter.emit("click", e); + if (!_this6._mobile) return e.preventDefault(); + if (_this6._videoEle) _this6._videoEle.play(); + }); + this._videoEle.addEventListener("webkitendfullscreen", function () { + _this6._isFullScreen = false; + _this6._fullScreenBtnEle.classList = "iconfont " + (_this6._isFullScreen ? 'icon-xiaoping' : 'icon-quanping1'); + _this6._playing = false; + _this6._playBtnEle.title = "播放"; + _this6._playBtnEle.classList = "iconfont icon-bofang"; + }); + + if (this._isMobile()) { + //TODO 移动事件监听 去除移动端长按显示的 菜单 + this._videoParentEle.addEventListener('touchstart', function (e) { + _this6._emitter.emit("touchstart", e); + }); + } + } + }, { + key: "_renderVideoTools", + value: function _renderVideoTools() { + var _this7 = this; + + var videoTools = document.createElement("span"); + videoTools.style = "width:100%;height:30px;position:absolute;bottom:0;left:0;background-color:rgba(43, 51, 63, 0.7);opacity:1;display: flex;flex-direction: row;justify-content: space-between;z-index:999"; + videoTools.classList = "video-tools"; + + var leftTools = document.createElement("div"); + leftTools.style = 'display: flex;flex-direction: row;'; + + this._playBtnEle = document.createElement("span"); + this._playBtnEle.style = "font-size:14px;width:40px;height: 30px;color:#FFF;text-align:center;display:flex;flex-direction: row;justify-content: center;align-items: center"; + this._playBtnEle.classList = "iconfont " + (this._playing ? 'icon-zanting' : 'icon-bofang'); + + var audioBtnEle = document.createElement("span"); + audioBtnEle.style = "font-size:14px;width:40px;height: 30px;color:#FFF;text-align:center;display:flex;flex-direction: row;justify-content: center;align-items: center"; + audioBtnEle.classList = "iconfont " + (this._mute ? 'icon-jingyin' : 'icon-shengyin1'); + + this._playBtnEle.onclick = function () { + if (_this7._playing) { + _this7._videoEle && _this7._videoEle.pause(); + _this7._audioEle && _this7._audioEle.pause(); + } else { + _this7._videoEle && _this7._videoEle.play(); + if (!_this7._mute) _this7._audioEle && _this7._audioEle.play(); + } + _this7._playing = !_this7._playing; + _this7._playBtnEle.title = _this7._playing ? "暂停" : "播放"; + _this7._playBtnEle.classList = "iconfont " + (_this7._playing ? 'icon-zanting' : 'icon-bofang'); + }; + + audioBtnEle.onclick = function () { + _this7._mute = !_this7._mute; + audioBtnEle.title = _this7._mute ? "取消静音" : "静音"; + audioBtnEle.classList = "iconfont " + (_this7._mute ? 'icon-jingyin' : 'icon-shengyin1'); + if (_this7._mute) _this7._audioEle.pause();else _this7._audioEle.play(); + }; + + //TODO 右侧工具类 + var rightTools = document.createElement("div"); + rightTools.style = 'display: flex;flex-direction: row;'; + + //码率显示 + this.kbpsEle = document.createElement("div"); + this.kbpsEle.style = "font-size:12px;min-width:60px;height: 30px;color:#FFF;text-align:center;display:flex;flex-direction: row;justify-content: center;align-items: center;padding-right: 10px;"; + + //TODO 快照 + var snapshotEle = document.createElement("span"); + snapshotEle.title = "快照"; + snapshotEle.style = "font-size:16px;width:40px;height: 30px;color:#FFF;text-align:center;display:flex;flex-direction: row;justify-content: center;align-items: center;"; + snapshotEle.classList = "iconfont icon-xiangji"; + snapshotEle.onclick = function () { + return _this7._saveLocalSnapshot(); + }; + + //TODO 录像 + this._luXiangEle = document.createElement("span"); + this._luXiangEle.title = "录像"; + this._luXiangEle.style = "font-size:16px;width:40px;height: 30px;color:#FFF;text-align:center;display:flex;flex-direction: row;justify-content: center;align-items: center;"; + this._luXiangEle.classList = "iconfont icon-luxiang2"; + + this._luXiangEle.onclick = function () { + _this7._webrtcRecording = !_this7._webrtcRecording; + _this7._luXiangEle.style.color = _this7._webrtcRecording ? 'red' : '#FFF'; + _this7._luXiangEle.title = _this7._webrtcRecording ? "停止录像" : '录像'; + if (_this7._webrtcRecording) _this7.startRecording();else _this7.stopRecording(); + }; + + this._fullScreenBtnEle = document.createElement("span"); + this._fullScreenBtnEle.title = "全屏"; + this._fullScreenBtnEle.style = "font-size:14px;width:40px;height: 30px;color:#FFF;text-align:center;display:flex;flex-direction: row;justify-content: center;align-items: center"; + this._fullScreenBtnEle.classList = "iconfont " + (this._isFullScreen ? 'icon-xiaoping' : 'icon-quanping1'); + + if (this._mobile) this._fullScreenBtnEle.addEventListener('touchstart', function () { + return _this7._onTouchFullScreen(); + });else this._fullScreenBtnEle.onclick = function () { + return _this7._onTouchFullScreen(); + }; + + this._videoParentEle.onmouseover = function () { + _this7.videoToolsTimer && clearTimeout(_this7.videoToolsTimer); + if (!_this7._videoTools) return; + _this7._videoTools.style.opacity = '1'; + _this7.videoToolsTimer = setTimeout(function () { + if (_this7._videoTools) _this7._videoTools.style.opacity = '0'; + }, 10 * 1000); + }; + + this._videoParentEle.onmouseout = function () { + if (!_this7._videoTools) return; + _this7._videoTools.style.opacity = '0'; + _this7.videoToolsTimer && clearTimeout(_this7.videoToolsTimer); + _this7.videoToolsTimer = null; + }; + + leftTools.appendChild(this._playBtnEle); + leftTools.appendChild(audioBtnEle); + rightTools.appendChild(this.kbpsEle); + rightTools.appendChild(this._luXiangEle); + rightTools.appendChild(snapshotEle); + rightTools.appendChild(this._fullScreenBtnEle); + videoTools.appendChild(leftTools); + videoTools.appendChild(rightTools); + this._creatBigPlayBtn(); + this._videoTools = videoTools; + this._videoParentEle.appendChild(videoTools); + window.onresize = function () { + if (!document.fullscreenElement && _this7._isFullScreen) { + _this7._isFullScreen = false; + _this7._fullScreenBtnEle.classList = "iconfont " + (_this7._isFullScreen ? 'icon-xiaoping' : 'icon-quanping1'); + } + }; + } + }, { + key: "_onTouchFullScreen", + value: function _onTouchFullScreen() { + this._isFullScreen = !this._isFullScreen; + this._fullScreenBtnEle.title = this._isFullScreen ? "退出全屏" : "全屏"; + this._fullScreenBtnEle.classList = "iconfont " + (this._isFullScreen ? 'icon-xiaoping' : 'icon-quanping1'); + + if (this._isFullScreen) { + if (this._videoParentEle.requestFullScreen) { + this._videoParentEle.requestFullScreen(); + } else if (this._videoEle.webkitEnterFullScreen) { + if (this._mobile) { + if (this._isAndroid) { + if (this._videoParentEle.webkitRequestFullScreen) this._videoParentEle.webkitRequestFullScreen(); + } else { + if (this._videoEle.webkitEnterFullScreen) this._videoEle.webkitEnterFullScreen(); + } + } else { + if (this._videoParentEle.webkitRequestFullScreen) this._videoParentEle.webkitRequestFullScreen(); + } + } else if (this._videoParentEle.webkitRequestFullScreen) { + this._videoParentEle.webkitRequestFullScreen(); + } else if (this._videoParentEle.mozRequestFullScreen) { + this._videoParentEle.mozRequestFullScreen(); + } else if (this._videoParentEle.msRequestFullscreen) { + this._videoParentEle.msRequestFullscreen(); + } + } else { + if (document.exitFullscreen) { + document.exitFullscreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } else if (document.msExitFullscreen) { + document.msExitFullscreen(); + } + } + } + }, { + key: "_creatBigPlayBtn", + value: function _creatBigPlayBtn() { + var _this8 = this; + + if (this._autoplay) return; + var playerBtn = document.createElement("div"); + var spanEle = document.createElement("span"); + spanEle.style = "font-size:2em;"; + spanEle.classList = 'iconfont icon-bofang easy-play-btn'; + playerBtn.appendChild(spanEle); + this._videoParentEle.appendChild(playerBtn); + + if (this._mobile) { + playerBtn.addEventListener('touchstart', function () { + return _this8._onTouchBigPlayerBtn(playerBtn); + }); + } else { + playerBtn.onclick = function () { + return _this8._onTouchBigPlayerBtn(playerBtn); + }; + } + } + }, { + key: "_onTouchBigPlayerBtn", + value: function _onTouchBigPlayerBtn(playerBtn) { + this._playing = true; + this._videoEle.play(); + this._loadingEle.style.opacity = this._playing ? 1 : 0; + this._playBtnEle.classList = "iconfont " + (this._playing ? 'icon-zanting' : 'icon-bofang'); + this._videoParentEle.removeChild(playerBtn); + } + }, { + key: "_isMobile", + value: function _isMobile() { + try { + document.createEvent("TouchEvent"); + return true; + } catch (e) { + return false; + } + } + }, { + key: "startRecording", + value: function startRecording() { + var _this9 = this; + + try { + var video_tracks = this._videoEle.captureStream().getVideoTracks(); + var audio_tracks = this._audioEle && !this._audioEle.paused ? this._audioEle.captureStream().getAudioTracks() : []; + var recorder_stream = new MediaStream([].concat(_toConsumableArray(video_tracks), _toConsumableArray(audio_tracks))); + this._webrtcMediaRecorder = new MediaRecorder(recorder_stream, this._webrtcMimeType); + this._webrtcMediaRecorder.ondataavailable = function (event) { + return event.data.size > 0 && _this9._webrtcRecordedBlobs.push(event.data); + }; + + this._webrtcMediaRecorder.onstart = function () { + return _this9._emitter.emit("recording", { type: "start" }); + }; + this._webrtcMediaRecorder.onstop = function () { + var new_blob = new Blob(_this9._webrtcRecordedBlobs, { type: 'video/webm;codecs=h264' }); + _this9.getSeekableBlob(new_blob, 'video/webm;codecs=h264', function (blob) { + var link = document.createElement('a'); + link.style.display = 'none'; + link.href = window.URL.createObjectURL(blob); + link.download = _this9._recordFileName ? _this9._recordFileName + "-" + _this9.dateFormat(new Date(), "YYYYMMDDhhmmss") + ".mp4" : _this9.dateFormat(new Date(), "YYYYMMDDhhmmss") + ".mp4"; + document.body.appendChild(link); + link.click(); + link.remove(); + _this9.flv265CleanCache(); + _this9._emitter.emit("recording", { type: "end", data: blob }); + }); + }; + this._webrtcMediaRecorder.start(); + } catch (e) { + console.error('Exception while creating MediaRecorder:', e); + } + } + }, { + key: "flv265CleanCache", + value: function flv265CleanCache() { + this._webrtcMediaRecorder = null; + this._webrtcRecordedBlobs = []; + } + }, { + key: "getSeekableBlob", + value: function getSeekableBlob(inputBlob, mediaType, callback) { + var reader = new __WEBPACK_IMPORTED_MODULE_2_assets_js_EBML_js__["Reader"](); + var decoder = new __WEBPACK_IMPORTED_MODULE_2_assets_js_EBML_js__["Decoder"](); + var tools = __WEBPACK_IMPORTED_MODULE_2_assets_js_EBML_js__["tools"]; + + var fileReader = new FileReader(); + fileReader.onload = function () { + var ebmlElms = decoder.decode(this.result); + ebmlElms.forEach(function (element) { + reader.read(element); + }); + reader.stop(); + var refinedMetadataBuf = tools.makeMetadataSeekable(reader.metadatas, reader.duration, reader.cues); + var body = this.result.slice(reader.metadataSize); + var newBlob = new Blob([refinedMetadataBuf, body], { + type: mediaType + }); + + callback(newBlob); + }; + fileReader.readAsArrayBuffer(inputBlob); + } + }, { + key: "dateFormat", + value: function dateFormat(date, fmt) { + var ret = void 0; + var opt = { + 'Y+': date.getFullYear().toString(), // 年 + 'M+': (date.getMonth() + 1).toString(), // 月 + 'D+': date.getDate().toString(), // 日 + 'h+': date.getHours().toString(), // 时 + 'm+': date.getMinutes().toString(), // 分 + 's+': date.getSeconds().toString() // 秒 + // 有其他格式化字符需求可以继续添加,必须转化成字符串 + }; + for (var k in opt) { + ret = new RegExp('(' + k + ')').exec(fmt); + if (ret) { + fmt = fmt.replace(ret[1], ret[1].length === 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')); + } + } + return fmt; + } + }, { + key: "stopRecording", + value: function stopRecording() { + this._webrtcMediaRecorder.stop(); + } + + //TODO 保存快照 + + }, { + key: "_saveLocalSnapshot", + value: function _saveLocalSnapshot() { + var strDataURL = this.getImageDataURL(); + var date = new Date(); //实例一个时间对象; + var year = date.getFullYear(); //获取系统的年; + var month = date.getMonth() + 1; //获取系统月份,由于月份是从0开始计算,所以要加1 + var day = date.getDate(); //获取系统日 + var hour = date.getHours(); //获取系统时间 + var minute = date.getMinutes(); //分 + var second = date.getSeconds(); //秒 + var arr = strDataURL.split(","), + mime = arr[0].match(/:(.*?);/)[1], + bstr = atob(arr[1]), + n = bstr.length, + u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + var blob = new Blob([u8arr], { + type: mime + }); + var url = window.URL.createObjectURL(blob); + var a = document.createElement("a"); + a.style.display = "none"; + a.href = url; + a.download = this._recordFileName ? this._recordFileName + "-" + year + month + day + hour + minute + second + ".png" : "EasyPlayer-" + year + month + day + hour + minute + second + ".png";; + a.click(); + document.body.appendChild(a); + setTimeout(function () { + document.body.removeChild(a); + window.URL.revokeObjectURL(url); + }, 1000); + } + }, { + key: "getImageDataURL", + value: function getImageDataURL() { + if (!this._videoEle) return null; + var fileName = this._recordFileName ? this._recordFileName + "-" + this.dateFormat(new Date(), "YYYYMMDDhhmmss") + ".png" : this.dateFormat(new Date(), "YYYYMMDDhhmmss") + ".png"; + var strDataURL = void 0, + canvas = void 0; + if (!!this._videoEle && this._videoEle.tagName.toUpperCase() === "object".toUpperCase()) { + // 如果是播放rtmp流时,截图调用这个 + strDataURL = this._videoEle.vjs_snap(); + } else { + canvas = window.canvas = document.createElement("canvas"); + canvas.width = this._videoEle.videoWidth; + canvas.height = this._videoEle.videoHeight; + canvas.getContext("2d").drawImage(this._videoEle, 0, 0, canvas.width, canvas.height); // 图片大小和视频分辨率一致 + strDataURL = canvas.toDataURL("image/png"); // canvas中video中取一帧图片并转成dataURL + } + return strDataURL; + } + }, { + key: "destroy", + value: function destroy() { + if (this._videoEle && this._videoEle.srcObject) { + //遍历关闭所有track + this._webrtc_tracks.forEach(function (track) { + return track.stop(); + }); + this._mediaStream = null; + this._webrtc_tracks = []; + + this._videoParentEle.onmouseout = null; + this._videoParentEle.onmousemove = null; + + if (this._videoEle) this._videoEle.srcObject.getTracks().forEach(function (track) { + return track.stop(); + }); + if (this._videoEle) this._videoEle.srcObject = null; + if (this._audioEle) this._audioEle.srcObject.getTracks().forEach(function (track) { + return track.stop(); + }); + if (this._audioEle) this._audioEle.srcObject = null; + //完成流与视频元素的分离 + if (this._videoEle) this._videoEle.removeAttribute("src"); + if (this._videoEle) this._videoEle.removeAttribute("srcObject"); + if (this._videoEle) this._videoEle.removeAttribute("autoplay"); + + if (this._audioEle) this._videoParentEle.removeChild(this._audioEle); + if (this._videoParentEle) this._videoParentEle.removeChild(this._videoEle); + if (this._videoParentEle) this._videoParentEle.removeChild(this._videoTools); + + if (this._videoEle) this._videoEle = null; + if (this._audioEle) this._audioEle = null; + if (this._videoTools) this._videoTools = null; + if (this._videoTimeout) { + clearTimeout(this._videoTimeout); + this._videoTimeout = null; + } + } + if (this._rtcPC) { + this._rtcPC.close(); + this._rtcPC = null; + } + var easy_play_btn_el = document.querySelector(".easy-play-btn"); + if (easy_play_btn_el && easy_play_btn_el.parentNode) this._videoParentEle.removeChild(easy_play_btn_el.parentNode); + if (this._videoJsPlayer) this._videoJsPlayer.dispose(); + + var webrtc_watermark_el = document.querySelector(".webrtc-watermark"); + + webrtc_watermark_el && this._videoParentEle.removeChild(webrtc_watermark_el); + } + }]); + + return WebRtcPlayer; +}(); + +/* harmony default export */ __webpack_exports__["a"] = (WebRtcPlayer); + +/***/ }), + +/***/ "7YgM": +/***/ (function(module, exports) { + +module.exports = {"name":"@easydarwin/easyplayer","description":"hls, flv and websocket player h265","version":"5.3.1","author":"easydarwin","license":"MIT","private":false,"scripts":{"start":"cross-env NODE_ENV=development webpack-dev-server --host 0.0.0.0 --useLocalIp --open --open-page element/index.html","server":"cross-env NODE_ENV=development webpack-dev-server --host 0.0.0.0 --useLocalIp --open --open-page element/index.html","build":"cross-env NODE_ENV=production webpack --progress --hide-modules","publish":"npm publish --access=public"},"files":["dist/","README.md"],"main":"dist/component/EasyPlayer-component.min.js","devDependencies":{"@videojs/generator-helpers":"~1.2.0","@videojs/vhs-utils":"^1.1.0","axios":"0.17.1","babel-core":"6.26.0","babel-loader":"^7.1.5","babel-plugin-component":"1.0.0","babel-polyfill":"6.26.0","babel-preset-env":"1.6.0","babel-preset-stage-3":"6.24.1","clean-webpack-plugin":"0.1.17","copy-webpack-plugin":"4.1.1","cross-env":"5.0.5","css-loader":"0.28.7","document-register-element":"1.7.0","element-resize-detector":"^1.2.3","es6-promise":"^4.2.8","exports-loader":"0.6.4","expose-loader":"0.7.4","extract-text-webpack-plugin":"3.0.1","file-loader":"1.1.5","file-saver":"2.0.0","font-awesome":"4.7.0","html-webpack-plugin":"2.30.1","less":"3.0.0-alpha.3","less-loader":"4.0.5","moment":"2.18.1","optimize-css-assets-webpack-plugin":"3.2.0","style-loader":"0.19.0","uglify-js":"2.8.29","uglifyjs-webpack-plugin":"^1.3.0","url-loader":"0.6.2","vue":"2.5.13","vue-fullscreen":"^2.1.6","vue-custom-element":"^3.2.6","vue-loader":"13.3.0","vue-router":"3.0.1","vue-template-compiler":"2.5.13","vuex":"2.4.1","wasm-loader":"^1.3.0","webpack":"3.6.0","webpack-concat-plugin":"2.4.2","webpack-dev-server":"2.7.1","webworkify-webpack":"^2.1.5","wrapper-webpack-plugin":"1.0.0"},"keywords":["easy-player","hls","rtmp","flv"],"pack":[{"name":"EasyPlayer.js","format":"zip","pattern":"{dist/element/**,dist/component/**,README.pdf}","options":{"dot":true,"ignore":[]}}],"dependencies":{}} + +/***/ }), + +/***/ "7ZNp": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +// Helper +function reverse(map) { + const res = {}; + + Object.keys(map).forEach(function(key) { + // Convert key to integer if it is stringified + if ((key | 0) == key) + key = key | 0; + + const value = map[key]; + res[value] = key; + }); + + return res; +} + +exports.tagClass = { + 0: 'universal', + 1: 'application', + 2: 'context', + 3: 'private' +}; +exports.tagClassByName = reverse(exports.tagClass); + +exports.tag = { + 0x00: 'end', + 0x01: 'bool', + 0x02: 'int', + 0x03: 'bitstr', + 0x04: 'octstr', + 0x05: 'null_', + 0x06: 'objid', + 0x07: 'objDesc', + 0x08: 'external', + 0x09: 'real', + 0x0a: 'enum', + 0x0b: 'embed', + 0x0c: 'utf8str', + 0x0d: 'relativeOid', + 0x10: 'seq', + 0x11: 'set', + 0x12: 'numstr', + 0x13: 'printstr', + 0x14: 't61str', + 0x15: 'videostr', + 0x16: 'ia5str', + 0x17: 'utctime', + 0x18: 'gentime', + 0x19: 'graphstr', + 0x1a: 'iso646str', + 0x1b: 'genstr', + 0x1c: 'unistr', + 0x1d: 'charstr', + 0x1e: 'bmpstr' +}; +exports.tagByName = reverse(exports.tag); + + +/***/ }), + +/***/ "7tYQ": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var hash = __webpack_require__("JSLd"); +var curves = __webpack_require__("+wZ5"); +var utils = __webpack_require__("UXd7"); +var assert = utils.assert; +var parseBytes = utils.parseBytes; +var KeyPair = __webpack_require__("yg5J"); +var Signature = __webpack_require__("H/6M"); + +function EDDSA(curve) { + assert(curve === 'ed25519', 'only tested with ed25519 so far'); + + if (!(this instanceof EDDSA)) + return new EDDSA(curve); + + curve = curves[curve].curve; + this.curve = curve; + this.g = curve.g; + this.g.precompute(curve.n.bitLength() + 1); + + this.pointClass = curve.point().constructor; + this.encodingLength = Math.ceil(curve.n.bitLength() / 8); + this.hash = hash.sha512; +} + +module.exports = EDDSA; + +/** +* @param {Array|String} message - message bytes +* @param {Array|String|KeyPair} secret - secret bytes or a keypair +* @returns {Signature} - signature +*/ +EDDSA.prototype.sign = function sign(message, secret) { + message = parseBytes(message); + var key = this.keyFromSecret(secret); + var r = this.hashInt(key.messagePrefix(), message); + var R = this.g.mul(r); + var Rencoded = this.encodePoint(R); + var s_ = this.hashInt(Rencoded, key.pubBytes(), message) + .mul(key.priv()); + var S = r.add(s_).umod(this.curve.n); + return this.makeSignature({ R: R, S: S, Rencoded: Rencoded }); +}; + +/** +* @param {Array} message - message bytes +* @param {Array|String|Signature} sig - sig bytes +* @param {Array|String|Point|KeyPair} pub - public key +* @returns {Boolean} - true if public key matches sig of message +*/ +EDDSA.prototype.verify = function verify(message, sig, pub) { + message = parseBytes(message); + sig = this.makeSignature(sig); + var key = this.keyFromPublic(pub); + var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message); + var SG = this.g.mul(sig.S()); + var RplusAh = sig.R().add(key.pub().mul(h)); + return RplusAh.eq(SG); +}; + +EDDSA.prototype.hashInt = function hashInt() { + var hash = this.hash(); + for (var i = 0; i < arguments.length; i++) + hash.update(arguments[i]); + return utils.intFromLE(hash.digest()).umod(this.curve.n); +}; + +EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) { + return KeyPair.fromPublic(this, pub); +}; + +EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) { + return KeyPair.fromSecret(this, secret); +}; + +EDDSA.prototype.makeSignature = function makeSignature(sig) { + if (sig instanceof Signature) + return sig; + return new Signature(this, sig); +}; + +/** +* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2 +* +* EDDSA defines methods for encoding and decoding points and integers. These are +* helper convenience methods, that pass along to utility functions implied +* parameters. +* +*/ +EDDSA.prototype.encodePoint = function encodePoint(point) { + var enc = point.getY().toArray('le', this.encodingLength); + enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0; + return enc; +}; + +EDDSA.prototype.decodePoint = function decodePoint(bytes) { + bytes = utils.parseBytes(bytes); + + var lastIx = bytes.length - 1; + var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80); + var xIsOdd = (bytes[lastIx] & 0x80) !== 0; + + var y = utils.intFromLE(normed); + return this.curve.pointFromY(y, xIsOdd); +}; + +EDDSA.prototype.encodeInt = function encodeInt(num) { + return num.toArray('le', this.encodingLength); +}; + +EDDSA.prototype.decodeInt = function decodeInt(bytes) { + return utils.intFromLE(bytes); +}; + +EDDSA.prototype.isPoint = function isPoint(val) { + return val instanceof this.pointClass; +}; + + +/***/ }), + +/***/ "7uVc": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Armenian [hy-am] +//! author : Armendarabyan : https://github.com/armendarabyan + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var hyAm = moment.defineLocale('hy-am', { + months : { + format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'), + standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_') + }, + monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), + weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'), + weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY թ.', + LLL : 'D MMMM YYYY թ., HH:mm', + LLLL : 'dddd, D MMMM YYYY թ., HH:mm' + }, + calendar : { + sameDay: '[այսօր] LT', + nextDay: '[վաղը] LT', + lastDay: '[երեկ] LT', + nextWeek: function () { + return 'dddd [օրը ժամը] LT'; + }, + lastWeek: function () { + return '[անցած] dddd [օրը ժամը] LT'; + }, + sameElse: 'L' + }, + relativeTime : { + future : '%s հետո', + past : '%s առաջ', + s : 'մի քանի վայրկյան', + m : 'րոպե', + mm : '%d րոպե', + h : 'ժամ', + hh : '%d ժամ', + d : 'օր', + dd : '%d օր', + M : 'ամիս', + MM : '%d ամիս', + y : 'տարի', + yy : '%d տարի' + }, + meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, + isPM: function (input) { + return /^(ցերեկվա|երեկոյան)$/.test(input); + }, + meridiem : function (hour) { + if (hour < 4) { + return 'գիշերվա'; + } else if (hour < 12) { + return 'առավոտվա'; + } else if (hour < 17) { + return 'ցերեկվա'; + } else { + return 'երեկոյան'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, + ordinal: function (number, period) { + switch (period) { + case 'DDD': + case 'w': + case 'W': + case 'DDDo': + if (number === 1) { + return number + '-ին'; + } + return number + '-րդ'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return hyAm; + +}))); + + +/***/ }), + +/***/ "87iJ": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Uzbek [uz] +//! author : Sardor Muminov : https://github.com/muminoff + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var uz = moment.defineLocale('uz', { + months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'), + monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), + weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), + weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), + weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'D MMMM YYYY, dddd HH:mm' + }, + calendar : { + sameDay : '[Бугун соат] LT [да]', + nextDay : '[Эртага] LT [да]', + nextWeek : 'dddd [куни соат] LT [да]', + lastDay : '[Кеча соат] LT [да]', + lastWeek : '[Утган] dddd [куни соат] LT [да]', + sameElse : 'L' + }, + relativeTime : { + future : 'Якин %s ичида', + past : 'Бир неча %s олдин', + s : 'фурсат', + m : 'бир дакика', + mm : '%d дакика', + h : 'бир соат', + hh : '%d соат', + d : 'бир кун', + dd : '%d кун', + M : 'бир ой', + MM : '%d ой', + y : 'бир йил', + yy : '%d йил' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 4th is the first week of the year. + } +}); + +return uz; + +}))); + + +/***/ }), + +/***/ "8IHL": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Arabic (Tunisia) [ar-tn] +//! author : Nader Toukabri : https://github.com/naderio + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var arTn = moment.defineLocale('ar-tn', { + months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات' + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return arTn; + +}))); + + +/***/ }), + +/***/ "8KD+": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {var elliptic = __webpack_require__("qve+") +var BN = __webpack_require__("u/Wk") + +module.exports = function createECDH (curve) { + return new ECDH(curve) +} + +var aliases = { + secp256k1: { + name: 'secp256k1', + byteLength: 32 + }, + secp224r1: { + name: 'p224', + byteLength: 28 + }, + prime256v1: { + name: 'p256', + byteLength: 32 + }, + prime192v1: { + name: 'p192', + byteLength: 24 + }, + ed25519: { + name: 'ed25519', + byteLength: 32 + }, + secp384r1: { + name: 'p384', + byteLength: 48 + }, + secp521r1: { + name: 'p521', + byteLength: 66 + } +} + +aliases.p224 = aliases.secp224r1 +aliases.p256 = aliases.secp256r1 = aliases.prime256v1 +aliases.p192 = aliases.secp192r1 = aliases.prime192v1 +aliases.p384 = aliases.secp384r1 +aliases.p521 = aliases.secp521r1 + +function ECDH (curve) { + this.curveType = aliases[curve] + if (!this.curveType) { + this.curveType = { + name: curve + } + } + this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap + this.keys = void 0 +} + +ECDH.prototype.generateKeys = function (enc, format) { + this.keys = this.curve.genKeyPair() + return this.getPublicKey(enc, format) +} + +ECDH.prototype.computeSecret = function (other, inenc, enc) { + inenc = inenc || 'utf8' + if (!Buffer.isBuffer(other)) { + other = new Buffer(other, inenc) + } + var otherPub = this.curve.keyFromPublic(other).getPublic() + var out = otherPub.mul(this.keys.getPrivate()).getX() + return formatReturnValue(out, enc, this.curveType.byteLength) +} + +ECDH.prototype.getPublicKey = function (enc, format) { + var key = this.keys.getPublic(format === 'compressed', true) + if (format === 'hybrid') { + if (key[key.length - 1] % 2) { + key[0] = 7 + } else { + key[0] = 6 + } + } + return formatReturnValue(key, enc) +} + +ECDH.prototype.getPrivateKey = function (enc) { + return formatReturnValue(this.keys.getPrivate(), enc) +} + +ECDH.prototype.setPublicKey = function (pub, enc) { + enc = enc || 'utf8' + if (!Buffer.isBuffer(pub)) { + pub = new Buffer(pub, enc) + } + this.keys._importPublic(pub) + return this +} + +ECDH.prototype.setPrivateKey = function (priv, enc) { + enc = enc || 'utf8' + if (!Buffer.isBuffer(priv)) { + priv = new Buffer(priv, enc) + } + + var _priv = new BN(priv) + _priv = _priv.toString(16) + this.keys = this.curve.genKeyPair() + this.keys._importPrivate(_priv) + return this +} + +function formatReturnValue (bn, enc, len) { + if (!Array.isArray(bn)) { + bn = bn.toArray() + } + var buf = new Buffer(bn) + if (len && buf.length < len) { + var zeros = new Buffer(len - buf.length) + zeros.fill(0) + buf = Buffer.concat([zeros, buf]) + } + if (!enc) { + return buf + } else { + return buf.toString(enc) + } +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("NfRg").Buffer)) + +/***/ }), + +/***/ "8ZH7": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {module.exports = global["EPlayer"] = __webpack_require__("rdaQ"); +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("mFPK"))) + +/***/ }), + +/***/ "8liJ": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__("P01y"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_document_register_element_build_document_register_element__ = __webpack_require__("duxV"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_document_register_element_build_document_register_element___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_document_register_element_build_document_register_element__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_custom_element__ = __webpack_require__("HB8Z"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_components_EasyPlayer_vue__ = __webpack_require__("ytBe"); + + + + + +__WEBPACK_IMPORTED_MODULE_0_vue___default.a.use(__WEBPACK_IMPORTED_MODULE_2_vue_custom_element__["a" /* default */]); + + +__WEBPACK_IMPORTED_MODULE_0_vue___default.a.customElement(__WEBPACK_IMPORTED_MODULE_3_components_EasyPlayer_vue__["a" /* default */].name, __WEBPACK_IMPORTED_MODULE_3_components_EasyPlayer_vue__["a" /* default */]); + +/***/ }), + +/***/ "96zr": +/***/ (function(module, exports, __webpack_require__) { + +var exports = module.exports = function SHA (algorithm) { + algorithm = algorithm.toLowerCase() + + var Algorithm = exports[algorithm] + if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') + + return new Algorithm() +} + +exports.sha = __webpack_require__("SqhN") +exports.sha1 = __webpack_require__("rrHa") +exports.sha224 = __webpack_require__("nkM1") +exports.sha256 = __webpack_require__("sdPl") +exports.sha384 = __webpack_require__("nLML") +exports.sha512 = __webpack_require__("pZ5O") + + +/***/ }), + +/***/ "99pL": +/***/ (function(module, exports) { + +exports.encrypt = function (self, block) { + return self._cipher.encryptBlock(block) +} + +exports.decrypt = function (self, block) { + return self._cipher.decryptBlock(block) +} + + +/***/ }), + +/***/ "9CN6": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Malayalam [ml] +//! author : Floyd Pink : https://github.com/floydpink + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var ml = moment.defineLocale('ml', { + months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), + monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), + monthsParseExact : true, + weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), + weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), + weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), + longDateFormat : { + LT : 'A h:mm -നു', + LTS : 'A h:mm:ss -നു', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm -നു', + LLLL : 'dddd, D MMMM YYYY, A h:mm -നു' + }, + calendar : { + sameDay : '[ഇന്ന്] LT', + nextDay : '[നാളെ] LT', + nextWeek : 'dddd, LT', + lastDay : '[ഇന്നലെ] LT', + lastWeek : '[കഴിഞ്ഞ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s കഴിഞ്ഞ്', + past : '%s മുൻപ്', + s : 'അൽപ നിമിഷങ്ങൾ', + m : 'ഒരു മിനിറ്റ്', + mm : '%d മിനിറ്റ്', + h : 'ഒരു മണിക്കൂർ', + hh : '%d മണിക്കൂർ', + d : 'ഒരു ദിവസം', + dd : '%d ദിവസം', + M : 'ഒരു മാസം', + MM : '%d മാസം', + y : 'ഒരു വർഷം', + yy : '%d വർഷം' + }, + meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if ((meridiem === 'രാത്രി' && hour >= 4) || + meridiem === 'ഉച്ച കഴിഞ്ഞ്' || + meridiem === 'വൈകുന്നേരം') { + return hour + 12; + } else { + return hour; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'രാത്രി'; + } else if (hour < 12) { + return 'രാവിലെ'; + } else if (hour < 17) { + return 'ഉച്ച കഴിഞ്ഞ്'; + } else if (hour < 20) { + return 'വൈകുന്നേരം'; + } else { + return 'രാത്രി'; + } + } +}); + +return ml; + +}))); + + +/***/ }), + +/***/ "9tLW": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : English (Australia) [en-au] +//! author : Jared Morse : https://github.com/jarcoal + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var enAu = moment.defineLocale('en-au', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return enAu; + +}))); + + +/***/ }), + +/***/ "AKP/": +/***/ (function(module, exports, __webpack_require__) { + +var BN = __webpack_require__("u/Wk") +var Buffer = __webpack_require__("DLTi").Buffer + +function withPublic (paddedMsg, key) { + return Buffer.from(paddedMsg + .toRed(BN.mont(key.modulus)) + .redPow(new BN(key.publicExponent)) + .fromRed() + .toArray()) +} + +module.exports = withPublic + + +/***/ }), + +/***/ "AYvJ": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) { + "use strict"; + + if (global.setImmediate) { + return; + } + + var nextHandle = 1; // Spec says greater than zero + var tasksByHandle = {}; + var currentlyRunningATask = false; + var doc = global.document; + var registerImmediate; + + function setImmediate(callback) { + // Callback can either be a function or a string + if (typeof callback !== "function") { + callback = new Function("" + callback); + } + // Copy function arguments + var args = new Array(arguments.length - 1); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i + 1]; + } + // Store and register the task + var task = { callback: callback, args: args }; + tasksByHandle[nextHandle] = task; + registerImmediate(nextHandle); + return nextHandle++; + } + + function clearImmediate(handle) { + delete tasksByHandle[handle]; + } + + function run(task) { + var callback = task.callback; + var args = task.args; + switch (args.length) { + case 0: + callback(); + break; + case 1: + callback(args[0]); + break; + case 2: + callback(args[0], args[1]); + break; + case 3: + callback(args[0], args[1], args[2]); + break; + default: + callback.apply(undefined, args); + break; + } + } + + function runIfPresent(handle) { + // From the spec: "Wait until any invocations of this algorithm started before this one have completed." + // So if we're currently running a task, we'll need to delay this invocation. + if (currentlyRunningATask) { + // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a + // "too much recursion" error. + setTimeout(runIfPresent, 0, handle); + } else { + var task = tasksByHandle[handle]; + if (task) { + currentlyRunningATask = true; + try { + run(task); + } finally { + clearImmediate(handle); + currentlyRunningATask = false; + } + } + } + } + + function installNextTickImplementation() { + registerImmediate = function(handle) { + process.nextTick(function () { runIfPresent(handle); }); + }; + } + + function canUsePostMessage() { + // The test against `importScripts` prevents this implementation from being installed inside a web worker, + // where `global.postMessage` means something completely different and can't be used for this purpose. + if (global.postMessage && !global.importScripts) { + var postMessageIsAsynchronous = true; + var oldOnMessage = global.onmessage; + global.onmessage = function() { + postMessageIsAsynchronous = false; + }; + global.postMessage("", "*"); + global.onmessage = oldOnMessage; + return postMessageIsAsynchronous; + } + } + + function installPostMessageImplementation() { + // Installs an event handler on `global` for the `message` event: see + // * https://developer.mozilla.org/en/DOM/window.postMessage + // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages + + var messagePrefix = "setImmediate$" + Math.random() + "$"; + var onGlobalMessage = function(event) { + if (event.source === global && + typeof event.data === "string" && + event.data.indexOf(messagePrefix) === 0) { + runIfPresent(+event.data.slice(messagePrefix.length)); + } + }; + + if (global.addEventListener) { + global.addEventListener("message", onGlobalMessage, false); + } else { + global.attachEvent("onmessage", onGlobalMessage); + } + + registerImmediate = function(handle) { + global.postMessage(messagePrefix + handle, "*"); + }; + } + + function installMessageChannelImplementation() { + var channel = new MessageChannel(); + channel.port1.onmessage = function(event) { + var handle = event.data; + runIfPresent(handle); + }; + + registerImmediate = function(handle) { + channel.port2.postMessage(handle); + }; + } + + function installReadyStateChangeImplementation() { + var html = doc.documentElement; + registerImmediate = function(handle) { + // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted + // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called. + var script = doc.createElement("script"); + script.onreadystatechange = function () { + runIfPresent(handle); + script.onreadystatechange = null; + html.removeChild(script); + script = null; + }; + html.appendChild(script); + }; + } + + function installSetTimeoutImplementation() { + registerImmediate = function(handle) { + setTimeout(runIfPresent, 0, handle); + }; + } + + // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live. + var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global); + attachTo = attachTo && attachTo.setTimeout ? attachTo : global; + + // Don't get fooled by e.g. browserify environments. + if ({}.toString.call(global.process) === "[object process]") { + // For Node.js before 0.9 + installNextTickImplementation(); + + } else if (canUsePostMessage()) { + // For non-IE10 modern browsers + installPostMessageImplementation(); + + } else if (global.MessageChannel) { + // For web workers, where supported + installMessageChannelImplementation(); + + } else if (doc && "onreadystatechange" in doc.createElement("script")) { + // For IE 6–8 + installReadyStateChangeImplementation(); + + } else { + // For older browsers + installSetTimeoutImplementation(); + } + + attachTo.setImmediate = setImmediate; + attachTo.clearImmediate = clearImmediate; +}(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self)); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("mFPK"), __webpack_require__("V0EG"))) + +/***/ }), + +/***/ "AfJp": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Ukrainian [uk] +//! author : zemlanin : https://github.com/zemlanin +//! Author : Menelion Elensúle : https://github.com/Oire + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); +} +function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', + 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин', + 'dd': 'день_дні_днів', + 'MM': 'місяць_місяці_місяців', + 'yy': 'рік_роки_років' + }; + if (key === 'm') { + return withoutSuffix ? 'хвилина' : 'хвилину'; + } + else if (key === 'h') { + return withoutSuffix ? 'година' : 'годину'; + } + else { + return number + ' ' + plural(format[key], +number); + } +} +function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), + 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), + 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') + }; + + if (!m) { + return weekdays['nominative']; + } + + var nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? + 'accusative' : + ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? + 'genitive' : + 'nominative'); + return weekdays[nounCase][m.day()]; +} +function processHoursFunction(str) { + return function () { + return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; + }; +} + +var uk = moment.defineLocale('uk', { + months : { + 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'), + 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_') + }, + monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), + weekdays : weekdaysCaseReplace, + weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY р.', + LLL : 'D MMMM YYYY р., HH:mm', + LLLL : 'dddd, D MMMM YYYY р., HH:mm' + }, + calendar : { + sameDay: processHoursFunction('[Сьогодні '), + nextDay: processHoursFunction('[Завтра '), + lastDay: processHoursFunction('[Вчора '), + nextWeek: processHoursFunction('[У] dddd ['), + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return processHoursFunction('[Минулої] dddd [').call(this); + case 1: + case 2: + case 4: + return processHoursFunction('[Минулого] dddd [').call(this); + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'за %s', + past : '%s тому', + s : 'декілька секунд', + m : relativeTimeWithPlural, + mm : relativeTimeWithPlural, + h : 'годину', + hh : relativeTimeWithPlural, + d : 'день', + dd : relativeTimeWithPlural, + M : 'місяць', + MM : relativeTimeWithPlural, + y : 'рік', + yy : relativeTimeWithPlural + }, + // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason + meridiemParse: /ночі|ранку|дня|вечора/, + isPM: function (input) { + return /^(дня|вечора)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночі'; + } else if (hour < 12) { + return 'ранку'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечора'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return number + '-й'; + case 'D': + return number + '-го'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return uk; + +}))); + + +/***/ }), + +/***/ "B0bw": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Polish [pl] +//! author : Rafal Hirsz : https://github.com/evoL + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'); +var monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); +function plural(n) { + return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); +} +function translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'minuta' : 'minutę'; + case 'mm': + return result + (plural(number) ? 'minuty' : 'minut'); + case 'h': + return withoutSuffix ? 'godzina' : 'godzinę'; + case 'hh': + return result + (plural(number) ? 'godziny' : 'godzin'); + case 'MM': + return result + (plural(number) ? 'miesiące' : 'miesięcy'); + case 'yy': + return result + (plural(number) ? 'lata' : 'lat'); + } +} + +var pl = moment.defineLocale('pl', { + months : function (momentToFormat, format) { + if (!momentToFormat) { + return monthsNominative; + } else if (format === '') { + // Hack: if format empty we know this is used to generate + // RegExp by moment. Give then back both valid forms of months + // in RegExp ready format. + return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; + } else if (/D MMMM/.test(format)) { + return monthsSubjective[momentToFormat.month()]; + } else { + return monthsNominative[momentToFormat.month()]; + } + }, + monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), + weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), + weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), + weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Dziś o] LT', + nextDay: '[Jutro o] LT', + nextWeek: '[W] dddd [o] LT', + lastDay: '[Wczoraj o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[W zeszłą niedzielę o] LT'; + case 3: + return '[W zeszłą środę o] LT'; + case 6: + return '[W zeszłą sobotę o] LT'; + default: + return '[W zeszły] dddd [o] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'za %s', + past : '%s temu', + s : 'kilka sekund', + m : translate, + mm : translate, + h : translate, + hh : translate, + d : '1 dzień', + dd : '%d dni', + M : 'miesiąc', + MM : translate, + y : 'rok', + yy : translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return pl; + +}))); + + +/***/ }), + +/***/ "B9Ct": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Hindi [hi] +//! author : Mayank Singhal : https://github.com/mayanksinghal + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' +}; +var numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' +}; + +var hi = moment.defineLocale('hi', { + months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), + monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), + monthsParseExact: true, + weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), + longDateFormat : { + LT : 'A h:mm बजे', + LTS : 'A h:mm:ss बजे', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm बजे', + LLLL : 'dddd, D MMMM YYYY, A h:mm बजे' + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[कल] LT', + nextWeek : 'dddd, LT', + lastDay : '[कल] LT', + lastWeek : '[पिछले] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s में', + past : '%s पहले', + s : 'कुछ ही क्षण', + m : 'एक मिनट', + mm : '%d मिनट', + h : 'एक घंटा', + hh : '%d घंटे', + d : 'एक दिन', + dd : '%d दिन', + M : 'एक महीने', + MM : '%d महीने', + y : 'एक वर्ष', + yy : '%d वर्ष' + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + // Hindi notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. + meridiemParse: /रात|सुबह|दोपहर|शाम/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'रात') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सुबह') { + return hour; + } else if (meridiem === 'दोपहर') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'शाम') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'रात'; + } else if (hour < 10) { + return 'सुबह'; + } else if (hour < 17) { + return 'दोपहर'; + } else if (hour < 20) { + return 'शाम'; + } else { + return 'रात'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +return hi; + +}))); + + +/***/ }), + +/***/ "BMRL": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + + +module.exports = Writable; +/* <replacement> */ + +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} // It seems a linked list but it is not +// there will be only 2 of these for each stream + + +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* </replacement> */ + +/*<replacement>*/ + + +var Duplex; +/*</replacement>*/ + +Writable.WritableState = WritableState; +/*<replacement>*/ + +var internalUtil = { + deprecate: __webpack_require__("wjIV") +}; +/*</replacement>*/ + +/*<replacement>*/ + +var Stream = __webpack_require__("IwBp"); +/*</replacement>*/ + + +var Buffer = __webpack_require__("NfRg").Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +var destroyImpl = __webpack_require__("Lxgc"); + +var _require = __webpack_require__("zBhI"), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = __webpack_require__("DzCi").codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, + ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; + +var errorOrDestroy = destroyImpl.errorOrDestroy; + +__webpack_require__("mwrz")(Writable, Stream); + +function nop() {} + +function WritableState(options, stream, isDuplex) { + Duplex = Duplex || __webpack_require__("4zZu"); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream, + // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream + // contains buffers or objects. + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + + this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called + + this.finalCalled = false; // drain event flag. + + this.needDrain = false; // at the start of calling end() + + this.ending = false; // when end() has been called, and returned + + this.ended = false; // when 'finish' is emitted + + this.finished = false; // has it been destroyed + + this.destroyed = false; // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + + this.length = 0; // a flag to see when we're in the middle of a write. + + this.writing = false; // when true all writes will be buffered until .uncork() call + + this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + + this.sync = true; // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + + this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) + + this.onwrite = function (er) { + onwrite(stream, er); + }; // the callback that the user supplies to write(chunk,encoding,cb) + + + this.writecb = null; // the amount that is being written when _write is called. + + this.writelen = 0; + this.bufferedRequest = null; + this.lastBufferedRequest = null; // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + + this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + + this.prefinished = false; // True if the error was already emitted and should not be thrown again + + this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') + + this.autoDestroy = !!options.autoDestroy; // count buffered requests + + this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + + while (current) { + out.push(current); + current = current.next; + } + + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function writableStateBufferGetter() { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); // Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. + + +var realHasInstance; + +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function value(object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function realHasInstance(object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || __webpack_require__("4zZu"); // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + // Checking for a Stream.Duplex instance is faster here instead of inside + // the WritableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); + this._writableState = new WritableState(options, this, isDuplex); // legacy. + + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + if (typeof options.writev === 'function') this._writev = options.writev; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} // Otherwise people can pipe Writable streams, which is just wrong. + + +Writable.prototype.pipe = function () { + errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); +}; + +function writeAfterEnd(stream, cb) { + var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb + + errorOrDestroy(stream, er); + process.nextTick(cb, er); +} // Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. + + +function validChunk(stream, state, chunk, cb) { + var er; + + if (chunk === null) { + er = new ERR_STREAM_NULL_VALUES(); + } else if (typeof chunk !== 'string' && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); + } + + if (er) { + errorOrDestroy(stream, er); + process.nextTick(cb, er); + return false; + } + + return true; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + if (typeof cb !== 'function') cb = nop; + if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + return ret; +}; + +Writable.prototype.cork = function () { + this._writableState.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); // if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. + +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + + var len = state.objectMode ? 1 : chunk.length; + state.length += len; + var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. + + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + process.nextTick(cb, er); // this can emit finish, and it will always happen + // after error + + process.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); // this can emit finish, but finish must + // always follow error + + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); + onwriteStateUpdate(state); + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state) || stream.destroyed; + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + process.nextTick(afterWrite, stream, state, finished, cb); + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} // Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. + + +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} // if there's something in the buffer waiting, then process it + + +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + var count = 0; + var allBuffers = true; + + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + + buffer.allBuffers = allBuffers; + doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + + state.pendingcb++; + state.lastBufferedRequest = null; + + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks + + if (state.corked) { + state.corked = 1; + this.uncork(); + } // ignore unnecessary end() calls. + + + if (!state.ending) endWritable(this, state, cb); + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} + +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + + if (err) { + errorOrDestroy(stream, err); + } + + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} + +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function' && !state.destroyed) { + state.pendingcb++; + state.finalCalled = true; + process.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + + if (need) { + prefinish(stream, state); + + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the readable side is ready for autoDestroy as well + var rState = stream._readableState; + + if (!rState || rState.autoDestroy && rState.endEmitted) { + stream.destroy(); + } + } + } + } + + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + + if (cb) { + if (state.finished) process.nextTick(cb);else stream.once('finish', cb); + } + + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } // reuse the free corkReq. + + + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._writableState === undefined) { + return false; + } + + return this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._writableState.destroyed = value; + } +}); +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; + +Writable.prototype._destroy = function (err, cb) { + cb(err); +}; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("mFPK"), __webpack_require__("V0EG"))) + +/***/ }), + +/***/ "BVJ2": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const inherits = __webpack_require__("mwrz"); +const Buffer = __webpack_require__("FxzF").Buffer; + +const DERDecoder = __webpack_require__("Nre6"); + +function PEMDecoder(entity) { + DERDecoder.call(this, entity); + this.enc = 'pem'; +} +inherits(PEMDecoder, DERDecoder); +module.exports = PEMDecoder; + +PEMDecoder.prototype.decode = function decode(data, options) { + const lines = data.toString().split(/[\r\n]+/g); + + const label = options.label.toUpperCase(); + + const re = /^-----(BEGIN|END) ([^-]+)-----$/; + let start = -1; + let end = -1; + for (let i = 0; i < lines.length; i++) { + const match = lines[i].match(re); + if (match === null) + continue; + + if (match[2] !== label) + continue; + + if (start === -1) { + if (match[1] !== 'BEGIN') + break; + start = i; + } else { + if (match[1] !== 'END') + break; + end = i; + break; + } + } + if (start === -1 || end === -1) + throw new Error('PEM section not found for: ' + label); + + const base64 = lines.slice(start + 1, end).join(''); + // Remove excessive symbols + base64.replace(/[^a-z0-9+/=]+/gi, ''); + + const input = Buffer.from(base64, 'base64'); + return DERDecoder.prototype.decode.call(this, input, options); +}; + + +/***/ }), + +/***/ "BdQ0": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:"easyH5Player",staticClass:"easy-player",class:[{'easy-player-fill-container':_vm.stretch},{'hide-paused':_vm.loading},{'is-first-paused':_vm.isFirstPaused}]},[(_vm.showRightMenu)?_c('div',{ref:"versionRef",staticClass:"easy-player-right-menu",style:(_vm.versionStyle),attrs:{"oncontextmenu":"return false"}},[(_vm.showEnterprise)?_c('div',{staticClass:"menu-item"},[_c('a',{attrs:{"href":_vm.appEnterprise?_vm.appEnterprise.aboutUS:'',"target":"_blank"}},[_vm._v("关于我们")])]):_vm._e(),_vm._v(" "),_c('div',{staticClass:"menu-item"},[_c('a',{attrs:{"href":"javascript:void(0);"}},[_vm._v("版本信息 "+_vm._s(_vm.appVersion || ''))])]),_vm._v(" "),_c('div',{staticClass:"menu-item",on:{"click":_vm.onTouchCopyVideoSrc}},[_c('a',{attrs:{"href":"javascript:void(0);"}},[_vm._v("复制视频地址("+_vm._s(_vm.isStreamH265 ? 'H265' : 'H264')+")")])]),_vm._v(" "),(_vm.showEnterprise)?_c('div',{staticClass:"menu-item copy-right"},[_c('a',{attrs:{"href":_vm.appEnterprise?_vm.appEnterprise.tsingsee:'',"target":"_blank"}},[_vm._v(_vm._s(_vm.appEnterprise ? _vm.appEnterprise.copyright : ''))])]):_vm._e(),_vm._v(" "),_c('div',{staticClass:"menu-item",on:{"click":_vm.onTouchRightMenuClose}},[_c('a',{attrs:{"href":"javascript:void(0);"}},[_vm._v("关闭播放")])])]):_vm._e(),_vm._v(" "),(_vm.showViewMessage)?_c('div',{staticClass:"message-view"},[_c('div',{staticClass:"title"},[_c('span',[_vm._v("调试信息")]),_vm._v(" "),_c('span',{staticStyle:{"position":"absolute","right":"10px","cursor":"pointer"},on:{"click":function($event){_vm.showViewMessage= false}}},[_vm._v("X")])]),_vm._v(" "),_c('div',{staticClass:"content"},[_vm._l((_vm.playerMessage),function(message,index){return [_c('div',{key:index,staticClass:"message",style:({bottom: (index===_vm.playerMessage.length-1)?'2px':(((_vm.playerMessage.length-1-index)*20) + "px")})},[_c('span',[_vm._v(_vm._s(message.msg))]),_c('span',[_vm._v(_vm._s(message.status))])])]})],2)]):_vm._e(),_vm._v(" "),_c('div',{ref:"videoInner",staticClass:"easy-video-player-inner"}),_vm._v(" "),_c('div',{staticClass:"easy-player-poster",style:({ backgroundImage: ("url(" + (_vm.restartSnapshot || _vm.poster) + ")")}),attrs:{"oncontextmenu":"return false"}}),_vm._v(" "),_c('div',{ref:"loadingTextInfo",staticClass:"easy-player-loading-text",style:({opacity:(!_vm.isCacheCleanUp&&_vm.showMessage?1:0)})},[_vm._l((_vm.playerMessage),function(message,index){return [_c('div',{key:index},[_c('span',[_vm._v(_vm._s(message.msg))]),_c('span',[_vm._v(_vm._s(message.status))])])]})],2),_vm._v(" "),_c('span',{directives:[{name:"show",rawName:"v-show",value:(!!_vm.videoUrl),expression:"!!videoUrl"}],staticClass:"video-title video-title-top-right",attrs:{"title":_vm.videoTitle}},[_vm._v(_vm._s(_vm.videoTitle))])])} +var staticRenderFns = [] +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); + +/***/ }), + +/***/ "BkJT": +/***/ (function(module, exports) { + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +// css base code, injected by the css-loader +module.exports = function(useSourceMap) { + var list = []; + + // return the list of modules as css string + list.toString = function toString() { + return this.map(function (item) { + var content = cssWithMappingToString(item, useSourceMap); + if(item[2]) { + return "@media " + item[2] + "{" + content + "}"; + } else { + return content; + } + }).join(""); + }; + + // import a list of modules into the list + list.i = function(modules, mediaQuery) { + if(typeof modules === "string") + modules = [[null, modules, ""]]; + var alreadyImportedModules = {}; + for(var i = 0; i < this.length; i++) { + var id = this[i][0]; + if(typeof id === "number") + alreadyImportedModules[id] = true; + } + for(i = 0; i < modules.length; i++) { + var item = modules[i]; + // skip already imported module + // this implementation is not 100% perfect for weird media query combinations + // when a module is imported multiple times with different media queries. + // I hope this will never occur (Hey this way we have smaller bundles) + if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) { + if(mediaQuery && !item[2]) { + item[2] = mediaQuery; + } else if(mediaQuery) { + item[2] = "(" + item[2] + ") and (" + mediaQuery + ")"; + } + list.push(item); + } + } + }; + return list; +}; + +function cssWithMappingToString(item, useSourceMap) { + var content = item[1] || ''; + var cssMapping = item[3]; + if (!cssMapping) { + return content; + } + + if (useSourceMap && typeof btoa === 'function') { + var sourceMapping = toComment(cssMapping); + var sourceURLs = cssMapping.sources.map(function (source) { + return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */' + }); + + return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); + } + + return [content].join('\n'); +} + +// Adapted from convert-source-map (MIT) +function toComment(sourceMap) { + // eslint-disable-next-line no-undef + var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); + var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; + + return '/*# ' + data + ' */'; +} + + +/***/ }), + +/***/ "BuFl": +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__("DLTi").Buffer +var xor = __webpack_require__("EUFM") + +function encryptStart (self, data, decrypt) { + var len = data.length + var out = xor(data, self._cache) + self._cache = self._cache.slice(len) + self._prev = Buffer.concat([self._prev, decrypt ? data : out]) + return out +} + +exports.encrypt = function (self, data, decrypt) { + var out = Buffer.allocUnsafe(0) + var len + + while (data.length) { + if (self._cache.length === 0) { + self._cache = self._cipher.encryptBlock(self._prev) + self._prev = Buffer.allocUnsafe(0) + } + + if (self._cache.length <= data.length) { + len = self._cache.length + out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)]) + data = data.slice(len) + } else { + out = Buffer.concat([out, encryptStart(self, data, decrypt)]) + break + } + } + + return out +} + + +/***/ }), + +/***/ "BvRH": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var BN = __webpack_require__("u/Wk"); +var HmacDRBG = __webpack_require__("ShjI"); +var utils = __webpack_require__("UXd7"); +var curves = __webpack_require__("+wZ5"); +var rand = __webpack_require__("fCcy"); +var assert = utils.assert; + +var KeyPair = __webpack_require__("4/lZ"); +var Signature = __webpack_require__("nX6w"); + +function EC(options) { + if (!(this instanceof EC)) + return new EC(options); + + // Shortcut `elliptic.ec(curve-name)` + if (typeof options === 'string') { + assert(Object.prototype.hasOwnProperty.call(curves, options), + 'Unknown curve ' + options); + + options = curves[options]; + } + + // Shortcut for `elliptic.ec(elliptic.curves.curveName)` + if (options instanceof curves.PresetCurve) + options = { curve: options }; + + this.curve = options.curve.curve; + this.n = this.curve.n; + this.nh = this.n.ushrn(1); + this.g = this.curve.g; + + // Point on curve + this.g = options.curve.g; + this.g.precompute(options.curve.n.bitLength() + 1); + + // Hash for function for DRBG + this.hash = options.hash || options.curve.hash; +} +module.exports = EC; + +EC.prototype.keyPair = function keyPair(options) { + return new KeyPair(this, options); +}; + +EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) { + return KeyPair.fromPrivate(this, priv, enc); +}; + +EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) { + return KeyPair.fromPublic(this, pub, enc); +}; + +EC.prototype.genKeyPair = function genKeyPair(options) { + if (!options) + options = {}; + + // Instantiate Hmac_DRBG + var drbg = new HmacDRBG({ + hash: this.hash, + pers: options.pers, + persEnc: options.persEnc || 'utf8', + entropy: options.entropy || rand(this.hash.hmacStrength), + entropyEnc: options.entropy && options.entropyEnc || 'utf8', + nonce: this.n.toArray(), + }); + + var bytes = this.n.byteLength(); + var ns2 = this.n.sub(new BN(2)); + for (;;) { + var priv = new BN(drbg.generate(bytes)); + if (priv.cmp(ns2) > 0) + continue; + + priv.iaddn(1); + return this.keyFromPrivate(priv); + } +}; + +EC.prototype._truncateToN = function _truncateToN(msg, truncOnly) { + var delta = msg.byteLength() * 8 - this.n.bitLength(); + if (delta > 0) + msg = msg.ushrn(delta); + if (!truncOnly && msg.cmp(this.n) >= 0) + return msg.sub(this.n); + else + return msg; +}; + +EC.prototype.sign = function sign(msg, key, enc, options) { + if (typeof enc === 'object') { + options = enc; + enc = null; + } + if (!options) + options = {}; + + key = this.keyFromPrivate(key, enc); + msg = this._truncateToN(new BN(msg, 16)); + + // Zero-extend key to provide enough entropy + var bytes = this.n.byteLength(); + var bkey = key.getPrivate().toArray('be', bytes); + + // Zero-extend nonce to have the same byte size as N + var nonce = msg.toArray('be', bytes); + + // Instantiate Hmac_DRBG + var drbg = new HmacDRBG({ + hash: this.hash, + entropy: bkey, + nonce: nonce, + pers: options.pers, + persEnc: options.persEnc || 'utf8', + }); + + // Number of bytes to generate + var ns1 = this.n.sub(new BN(1)); + + for (var iter = 0; ; iter++) { + var k = options.k ? + options.k(iter) : + new BN(drbg.generate(this.n.byteLength())); + k = this._truncateToN(k, true); + if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) + continue; + + var kp = this.g.mul(k); + if (kp.isInfinity()) + continue; + + var kpX = kp.getX(); + var r = kpX.umod(this.n); + if (r.cmpn(0) === 0) + continue; + + var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg)); + s = s.umod(this.n); + if (s.cmpn(0) === 0) + continue; + + var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | + (kpX.cmp(r) !== 0 ? 2 : 0); + + // Use complement of `s`, if it is > `n / 2` + if (options.canonical && s.cmp(this.nh) > 0) { + s = this.n.sub(s); + recoveryParam ^= 1; + } + + return new Signature({ r: r, s: s, recoveryParam: recoveryParam }); + } +}; + +EC.prototype.verify = function verify(msg, signature, key, enc) { + msg = this._truncateToN(new BN(msg, 16)); + key = this.keyFromPublic(key, enc); + signature = new Signature(signature, 'hex'); + + // Perform primitive values validation + var r = signature.r; + var s = signature.s; + if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) + return false; + if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) + return false; + + // Validate signature + var sinv = s.invm(this.n); + var u1 = sinv.mul(msg).umod(this.n); + var u2 = sinv.mul(r).umod(this.n); + var p; + + if (!this.curve._maxwellTrick) { + p = this.g.mulAdd(u1, key.getPublic(), u2); + if (p.isInfinity()) + return false; + + return p.getX().umod(this.n).cmp(r) === 0; + } + + // NOTE: Greg Maxwell's trick, inspired by: + // https://git.io/vad3K + + p = this.g.jmulAdd(u1, key.getPublic(), u2); + if (p.isInfinity()) + return false; + + // Compare `p.x` of Jacobian point with `r`, + // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the + // inverse of `p.z^2` + return p.eqXToP(r); +}; + +EC.prototype.recoverPubKey = function(msg, signature, j, enc) { + assert((3 & j) === j, 'The recovery param is more than two bits'); + signature = new Signature(signature, enc); + + var n = this.n; + var e = new BN(msg); + var r = signature.r; + var s = signature.s; + + // A set LSB signifies that the y-coordinate is odd + var isYOdd = j & 1; + var isSecondKey = j >> 1; + if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) + throw new Error('Unable to find sencond key candinate'); + + // 1.1. Let x = r + jn. + if (isSecondKey) + r = this.curve.pointFromX(r.add(this.curve.n), isYOdd); + else + r = this.curve.pointFromX(r, isYOdd); + + var rInv = signature.r.invm(n); + var s1 = n.sub(e).mul(rInv).umod(n); + var s2 = s.mul(rInv).umod(n); + + // 1.6.1 Compute Q = r^-1 (sR - eG) + // Q = r^-1 (sR + -eG) + return this.g.mulAdd(s1, r, s2); +}; + +EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) { + signature = new Signature(signature, enc); + if (signature.recoveryParam !== null) + return signature.recoveryParam; + + for (var i = 0; i < 4; i++) { + var Qprime; + try { + Qprime = this.recoverPubKey(e, signature, i); + } catch (e) { + continue; + } + + if (Qprime.eq(Q)) + return i; + } + throw new Error('Unable to find valid recovery factor'); +}; + + +/***/ }), + +/***/ "C630": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Uzbek Latin [uz-latn] +//! author : Rasulbek Mirzayev : github.com/Rasulbeeek + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var uzLatn = moment.defineLocale('uz-latn', { + months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'), + monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), + weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'), + weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), + weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'D MMMM YYYY, dddd HH:mm' + }, + calendar : { + sameDay : '[Bugun soat] LT [da]', + nextDay : '[Ertaga] LT [da]', + nextWeek : 'dddd [kuni soat] LT [da]', + lastDay : '[Kecha soat] LT [da]', + lastWeek : '[O\'tgan] dddd [kuni soat] LT [da]', + sameElse : 'L' + }, + relativeTime : { + future : 'Yaqin %s ichida', + past : 'Bir necha %s oldin', + s : 'soniya', + m : 'bir daqiqa', + mm : '%d daqiqa', + h : 'bir soat', + hh : '%d soat', + d : 'bir kun', + dd : '%d kun', + M : 'bir oy', + MM : '%d oy', + y : 'bir yil', + yy : '%d yil' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return uzLatn; + +}))); + + +/***/ }), + +/***/ "CLFx": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Bosnian [bs] +//! author : Nedim Cholich : https://github.com/frontyard +//! based on (hr) translation by Bojan Marković + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +function translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } +} + +var bs = moment.defineLocale('bs', { + months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), + monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), + monthsParseExact: true, + weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'par sekundi', + m : translate, + mm : translate, + h : translate, + hh : translate, + d : 'dan', + dd : translate, + M : 'mjesec', + MM : translate, + y : 'godinu', + yy : translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return bs; + +}))); + + +/***/ }), + +/***/ "CVPH": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Czech [cs] +//! author : petrbela : https://github.com/petrbela + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'); +var monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); +function plural(n) { + return (n > 1) && (n < 5) && (~~(n / 10) !== 1); +} +function translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minuty' : 'minut'); + } else { + return result + 'minutami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodin'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'den' : 'dnem'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dny' : 'dní'); + } else { + return result + 'dny'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'měsíce' : 'měsíců'); + } else { + return result + 'měsíci'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'let'); + } else { + return result + 'lety'; + } + break; + } +} + +var cs = moment.defineLocale('cs', { + months : months, + monthsShort : monthsShort, + monthsParse : (function (months, monthsShort) { + var i, _monthsParse = []; + for (i = 0; i < 12; i++) { + // use custom parser to solve problem with July (červenec) + _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); + } + return _monthsParse; + }(months, monthsShort)), + shortMonthsParse : (function (monthsShort) { + var i, _shortMonthsParse = []; + for (i = 0; i < 12; i++) { + _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i'); + } + return _shortMonthsParse; + }(monthsShort)), + longMonthsParse : (function (months) { + var i, _longMonthsParse = []; + for (i = 0; i < 12; i++) { + _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i'); + } + return _longMonthsParse; + }(months)), + weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), + weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'), + weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'), + longDateFormat : { + LT: 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd D. MMMM YYYY H:mm', + l : 'D. M. YYYY' + }, + calendar : { + sameDay: '[dnes v] LT', + nextDay: '[zítra v] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v neděli v] LT'; + case 1: + case 2: + return '[v] dddd [v] LT'; + case 3: + return '[ve středu v] LT'; + case 4: + return '[ve čtvrtek v] LT'; + case 5: + return '[v pátek v] LT'; + case 6: + return '[v sobotu v] LT'; + } + }, + lastDay: '[včera v] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulou neděli v] LT'; + case 1: + case 2: + return '[minulé] dddd [v] LT'; + case 3: + return '[minulou středu v] LT'; + case 4: + case 5: + return '[minulý] dddd [v] LT'; + case 6: + return '[minulou sobotu v] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'za %s', + past : 'před %s', + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + dayOfMonthOrdinalParse : /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return cs; + +}))); + + +/***/ }), + +/***/ "D380": +/***/ (function(module, exports) { + +module.exports = {"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"} + +/***/ }), + +/***/ "DAAj": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Basque [eu] +//! author : Eneko Illarramendi : https://github.com/eillarra + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var eu = moment.defineLocale('eu', { + months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), + monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), + monthsParseExact : true, + weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), + weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'), + weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'YYYY[ko] MMMM[ren] D[a]', + LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm', + LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', + l : 'YYYY-M-D', + ll : 'YYYY[ko] MMM D[a]', + lll : 'YYYY[ko] MMM D[a] HH:mm', + llll : 'ddd, YYYY[ko] MMM D[a] HH:mm' + }, + calendar : { + sameDay : '[gaur] LT[etan]', + nextDay : '[bihar] LT[etan]', + nextWeek : 'dddd LT[etan]', + lastDay : '[atzo] LT[etan]', + lastWeek : '[aurreko] dddd LT[etan]', + sameElse : 'L' + }, + relativeTime : { + future : '%s barru', + past : 'duela %s', + s : 'segundo batzuk', + m : 'minutu bat', + mm : '%d minutu', + h : 'ordu bat', + hh : '%d ordu', + d : 'egun bat', + dd : '%d egun', + M : 'hilabete bat', + MM : '%d hilabete', + y : 'urte bat', + yy : '%d urte' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return eu; + +}))); + + +/***/ }), + +/***/ "DHvs": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (immutable) */ __webpack_exports__["a"] = Log; +/* unused harmony export dateFormat */ +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +/** + * @description TODO 日志输出 + * @author Magic.XL + * @TAG 标签 + * @messages 输出对象 + * @date 2021年11月17日 + */ +function Log(self, show) { + var isSafari = /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent); + + for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + messages[_key - 2] = arguments[_key]; + } + + if (!isSafari) { + var _console; + + if (!show) return; + var TAG = ''; + if ((typeof self === 'undefined' ? 'undefined' : _typeof(self)) === 'object') TAG = self.$options.name;else TAG = self; + (_console = console).log.apply(_console, ['%c ' + TAG + ' %c ' + dateFormat(new Date(), ' YYYY-MM-DD hh:mm:ss') + ' %c', 'background:#2d8cf0; padding: 1px; border-radius: 3px 0 0 3px; color: #fff;margin:5px 0', 'background:#19be6b; padding: 1px; border-radius: 0 3px 3px 0; color: #fff;margin-right: 10px', 'background:transparent'].concat(messages)); + } else { + var _console2; + + (_console2 = console).log.apply(_console2, messages); + } +} + +/** + * @description TODO 日期格式化 + * @author Magic.XL + * @date 日期对象 + * @fmt 日期格式 + * @date 2021年11月17日 + */ +function dateFormat(date, fmt) { + var ret = void 0; + var opt = { + 'Y+': date.getFullYear().toString(), // 年 + 'M+': (date.getMonth() + 1).toString(), // 月 + 'D+': date.getDate().toString(), // 日 + 'h+': date.getHours().toString(), // 时 + 'm+': date.getMinutes().toString(), // 分 + 's+': date.getSeconds().toString() // 秒 + // 有其他格式化字符需求可以继续添加,必须转化成字符串 + }; + for (var k in opt) { + ret = new RegExp('(' + k + ')').exec(fmt); + if (ret) { + fmt = fmt.replace(ret[1], ret[1].length === 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')); + } + } + return fmt; +} + +/***/ }), + +/***/ "DJz8": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var Buffer = __webpack_require__("NfRg").Buffer +var inherits = __webpack_require__("mwrz") +var HashBase = __webpack_require__("0I3d") + +var ARRAY16 = new Array(16) + +var zl = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, + 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, + 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, + 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 +] + +var zr = [ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, + 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, + 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, + 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, + 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 +] + +var sl = [ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, + 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, + 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, + 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, + 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 +] + +var sr = [ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, + 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, + 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, + 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, + 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 +] + +var hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e] +var hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000] + +function RIPEMD160 () { + HashBase.call(this, 64) + + // state + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 +} + +inherits(RIPEMD160, HashBase) + +RIPEMD160.prototype._update = function () { + var words = ARRAY16 + for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4) + + var al = this._a | 0 + var bl = this._b | 0 + var cl = this._c | 0 + var dl = this._d | 0 + var el = this._e | 0 + + var ar = this._a | 0 + var br = this._b | 0 + var cr = this._c | 0 + var dr = this._d | 0 + var er = this._e | 0 + + // computation + for (var i = 0; i < 80; i += 1) { + var tl + var tr + if (i < 16) { + tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i]) + tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]) + } else if (i < 32) { + tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i]) + tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]) + } else if (i < 48) { + tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i]) + tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]) + } else if (i < 64) { + tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i]) + tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]) + } else { // if (i<80) { + tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i]) + tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]) + } + + al = el + el = dl + dl = rotl(cl, 10) + cl = bl + bl = tl + + ar = er + er = dr + dr = rotl(cr, 10) + cr = br + br = tr + } + + // update state + var t = (this._b + cl + dr) | 0 + this._b = (this._c + dl + er) | 0 + this._c = (this._d + el + ar) | 0 + this._d = (this._e + al + br) | 0 + this._e = (this._a + bl + cr) | 0 + this._a = t +} + +RIPEMD160.prototype._digest = function () { + // create padding and handle blocks + this._block[this._blockOffset++] = 0x80 + if (this._blockOffset > 56) { + this._block.fill(0, this._blockOffset, 64) + this._update() + this._blockOffset = 0 + } + + this._block.fill(0, this._blockOffset, 56) + this._block.writeUInt32LE(this._length[0], 56) + this._block.writeUInt32LE(this._length[1], 60) + this._update() + + // produce result + var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20) + buffer.writeInt32LE(this._a, 0) + buffer.writeInt32LE(this._b, 4) + buffer.writeInt32LE(this._c, 8) + buffer.writeInt32LE(this._d, 12) + buffer.writeInt32LE(this._e, 16) + return buffer +} + +function rotl (x, n) { + return (x << n) | (x >>> (32 - n)) +} + +function fn1 (a, b, c, d, e, m, k, s) { + return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0 +} + +function fn2 (a, b, c, d, e, m, k, s) { + return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0 +} + +function fn3 (a, b, c, d, e, m, k, s) { + return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0 +} + +function fn4 (a, b, c, d, e, m, k, s) { + return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0 +} + +function fn5 (a, b, c, d, e, m, k, s) { + return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0 +} + +module.exports = RIPEMD160 + + +/***/ }), + +/***/ "DLTi": +/***/ (function(module, exports, __webpack_require__) { + +/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */ +/* eslint-disable node/no-deprecated-api */ +var buffer = __webpack_require__("NfRg") +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.prototype = Object.create(Buffer.prototype) + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + + +/***/ }), + +/***/ "DllE": +/***/ (function(module, exports, __webpack_require__) { + +exports = module.exports = __webpack_require__("BkJT")(undefined); +// imports + + +// module +exports.push([module.i, ".vjs-big-play-button{display:none!important}.easy-player-fill-container .video-js{padding:0!important}.easy-player-fill-container .video-js .vjs-tech{-o-object-fit:fill!important;object-fit:fill!important}.is-paused .vjs-seeking .vjs-loading-spinner,.vjs-waiting .vjs-loading-spinner{display:none!important}.easy-player-loading{position:absolute;top:50%;left:50%;width:200px;height:200px;margin-top:-100px;margin-left:-100px;z-index:9998;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;opacity:1;pointer-events:none;transition:opacity 1s cubic-bezier(0,0,.2,1)}.easy-player-loading img{width:180px;height:40px}.easy-player-loading .loading-text{letter-spacing:2px;text-align:center;color:hsla(0,0%,100%,.65);font-size:14px;font-weight:600;background-image:-webkit-linear-gradient(left,#0ff,#fff 25%,#0ff 50%,#fff 75%,#0ff);-webkit-text-fill-color:transparent;-webkit-background-clip:text;-webkit-background-size:200% 100%;-webkit-animation:masked-animation .5s infinite linear}@keyframes masked-animation{0%{background-position:0 0}to{background-position:-100% 0}}.easy-player-btn{width:200px;height:200px;margin-top:-100px;margin-left:-100px;z-index:9998;-ms-flex-direction:column;flex-direction:column;pointer-events:none;transition:opacity 1s cubic-bezier(0,0,.2,1)}.easy-play-btn,.easy-player-btn{position:absolute;top:50%;left:50%;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;opacity:1}.easy-play-btn{color:#fff;text-align:center;line-height:1.5em;height:1.5em;width:3em;padding:0;cursor:pointer;border:.06666em solid #fff;background-color:#2b333f;background-color:rgba(43,51,63,.7);border-radius:.3em;transition:all .4s;-ms-flex-direction:row;flex-direction:row;margin:-.75em 0 0 -1.5em;z-index:89}", ""]); + +// exports + + +/***/ }), + +/***/ "DnPA": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var inherits = __webpack_require__("mwrz") +var HashBase = __webpack_require__("0I3d") +var Buffer = __webpack_require__("DLTi").Buffer + +var ARRAY16 = new Array(16) + +function MD5 () { + HashBase.call(this, 64) + + // state + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 +} + +inherits(MD5, HashBase) + +MD5.prototype._update = function () { + var M = ARRAY16 + for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4) + + var a = this._a + var b = this._b + var c = this._c + var d = this._d + + a = fnF(a, b, c, d, M[0], 0xd76aa478, 7) + d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12) + c = fnF(c, d, a, b, M[2], 0x242070db, 17) + b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22) + a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7) + d = fnF(d, a, b, c, M[5], 0x4787c62a, 12) + c = fnF(c, d, a, b, M[6], 0xa8304613, 17) + b = fnF(b, c, d, a, M[7], 0xfd469501, 22) + a = fnF(a, b, c, d, M[8], 0x698098d8, 7) + d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12) + c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17) + b = fnF(b, c, d, a, M[11], 0x895cd7be, 22) + a = fnF(a, b, c, d, M[12], 0x6b901122, 7) + d = fnF(d, a, b, c, M[13], 0xfd987193, 12) + c = fnF(c, d, a, b, M[14], 0xa679438e, 17) + b = fnF(b, c, d, a, M[15], 0x49b40821, 22) + + a = fnG(a, b, c, d, M[1], 0xf61e2562, 5) + d = fnG(d, a, b, c, M[6], 0xc040b340, 9) + c = fnG(c, d, a, b, M[11], 0x265e5a51, 14) + b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20) + a = fnG(a, b, c, d, M[5], 0xd62f105d, 5) + d = fnG(d, a, b, c, M[10], 0x02441453, 9) + c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14) + b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20) + a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5) + d = fnG(d, a, b, c, M[14], 0xc33707d6, 9) + c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14) + b = fnG(b, c, d, a, M[8], 0x455a14ed, 20) + a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5) + d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9) + c = fnG(c, d, a, b, M[7], 0x676f02d9, 14) + b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20) + + a = fnH(a, b, c, d, M[5], 0xfffa3942, 4) + d = fnH(d, a, b, c, M[8], 0x8771f681, 11) + c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16) + b = fnH(b, c, d, a, M[14], 0xfde5380c, 23) + a = fnH(a, b, c, d, M[1], 0xa4beea44, 4) + d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11) + c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16) + b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23) + a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4) + d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11) + c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16) + b = fnH(b, c, d, a, M[6], 0x04881d05, 23) + a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4) + d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11) + c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16) + b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23) + + a = fnI(a, b, c, d, M[0], 0xf4292244, 6) + d = fnI(d, a, b, c, M[7], 0x432aff97, 10) + c = fnI(c, d, a, b, M[14], 0xab9423a7, 15) + b = fnI(b, c, d, a, M[5], 0xfc93a039, 21) + a = fnI(a, b, c, d, M[12], 0x655b59c3, 6) + d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10) + c = fnI(c, d, a, b, M[10], 0xffeff47d, 15) + b = fnI(b, c, d, a, M[1], 0x85845dd1, 21) + a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6) + d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10) + c = fnI(c, d, a, b, M[6], 0xa3014314, 15) + b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21) + a = fnI(a, b, c, d, M[4], 0xf7537e82, 6) + d = fnI(d, a, b, c, M[11], 0xbd3af235, 10) + c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15) + b = fnI(b, c, d, a, M[9], 0xeb86d391, 21) + + this._a = (this._a + a) | 0 + this._b = (this._b + b) | 0 + this._c = (this._c + c) | 0 + this._d = (this._d + d) | 0 +} + +MD5.prototype._digest = function () { + // create padding and handle blocks + this._block[this._blockOffset++] = 0x80 + if (this._blockOffset > 56) { + this._block.fill(0, this._blockOffset, 64) + this._update() + this._blockOffset = 0 + } + + this._block.fill(0, this._blockOffset, 56) + this._block.writeUInt32LE(this._length[0], 56) + this._block.writeUInt32LE(this._length[1], 60) + this._update() + + // produce result + var buffer = Buffer.allocUnsafe(16) + buffer.writeInt32LE(this._a, 0) + buffer.writeInt32LE(this._b, 4) + buffer.writeInt32LE(this._c, 8) + buffer.writeInt32LE(this._d, 12) + return buffer +} + +function rotl (x, n) { + return (x << n) | (x >>> (32 - n)) +} + +function fnF (a, b, c, d, m, k, s) { + return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0 +} + +function fnG (a, b, c, d, m, k, s) { + return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0 +} + +function fnH (a, b, c, d, m, k, s) { + return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0 +} + +function fnI (a, b, c, d, m, k, s) { + return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0 +} + +module.exports = MD5 + + +/***/ }), + +/***/ "DoTB": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) { + 'use strict'; + + // Utils + function assert (val, msg) { + if (!val) throw new Error(msg || 'Assertion failed'); + } + + // Could use `inherits` module, but don't want to move from single file + // architecture yet. + function inherits (ctor, superCtor) { + ctor.super_ = superCtor; + var TempCtor = function () {}; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + } + + // BN + + function BN (number, base, endian) { + if (BN.isBN(number)) { + return number; + } + + this.negative = 0; + this.words = null; + this.length = 0; + + // Reduction context + this.red = null; + + if (number !== null) { + if (base === 'le' || base === 'be') { + endian = base; + base = 10; + } + + this._init(number || 0, base || 10, endian || 'be'); + } + } + if (typeof module === 'object') { + module.exports = BN; + } else { + exports.BN = BN; + } + + BN.BN = BN; + BN.wordSize = 26; + + var Buffer; + try { + if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') { + Buffer = window.Buffer; + } else { + Buffer = __webpack_require__(7).Buffer; + } + } catch (e) { + } + + BN.isBN = function isBN (num) { + if (num instanceof BN) { + return true; + } + + return num !== null && typeof num === 'object' && + num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); + }; + + BN.max = function max (left, right) { + if (left.cmp(right) > 0) return left; + return right; + }; + + BN.min = function min (left, right) { + if (left.cmp(right) < 0) return left; + return right; + }; + + BN.prototype._init = function init (number, base, endian) { + if (typeof number === 'number') { + return this._initNumber(number, base, endian); + } + + if (typeof number === 'object') { + return this._initArray(number, base, endian); + } + + if (base === 'hex') { + base = 16; + } + assert(base === (base | 0) && base >= 2 && base <= 36); + + number = number.toString().replace(/\s+/g, ''); + var start = 0; + if (number[0] === '-') { + start++; + this.negative = 1; + } + + if (start < number.length) { + if (base === 16) { + this._parseHex(number, start, endian); + } else { + this._parseBase(number, base, start); + if (endian === 'le') { + this._initArray(this.toArray(), base, endian); + } + } + } + }; + + BN.prototype._initNumber = function _initNumber (number, base, endian) { + if (number < 0) { + this.negative = 1; + number = -number; + } + if (number < 0x4000000) { + this.words = [number & 0x3ffffff]; + this.length = 1; + } else if (number < 0x10000000000000) { + this.words = [ + number & 0x3ffffff, + (number / 0x4000000) & 0x3ffffff + ]; + this.length = 2; + } else { + assert(number < 0x20000000000000); // 2 ^ 53 (unsafe) + this.words = [ + number & 0x3ffffff, + (number / 0x4000000) & 0x3ffffff, + 1 + ]; + this.length = 3; + } + + if (endian !== 'le') return; + + // Reverse the bytes + this._initArray(this.toArray(), base, endian); + }; + + BN.prototype._initArray = function _initArray (number, base, endian) { + // Perhaps a Uint8Array + assert(typeof number.length === 'number'); + if (number.length <= 0) { + this.words = [0]; + this.length = 1; + return this; + } + + this.length = Math.ceil(number.length / 3); + this.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + this.words[i] = 0; + } + + var j, w; + var off = 0; + if (endian === 'be') { + for (i = number.length - 1, j = 0; i >= 0; i -= 3) { + w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16); + this.words[j] |= (w << off) & 0x3ffffff; + this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; + off += 24; + if (off >= 26) { + off -= 26; + j++; + } + } + } else if (endian === 'le') { + for (i = 0, j = 0; i < number.length; i += 3) { + w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16); + this.words[j] |= (w << off) & 0x3ffffff; + this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; + off += 24; + if (off >= 26) { + off -= 26; + j++; + } + } + } + return this._strip(); + }; + + function parseHex4Bits (string, index) { + var c = string.charCodeAt(index); + // '0' - '9' + if (c >= 48 && c <= 57) { + return c - 48; + // 'A' - 'F' + } else if (c >= 65 && c <= 70) { + return c - 55; + // 'a' - 'f' + } else if (c >= 97 && c <= 102) { + return c - 87; + } else { + assert(false, 'Invalid character in ' + string); + } + } + + function parseHexByte (string, lowerBound, index) { + var r = parseHex4Bits(string, index); + if (index - 1 >= lowerBound) { + r |= parseHex4Bits(string, index - 1) << 4; + } + return r; + } + + BN.prototype._parseHex = function _parseHex (number, start, endian) { + // Create possibly bigger array to ensure that it fits the number + this.length = Math.ceil((number.length - start) / 6); + this.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + this.words[i] = 0; + } + + // 24-bits chunks + var off = 0; + var j = 0; + + var w; + if (endian === 'be') { + for (i = number.length - 1; i >= start; i -= 2) { + w = parseHexByte(number, start, i) << off; + this.words[j] |= w & 0x3ffffff; + if (off >= 18) { + off -= 18; + j += 1; + this.words[j] |= w >>> 26; + } else { + off += 8; + } + } + } else { + var parseLength = number.length - start; + for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) { + w = parseHexByte(number, start, i) << off; + this.words[j] |= w & 0x3ffffff; + if (off >= 18) { + off -= 18; + j += 1; + this.words[j] |= w >>> 26; + } else { + off += 8; + } + } + } + + this._strip(); + }; + + function parseBase (str, start, end, mul) { + var r = 0; + var b = 0; + var len = Math.min(str.length, end); + for (var i = start; i < len; i++) { + var c = str.charCodeAt(i) - 48; + + r *= mul; + + // 'a' + if (c >= 49) { + b = c - 49 + 0xa; + + // 'A' + } else if (c >= 17) { + b = c - 17 + 0xa; + + // '0' - '9' + } else { + b = c; + } + assert(c >= 0 && b < mul, 'Invalid character'); + r += b; + } + return r; + } + + BN.prototype._parseBase = function _parseBase (number, base, start) { + // Initialize as zero + this.words = [0]; + this.length = 1; + + // Find length of limb in base + for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) { + limbLen++; + } + limbLen--; + limbPow = (limbPow / base) | 0; + + var total = number.length - start; + var mod = total % limbLen; + var end = Math.min(total, total - mod) + start; + + var word = 0; + for (var i = start; i < end; i += limbLen) { + word = parseBase(number, i, i + limbLen, base); + + this.imuln(limbPow); + if (this.words[0] + word < 0x4000000) { + this.words[0] += word; + } else { + this._iaddn(word); + } + } + + if (mod !== 0) { + var pow = 1; + word = parseBase(number, i, number.length, base); + + for (i = 0; i < mod; i++) { + pow *= base; + } + + this.imuln(pow); + if (this.words[0] + word < 0x4000000) { + this.words[0] += word; + } else { + this._iaddn(word); + } + } + + this._strip(); + }; + + BN.prototype.copy = function copy (dest) { + dest.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + dest.words[i] = this.words[i]; + } + dest.length = this.length; + dest.negative = this.negative; + dest.red = this.red; + }; + + function move (dest, src) { + dest.words = src.words; + dest.length = src.length; + dest.negative = src.negative; + dest.red = src.red; + } + + BN.prototype._move = function _move (dest) { + move(dest, this); + }; + + BN.prototype.clone = function clone () { + var r = new BN(null); + this.copy(r); + return r; + }; + + BN.prototype._expand = function _expand (size) { + while (this.length < size) { + this.words[this.length++] = 0; + } + return this; + }; + + // Remove leading `0` from `this` + BN.prototype._strip = function strip () { + while (this.length > 1 && this.words[this.length - 1] === 0) { + this.length--; + } + return this._normSign(); + }; + + BN.prototype._normSign = function _normSign () { + // -0 = 0 + if (this.length === 1 && this.words[0] === 0) { + this.negative = 0; + } + return this; + }; + + // Check Symbol.for because not everywhere where Symbol defined + // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility + if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') { + try { + BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect; + } catch (e) { + BN.prototype.inspect = inspect; + } + } else { + BN.prototype.inspect = inspect; + } + + function inspect () { + return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>'; + } + + /* + + var zeros = []; + var groupSizes = []; + var groupBases = []; + + var s = ''; + var i = -1; + while (++i < BN.wordSize) { + zeros[i] = s; + s += '0'; + } + groupSizes[0] = 0; + groupSizes[1] = 0; + groupBases[0] = 0; + groupBases[1] = 0; + var base = 2 - 1; + while (++base < 36 + 1) { + var groupSize = 0; + var groupBase = 1; + while (groupBase < (1 << BN.wordSize) / base) { + groupBase *= base; + groupSize += 1; + } + groupSizes[base] = groupSize; + groupBases[base] = groupBase; + } + + */ + + var zeros = [ + '', + '0', + '00', + '000', + '0000', + '00000', + '000000', + '0000000', + '00000000', + '000000000', + '0000000000', + '00000000000', + '000000000000', + '0000000000000', + '00000000000000', + '000000000000000', + '0000000000000000', + '00000000000000000', + '000000000000000000', + '0000000000000000000', + '00000000000000000000', + '000000000000000000000', + '0000000000000000000000', + '00000000000000000000000', + '000000000000000000000000', + '0000000000000000000000000' + ]; + + var groupSizes = [ + 0, 0, + 25, 16, 12, 11, 10, 9, 8, + 8, 7, 7, 7, 7, 6, 6, + 6, 6, 6, 6, 6, 5, 5, + 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5 + ]; + + var groupBases = [ + 0, 0, + 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, + 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, + 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, + 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, + 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176 + ]; + + BN.prototype.toString = function toString (base, padding) { + base = base || 10; + padding = padding | 0 || 1; + + var out; + if (base === 16 || base === 'hex') { + out = ''; + var off = 0; + var carry = 0; + for (var i = 0; i < this.length; i++) { + var w = this.words[i]; + var word = (((w << off) | carry) & 0xffffff).toString(16); + carry = (w >>> (24 - off)) & 0xffffff; + if (carry !== 0 || i !== this.length - 1) { + out = zeros[6 - word.length] + word + out; + } else { + out = word + out; + } + off += 2; + if (off >= 26) { + off -= 26; + i--; + } + } + if (carry !== 0) { + out = carry.toString(16) + out; + } + while (out.length % padding !== 0) { + out = '0' + out; + } + if (this.negative !== 0) { + out = '-' + out; + } + return out; + } + + if (base === (base | 0) && base >= 2 && base <= 36) { + // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base)); + var groupSize = groupSizes[base]; + // var groupBase = Math.pow(base, groupSize); + var groupBase = groupBases[base]; + out = ''; + var c = this.clone(); + c.negative = 0; + while (!c.isZero()) { + var r = c.modrn(groupBase).toString(base); + c = c.idivn(groupBase); + + if (!c.isZero()) { + out = zeros[groupSize - r.length] + r + out; + } else { + out = r + out; + } + } + if (this.isZero()) { + out = '0' + out; + } + while (out.length % padding !== 0) { + out = '0' + out; + } + if (this.negative !== 0) { + out = '-' + out; + } + return out; + } + + assert(false, 'Base should be between 2 and 36'); + }; + + BN.prototype.toNumber = function toNumber () { + var ret = this.words[0]; + if (this.length === 2) { + ret += this.words[1] * 0x4000000; + } else if (this.length === 3 && this.words[2] === 0x01) { + // NOTE: at this stage it is known that the top bit is set + ret += 0x10000000000000 + (this.words[1] * 0x4000000); + } else if (this.length > 2) { + assert(false, 'Number can only safely store up to 53 bits'); + } + return (this.negative !== 0) ? -ret : ret; + }; + + BN.prototype.toJSON = function toJSON () { + return this.toString(16, 2); + }; + + if (Buffer) { + BN.prototype.toBuffer = function toBuffer (endian, length) { + return this.toArrayLike(Buffer, endian, length); + }; + } + + BN.prototype.toArray = function toArray (endian, length) { + return this.toArrayLike(Array, endian, length); + }; + + var allocate = function allocate (ArrayType, size) { + if (ArrayType.allocUnsafe) { + return ArrayType.allocUnsafe(size); + } + return new ArrayType(size); + }; + + BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) { + this._strip(); + + var byteLength = this.byteLength(); + var reqLength = length || Math.max(1, byteLength); + assert(byteLength <= reqLength, 'byte array longer than desired length'); + assert(reqLength > 0, 'Requested array length <= 0'); + + var res = allocate(ArrayType, reqLength); + var postfix = endian === 'le' ? 'LE' : 'BE'; + this['_toArrayLike' + postfix](res, byteLength); + return res; + }; + + BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) { + var position = 0; + var carry = 0; + + for (var i = 0, shift = 0; i < this.length; i++) { + var word = (this.words[i] << shift) | carry; + + res[position++] = word & 0xff; + if (position < res.length) { + res[position++] = (word >> 8) & 0xff; + } + if (position < res.length) { + res[position++] = (word >> 16) & 0xff; + } + + if (shift === 6) { + if (position < res.length) { + res[position++] = (word >> 24) & 0xff; + } + carry = 0; + shift = 0; + } else { + carry = word >>> 24; + shift += 2; + } + } + + if (position < res.length) { + res[position++] = carry; + + while (position < res.length) { + res[position++] = 0; + } + } + }; + + BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) { + var position = res.length - 1; + var carry = 0; + + for (var i = 0, shift = 0; i < this.length; i++) { + var word = (this.words[i] << shift) | carry; + + res[position--] = word & 0xff; + if (position >= 0) { + res[position--] = (word >> 8) & 0xff; + } + if (position >= 0) { + res[position--] = (word >> 16) & 0xff; + } + + if (shift === 6) { + if (position >= 0) { + res[position--] = (word >> 24) & 0xff; + } + carry = 0; + shift = 0; + } else { + carry = word >>> 24; + shift += 2; + } + } + + if (position >= 0) { + res[position--] = carry; + + while (position >= 0) { + res[position--] = 0; + } + } + }; + + if (Math.clz32) { + BN.prototype._countBits = function _countBits (w) { + return 32 - Math.clz32(w); + }; + } else { + BN.prototype._countBits = function _countBits (w) { + var t = w; + var r = 0; + if (t >= 0x1000) { + r += 13; + t >>>= 13; + } + if (t >= 0x40) { + r += 7; + t >>>= 7; + } + if (t >= 0x8) { + r += 4; + t >>>= 4; + } + if (t >= 0x02) { + r += 2; + t >>>= 2; + } + return r + t; + }; + } + + BN.prototype._zeroBits = function _zeroBits (w) { + // Short-cut + if (w === 0) return 26; + + var t = w; + var r = 0; + if ((t & 0x1fff) === 0) { + r += 13; + t >>>= 13; + } + if ((t & 0x7f) === 0) { + r += 7; + t >>>= 7; + } + if ((t & 0xf) === 0) { + r += 4; + t >>>= 4; + } + if ((t & 0x3) === 0) { + r += 2; + t >>>= 2; + } + if ((t & 0x1) === 0) { + r++; + } + return r; + }; + + // Return number of used bits in a BN + BN.prototype.bitLength = function bitLength () { + var w = this.words[this.length - 1]; + var hi = this._countBits(w); + return (this.length - 1) * 26 + hi; + }; + + function toBitArray (num) { + var w = new Array(num.bitLength()); + + for (var bit = 0; bit < w.length; bit++) { + var off = (bit / 26) | 0; + var wbit = bit % 26; + + w[bit] = (num.words[off] >>> wbit) & 0x01; + } + + return w; + } + + // Number of trailing zero bits + BN.prototype.zeroBits = function zeroBits () { + if (this.isZero()) return 0; + + var r = 0; + for (var i = 0; i < this.length; i++) { + var b = this._zeroBits(this.words[i]); + r += b; + if (b !== 26) break; + } + return r; + }; + + BN.prototype.byteLength = function byteLength () { + return Math.ceil(this.bitLength() / 8); + }; + + BN.prototype.toTwos = function toTwos (width) { + if (this.negative !== 0) { + return this.abs().inotn(width).iaddn(1); + } + return this.clone(); + }; + + BN.prototype.fromTwos = function fromTwos (width) { + if (this.testn(width - 1)) { + return this.notn(width).iaddn(1).ineg(); + } + return this.clone(); + }; + + BN.prototype.isNeg = function isNeg () { + return this.negative !== 0; + }; + + // Return negative clone of `this` + BN.prototype.neg = function neg () { + return this.clone().ineg(); + }; + + BN.prototype.ineg = function ineg () { + if (!this.isZero()) { + this.negative ^= 1; + } + + return this; + }; + + // Or `num` with `this` in-place + BN.prototype.iuor = function iuor (num) { + while (this.length < num.length) { + this.words[this.length++] = 0; + } + + for (var i = 0; i < num.length; i++) { + this.words[i] = this.words[i] | num.words[i]; + } + + return this._strip(); + }; + + BN.prototype.ior = function ior (num) { + assert((this.negative | num.negative) === 0); + return this.iuor(num); + }; + + // Or `num` with `this` + BN.prototype.or = function or (num) { + if (this.length > num.length) return this.clone().ior(num); + return num.clone().ior(this); + }; + + BN.prototype.uor = function uor (num) { + if (this.length > num.length) return this.clone().iuor(num); + return num.clone().iuor(this); + }; + + // And `num` with `this` in-place + BN.prototype.iuand = function iuand (num) { + // b = min-length(num, this) + var b; + if (this.length > num.length) { + b = num; + } else { + b = this; + } + + for (var i = 0; i < b.length; i++) { + this.words[i] = this.words[i] & num.words[i]; + } + + this.length = b.length; + + return this._strip(); + }; + + BN.prototype.iand = function iand (num) { + assert((this.negative | num.negative) === 0); + return this.iuand(num); + }; + + // And `num` with `this` + BN.prototype.and = function and (num) { + if (this.length > num.length) return this.clone().iand(num); + return num.clone().iand(this); + }; + + BN.prototype.uand = function uand (num) { + if (this.length > num.length) return this.clone().iuand(num); + return num.clone().iuand(this); + }; + + // Xor `num` with `this` in-place + BN.prototype.iuxor = function iuxor (num) { + // a.length > b.length + var a; + var b; + if (this.length > num.length) { + a = this; + b = num; + } else { + a = num; + b = this; + } + + for (var i = 0; i < b.length; i++) { + this.words[i] = a.words[i] ^ b.words[i]; + } + + if (this !== a) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + + this.length = a.length; + + return this._strip(); + }; + + BN.prototype.ixor = function ixor (num) { + assert((this.negative | num.negative) === 0); + return this.iuxor(num); + }; + + // Xor `num` with `this` + BN.prototype.xor = function xor (num) { + if (this.length > num.length) return this.clone().ixor(num); + return num.clone().ixor(this); + }; + + BN.prototype.uxor = function uxor (num) { + if (this.length > num.length) return this.clone().iuxor(num); + return num.clone().iuxor(this); + }; + + // Not ``this`` with ``width`` bitwidth + BN.prototype.inotn = function inotn (width) { + assert(typeof width === 'number' && width >= 0); + + var bytesNeeded = Math.ceil(width / 26) | 0; + var bitsLeft = width % 26; + + // Extend the buffer with leading zeroes + this._expand(bytesNeeded); + + if (bitsLeft > 0) { + bytesNeeded--; + } + + // Handle complete words + for (var i = 0; i < bytesNeeded; i++) { + this.words[i] = ~this.words[i] & 0x3ffffff; + } + + // Handle the residue + if (bitsLeft > 0) { + this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft)); + } + + // And remove leading zeroes + return this._strip(); + }; + + BN.prototype.notn = function notn (width) { + return this.clone().inotn(width); + }; + + // Set `bit` of `this` + BN.prototype.setn = function setn (bit, val) { + assert(typeof bit === 'number' && bit >= 0); + + var off = (bit / 26) | 0; + var wbit = bit % 26; + + this._expand(off + 1); + + if (val) { + this.words[off] = this.words[off] | (1 << wbit); + } else { + this.words[off] = this.words[off] & ~(1 << wbit); + } + + return this._strip(); + }; + + // Add `num` to `this` in-place + BN.prototype.iadd = function iadd (num) { + var r; + + // negative + positive + if (this.negative !== 0 && num.negative === 0) { + this.negative = 0; + r = this.isub(num); + this.negative ^= 1; + return this._normSign(); + + // positive + negative + } else if (this.negative === 0 && num.negative !== 0) { + num.negative = 0; + r = this.isub(num); + num.negative = 1; + return r._normSign(); + } + + // a.length > b.length + var a, b; + if (this.length > num.length) { + a = this; + b = num; + } else { + a = num; + b = this; + } + + var carry = 0; + for (var i = 0; i < b.length; i++) { + r = (a.words[i] | 0) + (b.words[i] | 0) + carry; + this.words[i] = r & 0x3ffffff; + carry = r >>> 26; + } + for (; carry !== 0 && i < a.length; i++) { + r = (a.words[i] | 0) + carry; + this.words[i] = r & 0x3ffffff; + carry = r >>> 26; + } + + this.length = a.length; + if (carry !== 0) { + this.words[this.length] = carry; + this.length++; + // Copy the rest of the words + } else if (a !== this) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + + return this; + }; + + // Add `num` to `this` + BN.prototype.add = function add (num) { + var res; + if (num.negative !== 0 && this.negative === 0) { + num.negative = 0; + res = this.sub(num); + num.negative ^= 1; + return res; + } else if (num.negative === 0 && this.negative !== 0) { + this.negative = 0; + res = num.sub(this); + this.negative = 1; + return res; + } + + if (this.length > num.length) return this.clone().iadd(num); + + return num.clone().iadd(this); + }; + + // Subtract `num` from `this` in-place + BN.prototype.isub = function isub (num) { + // this - (-num) = this + num + if (num.negative !== 0) { + num.negative = 0; + var r = this.iadd(num); + num.negative = 1; + return r._normSign(); + + // -this - num = -(this + num) + } else if (this.negative !== 0) { + this.negative = 0; + this.iadd(num); + this.negative = 1; + return this._normSign(); + } + + // At this point both numbers are positive + var cmp = this.cmp(num); + + // Optimization - zeroify + if (cmp === 0) { + this.negative = 0; + this.length = 1; + this.words[0] = 0; + return this; + } + + // a > b + var a, b; + if (cmp > 0) { + a = this; + b = num; + } else { + a = num; + b = this; + } + + var carry = 0; + for (var i = 0; i < b.length; i++) { + r = (a.words[i] | 0) - (b.words[i] | 0) + carry; + carry = r >> 26; + this.words[i] = r & 0x3ffffff; + } + for (; carry !== 0 && i < a.length; i++) { + r = (a.words[i] | 0) + carry; + carry = r >> 26; + this.words[i] = r & 0x3ffffff; + } + + // Copy rest of the words + if (carry === 0 && i < a.length && a !== this) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + + this.length = Math.max(this.length, i); + + if (a !== this) { + this.negative = 1; + } + + return this._strip(); + }; + + // Subtract `num` from `this` + BN.prototype.sub = function sub (num) { + return this.clone().isub(num); + }; + + function smallMulTo (self, num, out) { + out.negative = num.negative ^ self.negative; + var len = (self.length + num.length) | 0; + out.length = len; + len = (len - 1) | 0; + + // Peel one iteration (compiler can't do it, because of code complexity) + var a = self.words[0] | 0; + var b = num.words[0] | 0; + var r = a * b; + + var lo = r & 0x3ffffff; + var carry = (r / 0x4000000) | 0; + out.words[0] = lo; + + for (var k = 1; k < len; k++) { + // Sum all words with the same `i + j = k` and accumulate `ncarry`, + // note that ncarry could be >= 0x3ffffff + var ncarry = carry >>> 26; + var rword = carry & 0x3ffffff; + var maxJ = Math.min(k, num.length - 1); + for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { + var i = (k - j) | 0; + a = self.words[i] | 0; + b = num.words[j] | 0; + r = a * b + rword; + ncarry += (r / 0x4000000) | 0; + rword = r & 0x3ffffff; + } + out.words[k] = rword | 0; + carry = ncarry | 0; + } + if (carry !== 0) { + out.words[k] = carry | 0; + } else { + out.length--; + } + + return out._strip(); + } + + // TODO(indutny): it may be reasonable to omit it for users who don't need + // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit + // multiplication (like elliptic secp256k1). + var comb10MulTo = function comb10MulTo (self, num, out) { + var a = self.words; + var b = num.words; + var o = out.words; + var c = 0; + var lo; + var mid; + var hi; + var a0 = a[0] | 0; + var al0 = a0 & 0x1fff; + var ah0 = a0 >>> 13; + var a1 = a[1] | 0; + var al1 = a1 & 0x1fff; + var ah1 = a1 >>> 13; + var a2 = a[2] | 0; + var al2 = a2 & 0x1fff; + var ah2 = a2 >>> 13; + var a3 = a[3] | 0; + var al3 = a3 & 0x1fff; + var ah3 = a3 >>> 13; + var a4 = a[4] | 0; + var al4 = a4 & 0x1fff; + var ah4 = a4 >>> 13; + var a5 = a[5] | 0; + var al5 = a5 & 0x1fff; + var ah5 = a5 >>> 13; + var a6 = a[6] | 0; + var al6 = a6 & 0x1fff; + var ah6 = a6 >>> 13; + var a7 = a[7] | 0; + var al7 = a7 & 0x1fff; + var ah7 = a7 >>> 13; + var a8 = a[8] | 0; + var al8 = a8 & 0x1fff; + var ah8 = a8 >>> 13; + var a9 = a[9] | 0; + var al9 = a9 & 0x1fff; + var ah9 = a9 >>> 13; + var b0 = b[0] | 0; + var bl0 = b0 & 0x1fff; + var bh0 = b0 >>> 13; + var b1 = b[1] | 0; + var bl1 = b1 & 0x1fff; + var bh1 = b1 >>> 13; + var b2 = b[2] | 0; + var bl2 = b2 & 0x1fff; + var bh2 = b2 >>> 13; + var b3 = b[3] | 0; + var bl3 = b3 & 0x1fff; + var bh3 = b3 >>> 13; + var b4 = b[4] | 0; + var bl4 = b4 & 0x1fff; + var bh4 = b4 >>> 13; + var b5 = b[5] | 0; + var bl5 = b5 & 0x1fff; + var bh5 = b5 >>> 13; + var b6 = b[6] | 0; + var bl6 = b6 & 0x1fff; + var bh6 = b6 >>> 13; + var b7 = b[7] | 0; + var bl7 = b7 & 0x1fff; + var bh7 = b7 >>> 13; + var b8 = b[8] | 0; + var bl8 = b8 & 0x1fff; + var bh8 = b8 >>> 13; + var b9 = b[9] | 0; + var bl9 = b9 & 0x1fff; + var bh9 = b9 >>> 13; + + out.negative = self.negative ^ num.negative; + out.length = 19; + /* k = 0 */ + lo = Math.imul(al0, bl0); + mid = Math.imul(al0, bh0); + mid = (mid + Math.imul(ah0, bl0)) | 0; + hi = Math.imul(ah0, bh0); + var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0; + w0 &= 0x3ffffff; + /* k = 1 */ + lo = Math.imul(al1, bl0); + mid = Math.imul(al1, bh0); + mid = (mid + Math.imul(ah1, bl0)) | 0; + hi = Math.imul(ah1, bh0); + lo = (lo + Math.imul(al0, bl1)) | 0; + mid = (mid + Math.imul(al0, bh1)) | 0; + mid = (mid + Math.imul(ah0, bl1)) | 0; + hi = (hi + Math.imul(ah0, bh1)) | 0; + var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0; + w1 &= 0x3ffffff; + /* k = 2 */ + lo = Math.imul(al2, bl0); + mid = Math.imul(al2, bh0); + mid = (mid + Math.imul(ah2, bl0)) | 0; + hi = Math.imul(ah2, bh0); + lo = (lo + Math.imul(al1, bl1)) | 0; + mid = (mid + Math.imul(al1, bh1)) | 0; + mid = (mid + Math.imul(ah1, bl1)) | 0; + hi = (hi + Math.imul(ah1, bh1)) | 0; + lo = (lo + Math.imul(al0, bl2)) | 0; + mid = (mid + Math.imul(al0, bh2)) | 0; + mid = (mid + Math.imul(ah0, bl2)) | 0; + hi = (hi + Math.imul(ah0, bh2)) | 0; + var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0; + w2 &= 0x3ffffff; + /* k = 3 */ + lo = Math.imul(al3, bl0); + mid = Math.imul(al3, bh0); + mid = (mid + Math.imul(ah3, bl0)) | 0; + hi = Math.imul(ah3, bh0); + lo = (lo + Math.imul(al2, bl1)) | 0; + mid = (mid + Math.imul(al2, bh1)) | 0; + mid = (mid + Math.imul(ah2, bl1)) | 0; + hi = (hi + Math.imul(ah2, bh1)) | 0; + lo = (lo + Math.imul(al1, bl2)) | 0; + mid = (mid + Math.imul(al1, bh2)) | 0; + mid = (mid + Math.imul(ah1, bl2)) | 0; + hi = (hi + Math.imul(ah1, bh2)) | 0; + lo = (lo + Math.imul(al0, bl3)) | 0; + mid = (mid + Math.imul(al0, bh3)) | 0; + mid = (mid + Math.imul(ah0, bl3)) | 0; + hi = (hi + Math.imul(ah0, bh3)) | 0; + var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0; + w3 &= 0x3ffffff; + /* k = 4 */ + lo = Math.imul(al4, bl0); + mid = Math.imul(al4, bh0); + mid = (mid + Math.imul(ah4, bl0)) | 0; + hi = Math.imul(ah4, bh0); + lo = (lo + Math.imul(al3, bl1)) | 0; + mid = (mid + Math.imul(al3, bh1)) | 0; + mid = (mid + Math.imul(ah3, bl1)) | 0; + hi = (hi + Math.imul(ah3, bh1)) | 0; + lo = (lo + Math.imul(al2, bl2)) | 0; + mid = (mid + Math.imul(al2, bh2)) | 0; + mid = (mid + Math.imul(ah2, bl2)) | 0; + hi = (hi + Math.imul(ah2, bh2)) | 0; + lo = (lo + Math.imul(al1, bl3)) | 0; + mid = (mid + Math.imul(al1, bh3)) | 0; + mid = (mid + Math.imul(ah1, bl3)) | 0; + hi = (hi + Math.imul(ah1, bh3)) | 0; + lo = (lo + Math.imul(al0, bl4)) | 0; + mid = (mid + Math.imul(al0, bh4)) | 0; + mid = (mid + Math.imul(ah0, bl4)) | 0; + hi = (hi + Math.imul(ah0, bh4)) | 0; + var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0; + w4 &= 0x3ffffff; + /* k = 5 */ + lo = Math.imul(al5, bl0); + mid = Math.imul(al5, bh0); + mid = (mid + Math.imul(ah5, bl0)) | 0; + hi = Math.imul(ah5, bh0); + lo = (lo + Math.imul(al4, bl1)) | 0; + mid = (mid + Math.imul(al4, bh1)) | 0; + mid = (mid + Math.imul(ah4, bl1)) | 0; + hi = (hi + Math.imul(ah4, bh1)) | 0; + lo = (lo + Math.imul(al3, bl2)) | 0; + mid = (mid + Math.imul(al3, bh2)) | 0; + mid = (mid + Math.imul(ah3, bl2)) | 0; + hi = (hi + Math.imul(ah3, bh2)) | 0; + lo = (lo + Math.imul(al2, bl3)) | 0; + mid = (mid + Math.imul(al2, bh3)) | 0; + mid = (mid + Math.imul(ah2, bl3)) | 0; + hi = (hi + Math.imul(ah2, bh3)) | 0; + lo = (lo + Math.imul(al1, bl4)) | 0; + mid = (mid + Math.imul(al1, bh4)) | 0; + mid = (mid + Math.imul(ah1, bl4)) | 0; + hi = (hi + Math.imul(ah1, bh4)) | 0; + lo = (lo + Math.imul(al0, bl5)) | 0; + mid = (mid + Math.imul(al0, bh5)) | 0; + mid = (mid + Math.imul(ah0, bl5)) | 0; + hi = (hi + Math.imul(ah0, bh5)) | 0; + var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0; + w5 &= 0x3ffffff; + /* k = 6 */ + lo = Math.imul(al6, bl0); + mid = Math.imul(al6, bh0); + mid = (mid + Math.imul(ah6, bl0)) | 0; + hi = Math.imul(ah6, bh0); + lo = (lo + Math.imul(al5, bl1)) | 0; + mid = (mid + Math.imul(al5, bh1)) | 0; + mid = (mid + Math.imul(ah5, bl1)) | 0; + hi = (hi + Math.imul(ah5, bh1)) | 0; + lo = (lo + Math.imul(al4, bl2)) | 0; + mid = (mid + Math.imul(al4, bh2)) | 0; + mid = (mid + Math.imul(ah4, bl2)) | 0; + hi = (hi + Math.imul(ah4, bh2)) | 0; + lo = (lo + Math.imul(al3, bl3)) | 0; + mid = (mid + Math.imul(al3, bh3)) | 0; + mid = (mid + Math.imul(ah3, bl3)) | 0; + hi = (hi + Math.imul(ah3, bh3)) | 0; + lo = (lo + Math.imul(al2, bl4)) | 0; + mid = (mid + Math.imul(al2, bh4)) | 0; + mid = (mid + Math.imul(ah2, bl4)) | 0; + hi = (hi + Math.imul(ah2, bh4)) | 0; + lo = (lo + Math.imul(al1, bl5)) | 0; + mid = (mid + Math.imul(al1, bh5)) | 0; + mid = (mid + Math.imul(ah1, bl5)) | 0; + hi = (hi + Math.imul(ah1, bh5)) | 0; + lo = (lo + Math.imul(al0, bl6)) | 0; + mid = (mid + Math.imul(al0, bh6)) | 0; + mid = (mid + Math.imul(ah0, bl6)) | 0; + hi = (hi + Math.imul(ah0, bh6)) | 0; + var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0; + w6 &= 0x3ffffff; + /* k = 7 */ + lo = Math.imul(al7, bl0); + mid = Math.imul(al7, bh0); + mid = (mid + Math.imul(ah7, bl0)) | 0; + hi = Math.imul(ah7, bh0); + lo = (lo + Math.imul(al6, bl1)) | 0; + mid = (mid + Math.imul(al6, bh1)) | 0; + mid = (mid + Math.imul(ah6, bl1)) | 0; + hi = (hi + Math.imul(ah6, bh1)) | 0; + lo = (lo + Math.imul(al5, bl2)) | 0; + mid = (mid + Math.imul(al5, bh2)) | 0; + mid = (mid + Math.imul(ah5, bl2)) | 0; + hi = (hi + Math.imul(ah5, bh2)) | 0; + lo = (lo + Math.imul(al4, bl3)) | 0; + mid = (mid + Math.imul(al4, bh3)) | 0; + mid = (mid + Math.imul(ah4, bl3)) | 0; + hi = (hi + Math.imul(ah4, bh3)) | 0; + lo = (lo + Math.imul(al3, bl4)) | 0; + mid = (mid + Math.imul(al3, bh4)) | 0; + mid = (mid + Math.imul(ah3, bl4)) | 0; + hi = (hi + Math.imul(ah3, bh4)) | 0; + lo = (lo + Math.imul(al2, bl5)) | 0; + mid = (mid + Math.imul(al2, bh5)) | 0; + mid = (mid + Math.imul(ah2, bl5)) | 0; + hi = (hi + Math.imul(ah2, bh5)) | 0; + lo = (lo + Math.imul(al1, bl6)) | 0; + mid = (mid + Math.imul(al1, bh6)) | 0; + mid = (mid + Math.imul(ah1, bl6)) | 0; + hi = (hi + Math.imul(ah1, bh6)) | 0; + lo = (lo + Math.imul(al0, bl7)) | 0; + mid = (mid + Math.imul(al0, bh7)) | 0; + mid = (mid + Math.imul(ah0, bl7)) | 0; + hi = (hi + Math.imul(ah0, bh7)) | 0; + var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0; + w7 &= 0x3ffffff; + /* k = 8 */ + lo = Math.imul(al8, bl0); + mid = Math.imul(al8, bh0); + mid = (mid + Math.imul(ah8, bl0)) | 0; + hi = Math.imul(ah8, bh0); + lo = (lo + Math.imul(al7, bl1)) | 0; + mid = (mid + Math.imul(al7, bh1)) | 0; + mid = (mid + Math.imul(ah7, bl1)) | 0; + hi = (hi + Math.imul(ah7, bh1)) | 0; + lo = (lo + Math.imul(al6, bl2)) | 0; + mid = (mid + Math.imul(al6, bh2)) | 0; + mid = (mid + Math.imul(ah6, bl2)) | 0; + hi = (hi + Math.imul(ah6, bh2)) | 0; + lo = (lo + Math.imul(al5, bl3)) | 0; + mid = (mid + Math.imul(al5, bh3)) | 0; + mid = (mid + Math.imul(ah5, bl3)) | 0; + hi = (hi + Math.imul(ah5, bh3)) | 0; + lo = (lo + Math.imul(al4, bl4)) | 0; + mid = (mid + Math.imul(al4, bh4)) | 0; + mid = (mid + Math.imul(ah4, bl4)) | 0; + hi = (hi + Math.imul(ah4, bh4)) | 0; + lo = (lo + Math.imul(al3, bl5)) | 0; + mid = (mid + Math.imul(al3, bh5)) | 0; + mid = (mid + Math.imul(ah3, bl5)) | 0; + hi = (hi + Math.imul(ah3, bh5)) | 0; + lo = (lo + Math.imul(al2, bl6)) | 0; + mid = (mid + Math.imul(al2, bh6)) | 0; + mid = (mid + Math.imul(ah2, bl6)) | 0; + hi = (hi + Math.imul(ah2, bh6)) | 0; + lo = (lo + Math.imul(al1, bl7)) | 0; + mid = (mid + Math.imul(al1, bh7)) | 0; + mid = (mid + Math.imul(ah1, bl7)) | 0; + hi = (hi + Math.imul(ah1, bh7)) | 0; + lo = (lo + Math.imul(al0, bl8)) | 0; + mid = (mid + Math.imul(al0, bh8)) | 0; + mid = (mid + Math.imul(ah0, bl8)) | 0; + hi = (hi + Math.imul(ah0, bh8)) | 0; + var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0; + w8 &= 0x3ffffff; + /* k = 9 */ + lo = Math.imul(al9, bl0); + mid = Math.imul(al9, bh0); + mid = (mid + Math.imul(ah9, bl0)) | 0; + hi = Math.imul(ah9, bh0); + lo = (lo + Math.imul(al8, bl1)) | 0; + mid = (mid + Math.imul(al8, bh1)) | 0; + mid = (mid + Math.imul(ah8, bl1)) | 0; + hi = (hi + Math.imul(ah8, bh1)) | 0; + lo = (lo + Math.imul(al7, bl2)) | 0; + mid = (mid + Math.imul(al7, bh2)) | 0; + mid = (mid + Math.imul(ah7, bl2)) | 0; + hi = (hi + Math.imul(ah7, bh2)) | 0; + lo = (lo + Math.imul(al6, bl3)) | 0; + mid = (mid + Math.imul(al6, bh3)) | 0; + mid = (mid + Math.imul(ah6, bl3)) | 0; + hi = (hi + Math.imul(ah6, bh3)) | 0; + lo = (lo + Math.imul(al5, bl4)) | 0; + mid = (mid + Math.imul(al5, bh4)) | 0; + mid = (mid + Math.imul(ah5, bl4)) | 0; + hi = (hi + Math.imul(ah5, bh4)) | 0; + lo = (lo + Math.imul(al4, bl5)) | 0; + mid = (mid + Math.imul(al4, bh5)) | 0; + mid = (mid + Math.imul(ah4, bl5)) | 0; + hi = (hi + Math.imul(ah4, bh5)) | 0; + lo = (lo + Math.imul(al3, bl6)) | 0; + mid = (mid + Math.imul(al3, bh6)) | 0; + mid = (mid + Math.imul(ah3, bl6)) | 0; + hi = (hi + Math.imul(ah3, bh6)) | 0; + lo = (lo + Math.imul(al2, bl7)) | 0; + mid = (mid + Math.imul(al2, bh7)) | 0; + mid = (mid + Math.imul(ah2, bl7)) | 0; + hi = (hi + Math.imul(ah2, bh7)) | 0; + lo = (lo + Math.imul(al1, bl8)) | 0; + mid = (mid + Math.imul(al1, bh8)) | 0; + mid = (mid + Math.imul(ah1, bl8)) | 0; + hi = (hi + Math.imul(ah1, bh8)) | 0; + lo = (lo + Math.imul(al0, bl9)) | 0; + mid = (mid + Math.imul(al0, bh9)) | 0; + mid = (mid + Math.imul(ah0, bl9)) | 0; + hi = (hi + Math.imul(ah0, bh9)) | 0; + var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0; + w9 &= 0x3ffffff; + /* k = 10 */ + lo = Math.imul(al9, bl1); + mid = Math.imul(al9, bh1); + mid = (mid + Math.imul(ah9, bl1)) | 0; + hi = Math.imul(ah9, bh1); + lo = (lo + Math.imul(al8, bl2)) | 0; + mid = (mid + Math.imul(al8, bh2)) | 0; + mid = (mid + Math.imul(ah8, bl2)) | 0; + hi = (hi + Math.imul(ah8, bh2)) | 0; + lo = (lo + Math.imul(al7, bl3)) | 0; + mid = (mid + Math.imul(al7, bh3)) | 0; + mid = (mid + Math.imul(ah7, bl3)) | 0; + hi = (hi + Math.imul(ah7, bh3)) | 0; + lo = (lo + Math.imul(al6, bl4)) | 0; + mid = (mid + Math.imul(al6, bh4)) | 0; + mid = (mid + Math.imul(ah6, bl4)) | 0; + hi = (hi + Math.imul(ah6, bh4)) | 0; + lo = (lo + Math.imul(al5, bl5)) | 0; + mid = (mid + Math.imul(al5, bh5)) | 0; + mid = (mid + Math.imul(ah5, bl5)) | 0; + hi = (hi + Math.imul(ah5, bh5)) | 0; + lo = (lo + Math.imul(al4, bl6)) | 0; + mid = (mid + Math.imul(al4, bh6)) | 0; + mid = (mid + Math.imul(ah4, bl6)) | 0; + hi = (hi + Math.imul(ah4, bh6)) | 0; + lo = (lo + Math.imul(al3, bl7)) | 0; + mid = (mid + Math.imul(al3, bh7)) | 0; + mid = (mid + Math.imul(ah3, bl7)) | 0; + hi = (hi + Math.imul(ah3, bh7)) | 0; + lo = (lo + Math.imul(al2, bl8)) | 0; + mid = (mid + Math.imul(al2, bh8)) | 0; + mid = (mid + Math.imul(ah2, bl8)) | 0; + hi = (hi + Math.imul(ah2, bh8)) | 0; + lo = (lo + Math.imul(al1, bl9)) | 0; + mid = (mid + Math.imul(al1, bh9)) | 0; + mid = (mid + Math.imul(ah1, bl9)) | 0; + hi = (hi + Math.imul(ah1, bh9)) | 0; + var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0; + w10 &= 0x3ffffff; + /* k = 11 */ + lo = Math.imul(al9, bl2); + mid = Math.imul(al9, bh2); + mid = (mid + Math.imul(ah9, bl2)) | 0; + hi = Math.imul(ah9, bh2); + lo = (lo + Math.imul(al8, bl3)) | 0; + mid = (mid + Math.imul(al8, bh3)) | 0; + mid = (mid + Math.imul(ah8, bl3)) | 0; + hi = (hi + Math.imul(ah8, bh3)) | 0; + lo = (lo + Math.imul(al7, bl4)) | 0; + mid = (mid + Math.imul(al7, bh4)) | 0; + mid = (mid + Math.imul(ah7, bl4)) | 0; + hi = (hi + Math.imul(ah7, bh4)) | 0; + lo = (lo + Math.imul(al6, bl5)) | 0; + mid = (mid + Math.imul(al6, bh5)) | 0; + mid = (mid + Math.imul(ah6, bl5)) | 0; + hi = (hi + Math.imul(ah6, bh5)) | 0; + lo = (lo + Math.imul(al5, bl6)) | 0; + mid = (mid + Math.imul(al5, bh6)) | 0; + mid = (mid + Math.imul(ah5, bl6)) | 0; + hi = (hi + Math.imul(ah5, bh6)) | 0; + lo = (lo + Math.imul(al4, bl7)) | 0; + mid = (mid + Math.imul(al4, bh7)) | 0; + mid = (mid + Math.imul(ah4, bl7)) | 0; + hi = (hi + Math.imul(ah4, bh7)) | 0; + lo = (lo + Math.imul(al3, bl8)) | 0; + mid = (mid + Math.imul(al3, bh8)) | 0; + mid = (mid + Math.imul(ah3, bl8)) | 0; + hi = (hi + Math.imul(ah3, bh8)) | 0; + lo = (lo + Math.imul(al2, bl9)) | 0; + mid = (mid + Math.imul(al2, bh9)) | 0; + mid = (mid + Math.imul(ah2, bl9)) | 0; + hi = (hi + Math.imul(ah2, bh9)) | 0; + var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0; + w11 &= 0x3ffffff; + /* k = 12 */ + lo = Math.imul(al9, bl3); + mid = Math.imul(al9, bh3); + mid = (mid + Math.imul(ah9, bl3)) | 0; + hi = Math.imul(ah9, bh3); + lo = (lo + Math.imul(al8, bl4)) | 0; + mid = (mid + Math.imul(al8, bh4)) | 0; + mid = (mid + Math.imul(ah8, bl4)) | 0; + hi = (hi + Math.imul(ah8, bh4)) | 0; + lo = (lo + Math.imul(al7, bl5)) | 0; + mid = (mid + Math.imul(al7, bh5)) | 0; + mid = (mid + Math.imul(ah7, bl5)) | 0; + hi = (hi + Math.imul(ah7, bh5)) | 0; + lo = (lo + Math.imul(al6, bl6)) | 0; + mid = (mid + Math.imul(al6, bh6)) | 0; + mid = (mid + Math.imul(ah6, bl6)) | 0; + hi = (hi + Math.imul(ah6, bh6)) | 0; + lo = (lo + Math.imul(al5, bl7)) | 0; + mid = (mid + Math.imul(al5, bh7)) | 0; + mid = (mid + Math.imul(ah5, bl7)) | 0; + hi = (hi + Math.imul(ah5, bh7)) | 0; + lo = (lo + Math.imul(al4, bl8)) | 0; + mid = (mid + Math.imul(al4, bh8)) | 0; + mid = (mid + Math.imul(ah4, bl8)) | 0; + hi = (hi + Math.imul(ah4, bh8)) | 0; + lo = (lo + Math.imul(al3, bl9)) | 0; + mid = (mid + Math.imul(al3, bh9)) | 0; + mid = (mid + Math.imul(ah3, bl9)) | 0; + hi = (hi + Math.imul(ah3, bh9)) | 0; + var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0; + w12 &= 0x3ffffff; + /* k = 13 */ + lo = Math.imul(al9, bl4); + mid = Math.imul(al9, bh4); + mid = (mid + Math.imul(ah9, bl4)) | 0; + hi = Math.imul(ah9, bh4); + lo = (lo + Math.imul(al8, bl5)) | 0; + mid = (mid + Math.imul(al8, bh5)) | 0; + mid = (mid + Math.imul(ah8, bl5)) | 0; + hi = (hi + Math.imul(ah8, bh5)) | 0; + lo = (lo + Math.imul(al7, bl6)) | 0; + mid = (mid + Math.imul(al7, bh6)) | 0; + mid = (mid + Math.imul(ah7, bl6)) | 0; + hi = (hi + Math.imul(ah7, bh6)) | 0; + lo = (lo + Math.imul(al6, bl7)) | 0; + mid = (mid + Math.imul(al6, bh7)) | 0; + mid = (mid + Math.imul(ah6, bl7)) | 0; + hi = (hi + Math.imul(ah6, bh7)) | 0; + lo = (lo + Math.imul(al5, bl8)) | 0; + mid = (mid + Math.imul(al5, bh8)) | 0; + mid = (mid + Math.imul(ah5, bl8)) | 0; + hi = (hi + Math.imul(ah5, bh8)) | 0; + lo = (lo + Math.imul(al4, bl9)) | 0; + mid = (mid + Math.imul(al4, bh9)) | 0; + mid = (mid + Math.imul(ah4, bl9)) | 0; + hi = (hi + Math.imul(ah4, bh9)) | 0; + var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0; + w13 &= 0x3ffffff; + /* k = 14 */ + lo = Math.imul(al9, bl5); + mid = Math.imul(al9, bh5); + mid = (mid + Math.imul(ah9, bl5)) | 0; + hi = Math.imul(ah9, bh5); + lo = (lo + Math.imul(al8, bl6)) | 0; + mid = (mid + Math.imul(al8, bh6)) | 0; + mid = (mid + Math.imul(ah8, bl6)) | 0; + hi = (hi + Math.imul(ah8, bh6)) | 0; + lo = (lo + Math.imul(al7, bl7)) | 0; + mid = (mid + Math.imul(al7, bh7)) | 0; + mid = (mid + Math.imul(ah7, bl7)) | 0; + hi = (hi + Math.imul(ah7, bh7)) | 0; + lo = (lo + Math.imul(al6, bl8)) | 0; + mid = (mid + Math.imul(al6, bh8)) | 0; + mid = (mid + Math.imul(ah6, bl8)) | 0; + hi = (hi + Math.imul(ah6, bh8)) | 0; + lo = (lo + Math.imul(al5, bl9)) | 0; + mid = (mid + Math.imul(al5, bh9)) | 0; + mid = (mid + Math.imul(ah5, bl9)) | 0; + hi = (hi + Math.imul(ah5, bh9)) | 0; + var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0; + w14 &= 0x3ffffff; + /* k = 15 */ + lo = Math.imul(al9, bl6); + mid = Math.imul(al9, bh6); + mid = (mid + Math.imul(ah9, bl6)) | 0; + hi = Math.imul(ah9, bh6); + lo = (lo + Math.imul(al8, bl7)) | 0; + mid = (mid + Math.imul(al8, bh7)) | 0; + mid = (mid + Math.imul(ah8, bl7)) | 0; + hi = (hi + Math.imul(ah8, bh7)) | 0; + lo = (lo + Math.imul(al7, bl8)) | 0; + mid = (mid + Math.imul(al7, bh8)) | 0; + mid = (mid + Math.imul(ah7, bl8)) | 0; + hi = (hi + Math.imul(ah7, bh8)) | 0; + lo = (lo + Math.imul(al6, bl9)) | 0; + mid = (mid + Math.imul(al6, bh9)) | 0; + mid = (mid + Math.imul(ah6, bl9)) | 0; + hi = (hi + Math.imul(ah6, bh9)) | 0; + var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0; + w15 &= 0x3ffffff; + /* k = 16 */ + lo = Math.imul(al9, bl7); + mid = Math.imul(al9, bh7); + mid = (mid + Math.imul(ah9, bl7)) | 0; + hi = Math.imul(ah9, bh7); + lo = (lo + Math.imul(al8, bl8)) | 0; + mid = (mid + Math.imul(al8, bh8)) | 0; + mid = (mid + Math.imul(ah8, bl8)) | 0; + hi = (hi + Math.imul(ah8, bh8)) | 0; + lo = (lo + Math.imul(al7, bl9)) | 0; + mid = (mid + Math.imul(al7, bh9)) | 0; + mid = (mid + Math.imul(ah7, bl9)) | 0; + hi = (hi + Math.imul(ah7, bh9)) | 0; + var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0; + w16 &= 0x3ffffff; + /* k = 17 */ + lo = Math.imul(al9, bl8); + mid = Math.imul(al9, bh8); + mid = (mid + Math.imul(ah9, bl8)) | 0; + hi = Math.imul(ah9, bh8); + lo = (lo + Math.imul(al8, bl9)) | 0; + mid = (mid + Math.imul(al8, bh9)) | 0; + mid = (mid + Math.imul(ah8, bl9)) | 0; + hi = (hi + Math.imul(ah8, bh9)) | 0; + var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0; + w17 &= 0x3ffffff; + /* k = 18 */ + lo = Math.imul(al9, bl9); + mid = Math.imul(al9, bh9); + mid = (mid + Math.imul(ah9, bl9)) | 0; + hi = Math.imul(ah9, bh9); + var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0; + w18 &= 0x3ffffff; + o[0] = w0; + o[1] = w1; + o[2] = w2; + o[3] = w3; + o[4] = w4; + o[5] = w5; + o[6] = w6; + o[7] = w7; + o[8] = w8; + o[9] = w9; + o[10] = w10; + o[11] = w11; + o[12] = w12; + o[13] = w13; + o[14] = w14; + o[15] = w15; + o[16] = w16; + o[17] = w17; + o[18] = w18; + if (c !== 0) { + o[19] = c; + out.length++; + } + return out; + }; + + // Polyfill comb + if (!Math.imul) { + comb10MulTo = smallMulTo; + } + + function bigMulTo (self, num, out) { + out.negative = num.negative ^ self.negative; + out.length = self.length + num.length; + + var carry = 0; + var hncarry = 0; + for (var k = 0; k < out.length - 1; k++) { + // Sum all words with the same `i + j = k` and accumulate `ncarry`, + // note that ncarry could be >= 0x3ffffff + var ncarry = hncarry; + hncarry = 0; + var rword = carry & 0x3ffffff; + var maxJ = Math.min(k, num.length - 1); + for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { + var i = k - j; + var a = self.words[i] | 0; + var b = num.words[j] | 0; + var r = a * b; + + var lo = r & 0x3ffffff; + ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0; + lo = (lo + rword) | 0; + rword = lo & 0x3ffffff; + ncarry = (ncarry + (lo >>> 26)) | 0; + + hncarry += ncarry >>> 26; + ncarry &= 0x3ffffff; + } + out.words[k] = rword; + carry = ncarry; + ncarry = hncarry; + } + if (carry !== 0) { + out.words[k] = carry; + } else { + out.length--; + } + + return out._strip(); + } + + function jumboMulTo (self, num, out) { + // Temporary disable, see https://github.com/indutny/bn.js/issues/211 + // var fftm = new FFTM(); + // return fftm.mulp(self, num, out); + return bigMulTo(self, num, out); + } + + BN.prototype.mulTo = function mulTo (num, out) { + var res; + var len = this.length + num.length; + if (this.length === 10 && num.length === 10) { + res = comb10MulTo(this, num, out); + } else if (len < 63) { + res = smallMulTo(this, num, out); + } else if (len < 1024) { + res = bigMulTo(this, num, out); + } else { + res = jumboMulTo(this, num, out); + } + + return res; + }; + + // Cooley-Tukey algorithm for FFT + // slightly revisited to rely on looping instead of recursion + + function FFTM (x, y) { + this.x = x; + this.y = y; + } + + FFTM.prototype.makeRBT = function makeRBT (N) { + var t = new Array(N); + var l = BN.prototype._countBits(N) - 1; + for (var i = 0; i < N; i++) { + t[i] = this.revBin(i, l, N); + } + + return t; + }; + + // Returns binary-reversed representation of `x` + FFTM.prototype.revBin = function revBin (x, l, N) { + if (x === 0 || x === N - 1) return x; + + var rb = 0; + for (var i = 0; i < l; i++) { + rb |= (x & 1) << (l - i - 1); + x >>= 1; + } + + return rb; + }; + + // Performs "tweedling" phase, therefore 'emulating' + // behaviour of the recursive algorithm + FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) { + for (var i = 0; i < N; i++) { + rtws[i] = rws[rbt[i]]; + itws[i] = iws[rbt[i]]; + } + }; + + FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) { + this.permute(rbt, rws, iws, rtws, itws, N); + + for (var s = 1; s < N; s <<= 1) { + var l = s << 1; + + var rtwdf = Math.cos(2 * Math.PI / l); + var itwdf = Math.sin(2 * Math.PI / l); + + for (var p = 0; p < N; p += l) { + var rtwdf_ = rtwdf; + var itwdf_ = itwdf; + + for (var j = 0; j < s; j++) { + var re = rtws[p + j]; + var ie = itws[p + j]; + + var ro = rtws[p + j + s]; + var io = itws[p + j + s]; + + var rx = rtwdf_ * ro - itwdf_ * io; + + io = rtwdf_ * io + itwdf_ * ro; + ro = rx; + + rtws[p + j] = re + ro; + itws[p + j] = ie + io; + + rtws[p + j + s] = re - ro; + itws[p + j + s] = ie - io; + + /* jshint maxdepth : false */ + if (j !== l) { + rx = rtwdf * rtwdf_ - itwdf * itwdf_; + + itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_; + rtwdf_ = rx; + } + } + } + } + }; + + FFTM.prototype.guessLen13b = function guessLen13b (n, m) { + var N = Math.max(m, n) | 1; + var odd = N & 1; + var i = 0; + for (N = N / 2 | 0; N; N = N >>> 1) { + i++; + } + + return 1 << i + 1 + odd; + }; + + FFTM.prototype.conjugate = function conjugate (rws, iws, N) { + if (N <= 1) return; + + for (var i = 0; i < N / 2; i++) { + var t = rws[i]; + + rws[i] = rws[N - i - 1]; + rws[N - i - 1] = t; + + t = iws[i]; + + iws[i] = -iws[N - i - 1]; + iws[N - i - 1] = -t; + } + }; + + FFTM.prototype.normalize13b = function normalize13b (ws, N) { + var carry = 0; + for (var i = 0; i < N / 2; i++) { + var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + + Math.round(ws[2 * i] / N) + + carry; + + ws[i] = w & 0x3ffffff; + + if (w < 0x4000000) { + carry = 0; + } else { + carry = w / 0x4000000 | 0; + } + } + + return ws; + }; + + FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) { + var carry = 0; + for (var i = 0; i < len; i++) { + carry = carry + (ws[i] | 0); + + rws[2 * i] = carry & 0x1fff; carry = carry >>> 13; + rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13; + } + + // Pad with zeroes + for (i = 2 * len; i < N; ++i) { + rws[i] = 0; + } + + assert(carry === 0); + assert((carry & ~0x1fff) === 0); + }; + + FFTM.prototype.stub = function stub (N) { + var ph = new Array(N); + for (var i = 0; i < N; i++) { + ph[i] = 0; + } + + return ph; + }; + + FFTM.prototype.mulp = function mulp (x, y, out) { + var N = 2 * this.guessLen13b(x.length, y.length); + + var rbt = this.makeRBT(N); + + var _ = this.stub(N); + + var rws = new Array(N); + var rwst = new Array(N); + var iwst = new Array(N); + + var nrws = new Array(N); + var nrwst = new Array(N); + var niwst = new Array(N); + + var rmws = out.words; + rmws.length = N; + + this.convert13b(x.words, x.length, rws, N); + this.convert13b(y.words, y.length, nrws, N); + + this.transform(rws, _, rwst, iwst, N, rbt); + this.transform(nrws, _, nrwst, niwst, N, rbt); + + for (var i = 0; i < N; i++) { + var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; + iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]; + rwst[i] = rx; + } + + this.conjugate(rwst, iwst, N); + this.transform(rwst, iwst, rmws, _, N, rbt); + this.conjugate(rmws, _, N); + this.normalize13b(rmws, N); + + out.negative = x.negative ^ y.negative; + out.length = x.length + y.length; + return out._strip(); + }; + + // Multiply `this` by `num` + BN.prototype.mul = function mul (num) { + var out = new BN(null); + out.words = new Array(this.length + num.length); + return this.mulTo(num, out); + }; + + // Multiply employing FFT + BN.prototype.mulf = function mulf (num) { + var out = new BN(null); + out.words = new Array(this.length + num.length); + return jumboMulTo(this, num, out); + }; + + // In-place Multiplication + BN.prototype.imul = function imul (num) { + return this.clone().mulTo(num, this); + }; + + BN.prototype.imuln = function imuln (num) { + var isNegNum = num < 0; + if (isNegNum) num = -num; + + assert(typeof num === 'number'); + assert(num < 0x4000000); + + // Carry + var carry = 0; + for (var i = 0; i < this.length; i++) { + var w = (this.words[i] | 0) * num; + var lo = (w & 0x3ffffff) + (carry & 0x3ffffff); + carry >>= 26; + carry += (w / 0x4000000) | 0; + // NOTE: lo is 27bit maximum + carry += lo >>> 26; + this.words[i] = lo & 0x3ffffff; + } + + if (carry !== 0) { + this.words[i] = carry; + this.length++; + } + + return isNegNum ? this.ineg() : this; + }; + + BN.prototype.muln = function muln (num) { + return this.clone().imuln(num); + }; + + // `this` * `this` + BN.prototype.sqr = function sqr () { + return this.mul(this); + }; + + // `this` * `this` in-place + BN.prototype.isqr = function isqr () { + return this.imul(this.clone()); + }; + + // Math.pow(`this`, `num`) + BN.prototype.pow = function pow (num) { + var w = toBitArray(num); + if (w.length === 0) return new BN(1); + + // Skip leading zeroes + var res = this; + for (var i = 0; i < w.length; i++, res = res.sqr()) { + if (w[i] !== 0) break; + } + + if (++i < w.length) { + for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) { + if (w[i] === 0) continue; + + res = res.mul(q); + } + } + + return res; + }; + + // Shift-left in-place + BN.prototype.iushln = function iushln (bits) { + assert(typeof bits === 'number' && bits >= 0); + var r = bits % 26; + var s = (bits - r) / 26; + var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r); + var i; + + if (r !== 0) { + var carry = 0; + + for (i = 0; i < this.length; i++) { + var newCarry = this.words[i] & carryMask; + var c = ((this.words[i] | 0) - newCarry) << r; + this.words[i] = c | carry; + carry = newCarry >>> (26 - r); + } + + if (carry) { + this.words[i] = carry; + this.length++; + } + } + + if (s !== 0) { + for (i = this.length - 1; i >= 0; i--) { + this.words[i + s] = this.words[i]; + } + + for (i = 0; i < s; i++) { + this.words[i] = 0; + } + + this.length += s; + } + + return this._strip(); + }; + + BN.prototype.ishln = function ishln (bits) { + // TODO(indutny): implement me + assert(this.negative === 0); + return this.iushln(bits); + }; + + // Shift-right in-place + // NOTE: `hint` is a lowest bit before trailing zeroes + // NOTE: if `extended` is present - it will be filled with destroyed bits + BN.prototype.iushrn = function iushrn (bits, hint, extended) { + assert(typeof bits === 'number' && bits >= 0); + var h; + if (hint) { + h = (hint - (hint % 26)) / 26; + } else { + h = 0; + } + + var r = bits % 26; + var s = Math.min((bits - r) / 26, this.length); + var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); + var maskedWords = extended; + + h -= s; + h = Math.max(0, h); + + // Extended mode, copy masked part + if (maskedWords) { + for (var i = 0; i < s; i++) { + maskedWords.words[i] = this.words[i]; + } + maskedWords.length = s; + } + + if (s === 0) { + // No-op, we should not move anything at all + } else if (this.length > s) { + this.length -= s; + for (i = 0; i < this.length; i++) { + this.words[i] = this.words[i + s]; + } + } else { + this.words[0] = 0; + this.length = 1; + } + + var carry = 0; + for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { + var word = this.words[i] | 0; + this.words[i] = (carry << (26 - r)) | (word >>> r); + carry = word & mask; + } + + // Push carried bits as a mask + if (maskedWords && carry !== 0) { + maskedWords.words[maskedWords.length++] = carry; + } + + if (this.length === 0) { + this.words[0] = 0; + this.length = 1; + } + + return this._strip(); + }; + + BN.prototype.ishrn = function ishrn (bits, hint, extended) { + // TODO(indutny): implement me + assert(this.negative === 0); + return this.iushrn(bits, hint, extended); + }; + + // Shift-left + BN.prototype.shln = function shln (bits) { + return this.clone().ishln(bits); + }; + + BN.prototype.ushln = function ushln (bits) { + return this.clone().iushln(bits); + }; + + // Shift-right + BN.prototype.shrn = function shrn (bits) { + return this.clone().ishrn(bits); + }; + + BN.prototype.ushrn = function ushrn (bits) { + return this.clone().iushrn(bits); + }; + + // Test if n bit is set + BN.prototype.testn = function testn (bit) { + assert(typeof bit === 'number' && bit >= 0); + var r = bit % 26; + var s = (bit - r) / 26; + var q = 1 << r; + + // Fast case: bit is much higher than all existing words + if (this.length <= s) return false; + + // Check bit and return + var w = this.words[s]; + + return !!(w & q); + }; + + // Return only lowers bits of number (in-place) + BN.prototype.imaskn = function imaskn (bits) { + assert(typeof bits === 'number' && bits >= 0); + var r = bits % 26; + var s = (bits - r) / 26; + + assert(this.negative === 0, 'imaskn works only with positive numbers'); + + if (this.length <= s) { + return this; + } + + if (r !== 0) { + s++; + } + this.length = Math.min(s, this.length); + + if (r !== 0) { + var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); + this.words[this.length - 1] &= mask; + } + + return this._strip(); + }; + + // Return only lowers bits of number + BN.prototype.maskn = function maskn (bits) { + return this.clone().imaskn(bits); + }; + + // Add plain number `num` to `this` + BN.prototype.iaddn = function iaddn (num) { + assert(typeof num === 'number'); + assert(num < 0x4000000); + if (num < 0) return this.isubn(-num); + + // Possible sign change + if (this.negative !== 0) { + if (this.length === 1 && (this.words[0] | 0) <= num) { + this.words[0] = num - (this.words[0] | 0); + this.negative = 0; + return this; + } + + this.negative = 0; + this.isubn(num); + this.negative = 1; + return this; + } + + // Add without checks + return this._iaddn(num); + }; + + BN.prototype._iaddn = function _iaddn (num) { + this.words[0] += num; + + // Carry + for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) { + this.words[i] -= 0x4000000; + if (i === this.length - 1) { + this.words[i + 1] = 1; + } else { + this.words[i + 1]++; + } + } + this.length = Math.max(this.length, i + 1); + + return this; + }; + + // Subtract plain number `num` from `this` + BN.prototype.isubn = function isubn (num) { + assert(typeof num === 'number'); + assert(num < 0x4000000); + if (num < 0) return this.iaddn(-num); + + if (this.negative !== 0) { + this.negative = 0; + this.iaddn(num); + this.negative = 1; + return this; + } + + this.words[0] -= num; + + if (this.length === 1 && this.words[0] < 0) { + this.words[0] = -this.words[0]; + this.negative = 1; + } else { + // Carry + for (var i = 0; i < this.length && this.words[i] < 0; i++) { + this.words[i] += 0x4000000; + this.words[i + 1] -= 1; + } + } + + return this._strip(); + }; + + BN.prototype.addn = function addn (num) { + return this.clone().iaddn(num); + }; + + BN.prototype.subn = function subn (num) { + return this.clone().isubn(num); + }; + + BN.prototype.iabs = function iabs () { + this.negative = 0; + + return this; + }; + + BN.prototype.abs = function abs () { + return this.clone().iabs(); + }; + + BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) { + var len = num.length + shift; + var i; + + this._expand(len); + + var w; + var carry = 0; + for (i = 0; i < num.length; i++) { + w = (this.words[i + shift] | 0) + carry; + var right = (num.words[i] | 0) * mul; + w -= right & 0x3ffffff; + carry = (w >> 26) - ((right / 0x4000000) | 0); + this.words[i + shift] = w & 0x3ffffff; + } + for (; i < this.length - shift; i++) { + w = (this.words[i + shift] | 0) + carry; + carry = w >> 26; + this.words[i + shift] = w & 0x3ffffff; + } + + if (carry === 0) return this._strip(); + + // Subtraction overflow + assert(carry === -1); + carry = 0; + for (i = 0; i < this.length; i++) { + w = -(this.words[i] | 0) + carry; + carry = w >> 26; + this.words[i] = w & 0x3ffffff; + } + this.negative = 1; + + return this._strip(); + }; + + BN.prototype._wordDiv = function _wordDiv (num, mode) { + var shift = this.length - num.length; + + var a = this.clone(); + var b = num; + + // Normalize + var bhi = b.words[b.length - 1] | 0; + var bhiBits = this._countBits(bhi); + shift = 26 - bhiBits; + if (shift !== 0) { + b = b.ushln(shift); + a.iushln(shift); + bhi = b.words[b.length - 1] | 0; + } + + // Initialize quotient + var m = a.length - b.length; + var q; + + if (mode !== 'mod') { + q = new BN(null); + q.length = m + 1; + q.words = new Array(q.length); + for (var i = 0; i < q.length; i++) { + q.words[i] = 0; + } + } + + var diff = a.clone()._ishlnsubmul(b, 1, m); + if (diff.negative === 0) { + a = diff; + if (q) { + q.words[m] = 1; + } + } + + for (var j = m - 1; j >= 0; j--) { + var qj = (a.words[b.length + j] | 0) * 0x4000000 + + (a.words[b.length + j - 1] | 0); + + // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max + // (0x7ffffff) + qj = Math.min((qj / bhi) | 0, 0x3ffffff); + + a._ishlnsubmul(b, qj, j); + while (a.negative !== 0) { + qj--; + a.negative = 0; + a._ishlnsubmul(b, 1, j); + if (!a.isZero()) { + a.negative ^= 1; + } + } + if (q) { + q.words[j] = qj; + } + } + if (q) { + q._strip(); + } + a._strip(); + + // Denormalize + if (mode !== 'div' && shift !== 0) { + a.iushrn(shift); + } + + return { + div: q || null, + mod: a + }; + }; + + // NOTE: 1) `mode` can be set to `mod` to request mod only, + // to `div` to request div only, or be absent to + // request both div & mod + // 2) `positive` is true if unsigned mod is requested + BN.prototype.divmod = function divmod (num, mode, positive) { + assert(!num.isZero()); + + if (this.isZero()) { + return { + div: new BN(0), + mod: new BN(0) + }; + } + + var div, mod, res; + if (this.negative !== 0 && num.negative === 0) { + res = this.neg().divmod(num, mode); + + if (mode !== 'mod') { + div = res.div.neg(); + } + + if (mode !== 'div') { + mod = res.mod.neg(); + if (positive && mod.negative !== 0) { + mod.iadd(num); + } + } + + return { + div: div, + mod: mod + }; + } + + if (this.negative === 0 && num.negative !== 0) { + res = this.divmod(num.neg(), mode); + + if (mode !== 'mod') { + div = res.div.neg(); + } + + return { + div: div, + mod: res.mod + }; + } + + if ((this.negative & num.negative) !== 0) { + res = this.neg().divmod(num.neg(), mode); + + if (mode !== 'div') { + mod = res.mod.neg(); + if (positive && mod.negative !== 0) { + mod.isub(num); + } + } + + return { + div: res.div, + mod: mod + }; + } + + // Both numbers are positive at this point + + // Strip both numbers to approximate shift value + if (num.length > this.length || this.cmp(num) < 0) { + return { + div: new BN(0), + mod: this + }; + } + + // Very short reduction + if (num.length === 1) { + if (mode === 'div') { + return { + div: this.divn(num.words[0]), + mod: null + }; + } + + if (mode === 'mod') { + return { + div: null, + mod: new BN(this.modrn(num.words[0])) + }; + } + + return { + div: this.divn(num.words[0]), + mod: new BN(this.modrn(num.words[0])) + }; + } + + return this._wordDiv(num, mode); + }; + + // Find `this` / `num` + BN.prototype.div = function div (num) { + return this.divmod(num, 'div', false).div; + }; + + // Find `this` % `num` + BN.prototype.mod = function mod (num) { + return this.divmod(num, 'mod', false).mod; + }; + + BN.prototype.umod = function umod (num) { + return this.divmod(num, 'mod', true).mod; + }; + + // Find Round(`this` / `num`) + BN.prototype.divRound = function divRound (num) { + var dm = this.divmod(num); + + // Fast case - exact division + if (dm.mod.isZero()) return dm.div; + + var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod; + + var half = num.ushrn(1); + var r2 = num.andln(1); + var cmp = mod.cmp(half); + + // Round down + if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div; + + // Round up + return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1); + }; + + BN.prototype.modrn = function modrn (num) { + var isNegNum = num < 0; + if (isNegNum) num = -num; + + assert(num <= 0x3ffffff); + var p = (1 << 26) % num; + + var acc = 0; + for (var i = this.length - 1; i >= 0; i--) { + acc = (p * acc + (this.words[i] | 0)) % num; + } + + return isNegNum ? -acc : acc; + }; + + // WARNING: DEPRECATED + BN.prototype.modn = function modn (num) { + return this.modrn(num); + }; + + // In-place division by number + BN.prototype.idivn = function idivn (num) { + var isNegNum = num < 0; + if (isNegNum) num = -num; + + assert(num <= 0x3ffffff); + + var carry = 0; + for (var i = this.length - 1; i >= 0; i--) { + var w = (this.words[i] | 0) + carry * 0x4000000; + this.words[i] = (w / num) | 0; + carry = w % num; + } + + this._strip(); + return isNegNum ? this.ineg() : this; + }; + + BN.prototype.divn = function divn (num) { + return this.clone().idivn(num); + }; + + BN.prototype.egcd = function egcd (p) { + assert(p.negative === 0); + assert(!p.isZero()); + + var x = this; + var y = p.clone(); + + if (x.negative !== 0) { + x = x.umod(p); + } else { + x = x.clone(); + } + + // A * x + B * y = x + var A = new BN(1); + var B = new BN(0); + + // C * x + D * y = y + var C = new BN(0); + var D = new BN(1); + + var g = 0; + + while (x.isEven() && y.isEven()) { + x.iushrn(1); + y.iushrn(1); + ++g; + } + + var yp = y.clone(); + var xp = x.clone(); + + while (!x.isZero()) { + for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1); + if (i > 0) { + x.iushrn(i); + while (i-- > 0) { + if (A.isOdd() || B.isOdd()) { + A.iadd(yp); + B.isub(xp); + } + + A.iushrn(1); + B.iushrn(1); + } + } + + for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); + if (j > 0) { + y.iushrn(j); + while (j-- > 0) { + if (C.isOdd() || D.isOdd()) { + C.iadd(yp); + D.isub(xp); + } + + C.iushrn(1); + D.iushrn(1); + } + } + + if (x.cmp(y) >= 0) { + x.isub(y); + A.isub(C); + B.isub(D); + } else { + y.isub(x); + C.isub(A); + D.isub(B); + } + } + + return { + a: C, + b: D, + gcd: y.iushln(g) + }; + }; + + // This is reduced incarnation of the binary EEA + // above, designated to invert members of the + // _prime_ fields F(p) at a maximal speed + BN.prototype._invmp = function _invmp (p) { + assert(p.negative === 0); + assert(!p.isZero()); + + var a = this; + var b = p.clone(); + + if (a.negative !== 0) { + a = a.umod(p); + } else { + a = a.clone(); + } + + var x1 = new BN(1); + var x2 = new BN(0); + + var delta = b.clone(); + + while (a.cmpn(1) > 0 && b.cmpn(1) > 0) { + for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1); + if (i > 0) { + a.iushrn(i); + while (i-- > 0) { + if (x1.isOdd()) { + x1.iadd(delta); + } + + x1.iushrn(1); + } + } + + for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); + if (j > 0) { + b.iushrn(j); + while (j-- > 0) { + if (x2.isOdd()) { + x2.iadd(delta); + } + + x2.iushrn(1); + } + } + + if (a.cmp(b) >= 0) { + a.isub(b); + x1.isub(x2); + } else { + b.isub(a); + x2.isub(x1); + } + } + + var res; + if (a.cmpn(1) === 0) { + res = x1; + } else { + res = x2; + } + + if (res.cmpn(0) < 0) { + res.iadd(p); + } + + return res; + }; + + BN.prototype.gcd = function gcd (num) { + if (this.isZero()) return num.abs(); + if (num.isZero()) return this.abs(); + + var a = this.clone(); + var b = num.clone(); + a.negative = 0; + b.negative = 0; + + // Remove common factor of two + for (var shift = 0; a.isEven() && b.isEven(); shift++) { + a.iushrn(1); + b.iushrn(1); + } + + do { + while (a.isEven()) { + a.iushrn(1); + } + while (b.isEven()) { + b.iushrn(1); + } + + var r = a.cmp(b); + if (r < 0) { + // Swap `a` and `b` to make `a` always bigger than `b` + var t = a; + a = b; + b = t; + } else if (r === 0 || b.cmpn(1) === 0) { + break; + } + + a.isub(b); + } while (true); + + return b.iushln(shift); + }; + + // Invert number in the field F(num) + BN.prototype.invm = function invm (num) { + return this.egcd(num).a.umod(num); + }; + + BN.prototype.isEven = function isEven () { + return (this.words[0] & 1) === 0; + }; + + BN.prototype.isOdd = function isOdd () { + return (this.words[0] & 1) === 1; + }; + + // And first word and num + BN.prototype.andln = function andln (num) { + return this.words[0] & num; + }; + + // Increment at the bit position in-line + BN.prototype.bincn = function bincn (bit) { + assert(typeof bit === 'number'); + var r = bit % 26; + var s = (bit - r) / 26; + var q = 1 << r; + + // Fast case: bit is much higher than all existing words + if (this.length <= s) { + this._expand(s + 1); + this.words[s] |= q; + return this; + } + + // Add bit and propagate, if needed + var carry = q; + for (var i = s; carry !== 0 && i < this.length; i++) { + var w = this.words[i] | 0; + w += carry; + carry = w >>> 26; + w &= 0x3ffffff; + this.words[i] = w; + } + if (carry !== 0) { + this.words[i] = carry; + this.length++; + } + return this; + }; + + BN.prototype.isZero = function isZero () { + return this.length === 1 && this.words[0] === 0; + }; + + BN.prototype.cmpn = function cmpn (num) { + var negative = num < 0; + + if (this.negative !== 0 && !negative) return -1; + if (this.negative === 0 && negative) return 1; + + this._strip(); + + var res; + if (this.length > 1) { + res = 1; + } else { + if (negative) { + num = -num; + } + + assert(num <= 0x3ffffff, 'Number is too big'); + + var w = this.words[0] | 0; + res = w === num ? 0 : w < num ? -1 : 1; + } + if (this.negative !== 0) return -res | 0; + return res; + }; + + // Compare two numbers and return: + // 1 - if `this` > `num` + // 0 - if `this` == `num` + // -1 - if `this` < `num` + BN.prototype.cmp = function cmp (num) { + if (this.negative !== 0 && num.negative === 0) return -1; + if (this.negative === 0 && num.negative !== 0) return 1; + + var res = this.ucmp(num); + if (this.negative !== 0) return -res | 0; + return res; + }; + + // Unsigned comparison + BN.prototype.ucmp = function ucmp (num) { + // At this point both numbers have the same sign + if (this.length > num.length) return 1; + if (this.length < num.length) return -1; + + var res = 0; + for (var i = this.length - 1; i >= 0; i--) { + var a = this.words[i] | 0; + var b = num.words[i] | 0; + + if (a === b) continue; + if (a < b) { + res = -1; + } else if (a > b) { + res = 1; + } + break; + } + return res; + }; + + BN.prototype.gtn = function gtn (num) { + return this.cmpn(num) === 1; + }; + + BN.prototype.gt = function gt (num) { + return this.cmp(num) === 1; + }; + + BN.prototype.gten = function gten (num) { + return this.cmpn(num) >= 0; + }; + + BN.prototype.gte = function gte (num) { + return this.cmp(num) >= 0; + }; + + BN.prototype.ltn = function ltn (num) { + return this.cmpn(num) === -1; + }; + + BN.prototype.lt = function lt (num) { + return this.cmp(num) === -1; + }; + + BN.prototype.lten = function lten (num) { + return this.cmpn(num) <= 0; + }; + + BN.prototype.lte = function lte (num) { + return this.cmp(num) <= 0; + }; + + BN.prototype.eqn = function eqn (num) { + return this.cmpn(num) === 0; + }; + + BN.prototype.eq = function eq (num) { + return this.cmp(num) === 0; + }; + + // + // A reduce context, could be using montgomery or something better, depending + // on the `m` itself. + // + BN.red = function red (num) { + return new Red(num); + }; + + BN.prototype.toRed = function toRed (ctx) { + assert(!this.red, 'Already a number in reduction context'); + assert(this.negative === 0, 'red works only with positives'); + return ctx.convertTo(this)._forceRed(ctx); + }; + + BN.prototype.fromRed = function fromRed () { + assert(this.red, 'fromRed works only with numbers in reduction context'); + return this.red.convertFrom(this); + }; + + BN.prototype._forceRed = function _forceRed (ctx) { + this.red = ctx; + return this; + }; + + BN.prototype.forceRed = function forceRed (ctx) { + assert(!this.red, 'Already a number in reduction context'); + return this._forceRed(ctx); + }; + + BN.prototype.redAdd = function redAdd (num) { + assert(this.red, 'redAdd works only with red numbers'); + return this.red.add(this, num); + }; + + BN.prototype.redIAdd = function redIAdd (num) { + assert(this.red, 'redIAdd works only with red numbers'); + return this.red.iadd(this, num); + }; + + BN.prototype.redSub = function redSub (num) { + assert(this.red, 'redSub works only with red numbers'); + return this.red.sub(this, num); + }; + + BN.prototype.redISub = function redISub (num) { + assert(this.red, 'redISub works only with red numbers'); + return this.red.isub(this, num); + }; + + BN.prototype.redShl = function redShl (num) { + assert(this.red, 'redShl works only with red numbers'); + return this.red.shl(this, num); + }; + + BN.prototype.redMul = function redMul (num) { + assert(this.red, 'redMul works only with red numbers'); + this.red._verify2(this, num); + return this.red.mul(this, num); + }; + + BN.prototype.redIMul = function redIMul (num) { + assert(this.red, 'redMul works only with red numbers'); + this.red._verify2(this, num); + return this.red.imul(this, num); + }; + + BN.prototype.redSqr = function redSqr () { + assert(this.red, 'redSqr works only with red numbers'); + this.red._verify1(this); + return this.red.sqr(this); + }; + + BN.prototype.redISqr = function redISqr () { + assert(this.red, 'redISqr works only with red numbers'); + this.red._verify1(this); + return this.red.isqr(this); + }; + + // Square root over p + BN.prototype.redSqrt = function redSqrt () { + assert(this.red, 'redSqrt works only with red numbers'); + this.red._verify1(this); + return this.red.sqrt(this); + }; + + BN.prototype.redInvm = function redInvm () { + assert(this.red, 'redInvm works only with red numbers'); + this.red._verify1(this); + return this.red.invm(this); + }; + + // Return negative clone of `this` % `red modulo` + BN.prototype.redNeg = function redNeg () { + assert(this.red, 'redNeg works only with red numbers'); + this.red._verify1(this); + return this.red.neg(this); + }; + + BN.prototype.redPow = function redPow (num) { + assert(this.red && !num.red, 'redPow(normalNum)'); + this.red._verify1(this); + return this.red.pow(this, num); + }; + + // Prime numbers with efficient reduction + var primes = { + k256: null, + p224: null, + p192: null, + p25519: null + }; + + // Pseudo-Mersenne prime + function MPrime (name, p) { + // P = 2 ^ N - K + this.name = name; + this.p = new BN(p, 16); + this.n = this.p.bitLength(); + this.k = new BN(1).iushln(this.n).isub(this.p); + + this.tmp = this._tmp(); + } + + MPrime.prototype._tmp = function _tmp () { + var tmp = new BN(null); + tmp.words = new Array(Math.ceil(this.n / 13)); + return tmp; + }; + + MPrime.prototype.ireduce = function ireduce (num) { + // Assumes that `num` is less than `P^2` + // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P) + var r = num; + var rlen; + + do { + this.split(r, this.tmp); + r = this.imulK(r); + r = r.iadd(this.tmp); + rlen = r.bitLength(); + } while (rlen > this.n); + + var cmp = rlen < this.n ? -1 : r.ucmp(this.p); + if (cmp === 0) { + r.words[0] = 0; + r.length = 1; + } else if (cmp > 0) { + r.isub(this.p); + } else { + if (r.strip !== undefined) { + // r is a BN v4 instance + r.strip(); + } else { + // r is a BN v5 instance + r._strip(); + } + } + + return r; + }; + + MPrime.prototype.split = function split (input, out) { + input.iushrn(this.n, 0, out); + }; + + MPrime.prototype.imulK = function imulK (num) { + return num.imul(this.k); + }; + + function K256 () { + MPrime.call( + this, + 'k256', + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f'); + } + inherits(K256, MPrime); + + K256.prototype.split = function split (input, output) { + // 256 = 9 * 26 + 22 + var mask = 0x3fffff; + + var outLen = Math.min(input.length, 9); + for (var i = 0; i < outLen; i++) { + output.words[i] = input.words[i]; + } + output.length = outLen; + + if (input.length <= 9) { + input.words[0] = 0; + input.length = 1; + return; + } + + // Shift by 9 limbs + var prev = input.words[9]; + output.words[output.length++] = prev & mask; + + for (i = 10; i < input.length; i++) { + var next = input.words[i] | 0; + input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22); + prev = next; + } + prev >>>= 22; + input.words[i - 10] = prev; + if (prev === 0 && input.length > 10) { + input.length -= 10; + } else { + input.length -= 9; + } + }; + + K256.prototype.imulK = function imulK (num) { + // K = 0x1000003d1 = [ 0x40, 0x3d1 ] + num.words[num.length] = 0; + num.words[num.length + 1] = 0; + num.length += 2; + + // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390 + var lo = 0; + for (var i = 0; i < num.length; i++) { + var w = num.words[i] | 0; + lo += w * 0x3d1; + num.words[i] = lo & 0x3ffffff; + lo = w * 0x40 + ((lo / 0x4000000) | 0); + } + + // Fast length reduction + if (num.words[num.length - 1] === 0) { + num.length--; + if (num.words[num.length - 1] === 0) { + num.length--; + } + } + return num; + }; + + function P224 () { + MPrime.call( + this, + 'p224', + 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001'); + } + inherits(P224, MPrime); + + function P192 () { + MPrime.call( + this, + 'p192', + 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff'); + } + inherits(P192, MPrime); + + function P25519 () { + // 2 ^ 255 - 19 + MPrime.call( + this, + '25519', + '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed'); + } + inherits(P25519, MPrime); + + P25519.prototype.imulK = function imulK (num) { + // K = 0x13 + var carry = 0; + for (var i = 0; i < num.length; i++) { + var hi = (num.words[i] | 0) * 0x13 + carry; + var lo = hi & 0x3ffffff; + hi >>>= 26; + + num.words[i] = lo; + carry = hi; + } + if (carry !== 0) { + num.words[num.length++] = carry; + } + return num; + }; + + // Exported mostly for testing purposes, use plain name instead + BN._prime = function prime (name) { + // Cached version of prime + if (primes[name]) return primes[name]; + + var prime; + if (name === 'k256') { + prime = new K256(); + } else if (name === 'p224') { + prime = new P224(); + } else if (name === 'p192') { + prime = new P192(); + } else if (name === 'p25519') { + prime = new P25519(); + } else { + throw new Error('Unknown prime ' + name); + } + primes[name] = prime; + + return prime; + }; + + // + // Base reduction engine + // + function Red (m) { + if (typeof m === 'string') { + var prime = BN._prime(m); + this.m = prime.p; + this.prime = prime; + } else { + assert(m.gtn(1), 'modulus must be greater than 1'); + this.m = m; + this.prime = null; + } + } + + Red.prototype._verify1 = function _verify1 (a) { + assert(a.negative === 0, 'red works only with positives'); + assert(a.red, 'red works only with red numbers'); + }; + + Red.prototype._verify2 = function _verify2 (a, b) { + assert((a.negative | b.negative) === 0, 'red works only with positives'); + assert(a.red && a.red === b.red, + 'red works only with red numbers'); + }; + + Red.prototype.imod = function imod (a) { + if (this.prime) return this.prime.ireduce(a)._forceRed(this); + + move(a, a.umod(this.m)._forceRed(this)); + return a; + }; + + Red.prototype.neg = function neg (a) { + if (a.isZero()) { + return a.clone(); + } + + return this.m.sub(a)._forceRed(this); + }; + + Red.prototype.add = function add (a, b) { + this._verify2(a, b); + + var res = a.add(b); + if (res.cmp(this.m) >= 0) { + res.isub(this.m); + } + return res._forceRed(this); + }; + + Red.prototype.iadd = function iadd (a, b) { + this._verify2(a, b); + + var res = a.iadd(b); + if (res.cmp(this.m) >= 0) { + res.isub(this.m); + } + return res; + }; + + Red.prototype.sub = function sub (a, b) { + this._verify2(a, b); + + var res = a.sub(b); + if (res.cmpn(0) < 0) { + res.iadd(this.m); + } + return res._forceRed(this); + }; + + Red.prototype.isub = function isub (a, b) { + this._verify2(a, b); + + var res = a.isub(b); + if (res.cmpn(0) < 0) { + res.iadd(this.m); + } + return res; + }; + + Red.prototype.shl = function shl (a, num) { + this._verify1(a); + return this.imod(a.ushln(num)); + }; + + Red.prototype.imul = function imul (a, b) { + this._verify2(a, b); + return this.imod(a.imul(b)); + }; + + Red.prototype.mul = function mul (a, b) { + this._verify2(a, b); + return this.imod(a.mul(b)); + }; + + Red.prototype.isqr = function isqr (a) { + return this.imul(a, a.clone()); + }; + + Red.prototype.sqr = function sqr (a) { + return this.mul(a, a); + }; + + Red.prototype.sqrt = function sqrt (a) { + if (a.isZero()) return a.clone(); + + var mod3 = this.m.andln(3); + assert(mod3 % 2 === 1); + + // Fast case + if (mod3 === 3) { + var pow = this.m.add(new BN(1)).iushrn(2); + return this.pow(a, pow); + } + + // Tonelli-Shanks algorithm (Totally unoptimized and slow) + // + // Find Q and S, that Q * 2 ^ S = (P - 1) + var q = this.m.subn(1); + var s = 0; + while (!q.isZero() && q.andln(1) === 0) { + s++; + q.iushrn(1); + } + assert(!q.isZero()); + + var one = new BN(1).toRed(this); + var nOne = one.redNeg(); + + // Find quadratic non-residue + // NOTE: Max is such because of generalized Riemann hypothesis. + var lpow = this.m.subn(1).iushrn(1); + var z = this.m.bitLength(); + z = new BN(2 * z * z).toRed(this); + + while (this.pow(z, lpow).cmp(nOne) !== 0) { + z.redIAdd(nOne); + } + + var c = this.pow(z, q); + var r = this.pow(a, q.addn(1).iushrn(1)); + var t = this.pow(a, q); + var m = s; + while (t.cmp(one) !== 0) { + var tmp = t; + for (var i = 0; tmp.cmp(one) !== 0; i++) { + tmp = tmp.redSqr(); + } + assert(i < m); + var b = this.pow(c, new BN(1).iushln(m - i - 1)); + + r = r.redMul(b); + c = b.redSqr(); + t = t.redMul(c); + m = i; + } + + return r; + }; + + Red.prototype.invm = function invm (a) { + var inv = a._invmp(this.m); + if (inv.negative !== 0) { + inv.negative = 0; + return this.imod(inv).redNeg(); + } else { + return this.imod(inv); + } + }; + + Red.prototype.pow = function pow (a, num) { + if (num.isZero()) return new BN(1).toRed(this); + if (num.cmpn(1) === 0) return a.clone(); + + var windowSize = 4; + var wnd = new Array(1 << windowSize); + wnd[0] = new BN(1).toRed(this); + wnd[1] = a; + for (var i = 2; i < wnd.length; i++) { + wnd[i] = this.mul(wnd[i - 1], a); + } + + var res = wnd[0]; + var current = 0; + var currentLen = 0; + var start = num.bitLength() % 26; + if (start === 0) { + start = 26; + } + + for (i = num.length - 1; i >= 0; i--) { + var word = num.words[i]; + for (var j = start - 1; j >= 0; j--) { + var bit = (word >> j) & 1; + if (res !== wnd[0]) { + res = this.sqr(res); + } + + if (bit === 0 && current === 0) { + currentLen = 0; + continue; + } + + current <<= 1; + current |= bit; + currentLen++; + if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue; + + res = this.mul(res, wnd[current]); + currentLen = 0; + current = 0; + } + start = 26; + } + + return res; + }; + + Red.prototype.convertTo = function convertTo (num) { + var r = num.umod(this.m); + + return r === num ? r.clone() : r; + }; + + Red.prototype.convertFrom = function convertFrom (num) { + var res = num.clone(); + res.red = null; + return res; + }; + + // + // Montgomery method engine + // + + BN.mont = function mont (num) { + return new Mont(num); + }; + + function Mont (m) { + Red.call(this, m); + + this.shift = this.m.bitLength(); + if (this.shift % 26 !== 0) { + this.shift += 26 - (this.shift % 26); + } + + this.r = new BN(1).iushln(this.shift); + this.r2 = this.imod(this.r.sqr()); + this.rinv = this.r._invmp(this.m); + + this.minv = this.rinv.mul(this.r).isubn(1).div(this.m); + this.minv = this.minv.umod(this.r); + this.minv = this.r.sub(this.minv); + } + inherits(Mont, Red); + + Mont.prototype.convertTo = function convertTo (num) { + return this.imod(num.ushln(this.shift)); + }; + + Mont.prototype.convertFrom = function convertFrom (num) { + var r = this.imod(num.mul(this.rinv)); + r.red = null; + return r; + }; + + Mont.prototype.imul = function imul (a, b) { + if (a.isZero() || b.isZero()) { + a.words[0] = 0; + a.length = 1; + return a; + } + + var t = a.imul(b); + var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); + var u = t.isub(c).iushrn(this.shift); + var res = u; + + if (u.cmp(this.m) >= 0) { + res = u.isub(this.m); + } else if (u.cmpn(0) < 0) { + res = u.iadd(this.m); + } + + return res._forceRed(this); + }; + + Mont.prototype.mul = function mul (a, b) { + if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); + + var t = a.mul(b); + var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); + var u = t.isub(c).iushrn(this.shift); + var res = u; + if (u.cmp(this.m) >= 0) { + res = u.isub(this.m); + } else if (u.cmpn(0) < 0) { + res = u.iadd(this.m); + } + + return res._forceRed(this); + }; + + Mont.prototype.invm = function invm (a) { + // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R + var res = this.imod(a._invmp(this.m).mul(this.r2)); + return res._forceRed(this); + }; +})(typeof module === 'undefined' || module, this); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("y5YM")(module))) + +/***/ }), + +/***/ "DzCi": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } + +var codes = {}; + +function createErrorType(code, message, Base) { + if (!Base) { + Base = Error; + } + + function getMessage(arg1, arg2, arg3) { + if (typeof message === 'string') { + return message; + } else { + return message(arg1, arg2, arg3); + } + } + + var NodeError = + /*#__PURE__*/ + function (_Base) { + _inheritsLoose(NodeError, _Base); + + function NodeError(arg1, arg2, arg3) { + return _Base.call(this, getMessage(arg1, arg2, arg3)) || this; + } + + return NodeError; + }(Base); + + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + codes[code] = NodeError; +} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js + + +function oneOf(expected, thing) { + if (Array.isArray(expected)) { + var len = expected.length; + expected = expected.map(function (i) { + return String(i); + }); + + if (len > 2) { + return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1]; + } else if (len === 2) { + return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); + } else { + return "of ".concat(thing, " ").concat(expected[0]); + } + } else { + return "of ".concat(thing, " ").concat(String(expected)); + } +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + + +function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith + + +function endsWith(str, search, this_len) { + if (this_len === undefined || this_len > str.length) { + this_len = str.length; + } + + return str.substring(this_len - search.length, this_len) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes + + +function includes(str, search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } +} + +createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"'; +}, TypeError); +createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { + // determiner: 'must be' or 'must not be' + var determiner; + + if (typeof expected === 'string' && startsWith(expected, 'not ')) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } else { + determiner = 'must be'; + } + + var msg; + + if (endsWith(name, ' argument')) { + // For cases like 'first argument' + msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } else { + var type = includes(name, '.') ? 'property' : 'argument'; + msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } + + msg += ". Received type ".concat(typeof actual); + return msg; +}, TypeError); +createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); +createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { + return 'The ' + name + ' method is not implemented'; +}); +createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); +createErrorType('ERR_STREAM_DESTROYED', function (name) { + return 'Cannot call ' + name + ' after a stream was destroyed'; +}); +createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); +createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); +createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); +createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); +createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { + return 'Unknown encoding: ' + arg; +}, TypeError); +createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); +module.exports.codes = codes; + + +/***/ }), + +/***/ "E0Es": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Estonian [et] +//! author : Henry Kehlmann : https://github.com/madhenry +//! improvements : Illimar Tambek : https://github.com/ragulka + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], + 'm' : ['ühe minuti', 'üks minut'], + 'mm': [number + ' minuti', number + ' minutit'], + 'h' : ['ühe tunni', 'tund aega', 'üks tund'], + 'hh': [number + ' tunni', number + ' tundi'], + 'd' : ['ühe päeva', 'üks päev'], + 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], + 'MM': [number + ' kuu', number + ' kuud'], + 'y' : ['ühe aasta', 'aasta', 'üks aasta'], + 'yy': [number + ' aasta', number + ' aastat'] + }; + if (withoutSuffix) { + return format[key][2] ? format[key][2] : format[key][1]; + } + return isFuture ? format[key][0] : format[key][1]; +} + +var et = moment.defineLocale('et', { + months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), + monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), + weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), + weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), + weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Täna,] LT', + nextDay : '[Homme,] LT', + nextWeek : '[Järgmine] dddd LT', + lastDay : '[Eile,] LT', + lastWeek : '[Eelmine] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s pärast', + past : '%s tagasi', + s : processRelativeTime, + m : processRelativeTime, + mm : processRelativeTime, + h : processRelativeTime, + hh : processRelativeTime, + d : processRelativeTime, + dd : '%d päeva', + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return et; + +}))); + + +/***/ }), + +/***/ "ERFu": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Montenegrin [me] +//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var translator = { + words: { //Different grammatical cases + m: ['jedan minut', 'jednog minuta'], + mm: ['minut', 'minuta', 'minuta'], + h: ['jedan sat', 'jednog sata'], + hh: ['sat', 'sata', 'sati'], + dd: ['dan', 'dana', 'dana'], + MM: ['mjesec', 'mjeseca', 'mjeseci'], + yy: ['godina', 'godine', 'godina'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + translator.correctGrammaticalCase(number, wordKey); + } + } +}; + +var me = moment.defineLocale('me', { + months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), + monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), + monthsParseExact : true, + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact : true, + longDateFormat: { + LT: 'H:mm', + LTS : 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sjutra u] LT', + + nextWeek: function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[juče u] LT', + lastWeek : function () { + var lastWeekDays = [ + '[prošle] [nedjelje] [u] LT', + '[prošlog] [ponedjeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srijede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'nekoliko sekundi', + m : translator.translate, + mm : translator.translate, + h : translator.translate, + hh : translator.translate, + d : 'dan', + dd : translator.translate, + M : 'mjesec', + MM : translator.translate, + y : 'godinu', + yy : translator.translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return me; + +}))); + + +/***/ }), + +/***/ "EUFM": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {module.exports = function xor (a, b) { + var length = Math.min(a.length, b.length) + var buffer = new Buffer(length) + + for (var i = 0; i < length; ++i) { + buffer[i] = a[i] ^ b[i] + } + + return buffer +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("NfRg").Buffer)) + +/***/ }), + +/***/ "F+fs": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : French (Switzerland) [fr-ch] +//! author : Gaspard Bucher : https://github.com/gaspard + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var frCh = moment.defineLocale('fr-ch', { + months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), + monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + monthsParseExact : true, + weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Aujourd’hui à] LT', + nextDay : '[Demain à] LT', + nextWeek : 'dddd [à] LT', + lastDay : '[Hier à] LT', + lastWeek : 'dddd [dernier à] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dans %s', + past : 'il y a %s', + s : 'quelques secondes', + m : 'une minute', + mm : '%d minutes', + h : 'une heure', + hh : '%d heures', + d : 'un jour', + dd : '%d jours', + M : 'un mois', + MM : '%d mois', + y : 'un an', + yy : '%d ans' + }, + dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, + ordinal : function (number, period) { + switch (period) { + // Words with masculine grammatical gender: mois, trimestre, jour + default: + case 'M': + case 'Q': + case 'D': + case 'DDD': + case 'd': + return number + (number === 1 ? 'er' : 'e'); + + // Words with feminine grammatical gender: semaine + case 'w': + case 'W': + return number + (number === 1 ? 're' : 'e'); + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return frCh; + +}))); + + +/***/ }), + +/***/ "F/Pz": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Esperanto [eo] +//! author : Colin Dean : https://github.com/colindean +//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia +//! comment : miestasmia corrected the translation by colindean + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var eo = moment.defineLocale('eo', { + months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'), + weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), + weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), + weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D[-a de] MMMM, YYYY', + LLL : 'D[-a de] MMMM, YYYY HH:mm', + LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm' + }, + meridiemParse: /[ap]\.t\.m/i, + isPM: function (input) { + return input.charAt(0).toLowerCase() === 'p'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'p.t.m.' : 'P.T.M.'; + } else { + return isLower ? 'a.t.m.' : 'A.T.M.'; + } + }, + calendar : { + sameDay : '[Hodiaŭ je] LT', + nextDay : '[Morgaŭ je] LT', + nextWeek : 'dddd [je] LT', + lastDay : '[Hieraŭ je] LT', + lastWeek : '[pasinta] dddd [je] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'post %s', + past : 'antaŭ %s', + s : 'sekundoj', + m : 'minuto', + mm : '%d minutoj', + h : 'horo', + hh : '%d horoj', + d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo + dd : '%d tagoj', + M : 'monato', + MM : '%d monatoj', + y : 'jaro', + yy : '%d jaroj' + }, + dayOfMonthOrdinalParse: /\d{1,2}a/, + ordinal : '%da', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return eo; + +}))); + + +/***/ }), + +/***/ "FIqI": +/***/ (function(module, exports, __webpack_require__) { + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra + Modified by Evan You @yyx990803 +*/ + +var hasDocument = typeof document !== 'undefined' + +if (typeof DEBUG !== 'undefined' && DEBUG) { + if (!hasDocument) { + throw new Error( + 'vue-style-loader cannot be used in a non-browser environment. ' + + "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment." + ) } +} + +var listToStyles = __webpack_require__("5p4y") + +/* +type StyleObject = { + id: number; + parts: Array<StyleObjectPart> +} + +type StyleObjectPart = { + css: string; + media: string; + sourceMap: ?string +} +*/ + +var stylesInDom = {/* + [id: number]: { + id: number, + refs: number, + parts: Array<(obj?: StyleObjectPart) => void> + } +*/} + +var head = hasDocument && (document.head || document.getElementsByTagName('head')[0]) +var singletonElement = null +var singletonCounter = 0 +var isProduction = false +var noop = function () {} +var options = null +var ssrIdKey = 'data-vue-ssr-id' + +// Force single-tag solution on IE6-9, which has a hard limit on the # of <style> +// tags it will allow on a page +var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase()) + +module.exports = function (parentId, list, _isProduction, _options) { + isProduction = _isProduction + + options = _options || {} + + var styles = listToStyles(parentId, list) + addStylesToDom(styles) + + return function update (newList) { + var mayRemove = [] + for (var i = 0; i < styles.length; i++) { + var item = styles[i] + var domStyle = stylesInDom[item.id] + domStyle.refs-- + mayRemove.push(domStyle) + } + if (newList) { + styles = listToStyles(parentId, newList) + addStylesToDom(styles) + } else { + styles = [] + } + for (var i = 0; i < mayRemove.length; i++) { + var domStyle = mayRemove[i] + if (domStyle.refs === 0) { + for (var j = 0; j < domStyle.parts.length; j++) { + domStyle.parts[j]() + } + delete stylesInDom[domStyle.id] + } + } + } +} + +function addStylesToDom (styles /* Array<StyleObject> */) { + for (var i = 0; i < styles.length; i++) { + var item = styles[i] + var domStyle = stylesInDom[item.id] + if (domStyle) { + domStyle.refs++ + for (var j = 0; j < domStyle.parts.length; j++) { + domStyle.parts[j](item.parts[j]) + } + for (; j < item.parts.length; j++) { + domStyle.parts.push(addStyle(item.parts[j])) + } + if (domStyle.parts.length > item.parts.length) { + domStyle.parts.length = item.parts.length + } + } else { + var parts = [] + for (var j = 0; j < item.parts.length; j++) { + parts.push(addStyle(item.parts[j])) + } + stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts } + } + } +} + +function createStyleElement () { + var styleElement = document.createElement('style') + styleElement.type = 'text/css' + head.appendChild(styleElement) + return styleElement +} + +function addStyle (obj /* StyleObjectPart */) { + var update, remove + var styleElement = document.querySelector('style[' + ssrIdKey + '~="' + obj.id + '"]') + + if (styleElement) { + if (isProduction) { + // has SSR styles and in production mode. + // simply do nothing. + return noop + } else { + // has SSR styles but in dev mode. + // for some reason Chrome can't handle source map in server-rendered + // style tags - source maps in <style> only works if the style tag is + // created and inserted dynamically. So we remove the server rendered + // styles and inject new ones. + styleElement.parentNode.removeChild(styleElement) + } + } + + if (isOldIE) { + // use singleton mode for IE9. + var styleIndex = singletonCounter++ + styleElement = singletonElement || (singletonElement = createStyleElement()) + update = applyToSingletonTag.bind(null, styleElement, styleIndex, false) + remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true) + } else { + // use multi-style-tag mode in all other cases + styleElement = createStyleElement() + update = applyToTag.bind(null, styleElement) + remove = function () { + styleElement.parentNode.removeChild(styleElement) + } + } + + update(obj) + + return function updateStyle (newObj /* StyleObjectPart */) { + if (newObj) { + if (newObj.css === obj.css && + newObj.media === obj.media && + newObj.sourceMap === obj.sourceMap) { + return + } + update(obj = newObj) + } else { + remove() + } + } +} + +var replaceText = (function () { + var textStore = [] + + return function (index, replacement) { + textStore[index] = replacement + return textStore.filter(Boolean).join('\n') + } +})() + +function applyToSingletonTag (styleElement, index, remove, obj) { + var css = remove ? '' : obj.css + + if (styleElement.styleSheet) { + styleElement.styleSheet.cssText = replaceText(index, css) + } else { + var cssNode = document.createTextNode(css) + var childNodes = styleElement.childNodes + if (childNodes[index]) styleElement.removeChild(childNodes[index]) + if (childNodes.length) { + styleElement.insertBefore(cssNode, childNodes[index]) + } else { + styleElement.appendChild(cssNode) + } + } +} + +function applyToTag (styleElement, obj) { + var css = obj.css + var media = obj.media + var sourceMap = obj.sourceMap + + if (media) { + styleElement.setAttribute('media', media) + } + if (options.ssrId) { + styleElement.setAttribute(ssrIdKey, obj.id) + } + + if (sourceMap) { + // https://developer.chrome.com/devtools/docs/javascript-debugging + // this makes source maps inside style tags work properly in Chrome + css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */' + // http://stackoverflow.com/a/26603875 + css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */' + } + + if (styleElement.styleSheet) { + styleElement.styleSheet.cssText = css + } else { + while (styleElement.firstChild) { + styleElement.removeChild(styleElement.firstChild) + } + styleElement.appendChild(document.createTextNode(css)) + } +} + + +/***/ }), + +/***/ "FhoZ": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__package_json__ = __webpack_require__("7YgM"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__package_json___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__package_json__); +/** + * @author Magic.XL + * @date 2021年11月19日 + * @description 项目基础配置文件 + */ + + +var production = "production" === 'production'; //false 测试环境 true 生产环境 +/* harmony default export */ __webpack_exports__["a"] = ({ + production: production, + appVersion: __WEBPACK_IMPORTED_MODULE_0__package_json__["version"], + showProgressBar: true, + logoGifLength: 1009174, + loadingGifLength: 967490, + appEnterprise: { + email: 'contact@tsingsee.com', + aboutUS: 'http://www.tsingsee.com/about/', + tsingsee: 'http://www.tsingsee.com/', + copyright: 'TSINGSEE@\u65ED\u5E06\u79D1\u6280' + }, + iceServers: [{ + urls: "turn:81.68.130.94:19302?transport=udp", + username: "tsingsee", + credential: "6df2668750e68cd69d9135ccd25b703c370fe88f20adb3138dcd482cc652b187" + }] + +}); + +/***/ }), + +/***/ "FjWA": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__("UXd7"); +var BN = __webpack_require__("u/Wk"); +var inherits = __webpack_require__("mwrz"); +var Base = __webpack_require__("qW1i"); + +var assert = utils.assert; + +function EdwardsCurve(conf) { + // NOTE: Important as we are creating point in Base.call() + this.twisted = (conf.a | 0) !== 1; + this.mOneA = this.twisted && (conf.a | 0) === -1; + this.extended = this.mOneA; + + Base.call(this, 'edwards', conf); + + this.a = new BN(conf.a, 16).umod(this.red.m); + this.a = this.a.toRed(this.red); + this.c = new BN(conf.c, 16).toRed(this.red); + this.c2 = this.c.redSqr(); + this.d = new BN(conf.d, 16).toRed(this.red); + this.dd = this.d.redAdd(this.d); + + assert(!this.twisted || this.c.fromRed().cmpn(1) === 0); + this.oneC = (conf.c | 0) === 1; +} +inherits(EdwardsCurve, Base); +module.exports = EdwardsCurve; + +EdwardsCurve.prototype._mulA = function _mulA(num) { + if (this.mOneA) + return num.redNeg(); + else + return this.a.redMul(num); +}; + +EdwardsCurve.prototype._mulC = function _mulC(num) { + if (this.oneC) + return num; + else + return this.c.redMul(num); +}; + +// Just for compatibility with Short curve +EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) { + return this.point(x, y, z, t); +}; + +EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) { + x = new BN(x, 16); + if (!x.red) + x = x.toRed(this.red); + + var x2 = x.redSqr(); + var rhs = this.c2.redSub(this.a.redMul(x2)); + var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2)); + + var y2 = rhs.redMul(lhs.redInvm()); + var y = y2.redSqrt(); + if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) + throw new Error('invalid point'); + + var isOdd = y.fromRed().isOdd(); + if (odd && !isOdd || !odd && isOdd) + y = y.redNeg(); + + return this.point(x, y); +}; + +EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) { + y = new BN(y, 16); + if (!y.red) + y = y.toRed(this.red); + + // x^2 = (y^2 - c^2) / (c^2 d y^2 - a) + var y2 = y.redSqr(); + var lhs = y2.redSub(this.c2); + var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a); + var x2 = lhs.redMul(rhs.redInvm()); + + if (x2.cmp(this.zero) === 0) { + if (odd) + throw new Error('invalid point'); + else + return this.point(this.zero, y); + } + + var x = x2.redSqrt(); + if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) + throw new Error('invalid point'); + + if (x.fromRed().isOdd() !== odd) + x = x.redNeg(); + + return this.point(x, y); +}; + +EdwardsCurve.prototype.validate = function validate(point) { + if (point.isInfinity()) + return true; + + // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2) + point.normalize(); + + var x2 = point.x.redSqr(); + var y2 = point.y.redSqr(); + var lhs = x2.redMul(this.a).redAdd(y2); + var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2))); + + return lhs.cmp(rhs) === 0; +}; + +function Point(curve, x, y, z, t) { + Base.BasePoint.call(this, curve, 'projective'); + if (x === null && y === null && z === null) { + this.x = this.curve.zero; + this.y = this.curve.one; + this.z = this.curve.one; + this.t = this.curve.zero; + this.zOne = true; + } else { + this.x = new BN(x, 16); + this.y = new BN(y, 16); + this.z = z ? new BN(z, 16) : this.curve.one; + this.t = t && new BN(t, 16); + if (!this.x.red) + this.x = this.x.toRed(this.curve.red); + if (!this.y.red) + this.y = this.y.toRed(this.curve.red); + if (!this.z.red) + this.z = this.z.toRed(this.curve.red); + if (this.t && !this.t.red) + this.t = this.t.toRed(this.curve.red); + this.zOne = this.z === this.curve.one; + + // Use extended coordinates + if (this.curve.extended && !this.t) { + this.t = this.x.redMul(this.y); + if (!this.zOne) + this.t = this.t.redMul(this.z.redInvm()); + } + } +} +inherits(Point, Base.BasePoint); + +EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) { + return Point.fromJSON(this, obj); +}; + +EdwardsCurve.prototype.point = function point(x, y, z, t) { + return new Point(this, x, y, z, t); +}; + +Point.fromJSON = function fromJSON(curve, obj) { + return new Point(curve, obj[0], obj[1], obj[2]); +}; + +Point.prototype.inspect = function inspect() { + if (this.isInfinity()) + return '<EC Point Infinity>'; + return '<EC Point x: ' + this.x.fromRed().toString(16, 2) + + ' y: ' + this.y.fromRed().toString(16, 2) + + ' z: ' + this.z.fromRed().toString(16, 2) + '>'; +}; + +Point.prototype.isInfinity = function isInfinity() { + // XXX This code assumes that zero is always zero in red + return this.x.cmpn(0) === 0 && + (this.y.cmp(this.z) === 0 || + (this.zOne && this.y.cmp(this.curve.c) === 0)); +}; + +Point.prototype._extDbl = function _extDbl() { + // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html + // #doubling-dbl-2008-hwcd + // 4M + 4S + + // A = X1^2 + var a = this.x.redSqr(); + // B = Y1^2 + var b = this.y.redSqr(); + // C = 2 * Z1^2 + var c = this.z.redSqr(); + c = c.redIAdd(c); + // D = a * A + var d = this.curve._mulA(a); + // E = (X1 + Y1)^2 - A - B + var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b); + // G = D + B + var g = d.redAdd(b); + // F = G - C + var f = g.redSub(c); + // H = D - B + var h = d.redSub(b); + // X3 = E * F + var nx = e.redMul(f); + // Y3 = G * H + var ny = g.redMul(h); + // T3 = E * H + var nt = e.redMul(h); + // Z3 = F * G + var nz = f.redMul(g); + return this.curve.point(nx, ny, nz, nt); +}; + +Point.prototype._projDbl = function _projDbl() { + // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html + // #doubling-dbl-2008-bbjlp + // #doubling-dbl-2007-bl + // and others + // Generally 3M + 4S or 2M + 4S + + // B = (X1 + Y1)^2 + var b = this.x.redAdd(this.y).redSqr(); + // C = X1^2 + var c = this.x.redSqr(); + // D = Y1^2 + var d = this.y.redSqr(); + + var nx; + var ny; + var nz; + var e; + var h; + var j; + if (this.curve.twisted) { + // E = a * C + e = this.curve._mulA(c); + // F = E + D + var f = e.redAdd(d); + if (this.zOne) { + // X3 = (B - C - D) * (F - 2) + nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two)); + // Y3 = F * (E - D) + ny = f.redMul(e.redSub(d)); + // Z3 = F^2 - 2 * F + nz = f.redSqr().redSub(f).redSub(f); + } else { + // H = Z1^2 + h = this.z.redSqr(); + // J = F - 2 * H + j = f.redSub(h).redISub(h); + // X3 = (B-C-D)*J + nx = b.redSub(c).redISub(d).redMul(j); + // Y3 = F * (E - D) + ny = f.redMul(e.redSub(d)); + // Z3 = F * J + nz = f.redMul(j); + } + } else { + // E = C + D + e = c.redAdd(d); + // H = (c * Z1)^2 + h = this.curve._mulC(this.z).redSqr(); + // J = E - 2 * H + j = e.redSub(h).redSub(h); + // X3 = c * (B - E) * J + nx = this.curve._mulC(b.redISub(e)).redMul(j); + // Y3 = c * E * (C - D) + ny = this.curve._mulC(e).redMul(c.redISub(d)); + // Z3 = E * J + nz = e.redMul(j); + } + return this.curve.point(nx, ny, nz); +}; + +Point.prototype.dbl = function dbl() { + if (this.isInfinity()) + return this; + + // Double in extended coordinates + if (this.curve.extended) + return this._extDbl(); + else + return this._projDbl(); +}; + +Point.prototype._extAdd = function _extAdd(p) { + // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html + // #addition-add-2008-hwcd-3 + // 8M + + // A = (Y1 - X1) * (Y2 - X2) + var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x)); + // B = (Y1 + X1) * (Y2 + X2) + var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x)); + // C = T1 * k * T2 + var c = this.t.redMul(this.curve.dd).redMul(p.t); + // D = Z1 * 2 * Z2 + var d = this.z.redMul(p.z.redAdd(p.z)); + // E = B - A + var e = b.redSub(a); + // F = D - C + var f = d.redSub(c); + // G = D + C + var g = d.redAdd(c); + // H = B + A + var h = b.redAdd(a); + // X3 = E * F + var nx = e.redMul(f); + // Y3 = G * H + var ny = g.redMul(h); + // T3 = E * H + var nt = e.redMul(h); + // Z3 = F * G + var nz = f.redMul(g); + return this.curve.point(nx, ny, nz, nt); +}; + +Point.prototype._projAdd = function _projAdd(p) { + // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html + // #addition-add-2008-bbjlp + // #addition-add-2007-bl + // 10M + 1S + + // A = Z1 * Z2 + var a = this.z.redMul(p.z); + // B = A^2 + var b = a.redSqr(); + // C = X1 * X2 + var c = this.x.redMul(p.x); + // D = Y1 * Y2 + var d = this.y.redMul(p.y); + // E = d * C * D + var e = this.curve.d.redMul(c).redMul(d); + // F = B - E + var f = b.redSub(e); + // G = B + E + var g = b.redAdd(e); + // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D) + var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d); + var nx = a.redMul(f).redMul(tmp); + var ny; + var nz; + if (this.curve.twisted) { + // Y3 = A * G * (D - a * C) + ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c))); + // Z3 = F * G + nz = f.redMul(g); + } else { + // Y3 = A * G * (D - C) + ny = a.redMul(g).redMul(d.redSub(c)); + // Z3 = c * F * G + nz = this.curve._mulC(f).redMul(g); + } + return this.curve.point(nx, ny, nz); +}; + +Point.prototype.add = function add(p) { + if (this.isInfinity()) + return p; + if (p.isInfinity()) + return this; + + if (this.curve.extended) + return this._extAdd(p); + else + return this._projAdd(p); +}; + +Point.prototype.mul = function mul(k) { + if (this._hasDoubles(k)) + return this.curve._fixedNafMul(this, k); + else + return this.curve._wnafMul(this, k); +}; + +Point.prototype.mulAdd = function mulAdd(k1, p, k2) { + return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false); +}; + +Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) { + return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true); +}; + +Point.prototype.normalize = function normalize() { + if (this.zOne) + return this; + + // Normalize coordinates + var zi = this.z.redInvm(); + this.x = this.x.redMul(zi); + this.y = this.y.redMul(zi); + if (this.t) + this.t = this.t.redMul(zi); + this.z = this.curve.one; + this.zOne = true; + return this; +}; + +Point.prototype.neg = function neg() { + return this.curve.point(this.x.redNeg(), + this.y, + this.z, + this.t && this.t.redNeg()); +}; + +Point.prototype.getX = function getX() { + this.normalize(); + return this.x.fromRed(); +}; + +Point.prototype.getY = function getY() { + this.normalize(); + return this.y.fromRed(); +}; + +Point.prototype.eq = function eq(other) { + return this === other || + this.getX().cmp(other.getX()) === 0 && + this.getY().cmp(other.getY()) === 0; +}; + +Point.prototype.eqXToP = function eqXToP(x) { + var rx = x.toRed(this.curve.red).redMul(this.z); + if (this.x.cmp(rx) === 0) + return true; + + var xc = x.clone(); + var t = this.curve.redN.redMul(this.z); + for (;;) { + xc.iadd(this.curve.n); + if (xc.cmp(this.curve.p) >= 0) + return false; + + rx.redIAdd(t); + if (this.x.cmp(rx) === 0) + return true; + } +}; + +// Compatibility with BaseCurve +Point.prototype.toP = Point.prototype.normalize; +Point.prototype.mixedAdd = Point.prototype.add; + + +/***/ }), + +/***/ "FxzF": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) {/* eslint-disable node/no-deprecated-api */ + + + +var buffer = __webpack_require__("NfRg") +var Buffer = buffer.Buffer + +var safer = {} + +var key + +for (key in buffer) { + if (!buffer.hasOwnProperty(key)) continue + if (key === 'SlowBuffer' || key === 'Buffer') continue + safer[key] = buffer[key] +} + +var Safer = safer.Buffer = {} +for (key in Buffer) { + if (!Buffer.hasOwnProperty(key)) continue + if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue + Safer[key] = Buffer[key] +} + +safer.Buffer.prototype = Buffer.prototype + +if (!Safer.from || Safer.from === Uint8Array.from) { + Safer.from = function (value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value) + } + if (value && typeof value.length === 'undefined') { + throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value) + } + return Buffer(value, encodingOrOffset, length) + } +} + +if (!Safer.alloc) { + Safer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) + } + if (size < 0 || size >= 2 * (1 << 30)) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } + var buf = Buffer(size) + if (!fill || fill.length === 0) { + buf.fill(0) + } else if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + return buf + } +} + +if (!safer.kStringMaxLength) { + try { + safer.kStringMaxLength = process.binding('buffer').kStringMaxLength + } catch (e) { + // we can't determine kStringMaxLength in environments where process.binding + // is unsupported, so let's not set it + } +} + +if (!safer.constants) { + safer.constants = { + MAX_LENGTH: safer.kMaxLength + } + if (safer.kStringMaxLength) { + safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength + } +} + +module.exports = safer + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("V0EG"))) + +/***/ }), + +/***/ "GL8g": +/***/ (function(module, exports, __webpack_require__) { + +var aes = __webpack_require__("fS0F") +var Buffer = __webpack_require__("DLTi").Buffer +var Transform = __webpack_require__("onRW") +var inherits = __webpack_require__("mwrz") + +function StreamCipher (mode, key, iv, decrypt) { + Transform.call(this) + + this._cipher = new aes.AES(key) + this._prev = Buffer.from(iv) + this._cache = Buffer.allocUnsafe(0) + this._secCache = Buffer.allocUnsafe(0) + this._decrypt = decrypt + this._mode = mode +} + +inherits(StreamCipher, Transform) + +StreamCipher.prototype._update = function (chunk) { + return this._mode.encrypt(this, chunk, this._decrypt) +} + +StreamCipher.prototype._final = function () { + this._cipher.scrub() +} + +module.exports = StreamCipher + + +/***/ }), + +/***/ "GMoo": +/***/ (function(module, exports, __webpack_require__) { + +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +module.exports = Stream; + +var EE = __webpack_require__("cGIK").EventEmitter; +var inherits = __webpack_require__("mwrz"); + +inherits(Stream, EE); +Stream.Readable = __webpack_require__("LcQ3"); +Stream.Writable = __webpack_require__("37+g"); +Stream.Duplex = __webpack_require__("2SHD"); +Stream.Transform = __webpack_require__("pb7G"); +Stream.PassThrough = __webpack_require__("yeH7"); + +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; + + + +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. + +function Stream() { + EE.call(this); +} + +Stream.prototype.pipe = function(dest, options) { + var source = this; + + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } + } + + source.on('data', ondata); + + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } + + dest.on('drain', ondrain); + + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } + + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; + + dest.end(); + } + + + function onclose() { + if (didOnEnd) return; + didOnEnd = true; + + if (typeof dest.destroy === 'function') dest.destroy(); + } + + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } + + source.on('error', onerror); + dest.on('error', onerror); + + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); + + source.removeListener('end', onend); + source.removeListener('close', onclose); + + source.removeListener('error', onerror); + dest.removeListener('error', onerror); + + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); + + dest.removeListener('close', cleanup); + } + + source.on('end', cleanup); + source.on('close', cleanup); + + dest.on('close', cleanup); + + dest.emit('pipe', source); + + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; + + +/***/ }), + +/***/ "GhpG": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Albanian [sq] +//! author : Flakërim Ismani : https://github.com/flakerimi +//! author : Menelion Elensúle : https://github.com/Oire +//! author : Oerd Cukalla : https://github.com/oerd + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var sq = moment.defineLocale('sq', { + months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), + monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), + weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), + weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), + weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), + weekdaysParseExact : true, + meridiemParse: /PD|MD/, + isPM: function (input) { + return input.charAt(0) === 'M'; + }, + meridiem : function (hours, minutes, isLower) { + return hours < 12 ? 'PD' : 'MD'; + }, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Sot në] LT', + nextDay : '[Nesër në] LT', + nextWeek : 'dddd [në] LT', + lastDay : '[Dje në] LT', + lastWeek : 'dddd [e kaluar në] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'në %s', + past : '%s më parë', + s : 'disa sekonda', + m : 'një minutë', + mm : '%d minuta', + h : 'një orë', + hh : '%d orë', + d : 'një ditë', + dd : '%d ditë', + M : 'një muaj', + MM : '%d muaj', + y : 'një vit', + yy : '%d vite' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return sq; + +}))); + + +/***/ }), + +/***/ "GpZv": +/***/ (function(module, exports) { + +var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs + +module.exports = function (iterations, keylen) { + if (typeof iterations !== 'number') { + throw new TypeError('Iterations not a number') + } + + if (iterations < 0) { + throw new TypeError('Bad iterations') + } + + if (typeof keylen !== 'number') { + throw new TypeError('Key length not a number') + } + + if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */ + throw new TypeError('Bad key length') + } +} + + +/***/ }), + +/***/ "H/6M": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var BN = __webpack_require__("u/Wk"); +var utils = __webpack_require__("UXd7"); +var assert = utils.assert; +var cachedProperty = utils.cachedProperty; +var parseBytes = utils.parseBytes; + +/** +* @param {EDDSA} eddsa - eddsa instance +* @param {Array<Bytes>|Object} sig - +* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes +* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes +* @param {Array<Bytes>} [sig.Rencoded] - R point encoded +* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded +*/ +function Signature(eddsa, sig) { + this.eddsa = eddsa; + + if (typeof sig !== 'object') + sig = parseBytes(sig); + + if (Array.isArray(sig)) { + sig = { + R: sig.slice(0, eddsa.encodingLength), + S: sig.slice(eddsa.encodingLength), + }; + } + + assert(sig.R && sig.S, 'Signature without R or S'); + + if (eddsa.isPoint(sig.R)) + this._R = sig.R; + if (sig.S instanceof BN) + this._S = sig.S; + + this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded; + this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded; +} + +cachedProperty(Signature, 'S', function S() { + return this.eddsa.decodeInt(this.Sencoded()); +}); + +cachedProperty(Signature, 'R', function R() { + return this.eddsa.decodePoint(this.Rencoded()); +}); + +cachedProperty(Signature, 'Rencoded', function Rencoded() { + return this.eddsa.encodePoint(this.R()); +}); + +cachedProperty(Signature, 'Sencoded', function Sencoded() { + return this.eddsa.encodeInt(this.S()); +}); + +Signature.prototype.toBytes = function toBytes() { + return this.Rencoded().concat(this.Sencoded()); +}; + +Signature.prototype.toHex = function toHex() { + return utils.encode(this.toBytes(), 'hex').toUpperCase(); +}; + +module.exports = Signature; + + +/***/ }), + +/***/ "HB8Z": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/** + * vue-custom-element v3.3.0 + * (c) 2021 Karol Fabjańczuk + * @license MIT + */ +/** + * ES6 Object.getPrototypeOf Polyfill + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf + */ + +Object.setPrototypeOf = Object.setPrototypeOf || setPrototypeOf; + +function setPrototypeOf(obj, proto) { + obj.__proto__ = proto; + return obj; +} + +var setPrototypeOf_1 = setPrototypeOf.bind(Object); + +function isES2015() { + if (typeof Symbol === 'undefined' || typeof Reflect === 'undefined' || typeof Proxy === 'undefined' || Object.isSealed(Proxy)) return false; + + return true; +} + +var isES2015$1 = isES2015(); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +function _CustomElement() { + return Reflect.construct(HTMLElement, [], this.__proto__.constructor); +} + + +Object.setPrototypeOf(_CustomElement.prototype, HTMLElement.prototype); +Object.setPrototypeOf(_CustomElement, HTMLElement); +function registerCustomElement(tag) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (typeof customElements === 'undefined') { + return; + } + + function constructorCallback() { + if (options.shadow === true && HTMLElement.prototype.attachShadow) { + this.attachShadow({ mode: 'open' }); + } + typeof options.constructorCallback === 'function' && options.constructorCallback.call(this); + } + function connectedCallback() { + typeof options.connectedCallback === 'function' && options.connectedCallback.call(this); + } + + function disconnectedCallback() { + typeof options.disconnectedCallback === 'function' && options.disconnectedCallback.call(this); + } + + function attributeChangedCallback(name, oldValue, value) { + typeof options.attributeChangedCallback === 'function' && options.attributeChangedCallback.call(this, name, oldValue, value); + } + + function define(tagName, CustomElement) { + var existingCustomElement = customElements.get(tagName); + return typeof existingCustomElement !== 'undefined' ? existingCustomElement : customElements.define(tagName, CustomElement); + } + + if (isES2015$1) { + var CustomElement = function (_CustomElement2) { + _inherits(CustomElement, _CustomElement2); + + function CustomElement(self) { + var _ret; + + _classCallCheck(this, CustomElement); + + var _this = _possibleConstructorReturn(this, (CustomElement.__proto__ || Object.getPrototypeOf(CustomElement)).call(this)); + + var me = self ? HTMLElement.call(self) : _this; + + constructorCallback.call(me); + return _ret = me, _possibleConstructorReturn(_this, _ret); + } + + _createClass(CustomElement, null, [{ + key: 'observedAttributes', + get: function get() { + return options.observedAttributes || []; + } + }]); + + return CustomElement; + }(_CustomElement); + + CustomElement.prototype.connectedCallback = connectedCallback; + CustomElement.prototype.disconnectedCallback = disconnectedCallback; + CustomElement.prototype.attributeChangedCallback = attributeChangedCallback; + + define(tag, CustomElement); + return CustomElement; + } else { + var _CustomElement3 = function _CustomElement3(self) { + var me = self ? HTMLElement.call(self) : this; + + constructorCallback.call(me); + return me; + }; + + _CustomElement3.observedAttributes = options.observedAttributes || []; + + _CustomElement3.prototype = Object.create(HTMLElement.prototype, { + constructor: { + configurable: true, + writable: true, + value: _CustomElement3 + } + }); + + _CustomElement3.prototype.connectedCallback = connectedCallback; + _CustomElement3.prototype.disconnectedCallback = disconnectedCallback; + _CustomElement3.prototype.attributeChangedCallback = attributeChangedCallback; + + define(tag, _CustomElement3); + return _CustomElement3; + } +} + +var camelizeRE = /-(\w)/g; +var camelize = function camelize(str) { + return str.replace(camelizeRE, function (_, c) { + return c ? c.toUpperCase() : ''; + }); +}; +var hyphenateRE = /([^-])([A-Z])/g; +var hyphenate = function hyphenate(str) { + return str.replace(hyphenateRE, '$1-$2').replace(hyphenateRE, '$1-$2').toLowerCase(); +}; + +function toArray(list) { + var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + + var i = list.length - start; + var ret = new Array(i); + while (i--) { + ret[i] = list[i + start]; + } + return ret; +} + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +function convertAttributeValue(value, overrideType) { + if (value === null || value === undefined) { + return overrideType === Boolean ? false : undefined; + } + var propsValue = value; + var isBoolean = ['true', 'false'].indexOf(value) > -1; + var valueParsed = parseFloat(propsValue, 10); + var isNumber = !isNaN(valueParsed) && isFinite(propsValue) && typeof propsValue === 'string' && !propsValue.match(/^0+[^.]\d*$/g); + + if (overrideType && overrideType !== Boolean && (typeof propsValue === 'undefined' ? 'undefined' : _typeof(propsValue)) !== overrideType) { + propsValue = overrideType(value); + } else if (isBoolean || overrideType === Boolean) { + propsValue = propsValue === '' ? true : propsValue === 'true' || propsValue === true; + } else if (isNumber) { + propsValue = valueParsed; + } + + return propsValue; +} + +function extractProps(collection, props) { + if (collection && collection.length) { + collection.forEach(function (prop) { + var camelCaseProp = camelize(prop); + props.camelCase.indexOf(camelCaseProp) === -1 && props.camelCase.push(camelCaseProp); + }); + } else if (collection && (typeof collection === 'undefined' ? 'undefined' : _typeof(collection)) === 'object') { + for (var prop in collection) { + var camelCaseProp = camelize(prop); + props.camelCase.indexOf(camelCaseProp) === -1 && props.camelCase.push(camelCaseProp); + + if (collection[camelCaseProp] && collection[camelCaseProp].type) { + props.types[prop] = [].concat(collection[camelCaseProp].type)[0]; + } + } + } +} + +function getProps() { + var componentDefinition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var props = { + camelCase: [], + hyphenate: [], + types: {} + }; + + if (componentDefinition.mixins) { + componentDefinition.mixins.forEach(function (mixin) { + extractProps(mixin.props, props); + }); + } + + if (componentDefinition.extends && componentDefinition.extends.props) { + var parentProps = componentDefinition.extends.props; + + + extractProps(parentProps, props); + } + + extractProps(componentDefinition.props, props); + + props.camelCase.forEach(function (prop) { + props.hyphenate.push(hyphenate(prop)); + }); + + return props; +} + +function reactiveProps(element, props) { + props.camelCase.forEach(function (name, index) { + Object.defineProperty(element, name, { + get: function get() { + return this.__vue_custom_element__[name]; + }, + set: function set(value) { + if (((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' || typeof value === 'function') && this.__vue_custom_element__) { + var propName = props.camelCase[index]; + this.__vue_custom_element__[propName] = value; + } else { + var type = props.types[props.camelCase[index]]; + this.setAttribute(props.hyphenate[index], convertAttributeValue(value, type)); + } + } + }); + }); +} + +function getPropsData(element, componentDefinition, props) { + var propsData = componentDefinition.propsData || {}; + + props.hyphenate.forEach(function (name, index) { + var propCamelCase = props.camelCase[index]; + var propValue = element.attributes[name] || element[propCamelCase]; + + var type = null; + if (props.types[propCamelCase]) { + type = props.types[propCamelCase]; + } + + if (propValue instanceof Attr) { + propsData[propCamelCase] = convertAttributeValue(propValue.value, type); + } else if (typeof propValue !== 'undefined') { + propsData[propCamelCase] = propValue; + } + }); + + return propsData; +} + +function getAttributes(children) { + var attributes = {}; + + toArray(children.attributes).forEach(function (attribute) { + attributes[attribute.nodeName === 'vue-slot' ? 'slot' : attribute.nodeName] = attribute.nodeValue; + }); + + return attributes; +} + +function getChildNodes(element) { + if (element.childNodes.length) return element.childNodes; + if (element.content && element.content.childNodes && element.content.childNodes.length) { + return element.content.childNodes; + } + + var placeholder = document.createElement('div'); + + placeholder.innerHTML = element.innerHTML; + + return placeholder.childNodes; +} + +function templateElement(createElement, element, elementOptions) { + var templateChildren = getChildNodes(element); + + var vueTemplateChildren = toArray(templateChildren).map(function (child) { + if (child.nodeName === '#text') return child.nodeValue; + + return createElement(child.tagName, { + attrs: getAttributes(child), + domProps: { + innerHTML: child.innerHTML + } + }); + }); + + elementOptions.slot = element.id; + + return createElement('template', elementOptions, vueTemplateChildren); +} + +function getSlots() { + var children = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var createElement = arguments[1]; + + var slots = []; + toArray(children).forEach(function (child) { + if (child.nodeName === '#text') { + if (child.nodeValue.trim()) { + slots.push(createElement('span', child.nodeValue)); + } + } else if (child.nodeName !== '#comment') { + var attributes = getAttributes(child); + var elementOptions = { + attrs: attributes, + domProps: { + innerHTML: child.innerHTML === '' ? child.innerText : child.innerHTML + } + }; + + if (attributes.slot) { + elementOptions.slot = attributes.slot; + attributes.slot = undefined; + } + + var slotVueElement = child.tagName === 'TEMPLATE' ? templateElement(createElement, child, elementOptions) : createElement(child.tagName, elementOptions); + + slots.push(slotVueElement); + } + }); + + return slots; +} + +function customEvent(eventName, detail) { + var params = { bubbles: false, cancelable: false, detail: detail }; + var event = void 0; + if (typeof window.CustomEvent === 'function') { + event = new CustomEvent(eventName, params); + } else { + event = document.createEvent('CustomEvent'); + event.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail); + } + return event; +} + +function customEmit(element, eventName) { + for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + args[_key - 2] = arguments[_key]; + } + + var event = customEvent(eventName, [].concat(args)); + element.dispatchEvent(event); +} + +function createVueInstance(element, Vue, componentDefinition, props, options) { + if (element.__vue_custom_element__) { + return Promise.resolve(element); + } + var ComponentDefinition = Vue.util.extend({}, componentDefinition); + var propsData = getPropsData(element, ComponentDefinition, props); + var vueVersion = Vue.version && parseInt(Vue.version.split('.')[0], 10) || 0; + + function beforeCreate() { + this.$emit = function emit() { + var _proto__$$emit; + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + customEmit.apply(undefined, [element].concat(args)); + this.__proto__ && (_proto__$$emit = this.__proto__.$emit).call.apply(_proto__$$emit, [this].concat(args)); + }; + } + ComponentDefinition.beforeCreate = [].concat(ComponentDefinition.beforeCreate || [], beforeCreate); + + if (ComponentDefinition._compiled) { + var constructorOptions = {}; + var _constructor = ComponentDefinition._Ctor; + if (_constructor) { + constructorOptions = Object.keys(_constructor).map(function (key) { + return _constructor[key]; + })[0].options; + } + constructorOptions.beforeCreate = ComponentDefinition.beforeCreate; + } + + var rootElement = void 0; + + if (vueVersion >= 2) { + var elementOriginalChildren = element.cloneNode(true).childNodes; + rootElement = { + propsData: propsData, + props: props.camelCase, + computed: { + reactiveProps: function reactiveProps$$1() { + var _this = this; + + var reactivePropsList = {}; + props.camelCase.forEach(function (prop) { + typeof _this[prop] !== 'undefined' && (reactivePropsList[prop] = _this[prop]); + }); + + return reactivePropsList; + } + }, + render: function render(createElement) { + var data = { + props: this.reactiveProps + }; + + return createElement(ComponentDefinition, data, getSlots(elementOriginalChildren, createElement)); + } + }; + } else if (vueVersion === 1) { + rootElement = ComponentDefinition; + rootElement.propsData = propsData; + } else { + rootElement = ComponentDefinition; + var propsWithDefault = {}; + Object.keys(propsData).forEach(function (prop) { + propsWithDefault[prop] = { default: propsData[prop] }; + }); + rootElement.props = propsWithDefault; + } + + var elementInnerHtml = vueVersion >= 2 ? '<div></div>' : ('<div>' + element.innerHTML + '</div>').replace(/vue-slot=/g, 'slot='); + if (options.shadow && element.shadowRoot) { + element.shadowRoot.innerHTML = elementInnerHtml; + rootElement.el = element.shadowRoot.children[0]; + } else { + element.innerHTML = elementInnerHtml; + rootElement.el = element.children[0]; + } + + if (options.shadow && options.shadowCss && element.shadowRoot) { + var style = document.createElement('style'); + style.type = 'text/css'; + style.appendChild(document.createTextNode(options.shadowCss)); + + element.shadowRoot.appendChild(style); + } + + reactiveProps(element, props); + + if (typeof options.beforeCreateVueInstance === 'function') { + rootElement = options.beforeCreateVueInstance(rootElement) || rootElement; + } + + return Promise.resolve(rootElement).then(function (vueOpts) { + element.__vue_custom_element__ = new Vue(vueOpts); + element.__vue_custom_element_props__ = props; + element.getVueInstance = function () { + var vueInstance = element.__vue_custom_element__; + return vueInstance.$children.length ? vueInstance.$children[0] : vueInstance; + }; + + element.removeAttribute('vce-cloak'); + element.setAttribute('vce-ready', ''); + customEmit(element, 'vce-ready'); + return element; + }); +} + +function install(Vue) { + Vue.customElement = function vueCustomElement(tag, componentDefinition) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + var isAsyncComponent = typeof componentDefinition === 'function'; + var optionsProps = isAsyncComponent && { props: options.props || [] }; + var props = getProps(isAsyncComponent ? optionsProps : componentDefinition); + + var CustomElement = registerCustomElement(tag, { + constructorCallback: function constructorCallback() { + typeof options.constructorCallback === 'function' && options.constructorCallback.call(this); + }, + connectedCallback: function connectedCallback() { + var _this = this; + + var asyncComponentPromise = isAsyncComponent && componentDefinition(); + var isAsyncComponentPromise = asyncComponentPromise && asyncComponentPromise.then && typeof asyncComponentPromise.then === 'function'; + + typeof options.connectedCallback === 'function' && options.connectedCallback.call(this); + + if (isAsyncComponent && !isAsyncComponentPromise) { + throw new Error('Async component ' + tag + ' do not returns Promise'); + } + if (!this.__detached__) { + if (isAsyncComponentPromise) { + asyncComponentPromise.then(function (lazyComponent) { + var lazyProps = getProps(lazyComponent); + createVueInstance(_this, Vue, lazyComponent, lazyProps, options).then(function () { + typeof options.vueInstanceCreatedCallback === 'function' && options.vueInstanceCreatedCallback.call(_this); + }); + }); + } else { + createVueInstance(this, Vue, componentDefinition, props, options).then(function () { + typeof options.vueInstanceCreatedCallback === 'function' && options.vueInstanceCreatedCallback.call(_this); + }); + } + } + + this.__detached__ = false; + }, + disconnectedCallback: function disconnectedCallback() { + var _this2 = this; + + this.__detached__ = true; + typeof options.disconnectedCallback === 'function' && options.disconnectedCallback.call(this); + + options.destroyTimeout !== null && setTimeout(function () { + if (_this2.__detached__ && _this2.__vue_custom_element__) { + _this2.__detached__ = false; + _this2.__vue_custom_element__.$destroy(true); + delete _this2.__vue_custom_element__; + delete _this2.__vue_custom_element_props__; + } + }, options.destroyTimeout || 3000); + }, + attributeChangedCallback: function attributeChangedCallback(name, oldValue, value) { + if (this.__vue_custom_element__ && typeof value !== 'undefined') { + var nameCamelCase = camelize(name); + typeof options.attributeChangedCallback === 'function' && options.attributeChangedCallback.call(this, name, oldValue, value); + var type = this.__vue_custom_element_props__.types[nameCamelCase]; + this.__vue_custom_element__[nameCamelCase] = convertAttributeValue(value, type); + } + }, + + + observedAttributes: props.hyphenate, + + shadow: !!options.shadow && !!HTMLElement.prototype.attachShadow + }); + + return CustomElement; + }; +} + +if (typeof window !== 'undefined' && window.Vue) { + window.Vue.use(install); + if (install.installed) { + install.installed = false; + } +} + +/* harmony default export */ __webpack_exports__["a"] = (install); + + +/***/ }), + +/***/ "HlKL": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Tagalog (Philippines) [tl-ph] +//! author : Dan Hagman : https://github.com/hagmandan + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var tlPh = moment.defineLocale('tl-ph', { + months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), + monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), + weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), + weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), + weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'MM/D/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY HH:mm', + LLLL : 'dddd, MMMM DD, YYYY HH:mm' + }, + calendar : { + sameDay: 'LT [ngayong araw]', + nextDay: '[Bukas ng] LT', + nextWeek: 'LT [sa susunod na] dddd', + lastDay: 'LT [kahapon]', + lastWeek: 'LT [noong nakaraang] dddd', + sameElse: 'L' + }, + relativeTime : { + future : 'sa loob ng %s', + past : '%s ang nakalipas', + s : 'ilang segundo', + m : 'isang minuto', + mm : '%d minuto', + h : 'isang oras', + hh : '%d oras', + d : 'isang araw', + dd : '%d araw', + M : 'isang buwan', + MM : '%d buwan', + y : 'isang taon', + yy : '%d taon' + }, + dayOfMonthOrdinalParse: /\d{1,2}/, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return tlPh; + +}))); + + +/***/ }), + +/***/ "IRrX": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Central Atlas Tamazight Latin [tzm-latn] +//! author : Abdel Said : https://github.com/abdelsaid + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var tzmLatn = moment.defineLocale('tzm-latn', { + months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), + monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), + weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[asdkh g] LT', + nextDay: '[aska g] LT', + nextWeek: 'dddd [g] LT', + lastDay: '[assant g] LT', + lastWeek: 'dddd [g] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'dadkh s yan %s', + past : 'yan %s', + s : 'imik', + m : 'minuḍ', + mm : '%d minuḍ', + h : 'saɛa', + hh : '%d tassaɛin', + d : 'ass', + dd : '%d ossan', + M : 'ayowr', + MM : '%d iyyirn', + y : 'asgas', + yy : '%d isgasn' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +return tzmLatn; + +}))); + + +/***/ }), + +/***/ "IhCH": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const decoders = exports; + +decoders.der = __webpack_require__("Nre6"); +decoders.pem = __webpack_require__("BVJ2"); + + +/***/ }), + +/***/ "IkND": +/***/ (function(module, exports, __webpack_require__) { + +var createHash = __webpack_require__("kFjB") +var Buffer = __webpack_require__("DLTi").Buffer + +module.exports = function (seed, len) { + var t = Buffer.alloc(0) + var i = 0 + var c + while (t.length < len) { + c = i2ops(i++) + t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()]) + } + return t.slice(0, len) +} + +function i2ops (c) { + var out = Buffer.allocUnsafe(4) + out.writeUInt32BE(c, 0) + return out +} + + +/***/ }), + +/***/ "IwBp": +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__("cGIK").EventEmitter; + + +/***/ }), + +/***/ "J1E3": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const encoders = exports; + +encoders.der = __webpack_require__("bzP+"); +encoders.pem = __webpack_require__("NIaN"); + + +/***/ }), + +/***/ "JHAD": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Central Atlas Tamazight [tzm] +//! author : Abdel Said : https://github.com/abdelsaid + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var tzm = moment.defineLocale('tzm', { + months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), + monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), + weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS: 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', + nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', + nextWeek: 'dddd [ⴴ] LT', + lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', + lastWeek: 'dddd [ⴴ] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', + past : 'ⵢⴰⵏ %s', + s : 'ⵉⵎⵉⴽ', + m : 'ⵎⵉⵏⵓⴺ', + mm : '%d ⵎⵉⵏⵓⴺ', + h : 'ⵙⴰⵄⴰ', + hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', + d : 'ⴰⵙⵙ', + dd : '%d oⵙⵙⴰⵏ', + M : 'ⴰⵢoⵓⵔ', + MM : '%d ⵉⵢⵢⵉⵔⵏ', + y : 'ⴰⵙⴳⴰⵙ', + yy : '%d ⵉⵙⴳⴰⵙⵏ' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +return tzm; + +}))); + + +/***/ }), + +/***/ "JSLd": +/***/ (function(module, exports, __webpack_require__) { + +var hash = exports; + +hash.utils = __webpack_require__("maJs"); +hash.common = __webpack_require__("P1/4"); +hash.sha = __webpack_require__("JWgJ"); +hash.ripemd = __webpack_require__("Zdi/"); +hash.hmac = __webpack_require__("rfI5"); + +// Proxy hash functions to the main object +hash.sha1 = hash.sha.sha1; +hash.sha256 = hash.sha.sha256; +hash.sha224 = hash.sha.sha224; +hash.sha384 = hash.sha.sha384; +hash.sha512 = hash.sha.sha512; +hash.ripemd160 = hash.ripemd.ripemd160; + + +/***/ }), + +/***/ "JWgJ": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.sha1 = __webpack_require__("lULs"); +exports.sha224 = __webpack_require__("KHyZ"); +exports.sha256 = __webpack_require__("7FEM"); +exports.sha384 = __webpack_require__("ae4y"); +exports.sha512 = __webpack_require__("eQun"); + + +/***/ }), + +/***/ "Ja68": +/***/ (function(module, exports, __webpack_require__) { + +var parseKeys = __webpack_require__("UjI3") +var randomBytes = __webpack_require__("kyRq") +var createHash = __webpack_require__("kFjB") +var mgf = __webpack_require__("IkND") +var xor = __webpack_require__("PeeF") +var BN = __webpack_require__("u/Wk") +var withPublic = __webpack_require__("AKP/") +var crt = __webpack_require__("2ZN/") +var Buffer = __webpack_require__("DLTi").Buffer + +module.exports = function publicEncrypt (publicKey, msg, reverse) { + var padding + if (publicKey.padding) { + padding = publicKey.padding + } else if (reverse) { + padding = 1 + } else { + padding = 4 + } + var key = parseKeys(publicKey) + var paddedMsg + if (padding === 4) { + paddedMsg = oaep(key, msg) + } else if (padding === 1) { + paddedMsg = pkcs1(key, msg, reverse) + } else if (padding === 3) { + paddedMsg = new BN(msg) + if (paddedMsg.cmp(key.modulus) >= 0) { + throw new Error('data too long for modulus') + } + } else { + throw new Error('unknown padding') + } + if (reverse) { + return crt(paddedMsg, key) + } else { + return withPublic(paddedMsg, key) + } +} + +function oaep (key, msg) { + var k = key.modulus.byteLength() + var mLen = msg.length + var iHash = createHash('sha1').update(Buffer.alloc(0)).digest() + var hLen = iHash.length + var hLen2 = 2 * hLen + if (mLen > k - hLen2 - 2) { + throw new Error('message too long') + } + var ps = Buffer.alloc(k - mLen - hLen2 - 2) + var dblen = k - hLen - 1 + var seed = randomBytes(hLen) + var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen)) + var maskedSeed = xor(seed, mgf(maskedDb, hLen)) + return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k)) +} +function pkcs1 (key, msg, reverse) { + var mLen = msg.length + var k = key.modulus.byteLength() + if (mLen > k - 11) { + throw new Error('message too long') + } + var ps + if (reverse) { + ps = Buffer.alloc(k - mLen - 3, 0xff) + } else { + ps = nonZero(k - mLen - 3) + } + return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k)) +} +function nonZero (len) { + var out = Buffer.allocUnsafe(len) + var i = 0 + var cache = randomBytes(len * 2) + var cur = 0 + var num + while (i < len) { + if (cur === cache.length) { + cache = randomBytes(len * 2) + cur = 0 + } + num = cache[cur++] + if (num) { + out[i++] = num + } + } + return out +} + + +/***/ }), + +/***/ "JgjT": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process, __dirname, module, Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EasyPlayerWasmModule; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common__ = __webpack_require__("MsX9"); +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + + + +var fullURL = location.origin + '/'; +var Module = typeof Module !== "undefined" ? Module : {}; +var noExitRuntime; + +function LoadWasmModule(remoteHost) { + var moduleOverrides = {}; + var key; + for (key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } + } + var arguments_ = []; + var thisProgram = "./this.program"; + var quit_ = function quit_(status, toThrow) { + throw toThrow; + }; + var ENVIRONMENT_IS_WEB = false; + var ENVIRONMENT_IS_WORKER = false; + var ENVIRONMENT_IS_NODE = false; + var ENVIRONMENT_HAS_NODE = false; + var ENVIRONMENT_IS_SHELL = false; + ENVIRONMENT_IS_WEB = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === "object"; + ENVIRONMENT_IS_WORKER = typeof importScripts === "function"; + ENVIRONMENT_HAS_NODE = (typeof process === 'undefined' ? 'undefined' : _typeof(process)) === "object" && _typeof(process.versions) === "object" && typeof process.versions.node === "string"; + ENVIRONMENT_IS_NODE = ENVIRONMENT_HAS_NODE && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER; + ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + if (Module["ENVIRONMENT"]) { + throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)"); + } + var scriptDirectory = ""; + + function locateFile(path) { + if (path.startsWith("app://./")) { + return remoteHost + '/EasyPlayer.wasm'; + } + if (path.startsWith("http")) return path; + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; + } + + var read_, readAsync, readBinary, setWindowTitle; + if (ENVIRONMENT_IS_NODE) { + scriptDirectory = __dirname + "/"; + var nodeFS; + var nodePath; + read_ = function shell_read(filename, binary) { + var ret; + if (!nodeFS) nodeFS = __webpack_require__("0Nqt"); + if (!nodePath) nodePath = __webpack_require__("hBSA"); + filename = nodePath["normalize"](filename); + ret = nodeFS["readFileSync"](filename); + return binary ? ret : ret.toString(); + }; + readBinary = function readBinary(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert(ret.buffer); + return ret; + }; + if (process["argv"].length > 1) { + thisProgram = process["argv"][1].replace(/\\/g, "/"); + } + arguments_ = process["argv"].slice(2); + if (true) { + module["exports"] = Module; + } + process["on"]("uncaughtException", function (ex) { + if (!(ex instanceof ExitStatus)) { + throw ex; + } + }); + process["on"]("unhandledRejection", abort); + quit_ = function quit_(status) { + process["exit"](status); + }; + Module["inspect"] = function () { + return "[Emscripten Module object]"; + }; + } else if (ENVIRONMENT_IS_SHELL) { + if (typeof read != "undefined") { + read_ = function shell_read(f) { + return read(f); + }; + } + readBinary = function readBinary(f) { + var data; + if (typeof readbuffer === "function") { + return new Uint8Array(readbuffer(f)); + } + data = read(f, "binary"); + assert((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === "object"); + return data; + }; + if (typeof scriptArgs != "undefined") { + arguments_ = scriptArgs; + } else if (typeof arguments != "undefined") { + arguments_ = arguments; + } + if (typeof quit === "function") { + quit_ = function quit_(status) { + quit(status); + }; + } + if (typeof print !== "undefined") { + if (typeof console === "undefined") console = {}; + console.log = print; + console.warn = console.error = typeof printErr !== "undefined" ? printErr : print; + } + } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href; + } else if (document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf("/") + 1); + } else { + scriptDirectory = ""; + } + read_ = function shell_read(url) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText; + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = function readBinary(url) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response); + }; + } + readAsync = function readAsync(url, onload, onerror) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = function xhr_onload() { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + setWindowTitle = function setWindowTitle(title) { + document.title = title; + }; + } else { + throw new Error("environment detection error"); + } + var out = Module["print"] || console.log.bind(console); + var err = Module["printErr"] || console.warn.bind(console); + for (key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } + } + moduleOverrides = null; + if (Module["arguments"]) arguments_ = Module["arguments"]; + if (!Object.getOwnPropertyDescriptor(Module, "arguments")) Object.defineProperty(Module, "arguments", { + configurable: true, + get: function get() { + abort("Module.arguments has been replaced with plain arguments_"); + } + }); + if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; + if (!Object.getOwnPropertyDescriptor(Module, "thisProgram")) Object.defineProperty(Module, "thisProgram", { + configurable: true, + get: function get() { + abort("Module.thisProgram has been replaced with plain thisProgram"); + } + }); + if (Module["quit"]) quit_ = Module["quit"]; + if (!Object.getOwnPropertyDescriptor(Module, "quit")) Object.defineProperty(Module, "quit", { + configurable: true, + get: function get() { + abort("Module.quit has been replaced with plain quit_"); + } + }); + assert(typeof Module["memoryInitializerPrefixURL"] === "undefined", "Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"); + assert(typeof Module["pthreadMainPrefixURL"] === "undefined", "Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"); + assert(typeof Module["cdInitializerPrefixURL"] === "undefined", "Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"); + assert(typeof Module["filePackagePrefixURL"] === "undefined", "Module.filePackagePrefixURL option was removed, use Module.locateFile instead"); + assert(typeof Module["read"] === "undefined", "Module.read option was removed (modify read_ in JS)"); + assert(typeof Module["readAsync"] === "undefined", "Module.readAsync option was removed (modify readAsync in JS)"); + assert(typeof Module["readBinary"] === "undefined", "Module.readBinary option was removed (modify readBinary in JS)"); + assert(typeof Module["setWindowTitle"] === "undefined", "Module.setWindowTitle option was removed (modify setWindowTitle in JS)"); + if (!Object.getOwnPropertyDescriptor(Module, "read")) Object.defineProperty(Module, "read", { + configurable: true, + get: function get() { + abort("Module.read has been replaced with plain read_"); + } + }); + if (!Object.getOwnPropertyDescriptor(Module, "readAsync")) Object.defineProperty(Module, "readAsync", { + configurable: true, + get: function get() { + abort("Module.readAsync has been replaced with plain readAsync"); + } + }); + if (!Object.getOwnPropertyDescriptor(Module, "readBinary")) Object.defineProperty(Module, "readBinary", { + configurable: true, + get: function get() { + abort("Module.readBinary has been replaced with plain readBinary"); + } + }); + stackSave = stackRestore = stackAlloc = function stackAlloc() { + abort("cannot use the stack before compiled code is ready to run, and has provided stack access"); + }; + + function dynamicAlloc(size) { + assert(DYNAMICTOP_PTR); + var ret = HEAP32[DYNAMICTOP_PTR >> 2]; + var end = ret + size + 15 & -16; + if (end > _emscripten_get_heap_size()) { + abort("failure to dynamicAlloc - memory growth etc. is not supported there, call malloc/sbrk directly"); + } + HEAP32[DYNAMICTOP_PTR >> 2] = end; + return ret; + } + + function getNativeTypeSize(type) { + switch (type) { + case "i1": + case "i8": + return 1; + case "i16": + return 2; + case "i32": + return 4; + case "i64": + return 8; + case "float": + return 4; + case "double": + return 8; + default: + { + if (type[type.length - 1] === "*") { + return 4; + } else if (type[0] === "i") { + var bits = parseInt(type.substr(1)); + assert(bits % 8 === 0, "getNativeTypeSize invalid bits " + bits + ", type " + type); + return bits / 8; + } else { + return 0; + } + } + } + } + + function warnOnce(text) { + if (!warnOnce.shown) warnOnce.shown = {}; + if (!warnOnce.shown[text]) { + warnOnce.shown[text] = 1; + err(text); + } + } + + function convertJsFunctionToWasm(func, sig) { + var typeSection = [1, 0, 1, 96]; + var sigRet = sig.slice(0, 1); + var sigParam = sig.slice(1); + var typeCodes = { "i": 127, "j": 126, "f": 125, "d": 124 }; + typeSection.push(sigParam.length); + for (var i = 0; i < sigParam.length; ++i) { + typeSection.push(typeCodes[sigParam[i]]); + } + if (sigRet == "v") { + typeSection.push(0); + } else { + typeSection = typeSection.concat([1, typeCodes[sigRet]]); + } + typeSection[1] = typeSection.length - 2; + var bytes = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0].concat(typeSection, [2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0])); + var module = new WebAssembly.Module(bytes); + var instance = new WebAssembly.Instance(module, { e: { f: func } }); + var wrappedFunc = instance.exports.f; + return wrappedFunc; + } + + function addFunctionWasm(func, sig) { + var table = wasmTable; + var ret = table.length; + try { + table.grow(1); + } catch (err) { + if (!err instanceof RangeError) { + throw err; + } + throw "Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH."; + } + try { + table.set(ret, func); + } catch (err) { + if (!err instanceof TypeError) { + throw err; + } + assert(typeof sig !== "undefined", "Missing signature argument to addFunction"); + var wrapped = convertJsFunctionToWasm(func, sig); + table.set(ret, wrapped); + } + return ret; + } + + function addFunction(func, sig) { + assert(typeof func !== "undefined"); + return addFunctionWasm(func, sig); + } + + var tempRet0 = 0; + var setTempRet0 = function setTempRet0(value) { + tempRet0 = value; + }; + var wasmBinary; + if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + if (!Object.getOwnPropertyDescriptor(Module, "wasmBinary")) Object.defineProperty(Module, "wasmBinary", { + configurable: true, + get: function get() { + abort("Module.wasmBinary has been replaced with plain wasmBinary"); + } + }); + if (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"]; + if (!Object.getOwnPropertyDescriptor(Module, "noExitRuntime")) Object.defineProperty(Module, "noExitRuntime", { + configurable: true, + get: function get() { + abort("Module.noExitRuntime has been replaced with plain noExitRuntime"); + } + }); + if ((typeof WebAssembly === 'undefined' ? 'undefined' : _typeof(WebAssembly)) !== "object") { + abort("No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead."); + } + + function setValue(ptr, value, type, noSafe) { + type = type || "i8"; + if (type.charAt(type.length - 1) === "*") type = "i32"; + switch (type) { + case "i1": + HEAP8[ptr >> 0] = value; + break; + case "i8": + HEAP8[ptr >> 0] = value; + break; + case "i16": + HEAP16[ptr >> 1] = value; + break; + case "i32": + HEAP32[ptr >> 2] = value; + break; + case "i64": + tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1]; + break; + case "float": + HEAPF32[ptr >> 2] = value; + break; + case "double": + HEAPF64[ptr >> 3] = value; + break; + default: + abort("invalid type for setValue: " + type); + } + } + + var wasmMemory; + var wasmTable = new WebAssembly.Table({ "initial": 2542, "maximum": 2542 + 10, "element": "anyfunc" }); + var ABORT = false; + var EXITSTATUS = 0; + + function assert(condition, text) { + if (!condition) { + abort("Assertion failed: " + text); + } + } + + function getCFunc(ident) { + var func = Module["_" + ident]; + assert(func, "Cannot call unknown function " + ident + ", make sure it is exported"); + return func; + } + + function ccall(ident, returnType, argTypes, args, opts) { + var toC = { + "string": function string(str) { + var ret = 0; + if (str !== null && str !== undefined && str !== 0) { + var len = (str.length << 2) + 1; + ret = stackAlloc(len); + stringToUTF8(str, ret, len); + } + return ret; + }, "array": function array(arr) { + var ret = stackAlloc(arr.length); + writeArrayToMemory(arr, ret); + return ret; + } + }; + + function convertReturnValue(ret) { + if (returnType === "string") return UTF8ToString(ret); + if (returnType === "boolean") return Boolean(ret); + return ret; + } + + var func = getCFunc(ident); + var cArgs = []; + var stack = 0; + assert(returnType !== "array", 'Return type should not be "array".'); + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack === 0) stack = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func.apply(null, cArgs); + ret = convertReturnValue(ret); + if (stack !== 0) stackRestore(stack); + return ret; + } + + function cwrap(ident, returnType, argTypes, opts) { + return function () { + return ccall(ident, returnType, argTypes, arguments, opts); + }; + } + + var ALLOC_NONE = 3; + + function allocate(slab, types, allocator, ptr) { + var zeroinit, size; + if (typeof slab === "number") { + zeroinit = true; + size = slab; + } else { + zeroinit = false; + size = slab.length; + } + var singleType = typeof types === "string" ? types : null; + var ret; + if (allocator == ALLOC_NONE) { + ret = ptr; + } else { + ret = [_malloc, stackAlloc, dynamicAlloc][allocator](Math.max(size, singleType ? 1 : types.length)); + } + if (zeroinit) { + var stop; + ptr = ret; + assert((ret & 3) == 0); + stop = ret + (size & ~3); + for (; ptr < stop; ptr += 4) { + HEAP32[ptr >> 2] = 0; + } + stop = ret + size; + while (ptr < stop) { + HEAP8[ptr++ >> 0] = 0; + } + return ret; + } + if (singleType === "i8") { + if (slab.subarray || slab.slice) { + HEAPU8.set(slab, ret); + } else { + HEAPU8.set(new Uint8Array(slab), ret); + } + return ret; + } + var i = 0, + type, + typeSize, + previousType; + while (i < size) { + var curr = slab[i]; + type = singleType || types[i]; + if (type === 0) { + i++; + continue; + } + assert(type, "Must know what type to store in allocate!"); + if (type == "i64") type = "i32"; + setValue(ret + i, curr, type); + if (previousType !== type) { + typeSize = getNativeTypeSize(type); + previousType = type; + } + i += typeSize; + } + return ret; + } + + var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : undefined; + + function UTF8ArrayToString(u8Array, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (u8Array[endPtr] && !(endPtr >= endIdx)) { + ++endPtr; + }if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) { + return UTF8Decoder.decode(u8Array.subarray(idx, endPtr)); + } else { + var str = ""; + while (idx < endPtr) { + var u0 = u8Array[idx++]; + if (!(u0 & 128)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = u8Array[idx++] & 63; + if ((u0 & 224) == 192) { + str += String.fromCharCode((u0 & 31) << 6 | u1); + continue; + } + var u2 = u8Array[idx++] & 63; + if ((u0 & 240) == 224) { + u0 = (u0 & 15) << 12 | u1 << 6 | u2; + } else { + if ((u0 & 248) != 240) warnOnce("Invalid UTF-8 leading byte 0x" + u0.toString(16) + " encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!"); + u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63; + } + if (u0 < 65536) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 65536; + str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); + } + } + } + return str; + } + + function UTF8ToString(ptr, maxBytesToRead) { + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""; + } + + function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) break; + outU8Array[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + outU8Array[outIdx++] = 192 | u >> 6; + outU8Array[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + outU8Array[outIdx++] = 224 | u >> 12; + outU8Array[outIdx++] = 128 | u >> 6 & 63; + outU8Array[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) break; + if (u >= 2097152) warnOnce("Invalid Unicode code point 0x" + u.toString(16) + " encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF)."); + outU8Array[outIdx++] = 240 | u >> 18; + outU8Array[outIdx++] = 128 | u >> 12 & 63; + outU8Array[outIdx++] = 128 | u >> 6 & 63; + outU8Array[outIdx++] = 128 | u & 63; + } + } + outU8Array[outIdx] = 0; + return outIdx - startIdx; + } + + function stringToUTF8(str, outPtr, maxBytesToWrite) { + assert(typeof maxBytesToWrite == "number", "stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"); + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); + } + + function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023; + if (u <= 127) ++len;else if (u <= 2047) len += 2;else if (u <= 65535) len += 3;else len += 4; + } + return len; + } + + var UTF16Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-16le") : undefined; + + function writeArrayToMemory(array, buffer) { + assert(array.length >= 0, "writeArrayToMemory array must have a length (should be an array or typed array)"); + HEAP8.set(array, buffer); + } + + function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + assert(str.charCodeAt(i) === str.charCodeAt(i) & 255); + HEAP8[buffer++ >> 0] = str.charCodeAt(i); + } + if (!dontAddNull) HEAP8[buffer >> 0] = 0; + } + + var WASM_PAGE_SIZE = 65536; + + function alignUp(x, multiple) { + if (x % multiple > 0) { + x += multiple - x % multiple; + } + return x; + } + + var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + + function updateGlobalBufferAndViews(buf) { + buffer = buf; + Module["HEAP8"] = HEAP8 = new Int8Array(buf); + Module["HEAP16"] = HEAP16 = new Int16Array(buf); + Module["HEAP32"] = HEAP32 = new Int32Array(buf); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf); + Module["HEAPF32"] = HEAPF32 = new Float32Array(buf); + Module["HEAPF64"] = HEAPF64 = new Float64Array(buf); + } + + var STACK_BASE = 6584208, + STACK_MAX = 1341328, + DYNAMIC_BASE = 6584208, + DYNAMICTOP_PTR = 1341168; + assert(STACK_BASE % 16 === 0, "stack must start aligned"); + assert(DYNAMIC_BASE % 16 === 0, "heap must start aligned"); + var TOTAL_STACK = 5242880; + if (Module["TOTAL_STACK"]) assert(TOTAL_STACK === Module["TOTAL_STACK"], "the stack size can no longer be determined at runtime"); + var INITIAL_TOTAL_MEMORY = Module["TOTAL_MEMORY"] || 67108864; + if (!Object.getOwnPropertyDescriptor(Module, "TOTAL_MEMORY")) Object.defineProperty(Module, "TOTAL_MEMORY", { + configurable: true, + get: function get() { + abort("Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY"); + } + }); + assert(INITIAL_TOTAL_MEMORY >= TOTAL_STACK, "TOTAL_MEMORY should be larger than TOTAL_STACK, was " + INITIAL_TOTAL_MEMORY + "! (TOTAL_STACK=" + TOTAL_STACK + ")"); + assert(typeof Int32Array !== "undefined" && typeof Float64Array !== "undefined" && Int32Array.prototype.subarray !== undefined && Int32Array.prototype.set !== undefined, "JS engine does not provide full typed array support"); + if (Module["wasmMemory"]) { + wasmMemory = Module["wasmMemory"]; + } else { + wasmMemory = new WebAssembly.Memory({ "initial": INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE }); + } + if (wasmMemory) { + buffer = wasmMemory.buffer; + } + INITIAL_TOTAL_MEMORY = buffer.byteLength; + assert(INITIAL_TOTAL_MEMORY % WASM_PAGE_SIZE === 0); + updateGlobalBufferAndViews(buffer); + HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE; + + function writeStackCookie() { + assert((STACK_MAX & 3) == 0); + HEAPU32[(STACK_MAX >> 2) + 1] = 34821223; + HEAPU32[(STACK_MAX >> 2) + 2] = 2310721022; + HEAP32[0] = 1668509029; + } + + function checkStackCookie() { + var cookie1 = HEAPU32[(STACK_MAX >> 2) + 1]; + var cookie2 = HEAPU32[(STACK_MAX >> 2) + 2]; + if (cookie1 != 34821223 || cookie2 != 2310721022) { + abort("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x" + cookie2.toString(16) + " " + cookie1.toString(16)); + } + if (HEAP32[0] !== 1668509029) abort("Runtime error: The application has corrupted its heap memory area (address zero)!"); + } + + function abortStackOverflow(allocSize) { + abort("Stack overflow! Attempted to allocate " + allocSize + " bytes on the stack, but stack has only " + (STACK_MAX - stackSave() + allocSize) + " bytes available!"); + } + + (function () { + var h16 = new Int16Array(1); + var h8 = new Int8Array(h16.buffer); + h16[0] = 25459; + if (h8[0] !== 115 || h8[1] !== 99) throw "Runtime error: expected the system to be little-endian!"; + })(); + + function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == "function") { + callback(); + continue; + } + var func = callback.func; + if (typeof func === "number") { + if (callback.arg === undefined) { + Module["dynCall_v"](func); + } else { + Module["dynCall_vi"](func, callback.arg); + } + } else { + func(callback.arg === undefined ? null : callback.arg); + } + } + } + + var __ATPRERUN__ = []; + var __ATINIT__ = []; + var __ATMAIN__ = []; + var __ATPOSTRUN__ = []; + var runtimeInitialized = false; + var runtimeExited = false; + + function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); + } + + function initRuntime() { + checkStackCookie(); + assert(!runtimeInitialized); + runtimeInitialized = true; + if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); + TTY.init(); + callRuntimeCallbacks(__ATINIT__); + } + + function preMain() { + checkStackCookie(); + FS.ignorePermissions = false; + callRuntimeCallbacks(__ATMAIN__); + } + + function exitRuntime() { + checkStackCookie(); + runtimeExited = true; + } + + function postRun() { + checkStackCookie(); + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); + } + + function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); + } + + function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); + } + + assert(Math.imul, "This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); + assert(Math.fround, "This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); + assert(Math.clz32, "This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); + assert(Math.trunc, "This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); + var Math_abs = Math.abs; + var Math_ceil = Math.ceil; + var Math_floor = Math.floor; + var Math_min = Math.min; + var runDependencies = 0; + var runDependencyWatcher = null; + var dependenciesFulfilled = null; + var runDependencyTracking = {}; + + function getUniqueRunDependency(id) { + var orig = id; + while (1) { + if (!runDependencyTracking[id]) return id; + id = orig + Math.random(); + } + return id; + } + + function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (id) { + assert(!runDependencyTracking[id]); + runDependencyTracking[id] = 1; + if (runDependencyWatcher === null && typeof setInterval !== "undefined") { + runDependencyWatcher = setInterval(function () { + if (ABORT) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + return; + } + var shown = false; + for (var dep in runDependencyTracking) { + if (!shown) { + shown = true; + err("still waiting on run dependencies:"); + } + err("dependency: " + dep); + } + if (shown) { + err("(end of list)"); + } + }, 1e4); + } + } else { + err("warning: run dependency added without ID"); + } + } + + function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (id) { + assert(runDependencyTracking[id]); + delete runDependencyTracking[id]; + } else { + err("warning: run dependency removed without ID"); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } + } + + Module["preloadedImages"] = {}; + Module["preloadedAudios"] = {}; + + function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + what += ""; + out(what); + err(what); + ABORT = true; + EXITSTATUS = 1; + var output = "abort(" + what + ") at " + stackTrace(); + what = output; + throw new WebAssembly.RuntimeError(what); + } + + var dataURIPrefix = "data:application/octet-stream;base64,"; + + function isDataURI(filename) { + return String.prototype.startsWith ? filename.startsWith(dataURIPrefix) : filename.indexOf(dataURIPrefix) === 0; + } + + var wasmBinaryFile = fullURL + "EasyPlayer.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } + + function getBinary() { + try { + if (wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(wasmBinaryFile); + } else { + throw "both async and sync fetching of the wasm failed"; + } + } catch (err) { + abort(err); + } + } + + function getBinaryPromise() { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === "function") { + return fetch(wasmBinaryFile, { credentials: "same-origin" }).then(function (response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; + } + return response["arrayBuffer"](); + }).catch(function () { + return getBinary(); + }); + } + return new Promise(function (resolve, reject) { + resolve(getBinary()); + }); + } + + function createWasm() { + var info = { "env": asmLibraryArg, "wasi_unstable": asmLibraryArg }; + + function receiveInstance(instance, module) { + var exports = instance.exports; + Module["asm"] = exports; + removeRunDependency("wasm-instantiate"); + } + + addRunDependency("wasm-instantiate"); + var trueModule = Module; + + function receiveInstantiatedSource(output) { + assert(Module === trueModule, "the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"); + trueModule = null; + receiveInstance(output["instance"]); + } + + function instantiateArrayBuffer(receiver) { + return getBinaryPromise().then(function (binary) { + return WebAssembly.instantiate(binary, info); + }).then(receiver, function (reason) { + err("failed to asynchronously prepare wasm: " + reason); + abort(reason); + }); + } + + function instantiateAsync() { + if (!wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI(wasmBinaryFile) && typeof fetch === "function") { + fetch(wasmBinaryFile, { credentials: "same-origin" }).then(function (response) { + var result = WebAssembly.instantiateStreaming(response, info); + return result.then(receiveInstantiatedSource, function (reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + instantiateArrayBuffer(receiveInstantiatedSource); + }); + }); + } else { + return instantiateArrayBuffer(receiveInstantiatedSource); + } + } + + if (Module["instantiateWasm"]) { + try { + var exports = Module["instantiateWasm"](info, receiveInstance); + return exports; + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + return false; + } + } + instantiateAsync(); + return {}; + } + + var tempDouble; + var tempI64; + __ATINIT__.push({ + func: function func() { + ___wasm_call_ctors(); + } + }); + + function demangle(func) { + warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"); + return func; + } + + function demangleAll(text) { + var regex = /\b_Z[\w\d_]+/g; + return text.replace(regex, function (x) { + var y = demangle(x); + return x === y ? x : y + " [" + x + "]"; + }); + } + + function jsStackTrace() { + var err = new Error(); + if (!err.stack) { + try { + throw new Error(0); + } catch (e) { + err = e; + } + if (!err.stack) { + return "(no stack trace available)"; + } + } + return err.stack.toString(); + } + + function stackTrace() { + var js = jsStackTrace(); + if (Module["extraStackTrace"]) js += "\n" + Module["extraStackTrace"](); + return demangleAll(js); + } + + function ___cxa_allocate_exception(size) { + return _malloc(size); + } + + var ___exception_infos = {}; + var ___exception_last = 0; + + function ___cxa_throw(ptr, type, destructor) { + ___exception_infos[ptr] = { + ptr: ptr, + adjusted: [ptr], + type: type, + destructor: destructor, + refcount: 0, + caught: false, + rethrown: false + }; + ___exception_last = ptr; + if (!("uncaught_exception" in __ZSt18uncaught_exceptionv)) { + __ZSt18uncaught_exceptionv.uncaught_exceptions = 1; + } else { + __ZSt18uncaught_exceptionv.uncaught_exceptions++; + } + throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."; + } + + function ___lock() {} + + function ___setErrNo(value) { + if (Module["___errno_location"]) HEAP32[Module["___errno_location"]() >> 2] = value;else err("failed to set errno from JS"); + return value; + } + + var PATH = { + splitPath: function splitPath(filename) { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + }, normalizeArray: function normalizeArray(parts, allowAboveRoot) { + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === ".") { + parts.splice(i, 1); + } else if (last === "..") { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + if (allowAboveRoot) { + for (; up; up--) { + parts.unshift(".."); + } + } + return parts; + }, normalize: function normalize(path) { + var isAbsolute = path.charAt(0) === "/", + trailingSlash = path.substr(-1) === "/"; + path = PATH.normalizeArray(path.split("/").filter(function (p) { + return !!p; + }), !isAbsolute).join("/"); + if (!path && !isAbsolute) { + path = "."; + } + if (path && trailingSlash) { + path += "/"; + } + return (isAbsolute ? "/" : "") + path; + }, dirname: function dirname(path) { + var result = PATH.splitPath(path), + root = result[0], + dir = result[1]; + if (!root && !dir) { + return "."; + } + if (dir) { + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + }, basename: function basename(path) { + if (path === "/") return "/"; + var lastSlash = path.lastIndexOf("/"); + if (lastSlash === -1) return path; + return path.substr(lastSlash + 1); + }, extname: function extname(path) { + return PATH.splitPath(path)[3]; + }, join: function join() { + var paths = Array.prototype.slice.call(arguments, 0); + return PATH.normalize(paths.join("/")); + }, join2: function join2(l, r) { + return PATH.normalize(l + "/" + r); + } + }; + var PATH_FS = { + resolve: function resolve() { + var resolvedPath = "", + resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = i >= 0 ? arguments[i] : FS.cwd(); + if (typeof path !== "string") { + throw new TypeError("Arguments to path.resolve must be strings"); + } else if (!path) { + return ""; + } + resolvedPath = path + "/" + resolvedPath; + resolvedAbsolute = path.charAt(0) === "/"; + } + resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter(function (p) { + return !!p; + }), !resolvedAbsolute).join("/"); + return (resolvedAbsolute ? "/" : "") + resolvedPath || "."; + }, relative: function relative(from, to) { + from = PATH_FS.resolve(from).substr(1); + to = PATH_FS.resolve(to).substr(1); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== "") break; + } + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== "") break; + } + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + + var fromParts = trim(from.split("/")); + var toParts = trim(to.split("/")); + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push(".."); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join("/"); + } + }; + var TTY = { + ttys: [], init: function init() {}, shutdown: function shutdown() {}, register: function register(dev, ops) { + TTY.ttys[dev] = { input: [], output: [], ops: ops }; + FS.registerDevice(dev, TTY.stream_ops); + }, stream_ops: { + open: function open(stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(43); + } + stream.tty = tty; + stream.seekable = false; + }, close: function close(stream) { + stream.tty.ops.flush(stream.tty); + }, flush: function flush(stream) { + stream.tty.ops.flush(stream.tty); + }, read: function read(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(60); + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, write: function write(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(60); + } + try { + for (var i = 0; i < length; i++) { + stream.tty.ops.put_char(stream.tty, buffer[offset + i]); + } + } catch (e) { + throw new FS.ErrnoError(29); + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }, default_tty_ops: { + get_char: function get_char(tty) { + if (!tty.input.length) { + var result = null; + if (ENVIRONMENT_IS_NODE) { + var BUFSIZE = 256; + var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE); + var bytesRead = 0; + try { + bytesRead = nodeFS.readSync(process.stdin.fd, buf, 0, BUFSIZE, null); + } catch (e) { + if (e.toString().indexOf("EOF") != -1) bytesRead = 0;else throw e; + } + if (bytesRead > 0) { + result = buf.slice(0, bytesRead).toString("utf-8"); + } else { + result = null; + } + } else if (typeof window != "undefined" && typeof window.prompt == "function") { + result = window.prompt("Input: "); + if (result !== null) { + result += "\n"; + } + } else if (typeof readline == "function") { + result = readline(); + if (result !== null) { + result += "\n"; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + }, put_char: function put_char(tty, val) { + if (val === null || val === 10) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, flush: function flush(tty) { + if (tty.output && tty.output.length > 0) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + } + }, default_tty1_ops: { + put_char: function put_char(tty, val) { + if (val === null || val === 10) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, flush: function flush(tty) { + if (tty.output && tty.output.length > 0) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + } + } + }; + var MEMFS = { + ops_table: null, mount: function mount(_mount) { + return MEMFS.createNode(null, "/", 16384 | 511, 0); + }, createNode: function createNode(parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + throw new FS.ErrnoError(63); + } + if (!MEMFS.ops_table) { + MEMFS.ops_table = { + dir: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink + }, stream: { llseek: MEMFS.stream_ops.llseek } + }, + file: { + node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, + stream: { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap, + msync: MEMFS.stream_ops.msync + } + }, + link: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink + }, stream: {} + }, + chrdev: { + node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, + stream: FS.chrdev_stream_ops + } + }; + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; + node.contents = {}; + } else if (FS.isFile(node.mode)) { + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; + node.contents = null; + } else if (FS.isLink(node.mode)) { + node.node_ops = MEMFS.ops_table.link.node; + node.stream_ops = MEMFS.ops_table.link.stream; + } else if (FS.isChrdev(node.mode)) { + node.node_ops = MEMFS.ops_table.chrdev.node; + node.stream_ops = MEMFS.ops_table.chrdev.stream; + } + node.timestamp = Date.now(); + if (parent) { + parent.contents[name] = node; + } + return node; + }, getFileDataAsRegularArray: function getFileDataAsRegularArray(node) { + if (node.contents && node.contents.subarray) { + var arr = []; + for (var i = 0; i < node.usedBytes; ++i) { + arr.push(node.contents[i]); + }return arr; + } + return node.contents; + }, getFileDataAsTypedArray: function getFileDataAsTypedArray(node) { + if (!node.contents) return new Uint8Array(); + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); + return new Uint8Array(node.contents); + }, expandFileStorage: function expandFileStorage(node, newCapacity) { + var prevCapacity = node.contents ? node.contents.length : 0; + if (prevCapacity >= newCapacity) return; + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) | 0); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); + return; + }, resizeFileStorage: function resizeFileStorage(node, newSize) { + if (node.usedBytes == newSize) return; + if (newSize == 0) { + node.contents = null; + node.usedBytes = 0; + return; + } + if (!node.contents || node.contents.subarray) { + var oldContents = node.contents; + node.contents = new Uint8Array(new ArrayBuffer(newSize)); + if (oldContents) { + node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); + } + node.usedBytes = newSize; + return; + } + if (!node.contents) node.contents = []; + if (node.contents.length > newSize) node.contents.length = newSize;else while (node.contents.length < newSize) { + node.contents.push(0); + }node.usedBytes = newSize; + }, node_ops: { + getattr: function getattr(node) { + var attr = {}; + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; + if (FS.isDir(node.mode)) { + attr.size = 4096; + } else if (FS.isFile(node.mode)) { + attr.size = node.usedBytes; + } else if (FS.isLink(node.mode)) { + attr.size = node.link.length; + } else { + attr.size = 0; + } + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + }, setattr: function setattr(node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.resizeFileStorage(node, attr.size); + } + }, lookup: function lookup(parent, name) { + throw FS.genericErrors[44]; + }, mknod: function mknod(parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev); + }, rename: function rename(old_node, new_dir, new_name) { + if (FS.isDir(old_node.mode)) { + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) {} + if (new_node) { + for (var i in new_node.contents) { + throw new FS.ErrnoError(55); + } + } + } + delete old_node.parent.contents[old_node.name]; + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + old_node.parent = new_dir; + }, unlink: function unlink(parent, name) { + delete parent.contents[name]; + }, rmdir: function rmdir(parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(55); + } + delete parent.contents[name]; + }, readdir: function readdir(node) { + var entries = [".", ".."]; + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + }, symlink: function symlink(parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 511 | 40960, 0); + node.link = oldpath; + return node; + }, readlink: function readlink(node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(28); + } + return node.link; + } + }, stream_ops: { + read: function read(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= stream.node.usedBytes) return 0; + var size = Math.min(stream.node.usedBytes - position, length); + assert(size >= 0); + if (size > 8 && contents.subarray) { + buffer.set(contents.subarray(position, position + size), offset); + } else { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } + return size; + }, write: function write(stream, buffer, offset, length, position, canOwn) { + if (canOwn) { + warnOnce("file packager has copied file data into memory, but in memory growth we are forced to copy it again (see --no-heap-copy)"); + } + canOwn = false; + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); + if (buffer.subarray && (!node.contents || node.contents.subarray)) { + if (canOwn) { + assert(position === 0, "canOwn must imply no weird position inside the file"); + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length; + } else if (node.usedBytes === 0 && position === 0) { + node.contents = new Uint8Array(buffer.subarray(offset, offset + length)); + node.usedBytes = length; + return length; + } else if (position + length <= node.usedBytes) { + node.contents.set(buffer.subarray(offset, offset + length), position); + return length; + } + } + MEMFS.expandFileStorage(node, position + length); + if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i]; + } + } + node.usedBytes = Math.max(node.usedBytes, position + length); + return length; + }, llseek: function llseek(stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position; + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes; + } + } + if (position < 0) { + throw new FS.ErrnoError(28); + } + return position; + }, allocate: function allocate(stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); + }, mmap: function mmap(stream, buffer, offset, length, position, prot, flags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + var ptr; + var allocated; + var contents = stream.node.contents; + if (!(flags & 2) && (contents.buffer === buffer || contents.buffer === buffer.buffer)) { + allocated = false; + ptr = contents.byteOffset; + } else { + if (position > 0 || position + length < stream.node.usedBytes) { + if (contents.subarray) { + contents = contents.subarray(position, position + length); + } else { + contents = Array.prototype.slice.call(contents, position, position + length); + } + } + allocated = true; + var fromHeap = buffer.buffer == HEAP8.buffer; + ptr = _malloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + (fromHeap ? HEAP8 : buffer).set(contents, ptr); + } + return { ptr: ptr, allocated: allocated }; + }, msync: function msync(stream, buffer, offset, length, mmapFlags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (mmapFlags & 2) { + return 0; + } + var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + return 0; + } + } + }; + var ERRNO_MESSAGES = { + 0: "Success", + 1: "Arg list too long", + 2: "Permission denied", + 3: "Address already in use", + 4: "Address not available", + 5: "Address family not supported by protocol family", + 6: "No more processes", + 7: "Socket already connected", + 8: "Bad file number", + 9: "Trying to read unreadable message", + 10: "Mount device busy", + 11: "Operation canceled", + 12: "No children", + 13: "Connection aborted", + 14: "Connection refused", + 15: "Connection reset by peer", + 16: "File locking deadlock error", + 17: "Destination address required", + 18: "Math arg out of domain of func", + 19: "Quota exceeded", + 20: "File exists", + 21: "Bad address", + 22: "File too large", + 23: "Host is unreachable", + 24: "Identifier removed", + 25: "Illegal byte sequence", + 26: "Connection already in progress", + 27: "Interrupted system call", + 28: "Invalid argument", + 29: "I/O error", + 30: "Socket is already connected", + 31: "Is a directory", + 32: "Too many symbolic links", + 33: "Too many open files", + 34: "Too many links", + 35: "Message too long", + 36: "Multihop attempted", + 37: "File or path name too long", + 38: "Network interface is not configured", + 39: "Connection reset by network", + 40: "Network is unreachable", + 41: "Too many open files in system", + 42: "No buffer space available", + 43: "No such device", + 44: "No such file or directory", + 45: "Exec format error", + 46: "No record locks available", + 47: "The link has been severed", + 48: "Not enough core", + 49: "No message of desired type", + 50: "Protocol not available", + 51: "No space left on device", + 52: "Function not implemented", + 53: "Socket is not connected", + 54: "Not a directory", + 55: "Directory not empty", + 56: "State not recoverable", + 57: "Socket operation on non-socket", + 59: "Not a typewriter", + 60: "No such device or address", + 61: "Value too large for defined data type", + 62: "Previous owner died", + 63: "Not super-user", + 64: "Broken pipe", + 65: "Protocol error", + 66: "Unknown protocol", + 67: "Protocol wrong type for socket", + 68: "Math result not representable", + 69: "Read only file system", + 70: "Illegal seek", + 71: "No such process", + 72: "Stale file handle", + 73: "Connection timed out", + 74: "Text file busy", + 75: "Cross-device link", + 100: "Device not a stream", + 101: "Bad font file fmt", + 102: "Invalid slot", + 103: "Invalid request code", + 104: "No anode", + 105: "Block device required", + 106: "Channel number out of range", + 107: "Level 3 halted", + 108: "Level 3 reset", + 109: "Link number out of range", + 110: "Protocol driver not attached", + 111: "No CSI structure available", + 112: "Level 2 halted", + 113: "Invalid exchange", + 114: "Invalid request descriptor", + 115: "Exchange full", + 116: "No data (for no delay io)", + 117: "Timer expired", + 118: "Out of streams resources", + 119: "Machine is not on the network", + 120: "Package not installed", + 121: "The object is remote", + 122: "Advertise error", + 123: "Srmount error", + 124: "Communication error on send", + 125: "Cross mount point (not really error)", + 126: "Given log. name not unique", + 127: "f.d. invalid for this operation", + 128: "Remote address changed", + 129: "Can access a needed shared lib", + 130: "Accessing a corrupted shared lib", + 131: ".lib section in a.out corrupted", + 132: "Attempting to link in too many libs", + 133: "Attempting to exec a shared library", + 135: "Streams pipe error", + 136: "Too many users", + 137: "Socket type not supported", + 138: "Not supported", + 139: "Protocol family not supported", + 140: "Can't send after socket shutdown", + 141: "Too many references", + 142: "Host is down", + 148: "No medium (in tape drive)", + 156: "Level 2 not synchronized" + }; + var ERRNO_CODES = { + EPERM: 63, + ENOENT: 44, + ESRCH: 71, + EINTR: 27, + EIO: 29, + ENXIO: 60, + E2BIG: 1, + ENOEXEC: 45, + EBADF: 8, + ECHILD: 12, + EAGAIN: 6, + EWOULDBLOCK: 6, + ENOMEM: 48, + EACCES: 2, + EFAULT: 21, + ENOTBLK: 105, + EBUSY: 10, + EEXIST: 20, + EXDEV: 75, + ENODEV: 43, + ENOTDIR: 54, + EISDIR: 31, + EINVAL: 28, + ENFILE: 41, + EMFILE: 33, + ENOTTY: 59, + ETXTBSY: 74, + EFBIG: 22, + ENOSPC: 51, + ESPIPE: 70, + EROFS: 69, + EMLINK: 34, + EPIPE: 64, + EDOM: 18, + ERANGE: 68, + ENOMSG: 49, + EIDRM: 24, + ECHRNG: 106, + EL2NSYNC: 156, + EL3HLT: 107, + EL3RST: 108, + ELNRNG: 109, + EUNATCH: 110, + ENOCSI: 111, + EL2HLT: 112, + EDEADLK: 16, + ENOLCK: 46, + EBADE: 113, + EBADR: 114, + EXFULL: 115, + ENOANO: 104, + EBADRQC: 103, + EBADSLT: 102, + EDEADLOCK: 16, + EBFONT: 101, + ENOSTR: 100, + ENODATA: 116, + ETIME: 117, + ENOSR: 118, + ENONET: 119, + ENOPKG: 120, + EREMOTE: 121, + ENOLINK: 47, + EADV: 122, + ESRMNT: 123, + ECOMM: 124, + EPROTO: 65, + EMULTIHOP: 36, + EDOTDOT: 125, + EBADMSG: 9, + ENOTUNIQ: 126, + EBADFD: 127, + EREMCHG: 128, + ELIBACC: 129, + ELIBBAD: 130, + ELIBSCN: 131, + ELIBMAX: 132, + ELIBEXEC: 133, + ENOSYS: 52, + ENOTEMPTY: 55, + ENAMETOOLONG: 37, + ELOOP: 32, + EOPNOTSUPP: 138, + EPFNOSUPPORT: 139, + ECONNRESET: 15, + ENOBUFS: 42, + EAFNOSUPPORT: 5, + EPROTOTYPE: 67, + ENOTSOCK: 57, + ENOPROTOOPT: 50, + ESHUTDOWN: 140, + ECONNREFUSED: 14, + EADDRINUSE: 3, + ECONNABORTED: 13, + ENETUNREACH: 40, + ENETDOWN: 38, + ETIMEDOUT: 73, + EHOSTDOWN: 142, + EHOSTUNREACH: 23, + EINPROGRESS: 26, + EALREADY: 7, + EDESTADDRREQ: 17, + EMSGSIZE: 35, + EPROTONOSUPPORT: 66, + ESOCKTNOSUPPORT: 137, + EADDRNOTAVAIL: 4, + ENETRESET: 39, + EISCONN: 30, + ENOTCONN: 53, + ETOOMANYREFS: 141, + EUSERS: 136, + EDQUOT: 19, + ESTALE: 72, + ENOTSUP: 138, + ENOMEDIUM: 148, + EILSEQ: 25, + EOVERFLOW: 61, + ECANCELED: 11, + ENOTRECOVERABLE: 56, + EOWNERDEAD: 62, + ESTRPIPE: 135 + }; + var FS = { + root: null, + mounts: [], + devices: {}, + streams: [], + nextInode: 1, + nameTable: null, + currentPath: "/", + initialized: false, + ignorePermissions: true, + trackingDelegate: {}, + tracking: { openFlags: { READ: 1, WRITE: 2 } }, + ErrnoError: null, + genericErrors: {}, + filesystems: null, + syncFSRequests: 0, + handleFSError: function handleFSError(e) { + if (!(e instanceof FS.ErrnoError)) throw e + " : " + stackTrace(); + return ___setErrNo(e.errno); + }, + lookupPath: function lookupPath(path, opts) { + path = PATH_FS.resolve(FS.cwd(), path); + opts = opts || {}; + if (!path) return { path: "", node: null }; + var defaults = { follow_mount: true, recurse_count: 0 }; + for (var key in defaults) { + if (opts[key] === undefined) { + opts[key] = defaults[key]; + } + } + if (opts.recurse_count > 8) { + throw new FS.ErrnoError(32); + } + var parts = PATH.normalizeArray(path.split("/").filter(function (p) { + return !!p; + }), false); + var current = FS.root; + var current_path = "/"; + for (var i = 0; i < parts.length; i++) { + var islast = i === parts.length - 1; + if (islast && opts.parent) { + break; + } + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + if (FS.isMountpoint(current)) { + if (!islast || islast && opts.follow_mount) { + current = current.mounted.root; + } + } + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), link); + var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); + current = lookup.node; + if (count++ > 40) { + throw new FS.ErrnoError(32); + } + } + } + } + return { path: current_path, node: current }; + }, + getPath: function getPath(node) { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path; + } + path = path ? node.name + "/" + path : node.name; + node = node.parent; + } + }, + hashName: function hashName(parentid, name) { + var hash = 0; + for (var i = 0; i < name.length; i++) { + hash = (hash << 5) - hash + name.charCodeAt(i) | 0; + } + return (parentid + hash >>> 0) % FS.nameTable.length; + }, + hashAddNode: function hashAddNode(node) { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + }, + hashRemoveNode: function hashRemoveNode(node) { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next; + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + }, + lookupNode: function lookupNode(parent, name) { + var err = FS.mayLookup(parent); + if (err) { + throw new FS.ErrnoError(err, parent); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node; + } + } + return FS.lookup(parent, name); + }, + createNode: function createNode(parent, name, mode, rdev) { + if (!FS.FSNode) { + FS.FSNode = function (parent, name, mode, rdev) { + if (!parent) { + parent = this; + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev; + }; + FS.FSNode.prototype = {}; + var readMode = 292 | 73; + var writeMode = 146; + Object.defineProperties(FS.FSNode.prototype, { + read: { + get: function get() { + return (this.mode & readMode) === readMode; + }, set: function set(val) { + val ? this.mode |= readMode : this.mode &= ~readMode; + } + }, write: { + get: function get() { + return (this.mode & writeMode) === writeMode; + }, set: function set(val) { + val ? this.mode |= writeMode : this.mode &= ~writeMode; + } + }, isFolder: { + get: function get() { + return FS.isDir(this.mode); + } + }, isDevice: { + get: function get() { + return FS.isChrdev(this.mode); + } + } + }); + } + var node = new FS.FSNode(parent, name, mode, rdev); + FS.hashAddNode(node); + return node; + }, + destroyNode: function destroyNode(node) { + FS.hashRemoveNode(node); + }, + isRoot: function isRoot(node) { + return node === node.parent; + }, + isMountpoint: function isMountpoint(node) { + return !!node.mounted; + }, + isFile: function isFile(mode) { + return (mode & 61440) === 32768; + }, + isDir: function isDir(mode) { + return (mode & 61440) === 16384; + }, + isLink: function isLink(mode) { + return (mode & 61440) === 40960; + }, + isChrdev: function isChrdev(mode) { + return (mode & 61440) === 8192; + }, + isBlkdev: function isBlkdev(mode) { + return (mode & 61440) === 24576; + }, + isFIFO: function isFIFO(mode) { + return (mode & 61440) === 4096; + }, + isSocket: function isSocket(mode) { + return (mode & 49152) === 49152; + }, + flagModes: { + "r": 0, + "rs": 1052672, + "r+": 2, + "w": 577, + "wx": 705, + "xw": 705, + "w+": 578, + "wx+": 706, + "xw+": 706, + "a": 1089, + "ax": 1217, + "xa": 1217, + "a+": 1090, + "ax+": 1218, + "xa+": 1218 + }, + modeStringToFlags: function modeStringToFlags(str) { + var flags = FS.flagModes[str]; + if (typeof flags === "undefined") { + throw new Error("Unknown file open mode: " + str); + } + return flags; + }, + flagsToPermissionString: function flagsToPermissionString(flag) { + var perms = ["r", "w", "rw"][flag & 3]; + if (flag & 512) { + perms += "w"; + } + return perms; + }, + nodePermissions: function nodePermissions(node, perms) { + if (FS.ignorePermissions) { + return 0; + } + if (perms.indexOf("r") !== -1 && !(node.mode & 292)) { + return 2; + } else if (perms.indexOf("w") !== -1 && !(node.mode & 146)) { + return 2; + } else if (perms.indexOf("x") !== -1 && !(node.mode & 73)) { + return 2; + } + return 0; + }, + mayLookup: function mayLookup(dir) { + var err = FS.nodePermissions(dir, "x"); + if (err) return err; + if (!dir.node_ops.lookup) return 2; + return 0; + }, + mayCreate: function mayCreate(dir, name) { + try { + var node = FS.lookupNode(dir, name); + return 20; + } catch (e) {} + return FS.nodePermissions(dir, "wx"); + }, + mayDelete: function mayDelete(dir, name, isdir) { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var err = FS.nodePermissions(dir, "wx"); + if (err) { + return err; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return 54; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return 10; + } + } else { + if (FS.isDir(node.mode)) { + return 31; + } + } + return 0; + }, + mayOpen: function mayOpen(node, flags) { + if (!node) { + return 44; + } + if (FS.isLink(node.mode)) { + return 32; + } else if (FS.isDir(node.mode)) { + if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) { + return 31; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + }, + MAX_OPEN_FDS: 4096, + nextfd: function nextfd(fd_start, fd_end) { + fd_start = fd_start || 0; + fd_end = fd_end || FS.MAX_OPEN_FDS; + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(33); + }, + getStream: function getStream(fd) { + return FS.streams[fd]; + }, + createStream: function createStream(stream, fd_start, fd_end) { + if (!FS.FSStream) { + FS.FSStream = function () {}; + FS.FSStream.prototype = {}; + Object.defineProperties(FS.FSStream.prototype, { + object: { + get: function get() { + return this.node; + }, set: function set(val) { + this.node = val; + } + }, isRead: { + get: function get() { + return (this.flags & 2097155) !== 1; + } + }, isWrite: { + get: function get() { + return (this.flags & 2097155) !== 0; + } + }, isAppend: { + get: function get() { + return this.flags & 1024; + } + } + }); + } + var newStream = new FS.FSStream(); + for (var p in stream) { + newStream[p] = stream[p]; + } + stream = newStream; + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + }, + closeStream: function closeStream(fd) { + FS.streams[fd] = null; + }, + chrdev_stream_ops: { + open: function open(stream) { + var device = FS.getDevice(stream.node.rdev); + stream.stream_ops = device.stream_ops; + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + }, llseek: function llseek() { + throw new FS.ErrnoError(70); + } + }, + major: function major(dev) { + return dev >> 8; + }, + minor: function minor(dev) { + return dev & 255; + }, + makedev: function makedev(ma, mi) { + return ma << 8 | mi; + }, + registerDevice: function registerDevice(dev, ops) { + FS.devices[dev] = { stream_ops: ops }; + }, + getDevice: function getDevice(dev) { + return FS.devices[dev]; + }, + getMounts: function getMounts(mount) { + var mounts = []; + var check = [mount]; + while (check.length) { + var m = check.pop(); + mounts.push(m); + check.push.apply(check, m.mounts); + } + return mounts; + }, + syncfs: function syncfs(populate, callback) { + if (typeof populate === "function") { + callback = populate; + populate = false; + } + FS.syncFSRequests++; + if (FS.syncFSRequests > 1) { + console.log("warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"); + } + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + + function doCallback(err) { + assert(FS.syncFSRequests > 0); + FS.syncFSRequests--; + return callback(err); + } + + function done(err) { + if (err) { + if (!done.errored) { + done.errored = true; + return doCallback(err); + } + return; + } + if (++completed >= mounts.length) { + doCallback(null); + } + } + + mounts.forEach(function (mount) { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + }); + }, + mount: function mount(type, opts, mountpoint) { + if (typeof type === "string") { + throw type; + } + var root = mountpoint === "/"; + var pseudo = !mountpoint; + var node; + if (root && FS.root) { + throw new FS.ErrnoError(10); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + mountpoint = lookup.path; + node = lookup.node; + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + } + var mount = { type: type, opts: opts, mountpoint: mountpoint, mounts: [] }; + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + if (root) { + FS.root = mountRoot; + } else if (node) { + node.mounted = mount; + if (node.mount) { + node.mount.mounts.push(mount); + } + } + return mountRoot; + }, + unmount: function unmount(mountpoint) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(28); + } + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + Object.keys(FS.nameTable).forEach(function (hash) { + var current = FS.nameTable[hash]; + while (current) { + var next = current.name_next; + if (mounts.indexOf(current.mount) !== -1) { + FS.destroyNode(current); + } + current = next; + } + }); + node.mounted = null; + var idx = node.mount.mounts.indexOf(mount); + assert(idx !== -1); + node.mount.mounts.splice(idx, 1); + }, + lookup: function lookup(parent, name) { + return parent.node_ops.lookup(parent, name); + }, + mknod: function mknod(path, mode, dev) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === "." || name === "..") { + throw new FS.ErrnoError(28); + } + var err = FS.mayCreate(parent, name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.mknod(parent, name, mode, dev); + }, + create: function create(path, mode) { + mode = mode !== undefined ? mode : 438; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + }, + mkdir: function mkdir(path, mode) { + mode = mode !== undefined ? mode : 511; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + }, + mkdirTree: function mkdirTree(path, mode) { + var dirs = path.split("/"); + var d = ""; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) continue; + d += "/" + dirs[i]; + try { + FS.mkdir(d, mode); + } catch (e) { + if (e.errno != 20) throw e; + } + } + }, + mkdev: function mkdev(path, mode, dev) { + if (typeof dev === "undefined") { + dev = mode; + mode = 438; + } + mode |= 8192; + return FS.mknod(path, mode, dev); + }, + symlink: function symlink(oldpath, newpath) { + if (!PATH_FS.resolve(oldpath)) { + throw new FS.ErrnoError(44); + } + var lookup = FS.lookupPath(newpath, { parent: true }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44); + } + var newname = PATH.basename(newpath); + var err = FS.mayCreate(parent, newname); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.symlink) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.symlink(parent, newname, oldpath); + }, + rename: function rename(old_path, new_path) { + var old_dirname = PATH.dirname(old_path); + var new_dirname = PATH.dirname(new_path); + var old_name = PATH.basename(old_path); + var new_name = PATH.basename(new_path); + var lookup, old_dir, new_dir; + try { + lookup = FS.lookupPath(old_path, { parent: true }); + old_dir = lookup.node; + lookup = FS.lookupPath(new_path, { parent: true }); + new_dir = lookup.node; + } catch (e) { + throw new FS.ErrnoError(10); + } + if (!old_dir || !new_dir) throw new FS.ErrnoError(44); + if (old_dir.mount !== new_dir.mount) { + throw new FS.ErrnoError(75); + } + var old_node = FS.lookupNode(old_dir, old_name); + var relative = PATH_FS.relative(old_path, new_dirname); + if (relative.charAt(0) !== ".") { + throw new FS.ErrnoError(28); + } + relative = PATH_FS.relative(new_path, old_dirname); + if (relative.charAt(0) !== ".") { + throw new FS.ErrnoError(55); + } + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) {} + if (old_node === new_node) { + return; + } + var isdir = FS.isDir(old_node.mode); + var err = FS.mayDelete(old_dir, old_name, isdir); + if (err) { + throw new FS.ErrnoError(err); + } + err = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!old_dir.node_ops.rename) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) { + throw new FS.ErrnoError(10); + } + if (new_dir !== old_dir) { + err = FS.nodePermissions(old_dir, "w"); + if (err) { + throw new FS.ErrnoError(err); + } + } + try { + if (FS.trackingDelegate["willMovePath"]) { + FS.trackingDelegate["willMovePath"](old_path, new_path); + } + } catch (e) { + console.log("FS.trackingDelegate['willMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message); + } + FS.hashRemoveNode(old_node); + try { + old_dir.node_ops.rename(old_node, new_dir, new_name); + } catch (e) { + throw e; + } finally { + FS.hashAddNode(old_node); + } + try { + if (FS.trackingDelegate["onMovePath"]) FS.trackingDelegate["onMovePath"](old_path, new_path); + } catch (e) { + console.log("FS.trackingDelegate['onMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message); + } + }, + rmdir: function rmdir(path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, true); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + try { + if (FS.trackingDelegate["willDeletePath"]) { + FS.trackingDelegate["willDeletePath"](path); + } + } catch (e) { + console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path); + } catch (e) { + console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message); + } + }, + readdir: function readdir(path) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(54); + } + return node.node_ops.readdir(node); + }, + unlink: function unlink(path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, false); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + try { + if (FS.trackingDelegate["willDeletePath"]) { + FS.trackingDelegate["willDeletePath"](path); + } + } catch (e) { + console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path); + } catch (e) { + console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message); + } + }, + readlink: function readlink(path) { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(44); + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(28); + } + return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); + }, + stat: function stat(path, dontFollow) { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(44); + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(63); + } + return node.node_ops.getattr(node); + }, + lstat: function lstat(path) { + return FS.stat(path, true); + }, + chmod: function chmod(path, mode, dontFollow) { + var node; + if (typeof path === "string") { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { mode: mode & 4095 | node.mode & ~4095, timestamp: Date.now() }); + }, + lchmod: function lchmod(path, mode) { + FS.chmod(path, mode, true); + }, + fchmod: function fchmod(fd, mode) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chmod(stream.node, mode); + }, + chown: function chown(path, uid, gid, dontFollow) { + var node; + if (typeof path === "string") { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { timestamp: Date.now() }); + }, + lchown: function lchown(path, uid, gid) { + FS.chown(path, uid, gid, true); + }, + fchown: function fchown(fd, uid, gid) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chown(stream.node, uid, gid); + }, + truncate: function truncate(path, len) { + if (len < 0) { + throw new FS.ErrnoError(28); + } + var node; + if (typeof path === "string") { + var lookup = FS.lookupPath(path, { follow: true }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(31); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(28); + } + var err = FS.nodePermissions(node, "w"); + if (err) { + throw new FS.ErrnoError(err); + } + node.node_ops.setattr(node, { size: len, timestamp: Date.now() }); + }, + ftruncate: function ftruncate(fd, len) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(28); + } + FS.truncate(stream.node, len); + }, + utime: function utime(path, atime, mtime) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) }); + }, + open: function open(path, flags, mode, fd_start, fd_end) { + if (path === "") { + throw new FS.ErrnoError(44); + } + flags = typeof flags === "string" ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode === "undefined" ? 438 : mode; + if (flags & 64) { + mode = mode & 4095 | 32768; + } else { + mode = 0; + } + var node; + if ((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === "object") { + node = path; + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, { follow: !(flags & 131072) }); + node = lookup.node; + } catch (e) {} + } + var created = false; + if (flags & 64) { + if (node) { + if (flags & 128) { + throw new FS.ErrnoError(20); + } + } else { + node = FS.mknod(path, mode, 0); + created = true; + } + } + if (!node) { + throw new FS.ErrnoError(44); + } + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + if (flags & 65536 && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + if (!created) { + var err = FS.mayOpen(node, flags); + if (err) { + throw new FS.ErrnoError(err); + } + } + if (flags & 512) { + FS.truncate(node, 0); + } + flags &= ~(128 | 512); + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + ungotten: [], + error: false + }, fd_start, fd_end); + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + if (Module["logReadFiles"] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1; + console.log("FS.trackingDelegate error on read file: " + path); + } + } + try { + if (FS.trackingDelegate["onOpenFile"]) { + var trackingFlags = 0; + if ((flags & 2097155) !== 1) { + trackingFlags |= FS.tracking.openFlags.READ; + } + if ((flags & 2097155) !== 0) { + trackingFlags |= FS.tracking.openFlags.WRITE; + } + FS.trackingDelegate["onOpenFile"](path, trackingFlags); + } + } catch (e) { + console.log("FS.trackingDelegate['onOpenFile']('" + path + "', flags) threw an exception: " + e.message); + } + return stream; + }, + close: function close(stream) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (stream.getdents) stream.getdents = null; + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + stream.fd = null; + }, + isClosed: function isClosed(stream) { + return stream.fd === null; + }, + llseek: function llseek(stream, offset, whence) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(70); + } + if (whence != 0 && whence != 1 && whence != 2) { + throw new FS.ErrnoError(28); + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position; + }, + read: function read(stream, buffer, offset, length, position) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(28); + } + var seeking = typeof position !== "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + }, + write: function write(stream, buffer, offset, length, position, canOwn) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(28); + } + if (stream.flags & 1024) { + FS.llseek(stream, 0, 2); + } + var seeking = typeof position !== "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + try { + if (stream.path && FS.trackingDelegate["onWriteToFile"]) FS.trackingDelegate["onWriteToFile"](stream.path); + } catch (e) { + console.log("FS.trackingDelegate['onWriteToFile']('" + stream.path + "') threw an exception: " + e.message); + } + return bytesWritten; + }, + allocate: function allocate(stream, offset, length) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(28); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(138); + } + stream.stream_ops.allocate(stream, offset, length); + }, + mmap: function mmap(stream, buffer, offset, length, position, prot, flags) { + if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) { + throw new FS.ErrnoError(2); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(2); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(43); + } + return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); + }, + msync: function msync(stream, buffer, offset, length, mmapFlags) { + if (!stream || !stream.stream_ops.msync) { + return 0; + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); + }, + munmap: function munmap(stream) { + return 0; + }, + ioctl: function ioctl(stream, cmd, arg) { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(59); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + }, + readFile: function readFile(path, opts) { + opts = opts || {}; + opts.flags = opts.flags || "r"; + opts.encoding = opts.encoding || "binary"; + if (opts.encoding !== "utf8" && opts.encoding !== "binary") { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === "utf8") { + ret = UTF8ArrayToString(buf, 0); + } else if (opts.encoding === "binary") { + ret = buf; + } + FS.close(stream); + return ret; + }, + writeFile: function writeFile(path, data, opts) { + opts = opts || {}; + opts.flags = opts.flags || "w"; + var stream = FS.open(path, opts.flags, opts.mode); + if (typeof data === "string") { + var buf = new Uint8Array(lengthBytesUTF8(data) + 1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); + } else if (ArrayBuffer.isView(data)) { + FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); + } else { + throw new Error("Unsupported data type"); + } + FS.close(stream); + }, + cwd: function cwd() { + return FS.currentPath; + }, + chdir: function chdir(path) { + var lookup = FS.lookupPath(path, { follow: true }); + if (lookup.node === null) { + throw new FS.ErrnoError(44); + } + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(54); + } + var err = FS.nodePermissions(lookup.node, "x"); + if (err) { + throw new FS.ErrnoError(err); + } + FS.currentPath = lookup.path; + }, + createDefaultDirectories: function createDefaultDirectories() { + FS.mkdir("/tmp"); + FS.mkdir("/home"); + FS.mkdir("/home/web_user"); + }, + createDefaultDevices: function createDefaultDevices() { + FS.mkdir("/dev"); + FS.registerDevice(FS.makedev(1, 3), { + read: function read() { + return 0; + }, write: function write(stream, buffer, offset, length, pos) { + return length; + } + }); + FS.mkdev("/dev/null", FS.makedev(1, 3)); + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev("/dev/tty", FS.makedev(5, 0)); + FS.mkdev("/dev/tty1", FS.makedev(6, 0)); + var random_device; + if ((typeof crypto === 'undefined' ? 'undefined' : _typeof(crypto)) === "object" && typeof crypto["getRandomValues"] === "function") { + var randomBuffer = new Uint8Array(1); + random_device = function random_device() { + crypto.getRandomValues(randomBuffer); + return randomBuffer[0]; + }; + } else if (ENVIRONMENT_IS_NODE) { + try { + var crypto_module = __webpack_require__("ZpE2"); + random_device = function random_device() { + return crypto_module["randomBytes"](1)[0]; + }; + } catch (e) {} + } else {} + if (!random_device) { + random_device = function random_device() { + abort("no cryptographic support found for random_device. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };"); + }; + } + FS.createDevice("/dev", "random", random_device); + FS.createDevice("/dev", "urandom", random_device); + FS.mkdir("/dev/shm"); + FS.mkdir("/dev/shm/tmp"); + }, + createSpecialDirectories: function createSpecialDirectories() { + FS.mkdir("/proc"); + FS.mkdir("/proc/self"); + FS.mkdir("/proc/self/fd"); + FS.mount({ + mount: function mount() { + var node = FS.createNode("/proc/self", "fd", 16384 | 511, 73); + node.node_ops = { + lookup: function lookup(parent, name) { + var fd = +name; + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + var ret = { + parent: null, mount: { mountpoint: "fake" }, node_ops: { + readlink: function readlink() { + return stream.path; + } + } + }; + ret.parent = ret; + return ret; + } + }; + return node; + } + }, {}, "/proc/self/fd"); + }, + createStandardStreams: function createStandardStreams() { + if (Module["stdin"]) { + FS.createDevice("/dev", "stdin", Module["stdin"]); + } else { + FS.symlink("/dev/tty", "/dev/stdin"); + } + if (Module["stdout"]) { + FS.createDevice("/dev", "stdout", null, Module["stdout"]); + } else { + FS.symlink("/dev/tty", "/dev/stdout"); + } + if (Module["stderr"]) { + FS.createDevice("/dev", "stderr", null, Module["stderr"]); + } else { + FS.symlink("/dev/tty1", "/dev/stderr"); + } + var stdin = FS.open("/dev/stdin", "r"); + var stdout = FS.open("/dev/stdout", "w"); + var stderr = FS.open("/dev/stderr", "w"); + assert(stdin.fd === 0, "invalid handle for stdin (" + stdin.fd + ")"); + assert(stdout.fd === 1, "invalid handle for stdout (" + stdout.fd + ")"); + assert(stderr.fd === 2, "invalid handle for stderr (" + stderr.fd + ")"); + }, + ensureErrnoError: function ensureErrnoError() { + if (FS.ErrnoError) return; + FS.ErrnoError = function ErrnoError(errno, node) { + this.node = node; + this.setErrno = function (errno) { + this.errno = errno; + for (var key in ERRNO_CODES) { + if (ERRNO_CODES[key] === errno) { + this.code = key; + break; + } + } + }; + this.setErrno(errno); + this.message = ERRNO_MESSAGES[errno]; + if (this.stack) { + Object.defineProperty(this, "stack", { value: new Error().stack, writable: true }); + this.stack = demangleAll(this.stack); + } + }; + FS.ErrnoError.prototype = new Error(); + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + [44].forEach(function (code) { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = "<generic error, no stack>"; + }); + }, + staticInit: function staticInit() { + FS.ensureErrnoError(); + FS.nameTable = new Array(4096); + FS.mount(MEMFS, {}, "/"); + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + FS.filesystems = { "MEMFS": MEMFS }; + }, + init: function init(input, output, error) { + assert(!FS.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"); + FS.init.initialized = true; + FS.ensureErrnoError(); + Module["stdin"] = input || Module["stdin"]; + Module["stdout"] = output || Module["stdout"]; + Module["stderr"] = error || Module["stderr"]; + FS.createStandardStreams(); + }, + quit: function quit() { + FS.init.initialized = false; + var fflush = Module["_fflush"]; + if (fflush) fflush(0); + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + }, + getMode: function getMode(canRead, canWrite) { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + }, + joinPath: function joinPath(parts, forceRelative) { + var path = PATH.join.apply(null, parts); + if (forceRelative && path[0] == "/") path = path.substr(1); + return path; + }, + absolutePath: function absolutePath(relative, base) { + return PATH_FS.resolve(base, relative); + }, + standardizePath: function standardizePath(path) { + return PATH.normalize(path); + }, + findObject: function findObject(path, dontResolveLastLink) { + var ret = FS.analyzePath(path, dontResolveLastLink); + if (ret.exists) { + return ret.object; + } else { + ___setErrNo(ret.error); + return null; + } + }, + analyzePath: function analyzePath(path, dontResolveLastLink) { + try { + var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + path = lookup.path; + } catch (e) {} + var ret = { + isRoot: false, + exists: false, + error: 0, + name: null, + path: null, + object: null, + parentExists: false, + parentPath: null, + parentObject: null + }; + try { + var lookup = FS.lookupPath(path, { parent: true }); + ret.parentExists = true; + ret.parentPath = lookup.path; + ret.parentObject = lookup.node; + ret.name = PATH.basename(path); + lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + ret.exists = true; + ret.path = lookup.path; + ret.object = lookup.node; + ret.name = lookup.node.name; + ret.isRoot = lookup.path === "/"; + } catch (e) { + ret.error = e.errno; + } + return ret; + }, + createFolder: function createFolder(parent, name, canRead, canWrite) { + var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.mkdir(path, mode); + }, + createPath: function createPath(parent, path, canRead, canWrite) { + parent = typeof parent === "string" ? parent : FS.getPath(parent); + var parts = path.split("/").reverse(); + while (parts.length) { + var part = parts.pop(); + if (!part) continue; + var current = PATH.join2(parent, part); + try { + FS.mkdir(current); + } catch (e) {} + parent = current; + } + return current; + }, + createFile: function createFile(parent, name, properties, canRead, canWrite) { + var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + }, + createDataFile: function createDataFile(parent, name, data, canRead, canWrite, canOwn) { + var path = name ? PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name) : parent; + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data === "string") { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) { + arr[i] = data.charCodeAt(i); + }data = arr; + } + FS.chmod(node, mode | 146); + var stream = FS.open(node, "w"); + FS.write(stream, data, 0, data.length, 0, canOwn); + FS.close(stream); + FS.chmod(node, mode); + } + return node; + }, + createDevice: function createDevice(parent, name, input, output) { + var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + FS.registerDevice(dev, { + open: function open(stream) { + stream.seekable = false; + }, close: function close(stream) { + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, read: function read(stream, buffer, offset, length, pos) { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, write: function write(stream, buffer, offset, length, pos) { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset + i]); + } catch (e) { + throw new FS.ErrnoError(29); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }); + return FS.mkdev(path, mode, dev); + }, + createLink: function createLink(parent, name, target, canRead, canWrite) { + var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); + return FS.symlink(target, path); + }, + forceLoadFile: function forceLoadFile(obj) { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + var success = true; + if (typeof XMLHttpRequest !== "undefined") { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); + } else if (read_) { + try { + obj.contents = intArrayFromString(read_(obj.url), true); + obj.usedBytes = obj.contents.length; + } catch (e) { + success = false; + } + } else { + throw new Error("Cannot load without read() or XMLHttpRequest."); + } + if (!success) ___setErrNo(29); + return success; + }, + createLazyFile: function createLazyFile(parent, name, url, canRead, canWrite) { + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; + } + + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { + if (idx > this.length - 1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = idx / this.chunkSize | 0; + return this.getter(chunkNum)[chunkOffset]; + }; + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + }; + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + var xhr = new XMLHttpRequest(); + xhr.open("HEAD", url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; + var chunkSize = 1024 * 1024; + if (!hasByteServing) chunkSize = datalength; + var doXHR = function doXHR(from, to) { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!"); + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + if (typeof Uint8Array != "undefined") xhr.responseType = "arraybuffer"; + if (xhr.overrideMimeType) { + xhr.overrideMimeType("text/plain; charset=x-user-defined"); + } + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(xhr.response || []); + } else { + return intArrayFromString(xhr.responseText || "", true); + } + }; + var lazyArray = this; + lazyArray.setDataGetter(function (chunkNum) { + var start = chunkNum * chunkSize; + var end = (chunkNum + 1) * chunkSize - 1; + end = Math.min(end, datalength - 1); + if (typeof lazyArray.chunks[chunkNum] === "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end); + } + if (typeof lazyArray.chunks[chunkNum] === "undefined") throw new Error("doXHR failed!"); + return lazyArray.chunks[chunkNum]; + }); + if (usesGzip || !datalength) { + chunkSize = datalength = 1; + datalength = this.getter(0).length; + chunkSize = datalength; + console.log("LazyFiles on gzip forces download of the whole file when length is accessed"); + } + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + }; + if (typeof XMLHttpRequest !== "undefined") { + if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; + var lazyArray = new LazyUint8Array(); + Object.defineProperties(lazyArray, { + length: { + get: function get() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + } + }, chunkSize: { + get: function get() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + } + } + }); + var properties = { isDevice: false, contents: lazyArray }; + } else { + var properties = { isDevice: false, url: url }; + } + var node = FS.createFile(parent, name, properties, canRead, canWrite); + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + Object.defineProperties(node, { + usedBytes: { + get: function get() { + return this.contents.length; + } + } + }); + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(function (key) { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(29); + } + return fn.apply(null, arguments); + }; + }); + stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(29); + } + var contents = stream.node.contents; + if (position >= contents.length) return 0; + var size = Math.min(contents.length - position, length); + assert(size >= 0); + if (contents.slice) { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents.get(position + i); + } + } + return size; + }; + node.stream_ops = stream_ops; + return node; + }, + createPreloadedFile: function createPreloadedFile(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { + Browser.init(); + var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency("cp " + fullname); + + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency(dep); + } + + var handled = false; + Module["preloadPlugins"].forEach(function (plugin) { + if (handled) return; + if (plugin["canHandle"](fullname)) { + plugin["handle"](byteArray, fullname, finish, function () { + if (onerror) onerror(); + removeRunDependency(dep); + }); + handled = true; + } + }); + if (!handled) finish(byteArray); + } + + addRunDependency(dep); + if (typeof url == "string") { + Browser.asyncLoad(url, function (byteArray) { + processData(byteArray); + }, onerror); + } else { + processData(url); + } + }, + indexedDB: function indexedDB() { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + }, + DB_NAME: function DB_NAME() { + return "EM_FS_" + window.location.pathname; + }, + DB_VERSION: 20, + DB_STORE_NAME: "FILE_DATA", + saveFilesToDB: function saveFilesToDB(paths, onload, onerror) { + onload = onload || function () {}; + onerror = onerror || function () {}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { + console.log("creating db"); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + var transaction = db.transaction([FS.DB_STORE_NAME], "readwrite"); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, + fail = 0, + total = paths.length; + + function finish() { + if (fail == 0) onload();else onerror(); + } + + paths.forEach(function (path) { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = function putRequest_onsuccess() { + ok++; + if (ok + fail == total) finish(); + }; + putRequest.onerror = function putRequest_onerror() { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }, + loadFilesFromDB: function loadFilesFromDB(paths, onload, onerror) { + onload = onload || function () {}; + onerror = onerror || function () {}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + try { + var transaction = db.transaction([FS.DB_STORE_NAME], "readonly"); + } catch (e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, + fail = 0, + total = paths.length; + + function finish() { + if (fail == 0) onload();else onerror(); + } + + paths.forEach(function (path) { + var getRequest = files.get(path); + getRequest.onsuccess = function getRequest_onsuccess() { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = function getRequest_onerror() { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + } + }; + var SYSCALLS = { + DEFAULT_POLLMASK: 5, mappings: {}, umask: 511, calculateAt: function calculateAt(dirfd, path) { + if (path[0] !== "/") { + var dir; + if (dirfd === -100) { + dir = FS.cwd(); + } else { + var dirstream = FS.getStream(dirfd); + if (!dirstream) throw new FS.ErrnoError(8); + dir = dirstream.path; + } + path = PATH.join2(dir, path); + } + return path; + }, doStat: function doStat(func, path, buf) { + try { + var stat = func(path); + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { + return -54; + } + throw e; + } + HEAP32[buf >> 2] = stat.dev; + HEAP32[buf + 4 >> 2] = 0; + HEAP32[buf + 8 >> 2] = stat.ino; + HEAP32[buf + 12 >> 2] = stat.mode; + HEAP32[buf + 16 >> 2] = stat.nlink; + HEAP32[buf + 20 >> 2] = stat.uid; + HEAP32[buf + 24 >> 2] = stat.gid; + HEAP32[buf + 28 >> 2] = stat.rdev; + HEAP32[buf + 32 >> 2] = 0; + tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1]; + HEAP32[buf + 48 >> 2] = 4096; + HEAP32[buf + 52 >> 2] = stat.blocks; + HEAP32[buf + 56 >> 2] = stat.atime.getTime() / 1e3 | 0; + HEAP32[buf + 60 >> 2] = 0; + HEAP32[buf + 64 >> 2] = stat.mtime.getTime() / 1e3 | 0; + HEAP32[buf + 68 >> 2] = 0; + HEAP32[buf + 72 >> 2] = stat.ctime.getTime() / 1e3 | 0; + HEAP32[buf + 76 >> 2] = 0; + tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 80 >> 2] = tempI64[0], HEAP32[buf + 84 >> 2] = tempI64[1]; + return 0; + }, doMsync: function doMsync(addr, stream, len, flags) { + var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len)); + FS.msync(stream, buffer, 0, len, flags); + }, doMkdir: function doMkdir(path, mode) { + path = PATH.normalize(path); + if (path[path.length - 1] === "/") path = path.substr(0, path.length - 1); + FS.mkdir(path, mode, 0); + return 0; + }, doMknod: function doMknod(path, mode, dev) { + switch (mode & 61440) { + case 32768: + case 8192: + case 24576: + case 4096: + case 49152: + break; + default: + return -28; + } + FS.mknod(path, mode, dev); + return 0; + }, doReadlink: function doReadlink(path, buf, bufsize) { + if (bufsize <= 0) return -28; + var ret = FS.readlink(path); + var len = Math.min(bufsize, lengthBytesUTF8(ret)); + var endChar = HEAP8[buf + len]; + stringToUTF8(ret, buf, bufsize + 1); + HEAP8[buf + len] = endChar; + return len; + }, doAccess: function doAccess(path, amode) { + if (amode & ~7) { + return -28; + } + var node; + var lookup = FS.lookupPath(path, { follow: true }); + node = lookup.node; + if (!node) { + return -44; + } + var perms = ""; + if (amode & 4) perms += "r"; + if (amode & 2) perms += "w"; + if (amode & 1) perms += "x"; + if (perms && FS.nodePermissions(node, perms)) { + return -2; + } + return 0; + }, doDup: function doDup(path, flags, suggestFD) { + var suggest = FS.getStream(suggestFD); + if (suggest) FS.close(suggest); + return FS.open(path, flags, 0, suggestFD, suggestFD).fd; + }, doReadv: function doReadv(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[iov + i * 8 >> 2]; + var len = HEAP32[iov + (i * 8 + 4) >> 2]; + var curr = FS.read(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + if (curr < len) break; + } + return ret; + }, doWritev: function doWritev(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[iov + i * 8 >> 2]; + var len = HEAP32[iov + (i * 8 + 4) >> 2]; + var curr = FS.write(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + } + return ret; + }, varargs: 0, get: function get(varargs) { + SYSCALLS.varargs += 4; + var ret = HEAP32[SYSCALLS.varargs - 4 >> 2]; + return ret; + }, getStr: function getStr() { + var ret = UTF8ToString(SYSCALLS.get()); + return ret; + }, getStreamFromFD: function getStreamFromFD(fd) { + if (fd === undefined) fd = SYSCALLS.get(); + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + return stream; + }, get64: function get64() { + var low = SYSCALLS.get(), + high = SYSCALLS.get(); + if (low >= 0) assert(high === 0);else assert(high === -1); + return low; + }, getZero: function getZero() { + assert(SYSCALLS.get() === 0); + } + }; + + function ___syscall221(which, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(), + cmd = SYSCALLS.get(); + switch (cmd) { + case 0: + { + var arg = SYSCALLS.get(); + if (arg < 0) { + return -28; + } + var newStream; + newStream = FS.open(stream.path, stream.flags, 0, arg); + return newStream.fd; + } + case 1: + case 2: + return 0; + case 3: + return stream.flags; + case 4: + { + var arg = SYSCALLS.get(); + stream.flags |= arg; + return 0; + } + case 12: + { + var arg = SYSCALLS.get(); + var offset = 0; + HEAP16[arg + offset >> 1] = 2; + return 0; + } + case 13: + case 14: + return 0; + case 16: + case 8: + return -28; + case 9: + ___setErrNo(28); + return -1; + default: + { + return -28; + } + } + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall3(which, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(), + buf = SYSCALLS.get(), + count = SYSCALLS.get(); + return FS.read(stream, HEAP8, buf, count); + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall5(which, varargs) { + SYSCALLS.varargs = varargs; + try { + var pathname = SYSCALLS.getStr(), + flags = SYSCALLS.get(), + mode = SYSCALLS.get(); + var stream = FS.open(pathname, flags, mode); + return stream.fd; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___unlock() {} + + function _abort() { + abort(); + } + + function _clock() { + if (_clock.start === undefined) _clock.start = Date.now(); + return (Date.now() - _clock.start) * (1e6 / 1e3) | 0; + } + + function _emscripten_get_heap_size() { + return HEAP8.length; + } + + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.set(HEAPU8.subarray(src, src + num), dest); + } + + function emscripten_realloc_buffer(size) { + try { + wasmMemory.grow(size - buffer.byteLength + 65535 >> 16); + updateGlobalBufferAndViews(wasmMemory.buffer); + return 1; + } catch (e) { + console.error("emscripten_realloc_buffer: Attempted to grow heap from " + buffer.byteLength + " bytes to " + size + " bytes, but got error: " + e); + } + } + + function _emscripten_resize_heap(requestedSize) { + var oldSize = _emscripten_get_heap_size(); + assert(requestedSize > oldSize); + var PAGE_MULTIPLE = 65536; + var LIMIT = 2147483648 - PAGE_MULTIPLE; + if (requestedSize > LIMIT) { + err("Cannot enlarge memory, asked to go up to " + requestedSize + " bytes, but the limit is " + LIMIT + " bytes!"); + return false; + } + var MIN_TOTAL_MEMORY = 16777216; + var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY); + while (newSize < requestedSize) { + if (newSize <= 536870912) { + newSize = alignUp(2 * newSize, PAGE_MULTIPLE); + } else { + newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT); + } + if (newSize === oldSize) { + warnOnce("Cannot ask for more memory since we reached the practical limit in browsers (which is just below 2GB), so the request would have failed. Requesting only " + HEAP8.length); + } + } + var replacement = emscripten_realloc_buffer(newSize); + if (!replacement) { + err("Failed to grow the heap from " + oldSize + " bytes to " + newSize + " bytes, not enough memory!"); + return false; + } + return true; + } + + var ENV = {}; + + function _emscripten_get_environ() { + if (!_emscripten_get_environ.strings) { + var env = { + "USER": "web_user", + "LOGNAME": "web_user", + "PATH": "/", + "PWD": "/", + "HOME": "/home/web_user", + "LANG": ((typeof navigator === 'undefined' ? 'undefined' : _typeof(navigator)) === "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", + "_": thisProgram + }; + for (var x in ENV) { + env[x] = ENV[x]; + } + var strings = []; + for (var x in env) { + strings.push(x + "=" + env[x]); + } + _emscripten_get_environ.strings = strings; + } + return _emscripten_get_environ.strings; + } + + function _environ_get(__environ, environ_buf) { + var strings = _emscripten_get_environ(); + var bufSize = 0; + strings.forEach(function (string, i) { + var ptr = environ_buf + bufSize; + HEAP32[__environ + i * 4 >> 2] = ptr; + writeAsciiToMemory(string, ptr); + bufSize += string.length + 1; + }); + return 0; + } + + function _environ_sizes_get(penviron_count, penviron_buf_size) { + var strings = _emscripten_get_environ(); + HEAP32[penviron_count >> 2] = strings.length; + var bufSize = 0; + strings.forEach(function (string) { + bufSize += string.length + 1; + }); + HEAP32[penviron_buf_size >> 2] = bufSize; + return 0; + } + + function _fd_close(fd) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + FS.close(stream); + return 0; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + } + + function _fd_fdstat_get(fd, pbuf) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4; + HEAP8[pbuf >> 0] = type; + return 0; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + } + + function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var HIGH_OFFSET = 4294967296; + var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0); + var DOUBLE_LIMIT = 9007199254740992; + if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) { + return -61; + } + FS.llseek(stream, offset, whence); + tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1]; + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; + return 0; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + } + + function _fd_write(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = SYSCALLS.doWritev(stream, iov, iovcnt); + HEAP32[pnum >> 2] = num; + return 0; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + } + + function _gettimeofday(ptr) { + var now = Date.now(); + HEAP32[ptr >> 2] = now / 1e3 | 0; + HEAP32[ptr + 4 >> 2] = now % 1e3 * 1e3 | 0; + return 0; + } + + var ___tm_timezone = (stringToUTF8("GMT", 1341232, 4), 1341232); + + function _round(d) { + d = +d; + return d >= +0 ? +Math_floor(d + +.5) : +Math_ceil(d - +.5); + } + + function _setTempRet0($i) { + setTempRet0($i | 0); + } + + function _time(ptr) { + var ret = Date.now() / 1e3 | 0; + if (ptr) { + HEAP32[ptr >> 2] = ret; + } + return ret; + } + + FS.staticInit(); + + function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; + } + + var asmLibraryArg = { + "__cxa_allocate_exception": ___cxa_allocate_exception, + "__cxa_throw": ___cxa_throw, + "__lock": ___lock, + "__syscall221": ___syscall221, + "__syscall3": ___syscall3, + "__syscall5": ___syscall5, + "__unlock": ___unlock, + "abort": _abort, + "clock": _clock, + "emscripten_memcpy_big": _emscripten_memcpy_big, + "emscripten_resize_heap": _emscripten_resize_heap, + "environ_get": _environ_get, + "environ_sizes_get": _environ_sizes_get, + "fd_close": _fd_close, + "fd_fdstat_get": _fd_fdstat_get, + "fd_seek": _fd_seek, + "fd_write": _fd_write, + "gettimeofday": _gettimeofday, + "memory": wasmMemory, + "round": _round, + "setTempRet0": _setTempRet0, + "table": wasmTable, + "time": _time + }; + var asm = createWasm(); + var real____wasm_call_ctors = asm["__wasm_call_ctors"]; + asm["__wasm_call_ctors"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real____wasm_call_ctors.apply(null, arguments); + }; + var real__WasmDecoder_Check = asm["WasmDecoder_Check"]; + asm["WasmDecoder_Check"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_Check.apply(null, arguments); + }; + var real__WasmDecoder_Init = asm["WasmDecoder_Init"]; + asm["WasmDecoder_Init"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_Init.apply(null, arguments); + }; + var real__WasmDecoder_Deinit = asm["WasmDecoder_Deinit"]; + asm["WasmDecoder_Deinit"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_Deinit.apply(null, arguments); + }; + var real__WasmDecoder_OpenChannel = asm["WasmDecoder_OpenChannel"]; + asm["WasmDecoder_OpenChannel"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_OpenChannel.apply(null, arguments); + }; + var real__WasmDecoder_InputFlvStream = asm["WasmDecoder_InputFlvStream"]; + asm["WasmDecoder_InputFlvStream"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_InputFlvStream.apply(null, arguments); + }; + var real__WasmDecoder_GetFlvDecodeData = asm["WasmDecoder_GetFlvDecodeData"]; + asm["WasmDecoder_GetFlvDecodeData"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_GetFlvDecodeData.apply(null, arguments); + }; + var real__WasmDecoder_InputFlvStreamAndDecode = asm["WasmDecoder_InputFlvStreamAndDecode"]; + asm["WasmDecoder_InputFlvStreamAndDecode"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_InputFlvStreamAndDecode.apply(null, arguments); + }; + var real__WasmDecoder_OpenVideoDecoder = asm["WasmDecoder_OpenVideoDecoder"]; + asm["WasmDecoder_OpenVideoDecoder"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_OpenVideoDecoder.apply(null, arguments); + }; + var real__WasmDecoder_OpenAudioDecoder = asm["WasmDecoder_OpenAudioDecoder"]; + asm["WasmDecoder_OpenAudioDecoder"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_OpenAudioDecoder.apply(null, arguments); + }; + var real__WasmDecoder_DecodeVideoFrame = asm["WasmDecoder_DecodeVideoFrame"]; + asm["WasmDecoder_DecodeVideoFrame"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_DecodeVideoFrame.apply(null, arguments); + }; + var real__WasmDecoder_DecodeAudioFrame = asm["WasmDecoder_DecodeAudioFrame"]; + asm["WasmDecoder_DecodeAudioFrame"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_DecodeAudioFrame.apply(null, arguments); + }; + var real__WasmDecoder_CloseChannel = asm["WasmDecoder_CloseChannel"]; + asm["WasmDecoder_CloseChannel"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_CloseChannel.apply(null, arguments); + }; + var real__WasmDecoder_ConvertFrame2Image = asm["WasmDecoder_ConvertFrame2Image"]; + asm["WasmDecoder_ConvertFrame2Image"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_ConvertFrame2Image.apply(null, arguments); + }; + var real__WasmDecoder_ReleaseImageData = asm["WasmDecoder_ReleaseImageData"]; + asm["WasmDecoder_ReleaseImageData"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_ReleaseImageData.apply(null, arguments); + }; + var real__WasmDecoder_CreateMP4File = asm["WasmDecoder_CreateMP4File"]; + asm["WasmDecoder_CreateMP4File"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_CreateMP4File.apply(null, arguments); + }; + var real__WasmDecoder_WriteData = asm["WasmDecoder_WriteData"]; + asm["WasmDecoder_WriteData"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_WriteData.apply(null, arguments); + }; + var real__WasmDecoder_ReleaseMP4File = asm["WasmDecoder_ReleaseMP4File"]; + asm["WasmDecoder_ReleaseMP4File"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__WasmDecoder_ReleaseMP4File.apply(null, arguments); + }; + var real__main = asm["main"]; + asm["main"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__main.apply(null, arguments); + }; + var real__free = asm["free"]; + asm["free"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__free.apply(null, arguments); + }; + var real__malloc = asm["malloc"]; + asm["malloc"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__malloc.apply(null, arguments); + }; + var real____errno_location = asm["__errno_location"]; + asm["__errno_location"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real____errno_location.apply(null, arguments); + }; + var real__fflush = asm["fflush"]; + asm["fflush"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__fflush.apply(null, arguments); + }; + var real___get_tzname = asm["_get_tzname"]; + asm["_get_tzname"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real___get_tzname.apply(null, arguments); + }; + var real___get_daylight = asm["_get_daylight"]; + asm["_get_daylight"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real___get_daylight.apply(null, arguments); + }; + var real___get_timezone = asm["_get_timezone"]; + asm["_get_timezone"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real___get_timezone.apply(null, arguments); + }; + var real__setThrew = asm["setThrew"]; + asm["setThrew"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real__setThrew.apply(null, arguments); + }; + var real___ZSt18uncaught_exceptionv = asm["_ZSt18uncaught_exceptionv"]; + asm["_ZSt18uncaught_exceptionv"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real___ZSt18uncaught_exceptionv.apply(null, arguments); + }; + var real_stackSave = asm["stackSave"]; + asm["stackSave"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_stackSave.apply(null, arguments); + }; + var real_stackAlloc = asm["stackAlloc"]; + asm["stackAlloc"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_stackAlloc.apply(null, arguments); + }; + var real_stackRestore = asm["stackRestore"]; + asm["stackRestore"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_stackRestore.apply(null, arguments); + }; + var real___growWasmMemory = asm["__growWasmMemory"]; + asm["__growWasmMemory"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real___growWasmMemory.apply(null, arguments); + }; + var real_dynCall_ii = asm["dynCall_ii"]; + asm["dynCall_ii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_ii.apply(null, arguments); + }; + var real_dynCall_viiiii = asm["dynCall_viiiii"]; + asm["dynCall_viiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiii.apply(null, arguments); + }; + var real_dynCall_viiiiiifi = asm["dynCall_viiiiiifi"]; + asm["dynCall_viiiiiifi"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiiiifi.apply(null, arguments); + }; + var real_dynCall_viiii = asm["dynCall_viiii"]; + asm["dynCall_viiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiii.apply(null, arguments); + }; + var real_dynCall_viii = asm["dynCall_viii"]; + asm["dynCall_viii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viii.apply(null, arguments); + }; + var real_dynCall_iiiiiii = asm["dynCall_iiiiiii"]; + asm["dynCall_iiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiiiii.apply(null, arguments); + }; + var real_dynCall_iiiiii = asm["dynCall_iiiiii"]; + asm["dynCall_iiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiiii.apply(null, arguments); + }; + var real_dynCall_vii = asm["dynCall_vii"]; + asm["dynCall_vii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_vii.apply(null, arguments); + }; + var real_dynCall_iii = asm["dynCall_iii"]; + asm["dynCall_iii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iii.apply(null, arguments); + }; + var real_dynCall_iiii = asm["dynCall_iiii"]; + asm["dynCall_iiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiii.apply(null, arguments); + }; + var real_dynCall_viiiiii = asm["dynCall_viiiiii"]; + asm["dynCall_viiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiiii.apply(null, arguments); + }; + var real_dynCall_viiiiiiiii = asm["dynCall_viiiiiiiii"]; + asm["dynCall_viiiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiiiiiii.apply(null, arguments); + }; + var real_dynCall_viiiiiiii = asm["dynCall_viiiiiiii"]; + asm["dynCall_viiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiiiiii.apply(null, arguments); + }; + var real_dynCall_iiiii = asm["dynCall_iiiii"]; + asm["dynCall_iiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiii.apply(null, arguments); + }; + var real_dynCall_viiiiiiiiiiiiii = asm["dynCall_viiiiiiiiiiiiii"]; + asm["dynCall_viiiiiiiiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiiiiiiiiiiii.apply(null, arguments); + }; + var real_dynCall_viiiiiiiiiii = asm["dynCall_viiiiiiiiiii"]; + asm["dynCall_viiiiiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiiiiiiiii.apply(null, arguments); + }; + var real_dynCall_viiiiiii = asm["dynCall_viiiiiii"]; + asm["dynCall_viiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiiiii.apply(null, arguments); + }; + var real_dynCall_viiiiiiiiiiii = asm["dynCall_viiiiiiiiiiii"]; + asm["dynCall_viiiiiiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiiiiiiiiii.apply(null, arguments); + }; + var real_dynCall_vi = asm["dynCall_vi"]; + asm["dynCall_vi"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_vi.apply(null, arguments); + }; + var real_dynCall_iiiiiiiii = asm["dynCall_iiiiiiiii"]; + asm["dynCall_iiiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiiiiiii.apply(null, arguments); + }; + var real_dynCall_viiiifii = asm["dynCall_viiiifii"]; + asm["dynCall_viiiifii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiifii.apply(null, arguments); + }; + var real_dynCall_fii = asm["dynCall_fii"]; + asm["dynCall_fii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_fii.apply(null, arguments); + }; + var real_dynCall_viiiiiiiiii = asm["dynCall_viiiiiiiiii"]; + asm["dynCall_viiiiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiiiiiiiii.apply(null, arguments); + }; + var real_dynCall_dd = asm["dynCall_dd"]; + asm["dynCall_dd"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_dd.apply(null, arguments); + }; + var real_dynCall_viifi = asm["dynCall_viifi"]; + asm["dynCall_viifi"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viifi.apply(null, arguments); + }; + var real_dynCall_fiii = asm["dynCall_fiii"]; + asm["dynCall_fiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_fiii.apply(null, arguments); + }; + var real_dynCall_viidi = asm["dynCall_viidi"]; + asm["dynCall_viidi"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viidi.apply(null, arguments); + }; + var real_dynCall_iiiiiiii = asm["dynCall_iiiiiiii"]; + asm["dynCall_iiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiiiiii.apply(null, arguments); + }; + var real_dynCall_did = asm["dynCall_did"]; + asm["dynCall_did"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_did.apply(null, arguments); + }; + var real_dynCall_v = asm["dynCall_v"]; + asm["dynCall_v"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_v.apply(null, arguments); + }; + var real_dynCall_viiijj = asm["dynCall_viiijj"]; + asm["dynCall_viiijj"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_viiijj.apply(null, arguments); + }; + var real_dynCall_iiiiiiidiiddii = asm["dynCall_iiiiiiidiiddii"]; + asm["dynCall_iiiiiiidiiddii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iiiiiiidiiddii.apply(null, arguments); + }; + var real_dynCall_jij = asm["dynCall_jij"]; + asm["dynCall_jij"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_jij.apply(null, arguments); + }; + var real_dynCall_jii = asm["dynCall_jii"]; + asm["dynCall_jii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_jii.apply(null, arguments); + }; + var real_dynCall_jiji = asm["dynCall_jiji"]; + asm["dynCall_jiji"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_jiji.apply(null, arguments); + }; + var real_dynCall_iidiiii = asm["dynCall_iidiiii"]; + asm["dynCall_iidiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return real_dynCall_iidiiii.apply(null, arguments); + }; + Module["asm"] = asm; + var ___wasm_call_ctors = Module["___wasm_call_ctors"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["__wasm_call_ctors"].apply(null, arguments); + }; + var _WasmDecoder_Check = Module["_WasmDecoder_Check"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_Check"].apply(null, arguments); + }; + var _WasmDecoder_Init = Module["_WasmDecoder_Init"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_Init"].apply(null, arguments); + }; + var _WasmDecoder_Deinit = Module["_WasmDecoder_Deinit"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_Deinit"].apply(null, arguments); + }; + var _WasmDecoder_OpenChannel = Module["_WasmDecoder_OpenChannel"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_OpenChannel"].apply(null, arguments); + }; + var _WasmDecoder_InputFlvStream = Module["_WasmDecoder_InputFlvStream"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_InputFlvStream"].apply(null, arguments); + }; + var _WasmDecoder_GetFlvDecodeData = Module["_WasmDecoder_GetFlvDecodeData"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_GetFlvDecodeData"].apply(null, arguments); + }; + var _WasmDecoder_InputFlvStreamAndDecode = Module["_WasmDecoder_InputFlvStreamAndDecode"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_InputFlvStreamAndDecode"].apply(null, arguments); + }; + var _WasmDecoder_OpenVideoDecoder = Module["_WasmDecoder_OpenVideoDecoder"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_OpenVideoDecoder"].apply(null, arguments); + }; + var _WasmDecoder_OpenAudioDecoder = Module["_WasmDecoder_OpenAudioDecoder"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_OpenAudioDecoder"].apply(null, arguments); + }; + var _WasmDecoder_DecodeVideoFrame = Module["_WasmDecoder_DecodeVideoFrame"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_DecodeVideoFrame"].apply(null, arguments); + }; + var _WasmDecoder_DecodeAudioFrame = Module["_WasmDecoder_DecodeAudioFrame"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_DecodeAudioFrame"].apply(null, arguments); + }; + var _WasmDecoder_CloseChannel = Module["_WasmDecoder_CloseChannel"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_CloseChannel"].apply(null, arguments); + }; + var _WasmDecoder_ConvertFrame2Image = Module["_WasmDecoder_ConvertFrame2Image"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_ConvertFrame2Image"].apply(null, arguments); + }; + var _WasmDecoder_ReleaseImageData = Module["_WasmDecoder_ReleaseImageData"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_ReleaseImageData"].apply(null, arguments); + }; + var _WasmDecoder_CreateMP4File = Module["_WasmDecoder_CreateMP4File"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_CreateMP4File"].apply(null, arguments); + }; + var _WasmDecoder_WriteData = Module["_WasmDecoder_WriteData"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_WriteData"].apply(null, arguments); + }; + var _WasmDecoder_ReleaseMP4File = Module["_WasmDecoder_ReleaseMP4File"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["WasmDecoder_ReleaseMP4File"].apply(null, arguments); + }; + var _main = Module["_main"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["main"].apply(null, arguments); + }; + var _free = Module["_free"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["free"].apply(null, arguments); + }; + var _malloc = Module["_malloc"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["malloc"].apply(null, arguments); + }; + var ___errno_location = Module["___errno_location"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["__errno_location"].apply(null, arguments); + }; + var _fflush = Module["_fflush"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["fflush"].apply(null, arguments); + }; + var __get_tzname = Module["__get_tzname"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["_get_tzname"].apply(null, arguments); + }; + var __get_daylight = Module["__get_daylight"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["_get_daylight"].apply(null, arguments); + }; + var __get_timezone = Module["__get_timezone"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["_get_timezone"].apply(null, arguments); + }; + var _setThrew = Module["_setThrew"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["setThrew"].apply(null, arguments); + }; + var __ZSt18uncaught_exceptionv = Module["__ZSt18uncaught_exceptionv"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["_ZSt18uncaught_exceptionv"].apply(null, arguments); + }; + var stackSave = Module["stackSave"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["stackSave"].apply(null, arguments); + }; + var stackAlloc = Module["stackAlloc"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["stackAlloc"].apply(null, arguments); + }; + var stackRestore = Module["stackRestore"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["stackRestore"].apply(null, arguments); + }; + var __growWasmMemory = Module["__growWasmMemory"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["__growWasmMemory"].apply(null, arguments); + }; + var dynCall_ii = Module["dynCall_ii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_ii"].apply(null, arguments); + }; + var dynCall_viiiii = Module["dynCall_viiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiii"].apply(null, arguments); + }; + var dynCall_viiiiiifi = Module["dynCall_viiiiiifi"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiiiifi"].apply(null, arguments); + }; + var dynCall_viiii = Module["dynCall_viiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiii"].apply(null, arguments); + }; + var dynCall_viii = Module["dynCall_viii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viii"].apply(null, arguments); + }; + var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiiiii"].apply(null, arguments); + }; + var dynCall_iiiiii = Module["dynCall_iiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiiii"].apply(null, arguments); + }; + var dynCall_vii = Module["dynCall_vii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_vii"].apply(null, arguments); + }; + var dynCall_iii = Module["dynCall_iii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iii"].apply(null, arguments); + }; + var dynCall_iiii = Module["dynCall_iiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiii"].apply(null, arguments); + }; + var dynCall_viiiiii = Module["dynCall_viiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiiii"].apply(null, arguments); + }; + var dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiiiiiii"].apply(null, arguments); + }; + var dynCall_viiiiiiii = Module["dynCall_viiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiiiiii"].apply(null, arguments); + }; + var dynCall_iiiii = Module["dynCall_iiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiii"].apply(null, arguments); + }; + var dynCall_viiiiiiiiiiiiii = Module["dynCall_viiiiiiiiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiiiiiiiiiiii"].apply(null, arguments); + }; + var dynCall_viiiiiiiiiii = Module["dynCall_viiiiiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiiiiiiiii"].apply(null, arguments); + }; + var dynCall_viiiiiii = Module["dynCall_viiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiiiii"].apply(null, arguments); + }; + var dynCall_viiiiiiiiiiii = Module["dynCall_viiiiiiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiiiiiiiiii"].apply(null, arguments); + }; + var dynCall_vi = Module["dynCall_vi"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_vi"].apply(null, arguments); + }; + var dynCall_iiiiiiiii = Module["dynCall_iiiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiiiiiii"].apply(null, arguments); + }; + var dynCall_viiiifii = Module["dynCall_viiiifii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiifii"].apply(null, arguments); + }; + var dynCall_fii = Module["dynCall_fii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_fii"].apply(null, arguments); + }; + var dynCall_viiiiiiiiii = Module["dynCall_viiiiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiiiiiiiii"].apply(null, arguments); + }; + var dynCall_dd = Module["dynCall_dd"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_dd"].apply(null, arguments); + }; + var dynCall_viifi = Module["dynCall_viifi"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viifi"].apply(null, arguments); + }; + var dynCall_fiii = Module["dynCall_fiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_fiii"].apply(null, arguments); + }; + var dynCall_viidi = Module["dynCall_viidi"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viidi"].apply(null, arguments); + }; + var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiiiiii"].apply(null, arguments); + }; + var dynCall_did = Module["dynCall_did"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_did"].apply(null, arguments); + }; + var dynCall_v = Module["dynCall_v"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_v"].apply(null, arguments); + }; + var dynCall_viiijj = Module["dynCall_viiijj"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_viiijj"].apply(null, arguments); + }; + var dynCall_iiiiiiidiiddii = Module["dynCall_iiiiiiidiiddii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iiiiiiidiiddii"].apply(null, arguments); + }; + var dynCall_jij = Module["dynCall_jij"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_jij"].apply(null, arguments); + }; + var dynCall_jii = Module["dynCall_jii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_jii"].apply(null, arguments); + }; + var dynCall_jiji = Module["dynCall_jiji"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_jiji"].apply(null, arguments); + }; + var dynCall_iidiiii = Module["dynCall_iidiiii"] = function () { + assert(runtimeInitialized, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"); + assert(!runtimeExited, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + return Module["asm"]["dynCall_iidiiii"].apply(null, arguments); + }; + Module["asm"] = asm; + if (!Object.getOwnPropertyDescriptor(Module, "intArrayFromString")) Module["intArrayFromString"] = function () { + abort("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "intArrayToString")) Module["intArrayToString"] = function () { + abort("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + Module["ccall"] = ccall; + Module["cwrap"] = cwrap; + if (!Object.getOwnPropertyDescriptor(Module, "setValue")) Module["setValue"] = function () { + abort("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getValue")) Module["getValue"] = function () { + abort("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "allocate")) Module["allocate"] = function () { + abort("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getMemory")) Module["getMemory"] = function () { + abort("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "AsciiToString")) Module["AsciiToString"] = function () { + abort("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stringToAscii")) Module["stringToAscii"] = function () { + abort("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "UTF8ArrayToString")) Module["UTF8ArrayToString"] = function () { + abort("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "UTF8ToString")) Module["UTF8ToString"] = function () { + abort("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8Array")) Module["stringToUTF8Array"] = function () { + abort("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8")) Module["stringToUTF8"] = function () { + abort("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF8")) Module["lengthBytesUTF8"] = function () { + abort("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "UTF16ToString")) Module["UTF16ToString"] = function () { + abort("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF16")) Module["stringToUTF16"] = function () { + abort("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF16")) Module["lengthBytesUTF16"] = function () { + abort("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "UTF32ToString")) Module["UTF32ToString"] = function () { + abort("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF32")) Module["stringToUTF32"] = function () { + abort("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF32")) Module["lengthBytesUTF32"] = function () { + abort("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8")) Module["allocateUTF8"] = function () { + abort("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = function () { + abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "addOnPreRun")) Module["addOnPreRun"] = function () { + abort("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "addOnInit")) Module["addOnInit"] = function () { + abort("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "addOnPreMain")) Module["addOnPreMain"] = function () { + abort("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "addOnExit")) Module["addOnExit"] = function () { + abort("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "addOnPostRun")) Module["addOnPostRun"] = function () { + abort("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "writeStringToMemory")) Module["writeStringToMemory"] = function () { + abort("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "writeArrayToMemory")) Module["writeArrayToMemory"] = function () { + abort("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "writeAsciiToMemory")) Module["writeAsciiToMemory"] = function () { + abort("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "addRunDependency")) Module["addRunDependency"] = function () { + abort("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "removeRunDependency")) Module["removeRunDependency"] = function () { + abort("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "ENV")) Module["ENV"] = function () { + abort("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS")) Module["FS"] = function () { + abort("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_createFolder")) Module["FS_createFolder"] = function () { + abort("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_createPath")) Module["FS_createPath"] = function () { + abort("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_createDataFile")) Module["FS_createDataFile"] = function () { + abort("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_createPreloadedFile")) Module["FS_createPreloadedFile"] = function () { + abort("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_createLazyFile")) Module["FS_createLazyFile"] = function () { + abort("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_createLink")) Module["FS_createLink"] = function () { + abort("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_createDevice")) Module["FS_createDevice"] = function () { + abort("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_unlink")) Module["FS_unlink"] = function () { + abort("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "GL")) Module["GL"] = function () { + abort("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "dynamicAlloc")) Module["dynamicAlloc"] = function () { + abort("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "loadDynamicLibrary")) Module["loadDynamicLibrary"] = function () { + abort("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "loadWebAssemblyModule")) Module["loadWebAssemblyModule"] = function () { + abort("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getLEB")) Module["getLEB"] = function () { + abort("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getFunctionTables")) Module["getFunctionTables"] = function () { + abort("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "alignFunctionTables")) Module["alignFunctionTables"] = function () { + abort("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerFunctions")) Module["registerFunctions"] = function () { + abort("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + Module["addFunction"] = addFunction; + if (!Object.getOwnPropertyDescriptor(Module, "removeFunction")) Module["removeFunction"] = function () { + abort("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getFuncWrapper")) Module["getFuncWrapper"] = function () { + abort("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "prettyPrint")) Module["prettyPrint"] = function () { + abort("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "makeBigInt")) Module["makeBigInt"] = function () { + abort("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "dynCall")) Module["dynCall"] = function () { + abort("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getCompilerSetting")) Module["getCompilerSetting"] = function () { + abort("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stackSave")) Module["stackSave"] = function () { + abort("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stackRestore")) Module["stackRestore"] = function () { + abort("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stackAlloc")) Module["stackAlloc"] = function () { + abort("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "establishStackSpace")) Module["establishStackSpace"] = function () { + abort("'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "print")) Module["print"] = function () { + abort("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "printErr")) Module["printErr"] = function () { + abort("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getTempRet0")) Module["getTempRet0"] = function () { + abort("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "setTempRet0")) Module["setTempRet0"] = function () { + abort("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + Module["callMain"] = callMain; + if (!Object.getOwnPropertyDescriptor(Module, "abort")) Module["abort"] = function () { + abort("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "Pointer_stringify")) Module["Pointer_stringify"] = function () { + abort("'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "warnOnce")) Module["warnOnce"] = function () { + abort("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + Module["writeStackCookie"] = writeStackCookie; + Module["checkStackCookie"] = checkStackCookie; + Module["abortStackOverflow"] = abortStackOverflow; + if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NORMAL")) Object.defineProperty(Module, "ALLOC_NORMAL", { + configurable: true, + get: function get() { + abort("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + } + }); + if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_STACK")) Object.defineProperty(Module, "ALLOC_STACK", { + configurable: true, + get: function get() { + abort("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + } + }); + if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_DYNAMIC")) Object.defineProperty(Module, "ALLOC_DYNAMIC", { + configurable: true, + get: function get() { + abort("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + } + }); + if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NONE")) Object.defineProperty(Module, "ALLOC_NONE", { + configurable: true, + get: function get() { + abort("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); + } + }); + if (!Object.getOwnPropertyDescriptor(Module, "calledRun")) Object.defineProperty(Module, "calledRun", { + configurable: true, + get: function get() { + abort("'calledRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + } + }); + var calledRun; + + function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; + } + + var calledMain = false; + dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; + }; + + function callMain(args) { + assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])'); + assert(__ATPRERUN__.length == 0, "cannot call main when preRun functions remain to be called"); + var entryFunction = Module["_main"]; + var argc = 0; + var argv = 0; + try { + var ret = entryFunction(argc, argv); + exit(ret, true); + } catch (e) { + if (e instanceof ExitStatus) { + return; + } else if (e == "SimulateInfiniteLoop") { + noExitRuntime = true; + return; + } else { + var toLog = e; + if (e && (typeof e === 'undefined' ? 'undefined' : _typeof(e)) === "object" && e.stack) { + toLog = [e, e.stack]; + } + err("exception thrown: " + toLog); + quit_(1, e); + } + } finally { + calledMain = true; + } + } + + function run(args) { + args = args || arguments_; + if (runDependencies > 0) { + return; + } + writeStackCookie(); + preRun(); + if (runDependencies > 0) return; + + function doRun() { + if (calledRun) return; + calledRun = true; + if (ABORT) return; + initRuntime(); + preMain(); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + if (shouldRunNow) callMain(args); + postRun(); + } + + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function () { + setTimeout(function () { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } + checkStackCookie(); + } + + Module["run"] = run; + + function checkUnflushedContent() { + var print = out; + var printErr = err; + var has = false; + out = err = function err(x) { + has = true; + }; + try { + var flush = Module["_fflush"]; + if (flush) flush(0); + ["stdout", "stderr"].forEach(function (name) { + var info = FS.analyzePath("/dev/" + name); + if (!info) return; + var stream = info.object; + var rdev = stream.rdev; + var tty = TTY.ttys[rdev]; + if (tty && tty.output && tty.output.length) { + has = true; + } + }); + } catch (e) {} + out = print; + err = printErr; + if (has) { + warnOnce("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc."); + } + } + + function exit(status, implicit) { + checkUnflushedContent(); + if (implicit && noExitRuntime && status === 0) { + return; + } + if (noExitRuntime) { + if (!implicit) { + err("program exited (with status: " + status + "), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)"); + } + } else { + ABORT = true; + EXITSTATUS = status; + exitRuntime(); + if (Module["onExit"]) Module["onExit"](status); + } + quit_(status, new ExitStatus(status)); + } + + if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } + } + var shouldRunNow = true; + if (Module["noInitialRun"]) shouldRunNow = false; + noExitRuntime = true; + run(); +} + +var ModuleInitialized = false; + +var VideoWorker = function VideoWorker(self) { + + //console.log("new VideoWorker.js"); + self.isFlvStream = true; + self.enableAudio = false; + self.pause = false; //HLS���õ���ͣ,��Ϊ���������DecodeWorker�� + self.exitFlag = false; + self.needMoreData = false; + self.wasmDecoderId = -1; + self.wasmInitVideoDecoder = false; + self.wasmInitAudioDecoder = false; + self.videoQueue = []; + self.audioQueue = []; + self.videoFrameNum = 0; + self.videoRawData = null; + self.audioRawData = null; + self.videoPacketData = null; + self.audioPacketData = null; + self.findKeyFrame = true; + + self.videoIntervalHandle = -1; + self.videoIntervalValue = 40; + self.audioIntervalHandle = -1; + self.audioIntervalValue = 80; + self.lastPTS = 0; + self.ptsCount = 0; + self.maxCacheFrameNum = 0; + self.calcDelayFlag = true; + self.procVideoFlag = false; + self.procAudioFlag = false; + + var createBuf = function createBuf() { + if (self.videoRawData == null) { + self.videoRawData = Module._malloc(1920 * 1080 * 4); + //self.videoRawData = Module._malloc(4000 * 3000 * 2); + } + if (self.audioRawData == null) { + self.audioRawData = Module._malloc(1024 * 16); + } + if (self.videoPacketData == null) { + self.videoPacketData = Module._malloc(1024 * 1024); + } + if (self.audioPacketData == null) { + self.audioPacketData = Module._malloc(1024 * 2); + } + + if (self.wasmDecoderId < 0) { + self.wasmDecoderId = Module._WasmDecoder_OpenChannel(); + + //console.log("openChannel: " + self.wasmDecoderId); + } + }; + + var deleteBuf = function deleteBuf() { + if (self.wasmDecoderId > 0) { + //console.log("closeChannel: " + self.wasmDecoderId); + Module._WasmDecoder_CloseChannel(self.wasmDecoderId); + self.wasmDecoderId = -1; + } + + if (self.videoRawData != null) { + Module._free(self.videoRawData); + self.videoRawData = null; + } + if (self.audioRawData != null) { + Module._free(self.audioRawData); + self.audioRawData = null; + } + if (self.videoPacketData != null) { + Module._free(self.videoPacketData); + self.videoPacketData = null; + } + if (self.audioPacketData != null) { + Module._free(self.audioPacketData); + self.audioPacketData = null; + } + }; + + var onProcStreamData = function onProcStreamData(mediaType, codecId, frameType, playTimeSecs, samplerate, channelNum, bitPerSample, pbuf, bufsize) { + + //console.log("DecodeWorker: onProcStreamData:" + bufsize); + + //console.log("frame data: " + pbuf); + + if (self.procVideoFlag) return -1; + + self.procVideoFlag = true; + Module.HEAPU8.set(pbuf, self.videoPacketData); + + var videoRenderFormat = __WEBPACK_IMPORTED_MODULE_0__common__["n" /* tVideoRenderYV12 */]; + var outputFormat = 0; + if (videoRenderFormat == __WEBPACK_IMPORTED_MODULE_0__common__["n" /* tVideoRenderYV12 */]) outputFormat = 0;else if (videoRenderFormat == __WEBPACK_IMPORTED_MODULE_0__common__["l" /* tVideoRenderRGB */]) outputFormat = 2;else if (videoRenderFormat == __WEBPACK_IMPORTED_MODULE_0__common__["m" /* tVideoRenderRGBA */]) outputFormat = 26; + + //if (self.isFlvStream) { + if (0) { + var first = 1; + while (1) { + + var outputDataSize = 0; + + var decodeMediaType = 1; + if (self.enableAudio) decodeMediaType = 3; + + var ptr = Module._WasmDecoder_InputFlvStreamAndDecode(self.wasmDecoderId, first == 1 ? self.videoPacketData : 0, first == 1 ? bufsize : 0, self.videoRawData, outputFormat, decodeMediaType); + first = 0; + + if (ptr != 0 && ptr != null) { + var _mediaType = Module.HEAPU32[ptr / 4], + mediaCodec = Module.HEAPU32[ptr / 4 + 1], + frameLength = Module.HEAPU32[ptr / 4 + 2], + vidFrameType = Module.HEAPU32[ptr / 4 + 3], + vidWidth = Module.HEAPU32[ptr / 4 + 4], + vidHeight = Module.HEAPU32[ptr / 4 + 5], + vidBitrate = Module.HEAPU32[ptr / 4 + 6], + vidFps = Module.HEAPU32[ptr / 4 + 7], + vidInterval = Module.HEAPU32[ptr / 4 + 8], + audChannel = Module.HEAPU32[ptr / 4 + 9], + audSampleRate = Module.HEAPU32[ptr / 4 + 10], + audBitPerSample = Module.HEAPU32[ptr / 4 + 11], + audBitrate = Module.HEAPU32[ptr / 4 + 12], + timestamp = Module.HEAPU32[ptr / 4 + 13]; + + if (frameLength < 1) break; + + //console.log("decode ok...."); + + if (_mediaType == 1) //Video + { + //console.log("VIDEO"); + //procVideoFrame++; + /* + if (frameLength > this.totalMaxVideoFrameSize) { + this.totalMaxVideoFrameSize = frameLength; + } + if (vidFrameType == 1 && this.printKeyframe) { + MediaWorkerLog("VIDEO MaxFrameSize: " + this.totalMaxVideoFrameSize + " framesize[" + frameLength + "]"); + } + */ + /* + if (this.printStatInfo) { + var now = new Date(); + var currentTime = now.getSeconds(); + if (currentTime == this.tmpTime) { + this.tmpFps++; + this.tmpBitrate += frameLength; + } + else { + this.tmpTime = currentTime; + this.fps = this.tmpFps; + this.bitrate = this.tmpBitrate; + var codecStr = ""; + if (mediaCodec == 0xAE) codecStr = "H265"; + else if (mediaCodec == 0x1B) codecStr = "H264"; + var bps = this.tmpBitrate / 1024 / 1024 * 8; + bps = bps.toFixed(2); + if (this.fps === undefined) this.fps = 1; + if (bps === 'NaN') { + bps = frameLength * 8 / 1024 / 1024; + bps = bps.toFixed(2); + } + common.MediaWorkerLog("CH[" + this.wasmDecoderId + "] " + codecStr + " [" + vidWidth + " x " + vidHeight + "] FPS[" + this.fps + "] Bitrate[" + bps + "Mbps]"); + //common.MediaWorkerLog(codecStr + " [" + vidWidth + " x " + vidHeight + "] FPS[" + this.fps + "] Bitrate[" + bps + "Mbps]"); + this.tmpFps = 1; + this.tmpBitrate = frameLength; + } + } + */ + + if (outputFormat == 0) outputDataSize = vidWidth * vidHeight * 3 / 2;else if (outputFormat == 2) outputDataSize = vidWidth * vidHeight * 3;else if (outputFormat == 25) outputDataSize = vidWidth * vidHeight * 4;else if (outputFormat == 26) outputDataSize = vidWidth * vidHeight * 4; + + var outArray = Module.HEAPU8.subarray(self.videoRawData, self.videoRawData + outputDataSize); + + var data = new Uint8Array(outArray); + var objData = { + cmd: common.tFrameData, + workerId: common.DECODE_WORKER_ID, + mediaType: 1, + ts: timestamp, + width: vidWidth, + height: vidHeight, + framesize: frameLength, + rawsize: outputDataSize, + fps: vidFps, + interval: vidInterval, + dat: data + }; + self.postMessage(objData, [objData.dat.buffer]); + } else if (_mediaType == 2) //Audio + { + if (self.enableAudio) { + var outArray = Module.HEAPU8.subarray(self.videoRawData, self.videoRawData + frameLength); + + var data = new Uint8Array(outArray); + + var sampleFmt = 0; //default: 8bits + if (audBitPerSample == 8) sampleFmt = 0;else if (audBitPerSample == 16) sampleFmt = 1;else if (audBitPerSample == 32) sampleFmt = 2; + + var objData = { + cmd: common.tFrameData, + workerId: common.DECODE_WORKER_ID, + mediaType: 2, + fmt: sampleFmt, + ch: audChannel, + samplerate: audSampleRate, + ts: timestamp, + framesize: frameLength, + dat: data + }; + self.postMessage(objData, [objData.dat.buffer]); + } + } + } else { + break; + } + } + } else { + //Decoder + //mediaType, codecId, samplerate, channelNum, bitPerSample, pbuf, bufsize + + if (mediaType == 1) { + if (self.videoFrameNum > 0) self.videoFrameNum -= 1; + } + + if (mediaType == 1 && !self.wasmInitVideoDecoder && frameType) { + //open video decoder.. + var ret = Module._WasmDecoder_OpenVideoDecoder(self.wasmDecoderId, codecId, 0, 0, outputFormat); + if (ret == 0) self.wasmInitVideoDecoder = true; + } else if (mediaType == 2 && !self.wasmInitAudioDecoder) { + //open audio decoder + var ret = Module._WasmDecoder_OpenAudioDecoder(self.wasmDecoderId, codecId, samplerate, bitPerSample, channelNum); + if (ret == 0) self.wasmInitAudioDecoder = true; + } + + var _ptr = null; + if (mediaType == 1 && self.wasmInitVideoDecoder) { + _ptr = Module._WasmDecoder_DecodeVideoFrame(self.wasmDecoderId, self.videoPacketData, bufsize, 0, 0, self.videoRawData, 0); + } else if (mediaType == 2 && self.wasmInitAudioDecoder && self.enableAudio) { + _ptr = Module._WasmDecoder_DecodeAudioFrame(self.wasmDecoderId, self.videoPacketData, bufsize, self.audioRawData, 0); + } + if (_ptr != 0 && _ptr != null) { + var _mediaType2 = Module.HEAPU32[_ptr / 4], + _mediaCodec = Module.HEAPU32[_ptr / 4 + 1], + _frameLength = Module.HEAPU32[_ptr / 4 + 2], + _vidFrameType = Module.HEAPU32[_ptr / 4 + 3], + _vidWidth = Module.HEAPU32[_ptr / 4 + 4], + _vidHeight = Module.HEAPU32[_ptr / 4 + 5], + _vidBitrate = Module.HEAPU32[_ptr / 4 + 6], + _vidFps = Module.HEAPU32[_ptr / 4 + 7], + _vidInterval = Module.HEAPU32[_ptr / 4 + 8], + _audChannel = Module.HEAPU32[_ptr / 4 + 9], + _audSampleRate = Module.HEAPU32[_ptr / 4 + 10], + _audBitPerSample = Module.HEAPU32[_ptr / 4 + 11], + _audBitrate = Module.HEAPU32[_ptr / 4 + 12], + _timestamp = Module.HEAPU32[_ptr / 4 + 13]; + + if (_frameLength < 1) { + //console.log("framelength<1: " + frameLength); + self.procVideoFlag = false; + return; + } + + if (_mediaType2 == 1) { + //Video + //procVideoFrame++; + if (outputFormat == 0) outputDataSize = _vidWidth * _vidHeight * 3 / 2;else if (outputFormat == 2) outputDataSize = _vidWidth * _vidHeight * 3;else if (outputFormat == 25) outputDataSize = _vidWidth * _vidHeight * 4;else if (outputFormat == 26) outputDataSize = _vidWidth * _vidHeight * 4; + + var outArray = Module.HEAPU8.subarray(self.videoRawData, self.videoRawData + outputDataSize); + + var data = new Uint8Array(outArray); + var objData = { + cmd: __WEBPACK_IMPORTED_MODULE_0__common__["e" /* tFrameData */], + workerId: __WEBPACK_IMPORTED_MODULE_0__common__["a" /* DECODE_WORKER_ID */], + mediaType: 1, + ts: _timestamp, + width: _vidWidth, + height: _vidHeight, + framesize: bufsize, + rawsize: outputDataSize, + fps: _vidFps, + interval: _vidInterval, + playTimeSec: playTimeSecs, + frameNum: self.videoFrameNum, + dat: data + }; + self.postMessage(objData, [objData.dat.buffer]); + + if (_vidWidth >= 1920 && _vidHeight >= 720) { + self.procVideoFlag = false; + return 1; + } + } else if (_mediaType2 == 2) { + + var outArray = Module.HEAPU8.subarray(self.audioRawData, self.audioRawData + _frameLength); + + var data = new Uint8Array(outArray); + + var sampleFmt = 0; //default: 8bits + if (_audBitPerSample == 8) sampleFmt = 0;else if (_audBitPerSample == 16) sampleFmt = 1;else if (_audBitPerSample == 32) sampleFmt = 2; + + var objData = { + cmd: __WEBPACK_IMPORTED_MODULE_0__common__["e" /* tFrameData */], + workerId: __WEBPACK_IMPORTED_MODULE_0__common__["a" /* DECODE_WORKER_ID */], + mediaType: 2, + fmt: sampleFmt, + ch: _audChannel, + samplerate: _audSampleRate, + ts: _timestamp, + framesize: _frameLength, + dat: data + }; + self.postMessage(objData, [objData.dat.buffer]); + } + } + } + + self.procVideoFlag = false; + + return 0; + }; + + var onProcAudioStreamData = function onProcAudioStreamData(codecId, samplerate, channelNum, bitPerSample, pbuf, bufsize) { + + Module.HEAPU8.set(pbuf, self.audioPacketData); + + { + //Decoder + if (!self.wasmInitAudioDecoder) { + + //channelNum = 2; + //console.log("Audio samplerate[" + samplerate + "] bitPerSample[" + bitPerSample + "] ChannelNum: " + channelNum); + + var ret = Module._WasmDecoder_OpenAudioDecoder(self.wasmDecoderId, codecId, samplerate, bitPerSample, channelNum); + if (ret == 0) self.wasmInitAudioDecoder = true; + } + + var ptr = null; + if (self.wasmInitAudioDecoder && self.enableAudio) { + ptr = Module._WasmDecoder_DecodeAudioFrame(self.wasmDecoderId, self.audioPacketData, bufsize, self.audioRawData, 0); + } + if (ptr != 0 && ptr != null) { + var mediaType = Module.HEAPU32[ptr / 4], + mediaCodec = Module.HEAPU32[ptr / 4 + 1], + frameLength = Module.HEAPU32[ptr / 4 + 2], + vidFrameType = Module.HEAPU32[ptr / 4 + 3], + vidWidth = Module.HEAPU32[ptr / 4 + 4], + vidHeight = Module.HEAPU32[ptr / 4 + 5], + vidBitrate = Module.HEAPU32[ptr / 4 + 6], + vidFps = Module.HEAPU32[ptr / 4 + 7], + vidInterval = Module.HEAPU32[ptr / 4 + 8], + audChannel = Module.HEAPU32[ptr / 4 + 9], + audSampleRate = Module.HEAPU32[ptr / 4 + 10], + audBitPerSample = Module.HEAPU32[ptr / 4 + 11], + audBitrate = Module.HEAPU32[ptr / 4 + 12], + timestamp = Module.HEAPU32[ptr / 4 + 13]; + + if (frameLength < 1) { + //console.log("framelength<1: " + frameLength); + return; + } + + var outArray = Module.HEAPU8.subarray(self.audioRawData, self.audioRawData + frameLength); + + var data = new Uint8Array(outArray); + + var sampleFmt = 0; //default: 8bits + if (audBitPerSample == 8) sampleFmt = 0;else if (audBitPerSample == 16) sampleFmt = 1;else if (audBitPerSample == 32) sampleFmt = 2; + //audChannel = 2; + //console.log("Audio: sampleFmt[" + sampleFmt + "] + ch[" + audChannel + "]"); + + var objData = { + cmd: __WEBPACK_IMPORTED_MODULE_0__common__["e" /* tFrameData */], + workerId: __WEBPACK_IMPORTED_MODULE_0__common__["a" /* DECODE_WORKER_ID */], + mediaType: 2, + fmt: sampleFmt, + ch: audChannel, + samplerate: audSampleRate, + ts: timestamp, + framesize: frameLength, + dat: data + }; + self.postMessage(objData, [objData.dat.buffer]); + } + } + }; + + var VideoDecodeLoop = function VideoDecodeLoop() { + + if (self.wasmDecoderId < 0) { + createBuf(); //����buf + //console.log("wasm already loaded... Create buff..."); + } + + if (self.wasmDecoderId > 0) { + if (self.videoQueue.length > 0) { + + //console.log("videoQueue.length: " + self.videoQueue.length); + + //if (self.calcDelayFlag && self.maxCacheFrameNum < self.videoQueue.length) { + // self.maxCacheFrameNum = self.videoQueue.length; + //} + //else if (self.calcDelayFlag){ + // self.calcDelayFlag = false; + + // console.log("videoQueue.length: " + self.maxCacheFrameNum + " interval:" + self.videoIntervalValue); + //} + + + //����ͣ״̬ + if (!self.pause) { + var frame = null; + + var ret = -1; + if (self.isFlvStream) { + //FLV ����֡��̫��������ǰGOP + + //���ҹؼ�֡ + if (self.findKeyFrame) { + while (self.videoQueue.length > 0) { + frame = self.videoQueue[0]; + + //console.log("frameCount" + self.videoQueue.length + " drop frame: " + frame.dat.length); + + if (frame.frameType && self.videoQueue.length < 60) { + self.findKeyFrame = false; + break; + } + + self.videoQueue.shift(); + } + } else { + if (self.videoQueue.length > 60) { + self.findKeyFrame = true; + } + } + + if (self.videoQueue.length > 0) { + + if (frame == null) { + frame = self.videoQueue[0]; + } + + //if (frame.frameType) { + // console.log("videoQueue.length: " + self.videoQueue.length); + //} + + ret = onProcStreamData(frame.mediaType, frame.codecId, frame.frameType, frame.playTimeSec, frame.samplerate, frame.channelNum, frame.bitPerSample, frame.dat, frame.dat.length); + } + } else { + frame = self.videoQueue[0]; + ret = onProcStreamData(frame.mediaType, frame.codecId, frame.frameType, frame.playTimeSec, frame.samplerate, frame.channelNum, frame.bitPerSample, frame.dat, frame.dat.length); + } + + if (ret >= 0) { + self.videoQueue.shift(); + } + + //if (ret === 1 && self.videoQueue.length > self.maxCacheFrameNum && (self.videoQueue.length % 10 == 0)) { + if (self.videoQueue.length > self.maxCacheFrameNum && self.videoQueue.length % 20 == 0) { + + //console.log("videoQueue.length: " + self.videoQueue.length + " maxCacheFrameNum:" + self.maxCacheFrameNum); + + //if (self.videoIntervalValue > 5) { + //updateIntervalTime(self.videoIntervalValue - 5); + //} + + //updateIntervalTime(20); + } + } + } + } + + return; + }; + + var HlsAudioDecodeLoop = function HlsAudioDecodeLoop() { + + if (self.wasmDecoderId < 0) { + + return; + } + + if (self.wasmDecoderId > 0) { + while (self.audioQueue.length > 0 && !self.pause) { + //if (self.audioQueue.length > 0) { + //console.log("audioQueue.length: " + self.audioQueue.length); + + //����ͣ״̬ + if (!self.pause) { + var frame = self.audioQueue[0]; + + if (self.enableAudio) { + onProcAudioStreamData(frame.codecId, frame.samplerate, frame.channelNum, frame.bitPerSample, frame.dat, frame.dat.length); + } + self.audioQueue.shift(); + } + } + } + + return; + }; + + //����ģ�� + Module.onRuntimeInitialized = function () { + //console.log('WASM initialized done!'); + + //������Ƶ���� + if (self.videoIntervalHandle < 0) { + self.videoIntervalHandle = setInterval(VideoDecodeLoop, self.videoIntervalValue); + } + + //if (self.isFlvStream) { + + //������Ƶ���� + if (self.audioIntervalHandle < 0) {} + //self.audioIntervalHandle = setInterval(HlsAudioDecodeLoop, self.audioIntervalValue); + + //} + + + var objData = { + cmd: __WEBPACK_IMPORTED_MODULE_0__common__["d" /* tDecoderWorkerStartup */] + }; + self.postMessage(objData); + + ModuleInitialized = true; + }; + Module.onExit = function () { + + //console.log("Module exit..."); + }; + + var updateIntervalTime = function updateIntervalTime(interval) { + if (ModuleInitialized) { + var iVal = interval; + if (iVal < 5 || iVal > 500) { + iVal = 40; + } + if (iVal != self.videoIntervalValue) { + if (self.videoIntervalHandle >= 0) { + clearInterval(self.videoIntervalHandle); + self.videoIntervalHandle = -1; + } + + self.videoIntervalValue = Math.floor(iVal); + //self.videoIntervalHandle = setInterval(VideoDecodeLoop, iVal > 15 ? iVal - 15 : self.videoIntervalValue); + self.videoIntervalHandle = setInterval(VideoDecodeLoop, self.videoIntervalValue); + //console.log("SetInterval: " + self.videoIntervalValue); + } + } + }; + + var calcIntervalTime = function calcIntervalTime(pts) { + if (pts > self.lastPTS) { + + if (self.lastPTS > 0) { + if (self.videoQueue.length % 5 == 0) { + var interval = self.ptsCount / 5; + + if (self.videoQueue.length <= self.maxCacheFrameNum) { + updateIntervalTime(interval); + + //console.log("Update interval: " + interval); + } + + self.ptsCount = pts - self.lastPTS; + } else { + self.ptsCount += pts - self.lastPTS; + } + + self.lastPTS = pts; + } else { + self.lastPTS = pts; + self.ptsCount = 40; + } + } else { + self.lastPTS = pts; + self.ptsCount = 40; + } + }; + + self.addEventListener('message', function (ev) { + var data = ev.data; + //console.log("videoWorker: recv data."); + //console.log('render-worker.js demuxer cmd:' + data.cmd); + + switch (data.cmd) { + case __WEBPACK_IMPORTED_MODULE_0__common__["g" /* tOpenStream */]: + //console.log("init decoder worker..."); + + fullURL = data.url; + self.isFlvStream = data.isFlv; + + //console.log("wasm path: " + data.url); + + //����wasm module + if (!ModuleInitialized) { + LoadWasmModule(); + } + break; + case __WEBPACK_IMPORTED_MODULE_0__common__["c" /* tCloseStream */]: + self.exitFlag = true; + + //HLS������Ὺ����ʱִ�к���, �˴���ر� + if (self.videoIntervalHandle >= 0) { + clearInterval(self.videoIntervalHandle); + self.videoIntervalHandle = -1; + } + if (self.audioIntervalHandle >= 0) { + clearInterval(self.audioIntervalHandle); + self.audioIntervalHandle = -1; + } + + deleteBuf(); //�ͷ�buf + + self.videoQueue.clear; + self.videoQueue = []; + self.videoQueue.length = 0; + self.videoFrameNum = 0; + self.audioQueue.clear; + self.audioQueue = []; + self.audioQueue.length = 0; + + delete Module.HEAP8; + delete Module.HEAP16; + delete Module.HEAP32; + delete Module.HEAPF32; + delete Module.HEAPF64; + delete Module.HEAPU8; + delete Module.HEAPU16; + delete Module.HEAPU32; + delete Module.buffer; + + Module.HEAP8 = null; + Module.HEAP16 = null; + Module.HEAP32 = null; + Module.HEAPF32 = null; + Module.HEAPF64 = null; + Module.HEAPU8 = null; + Module.HEAPU16 = null; + Module.HEAPU32 = null; + Module.buffer = null; + + noExitRuntime = false; + Module.callMain("exit"); + + Module = null; + + var objData = { + cmd: __WEBPACK_IMPORTED_MODULE_0__common__["c" /* tCloseStream */], + workerId: __WEBPACK_IMPORTED_MODULE_0__common__["a" /* DECODE_WORKER_ID */] + }; + self.postMessage(objData); + close(); + break; + case __WEBPACK_IMPORTED_MODULE_0__common__["f" /* tOpenAudio */]: + self.enableAudio = true; + break; + case __WEBPACK_IMPORTED_MODULE_0__common__["b" /* tCloseAudio */]: + self.enableAudio = false; + break; + case __WEBPACK_IMPORTED_MODULE_0__common__["h" /* tPauseStream */]: + //��ͣ + self.pause = true; + break; + case __WEBPACK_IMPORTED_MODULE_0__common__["i" /* tResumeStream */]: + //�ָ� + self.pause = false; + break; + case __WEBPACK_IMPORTED_MODULE_0__common__["j" /* tSeekStream */]: + self.videoQueue.clear; + self.videoQueue.length = 0; + self.videoFrameNum = 0; + self.audioQueue.clear; + self.audioQueue.length = 0; + break; + case __WEBPACK_IMPORTED_MODULE_0__common__["k" /* tVidInterval */]: + //�������ý�����ʱ�� + self.updateIntervalTime(data.interval); + break; + case __WEBPACK_IMPORTED_MODULE_0__common__["e" /* tFrameData */]: + //�Ѽ������ + + if (self.exitFlag) { + //console.log("exit..."); + break; + } + + if (ModuleInitialized) { + if (self.isFlvStream) { + //FLV Stream + if (self.wasmDecoderId < 0) { + createBuf(); //����buf + //console.log("wasm already loaded... Create buff..."); + } + if (self.wasmDecoderId > 0) { + + if (data.mediaType == 1) { + if (self.videoIntervalHandle >= 0) { + self.videoQueue.push(data); //�������ƽ����� + + //let p = new Uint8Array(data); + //console.log("push data to queue: " + p); + + self.maxCacheFrameNum = 5; + //calcIntervalTime(data.samplerate); //mediaTypeΪ1ʱ, �˴���samplerateʵ������pts + } + } else if (data.mediaType == 2) { + //������Ƶ����Ž������Ƶ����� + if (self.audioIntervalHandle >= 0 && !self.findKeyFrame) { + self.audioQueue.push(data); + } + } + + /* + onProcStreamData(data.mediaType, data.codecId, data.frameType, + data.playTimeSec, + data.samplerate, data.channelNum, data.bitPerSample, + data.dat, data.dat.length); + */ + } else if (self.videoQueue.length < 100) { + //���Wasm��ʼ�����, ����������δ��, �򻺴�ؼ�֡ + if (data.mediaType == 1 && data.frameType) { + if (self.videoIntervalHandle >= 0) { + self.videoQueue.push(data); + + if (self.videoQueue.length >= 5) { + self.videoQueue.shift(); + } + } + } + } + } else { + + //HLS stream, ֱ����ӵ����� + + + //console.log("HLS Stream... add to queue... queueLength: " + self.videoQueue.length); + + if (data.mediaType == 1) { + + if (self.videoIntervalHandle >= 0) { + self.videoQueue.push(data); + + calcIntervalTime(data.samplerate); //mediaTypeΪ1ʱ, �˴���samplerateʵ������pts + + + //console.log("decode pts2:" + data.playTimeSec); + + self.videoFrameNum += 1; + + if (self.calcDelayFlag && self.maxCacheFrameNum < self.videoQueue.length) { + self.maxCacheFrameNum = self.videoQueue.length; + } else if (self.calcDelayFlag) { + self.calcDelayFlag = false; + + //console.log("videoQueue.length2: " + self.maxCacheFrameNum + " interval:" + self.videoIntervalValue); + } + } + } else if (data.mediaType == 2) { + + //������Ƶ����Ž������Ƶ����� + if (self.audioIntervalHandle >= 0) { + self.audioQueue.push(data); + } + } + + self.needMoreData = false; + } + } else { + //δ������� + + //Flv: ������ؼ�֡ + if (self.isFlvStream && self.videoQueue.length < 5) { + if (data.mediaType == 1 && data.frameType) { + if (self.videoIntervalHandle >= 0) { + self.videoQueue.push(data); + + if (self.videoQueue.length >= 5) { + self.videoQueue.shift(); + } + } + } + } else if (!self.isFlvStream && self.videoQueue.length < 1000) { + + if (data.mediaType == 1) { + + if (self.videoIntervalHandle >= 0) { + self.videoQueue.push(data); + + calcIntervalTime(data.samplerate); //mediaTypeΪ1ʱ, �˴���samplerateʵ������pts + self.videoFrameNum += 1; + + if (self.calcDelayFlag && self.maxCacheFrameNum < self.videoQueue.length) { + self.maxCacheFrameNum = self.videoQueue.length; + } else if (self.calcDelayFlag) { + self.calcDelayFlag = false; + + //console.log("videoQueue.length: " + self.maxCacheFrameNum + " interval:" + self.videoIntervalValue); + } + } + + //console.log("decode pts:" + data.playTimeSec); + } else if (data.mediaType == 2) { + if (self.audioIntervalHandle >= 0) { + self.audioQueue.push(data); + } + } + //console.log("HLS Stream[wasm loading...]... add to queue... queueLength: " + self.videoQueue.length); + } + + //console.log("wasm not load... videoQueue.length: " + self.videoQueue.length); + } + + break; + default: + break; + } + }); +}; + +/* unused harmony default export */ var _unused_webpack_default_export = (VideoWorker); +var EasyPlayerWasmModule = { loadWasmModule: LoadWasmModule, module: Module }; +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__("V0EG"), "/", __webpack_require__("K61N")(module), __webpack_require__("NfRg").Buffer)) + +/***/ }), + +/***/ "K61N": +/***/ (function(module, exports) { + +module.exports = function(originalModule) { + if(!originalModule.webpackPolyfill) { + var module = Object.create(originalModule); + // module.parent = undefined by default + if(!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function() { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function() { + return module.i; + } + }); + Object.defineProperty(module, "exports", { + enumerable: true, + }); + module.webpackPolyfill = 1; + } + return module; +}; + + +/***/ }), + +/***/ "KEXE": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Kannada [kn] +//! author : Rajeev Naik : https://github.com/rajeevnaikte + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var symbolMap = { + '1': '೧', + '2': '೨', + '3': '೩', + '4': '೪', + '5': '೫', + '6': '೬', + '7': '೭', + '8': '೮', + '9': '೯', + '0': '೦' +}; +var numberMap = { + '೧': '1', + '೨': '2', + '೩': '3', + '೪': '4', + '೫': '5', + '೬': '6', + '೭': '7', + '೮': '8', + '೯': '9', + '೦': '0' +}; + +var kn = moment.defineLocale('kn', { + months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'), + monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬ_ನವೆಂಬ_ಡಿಸೆಂಬ'.split('_'), + monthsParseExact: true, + weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'), + weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), + weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'), + longDateFormat : { + LT : 'A h:mm', + LTS : 'A h:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm', + LLLL : 'dddd, D MMMM YYYY, A h:mm' + }, + calendar : { + sameDay : '[ಇಂದು] LT', + nextDay : '[ನಾಳೆ] LT', + nextWeek : 'dddd, LT', + lastDay : '[ನಿನ್ನೆ] LT', + lastWeek : '[ಕೊನೆಯ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ನಂತರ', + past : '%s ಹಿಂದೆ', + s : 'ಕೆಲವು ಕ್ಷಣಗಳು', + m : 'ಒಂದು ನಿಮಿಷ', + mm : '%d ನಿಮಿಷ', + h : 'ಒಂದು ಗಂಟೆ', + hh : '%d ಗಂಟೆ', + d : 'ಒಂದು ದಿನ', + dd : '%d ದಿನ', + M : 'ಒಂದು ತಿಂಗಳು', + MM : '%d ತಿಂಗಳು', + y : 'ಒಂದು ವರ್ಷ', + yy : '%d ವರ್ಷ' + }, + preparse: function (string) { + return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'ರಾತ್ರಿ') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') { + return hour; + } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'ಸಂಜೆ') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ರಾತ್ರಿ'; + } else if (hour < 10) { + return 'ಬೆಳಿಗ್ಗೆ'; + } else if (hour < 17) { + return 'ಮಧ್ಯಾಹ್ನ'; + } else if (hour < 20) { + return 'ಸಂಜೆ'; + } else { + return 'ರಾತ್ರಿ'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/, + ordinal : function (number) { + return number + 'ನೇ'; + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +return kn; + +}))); + + +/***/ }), + +/***/ "KHlb": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Arabic (Saudi Arabia) [ar-sa] +//! author : Suhail Alkowaileet : https://github.com/xsoh + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var symbolMap = { + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠' +}; +var numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0' +}; + +var arSa = moment.defineLocale('ar-sa', { + months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar : { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'في %s', + past : 'منذ %s', + s : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + preparse: function (string) { + return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }).replace(/,/g, '،'); + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +return arSa; + +}))); + + +/***/ }), + +/***/ "KHyZ": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__("maJs"); +var SHA256 = __webpack_require__("7FEM"); + +function SHA224() { + if (!(this instanceof SHA224)) + return new SHA224(); + + SHA256.call(this); + this.h = [ + 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, + 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ]; +} +utils.inherits(SHA224, SHA256); +module.exports = SHA224; + +SHA224.blockSize = 512; +SHA224.outSize = 224; +SHA224.hmacStrength = 192; +SHA224.padLength = 64; + +SHA224.prototype._digest = function digest(enc) { + // Just truncate output + if (enc === 'hex') + return utils.toHex32(this.h.slice(0, 7), 'big'); + else + return utils.split32(this.h.slice(0, 7), 'big'); +}; + + + +/***/ }), + +/***/ "KSX3": +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__("cGIK").EventEmitter; + + +/***/ }), + +/***/ "Kdoe": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Dutch (Belgium) [nl-be] +//! author : Joris Röling : https://github.com/jorisroling +//! author : Jacob Middag : https://github.com/middagj + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'); +var monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); + +var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; +var monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + +var nlBe = moment.defineLocale('nl-be', { + months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortWithDots; + } else if (/-MMM-/.test(format)) { + return monthsShortWithoutDots[m.month()]; + } else { + return monthsShortWithDots[m.month()]; + } + }, + + monthsRegex: monthsRegex, + monthsShortRegex: monthsRegex, + monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i, + monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, + + monthsParse : monthsParse, + longMonthsParse : monthsParse, + shortMonthsParse : monthsParse, + + weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), + weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[vandaag om] LT', + nextDay: '[morgen om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[gisteren om] LT', + lastWeek: '[afgelopen] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'over %s', + past : '%s geleden', + s : 'een paar seconden', + m : 'één minuut', + mm : '%d minuten', + h : 'één uur', + hh : '%d uur', + d : 'één dag', + dd : '%d dagen', + M : 'één maand', + MM : '%d maanden', + y : 'één jaar', + yy : '%d jaar' + }, + dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return nlBe; + +}))); + + +/***/ }), + +/***/ "Kscr": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Croatian [hr] +//! author : Bojan Marković : https://github.com/bmarkovic + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +function translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } +} + +var hr = moment.defineLocale('hr', { + months : { + format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'), + standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_') + }, + monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), + monthsParseExact: true, + weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'par sekundi', + m : translate, + mm : translate, + h : translate, + hh : translate, + d : 'dan', + dd : translate, + M : 'mjesec', + MM : translate, + y : 'godinu', + yy : translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return hr; + +}))); + + +/***/ }), + +/***/ "LHnZ": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + + +module.exports = PassThrough; + +var Transform = __webpack_require__("4mOe"); + +__webpack_require__("mwrz")(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; + +/***/ }), + +/***/ "LcQ3": +/***/ (function(module, exports, __webpack_require__) { + +exports = module.exports = __webpack_require__("TDlb"); +exports.Stream = exports; +exports.Readable = exports; +exports.Writable = __webpack_require__("y7x+"); +exports.Duplex = __webpack_require__("qI9I"); +exports.Transform = __webpack_require__("R09Z"); +exports.PassThrough = __webpack_require__("t2AN"); + + +/***/ }), + +/***/ "LieX": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Klingon [tlh] +//! author : Dominika Kruk : https://github.com/amaranthrose + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_'); + +function translateFuture(output) { + var time = output; + time = (output.indexOf('jaj') !== -1) ? + time.slice(0, -3) + 'leS' : + (output.indexOf('jar') !== -1) ? + time.slice(0, -3) + 'waQ' : + (output.indexOf('DIS') !== -1) ? + time.slice(0, -3) + 'nem' : + time + ' pIq'; + return time; +} + +function translatePast(output) { + var time = output; + time = (output.indexOf('jaj') !== -1) ? + time.slice(0, -3) + 'Hu’' : + (output.indexOf('jar') !== -1) ? + time.slice(0, -3) + 'wen' : + (output.indexOf('DIS') !== -1) ? + time.slice(0, -3) + 'ben' : + time + ' ret'; + return time; +} + +function translate(number, withoutSuffix, string, isFuture) { + var numberNoun = numberAsNoun(number); + switch (string) { + case 'mm': + return numberNoun + ' tup'; + case 'hh': + return numberNoun + ' rep'; + case 'dd': + return numberNoun + ' jaj'; + case 'MM': + return numberNoun + ' jar'; + case 'yy': + return numberNoun + ' DIS'; + } +} + +function numberAsNoun(number) { + var hundred = Math.floor((number % 1000) / 100), + ten = Math.floor((number % 100) / 10), + one = number % 10, + word = ''; + if (hundred > 0) { + word += numbersNouns[hundred] + 'vatlh'; + } + if (ten > 0) { + word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH'; + } + if (one > 0) { + word += ((word !== '') ? ' ' : '') + numbersNouns[one]; + } + return (word === '') ? 'pagh' : word; +} + +var tlh = moment.defineLocale('tlh', { + months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'), + monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'), + monthsParseExact : true, + weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), + weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), + weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[DaHjaj] LT', + nextDay: '[wa’leS] LT', + nextWeek: 'LLL', + lastDay: '[wa’Hu’] LT', + lastWeek: 'LLL', + sameElse: 'L' + }, + relativeTime : { + future : translateFuture, + past : translatePast, + s : 'puS lup', + m : 'wa’ tup', + mm : translate, + h : 'wa’ rep', + hh : translate, + d : 'wa’ jaj', + dd : translate, + M : 'wa’ jar', + MM : translate, + y : 'wa’ DIS', + yy : translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return tlh; + +}))); + + +/***/ }), + +/***/ "LqeL": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Vietnamese [vi] +//! author : Bang Nguyen : https://github.com/bangnk + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var vi = moment.defineLocale('vi', { + months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'), + monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), + monthsParseExact : true, + weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'), + weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysParseExact : true, + meridiemParse: /sa|ch/i, + isPM : function (input) { + return /^ch$/i.test(input); + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'sa' : 'SA'; + } else { + return isLower ? 'ch' : 'CH'; + } + }, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM [năm] YYYY', + LLL : 'D MMMM [năm] YYYY HH:mm', + LLLL : 'dddd, D MMMM [năm] YYYY HH:mm', + l : 'DD/M/YYYY', + ll : 'D MMM YYYY', + lll : 'D MMM YYYY HH:mm', + llll : 'ddd, D MMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Hôm nay lúc] LT', + nextDay: '[Ngày mai lúc] LT', + nextWeek: 'dddd [tuần tới lúc] LT', + lastDay: '[Hôm qua lúc] LT', + lastWeek: 'dddd [tuần rồi lúc] LT', + sameElse: 'L' + }, + relativeTime : { + future : '%s tới', + past : '%s trước', + s : 'vài giây', + m : 'một phút', + mm : '%d phút', + h : 'một giờ', + hh : '%d giờ', + d : 'một ngày', + dd : '%d ngày', + M : 'một tháng', + MM : '%d tháng', + y : 'một năm', + yy : '%d năm' + }, + dayOfMonthOrdinalParse: /\d{1,2}/, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return vi; + +}))); + + +/***/ }), + +/***/ "Lxgc": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { // undocumented cb() API, needed for core, not for public API + +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + process.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorNT, this, err); + } + } + + return this; + } // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + + if (this._readableState) { + this._readableState.destroyed = true; + } // if this is a duplex stream mark the writable part as destroyed as well + + + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + process.nextTick(emitErrorAndCloseNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, _this, err); + } else { + process.nextTick(emitCloseNT, _this); + } + } else if (cb) { + process.nextTick(emitCloseNT, _this); + cb(err); + } else { + process.nextTick(emitCloseNT, _this); + } + }); + + return this; +} + +function emitErrorAndCloseNT(self, err) { + emitErrorNT(self, err); + emitCloseNT(self); +} + +function emitCloseNT(self) { + if (self._writableState && !self._writableState.emitClose) return; + if (self._readableState && !self._readableState.emitClose) return; + self.emit('close'); +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +function errorOrDestroy(stream, err) { + // We have tests that rely on errors being emitted + // in the same tick, so changing this is semver major. + // For now when you opt-in to autoDestroy we allow + // the error to be emitted nextTick. In a future + // semver major update we should change the default to this. + var rState = stream._readableState; + var wState = stream._writableState; + if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy, + errorOrDestroy: errorOrDestroy +}; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("V0EG"))) + +/***/ }), + +/***/ "M+L8": +/***/ (function(module, exports, __webpack_require__) { + +exports.publicEncrypt = __webpack_require__("Ja68") +exports.privateDecrypt = __webpack_require__("vq6N") + +exports.privateEncrypt = function privateEncrypt (key, buf) { + return exports.publicEncrypt(key, buf, true) +} + +exports.publicDecrypt = function publicDecrypt (key, buf) { + return exports.privateDecrypt(key, buf, true) +} + + +/***/ }), + +/***/ "M+LS": +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__("n1Xs") + + +/***/ }), + +/***/ "MZ/r": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Afrikaans [af] +//! author : Werner Mollentze : https://github.com/wernerm + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var af = moment.defineLocale('af', { + months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), + weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'), + weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), + weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), + meridiemParse: /vm|nm/i, + isPM : function (input) { + return /^nm$/i.test(input); + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'vm' : 'VM'; + } else { + return isLower ? 'nm' : 'NM'; + } + }, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Vandag om] LT', + nextDay : '[Môre om] LT', + nextWeek : 'dddd [om] LT', + lastDay : '[Gister om] LT', + lastWeek : '[Laas] dddd [om] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'oor %s', + past : '%s gelede', + s : '\'n paar sekondes', + m : '\'n minuut', + mm : '%d minute', + h : '\'n uur', + hh : '%d ure', + d : '\'n dag', + dd : '%d dae', + M : '\'n maand', + MM : '%d maande', + y : '\'n jaar', + yy : '%d jaar' + }, + dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter + }, + week : { + dow : 1, // Maandag is die eerste dag van die week. + doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. + } +}); + +return af; + +}))); + + +/***/ }), + +/***/ "Mpd7": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Korean [ko] +//! author : Kyungwook, Park : https://github.com/kyungw00k +//! author : Jeeeyul Lee <jeeeyul@gmail.com> + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var ko = moment.defineLocale('ko', { + months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), + weekdaysShort : '일_월_화_수_목_금_토'.split('_'), + weekdaysMin : '일_월_화_수_목_금_토'.split('_'), + longDateFormat : { + LT : 'A h:mm', + LTS : 'A h:mm:ss', + L : 'YYYY.MM.DD', + LL : 'YYYY년 MMMM D일', + LLL : 'YYYY년 MMMM D일 A h:mm', + LLLL : 'YYYY년 MMMM D일 dddd A h:mm', + l : 'YYYY.MM.DD', + ll : 'YYYY년 MMMM D일', + lll : 'YYYY년 MMMM D일 A h:mm', + llll : 'YYYY년 MMMM D일 dddd A h:mm' + }, + calendar : { + sameDay : '오늘 LT', + nextDay : '내일 LT', + nextWeek : 'dddd LT', + lastDay : '어제 LT', + lastWeek : '지난주 dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s 후', + past : '%s 전', + s : '몇 초', + ss : '%d초', + m : '1분', + mm : '%d분', + h : '한 시간', + hh : '%d시간', + d : '하루', + dd : '%d일', + M : '한 달', + MM : '%d달', + y : '일 년', + yy : '%d년' + }, + dayOfMonthOrdinalParse : /\d{1,2}일/, + ordinal : '%d일', + meridiemParse : /오전|오후/, + isPM : function (token) { + return token === '오후'; + }, + meridiem : function (hour, minute, isUpper) { + return hour < 12 ? '오전' : '오후'; + } +}); + +return ko; + +}))); + + +/***/ }), + +/***/ "MsX9": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return tVideoRenderYV12; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return tVideoRenderRGB; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return tVideoRenderRGBA; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return tOpenStream; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return tCloseStream; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return tFrameData; }); +/* unused harmony export tReOpenStream */ +/* unused harmony export tConnecting */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return tOpenAudio; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return tCloseAudio; }); +/* unused harmony export tOutputStatInfo */ +/* unused harmony export tGetTsStream */ +/* unused harmony export tGetTsStreamRsp */ +/* unused harmony export tDecode */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return tVidInterval; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return tPauseStream; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return tResumeStream; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return tSeekStream; }); +/* unused harmony export tMediaInfo */ +/* unused harmony export tGetTsComplete */ +/* unused harmony export tError */ +/* unused harmony export tExcept */ +/* unused harmony export tDisconnect */ +/* unused harmony export tResetMSE */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return tDecoderWorkerStartup; }); +/* unused harmony export DOWNLOAD_WORKER_ID */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DECODE_WORKER_ID; }); +/* unused harmony export RENDER_WORKER_ID */ +/* unused harmony export setLiveStreamType */ +/* unused harmony export GetLiveStreamType */ +/* unused harmony export setCodecTypeStr */ +/* unused harmony export setVideoWidth */ +/* unused harmony export setVideoHeight */ +/* unused harmony export setVideoBitrate */ +/* unused harmony export GetCodecTypeStr */ +/* unused harmony export GetVideoWidth */ +/* unused harmony export GetVideoHeight */ +/* unused harmony export GetVideoBitrate */ +/* unused harmony export SetEnableAudio */ +/* unused harmony export GetEnableAudio */ +/* unused harmony export ClearAppendBufferError */ +/* unused harmony export SetAppendBufferError */ +/* unused harmony export GetAppendBufferError */ +/* unused harmony export sleep */ +/* unused harmony export MediaWorkerLog */ +/* unused harmony export getFullURL */ + +//显示格式 +var tVideoRenderYV12 = 1; +var tVideoRenderRGB = 2; +var tVideoRenderRGBA = 3; + +var tOpenStream = 1; +var tCloseStream = 2; +var tFrameData = 3; +var tReOpenStream = 4; +var tConnecting = 5; +var tOpenAudio = 6; +var tCloseAudio = 7; +var tOutputStatInfo = 8; +var tGetTsStream = 10; +var tGetTsStreamRsp = 11; +var tDecode = 12; +var tVidInterval = 13; +var tPauseStream = 14; +var tResumeStream = 15; +var tSeekStream = 16; +var tMediaInfo = 20; +var tGetTsComplete = 21; +var tError = 100; +var tExcept = 101; +var tDisconnect = 102; +var tResetMSE = 103; +var tDecoderWorkerStartup = 200; + +var DOWNLOAD_WORKER_ID = 1; +var DECODE_WORKER_ID = 2; +var RENDER_WORKER_ID = 3; + +var playerIsLiveStream = true; +var playerVideoCodecStr = "H264"; +var playerVideoWidth = 1920; +var playerVideoHeight = 1080; +var playerVideoBitrate = 0; +var playerEnableAudio = true; +var appendBufferError = { audio: false, video: false }; + +function setLiveStreamType(isLiveStream) { + playerIsLiveStream = isLiveStream; +} +function GetLiveStreamType() { + return playerIsLiveStream; +} + +function setCodecTypeStr(str) { + playerVideoCodecStr = str; +} +function setVideoWidth(w) { + playerVideoWidth = w; +} +function setVideoHeight(h) { + playerVideoHeight = h; +} +function setVideoBitrate(b) { + playerVideoBitrate = b; +} + +function GetCodecTypeStr() { + return playerVideoCodecStr; +} +function GetVideoWidth() { + return playerVideoWidth; +} +function GetVideoHeight() { + return playerVideoHeight; +} +function GetVideoBitrate() { + return playerVideoBitrate; +} + +function SetEnableAudio(b) { + playerEnableAudio = b; +} +function GetEnableAudio() { + return playerEnableAudio; +} + +function ClearAppendBufferError() { + appendBufferError.video = false; + appendBufferError.audio = false; +} +function SetAppendBufferError(type) { + + if (type === 'video') { + appendBufferError.video = true; + } else if (type === 'audio') { + appendBufferError.audio = true; + } +} +function GetAppendBufferError() { + return appendBufferError; +} + +function sleep(ms) { + return new Promise(function (resolve) { + return setTimeout(resolve, ms); + }); +} + +function MediaWorkerLog(str) { + var now = new Date(); + var year = now.getFullYear(); + var month = now.getMonth() + 1; + var date = now.getDate(); + var day = now.getDay(); //得到周几 + var hour = now.getHours(); //得到小时 + var minu = now.getMinutes(); //得到分钟 + var sec = now.getSeconds(); //得到秒 + var _time = ""; + _time = year + "-" + month + "-" + date + " " + hour + ":" + minu + ":" + sec; + + console.log("[" + _time + "]: " + str); +} + +function getFullURL() { + var query = window.location.href; + var param_arr = query.split("/"); + + var path = ""; + //for (var i = 0; i < param_arr.length - 1; i++) { + for (var i = 0; i < 3; i++) { + path += param_arr[i]; + path += "/"; + } + return path; +} + +/***/ }), + +/***/ "My4w": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var inherits = __webpack_require__("mwrz") +var Buffer = __webpack_require__("DLTi").Buffer + +var Base = __webpack_require__("onRW") + +var ZEROS = Buffer.alloc(128) +var blocksize = 64 + +function Hmac (alg, key) { + Base.call(this, 'digest') + if (typeof key === 'string') { + key = Buffer.from(key) + } + + this._alg = alg + this._key = key + + if (key.length > blocksize) { + key = alg(key) + } else if (key.length < blocksize) { + key = Buffer.concat([key, ZEROS], blocksize) + } + + var ipad = this._ipad = Buffer.allocUnsafe(blocksize) + var opad = this._opad = Buffer.allocUnsafe(blocksize) + + for (var i = 0; i < blocksize; i++) { + ipad[i] = key[i] ^ 0x36 + opad[i] = key[i] ^ 0x5C + } + + this._hash = [ipad] +} + +inherits(Hmac, Base) + +Hmac.prototype._update = function (data) { + this._hash.push(data) +} + +Hmac.prototype._final = function () { + var h = this._alg(Buffer.concat(this._hash)) + return this._alg(Buffer.concat([this._opad, h])) +} +module.exports = Hmac + + +/***/ }), + +/***/ "N85c": +/***/ (function(module, exports) { + +module.exports = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIiA+DQo8IS0tDQoyMDEzLTktMzA6IENyZWF0ZWQuDQotLT4NCjxzdmc+DQo8bWV0YWRhdGE+DQpDcmVhdGVkIGJ5IGljb25mb250DQo8L21ldGFkYXRhPg0KPGRlZnM+DQoNCjxmb250IGlkPSJpY29uZm9udCIgaG9yaXotYWR2LXg9IjEwMjQiID4NCiAgPGZvbnQtZmFjZQ0KICAgIGZvbnQtZmFtaWx5PSJpY29uZm9udCINCiAgICBmb250LXdlaWdodD0iNTAwIg0KICAgIGZvbnQtc3RyZXRjaD0ibm9ybWFsIg0KICAgIHVuaXRzLXBlci1lbT0iMTAyNCINCiAgICBhc2NlbnQ9Ijg5NiINCiAgICBkZXNjZW50PSItMTI4Ig0KICAvPg0KICAgIDxtaXNzaW5nLWdseXBoIC8+DQogICAgDQogICAgPGdseXBoIGdseXBoLW5hbWU9InBpY3R1cmUiIHVuaWNvZGU9IiYjNTkwNTU7IiBkPSJNMTE5MC4wMjE1NjUgNzc3Ljc5NDc4M2gtMTU5LjYxMDQzNUw5NDMuODE2MzQ4IDg2Ny45NTEzMDRhMzMuNjEzOTEzIDMzLjYxMzkxMyAwIDAgMS0yNC4wODYyNjEgMTAuMjRINDE2LjcyMzQ3OGEzMy40ODAzNDggMzMuNDgwMzQ4IDAgMCAxLTIzLjk5NzIxNy0xMC4xOTU0NzhMMzA1LjM3NDYwOSA3NzcuNzk0NzgzaC0xNTkuODMzMDQ0QzgzLjM0NDY5NiA3NzcuNzk0NzgzIDMzLjM5MTMwNCA3MjYuOTUwOTU3IDMzLjM5MTMwNCA2NjQuMzUzMzkxdi02NjEuMTQ3ODI2YzAtNjIuMzMwNDM1IDUwLjE3Ni0xMTMuMzk2ODcgMTEyLjIzOTMwNS0xMTMuMzk2ODY5SDExOTAuMDY2MDg3YzYyLjAxODc4MyAwIDExMi4yMzkzMDQgNTAuOTMyODcgMTEyLjIzOTMwNCAxMTMuMzk2ODY5VjY2NC4zNTMzOTFjLTAuMDQ0NTIyIDYyLjM3NDk1Ny01MC4yMjA1MjIgMTEzLjQ0MTM5MS0xMTIuMjgzODI2IDExMy40NDEzOTJ6IG00NS40NTY2OTYtNzc0LjU4OTIxOGMwLTI1LjgyMjYwOS0yMC41MjQ1MjItNDYuNjE0MjYxLTQ1LjQ1NjY5Ni00Ni42MTQyNjFIMTQ1LjYzMDYwOWMtMjQuODg3NjUyIDAtNDUuNDU2Njk2IDIwLjg4MDY5Ni00NS40NTY2OTYgNDYuNjE0MjYxVjY2NC4zNTMzOTFjMCAyNS45NTYxNzQgMjAuMzQ2NDM1IDQ2LjY1ODc4MyA0NS4zNjc2NTIgNDYuNjU4NzgzaDE3My45OTA5NTdhMzMuNDgwMzQ4IDMzLjQ4MDM0OCAwIDAgMSAyMy45OTcyMTcgMTAuMTk1NDc4TDQzMC44ODEzOTEgODExLjQwODY5Nmg0NzQuNjAxNzM5bDg2LjYzOTMwNS05MC4xNTY1MjJjNi4zMjIwODctNi41NDQ2OTYgMTUuMDAzODI2LTEwLjI0IDI0LjA4NjI2MS0xMC4yNGgxNzMuODEyODY5YzI0LjkzMjE3NCAwIDQ1LjQ1NjY5Ni0yMC45MjUyMTcgNDUuNDU2Njk2LTQ2LjY1ODc4M3YtNjYxLjE0NzgyNnpNNjY3LjgyNjA4NyA1NzMuMjE3MzkxYTIzMy43MzkxMyAyMzMuNzM5MTMgMCAxIDEgMC4wNDQ1MjItNDY3LjUyMjc4MkEyMzMuNzM5MTMgMjMzLjczOTEzIDAgMCAxIDY2Ny44MjYwODcgNTczLjIxNzM5MXogbTAtNDAwLjY5NTY1MmExNjYuOTU2NTIyIDE2Ni45NTY1MjIgMCAxIDAgMCAzMzMuOTEzMDQ0IDE2Ni45NTY1MjIgMTY2Ljk1NjUyMiAwIDAgMCAwLTMzMy45MTMwNDR6TTExMTkuODk5ODI2IDYxNy43MzkxM2gtNjYuNzgyNjA5YTMzLjM5MTMwNCAzMy4zOTEzMDQgMCAwIDEgMC02Ni43ODI2MDhoNjYuNzgyNjA5YTMzLjM5MTMwNCAzMy4zOTEzMDQgMCAwIDEgMCA2Ni43ODI2MDh6IiAgaG9yaXotYWR2LXg9IjEzMzUiIC8+DQoNCiAgICANCg0KDQogIDwvZm9udD4NCjwvZGVmcz48L3N2Zz4NCg==" + +/***/ }), + +/***/ "NBqP": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global, module) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +/*! + * vConsole v3.14.6 (https://github.com/Tencent/vConsole) + * + * Tencent is pleased to support the open source community by making vConsole available. + * Copyright (C) 2017 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + */ +!function (t, n) { + "object" == ( false ? "undefined" : _typeof(exports)) && "object" == ( false ? "undefined" : _typeof(module)) ? module.exports = n() : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (n), + __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? + (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : "object" == (typeof exports === "undefined" ? "undefined" : _typeof(exports)) ? exports.VConsole = n() : t.VConsole = n(); +}(this || self, function () { + return function () { + var __webpack_modules__ = { 4264: function _(t, n, e) { + t.exports = e(7588); + }, 5036: function _(t, n, e) { + e(1719), e(5677), e(6394), e(5334), e(6969), e(2021), e(8328), e(2129);var r = e(1287);t.exports = r.Promise; + }, 2582: function _(t, n, e) { + e(1646), e(6394), e(2004), e(462), e(8407), e(2429), e(1172), e(8288), e(1274), e(8201), e(6626), e(3211), e(9952), e(15), e(9831), e(7521), e(2972), e(6956), e(5222), e(2257);var r = e(1287);t.exports = r.Symbol; + }, 8257: function _(t, n, e) { + var r = e(7583), + o = e(9212), + i = e(5637), + a = r.TypeError;t.exports = function (t) { + if (o(t)) return t;throw a(i(t) + " is not a function"); + }; + }, 1186: function _(t, n, e) { + var r = e(7583), + o = e(2097), + i = e(5637), + a = r.TypeError;t.exports = function (t) { + if (o(t)) return t;throw a(i(t) + " is not a constructor"); + }; + }, 9882: function _(t, n, e) { + var r = e(7583), + o = e(9212), + i = r.String, + a = r.TypeError;t.exports = function (t) { + if ("object" == (typeof t === "undefined" ? "undefined" : _typeof(t)) || o(t)) return t;throw a("Can't set " + i(t) + " as a prototype"); + }; + }, 6288: function _(t, n, e) { + var r = e(3649), + o = e(3590), + i = e(4615), + a = r("unscopables"), + c = Array.prototype;null == c[a] && i.f(c, a, { configurable: !0, value: o(null) }), t.exports = function (t) { + c[a][t] = !0; + }; + }, 4761: function _(t, n, e) { + var r = e(7583), + o = e(2447), + i = r.TypeError;t.exports = function (t, n) { + if (o(n, t)) return t;throw i("Incorrect invocation"); + }; + }, 2569: function _(t, n, e) { + var r = e(7583), + o = e(794), + i = r.String, + a = r.TypeError;t.exports = function (t) { + if (o(t)) return t;throw a(i(t) + " is not an object"); + }; + }, 5766: function _(t, n, e) { + var r = e(2977), + o = e(6782), + i = e(1825), + a = function a(t) { + return function (n, e, a) { + var c, + u = r(n), + s = i(u), + l = o(a, s);if (t && e != e) { + for (; s > l;) { + if ((c = u[l++]) != c) return !0; + } + } else for (; s > l; l++) { + if ((t || l in u) && u[l] === e) return t || l || 0; + }return !t && -1; + }; + };t.exports = { includes: a(!0), indexOf: a(!1) }; + }, 4805: function _(t, n, e) { + var r = e(2938), + o = e(7386), + i = e(5044), + a = e(1324), + c = e(1825), + u = e(4822), + s = o([].push), + l = function l(t) { + var n = 1 == t, + e = 2 == t, + o = 3 == t, + l = 4 == t, + f = 6 == t, + d = 7 == t, + v = 5 == t || f;return function (p, h, g, m) { + for (var _, b, y = a(p), w = i(y), E = r(h, g), L = c(w), T = 0, O = m || u, C = n ? O(p, L) : e || d ? O(p, 0) : void 0; L > T; T++) { + if ((v || T in w) && (b = E(_ = w[T], T, y), t)) if (n) C[T] = b;else if (b) switch (t) {case 3: + return !0;case 5: + return _;case 6: + return T;case 2: + s(C, _);} else switch (t) {case 4: + return !1;case 7: + s(C, _);} + }return f ? -1 : o || l ? l : C; + }; + };t.exports = { forEach: l(0), map: l(1), filter: l(2), some: l(3), every: l(4), find: l(5), findIndex: l(6), filterReject: l(7) }; + }, 9269: function _(t, n, e) { + var r = e(6544), + o = e(3649), + i = e(4061), + a = o("species");t.exports = function (t) { + return i >= 51 || !r(function () { + var n = [];return (n.constructor = {})[a] = function () { + return { foo: 1 }; + }, 1 !== n[t](Boolean).foo; + }); + }; + }, 4546: function _(t, n, e) { + var r = e(7583), + o = e(6782), + i = e(1825), + a = e(5999), + c = r.Array, + u = Math.max;t.exports = function (t, n, e) { + for (var r = i(t), s = o(n, r), l = o(void 0 === e ? r : e, r), f = c(u(l - s, 0)), d = 0; s < l; s++, d++) { + a(f, d, t[s]); + }return f.length = d, f; + }; + }, 6917: function _(t, n, e) { + var r = e(7386);t.exports = r([].slice); + }, 5289: function _(t, n, e) { + var r = e(7583), + o = e(4521), + i = e(2097), + a = e(794), + c = e(3649)("species"), + u = r.Array;t.exports = function (t) { + var n;return o(t) && (n = t.constructor, (i(n) && (n === u || o(n.prototype)) || a(n) && null === (n = n[c])) && (n = void 0)), void 0 === n ? u : n; + }; + }, 4822: function _(t, n, e) { + var r = e(5289);t.exports = function (t, n) { + return new (r(t))(0 === n ? 0 : n); + }; + }, 3616: function _(t, n, e) { + var r = e(3649)("iterator"), + o = !1;try { + var i = 0, + a = { next: function next() { + return { done: !!i++ }; + }, return: function _return() { + o = !0; + } };a[r] = function () { + return this; + }, Array.from(a, function () { + throw 2; + }); + } catch (t) {}t.exports = function (t, n) { + if (!n && !o) return !1;var e = !1;try { + var i = {};i[r] = function () { + return { next: function next() { + return { done: e = !0 }; + } }; + }, t(i); + } catch (t) {}return e; + }; + }, 9624: function _(t, n, e) { + var r = e(7386), + o = r({}.toString), + i = r("".slice);t.exports = function (t) { + return i(o(t), 8, -1); + }; + }, 3058: function _(t, n, e) { + var r = e(7583), + o = e(8191), + i = e(9212), + a = e(9624), + c = e(3649)("toStringTag"), + u = r.Object, + s = "Arguments" == a(function () { + return arguments; + }());t.exports = o ? a : function (t) { + var n, e, r;return void 0 === t ? "Undefined" : null === t ? "Null" : "string" == typeof (e = function (t, n) { + try { + return t[n]; + } catch (t) {} + }(n = u(t), c)) ? e : s ? a(n) : "Object" == (r = a(n)) && i(n.callee) ? "Arguments" : r; + }; + }, 1509: function _(t, n, e) { + var r = e(7386)("".replace), + o = String(Error("zxcasd").stack), + i = /\n\s*at [^:]*:[^\n]*/, + a = i.test(o);t.exports = function (t, n) { + if (a && "string" == typeof t) for (; n--;) { + t = r(t, i, ""); + }return t; + }; + }, 3478: function _(t, n, e) { + var r = e(2870), + o = e(929), + i = e(6683), + a = e(4615);t.exports = function (t, n, e) { + for (var c = o(n), u = a.f, s = i.f, l = 0; l < c.length; l++) { + var f = c[l];r(t, f) || e && r(e, f) || u(t, f, s(n, f)); + } + }; + }, 926: function _(t, n, e) { + var r = e(6544);t.exports = !r(function () { + function t() {}return t.prototype.constructor = null, Object.getPrototypeOf(new t()) !== t.prototype; + }); + }, 4683: function _(t, n, e) { + "use strict"; + var r = e(2365).IteratorPrototype, + o = e(3590), + i = e(4677), + a = e(8821), + c = e(339), + u = function u() { + return this; + };t.exports = function (t, n, e, s) { + var l = n + " Iterator";return t.prototype = o(r, { next: i(+!s, e) }), a(t, l, !1, !0), c[l] = u, t; + }; + }, 57: function _(t, n, e) { + var r = e(8494), + o = e(4615), + i = e(4677);t.exports = r ? function (t, n, e) { + return o.f(t, n, i(1, e)); + } : function (t, n, e) { + return t[n] = e, t; + }; + }, 4677: function _(t) { + t.exports = function (t, n) { + return { enumerable: !(1 & t), configurable: !(2 & t), writable: !(4 & t), value: n }; + }; + }, 5999: function _(t, n, e) { + "use strict"; + var r = e(8734), + o = e(4615), + i = e(4677);t.exports = function (t, n, e) { + var a = r(n);a in t ? o.f(t, a, i(0, e)) : t[a] = e; + }; + }, 9012: function _(t, n, e) { + "use strict"; + var r = e(7263), + o = e(8262), + i = e(6268), + a = e(4340), + c = e(9212), + u = e(4683), + s = e(729), + l = e(7496), + f = e(8821), + d = e(57), + v = e(1270), + p = e(3649), + h = e(339), + g = e(2365), + m = a.PROPER, + _ = a.CONFIGURABLE, + b = g.IteratorPrototype, + y = g.BUGGY_SAFARI_ITERATORS, + w = p("iterator"), + E = "keys", + L = "values", + T = "entries", + O = function O() { + return this; + };t.exports = function (t, n, e, a, p, g, C) { + u(e, n, a);var x, + I, + D, + R = function R(t) { + if (t === p && S) return S;if (!y && t in M) return M[t];switch (t) {case E:case L:case T: + return function () { + return new e(this, t); + };}return function () { + return new e(this); + }; + }, + k = n + " Iterator", + P = !1, + M = t.prototype, + $ = M[w] || M["@@iterator"] || p && M[p], + S = !y && $ || R(p), + j = "Array" == n && M.entries || $;if (j && (x = s(j.call(new t()))) !== Object.prototype && x.next && (i || s(x) === b || (l ? l(x, b) : c(x[w]) || v(x, w, O)), f(x, k, !0, !0), i && (h[k] = O)), m && p == L && $ && $.name !== L && (!i && _ ? d(M, "name", L) : (P = !0, S = function S() { + return o($, this); + })), p) if (I = { values: R(L), keys: g ? S : R(E), entries: R(T) }, C) for (D in I) { + (y || P || !(D in M)) && v(M, D, I[D]); + } else r({ target: n, proto: !0, forced: y || P }, I);return i && !C || M[w] === S || v(M, w, S, { name: p }), h[n] = S, I; + }; + }, 2219: function _(t, n, e) { + var r = e(1287), + o = e(2870), + i = e(491), + a = e(4615).f;t.exports = function (t) { + var n = r.Symbol || (r.Symbol = {});o(n, t) || a(n, t, { value: i.f(t) }); + }; + }, 8494: function _(t, n, e) { + var r = e(6544);t.exports = !r(function () { + return 7 != Object.defineProperty({}, 1, { get: function get() { + return 7; + } })[1]; + }); + }, 6668: function _(t, n, e) { + var r = e(7583), + o = e(794), + i = r.document, + a = o(i) && o(i.createElement);t.exports = function (t) { + return a ? i.createElement(t) : {}; + }; + }, 6778: function _(t) { + t.exports = { CSSRuleList: 0, CSSStyleDeclaration: 0, CSSValueList: 0, ClientRectList: 0, DOMRectList: 0, DOMStringList: 0, DOMTokenList: 1, DataTransferItemList: 0, FileList: 0, HTMLAllCollection: 0, HTMLCollection: 0, HTMLFormElement: 0, HTMLSelectElement: 0, MediaList: 0, MimeTypeArray: 0, NamedNodeMap: 0, NodeList: 1, PaintRequestList: 0, Plugin: 0, PluginArray: 0, SVGLengthList: 0, SVGNumberList: 0, SVGPathSegList: 0, SVGPointList: 0, SVGStringList: 0, SVGTransformList: 0, SourceBufferList: 0, StyleSheetList: 0, TextTrackCueList: 0, TextTrackList: 0, TouchList: 0 }; + }, 9307: function _(t, n, e) { + var r = e(6668)("span").classList, + o = r && r.constructor && r.constructor.prototype;t.exports = o === Object.prototype ? void 0 : o; + }, 2274: function _(t) { + t.exports = "object" == (typeof window === "undefined" ? "undefined" : _typeof(window)); + }, 3256: function _(t, n, e) { + var r = e(6918), + o = e(7583);t.exports = /ipad|iphone|ipod/i.test(r) && void 0 !== o.Pebble; + }, 7020: function _(t, n, e) { + var r = e(6918);t.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(r); + }, 5354: function _(t, n, e) { + var r = e(9624), + o = e(7583);t.exports = "process" == r(o.process); + }, 6846: function _(t, n, e) { + var r = e(6918);t.exports = /web0s(?!.*chrome)/i.test(r); + }, 6918: function _(t, n, e) { + var r = e(5897);t.exports = r("navigator", "userAgent") || ""; + }, 4061: function _(t, n, e) { + var r, + o, + i = e(7583), + a = e(6918), + c = i.process, + u = i.Deno, + s = c && c.versions || u && u.version, + l = s && s.v8;l && (o = (r = l.split("."))[0] > 0 && r[0] < 4 ? 1 : +(r[0] + r[1])), !o && a && (!(r = a.match(/Edge\/(\d+)/)) || r[1] >= 74) && (r = a.match(/Chrome\/(\d+)/)) && (o = +r[1]), t.exports = o; + }, 5690: function _(t) { + t.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]; + }, 1178: function _(t, n, e) { + var r = e(6544), + o = e(4677);t.exports = !r(function () { + var t = Error("a");return !("stack" in t) || (Object.defineProperty(t, "stack", o(1, 7)), 7 !== t.stack); + }); + }, 7263: function _(t, n, e) { + var r = e(7583), + o = e(6683).f, + i = e(57), + a = e(1270), + c = e(460), + u = e(3478), + s = e(4451);t.exports = function (t, n) { + var e, + l, + f, + d, + v, + p = t.target, + h = t.global, + g = t.stat;if (e = h ? r : g ? r[p] || c(p, {}) : (r[p] || {}).prototype) for (l in n) { + if (d = n[l], f = t.noTargetGet ? (v = o(e, l)) && v.value : e[l], !s(h ? l : p + (g ? "." : "#") + l, t.forced) && void 0 !== f) { + if ((typeof d === "undefined" ? "undefined" : _typeof(d)) == (typeof f === "undefined" ? "undefined" : _typeof(f))) continue;u(d, f); + }(t.sham || f && f.sham) && i(d, "sham", !0), a(e, l, d, t); + } + }; + }, 6544: function _(t) { + t.exports = function (t) { + try { + return !!t(); + } catch (t) { + return !0; + } + }; + }, 1611: function _(t, n, e) { + var r = e(8987), + o = Function.prototype, + i = o.apply, + a = o.call;t.exports = "object" == (typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) && Reflect.apply || (r ? a.bind(i) : function () { + return a.apply(i, arguments); + }); + }, 2938: function _(t, n, e) { + var r = e(7386), + o = e(8257), + i = e(8987), + a = r(r.bind);t.exports = function (t, n) { + return o(t), void 0 === n ? t : i ? a(t, n) : function () { + return t.apply(n, arguments); + }; + }; + }, 8987: function _(t, n, e) { + var r = e(6544);t.exports = !r(function () { + var t = function () {}.bind();return "function" != typeof t || t.hasOwnProperty("prototype"); + }); + }, 8262: function _(t, n, e) { + var r = e(8987), + o = Function.prototype.call;t.exports = r ? o.bind(o) : function () { + return o.apply(o, arguments); + }; + }, 4340: function _(t, n, e) { + var r = e(8494), + o = e(2870), + i = Function.prototype, + a = r && Object.getOwnPropertyDescriptor, + c = o(i, "name"), + u = c && "something" === function () {}.name, + s = c && (!r || r && a(i, "name").configurable);t.exports = { EXISTS: c, PROPER: u, CONFIGURABLE: s }; + }, 7386: function _(t, n, e) { + var r = e(8987), + o = Function.prototype, + i = o.bind, + a = o.call, + c = r && i.bind(a, a);t.exports = r ? function (t) { + return t && c(t); + } : function (t) { + return t && function () { + return a.apply(t, arguments); + }; + }; + }, 5897: function _(t, n, e) { + var r = e(7583), + o = e(9212), + i = function i(t) { + return o(t) ? t : void 0; + };t.exports = function (t, n) { + return arguments.length < 2 ? i(r[t]) : r[t] && r[t][n]; + }; + }, 8272: function _(t, n, e) { + var r = e(3058), + o = e(911), + i = e(339), + a = e(3649)("iterator");t.exports = function (t) { + if (null != t) return o(t, a) || o(t, "@@iterator") || i[r(t)]; + }; + }, 6307: function _(t, n, e) { + var r = e(7583), + o = e(8262), + i = e(8257), + a = e(2569), + c = e(5637), + u = e(8272), + s = r.TypeError;t.exports = function (t, n) { + var e = arguments.length < 2 ? u(t) : n;if (i(e)) return a(o(e, t));throw s(c(t) + " is not iterable"); + }; + }, 911: function _(t, n, e) { + var r = e(8257);t.exports = function (t, n) { + var e = t[n];return null == e ? void 0 : r(e); + }; + }, 7583: function _(t, n, e) { + var r = function r(t) { + return t && t.Math == Math && t; + };t.exports = r("object" == (typeof globalThis === "undefined" ? "undefined" : _typeof(globalThis)) && globalThis) || r("object" == (typeof window === "undefined" ? "undefined" : _typeof(window)) && window) || r("object" == (typeof self === "undefined" ? "undefined" : _typeof(self)) && self) || r("object" == _typeof(e.g) && e.g) || function () { + return this; + }() || Function("return this")(); + }, 2870: function _(t, n, e) { + var r = e(7386), + o = e(1324), + i = r({}.hasOwnProperty);t.exports = Object.hasOwn || function (t, n) { + return i(o(t), n); + }; + }, 4639: function _(t) { + t.exports = {}; + }, 2716: function _(t, n, e) { + var r = e(7583);t.exports = function (t, n) { + var e = r.console;e && e.error && (1 == arguments.length ? e.error(t) : e.error(t, n)); + }; + }, 482: function _(t, n, e) { + var r = e(5897);t.exports = r("document", "documentElement"); + }, 275: function _(t, n, e) { + var r = e(8494), + o = e(6544), + i = e(6668);t.exports = !r && !o(function () { + return 7 != Object.defineProperty(i("div"), "a", { get: function get() { + return 7; + } }).a; + }); + }, 5044: function _(t, n, e) { + var r = e(7583), + o = e(7386), + i = e(6544), + a = e(9624), + c = r.Object, + u = o("".split);t.exports = i(function () { + return !c("z").propertyIsEnumerable(0); + }) ? function (t) { + return "String" == a(t) ? u(t, "") : c(t); + } : c; + }, 9734: function _(t, n, e) { + var r = e(7386), + o = e(9212), + i = e(1314), + a = r(Function.toString);o(i.inspectSource) || (i.inspectSource = function (t) { + return a(t); + }), t.exports = i.inspectSource; + }, 4402: function _(t, n, e) { + var r = e(794), + o = e(57);t.exports = function (t, n) { + r(n) && "cause" in n && o(t, "cause", n.cause); + }; + }, 2743: function _(t, n, e) { + var r, + o, + i, + a = e(9491), + c = e(7583), + u = e(7386), + s = e(794), + l = e(57), + f = e(2870), + d = e(1314), + v = e(9137), + p = e(4639), + h = "Object already initialized", + g = c.TypeError, + m = c.WeakMap;if (a || d.state) { + var _ = d.state || (d.state = new m()), + b = u(_.get), + y = u(_.has), + w = u(_.set);r = function r(t, n) { + if (y(_, t)) throw new g(h);return n.facade = t, w(_, t, n), n; + }, o = function o(t) { + return b(_, t) || {}; + }, i = function i(t) { + return y(_, t); + }; + } else { + var E = v("state");p[E] = !0, r = function r(t, n) { + if (f(t, E)) throw new g(h);return n.facade = t, l(t, E, n), n; + }, o = function o(t) { + return f(t, E) ? t[E] : {}; + }, i = function i(t) { + return f(t, E); + }; + }t.exports = { set: r, get: o, has: i, enforce: function enforce(t) { + return i(t) ? o(t) : r(t, {}); + }, getterFor: function getterFor(t) { + return function (n) { + var e;if (!s(n) || (e = o(n)).type !== t) throw g("Incompatible receiver, " + t + " required");return e; + }; + } }; + }, 114: function _(t, n, e) { + var r = e(3649), + o = e(339), + i = r("iterator"), + a = Array.prototype;t.exports = function (t) { + return void 0 !== t && (o.Array === t || a[i] === t); + }; + }, 4521: function _(t, n, e) { + var r = e(9624);t.exports = Array.isArray || function (t) { + return "Array" == r(t); + }; + }, 9212: function _(t) { + t.exports = function (t) { + return "function" == typeof t; + }; + }, 2097: function _(t, n, e) { + var r = e(7386), + o = e(6544), + i = e(9212), + a = e(3058), + c = e(5897), + u = e(9734), + s = function s() {}, + l = [], + f = c("Reflect", "construct"), + d = /^\s*(?:class|function)\b/, + v = r(d.exec), + p = !d.exec(s), + h = function h(t) { + if (!i(t)) return !1;try { + return f(s, l, t), !0; + } catch (t) { + return !1; + } + }, + g = function g(t) { + if (!i(t)) return !1;switch (a(t)) {case "AsyncFunction":case "GeneratorFunction":case "AsyncGeneratorFunction": + return !1;}try { + return p || !!v(d, u(t)); + } catch (t) { + return !0; + } + };g.sham = !0, t.exports = !f || o(function () { + var t;return h(h.call) || !h(Object) || !h(function () { + t = !0; + }) || t; + }) ? g : h; + }, 4451: function _(t, n, e) { + var r = e(6544), + o = e(9212), + i = /#|\.prototype\./, + a = function a(t, n) { + var e = u[c(t)];return e == l || e != s && (o(n) ? r(n) : !!n); + }, + c = a.normalize = function (t) { + return String(t).replace(i, ".").toLowerCase(); + }, + u = a.data = {}, + s = a.NATIVE = "N", + l = a.POLYFILL = "P";t.exports = a; + }, 794: function _(t, n, e) { + var r = e(9212);t.exports = function (t) { + return "object" == (typeof t === "undefined" ? "undefined" : _typeof(t)) ? null !== t : r(t); + }; + }, 6268: function _(t) { + t.exports = !1; + }, 5871: function _(t, n, e) { + var r = e(7583), + o = e(5897), + i = e(9212), + a = e(2447), + c = e(7786), + u = r.Object;t.exports = c ? function (t) { + return "symbol" == (typeof t === "undefined" ? "undefined" : _typeof(t)); + } : function (t) { + var n = o("Symbol");return i(n) && a(n.prototype, u(t)); + }; + }, 4026: function _(t, n, e) { + var r = e(7583), + o = e(2938), + i = e(8262), + a = e(2569), + c = e(5637), + u = e(114), + s = e(1825), + l = e(2447), + f = e(6307), + d = e(8272), + v = e(7093), + p = r.TypeError, + h = function h(t, n) { + this.stopped = t, this.result = n; + }, + g = h.prototype;t.exports = function (t, n, e) { + var r, + m, + _, + b, + y, + w, + E, + L = e && e.that, + T = !(!e || !e.AS_ENTRIES), + O = !(!e || !e.IS_ITERATOR), + C = !(!e || !e.INTERRUPTED), + x = o(n, L), + I = function I(t) { + return r && v(r, "normal", t), new h(!0, t); + }, + D = function D(t) { + return T ? (a(t), C ? x(t[0], t[1], I) : x(t[0], t[1])) : C ? x(t, I) : x(t); + };if (O) r = t;else { + if (!(m = d(t))) throw p(c(t) + " is not iterable");if (u(m)) { + for (_ = 0, b = s(t); b > _; _++) { + if ((y = D(t[_])) && l(g, y)) return y; + }return new h(!1); + }r = f(t, m); + }for (w = r.next; !(E = i(w, r)).done;) { + try { + y = D(E.value); + } catch (t) { + v(r, "throw", t); + }if ("object" == (typeof y === "undefined" ? "undefined" : _typeof(y)) && y && l(g, y)) return y; + }return new h(!1); + }; + }, 7093: function _(t, n, e) { + var r = e(8262), + o = e(2569), + i = e(911);t.exports = function (t, n, e) { + var a, c;o(t);try { + if (!(a = i(t, "return"))) { + if ("throw" === n) throw e;return e; + }a = r(a, t); + } catch (t) { + c = !0, a = t; + }if ("throw" === n) throw e;if (c) throw a;return o(a), e; + }; + }, 2365: function _(t, n, e) { + "use strict"; + var r, + o, + i, + a = e(6544), + c = e(9212), + u = e(3590), + s = e(729), + l = e(1270), + f = e(3649), + d = e(6268), + v = f("iterator"), + p = !1;[].keys && ("next" in (i = [].keys()) ? (o = s(s(i))) !== Object.prototype && (r = o) : p = !0), null == r || a(function () { + var t = {};return r[v].call(t) !== t; + }) ? r = {} : d && (r = u(r)), c(r[v]) || l(r, v, function () { + return this; + }), t.exports = { IteratorPrototype: r, BUGGY_SAFARI_ITERATORS: p }; + }, 339: function _(t) { + t.exports = {}; + }, 1825: function _(t, n, e) { + var r = e(97);t.exports = function (t) { + return r(t.length); + }; + }, 2095: function _(t, n, e) { + var r, + o, + i, + a, + c, + u, + s, + l, + f = e(7583), + d = e(2938), + v = e(6683).f, + p = e(8117).set, + h = e(7020), + g = e(3256), + m = e(6846), + _ = e(5354), + b = f.MutationObserver || f.WebKitMutationObserver, + y = f.document, + w = f.process, + E = f.Promise, + L = v(f, "queueMicrotask"), + T = L && L.value;T || (r = function r() { + var t, n;for (_ && (t = w.domain) && t.exit(); o;) { + n = o.fn, o = o.next;try { + n(); + } catch (t) { + throw o ? a() : i = void 0, t; + } + }i = void 0, t && t.enter(); + }, h || _ || m || !b || !y ? !g && E && E.resolve ? ((s = E.resolve(void 0)).constructor = E, l = d(s.then, s), a = function a() { + l(r); + }) : _ ? a = function a() { + w.nextTick(r); + } : (p = d(p, f), a = function a() { + p(r); + }) : (c = !0, u = y.createTextNode(""), new b(r).observe(u, { characterData: !0 }), a = function a() { + u.data = c = !c; + })), t.exports = T || function (t) { + var n = { fn: t, next: void 0 };i && (i.next = n), o || (o = n, a()), i = n; + }; + }, 783: function _(t, n, e) { + var r = e(7583);t.exports = r.Promise; + }, 8640: function _(t, n, e) { + var r = e(4061), + o = e(6544);t.exports = !!Object.getOwnPropertySymbols && !o(function () { + var t = Symbol();return !String(t) || !(Object(t) instanceof Symbol) || !Symbol.sham && r && r < 41; + }); + }, 9491: function _(t, n, e) { + var r = e(7583), + o = e(9212), + i = e(9734), + a = r.WeakMap;t.exports = o(a) && /native code/.test(i(a)); + }, 5084: function _(t, n, e) { + "use strict"; + var r = e(8257), + o = function o(t) { + var n, e;this.promise = new t(function (t, r) { + if (void 0 !== n || void 0 !== e) throw TypeError("Bad Promise constructor");n = t, e = r; + }), this.resolve = r(n), this.reject = r(e); + };t.exports.f = function (t) { + return new o(t); + }; + }, 2764: function _(t, n, e) { + var r = e(8320);t.exports = function (t, n) { + return void 0 === t ? arguments.length < 2 ? "" : n : r(t); + }; + }, 3590: function _(t, n, e) { + var r, + o = e(2569), + i = e(8728), + a = e(5690), + c = e(4639), + u = e(482), + s = e(6668), + l = e(9137), + f = l("IE_PROTO"), + d = function d() {}, + v = function v(t) { + return "<script>" + t + "</" + "script>"; + }, + p = function p(t) { + t.write(v("")), t.close();var n = t.parentWindow.Object;return t = null, n; + }, + _h = function h() { + try { + r = new ActiveXObject("htmlfile"); + } catch (t) {}var t, n;_h = "undefined" != typeof document ? document.domain && r ? p(r) : ((n = s("iframe")).style.display = "none", u.appendChild(n), n.src = String("javascript:"), (t = n.contentWindow.document).open(), t.write(v("document.F=Object")), t.close(), t.F) : p(r);for (var e = a.length; e--;) { + delete _h.prototype[a[e]]; + }return _h(); + };c[f] = !0, t.exports = Object.create || function (t, n) { + var e;return null !== t ? (d.prototype = o(t), e = new d(), d.prototype = null, e[f] = t) : e = _h(), void 0 === n ? e : i.f(e, n); + }; + }, 8728: function _(t, n, e) { + var r = e(8494), + o = e(7670), + i = e(4615), + a = e(2569), + c = e(2977), + u = e(5432);n.f = r && !o ? Object.defineProperties : function (t, n) { + a(t);for (var e, r = c(n), o = u(n), s = o.length, l = 0; s > l;) { + i.f(t, e = o[l++], r[e]); + }return t; + }; + }, 4615: function _(t, n, e) { + var r = e(7583), + o = e(8494), + i = e(275), + a = e(7670), + c = e(2569), + u = e(8734), + s = r.TypeError, + l = Object.defineProperty, + f = Object.getOwnPropertyDescriptor, + d = "enumerable", + v = "configurable", + p = "writable";n.f = o ? a ? function (t, n, e) { + if (c(t), n = u(n), c(e), "function" == typeof t && "prototype" === n && "value" in e && p in e && !e.writable) { + var r = f(t, n);r && r.writable && (t[n] = e.value, e = { configurable: v in e ? e.configurable : r.configurable, enumerable: d in e ? e.enumerable : r.enumerable, writable: !1 }); + }return l(t, n, e); + } : l : function (t, n, e) { + if (c(t), n = u(n), c(e), i) try { + return l(t, n, e); + } catch (t) {}if ("get" in e || "set" in e) throw s("Accessors not supported");return "value" in e && (t[n] = e.value), t; + }; + }, 6683: function _(t, n, e) { + var r = e(8494), + o = e(8262), + i = e(112), + a = e(4677), + c = e(2977), + u = e(8734), + s = e(2870), + l = e(275), + f = Object.getOwnPropertyDescriptor;n.f = r ? f : function (t, n) { + if (t = c(t), n = u(n), l) try { + return f(t, n); + } catch (t) {}if (s(t, n)) return a(!o(i.f, t, n), t[n]); + }; + }, 3130: function _(t, n, e) { + var r = e(9624), + o = e(2977), + i = e(9275).f, + a = e(4546), + c = "object" == (typeof window === "undefined" ? "undefined" : _typeof(window)) && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];t.exports.f = function (t) { + return c && "Window" == r(t) ? function (t) { + try { + return i(t); + } catch (t) { + return a(c); + } + }(t) : i(o(t)); + }; + }, 9275: function _(t, n, e) { + var r = e(8356), + o = e(5690).concat("length", "prototype");n.f = Object.getOwnPropertyNames || function (t) { + return r(t, o); + }; + }, 4012: function _(t, n) { + n.f = Object.getOwnPropertySymbols; + }, 729: function _(t, n, e) { + var r = e(7583), + o = e(2870), + i = e(9212), + a = e(1324), + c = e(9137), + u = e(926), + s = c("IE_PROTO"), + l = r.Object, + f = l.prototype;t.exports = u ? l.getPrototypeOf : function (t) { + var n = a(t);if (o(n, s)) return n[s];var e = n.constructor;return i(e) && n instanceof e ? e.prototype : n instanceof l ? f : null; + }; + }, 2447: function _(t, n, e) { + var r = e(7386);t.exports = r({}.isPrototypeOf); + }, 8356: function _(t, n, e) { + var r = e(7386), + o = e(2870), + i = e(2977), + a = e(5766).indexOf, + c = e(4639), + u = r([].push);t.exports = function (t, n) { + var e, + r = i(t), + s = 0, + l = [];for (e in r) { + !o(c, e) && o(r, e) && u(l, e); + }for (; n.length > s;) { + o(r, e = n[s++]) && (~a(l, e) || u(l, e)); + }return l; + }; + }, 5432: function _(t, n, e) { + var r = e(8356), + o = e(5690);t.exports = Object.keys || function (t) { + return r(t, o); + }; + }, 112: function _(t, n) { + "use strict"; + var e = {}.propertyIsEnumerable, + r = Object.getOwnPropertyDescriptor, + o = r && !e.call({ 1: 2 }, 1);n.f = o ? function (t) { + var n = r(this, t);return !!n && n.enumerable; + } : e; + }, 7496: function _(t, n, e) { + var r = e(7386), + o = e(2569), + i = e(9882);t.exports = Object.setPrototypeOf || ("__proto__" in {} ? function () { + var t, + n = !1, + e = {};try { + (t = r(Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set))(e, []), n = e instanceof Array; + } catch (t) {}return function (e, r) { + return o(e), i(r), n ? t(e, r) : e.__proto__ = r, e; + }; + }() : void 0); + }, 3060: function _(t, n, e) { + "use strict"; + var r = e(8191), + o = e(3058);t.exports = r ? {}.toString : function () { + return "[object " + o(this) + "]"; + }; + }, 6252: function _(t, n, e) { + var r = e(7583), + o = e(8262), + i = e(9212), + a = e(794), + c = r.TypeError;t.exports = function (t, n) { + var e, r;if ("string" === n && i(e = t.toString) && !a(r = o(e, t))) return r;if (i(e = t.valueOf) && !a(r = o(e, t))) return r;if ("string" !== n && i(e = t.toString) && !a(r = o(e, t))) return r;throw c("Can't convert object to primitive value"); + }; + }, 929: function _(t, n, e) { + var r = e(5897), + o = e(7386), + i = e(9275), + a = e(4012), + c = e(2569), + u = o([].concat);t.exports = r("Reflect", "ownKeys") || function (t) { + var n = i.f(c(t)), + e = a.f;return e ? u(n, e(t)) : n; + }; + }, 1287: function _(t, n, e) { + var r = e(7583);t.exports = r; + }, 544: function _(t) { + t.exports = function (t) { + try { + return { error: !1, value: t() }; + } catch (t) { + return { error: !0, value: t }; + } + }; + }, 5732: function _(t, n, e) { + var r = e(2569), + o = e(794), + i = e(5084);t.exports = function (t, n) { + if (r(t), o(n) && n.constructor === t) return n;var e = i.f(t);return (0, e.resolve)(n), e.promise; + }; + }, 2723: function _(t) { + var n = function n() { + this.head = null, this.tail = null; + };n.prototype = { add: function add(t) { + var n = { item: t, next: null };this.head ? this.tail.next = n : this.head = n, this.tail = n; + }, get: function get() { + var t = this.head;if (t) return this.head = t.next, this.tail === t && (this.tail = null), t.item; + } }, t.exports = n; + }, 6893: function _(t, n, e) { + var r = e(1270);t.exports = function (t, n, e) { + for (var o in n) { + r(t, o, n[o], e); + }return t; + }; + }, 1270: function _(t, n, e) { + var r = e(7583), + o = e(9212), + i = e(2870), + a = e(57), + c = e(460), + u = e(9734), + s = e(2743), + l = e(4340).CONFIGURABLE, + f = s.get, + d = s.enforce, + v = String(String).split("String");(t.exports = function (t, n, e, u) { + var s, + f = !!u && !!u.unsafe, + p = !!u && !!u.enumerable, + h = !!u && !!u.noTargetGet, + g = u && void 0 !== u.name ? u.name : n;o(e) && ("Symbol(" === String(g).slice(0, 7) && (g = "[" + String(g).replace(/^Symbol\(([^)]*)\)/, "$1") + "]"), (!i(e, "name") || l && e.name !== g) && a(e, "name", g), (s = d(e)).source || (s.source = v.join("string" == typeof g ? g : ""))), t !== r ? (f ? !h && t[n] && (p = !0) : delete t[n], p ? t[n] = e : a(t, n, e)) : p ? t[n] = e : c(n, e); + })(Function.prototype, "toString", function () { + return o(this) && f(this).source || u(this); + }); + }, 3955: function _(t, n, e) { + var r = e(7583).TypeError;t.exports = function (t) { + if (null == t) throw r("Can't call method on " + t);return t; + }; + }, 460: function _(t, n, e) { + var r = e(7583), + o = Object.defineProperty;t.exports = function (t, n) { + try { + o(r, t, { value: n, configurable: !0, writable: !0 }); + } catch (e) { + r[t] = n; + }return n; + }; + }, 7730: function _(t, n, e) { + "use strict"; + var r = e(5897), + o = e(4615), + i = e(3649), + a = e(8494), + c = i("species");t.exports = function (t) { + var n = r(t), + e = o.f;a && n && !n[c] && e(n, c, { configurable: !0, get: function get() { + return this; + } }); + }; + }, 8821: function _(t, n, e) { + var r = e(4615).f, + o = e(2870), + i = e(3649)("toStringTag");t.exports = function (t, n, e) { + t && !e && (t = t.prototype), t && !o(t, i) && r(t, i, { configurable: !0, value: n }); + }; + }, 9137: function _(t, n, e) { + var r = e(7836), + o = e(8284), + i = r("keys");t.exports = function (t) { + return i[t] || (i[t] = o(t)); + }; + }, 1314: function _(t, n, e) { + var r = e(7583), + o = e(460), + i = "__core-js_shared__", + a = r[i] || o(i, {});t.exports = a; + }, 7836: function _(t, n, e) { + var r = e(6268), + o = e(1314);(t.exports = function (t, n) { + return o[t] || (o[t] = void 0 !== n ? n : {}); + })("versions", []).push({ version: "3.21.1", mode: r ? "pure" : "global", copyright: "© 2014-2022 Denis Pushkarev (zloirock.ru)", license: "https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE", source: "https://github.com/zloirock/core-js" }); + }, 564: function _(t, n, e) { + var r = e(2569), + o = e(1186), + i = e(3649)("species");t.exports = function (t, n) { + var e, + a = r(t).constructor;return void 0 === a || null == (e = r(a)[i]) ? n : o(e); + }; + }, 6389: function _(t, n, e) { + var r = e(7386), + o = e(7486), + i = e(8320), + a = e(3955), + c = r("".charAt), + u = r("".charCodeAt), + s = r("".slice), + l = function l(t) { + return function (n, e) { + var r, + l, + f = i(a(n)), + d = o(e), + v = f.length;return d < 0 || d >= v ? t ? "" : void 0 : (r = u(f, d)) < 55296 || r > 56319 || d + 1 === v || (l = u(f, d + 1)) < 56320 || l > 57343 ? t ? c(f, d) : r : t ? s(f, d, d + 2) : l - 56320 + (r - 55296 << 10) + 65536; + }; + };t.exports = { codeAt: l(!1), charAt: l(!0) }; + }, 8117: function _(t, n, e) { + var r, + o, + i, + a, + c = e(7583), + u = e(1611), + s = e(2938), + l = e(9212), + f = e(2870), + d = e(6544), + v = e(482), + p = e(6917), + h = e(6668), + g = e(7520), + m = e(7020), + _ = e(5354), + b = c.setImmediate, + y = c.clearImmediate, + w = c.process, + E = c.Dispatch, + L = c.Function, + T = c.MessageChannel, + O = c.String, + C = 0, + x = {}, + I = "onreadystatechange";try { + r = c.location; + } catch (t) {}var D = function D(t) { + if (f(x, t)) { + var n = x[t];delete x[t], n(); + } + }, + R = function R(t) { + return function () { + D(t); + }; + }, + k = function k(t) { + D(t.data); + }, + P = function P(t) { + c.postMessage(O(t), r.protocol + "//" + r.host); + };b && y || (b = function b(t) { + g(arguments.length, 1);var n = l(t) ? t : L(t), + e = p(arguments, 1);return x[++C] = function () { + u(n, void 0, e); + }, o(C), C; + }, y = function y(t) { + delete x[t]; + }, _ ? o = function o(t) { + w.nextTick(R(t)); + } : E && E.now ? o = function o(t) { + E.now(R(t)); + } : T && !m ? (a = (i = new T()).port2, i.port1.onmessage = k, o = s(a.postMessage, a)) : c.addEventListener && l(c.postMessage) && !c.importScripts && r && "file:" !== r.protocol && !d(P) ? (o = P, c.addEventListener("message", k, !1)) : o = I in h("script") ? function (t) { + v.appendChild(h("script")).onreadystatechange = function () { + v.removeChild(this), D(t); + }; + } : function (t) { + setTimeout(R(t), 0); + }), t.exports = { set: b, clear: y }; + }, 6782: function _(t, n, e) { + var r = e(7486), + o = Math.max, + i = Math.min;t.exports = function (t, n) { + var e = r(t);return e < 0 ? o(e + n, 0) : i(e, n); + }; + }, 2977: function _(t, n, e) { + var r = e(5044), + o = e(3955);t.exports = function (t) { + return r(o(t)); + }; + }, 7486: function _(t) { + var n = Math.ceil, + e = Math.floor;t.exports = function (t) { + var r = +t;return r != r || 0 === r ? 0 : (r > 0 ? e : n)(r); + }; + }, 97: function _(t, n, e) { + var r = e(7486), + o = Math.min;t.exports = function (t) { + return t > 0 ? o(r(t), 9007199254740991) : 0; + }; + }, 1324: function _(t, n, e) { + var r = e(7583), + o = e(3955), + i = r.Object;t.exports = function (t) { + return i(o(t)); + }; + }, 2670: function _(t, n, e) { + var r = e(7583), + o = e(8262), + i = e(794), + a = e(5871), + c = e(911), + u = e(6252), + s = e(3649), + l = r.TypeError, + f = s("toPrimitive");t.exports = function (t, n) { + if (!i(t) || a(t)) return t;var e, + r = c(t, f);if (r) { + if (void 0 === n && (n = "default"), e = o(r, t, n), !i(e) || a(e)) return e;throw l("Can't convert object to primitive value"); + }return void 0 === n && (n = "number"), u(t, n); + }; + }, 8734: function _(t, n, e) { + var r = e(2670), + o = e(5871);t.exports = function (t) { + var n = r(t, "string");return o(n) ? n : n + ""; + }; + }, 8191: function _(t, n, e) { + var r = {};r[e(3649)("toStringTag")] = "z", t.exports = "[object z]" === String(r); + }, 8320: function _(t, n, e) { + var r = e(7583), + o = e(3058), + i = r.String;t.exports = function (t) { + if ("Symbol" === o(t)) throw TypeError("Cannot convert a Symbol value to a string");return i(t); + }; + }, 5637: function _(t, n, e) { + var r = e(7583).String;t.exports = function (t) { + try { + return r(t); + } catch (t) { + return "Object"; + } + }; + }, 8284: function _(t, n, e) { + var r = e(7386), + o = 0, + i = Math.random(), + a = r(1..toString);t.exports = function (t) { + return "Symbol(" + (void 0 === t ? "" : t) + ")_" + a(++o + i, 36); + }; + }, 7786: function _(t, n, e) { + var r = e(8640);t.exports = r && !Symbol.sham && "symbol" == _typeof(Symbol.iterator); + }, 7670: function _(t, n, e) { + var r = e(8494), + o = e(6544);t.exports = r && o(function () { + return 42 != Object.defineProperty(function () {}, "prototype", { value: 42, writable: !1 }).prototype; + }); + }, 7520: function _(t, n, e) { + var r = e(7583).TypeError;t.exports = function (t, n) { + if (t < n) throw r("Not enough arguments");return t; + }; + }, 491: function _(t, n, e) { + var r = e(3649);n.f = r; + }, 3649: function _(t, n, e) { + var r = e(7583), + o = e(7836), + i = e(2870), + a = e(8284), + c = e(8640), + u = e(7786), + s = o("wks"), + l = r.Symbol, + f = l && l.for, + d = u ? l : l && l.withoutSetter || a;t.exports = function (t) { + if (!i(s, t) || !c && "string" != typeof s[t]) { + var n = "Symbol." + t;c && i(l, t) ? s[t] = l[t] : s[t] = u && f ? f(n) : d(n); + }return s[t]; + }; + }, 1719: function _(t, n, e) { + "use strict"; + var r = e(7263), + o = e(7583), + i = e(2447), + a = e(729), + c = e(7496), + u = e(3478), + s = e(3590), + l = e(57), + f = e(4677), + d = e(1509), + v = e(4402), + p = e(4026), + h = e(2764), + g = e(3649), + m = e(1178), + _ = g("toStringTag"), + b = o.Error, + y = [].push, + w = function w(t, n) { + var e, + r = arguments.length > 2 ? arguments[2] : void 0, + o = i(E, this);c ? e = c(new b(), o ? a(this) : E) : (e = o ? this : s(E), l(e, _, "Error")), void 0 !== n && l(e, "message", h(n)), m && l(e, "stack", d(e.stack, 1)), v(e, r);var u = [];return p(t, y, { that: u }), l(e, "errors", u), e; + };c ? c(w, b) : u(w, b, { name: !0 });var E = w.prototype = s(b.prototype, { constructor: f(1, w), message: f(1, ""), name: f(1, "AggregateError") });r({ global: !0 }, { AggregateError: w }); + }, 1646: function _(t, n, e) { + "use strict"; + var r = e(7263), + o = e(7583), + i = e(6544), + a = e(4521), + c = e(794), + u = e(1324), + s = e(1825), + l = e(5999), + f = e(4822), + d = e(9269), + v = e(3649), + p = e(4061), + h = v("isConcatSpreadable"), + g = 9007199254740991, + m = "Maximum allowed index exceeded", + _ = o.TypeError, + b = p >= 51 || !i(function () { + var t = [];return t[h] = !1, t.concat()[0] !== t; + }), + y = d("concat"), + w = function w(t) { + if (!c(t)) return !1;var n = t[h];return void 0 !== n ? !!n : a(t); + };r({ target: "Array", proto: !0, forced: !b || !y }, { concat: function concat(t) { + var n, + e, + r, + o, + i, + a = u(this), + c = f(a, 0), + d = 0;for (n = -1, r = arguments.length; n < r; n++) { + if (w(i = -1 === n ? a : arguments[n])) { + if (d + (o = s(i)) > g) throw _(m);for (e = 0; e < o; e++, d++) { + e in i && l(c, d, i[e]); + } + } else { + if (d >= g) throw _(m);l(c, d++, i); + } + }return c.length = d, c; + } }); + }, 5677: function _(t, n, e) { + "use strict"; + var r = e(2977), + o = e(6288), + i = e(339), + a = e(2743), + c = e(4615).f, + u = e(9012), + s = e(6268), + l = e(8494), + f = "Array Iterator", + d = a.set, + v = a.getterFor(f);t.exports = u(Array, "Array", function (t, n) { + d(this, { type: f, target: r(t), index: 0, kind: n }); + }, function () { + var t = v(this), + n = t.target, + e = t.kind, + r = t.index++;return !n || r >= n.length ? (t.target = void 0, { value: void 0, done: !0 }) : "keys" == e ? { value: r, done: !1 } : "values" == e ? { value: n[r], done: !1 } : { value: [r, n[r]], done: !1 }; + }, "values");var p = i.Arguments = i.Array;if (o("keys"), o("values"), o("entries"), !s && l && "values" !== p.name) try { + c(p, "name", { value: "values" }); + } catch (t) {} + }, 6956: function _(t, n, e) { + var r = e(7583);e(8821)(r.JSON, "JSON", !0); + }, 5222: function _(t, n, e) { + e(8821)(Math, "Math", !0); + }, 6394: function _(t, n, e) { + var r = e(8191), + o = e(1270), + i = e(3060);r || o(Object.prototype, "toString", i, { unsafe: !0 }); + }, 6969: function _(t, n, e) { + "use strict"; + var r = e(7263), + o = e(8262), + i = e(8257), + a = e(5084), + c = e(544), + u = e(4026);r({ target: "Promise", stat: !0 }, { allSettled: function allSettled(t) { + var n = this, + e = a.f(n), + r = e.resolve, + s = e.reject, + l = c(function () { + var e = i(n.resolve), + a = [], + c = 0, + s = 1;u(t, function (t) { + var i = c++, + u = !1;s++, o(e, n, t).then(function (t) { + u || (u = !0, a[i] = { status: "fulfilled", value: t }, --s || r(a)); + }, function (t) { + u || (u = !0, a[i] = { status: "rejected", reason: t }, --s || r(a)); + }); + }), --s || r(a); + });return l.error && s(l.value), e.promise; + } }); + }, 2021: function _(t, n, e) { + "use strict"; + var r = e(7263), + o = e(8257), + i = e(5897), + a = e(8262), + c = e(5084), + u = e(544), + s = e(4026), + l = "No one promise resolved";r({ target: "Promise", stat: !0 }, { any: function any(t) { + var n = this, + e = i("AggregateError"), + r = c.f(n), + f = r.resolve, + d = r.reject, + v = u(function () { + var r = o(n.resolve), + i = [], + c = 0, + u = 1, + v = !1;s(t, function (t) { + var o = c++, + s = !1;u++, a(r, n, t).then(function (t) { + s || v || (v = !0, f(t)); + }, function (t) { + s || v || (s = !0, i[o] = t, --u || d(new e(i, l))); + }); + }), --u || d(new e(i, l)); + });return v.error && d(v.value), r.promise; + } }); + }, 8328: function _(t, n, e) { + "use strict"; + var r = e(7263), + o = e(6268), + i = e(783), + a = e(6544), + c = e(5897), + u = e(9212), + s = e(564), + l = e(5732), + f = e(1270);if (r({ target: "Promise", proto: !0, real: !0, forced: !!i && a(function () { + i.prototype.finally.call({ then: function then() {} }, function () {}); + }) }, { finally: function _finally(t) { + var n = s(this, c("Promise")), + e = u(t);return this.then(e ? function (e) { + return l(n, t()).then(function () { + return e; + }); + } : t, e ? function (e) { + return l(n, t()).then(function () { + throw e; + }); + } : t); + } }), !o && u(i)) { + var d = c("Promise").prototype.finally;i.prototype.finally !== d && f(i.prototype, "finally", d, { unsafe: !0 }); + } + }, 5334: function _(t, n, e) { + "use strict"; + var r, + o, + i, + a, + c = e(7263), + u = e(6268), + s = e(7583), + l = e(5897), + f = e(8262), + d = e(783), + v = e(1270), + p = e(6893), + h = e(7496), + g = e(8821), + m = e(7730), + _ = e(8257), + b = e(9212), + y = e(794), + w = e(4761), + E = e(9734), + L = e(4026), + T = e(3616), + O = e(564), + C = e(8117).set, + x = e(2095), + I = e(5732), + D = e(2716), + R = e(5084), + k = e(544), + P = e(2723), + M = e(2743), + $ = e(4451), + S = e(3649), + j = e(2274), + B = e(5354), + A = e(4061), + U = S("species"), + N = "Promise", + V = M.getterFor(N), + G = M.set, + W = M.getterFor(N), + K = d && d.prototype, + F = d, + H = K, + q = s.TypeError, + Z = s.document, + X = s.process, + z = R.f, + Y = z, + J = !!(Z && Z.createEvent && s.dispatchEvent), + Q = b(s.PromiseRejectionEvent), + tt = "unhandledrejection", + nt = !1, + et = $(N, function () { + var t = E(F), + n = t !== String(F);if (!n && 66 === A) return !0;if (u && !H.finally) return !0;if (A >= 51 && /native code/.test(t)) return !1;var e = new F(function (t) { + t(1); + }), + r = function r(t) { + t(function () {}, function () {}); + };return (e.constructor = {})[U] = r, !(nt = e.then(function () {}) instanceof r) || !n && j && !Q; + }), + rt = et || !T(function (t) { + F.all(t).catch(function () {}); + }), + ot = function ot(t) { + var n;return !(!y(t) || !b(n = t.then)) && n; + }, + it = function it(t, n) { + var e, + r, + o, + i = n.value, + a = 1 == n.state, + c = a ? t.ok : t.fail, + u = t.resolve, + s = t.reject, + l = t.domain;try { + c ? (a || (2 === n.rejection && lt(n), n.rejection = 1), !0 === c ? e = i : (l && l.enter(), e = c(i), l && (l.exit(), o = !0)), e === t.promise ? s(q("Promise-chain cycle")) : (r = ot(e)) ? f(r, e, u, s) : u(e)) : s(i); + } catch (t) { + l && !o && l.exit(), s(t); + } + }, + at = function at(t, n) { + t.notified || (t.notified = !0, x(function () { + for (var e, r = t.reactions; e = r.get();) { + it(e, t); + }t.notified = !1, n && !t.rejection && ut(t); + })); + }, + ct = function ct(t, n, e) { + var r, o;J ? ((r = Z.createEvent("Event")).promise = n, r.reason = e, r.initEvent(t, !1, !0), s.dispatchEvent(r)) : r = { promise: n, reason: e }, !Q && (o = s["on" + t]) ? o(r) : t === tt && D("Unhandled promise rejection", e); + }, + ut = function ut(t) { + f(C, s, function () { + var n, + e = t.facade, + r = t.value;if (st(t) && (n = k(function () { + B ? X.emit("unhandledRejection", r, e) : ct(tt, e, r); + }), t.rejection = B || st(t) ? 2 : 1, n.error)) throw n.value; + }); + }, + st = function st(t) { + return 1 !== t.rejection && !t.parent; + }, + lt = function lt(t) { + f(C, s, function () { + var n = t.facade;B ? X.emit("rejectionHandled", n) : ct("rejectionhandled", n, t.value); + }); + }, + ft = function ft(t, n, e) { + return function (r) { + t(n, r, e); + }; + }, + dt = function dt(t, n, e) { + t.done || (t.done = !0, e && (t = e), t.value = n, t.state = 2, at(t, !0)); + }, + vt = function t(n, e, r) { + if (!n.done) { + n.done = !0, r && (n = r);try { + if (n.facade === e) throw q("Promise can't be resolved itself");var o = ot(e);o ? x(function () { + var r = { done: !1 };try { + f(o, e, ft(t, r, n), ft(dt, r, n)); + } catch (t) { + dt(r, t, n); + } + }) : (n.value = e, n.state = 1, at(n, !1)); + } catch (t) { + dt({ done: !1 }, t, n); + } + } + };if (et && (H = (F = function F(t) { + w(this, H), _(t), f(r, this);var n = V(this);try { + t(ft(vt, n), ft(dt, n)); + } catch (t) { + dt(n, t); + } + }).prototype, (r = function r(t) { + G(this, { type: N, done: !1, notified: !1, parent: !1, reactions: new P(), rejection: !1, state: 0, value: void 0 }); + }).prototype = p(H, { then: function then(t, n) { + var e = W(this), + r = z(O(this, F));return e.parent = !0, r.ok = !b(t) || t, r.fail = b(n) && n, r.domain = B ? X.domain : void 0, 0 == e.state ? e.reactions.add(r) : x(function () { + it(r, e); + }), r.promise; + }, catch: function _catch(t) { + return this.then(void 0, t); + } }), o = function o() { + var t = new r(), + n = V(t);this.promise = t, this.resolve = ft(vt, n), this.reject = ft(dt, n); + }, R.f = z = function z(t) { + return t === F || t === i ? new o(t) : Y(t); + }, !u && b(d) && K !== Object.prototype)) { + a = K.then, nt || (v(K, "then", function (t, n) { + var e = this;return new F(function (t, n) { + f(a, e, t, n); + }).then(t, n); + }, { unsafe: !0 }), v(K, "catch", H.catch, { unsafe: !0 }));try { + delete K.constructor; + } catch (t) {}h && h(K, H); + }c({ global: !0, wrap: !0, forced: et }, { Promise: F }), g(F, N, !1, !0), m(N), i = l(N), c({ target: N, stat: !0, forced: et }, { reject: function reject(t) { + var n = z(this);return f(n.reject, void 0, t), n.promise; + } }), c({ target: N, stat: !0, forced: u || et }, { resolve: function resolve(t) { + return I(u && this === i ? F : this, t); + } }), c({ target: N, stat: !0, forced: rt }, { all: function all(t) { + var n = this, + e = z(n), + r = e.resolve, + o = e.reject, + i = k(function () { + var e = _(n.resolve), + i = [], + a = 0, + c = 1;L(t, function (t) { + var u = a++, + s = !1;c++, f(e, n, t).then(function (t) { + s || (s = !0, i[u] = t, --c || r(i)); + }, o); + }), --c || r(i); + });return i.error && o(i.value), e.promise; + }, race: function race(t) { + var n = this, + e = z(n), + r = e.reject, + o = k(function () { + var o = _(n.resolve);L(t, function (t) { + f(o, n, t).then(e.resolve, r); + }); + });return o.error && r(o.value), e.promise; + } }); + }, 2257: function _(t, n, e) { + var r = e(7263), + o = e(7583), + i = e(8821);r({ global: !0 }, { Reflect: {} }), i(o.Reflect, "Reflect", !0); + }, 2129: function _(t, n, e) { + "use strict"; + var r = e(6389).charAt, + o = e(8320), + i = e(2743), + a = e(9012), + c = "String Iterator", + u = i.set, + s = i.getterFor(c);a(String, "String", function (t) { + u(this, { type: c, string: o(t), index: 0 }); + }, function () { + var t, + n = s(this), + e = n.string, + o = n.index;return o >= e.length ? { value: void 0, done: !0 } : (t = r(e, o), n.index += t.length, { value: t, done: !1 }); + }); + }, 462: function _(t, n, e) { + e(2219)("asyncIterator"); + }, 8407: function _(t, n, e) { + "use strict"; + var r = e(7263), + o = e(8494), + i = e(7583), + a = e(7386), + c = e(2870), + u = e(9212), + s = e(2447), + l = e(8320), + f = e(4615).f, + d = e(3478), + v = i.Symbol, + p = v && v.prototype;if (o && u(v) && (!("description" in p) || void 0 !== v().description)) { + var h = {}, + g = function g() { + var t = arguments.length < 1 || void 0 === arguments[0] ? void 0 : l(arguments[0]), + n = s(p, this) ? new v(t) : void 0 === t ? v() : v(t);return "" === t && (h[n] = !0), n; + };d(g, v), g.prototype = p, p.constructor = g;var m = "Symbol(test)" == String(v("test")), + _ = a(p.toString), + b = a(p.valueOf), + y = /^Symbol\((.*)\)[^)]+$/, + w = a("".replace), + E = a("".slice);f(p, "description", { configurable: !0, get: function get() { + var t = b(this), + n = _(t);if (c(h, t)) return "";var e = m ? E(n, 7, -1) : w(n, y, "$1");return "" === e ? void 0 : e; + } }), r({ global: !0, forced: !0 }, { Symbol: g }); + } + }, 2429: function _(t, n, e) { + e(2219)("hasInstance"); + }, 1172: function _(t, n, e) { + e(2219)("isConcatSpreadable"); + }, 8288: function _(t, n, e) { + e(2219)("iterator"); + }, 2004: function _(t, n, e) { + "use strict"; + var r = e(7263), + o = e(7583), + i = e(5897), + a = e(1611), + c = e(8262), + u = e(7386), + s = e(6268), + l = e(8494), + f = e(8640), + d = e(6544), + v = e(2870), + p = e(4521), + h = e(9212), + g = e(794), + m = e(2447), + _ = e(5871), + b = e(2569), + y = e(1324), + w = e(2977), + E = e(8734), + L = e(8320), + T = e(4677), + O = e(3590), + C = e(5432), + x = e(9275), + I = e(3130), + D = e(4012), + R = e(6683), + k = e(4615), + P = e(8728), + M = e(112), + $ = e(6917), + S = e(1270), + j = e(7836), + B = e(9137), + A = e(4639), + U = e(8284), + N = e(3649), + V = e(491), + G = e(2219), + W = e(8821), + K = e(2743), + F = e(4805).forEach, + H = B("hidden"), + q = "Symbol", + Z = N("toPrimitive"), + X = K.set, + z = K.getterFor(q), + Y = Object.prototype, + J = o.Symbol, + Q = J && J.prototype, + tt = o.TypeError, + nt = o.QObject, + et = i("JSON", "stringify"), + rt = R.f, + ot = k.f, + it = I.f, + at = M.f, + ct = u([].push), + ut = j("symbols"), + st = j("op-symbols"), + lt = j("string-to-symbol-registry"), + ft = j("symbol-to-string-registry"), + dt = j("wks"), + vt = !nt || !nt.prototype || !nt.prototype.findChild, + pt = l && d(function () { + return 7 != O(ot({}, "a", { get: function get() { + return ot(this, "a", { value: 7 }).a; + } })).a; + }) ? function (t, n, e) { + var r = rt(Y, n);r && delete Y[n], ot(t, n, e), r && t !== Y && ot(Y, n, r); + } : ot, + ht = function ht(t, n) { + var e = ut[t] = O(Q);return X(e, { type: q, tag: t, description: n }), l || (e.description = n), e; + }, + gt = function gt(t, n, e) { + t === Y && gt(st, n, e), b(t);var r = E(n);return b(e), v(ut, r) ? (e.enumerable ? (v(t, H) && t[H][r] && (t[H][r] = !1), e = O(e, { enumerable: T(0, !1) })) : (v(t, H) || ot(t, H, T(1, {})), t[H][r] = !0), pt(t, r, e)) : ot(t, r, e); + }, + mt = function mt(t, n) { + b(t);var e = w(n), + r = C(e).concat(wt(e));return F(r, function (n) { + l && !c(_t, e, n) || gt(t, n, e[n]); + }), t; + }, + _t = function _t(t) { + var n = E(t), + e = c(at, this, n);return !(this === Y && v(ut, n) && !v(st, n)) && (!(e || !v(this, n) || !v(ut, n) || v(this, H) && this[H][n]) || e); + }, + bt = function bt(t, n) { + var e = w(t), + r = E(n);if (e !== Y || !v(ut, r) || v(st, r)) { + var o = rt(e, r);return !o || !v(ut, r) || v(e, H) && e[H][r] || (o.enumerable = !0), o; + } + }, + yt = function yt(t) { + var n = it(w(t)), + e = [];return F(n, function (t) { + v(ut, t) || v(A, t) || ct(e, t); + }), e; + }, + wt = function wt(t) { + var n = t === Y, + e = it(n ? st : w(t)), + r = [];return F(e, function (t) { + !v(ut, t) || n && !v(Y, t) || ct(r, ut[t]); + }), r; + };(f || (J = function J() { + if (m(Q, this)) throw tt("Symbol is not a constructor");var t = arguments.length && void 0 !== arguments[0] ? L(arguments[0]) : void 0, + n = U(t), + e = function t(e) { + this === Y && c(t, st, e), v(this, H) && v(this[H], n) && (this[H][n] = !1), pt(this, n, T(1, e)); + };return l && vt && pt(Y, n, { configurable: !0, set: e }), ht(n, t); + }, S(Q = J.prototype, "toString", function () { + return z(this).tag; + }), S(J, "withoutSetter", function (t) { + return ht(U(t), t); + }), M.f = _t, k.f = gt, P.f = mt, R.f = bt, x.f = I.f = yt, D.f = wt, V.f = function (t) { + return ht(N(t), t); + }, l && (ot(Q, "description", { configurable: !0, get: function get() { + return z(this).description; + } }), s || S(Y, "propertyIsEnumerable", _t, { unsafe: !0 }))), r({ global: !0, wrap: !0, forced: !f, sham: !f }, { Symbol: J }), F(C(dt), function (t) { + G(t); + }), r({ target: q, stat: !0, forced: !f }, { for: function _for(t) { + var n = L(t);if (v(lt, n)) return lt[n];var e = J(n);return lt[n] = e, ft[e] = n, e; + }, keyFor: function keyFor(t) { + if (!_(t)) throw tt(t + " is not a symbol");if (v(ft, t)) return ft[t]; + }, useSetter: function useSetter() { + vt = !0; + }, useSimple: function useSimple() { + vt = !1; + } }), r({ target: "Object", stat: !0, forced: !f, sham: !l }, { create: function create(t, n) { + return void 0 === n ? O(t) : mt(O(t), n); + }, defineProperty: gt, defineProperties: mt, getOwnPropertyDescriptor: bt }), r({ target: "Object", stat: !0, forced: !f }, { getOwnPropertyNames: yt, getOwnPropertySymbols: wt }), r({ target: "Object", stat: !0, forced: d(function () { + D.f(1); + }) }, { getOwnPropertySymbols: function getOwnPropertySymbols(t) { + return D.f(y(t)); + } }), et) && r({ target: "JSON", stat: !0, forced: !f || d(function () { + var t = J();return "[null]" != et([t]) || "{}" != et({ a: t }) || "{}" != et(Object(t)); + }) }, { stringify: function stringify(t, n, e) { + var r = $(arguments), + o = n;if ((g(n) || void 0 !== t) && !_(t)) return p(n) || (n = function n(t, _n2) { + if (h(o) && (_n2 = c(o, this, t, _n2)), !_(_n2)) return _n2; + }), r[1] = n, a(et, null, r); + } });if (!Q[Z]) { + var Et = Q.valueOf;S(Q, Z, function (t) { + return c(Et, this); + }); + }W(J, q), A[H] = !0; + }, 8201: function _(t, n, e) { + e(2219)("matchAll"); + }, 1274: function _(t, n, e) { + e(2219)("match"); + }, 6626: function _(t, n, e) { + e(2219)("replace"); + }, 3211: function _(t, n, e) { + e(2219)("search"); + }, 9952: function _(t, n, e) { + e(2219)("species"); + }, 15: function _(t, n, e) { + e(2219)("split"); + }, 9831: function _(t, n, e) { + e(2219)("toPrimitive"); + }, 7521: function _(t, n, e) { + e(2219)("toStringTag"); + }, 2972: function _(t, n, e) { + e(2219)("unscopables"); + }, 4655: function _(t, n, e) { + var r = e(7583), + o = e(6778), + i = e(9307), + a = e(5677), + c = e(57), + u = e(3649), + s = u("iterator"), + l = u("toStringTag"), + f = a.values, + d = function d(t, n) { + if (t) { + if (t[s] !== f) try { + c(t, s, f); + } catch (n) { + t[s] = f; + }if (t[l] || c(t, l, n), o[n]) for (var e in a) { + if (t[e] !== a[e]) try { + c(t, e, a[e]); + } catch (n) { + t[e] = a[e]; + } + } + } + };for (var v in o) { + d(r[v] && r[v].prototype, v); + }d(i, "DOMTokenList"); + }, 8765: function _(t, n, e) { + var r = e(5036);e(4655), t.exports = r; + }, 5441: function _(t, n, e) { + var r = e(2582);e(4655), t.exports = r; + }, 7705: function _(t) { + "use strict"; + t.exports = function (t) { + var n = [];return n.toString = function () { + return this.map(function (n) { + var e = "", + r = void 0 !== n[5];return n[4] && (e += "@supports (".concat(n[4], ") {")), n[2] && (e += "@media ".concat(n[2], " {")), r && (e += "@layer".concat(n[5].length > 0 ? " ".concat(n[5]) : "", " {")), e += t(n), r && (e += "}"), n[2] && (e += "}"), n[4] && (e += "}"), e; + }).join(""); + }, n.i = function (t, e, r, o, i) { + "string" == typeof t && (t = [[null, t, void 0]]);var a = {};if (r) for (var c = 0; c < this.length; c++) { + var u = this[c][0];null != u && (a[u] = !0); + }for (var s = 0; s < t.length; s++) { + var l = [].concat(t[s]);r && a[l[0]] || (void 0 !== i && (void 0 === l[5] || (l[1] = "@layer".concat(l[5].length > 0 ? " ".concat(l[5]) : "", " {").concat(l[1], "}")), l[5] = i), e && (l[2] ? (l[1] = "@media ".concat(l[2], " {").concat(l[1], "}"), l[2] = e) : l[2] = e), o && (l[4] ? (l[1] = "@supports (".concat(l[4], ") {").concat(l[1], "}"), l[4] = o) : l[4] = "".concat(o)), n.push(l)); + } + }, n; + }; + }, 6738: function _(t) { + "use strict"; + t.exports = function (t) { + return t[1]; + }; + }, 8679: function _(t) { + var n = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver, + e = window.WeakMap;if (void 0 === e) { + var r = Object.defineProperty, + o = Date.now() % 1e9;(e = function e() { + this.name = "__st" + (1e9 * Math.random() >>> 0) + o++ + "__"; + }).prototype = { set: function set(t, n) { + var e = t[this.name];return e && e[0] === t ? e[1] = n : r(t, this.name, { value: [t, n], writable: !0 }), this; + }, get: function get(t) { + var n;return (n = t[this.name]) && n[0] === t ? n[1] : void 0; + }, delete: function _delete(t) { + var n = t[this.name];if (!n) return !1;var e = n[0] === t;return n[0] = n[1] = void 0, e; + }, has: function has(t) { + var n = t[this.name];return !!n && n[0] === t; + } }; + }var i = new e(), + a = window.msSetImmediate;if (!a) { + var c = [], + u = String(Math.random());window.addEventListener("message", function (t) { + if (t.data === u) { + var n = c;c = [], n.forEach(function (t) { + t(); + }); + } + }), a = function a(t) { + c.push(t), window.postMessage(u, "*"); + }; + }var s = !1, + l = [];function f() { + s = !1;var t = l;l = [], t.sort(function (t, n) { + return t.uid_ - n.uid_; + });var n = !1;t.forEach(function (t) { + var e = t.takeRecords();!function (t) { + t.nodes_.forEach(function (n) { + var e = i.get(n);e && e.forEach(function (n) { + n.observer === t && n.removeTransientObservers(); + }); + }); + }(t), e.length && (t.callback_(e, t), n = !0); + }), n && f(); + }function d(t, n) { + for (var e = t; e; e = e.parentNode) { + var r = i.get(e);if (r) for (var o = 0; o < r.length; o++) { + var a = r[o], + c = a.options;if (e === t || c.subtree) { + var u = n(c);u && a.enqueue(u); + } + } + } + }var v, + p, + h = 0;function g(t) { + this.callback_ = t, this.nodes_ = [], this.records_ = [], this.uid_ = ++h; + }function m(t, n) { + this.type = t, this.target = n, this.addedNodes = [], this.removedNodes = [], this.previousSibling = null, this.nextSibling = null, this.attributeName = null, this.attributeNamespace = null, this.oldValue = null; + }function _(t, n) { + return v = new m(t, n); + }function b(t) { + return p || ((e = new m((n = v).type, n.target)).addedNodes = n.addedNodes.slice(), e.removedNodes = n.removedNodes.slice(), e.previousSibling = n.previousSibling, e.nextSibling = n.nextSibling, e.attributeName = n.attributeName, e.attributeNamespace = n.attributeNamespace, e.oldValue = n.oldValue, (p = e).oldValue = t, p);var n, e; + }function y(t, n) { + return t === n ? t : p && ((e = t) === p || e === v) ? p : null;var e; + }function w(t, n, e) { + this.observer = t, this.target = n, this.options = e, this.transientObservedNodes = []; + }g.prototype = { observe: function observe(t, n) { + var e;if (e = t, t = window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(e) || e, !n.childList && !n.attributes && !n.characterData || n.attributeOldValue && !n.attributes || n.attributeFilter && n.attributeFilter.length && !n.attributes || n.characterDataOldValue && !n.characterData) throw new SyntaxError();var r, + o = i.get(t);o || i.set(t, o = []);for (var a = 0; a < o.length; a++) { + if (o[a].observer === this) { + (r = o[a]).removeListeners(), r.options = n;break; + } + }r || (r = new w(this, t, n), o.push(r), this.nodes_.push(t)), r.addListeners(); + }, disconnect: function disconnect() { + this.nodes_.forEach(function (t) { + for (var n = i.get(t), e = 0; e < n.length; e++) { + var r = n[e];if (r.observer === this) { + r.removeListeners(), n.splice(e, 1);break; + } + } + }, this), this.records_ = []; + }, takeRecords: function takeRecords() { + var t = this.records_;return this.records_ = [], t; + } }, w.prototype = { enqueue: function enqueue(t) { + var n, + e = this.observer.records_, + r = e.length;if (e.length > 0) { + var o = y(e[r - 1], t);if (o) return void (e[r - 1] = o); + } else n = this.observer, l.push(n), s || (s = !0, a(f));e[r] = t; + }, addListeners: function addListeners() { + this.addListeners_(this.target); + }, addListeners_: function addListeners_(t) { + var n = this.options;n.attributes && t.addEventListener("DOMAttrModified", this, !0), n.characterData && t.addEventListener("DOMCharacterDataModified", this, !0), n.childList && t.addEventListener("DOMNodeInserted", this, !0), (n.childList || n.subtree) && t.addEventListener("DOMNodeRemoved", this, !0); + }, removeListeners: function removeListeners() { + this.removeListeners_(this.target); + }, removeListeners_: function removeListeners_(t) { + var n = this.options;n.attributes && t.removeEventListener("DOMAttrModified", this, !0), n.characterData && t.removeEventListener("DOMCharacterDataModified", this, !0), n.childList && t.removeEventListener("DOMNodeInserted", this, !0), (n.childList || n.subtree) && t.removeEventListener("DOMNodeRemoved", this, !0); + }, addTransientObserver: function addTransientObserver(t) { + if (t !== this.target) { + this.addListeners_(t), this.transientObservedNodes.push(t);var n = i.get(t);n || i.set(t, n = []), n.push(this); + } + }, removeTransientObservers: function removeTransientObservers() { + var t = this.transientObservedNodes;this.transientObservedNodes = [], t.forEach(function (t) { + this.removeListeners_(t);for (var n = i.get(t), e = 0; e < n.length; e++) { + if (n[e] === this) { + n.splice(e, 1);break; + } + } + }, this); + }, handleEvent: function handleEvent(t) { + switch (t.stopImmediatePropagation(), t.type) {case "DOMAttrModified": + var n = t.attrName, + e = t.relatedNode.namespaceURI, + r = t.target;(i = new _("attributes", r)).attributeName = n, i.attributeNamespace = e;var o = null;"undefined" != typeof MutationEvent && t.attrChange === MutationEvent.ADDITION || (o = t.prevValue), d(r, function (t) { + if (t.attributes && (!t.attributeFilter || !t.attributeFilter.length || -1 !== t.attributeFilter.indexOf(n) || -1 !== t.attributeFilter.indexOf(e))) return t.attributeOldValue ? b(o) : i; + });break;case "DOMCharacterDataModified": + var i = _("characterData", r = t.target);o = t.prevValue;d(r, function (t) { + if (t.characterData) return t.characterDataOldValue ? b(o) : i; + });break;case "DOMNodeRemoved": + this.addTransientObserver(t.target);case "DOMNodeInserted": + r = t.relatedNode;var a, + c, + u = t.target;"DOMNodeInserted" === t.type ? (a = [u], c = []) : (a = [], c = [u]);var s = u.previousSibling, + l = u.nextSibling;(i = _("childList", r)).addedNodes = a, i.removedNodes = c, i.previousSibling = s, i.nextSibling = l, d(r, function (t) { + if (t.childList) return i; + });}v = p = void 0; + } }, n || (n = g), t.exports = n; + }, 7588: function _(t) { + var n = function (t) { + "use strict"; + var n, + e = Object.prototype, + r = e.hasOwnProperty, + o = "function" == typeof Symbol ? Symbol : {}, + i = o.iterator || "@@iterator", + a = o.asyncIterator || "@@asyncIterator", + c = o.toStringTag || "@@toStringTag";function u(t, n, e) { + return Object.defineProperty(t, n, { value: e, enumerable: !0, configurable: !0, writable: !0 }), t[n]; + }try { + u({}, ""); + } catch (t) { + u = function u(t, n, e) { + return t[n] = e; + }; + }function s(t, n, e, r) { + var o = n && n.prototype instanceof g ? n : g, + i = Object.create(o.prototype), + a = new I(r || []);return i._invoke = function (t, n, e) { + var r = f;return function (o, i) { + if (r === v) throw new Error("Generator is already running");if (r === p) { + if ("throw" === o) throw i;return R(); + }for (e.method = o, e.arg = i;;) { + var a = e.delegate;if (a) { + var c = O(a, e);if (c) { + if (c === h) continue;return c; + } + }if ("next" === e.method) e.sent = e._sent = e.arg;else if ("throw" === e.method) { + if (r === f) throw r = p, e.arg;e.dispatchException(e.arg); + } else "return" === e.method && e.abrupt("return", e.arg);r = v;var u = l(t, n, e);if ("normal" === u.type) { + if (r = e.done ? p : d, u.arg === h) continue;return { value: u.arg, done: e.done }; + }"throw" === u.type && (r = p, e.method = "throw", e.arg = u.arg); + } + }; + }(t, e, a), i; + }function l(t, n, e) { + try { + return { type: "normal", arg: t.call(n, e) }; + } catch (t) { + return { type: "throw", arg: t }; + } + }t.wrap = s;var f = "suspendedStart", + d = "suspendedYield", + v = "executing", + p = "completed", + h = {};function g() {}function m() {}function _() {}var b = {};u(b, i, function () { + return this; + });var y = Object.getPrototypeOf, + w = y && y(y(D([])));w && w !== e && r.call(w, i) && (b = w);var E = _.prototype = g.prototype = Object.create(b);function L(t) { + ["next", "throw", "return"].forEach(function (n) { + u(t, n, function (t) { + return this._invoke(n, t); + }); + }); + }function T(t, n) { + function e(o, i, a, c) { + var u = l(t[o], t, i);if ("throw" !== u.type) { + var s = u.arg, + f = s.value;return f && "object" == (typeof f === "undefined" ? "undefined" : _typeof(f)) && r.call(f, "__await") ? n.resolve(f.__await).then(function (t) { + e("next", t, a, c); + }, function (t) { + e("throw", t, a, c); + }) : n.resolve(f).then(function (t) { + s.value = t, a(s); + }, function (t) { + return e("throw", t, a, c); + }); + }c(u.arg); + }var o;this._invoke = function (t, r) { + function i() { + return new n(function (n, o) { + e(t, r, n, o); + }); + }return o = o ? o.then(i, i) : i(); + }; + }function O(t, e) { + var r = t.iterator[e.method];if (r === n) { + if (e.delegate = null, "throw" === e.method) { + if (t.iterator.return && (e.method = "return", e.arg = n, O(t, e), "throw" === e.method)) return h;e.method = "throw", e.arg = new TypeError("The iterator does not provide a 'throw' method"); + }return h; + }var o = l(r, t.iterator, e.arg);if ("throw" === o.type) return e.method = "throw", e.arg = o.arg, e.delegate = null, h;var i = o.arg;return i ? i.done ? (e[t.resultName] = i.value, e.next = t.nextLoc, "return" !== e.method && (e.method = "next", e.arg = n), e.delegate = null, h) : i : (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, h); + }function C(t) { + var n = { tryLoc: t[0] };1 in t && (n.catchLoc = t[1]), 2 in t && (n.finallyLoc = t[2], n.afterLoc = t[3]), this.tryEntries.push(n); + }function x(t) { + var n = t.completion || {};n.type = "normal", delete n.arg, t.completion = n; + }function I(t) { + this.tryEntries = [{ tryLoc: "root" }], t.forEach(C, this), this.reset(!0); + }function D(t) { + if (t) { + var e = t[i];if (e) return e.call(t);if ("function" == typeof t.next) return t;if (!isNaN(t.length)) { + var o = -1, + a = function e() { + for (; ++o < t.length;) { + if (r.call(t, o)) return e.value = t[o], e.done = !1, e; + }return e.value = n, e.done = !0, e; + };return a.next = a; + } + }return { next: R }; + }function R() { + return { value: n, done: !0 }; + }return m.prototype = _, u(E, "constructor", _), u(_, "constructor", m), m.displayName = u(_, c, "GeneratorFunction"), t.isGeneratorFunction = function (t) { + var n = "function" == typeof t && t.constructor;return !!n && (n === m || "GeneratorFunction" === (n.displayName || n.name)); + }, t.mark = function (t) { + return Object.setPrototypeOf ? Object.setPrototypeOf(t, _) : (t.__proto__ = _, u(t, c, "GeneratorFunction")), t.prototype = Object.create(E), t; + }, t.awrap = function (t) { + return { __await: t }; + }, L(T.prototype), u(T.prototype, a, function () { + return this; + }), t.AsyncIterator = T, t.async = function (n, e, r, o, i) { + void 0 === i && (i = Promise);var a = new T(s(n, e, r, o), i);return t.isGeneratorFunction(e) ? a : a.next().then(function (t) { + return t.done ? t.value : a.next(); + }); + }, L(E), u(E, c, "Generator"), u(E, i, function () { + return this; + }), u(E, "toString", function () { + return "[object Generator]"; + }), t.keys = function (t) { + var n = [];for (var e in t) { + n.push(e); + }return n.reverse(), function e() { + for (; n.length;) { + var r = n.pop();if (r in t) return e.value = r, e.done = !1, e; + }return e.done = !0, e; + }; + }, t.values = D, I.prototype = { constructor: I, reset: function reset(t) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = n, this.done = !1, this.delegate = null, this.method = "next", this.arg = n, this.tryEntries.forEach(x), !t) for (var e in this) { + "t" === e.charAt(0) && r.call(this, e) && !isNaN(+e.slice(1)) && (this[e] = n); + } + }, stop: function stop() { + this.done = !0;var t = this.tryEntries[0].completion;if ("throw" === t.type) throw t.arg;return this.rval; + }, dispatchException: function dispatchException(t) { + if (this.done) throw t;var e = this;function o(r, o) { + return c.type = "throw", c.arg = t, e.next = r, o && (e.method = "next", e.arg = n), !!o; + }for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var a = this.tryEntries[i], + c = a.completion;if ("root" === a.tryLoc) return o("end");if (a.tryLoc <= this.prev) { + var u = r.call(a, "catchLoc"), + s = r.call(a, "finallyLoc");if (u && s) { + if (this.prev < a.catchLoc) return o(a.catchLoc, !0);if (this.prev < a.finallyLoc) return o(a.finallyLoc); + } else if (u) { + if (this.prev < a.catchLoc) return o(a.catchLoc, !0); + } else { + if (!s) throw new Error("try statement without catch or finally");if (this.prev < a.finallyLoc) return o(a.finallyLoc); + } + } + } + }, abrupt: function abrupt(t, n) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var o = this.tryEntries[e];if (o.tryLoc <= this.prev && r.call(o, "finallyLoc") && this.prev < o.finallyLoc) { + var i = o;break; + } + }i && ("break" === t || "continue" === t) && i.tryLoc <= n && n <= i.finallyLoc && (i = null);var a = i ? i.completion : {};return a.type = t, a.arg = n, i ? (this.method = "next", this.next = i.finallyLoc, h) : this.complete(a); + }, complete: function complete(t, n) { + if ("throw" === t.type) throw t.arg;return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && n && (this.next = n), h; + }, finish: function finish(t) { + for (var n = this.tryEntries.length - 1; n >= 0; --n) { + var e = this.tryEntries[n];if (e.finallyLoc === t) return this.complete(e.completion, e.afterLoc), x(e), h; + } + }, catch: function _catch(t) { + for (var n = this.tryEntries.length - 1; n >= 0; --n) { + var e = this.tryEntries[n];if (e.tryLoc === t) { + var r = e.completion;if ("throw" === r.type) { + var o = r.arg;x(e); + }return o; + } + }throw new Error("illegal catch attempt"); + }, delegateYield: function delegateYield(t, e, r) { + return this.delegate = { iterator: D(t), resultName: e, nextLoc: r }, "next" === this.method && (this.arg = n), h; + } }, t; + }(t.exports);try { + regeneratorRuntime = n; + } catch (t) { + "object" == (typeof globalThis === "undefined" ? "undefined" : _typeof(globalThis)) ? globalThis.regeneratorRuntime = n : Function("r", "regeneratorRuntime = r")(n); + } + }, 6958: function _(t, n, e) { + "use strict"; + e.d(n, { Z: function Z() { + return j; + } });var r = e(4296), + o = e(6464), + i = e(6881), + a = e(2942), + c = e(7003), + u = e(3379), + s = e.n(u), + l = e(7795), + f = e.n(l), + d = e(569), + v = e.n(d), + p = e(3565), + h = e.n(p), + g = e(9216), + m = e.n(g), + _ = e(4589), + b = e.n(_), + y = e(9746), + w = {};y.Z && y.Z.locals && (w.locals = y.Z.locals);var E, + L = 0, + T = {};T.styleTagTransform = b(), T.setAttributes = h(), T.insert = v().bind(null, "head"), T.domAPI = f(), T.insertStyleElement = m(), w.use = function (t) { + return T.options = t || {}, L++ || (E = s()(y.Z, T)), w; + }, w.unuse = function () { + L > 0 && ! --L && (E(), E = null); + };var O = w;function C(t) { + var n, e;return { c: function c() { + n = (0, a.bi5)("svg"), e = (0, a.bi5)("path"), (0, a.Ljt)(e, "d", "M599.99999 832.000004h47.999999a24 24 0 0 0 23.999999-24V376.000013a24 24 0 0 0-23.999999-24h-47.999999a24 24 0 0 0-24 24v431.999991a24 24 0 0 0 24 24zM927.999983 160.000017h-164.819997l-67.999998-113.399998A95.999998 95.999998 0 0 0 612.819989 0.00002H411.179993a95.999998 95.999998 0 0 0-82.319998 46.599999L260.819996 160.000017H95.999999A31.999999 31.999999 0 0 0 64 192.000016v32a31.999999 31.999999 0 0 0 31.999999 31.999999h32v671.999987a95.999998 95.999998 0 0 0 95.999998 95.999998h575.999989a95.999998 95.999998 0 0 0 95.999998-95.999998V256.000015h31.999999a31.999999 31.999999 0 0 0 32-31.999999V192.000016a31.999999 31.999999 0 0 0-32-31.999999zM407.679993 101.820018A12 12 0 0 1 417.999993 96.000018h187.999996a12 12 0 0 1 10.3 5.82L651.219989 160.000017H372.779994zM799.999986 928.000002H223.999997V256.000015h575.999989z m-423.999992-95.999998h47.999999a24 24 0 0 0 24-24V376.000013a24 24 0 0 0-24-24h-47.999999a24 24 0 0 0-24 24v431.999991a24 24 0 0 0 24 24z"), (0, a.Ljt)(n, "class", "vc-icon-delete"), (0, a.Ljt)(n, "viewBox", "0 0 1024 1024"), (0, a.Ljt)(n, "width", "200"), (0, a.Ljt)(n, "height", "200"); + }, m: function m(t, r) { + (0, a.$Tr)(t, n, r), (0, a.R3I)(n, e); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function x(t) { + var n, e, r;return { c: function c() { + n = (0, a.bi5)("svg"), e = (0, a.bi5)("path"), r = (0, a.bi5)("path"), (0, a.Ljt)(e, "d", "M874.154197 150.116875A511.970373 511.970373 0 1 0 1023.993986 511.991687a511.927744 511.927744 0 0 0-149.839789-361.874812z m-75.324866 648.382129A405.398688 405.398688 0 1 1 917.422301 511.991687a405.313431 405.313431 0 0 1-118.59297 286.507317z"), (0, a.Ljt)(r, "d", "M725.039096 299.274605a54.351559 54.351559 0 0 0-76.731613 0l-135.431297 135.431297L377.274375 299.274605a54.436817 54.436817 0 0 0-76.944756 76.987385l135.388668 135.431297-135.388668 135.473925a54.436817 54.436817 0 0 0 76.944756 76.987385l135.388668-135.431297 135.431297 135.473926a54.436817 54.436817 0 0 0 76.731613-76.987385l-135.388668-135.473926 135.388668-135.431296a54.479445 54.479445 0 0 0 0.213143-77.030014z"), (0, a.Ljt)(n, "viewBox", "0 0 1024 1024"), (0, a.Ljt)(n, "width", "200"), (0, a.Ljt)(n, "height", "200"); + }, m: function m(t, o) { + (0, a.$Tr)(t, n, o), (0, a.R3I)(n, e), (0, a.R3I)(n, r); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function I(t) { + var n, e;return { c: function c() { + n = (0, a.bi5)("svg"), e = (0, a.bi5)("path"), (0, a.Ljt)(e, "fill-rule", "evenodd"), (0, a.Ljt)(e, "d", "M5.75 1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 1.75 0 00-.874-1.515.75.75 0 10-.752 1.298.25.25 0 01.126.217v9.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-9.5a.25.25 0 01.126-.217z"), (0, a.Ljt)(n, "class", "vc-icon-copy"), (0, a.Ljt)(n, "viewBox", "0 0 16 16"); + }, m: function m(t, r) { + (0, a.$Tr)(t, n, r), (0, a.R3I)(n, e); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function D(t) { + var n, e;return { c: function c() { + n = (0, a.bi5)("svg"), e = (0, a.bi5)("path"), (0, a.Ljt)(e, "fill-rule", "evenodd"), (0, a.Ljt)(e, "d", "M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"), (0, a.Ljt)(n, "class", "vc-icon-suc"), (0, a.Ljt)(n, "viewBox", "0 0 16 16"); + }, m: function m(t, r) { + (0, a.$Tr)(t, n, r), (0, a.R3I)(n, e); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function R(t) { + var n, e, r;return { c: function c() { + n = (0, a.bi5)("svg"), e = (0, a.bi5)("path"), r = (0, a.bi5)("path"), (0, a.Ljt)(e, "d", "M776.533333 1024 162.133333 1024C72.533333 1024 0 951.466667 0 861.866667L0 247.466667C0 157.866667 72.533333 85.333333 162.133333 85.333333L469.333333 85.333333c25.6 0 42.666667 17.066667 42.666667 42.666667s-17.066667 42.666667-42.666667 42.666667L162.133333 170.666667C119.466667 170.666667 85.333333 204.8 85.333333 247.466667l0 610.133333c0 42.666667 34.133333 76.8 76.8 76.8l610.133333 0c42.666667 0 76.8-34.133333 76.8-76.8L849.066667 554.666667c0-25.6 17.066667-42.666667 42.666667-42.666667s42.666667 17.066667 42.666667 42.666667l0 307.2C938.666667 951.466667 866.133333 1024 776.533333 1024z"), (0, a.Ljt)(r, "d", "M256 810.666667c-12.8 0-21.333333-4.266667-29.866667-12.8C217.6 789.333333 213.333333 772.266667 213.333333 759.466667l42.666667-213.333333c0-8.533333 4.266667-17.066667 12.8-21.333333l512-512c17.066667-17.066667 42.666667-17.066667 59.733333 0l170.666667 170.666667c17.066667 17.066667 17.066667 42.666667 0 59.733333l-512 512c-4.266667 4.266667-12.8 8.533333-21.333333 12.8l-213.333333 42.666667C260.266667 810.666667 260.266667 810.666667 256 810.666667zM337.066667 576l-25.6 136.533333 136.533333-25.6L921.6 213.333333 810.666667 102.4 337.066667 576z"), (0, a.Ljt)(n, "class", "vc-icon-edit"), (0, a.Ljt)(n, "viewBox", "0 0 1024 1024"), (0, a.Ljt)(n, "width", "200"), (0, a.Ljt)(n, "height", "200"); + }, m: function m(t, o) { + (0, a.$Tr)(t, n, o), (0, a.R3I)(n, e), (0, a.R3I)(n, r); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function k(t) { + var n, e;return { c: function c() { + n = (0, a.bi5)("svg"), e = (0, a.bi5)("path"), (0, a.Ljt)(e, "d", "M581.338005 987.646578c-2.867097 4.095853-4.573702 8.669555-8.191705 12.287558a83.214071 83.214071 0 0 1-60.959939 24.029001 83.214071 83.214071 0 0 1-61.028203-24.029001c-3.618003-3.618003-5.324608-8.191705-8.123441-12.15103L24.370323 569.050448a83.418864 83.418864 0 0 1 117.892289-117.89229l369.923749 369.92375L1308.829682 24.438587A83.418864 83.418864 0 0 1 1426.721971 142.194348L581.338005 987.646578z"), (0, a.Ljt)(n, "class", "vc-icon-don"), (0, a.Ljt)(n, "viewBox", "0 0 1501 1024"), (0, a.Ljt)(n, "width", "200"), (0, a.Ljt)(n, "height", "200"); + }, m: function m(t, r) { + (0, a.$Tr)(t, n, r), (0, a.R3I)(n, e); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function P(t) { + var n, e;return { c: function c() { + n = (0, a.bi5)("svg"), e = (0, a.bi5)("path"), (0, a.Ljt)(e, "d", "M894.976 574.464q0 78.848-29.696 148.48t-81.408 123.392-121.856 88.064-151.04 41.472q-5.12 1.024-9.216 1.536t-9.216 0.512l-177.152 0q-17.408 0-34.304-6.144t-30.208-16.896-22.016-25.088-8.704-29.696 8.192-29.696 21.504-24.576 29.696-16.384 33.792-6.144l158.72 1.024q54.272 0 102.4-19.968t83.968-53.76 56.32-79.36 20.48-97.792q0-49.152-18.432-92.16t-50.688-76.8-75.264-54.784-93.184-26.112q-2.048 0-2.56 0.512t-2.56 0.512l-162.816 0 0 80.896q0 17.408-13.824 25.6t-44.544-10.24q-8.192-5.12-26.112-17.92t-41.984-30.208-50.688-36.864l-51.2-38.912q-15.36-12.288-26.624-22.016t-11.264-24.064q0-12.288 12.8-25.6t29.184-26.624q18.432-15.36 44.032-35.84t50.688-39.936 45.056-35.328 28.16-22.016q24.576-17.408 39.936-7.168t16.384 30.72l0 81.92 162.816 0q5.12 0 10.752 1.024t10.752 2.048q79.872 8.192 149.504 41.984t121.344 87.552 80.896 123.392 29.184 147.456z"), (0, a.Ljt)(n, "class", "vc-icon-cancel"), (0, a.Ljt)(n, "viewBox", "0 0 1024 1024"), (0, a.Ljt)(n, "width", "200"), (0, a.Ljt)(n, "height", "200"); + }, m: function m(t, r) { + (0, a.$Tr)(t, n, r), (0, a.R3I)(n, e); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function M(t) { + var n, + e, + r, + o, + i, + _c, + u, + s, + l, + f = "delete" === t[0] && C(), + _d = "clear" === t[0] && x(), + v = "copy" === t[0] && I(), + _p = "success" === t[0] && D(), + h = "edit" === t[0] && R(), + g = "done" === t[0] && k(), + _m = "cancel" === t[0] && P();return { c: function c() { + n = (0, a.bGB)("i"), f && f.c(), e = (0, a.DhX)(), _d && _d.c(), r = (0, a.DhX)(), v && v.c(), o = (0, a.DhX)(), _p && _p.c(), i = (0, a.DhX)(), h && h.c(), _c = (0, a.DhX)(), g && g.c(), u = (0, a.DhX)(), _m && _m.c(), (0, a.Ljt)(n, "class", "vc-icon"); + }, m: function m(_, b) { + (0, a.$Tr)(_, n, b), f && f.m(n, null), (0, a.R3I)(n, e), _d && _d.m(n, null), (0, a.R3I)(n, r), v && v.m(n, null), (0, a.R3I)(n, o), _p && _p.m(n, null), (0, a.R3I)(n, i), h && h.m(n, null), (0, a.R3I)(n, _c), g && g.m(n, null), (0, a.R3I)(n, u), _m && _m.m(n, null), s || (l = (0, a.oLt)(n, "click", t[1]), s = !0); + }, p: function p(t, a) { + a[0];"delete" === t[0] ? f || ((f = C()).c(), f.m(n, e)) : f && (f.d(1), f = null), "clear" === t[0] ? _d || ((_d = x()).c(), _d.m(n, r)) : _d && (_d.d(1), _d = null), "copy" === t[0] ? v || ((v = I()).c(), v.m(n, o)) : v && (v.d(1), v = null), "success" === t[0] ? _p || ((_p = D()).c(), _p.m(n, i)) : _p && (_p.d(1), _p = null), "edit" === t[0] ? h || ((h = R()).c(), h.m(n, _c)) : h && (h.d(1), h = null), "done" === t[0] ? g || ((g = k()).c(), g.m(n, u)) : g && (g.d(1), g = null), "cancel" === t[0] ? _m || ((_m = P()).c(), _m.m(n, null)) : _m && (_m.d(1), _m = null); + }, i: a.ZTd, o: a.ZTd, d: function d(t) { + t && (0, a.ogt)(n), f && f.d(), _d && _d.d(), v && v.d(), _p && _p.d(), h && h.d(), g && g.d(), _m && _m.d(), s = !1, l(); + } }; + }function $(t, n, e) { + var r = n.name;return (0, c.H3)(function () { + O.use(); + }), (0, c.ev)(function () { + O.unuse(); + }), t.$$set = function (t) { + "name" in t && e(0, r = t.name); + }, [r, function (n) { + a.cKT.call(this, t, n); + }]; + }var S = function (t) { + function n(n) { + var e;return e = t.call(this) || this, (0, a.S1n)((0, o.Z)(e), n, $, M, a.N8, { name: 0 }), e; + }return (0, i.Z)(n, t), (0, r.Z)(n, [{ key: "name", get: function get() { + return this.$$.ctx[0]; + }, set: function set(t) { + this.$$set({ name: t }), (0, a.yl1)(); + } }]), n; + }(a.f_C), + j = S; + }, 3903: function _(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + "use strict"; + var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(6464), + _babel_runtime_helpers_inheritsLoose__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6881), + svelte_internal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2942), + svelte__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7003), + _component_icon_svelte__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6958), + _logTool__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(8665), + _log_model__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5629), + _logCommand_less__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3411);function get_each_context(t, n, e) { + var r = t.slice();return r[28] = n[e], r; + }function create_if_block_2(t) { + var n, e, r;return { c: function c() { + (n = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.bGB)("li")).textContent = "Close", (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(n, "class", "vc-cmd-prompted-hide"); + }, m: function m(o, i) { + (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.$Tr)(o, n, i), e || (r = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.oLt)(n, "click", t[5]), e = !0); + }, p: svelte_internal__WEBPACK_IMPORTED_MODULE_0__.ZTd, d: function d(t) { + t && (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.ogt)(n), e = !1, r(); + } }; + }function create_else_block(t) { + var n;return { c: function c() { + (n = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.bGB)("li")).textContent = "No Prompted"; + }, m: function m(t, e) { + (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.$Tr)(t, n, e); + }, p: svelte_internal__WEBPACK_IMPORTED_MODULE_0__.ZTd, d: function d(t) { + t && (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.ogt)(n); + } }; + }function create_each_block(t) { + var n, + e, + r, + o, + i = t[28].text + "";function a() { + return t[14](t[28]); + }return { c: function c() { + n = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.bGB)("li"), e = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.fLW)(i); + }, m: function m(t, i) { + (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.$Tr)(t, n, i), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(n, e), r || (o = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.oLt)(n, "click", a), r = !0); + }, p: function p(n, r) { + t = n, 8 & r && i !== (i = t[28].text + "") && (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.rTO)(e, i); + }, d: function d(t) { + t && (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.ogt)(n), r = !1, o(); + } }; + }function create_if_block_1(t) { + var n, e, r, o, i;return e = new _component_icon_svelte__WEBPACK_IMPORTED_MODULE_2__.Z({ props: { name: "clear" } }), { c: function c() { + n = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.bGB)("div"), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.YCL)(e.$$.fragment), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(n, "class", "vc-cmd-clear-btn"); + }, m: function m(a, c) { + (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.$Tr)(a, n, c), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.yef)(e, n, null), r = !0, o || (i = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.oLt)(n, "click", (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.AT7)(t[15])), o = !0); + }, p: svelte_internal__WEBPACK_IMPORTED_MODULE_0__.ZTd, i: function i(t) { + r || ((0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ui)(e.$$.fragment, t), r = !0); + }, o: function o(t) { + (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.etI)(e.$$.fragment, t), r = !1; + }, d: function d(t) { + t && (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.ogt)(n), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.vpE)(e), o = !1, i(); + } }; + }function create_if_block(t) { + var n, e, r, o, i;return e = new _component_icon_svelte__WEBPACK_IMPORTED_MODULE_2__.Z({ props: { name: "clear" } }), { c: function c() { + n = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.bGB)("div"), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.YCL)(e.$$.fragment), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(n, "class", "vc-cmd-clear-btn"); + }, m: function m(a, c) { + (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.$Tr)(a, n, c), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.yef)(e, n, null), r = !0, o || (i = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.oLt)(n, "click", (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.AT7)(t[18])), o = !0); + }, p: svelte_internal__WEBPACK_IMPORTED_MODULE_0__.ZTd, i: function i(t) { + r || ((0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ui)(e.$$.fragment, t), r = !0); + }, o: function o(t) { + (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.etI)(e.$$.fragment, t), r = !1; + }, d: function d(t) { + t && (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.ogt)(n), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.vpE)(e), o = !1, i(); + } }; + }function create_fragment(t) { + for (var n, e, r, o, i, a, _c2, u, s, l, f, d, v, p, h, g, _m2, _, b, y, w, E = t[3].length > 0 && create_if_block_2(t), L = t[3], T = [], O = 0; O < L.length; O += 1) { + T[O] = create_each_block(get_each_context(t, L, O)); + }var C = null;L.length || (C = create_else_block(t));var x = t[1].length > 0 && create_if_block_1(t), + I = t[4].length > 0 && create_if_block(t);return { c: function c() { + n = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.bGB)("form"), (e = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.bGB)("button")).textContent = "OK", r = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.DhX)(), o = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.bGB)("ul"), E && E.c(), i = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.DhX)();for (var b = 0; b < T.length; b += 1) { + T[b].c(); + }C && C.c(), a = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.DhX)(), _c2 = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.bGB)("div"), x && x.c(), u = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.DhX)(), s = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.bGB)("textarea"), l = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.DhX)(), f = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.bGB)("form"), (d = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.bGB)("button")).textContent = "Filter", v = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.DhX)(), p = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.bGB)("ul"), h = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.DhX)(), g = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.bGB)("div"), I && I.c(), _m2 = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.DhX)(), _ = (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.bGB)("textarea"), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(e, "class", "vc-cmd-btn"), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(e, "type", "submit"), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(o, "class", "vc-cmd-prompted"), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(o, "style", t[2]), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(s, "class", "vc-cmd-input"), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(s, "placeholder", "command..."), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(_c2, "class", "vc-cmd-input-wrap"), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(n, "class", "vc-cmd"), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(d, "class", "vc-cmd-btn"), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(d, "type", "submit"), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(p, "class", "vc-cmd-prompted"), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(_, "class", "vc-cmd-input"), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(_, "placeholder", "filter..."), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(g, "class", "vc-cmd-input-wrap"), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(f, "class", "vc-cmd vc-filter"); + }, m: function m(L, O) { + (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.$Tr)(L, n, O), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(n, e), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(n, r), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(n, o), E && E.m(o, null), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(o, i);for (var D = 0; D < T.length; D += 1) { + T[D].m(o, null); + }C && C.m(o, null), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(n, a), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(n, _c2), x && x.m(_c2, null), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(_c2, u), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(_c2, s), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.BmG)(s, t[1]), t[17](s), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.$Tr)(L, l, O), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.$Tr)(L, f, O), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(f, d), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(f, v), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(f, p), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(f, h), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(f, g), I && I.m(g, null), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(g, _m2), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.R3I)(g, _), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.BmG)(_, t[4]), b = !0, y || (w = [(0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.oLt)(s, "input", t[16]), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.oLt)(s, "keydown", t[10]), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.oLt)(s, "keyup", t[11]), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.oLt)(s, "focus", t[8]), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.oLt)(s, "blur", t[9]), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.oLt)(n, "submit", (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.AT7)(t[12])), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.oLt)(_, "input", t[19]), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.oLt)(f, "submit", (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.AT7)(t[13]))], y = !0); + }, p: function p(t, n) { + var e = n[0];if (t[3].length > 0 ? E ? E.p(t, e) : ((E = create_if_block_2(t)).c(), E.m(o, i)) : E && (E.d(1), E = null), 136 & e) { + var r;for (L = t[3], r = 0; r < L.length; r += 1) { + var a = get_each_context(t, L, r);T[r] ? T[r].p(a, e) : (T[r] = create_each_block(a), T[r].c(), T[r].m(o, null)); + }for (; r < T.length; r += 1) { + T[r].d(1); + }T.length = L.length, !L.length && C ? C.p(t, e) : L.length ? C && (C.d(1), C = null) : ((C = create_else_block(t)).c(), C.m(o, null)); + }(!b || 4 & e) && (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ljt)(o, "style", t[2]), t[1].length > 0 ? x ? (x.p(t, e), 2 & e && (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ui)(x, 1)) : ((x = create_if_block_1(t)).c(), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ui)(x, 1), x.m(_c2, u)) : x && ((0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.dvw)(), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.etI)(x, 1, 1, function () { + x = null; + }), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.gbL)()), 2 & e && (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.BmG)(s, t[1]), t[4].length > 0 ? I ? (I.p(t, e), 16 & e && (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ui)(I, 1)) : ((I = create_if_block(t)).c(), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ui)(I, 1), I.m(g, _m2)) : I && ((0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.dvw)(), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.etI)(I, 1, 1, function () { + I = null; + }), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.gbL)()), 16 & e && (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.BmG)(_, t[4]); + }, i: function i(t) { + b || ((0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ui)(x), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.Ui)(I), b = !0); + }, o: function o(t) { + (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.etI)(x), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.etI)(I), b = !1; + }, d: function d(e) { + e && (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.ogt)(n), E && E.d(), (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.RMB)(T, e), C && C.d(), x && x.d(), t[17](null), e && (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.ogt)(l), e && (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.ogt)(f), I && I.d(), y = !1, (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.j7q)(w); + } }; + }function instance($$self, $$props, $$invalidate) { + var module = _log_model__WEBPACK_IMPORTED_MODULE_3__.W.getSingleton(_log_model__WEBPACK_IMPORTED_MODULE_3__.W, "VConsoleLogModel"), + cachedObjKeys = {}, + dispatch = (0, svelte__WEBPACK_IMPORTED_MODULE_1__.x)(), + cmdElement, + cmdValue = "", + promptedStyle = "", + promptedList = [], + filterValue = "";(0, svelte__WEBPACK_IMPORTED_MODULE_1__.H3)(function () { + _logCommand_less__WEBPACK_IMPORTED_MODULE_4__.Z.use(); + }), (0, svelte__WEBPACK_IMPORTED_MODULE_1__.ev)(function () { + _logCommand_less__WEBPACK_IMPORTED_MODULE_4__.Z.unuse(); + });var evalCommand = function evalCommand(t) { + module.evalCommand(t); + }, + moveCursorToPos = function moveCursorToPos(t, n) { + t.setSelectionRange && setTimeout(function () { + t.setSelectionRange(n, n); + }, 1); + }, + clearPromptedList = function clearPromptedList() { + $$invalidate(2, promptedStyle = "display: none;"), $$invalidate(3, promptedList = []); + }, + updatePromptedList = function updatePromptedList(identifier) { + if ("" !== cmdValue) { + identifier || (identifier = (0, _logTool__WEBPACK_IMPORTED_MODULE_5__.oj)(cmdValue));var objName = "window", + keyName = cmdValue;if ("." !== identifier.front.text && "[" !== identifier.front.text || (objName = identifier.front.before, keyName = "" !== identifier.back.text ? identifier.back.before : identifier.front.after), keyName = keyName.replace(/(^['"]+)|(['"']+$)/g, ""), !cachedObjKeys[objName]) try { + cachedObjKeys[objName] = Object.getOwnPropertyNames(eval("(" + objName + ")")).sort(); + } catch (t) {}try { + if (cachedObjKeys[objName]) for (var i = 0; i < cachedObjKeys[objName].length && !(promptedList.length >= 100); i++) { + var key = String(cachedObjKeys[objName][i]), + keyPattern = new RegExp("^" + keyName, "i");if (keyPattern.test(key)) { + var completeCmd = objName;"." === identifier.front.text || "" === identifier.front.text ? completeCmd += "." + key : "[" === identifier.front.text && (completeCmd += "['" + key + "']"), promptedList.push({ text: key, value: completeCmd }); + } + } + } catch (t) {}if (promptedList.length > 0) { + var m = Math.min(200, 31 * (promptedList.length + 1));$$invalidate(2, promptedStyle = "display: block; height: " + m + "px; margin-top: " + (-m - 2) + "px;"), $$invalidate(3, promptedList); + } else clearPromptedList(); + } else clearPromptedList(); + }, + autoCompleteBrackets = function autoCompleteBrackets(t, n) { + if (!(8 === n || 46 === n) && "" === t.front.after) switch (t.front.text) {case "[": + return $$invalidate(1, cmdValue += "]"), void moveCursorToPos(cmdElement, cmdValue.length - 1);case "(": + return $$invalidate(1, cmdValue += ")"), void moveCursorToPos(cmdElement, cmdValue.length - 1);case "{": + return $$invalidate(1, cmdValue += "}"), void moveCursorToPos(cmdElement, cmdValue.length - 1);} + }, + dispatchFilterEvent = function dispatchFilterEvent() { + dispatch("filterText", { filterText: filterValue }); + }, + onTapClearText = function onTapClearText(t) { + "cmd" === t ? ($$invalidate(1, cmdValue = ""), clearPromptedList()) : "filter" === t && ($$invalidate(4, filterValue = ""), dispatchFilterEvent()); + }, + onTapPromptedItem = function onTapPromptedItem(item) { + var type = "";try { + type = eval("typeof " + item.value); + } catch (t) {}$$invalidate(1, cmdValue = item.value + ("function" === type ? "()" : "")), clearPromptedList(); + }, + onCmdFocus = function onCmdFocus() { + updatePromptedList(); + }, + onCmdBlur = function onCmdBlur() {}, + onCmdKeyDown = function onCmdKeyDown(t) { + 13 === t.keyCode && (t.preventDefault(), onCmdSubmit()); + }, + onCmdKeyUp = function onCmdKeyUp(t) { + $$invalidate(3, promptedList = []);var n = (0, _logTool__WEBPACK_IMPORTED_MODULE_5__.oj)(t.target.value);autoCompleteBrackets(n, t.keyCode), updatePromptedList(n); + }, + onCmdSubmit = function onCmdSubmit() { + "" !== cmdValue && evalCommand(cmdValue), clearPromptedList(); + }, + onFilterSubmit = function onFilterSubmit(t) { + dispatchFilterEvent(); + }, + click_handler = function click_handler(t) { + return onTapPromptedItem(t); + }, + click_handler_1 = function click_handler_1() { + return onTapClearText("cmd"); + };function textarea0_input_handler() { + cmdValue = this.value, $$invalidate(1, cmdValue); + }function textarea0_binding(t) { + svelte_internal__WEBPACK_IMPORTED_MODULE_0__.VnY[t ? "unshift" : "push"](function () { + $$invalidate(0, cmdElement = t); + }); + }var click_handler_2 = function click_handler_2() { + return onTapClearText("filter"); + };function textarea1_input_handler() { + filterValue = this.value, $$invalidate(4, filterValue); + }return [cmdElement, cmdValue, promptedStyle, promptedList, filterValue, clearPromptedList, onTapClearText, onTapPromptedItem, onCmdFocus, onCmdBlur, onCmdKeyDown, onCmdKeyUp, onCmdSubmit, onFilterSubmit, click_handler, click_handler_1, textarea0_input_handler, textarea0_binding, click_handler_2, textarea1_input_handler]; + }var LogCommand = function (t) { + function n(n) { + var e;return e = t.call(this) || this, (0, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.S1n)((0, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_7__.Z)(e), n, instance, create_fragment, svelte_internal__WEBPACK_IMPORTED_MODULE_0__.N8, {}), e; + }return (0, _babel_runtime_helpers_inheritsLoose__WEBPACK_IMPORTED_MODULE_6__.Z)(n, t), n; + }(svelte_internal__WEBPACK_IMPORTED_MODULE_0__.f_C);__webpack_exports__.Z = LogCommand; + }, 4687: function _(t, n, e) { + "use strict"; + e.d(n, { x: function x() { + return o; + } });var r = e(3313), + o = function () { + var t = (0, r.fZ)({ updateTime: 0 }), + n = t.subscribe, + e = t.set, + o = t.update;return { subscribe: n, set: e, update: o, updateTime: function updateTime() { + o(function (t) { + return t.updateTime = Date.now(), t; + }); + } }; + }(); + }, 643: function _(t, n, e) { + "use strict"; + e.d(n, { N: function N() { + return r; + } });var r = function () { + function t() { + this._onDataUpdateCallbacks = []; + }return t.getSingleton = function (n, e) { + return e || (e = n.toString()), t.singleton[e] || (t.singleton[e] = new n()), t.singleton[e]; + }, t; + }();r.singleton = {}; + }, 5103: function _(t, n, e) { + "use strict"; + function r(t) { + return "[object Number]" === Object.prototype.toString.call(t); + }function o(t) { + return "bigint" == typeof t; + }function i(t) { + return "string" == typeof t; + }function a(t) { + return "[object Array]" === Object.prototype.toString.call(t); + }function c(t) { + return "boolean" == typeof t; + }function u(t) { + return void 0 === t; + }function s(t) { + return null === t; + }function l(t) { + return "symbol" == (typeof t === "undefined" ? "undefined" : _typeof(t)); + }function f(t) { + return !("[object Object]" !== Object.prototype.toString.call(t) && (r(t) || o(t) || i(t) || c(t) || a(t) || s(t) || d(t) || u(t) || l(t))); + }function d(t) { + return "function" == typeof t; + }function v(t) { + return "object" == (typeof HTMLElement === "undefined" ? "undefined" : _typeof(HTMLElement)) ? t instanceof HTMLElement : t && "object" == (typeof t === "undefined" ? "undefined" : _typeof(t)) && null !== t && 1 === t.nodeType && "string" == typeof t.nodeName; + }function p(t) { + var n = Object.prototype.toString.call(t);return "[object Window]" === n || "[object DOMWindow]" === n || "[object global]" === n; + }function h(t) { + return null != t && "string" != typeof t && "boolean" != typeof t && "number" != typeof t && "function" != typeof t && "symbol" != (typeof t === "undefined" ? "undefined" : _typeof(t)) && "bigint" != typeof t && "undefined" != typeof Symbol && "function" == typeof t[Symbol.iterator]; + }function g(t) { + return Object.prototype.toString.call(t).replace(/\[object (.*)\]/, "$1"); + }e.d(n, { Ak: function Ak() { + return E; + }, C4: function C4() { + return o; + }, DV: function DV() { + return _; + }, FJ: function FJ() { + return p; + }, Ft: function Ft() { + return s; + }, HD: function HD() { + return i; + }, H_: function H_() { + return U; + }, KL: function KL() { + return D; + }, Kn: function Kn() { + return f; + }, MH: function MH() { + return M; + }, PO: function PO() { + return b; + }, QI: function QI() { + return A; + }, QK: function QK() { + return $; + }, TW: function TW() { + return h; + }, _D: function _D() { + return S; + }, cF: function cF() { + return B; + }, hZ: function hZ() { + return I; + }, hj: function hj() { + return r; + }, id: function id() { + return R; + }, jn: function jn() { + return c; + }, kJ: function kJ() { + return a; + }, kK: function kK() { + return v; + }, mf: function mf() { + return d; + }, o8: function o8() { + return u; + }, po: function po() { + return j; + }, qr: function qr() { + return P; + }, qt: function qt() { + return N; + }, rE: function rE() { + return O; + }, yk: function yk() { + return l; + }, zl: function zl() { + return g; + } });var m = /(function|class) ([^ \{\()}]{1,})[\(| ]/;function _(t) { + var n;if (null == t) return "";var e = m.exec((null == t || null == (n = t.constructor) ? void 0 : n.toString()) || "");return e && e.length > 1 ? e[2] : ""; + }function b(t) { + var n, + e = Object.prototype.hasOwnProperty;if (!t || "object" != (typeof t === "undefined" ? "undefined" : _typeof(t)) || t.nodeType || p(t)) return !1;try { + if (t.constructor && !e.call(t, "constructor") && !e.call(t.constructor.prototype, "isPrototypeOf")) return !1; + } catch (t) { + return !1; + }for (n in t) {}return void 0 === n || e.call(t, n); + }var y = /[<>&" ]/g, + w = function w(t) { + return { "<": "<", ">": ">", "&": "&", '"': """, " ": " " }[t]; + };function E(t) { + return "string" != typeof t && "number" != typeof t ? t : String(t).replace(y, w); + }var L = /[\n\t]/g, + T = function T(t) { + return { "\n": "\\n", "\t": "\\t" }[t]; + };function O(t) { + return "string" != typeof t ? t : String(t).replace(L, T); + }var C = function C(t, n) { + void 0 === n && (n = 0);var e = "";return i(t) ? (n > 0 && (t = R(t, n)), e += '"' + O(t) + '"') : l(t) ? e += String(t).replace(/^Symbol\((.*)\)$/i, 'Symbol("$1")') : d(t) ? e += (t.name || "function") + "()" : o(t) ? e += String(t) + "n" : e += String(t), e; + }, + x = function t(n, e, r) { + if (void 0 === r && (r = 0), f(n) || a(n)) { + if (e.circularFinder(n)) { + if (a(n)) e.ret += "(Circular Array)";else if (f) { + var o;e.ret += "(Circular " + ((null == (o = n.constructor) ? void 0 : o.name) || "Object") + ")"; + } + } else { + var i = "", + c = "";if (e.pretty) { + for (var u = 0; u <= r; u++) { + i += " "; + }c = "\n"; + }var s = "{", + d = "}";a(n) && (s = "[", d = "]"), e.ret += s + c;for (var v = M(n), p = 0; p < v.length; p++) { + var h = v[p];e.ret += i;try { + a(n) || (f(h) || a(h) || l(h) ? e.ret += Object.prototype.toString.call(h) : e.ret += h, e.ret += ": "); + } catch (t) { + continue; + }try { + var g = n[h];if (a(g)) e.maxDepth > -1 && r >= e.maxDepth ? e.ret += "Array(" + g.length + ")" : t(g, e, r + 1);else if (f(g)) { + var m;if (e.maxDepth > -1 && r >= e.maxDepth) e.ret += ((null == (m = g.constructor) ? void 0 : m.name) || "Object") + " {}";else t(g, e, r + 1); + } else e.ret += C(g, e.keyMaxLen); + } catch (t) { + e.ret += "(...)"; + }if (e.keyMaxLen > 0 && e.ret.length >= 10 * e.keyMaxLen) { + e.ret += ", (...)";break; + }p < v.length - 1 && (e.ret += ", "), e.ret += c; + }e.ret += i.substring(0, i.length - 2) + d; + } + } else e.ret += C(n, e.keyMaxLen); + };function I(t, n) { + void 0 === n && (n = { maxDepth: -1, keyMaxLen: -1, pretty: !1 });var e, + r = Object.assign({ ret: "", maxDepth: -1, keyMaxLen: -1, pretty: !1, circularFinder: (e = new WeakSet(), function (t) { + if ("object" == (typeof t === "undefined" ? "undefined" : _typeof(t)) && null !== t) { + if (e.has(t)) return !0;e.add(t); + }return !1; + }) }, n);return x(t, r), r.ret; + }function D(t) { + return t <= 0 ? "" : t >= 1e6 ? (t / 1e3 / 1e3).toFixed(1) + " MB" : t >= 1e3 ? (t / 1e3).toFixed(1) + " KB" : t + " B"; + }function R(t, n) { + return t.length > n && (t = t.substring(0, n) + "...(" + D(function (t) { + try { + return encodeURI(t).split(/%(?:u[0-9A-F]{2})?[0-9A-F]{2}|./).length - 1; + } catch (t) { + return 0; + } + }(t)) + ")"), t; + }var k = function k(t, n) { + return String(t).localeCompare(String(n), void 0, { numeric: !0, sensitivity: "base" }); + };function P(t) { + return t.sort(k); + }function M(t) { + return f(t) || a(t) ? Object.keys(t) : []; + }function $(t) { + var n = M(t), + e = function (t) { + return f(t) || a(t) ? Object.getOwnPropertyNames(t) : []; + }(t);return e.filter(function (t) { + return -1 === n.indexOf(t); + }); + }function S(t) { + return f(t) || a(t) ? Object.getOwnPropertySymbols(t) : []; + }function j(t, n) { + window.localStorage && (t = "vConsole_" + t, localStorage.setItem(t, n)); + }function B(t) { + if (window.localStorage) return t = "vConsole_" + t, localStorage.getItem(t); + }function A(t) { + return void 0 === t && (t = ""), "__vc_" + t + Math.random().toString(36).substring(2, 8); + }function U() { + return "undefined" != typeof window && !!window.__wxConfig && !!window.wx && !!window.__virtualDOM__; + }function N(t) { + if (U() && "function" == typeof window.wx[t]) try { + for (var n, e = arguments.length, r = new Array(e > 1 ? e - 1 : 0), o = 1; o < e; o++) { + r[o - 1] = arguments[o]; + }var i = (n = window.wx[t]).call.apply(n, [window.wx].concat(r));return i; + } catch (n) { + return void console.debug("[vConsole] Fail to call wx." + t + "():", n); + } + } + }, 5629: function _(t, n, e) { + "use strict"; + e.d(n, { W: function W() { + return s; + } });var r = e(6881), + o = e(5103), + i = e(643), + a = e(4687), + c = e(8665), + u = e(9923), + s = function (t) { + function n() { + for (var n, e = arguments.length, r = new Array(e), o = 0; o < e; o++) { + r[o] = arguments[o]; + }return (n = t.call.apply(t, [this].concat(r)) || this).LOG_METHODS = ["log", "info", "warn", "debug", "error"], n.ADDED_LOG_PLUGIN_ID = [], n.maxLogNumber = 1e3, n.logCounter = 0, n.pluginPattern = void 0, n.origConsole = {}, n; + }(0, r.Z)(n, t);var e = n.prototype;return e.bindPlugin = function (t) { + return !(this.ADDED_LOG_PLUGIN_ID.indexOf(t) > -1) && (0 === this.ADDED_LOG_PLUGIN_ID.length && this.mockConsole(), u.O.create(t), this.ADDED_LOG_PLUGIN_ID.push(t), this.pluginPattern = new RegExp("^\\[(" + this.ADDED_LOG_PLUGIN_ID.join("|") + ")\\]$", "i"), !0); + }, e.unbindPlugin = function (t) { + var n = this.ADDED_LOG_PLUGIN_ID.indexOf(t);return -1 !== n && (this.ADDED_LOG_PLUGIN_ID.splice(n, 1), u.O.delete(t), 0 === this.ADDED_LOG_PLUGIN_ID.length && this.unmockConsole(), !0); + }, e.mockConsole = function () { + var t = this;if ("function" != typeof this.origConsole.log) { + var n = this.LOG_METHODS;window.console ? (n.map(function (n) { + t.origConsole[n] = window.console[n]; + }), this.origConsole.time = window.console.time, this.origConsole.timeEnd = window.console.timeEnd, this.origConsole.clear = window.console.clear) : window.console = {}, n.map(function (n) { + window.console[n] = function () { + for (var e = arguments.length, r = new Array(e), o = 0; o < e; o++) { + r[o] = arguments[o]; + }t.addLog({ type: n, origData: r || [] }); + }.bind(window.console); + });var e = {};window.console.time = function (t) { + void 0 === t && (t = ""), e[t] = Date.now(); + }.bind(window.console), window.console.timeEnd = function (n) { + void 0 === n && (n = "");var r = e[n];r ? (t.addLog({ type: "log", origData: [n + ":", Date.now() - r + "ms"] }), delete e[n]) : t.addLog({ type: "log", origData: [n + ": 0ms"] }); + }.bind(window.console), window.console.clear = function () { + t.clearLog();for (var n = arguments.length, e = new Array(n), r = 0; r < n; r++) { + e[r] = arguments[r]; + }t.callOriginalConsole.apply(t, ["clear"].concat(e)); + }.bind(window.console), window._vcOrigConsole = this.origConsole; + } + }, e.unmockConsole = function () { + for (var t in this.origConsole) { + window.console[t] = this.origConsole[t], delete this.origConsole[t]; + }window._vcOrigConsole && delete window._vcOrigConsole; + }, e.callOriginalConsole = function (t) { + if ("function" == typeof this.origConsole[t]) { + for (var n = arguments.length, e = new Array(n > 1 ? n - 1 : 0), r = 1; r < n; r++) { + e[r - 1] = arguments[r]; + }this.origConsole[t].apply(window.console, e); + } + }, e.clearLog = function () { + var t = u.O.getAll();for (var n in t) { + t[n].update(function (t) { + return t.logList = [], t; + }); + } + }, e.clearPluginLog = function (t) { + u.O.get(t).update(function (t) { + return t.logList = [], t; + }); + }, e.addLog = function (t, n) { + void 0 === t && (t = { type: "log", origData: [] });var e = { _id: o.QI(), type: t.type, cmdType: null == n ? void 0 : n.cmdType, date: Date.now(), data: (0, c.b1)(t.origData || []) }, + r = this._extractPluginIdByLog(e);this._isRepeatedLog(r, e) ? this._updateLastLogRepeated(r) : (this._pushLogList(r, e), this._limitLogListLength()), null != n && n.noOrig || this.callOriginalConsole.apply(this, [t.type].concat(t.origData)); + }, e.evalCommand = function (t) { + this.addLog({ type: "log", origData: [t] }, { cmdType: "input" });var n = void 0;try { + n = eval.call(window, "(" + t + ")"); + } catch (e) { + try { + n = eval.call(window, t); + } catch (t) {} + }this.addLog({ type: "log", origData: [n] }, { cmdType: "output" }); + }, e._extractPluginIdByLog = function (t) { + var n, + e = "default", + r = null == (n = t.data[0]) ? void 0 : n.origData;if (o.HD(r)) { + var i = r.match(this.pluginPattern);if (null !== i && i.length > 1) { + var a = i[1].toLowerCase();this.ADDED_LOG_PLUGIN_ID.indexOf(a) > -1 && (e = a, t.data.shift()); + } + }return e; + }, e._isRepeatedLog = function (t, n) { + var e = u.O.getRaw(t), + r = e.logList[e.logList.length - 1];if (!r) return !1;var o = !1;if (n.type === r.type && n.cmdType === r.cmdType && n.data.length === r.data.length) { + o = !0;for (var i = 0; i < n.data.length; i++) { + if (n.data[i].origData !== r.data[i].origData) { + o = !1;break; + } + } + }return o; + }, e._updateLastLogRepeated = function (t) { + u.O.get(t).update(function (t) { + var n = t.logList, + e = n[n.length - 1];return e.repeated = e.repeated ? e.repeated + 1 : 2, t; + }); + }, e._pushLogList = function (t, n) { + u.O.get(t).update(function (t) { + return t.logList.push(n), t; + }), a.x.updateTime(); + }, e._limitLogListLength = function () { + var t = this;if (this.logCounter++, this.logCounter % 10 == 0) { + this.logCounter = 0;var n = u.O.getAll();for (var e in n) { + n[e].update(function (n) { + return n.logList.length > t.maxLogNumber - 10 && n.logList.splice(0, n.logList.length - t.maxLogNumber + 10), n; + }); + } + } + }, n; + }(i.N); + }, 9923: function _(t, n, e) { + "use strict"; + e.d(n, { O: function O() { + return o; + } });var r = e(3313), + o = function () { + function t() {}return t.create = function (t) { + return this.storeMap[t] || (this.storeMap[t] = (0, r.fZ)({ logList: [] })), this.storeMap[t]; + }, t.delete = function (t) { + this.storeMap[t] && delete this.storeMap[t]; + }, t.get = function (t) { + return this.storeMap[t]; + }, t.getRaw = function (t) { + return (0, r.U2)(this.storeMap[t]); + }, t.getAll = function () { + return this.storeMap; + }, t; + }();o.storeMap = {}; + }, 8665: function _(t, n, e) { + "use strict"; + e.d(n, { HX: function HX() { + return l; + }, LH: function LH() { + return i; + }, Tg: function Tg() { + return v; + }, b1: function b1() { + return d; + }, oj: function oj() { + return s; + } });var r = e(5103), + o = function o(t) { + var n = r.hZ(t, { maxDepth: 0 }), + e = n.substring(0, 36), + o = r.DV(t);return n.length > 36 && (e += "..."), o = r.rE(o + " " + e); + }, + i = function i(t, n) { + void 0 === n && (n = !0);var e = "undefined", + i = t;return t instanceof v ? (e = "uninvocatable", i = "(...)") : r.kJ(t) ? (e = "array", i = o(t)) : r.Kn(t) ? (e = "object", i = o(t)) : r.HD(t) ? (e = "string", i = r.rE(t), n && (i = '"' + i + '"')) : r.hj(t) ? (e = "number", i = String(t)) : r.C4(t) ? (e = "bigint", i = String(t) + "n") : r.jn(t) ? (e = "boolean", i = String(t)) : r.Ft(t) ? (e = "null", i = "null") : r.o8(t) ? (e = "undefined", i = "undefined") : r.mf(t) ? (e = "function", i = (t.name || "function") + "()") : r.yk(t) && (e = "symbol", i = String(t)), { text: i, valueType: e }; + }, + a = [".", "[", "(", "{", "}"], + c = ["]", ")", "}"], + u = function u(t, n, e) { + void 0 === e && (e = 0);for (var r = { text: "", pos: -1, before: "", after: "" }, o = t.length - 1; o >= e; o--) { + var i = n.indexOf(t[o]);if (i > -1) { + r.text = n[i], r.pos = o, r.before = t.substring(e, o), r.after = t.substring(o + 1, t.length);break; + } + }return r; + }, + s = function s(t) { + var n = u(t, a, 0);return { front: n, back: u(t, c, n.pos + 1) }; + }, + l = function l(t, n) { + if ("" === n) return !0;for (var e = 0; e < t.data.length; e++) { + if ("string" === typeof t.data[e].origData && t.data[e].origData.indexOf(n) > -1) return !0; + }return !1; + }, + f = /(\%[csdo] )|( \%[csdo])/g, + d = function d(t) { + if (f.lastIndex = 0, r.HD(t[0]) && f.test(t[0])) { + for (var n, e = [].concat(t), o = e.shift().split(f).filter(function (t) { + return void 0 !== t && "" !== t; + }), i = e, a = [], c = !1, u = ""; o.length > 0;) { + var s = o.shift();if (/ ?\%c ?/.test(s) ? i.length > 0 ? "string" != typeof (u = i.shift()) && (u = "") : (n = s, u = "", c = !0) : / ?\%[sd] ?/.test(s) ? (n = i.length > 0 ? r.Kn(i[0]) ? r.DV(i.shift()) : String(i.shift()) : s, c = !0) : / ?\%o ?/.test(s) ? (n = i.length > 0 ? i.shift() : s, c = !0) : (n = s, c = !0), c) { + var l = { origData: n };u && (l.style = u), a.push(l), c = !1, n = void 0, u = ""; + } + }for (var d = 0; d < i.length; d++) { + a.push({ origData: i[d] }); + }return a; + }for (var v = [], p = 0; p < t.length; p++) { + v.push({ origData: t[p] }); + }return v; + }, + v = function v() {}; + }, 9746: function _(t, n, e) { + "use strict"; + var r = e(6738), + o = e.n(r), + i = e(7705), + a = e.n(i)()(o());a.push([t.id, ".vc-icon {\n word-break: normal;\n white-space: normal;\n overflow: visible;\n}\n.vc-icon svg {\n fill: var(--VC-FG-2);\n height: 1em;\n width: 1em;\n vertical-align: -0.11em;\n}\n.vc-icon .vc-icon-delete {\n vertical-align: -0.11em;\n}\n.vc-icon .vc-icon-copy {\n height: 1.1em;\n width: 1.1em;\n vertical-align: -0.16em;\n}\n.vc-icon .vc-icon-suc {\n fill: var(--VC-TEXTGREEN);\n height: 1.1em;\n width: 1.1em;\n vertical-align: -0.16em;\n}\n", ""]), n.Z = a; + }, 3283: function _(t, n, e) { + "use strict"; + var r = e(6738), + o = e.n(r), + i = e(7705), + a = e.n(i)()(o());a.push([t.id, '#__vconsole {\n --VC-BG-0: #ededed;\n --VC-BG-1: #f7f7f7;\n --VC-BG-2: #fff;\n --VC-BG-3: #f7f7f7;\n --VC-BG-4: #4c4c4c;\n --VC-BG-5: #fff;\n --VC-BG-6: rgba(0, 0, 0, 0.1);\n --VC-FG-0: rgba(0, 0, 0, 0.9);\n --VC-FG-HALF: rgba(0, 0, 0, 0.9);\n --VC-FG-1: rgba(0, 0, 0, 0.5);\n --VC-FG-2: rgba(0, 0, 0, 0.3);\n --VC-FG-3: rgba(0, 0, 0, 0.1);\n --VC-RED: #fa5151;\n --VC-ORANGE: #fa9d3b;\n --VC-YELLOW: #ffc300;\n --VC-GREEN: #91d300;\n --VC-LIGHTGREEN: #95ec69;\n --VC-BRAND: #07c160;\n --VC-BLUE: #10aeff;\n --VC-INDIGO: #1485ee;\n --VC-PURPLE: #6467f0;\n --VC-LINK: #576b95;\n --VC-TEXTGREEN: #06ae56;\n --VC-FG: black;\n --VC-BG: white;\n --VC-BG-COLOR-ACTIVE: #ececec;\n --VC-WARN-BG: #fff3cc;\n --VC-WARN-BORDER: #ffe799;\n --VC-ERROR-BG: #fedcdc;\n --VC-ERROR-BORDER: #fdb9b9;\n --VC-DOM-TAG-NAME-COLOR: #881280;\n --VC-DOM-ATTRIBUTE-NAME-COLOR: #994500;\n --VC-DOM-ATTRIBUTE-VALUE-COLOR: #1a1aa6;\n --VC-CODE-KEY-FG: #881391;\n --VC-CODE-PRIVATE-KEY-FG: #cfa1d3;\n --VC-CODE-FUNC-FG: #0d22aa;\n --VC-CODE-NUMBER-FG: #1c00cf;\n --VC-CODE-STR-FG: #c41a16;\n --VC-CODE-NULL-FG: #808080;\n color: var(--VC-FG-0);\n font-size: 13px;\n font-family: Helvetica Neue, Helvetica, Arial, sans-serif;\n -webkit-user-select: auto;\n /* global */\n}\n#__vconsole .vc-max-height {\n max-height: 19.23076923em;\n}\n#__vconsole .vc-max-height-line {\n max-height: 6.30769231em;\n}\n#__vconsole .vc-min-height {\n min-height: 3.07692308em;\n}\n#__vconsole dd,\n#__vconsole dl,\n#__vconsole pre {\n margin: 0;\n}\n#__vconsole pre {\n white-space: pre-wrap;\n}\n#__vconsole i {\n font-style: normal;\n}\n.vc-table .vc-table-row {\n line-height: 1.5;\n display: -webkit-box;\n display: -webkit-flex;\n display: -moz-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -webkit-flex-direction: row;\n -moz-box-orient: horizontal;\n -moz-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-flex-wrap: wrap;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n overflow: hidden;\n border-bottom: 1px solid var(--VC-FG-3);\n}\n.vc-table .vc-table-row.vc-left-border {\n border-left: 1px solid var(--VC-FG-3);\n}\n.vc-table .vc-table-row-icon {\n margin-left: 4px;\n}\n.vc-table .vc-table-col {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n -moz-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n padding: 0.23076923em 0.30769231em;\n border-left: 1px solid var(--VC-FG-3);\n overflow: auto;\n}\n.vc-table .vc-table-col:first-child {\n border: none;\n}\n.vc-table .vc-table-col-value {\n white-space: pre-wrap;\n word-break: break-word;\n /*white-space: nowrap;\n text-overflow: ellipsis;*/\n -webkit-overflow-scrolling: touch;\n}\n.vc-table .vc-small .vc-table-col {\n padding: 0 0.30769231em;\n font-size: 0.92307692em;\n}\n.vc-table .vc-table-col-2 {\n -webkit-box-flex: 2;\n -webkit-flex: 2;\n -moz-box-flex: 2;\n -ms-flex: 2;\n flex: 2;\n}\n.vc-table .vc-table-col-3 {\n -webkit-box-flex: 3;\n -webkit-flex: 3;\n -moz-box-flex: 3;\n -ms-flex: 3;\n flex: 3;\n}\n.vc-table .vc-table-col-4 {\n -webkit-box-flex: 4;\n -webkit-flex: 4;\n -moz-box-flex: 4;\n -ms-flex: 4;\n flex: 4;\n}\n.vc-table .vc-table-col-5 {\n -webkit-box-flex: 5;\n -webkit-flex: 5;\n -moz-box-flex: 5;\n -ms-flex: 5;\n flex: 5;\n}\n.vc-table .vc-table-col-6 {\n -webkit-box-flex: 6;\n -webkit-flex: 6;\n -moz-box-flex: 6;\n -ms-flex: 6;\n flex: 6;\n}\n.vc-table .vc-table-row-error {\n border-color: var(--VC-ERROR-BORDER);\n background-color: var(--VC-ERROR-BG);\n}\n.vc-table .vc-table-row-error .vc-table-col {\n color: var(--VC-RED);\n border-color: var(--VC-ERROR-BORDER);\n}\n.vc-table .vc-table-col-title {\n font-weight: bold;\n}\n.vc-table .vc-table-action {\n display: flex;\n justify-content: space-evenly;\n}\n.vc-table .vc-table-action .vc-icon {\n flex: 1;\n text-align: center;\n display: block;\n}\n.vc-table .vc-table-action .vc-icon:hover {\n background: var(--VC-BG-3);\n}\n.vc-table .vc-table-action .vc-icon:active {\n background: var(--VC-BG-1);\n}\n.vc-table .vc-table-input {\n width: 100%;\n border: none;\n color: var(--VC-FG-0);\n background-color: var(--VC-BG-6);\n height: 3.53846154em;\n}\n.vc-table .vc-table-input:focus {\n background-color: var(--VC-FG-2);\n}\n@media (prefers-color-scheme: dark) {\n #__vconsole:not([data-theme="light"]) {\n --VC-BG-0: #191919;\n --VC-BG-1: #1f1f1f;\n --VC-BG-2: #232323;\n --VC-BG-3: #2f2f2f;\n --VC-BG-4: #606060;\n --VC-BG-5: #2c2c2c;\n --VC-BG-6: rgba(255, 255, 255, 0.2);\n --VC-FG-0: rgba(255, 255, 255, 0.8);\n --VC-FG-HALF: rgba(255, 255, 255, 0.6);\n --VC-FG-1: rgba(255, 255, 255, 0.5);\n --VC-FG-2: rgba(255, 255, 255, 0.3);\n --VC-FG-3: rgba(255, 255, 255, 0.05);\n --VC-RED: #fa5151;\n --VC-ORANGE: #c87d2f;\n --VC-YELLOW: #cc9c00;\n --VC-GREEN: #74a800;\n --VC-LIGHTGREEN: #28b561;\n --VC-BRAND: #07c160;\n --VC-BLUE: #10aeff;\n --VC-INDIGO: #1196ff;\n --VC-PURPLE: #8183ff;\n --VC-LINK: #7d90a9;\n --VC-TEXTGREEN: #259c5c;\n --VC-FG: white;\n --VC-BG: black;\n --VC-BG-COLOR-ACTIVE: #282828;\n --VC-WARN-BG: #332700;\n --VC-WARN-BORDER: #664e00;\n --VC-ERROR-BG: #321010;\n --VC-ERROR-BORDER: #642020;\n --VC-DOM-TAG-NAME-COLOR: #5DB0D7;\n --VC-DOM-ATTRIBUTE-NAME-COLOR: #9BBBDC;\n --VC-DOM-ATTRIBUTE-VALUE-COLOR: #f29766;\n --VC-CODE-KEY-FG: #e36eec;\n --VC-CODE-PRIVATE-KEY-FG: #f4c5f7;\n --VC-CODE-FUNC-FG: #556af2;\n --VC-CODE-NUMBER-FG: #9980ff;\n --VC-CODE-STR-FG: #e93f3b;\n --VC-CODE-NULL-FG: #808080;\n }\n}\n#__vconsole[data-theme="dark"] {\n --VC-BG-0: #191919;\n --VC-BG-1: #1f1f1f;\n --VC-BG-2: #232323;\n --VC-BG-3: #2f2f2f;\n --VC-BG-4: #606060;\n --VC-BG-5: #2c2c2c;\n --VC-BG-6: rgba(255, 255, 255, 0.2);\n --VC-FG-0: rgba(255, 255, 255, 0.8);\n --VC-FG-HALF: rgba(255, 255, 255, 0.6);\n --VC-FG-1: rgba(255, 255, 255, 0.5);\n --VC-FG-2: rgba(255, 255, 255, 0.3);\n --VC-FG-3: rgba(255, 255, 255, 0.05);\n --VC-RED: #fa5151;\n --VC-ORANGE: #c87d2f;\n --VC-YELLOW: #cc9c00;\n --VC-GREEN: #74a800;\n --VC-LIGHTGREEN: #28b561;\n --VC-BRAND: #07c160;\n --VC-BLUE: #10aeff;\n --VC-INDIGO: #1196ff;\n --VC-PURPLE: #8183ff;\n --VC-LINK: #7d90a9;\n --VC-TEXTGREEN: #259c5c;\n --VC-FG: white;\n --VC-BG: black;\n --VC-BG-COLOR-ACTIVE: #282828;\n --VC-WARN-BG: #332700;\n --VC-WARN-BORDER: #664e00;\n --VC-ERROR-BG: #321010;\n --VC-ERROR-BORDER: #642020;\n --VC-DOM-TAG-NAME-COLOR: #5DB0D7;\n --VC-DOM-ATTRIBUTE-NAME-COLOR: #9BBBDC;\n --VC-DOM-ATTRIBUTE-VALUE-COLOR: #f29766;\n --VC-CODE-KEY-FG: #e36eec;\n --VC-CODE-PRIVATE-KEY-FG: #f4c5f7;\n --VC-CODE-FUNC-FG: #556af2;\n --VC-CODE-NUMBER-FG: #9980ff;\n --VC-CODE-STR-FG: #e93f3b;\n --VC-CODE-NULL-FG: #808080;\n}\n.vc-tabbar {\n border-bottom: 1px solid var(--VC-FG-3);\n overflow-x: auto;\n height: 3em;\n width: auto;\n white-space: nowrap;\n}\n.vc-tabbar .vc-tab {\n display: inline-block;\n line-height: 3em;\n padding: 0 1.15384615em;\n border-right: 1px solid var(--VC-FG-3);\n text-decoration: none;\n color: var(--VC-FG-0);\n -webkit-tap-highlight-color: transparent;\n -webkit-touch-callout: none;\n}\n.vc-tabbar .vc-tab:active {\n background-color: rgba(0, 0, 0, 0.15);\n}\n.vc-tabbar .vc-tab.vc-actived {\n background-color: var(--VC-BG-1);\n}\n.vc-toolbar {\n border-top: 1px solid var(--VC-FG-3);\n line-height: 3em;\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n display: -webkit-box;\n display: -webkit-flex;\n display: -moz-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -webkit-flex-direction: row;\n -moz-box-orient: horizontal;\n -moz-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n}\n.vc-toolbar .vc-tool {\n display: none;\n font-style: normal;\n text-decoration: none;\n color: var(--VC-FG-0);\n width: 50%;\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n -moz-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n text-align: center;\n position: relative;\n -webkit-touch-callout: none;\n}\n.vc-toolbar .vc-tool.vc-toggle,\n.vc-toolbar .vc-tool.vc-global-tool {\n display: block;\n}\n.vc-toolbar .vc-tool:active {\n background-color: rgba(0, 0, 0, 0.15);\n}\n.vc-toolbar .vc-tool:after {\n content: " ";\n position: absolute;\n top: 0.53846154em;\n bottom: 0.53846154em;\n right: 0;\n border-left: 1px solid var(--VC-FG-3);\n}\n.vc-toolbar .vc-tool-last:after {\n border: none;\n}\n.vc-topbar {\n background-color: var(--VC-BG-1);\n display: -webkit-box;\n display: -webkit-flex;\n display: -moz-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -webkit-flex-direction: row;\n -moz-box-orient: horizontal;\n -moz-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-flex-wrap: wrap;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n width: 100%;\n}\n.vc-topbar .vc-toptab {\n display: none;\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n -moz-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n line-height: 2.30769231em;\n padding: 0 1.15384615em;\n border-bottom: 1px solid var(--VC-FG-3);\n text-decoration: none;\n text-align: center;\n color: var(--VC-FG-0);\n -webkit-tap-highlight-color: transparent;\n -webkit-touch-callout: none;\n}\n.vc-topbar .vc-toptab.vc-toggle {\n display: block;\n}\n.vc-topbar .vc-toptab:active {\n background-color: rgba(0, 0, 0, 0.15);\n}\n.vc-topbar .vc-toptab.vc-actived {\n border-bottom: 1px solid var(--VC-INDIGO);\n}\n.vc-mask {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0);\n z-index: 10001;\n -webkit-transition: background 0.3s;\n transition: background 0.3s;\n -webkit-tap-highlight-color: transparent;\n overflow-y: scroll;\n}\n.vc-panel {\n display: none;\n position: fixed;\n min-height: 85%;\n left: 0;\n right: 0;\n bottom: -100%;\n z-index: 10002;\n background-color: var(--VC-BG-0);\n transition: bottom 0.3s;\n}\n.vc-toggle .vc-switch {\n display: none;\n}\n.vc-toggle .vc-mask {\n background: rgba(0, 0, 0, 0.6);\n display: block;\n}\n.vc-toggle .vc-panel {\n bottom: 0;\n}\n.vc-content {\n background-color: var(--VC-BG-2);\n overflow-x: hidden;\n overflow-y: auto;\n position: absolute;\n top: 3.07692308em;\n left: 0;\n right: 0;\n bottom: 3.07692308em;\n -webkit-overflow-scrolling: touch;\n margin-bottom: constant(safe-area-inset-bottom);\n margin-bottom: env(safe-area-inset-bottom);\n}\n.vc-content.vc-has-topbar {\n top: 5.46153846em;\n}\n.vc-plugin-box {\n display: none;\n position: relative;\n min-height: 100%;\n}\n.vc-plugin-box.vc-actived {\n display: block;\n}\n.vc-plugin-content {\n padding-bottom: 6em;\n -webkit-tap-highlight-color: transparent;\n}\n.vc-plugin-empty:before,\n.vc-plugin-content:empty:before {\n content: "Empty";\n color: var(--VC-FG-1);\n position: absolute;\n top: 45%;\n left: 0;\n right: 0;\n bottom: 0;\n font-size: 1.15384615em;\n text-align: center;\n}\n@supports (bottom: constant(safe-area-inset-bottom)) or (bottom: env(safe-area-inset-bottom)) {\n .vc-toolbar,\n .vc-switch {\n bottom: constant(safe-area-inset-bottom);\n bottom: env(safe-area-inset-bottom);\n }\n}\n', ""]), n.Z = a; + }, 7558: function _(t, n, e) { + "use strict"; + var r = e(6738), + o = e.n(r), + i = e(7705), + a = e.n(i)()(o());a.push([t.id, ".vc-switch {\n display: block;\n position: fixed;\n right: 0.76923077em;\n bottom: 0.76923077em;\n color: #FFF;\n background-color: var(--VC-BRAND);\n line-height: 1;\n font-size: 1.07692308em;\n padding: 0.61538462em 1.23076923em;\n z-index: 10000;\n border-radius: 0.30769231em;\n box-shadow: 0 0 0.61538462em rgba(0, 0, 0, 0.4);\n}\n", ""]), n.Z = a; + }, 5670: function _(t, n, e) { + "use strict"; + var r = e(6738), + o = e.n(r), + i = e(7705), + a = e.n(i)()(o());a.push([t.id, '/* color */\n.vcelm-node {\n color: var(--VC-DOM-TAG-NAME-COLOR);\n}\n.vcelm-k {\n color: var(--VC-DOM-ATTRIBUTE-NAME-COLOR);\n}\n.vcelm-v {\n color: var(--VC-DOM-ATTRIBUTE-VALUE-COLOR);\n}\n.vcelm-l.vc-actived > .vcelm-node {\n background-color: var(--VC-FG-3);\n}\n/* layout */\n.vcelm-l {\n padding-left: 8px;\n position: relative;\n word-wrap: break-word;\n line-height: 1.2;\n}\n/*.vcelm-l.vcelm-noc {\n padding-left: 0;\n}*/\n.vcelm-l .vcelm-node:active {\n background-color: var(--VC-BG-COLOR-ACTIVE);\n}\n.vcelm-l.vcelm-noc .vcelm-node:active {\n background-color: transparent;\n}\n.vcelm-t {\n white-space: pre-wrap;\n word-wrap: break-word;\n}\n/* level */\n/* arrow */\n.vcelm-l:before {\n content: "";\n display: block;\n position: absolute;\n top: 6px;\n left: 3px;\n width: 0;\n height: 0;\n border: transparent solid 3px;\n border-left-color: var(--VC-FG-1);\n}\n.vcelm-l.vc-toggle:before {\n display: block;\n top: 6px;\n left: 0;\n border-top-color: var(--VC-FG-1);\n border-left-color: transparent;\n}\n.vcelm-l.vcelm-noc:before {\n display: none;\n}\n', ""]), n.Z = a; + }, 3327: function _(t, n, e) { + "use strict"; + var r = e(6738), + o = e.n(r), + i = e(7705), + a = e.n(i)()(o());a.push([t.id, ".vc-logs-has-cmd {\n padding-bottom: 6.15384615em;\n}\n", ""]), n.Z = a; + }, 1130: function _(t, n, e) { + "use strict"; + var r = e(6738), + o = e.n(r), + i = e(7705), + a = e.n(i)()(o());a.push([t.id, ".vc-cmd {\n position: absolute;\n height: 3.07692308em;\n left: 0;\n right: 0;\n bottom: 3.07692308em;\n border-top: 1px solid var(--VC-FG-3);\n display: block !important;\n}\n.vc-cmd.vc-filter {\n bottom: 0;\n}\n.vc-cmd-input-wrap {\n display: block;\n position: relative;\n height: 2.15384615em;\n margin-right: 3.07692308em;\n padding: 0.46153846em 0.61538462em;\n}\n.vc-cmd-input {\n width: 100%;\n border: none;\n resize: none;\n outline: none;\n padding: 0;\n font-size: 0.92307692em;\n background-color: transparent;\n color: var(--VC-FG-0);\n}\n.vc-cmd-input::-webkit-input-placeholder {\n line-height: 2.15384615em;\n}\n.vc-cmd-btn {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 3.07692308em;\n border: none;\n background-color: var(--VC-BG-0);\n color: var(--VC-FG-0);\n outline: none;\n -webkit-touch-callout: none;\n font-size: 1em;\n}\n.vc-cmd-clear-btn {\n position: absolute;\n text-align: center;\n top: 0;\n right: 0;\n bottom: 0;\n width: 3.07692308em;\n line-height: 3.07692308em;\n}\n.vc-cmd-btn:active,\n.vc-cmd-clear-btn:active {\n background-color: var(--VC-BG-COLOR-ACTIVE);\n}\n.vc-cmd-prompted {\n position: absolute;\n left: 0.46153846em;\n right: 0.46153846em;\n background-color: var(--VC-BG-3);\n border: 1px solid var(--VC-FG-3);\n overflow-x: scroll;\n display: none;\n}\n.vc-cmd-prompted li {\n list-style: none;\n line-height: 30px;\n padding: 0 0.46153846em;\n border-bottom: 1px solid var(--VC-FG-3);\n}\n.vc-cmd-prompted li:active {\n background-color: var(--VC-BG-COLOR-ACTIVE);\n}\n.vc-cmd-prompted-hide {\n text-align: center;\n}\n", ""]), n.Z = a; + }, 7147: function _(t, n, e) { + "use strict"; + var r = e(6738), + o = e.n(r), + i = e(7705), + a = e.n(i)()(o());a.push([t.id, '.vc-log-row {\n margin: 0;\n padding: 0.46153846em 0.61538462em;\n overflow: hidden;\n line-height: 1.3;\n border-bottom: 1px solid var(--VC-FG-3);\n word-break: break-word;\n position: relative;\n display: flex;\n}\n.vc-log-info {\n color: var(--VC-PURPLE);\n}\n.vc-log-debug {\n color: var(--VC-YELLOW);\n}\n.vc-log-warn {\n color: var(--VC-ORANGE);\n border-color: var(--VC-WARN-BORDER);\n background-color: var(--VC-WARN-BG);\n}\n.vc-log-error {\n color: var(--VC-RED);\n border-color: var(--VC-ERROR-BORDER);\n background-color: var(--VC-ERROR-BG);\n}\n.vc-logrow-icon {\n margin-left: auto;\n}\n.vc-log-time {\n width: 6.15384615em;\n color: #777;\n}\n.vc-log-repeat i {\n margin-right: 0.30769231em;\n padding: 0 6.5px;\n color: #D7E0EF;\n background-color: #42597F;\n border-radius: 8.66666667px;\n}\n.vc-log-error .vc-log-repeat i {\n color: #901818;\n background-color: var(--VC-RED);\n}\n.vc-log-warn .vc-log-repeat i {\n color: #987D20;\n background-color: #F4BD02;\n}\n.vc-log-content {\n flex: 1;\n}\n.vc-log-input,\n.vc-log-output {\n padding-left: 0.92307692em;\n}\n.vc-log-input:before,\n.vc-log-output:before {\n content: "›";\n position: absolute;\n top: 0.15384615em;\n left: 0;\n font-size: 1.23076923em;\n color: #6A5ACD;\n}\n.vc-log-output:before {\n content: "‹";\n}\n', ""]), n.Z = a; + }, 1237: function _(t, n, e) { + "use strict"; + var r = e(6738), + o = e.n(r), + i = e(7705), + a = e.n(i)()(o());a.push([t.id, '.vc-log-tree {\n display: block;\n overflow: auto;\n position: relative;\n -webkit-overflow-scrolling: touch;\n}\n.vc-log-tree-node {\n display: block;\n font-style: italic;\n padding-left: 0.76923077em;\n position: relative;\n}\n.vc-log-tree.vc-is-tree > .vc-log-tree-node:active {\n background-color: var(--VC-BG-COLOR-ACTIVE);\n}\n.vc-log-tree.vc-is-tree > .vc-log-tree-node::before {\n content: "";\n position: absolute;\n top: 0.30769231em;\n left: 0.15384615em;\n width: 0;\n height: 0;\n border: transparent solid 0.30769231em;\n border-left-color: var(--VC-FG-1);\n}\n.vc-log-tree.vc-is-tree.vc-toggle > .vc-log-tree-node::before {\n top: 0.46153846em;\n left: 0;\n border-top-color: var(--VC-FG-1);\n border-left-color: transparent;\n}\n.vc-log-tree-child {\n margin-left: 0.76923077em;\n}\n.vc-log-tree-loadmore {\n text-decoration: underline;\n padding-left: 1.84615385em;\n position: relative;\n color: var(--VC-CODE-FUNC-FG);\n}\n.vc-log-tree-loadmore::before {\n content: "››";\n position: absolute;\n top: -0.15384615em;\n left: 0.76923077em;\n font-size: 1.23076923em;\n color: var(--VC-CODE-FUNC-FG);\n}\n.vc-log-tree-loadmore:active {\n background-color: var(--VC-BG-COLOR-ACTIVE);\n}\n', ""]), n.Z = a; + }, 845: function _(t, n, e) { + "use strict"; + var r = e(6738), + o = e.n(r), + i = e(7705), + a = e.n(i)()(o());a.push([t.id, ".vc-log-key {\n color: var(--VC-CODE-KEY-FG);\n}\n.vc-log-key-private {\n color: var(--VC-CODE-PRIVATE-KEY-FG);\n}\n.vc-log-val {\n white-space: pre-line;\n}\n.vc-log-val-function {\n color: var(--VC-CODE-FUNC-FG);\n font-style: italic !important;\n}\n.vc-log-val-bigint {\n color: var(--VC-CODE-FUNC-FG);\n}\n.vc-log-val-number,\n.vc-log-val-boolean {\n color: var(--VC-CODE-NUMBER-FG);\n}\n.vc-log-val-string.vc-log-val-haskey {\n color: var(--VC-CODE-STR-FG);\n white-space: normal;\n}\n.vc-log-val-null,\n.vc-log-val-undefined,\n.vc-log-val-uninvocatable {\n color: var(--VC-CODE-NULL-FG);\n}\n.vc-log-val-symbol {\n color: var(--VC-CODE-STR-FG);\n}\n", ""]), n.Z = a; + }, 8747: function _(t, n, e) { + "use strict"; + var r = e(6738), + o = e.n(r), + i = e(7705), + a = e.n(i)()(o());a.push([t.id, ".vc-group .vc-group-preview {\n -webkit-touch-callout: none;\n}\n.vc-group .vc-group-preview:active {\n background-color: var(--VC-BG-COLOR-ACTIVE);\n}\n.vc-group .vc-group-detail {\n display: none;\n padding: 0 0 0.76923077em 1.53846154em;\n border-bottom: 1px solid var(--VC-FG-3);\n}\n.vc-group.vc-actived .vc-group-detail {\n display: block;\n background-color: var(--VC-BG-1);\n}\n.vc-group.vc-actived .vc-table-row {\n background-color: var(--VC-BG-2);\n}\n.vc-group.vc-actived .vc-group-preview {\n background-color: var(--VC-BG-1);\n}\n", ""]), n.Z = a; + }, 3411: function _(t, n, e) { + "use strict"; + var r = e(3379), + o = e.n(r), + i = e(7795), + a = e.n(i), + c = e(569), + u = e.n(c), + s = e(3565), + l = e.n(s), + f = e(9216), + d = e.n(f), + v = e(4589), + p = e.n(v), + h = e(1130), + g = {};h.Z && h.Z.locals && (g.locals = h.Z.locals);var m, + _ = 0, + b = {};b.styleTagTransform = p(), b.setAttributes = l(), b.insert = u().bind(null, "head"), b.domAPI = a(), b.insertStyleElement = d(), g.use = function (t) { + return b.options = t || {}, _++ || (m = o()(h.Z, b)), g; + }, g.unuse = function () { + _ > 0 && ! --_ && (m(), m = null); + }, n.Z = g; + }, 3379: function _(t) { + "use strict"; + var n = [];function e(t) { + for (var e = -1, r = 0; r < n.length; r++) { + if (n[r].identifier === t) { + e = r;break; + } + }return e; + }function r(t, r) { + for (var i = {}, a = [], c = 0; c < t.length; c++) { + var u = t[c], + s = r.base ? u[0] + r.base : u[0], + l = i[s] || 0, + f = "".concat(s, " ").concat(l);i[s] = l + 1;var d = e(f), + v = { css: u[1], media: u[2], sourceMap: u[3], supports: u[4], layer: u[5] };if (-1 !== d) n[d].references++, n[d].updater(v);else { + var p = o(v, r);r.byIndex = c, n.splice(c, 0, { identifier: f, updater: p, references: 1 }); + }a.push(f); + }return a; + }function o(t, n) { + var e = n.domAPI(n);e.update(t);return function (n) { + if (n) { + if (n.css === t.css && n.media === t.media && n.sourceMap === t.sourceMap && n.supports === t.supports && n.layer === t.layer) return;e.update(t = n); + } else e.remove(); + }; + }t.exports = function (t, o) { + var i = r(t = t || [], o = o || {});return function (t) { + t = t || [];for (var a = 0; a < i.length; a++) { + var c = e(i[a]);n[c].references--; + }for (var u = r(t, o), s = 0; s < i.length; s++) { + var l = e(i[s]);0 === n[l].references && (n[l].updater(), n.splice(l, 1)); + }i = u; + }; + }; + }, 569: function _(t) { + "use strict"; + var n = {};t.exports = function (t, e) { + var r = function (t) { + if (void 0 === n[t]) { + var e = document.querySelector(t);if (window.HTMLIFrameElement && e instanceof window.HTMLIFrameElement) try { + e = e.contentDocument.head; + } catch (t) { + e = null; + }n[t] = e; + }return n[t]; + }(t);if (!r) throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(e); + }; + }, 9216: function _(t) { + "use strict"; + t.exports = function (t) { + var n = document.createElement("style");return t.setAttributes(n, t.attributes), t.insert(n, t.options), n; + }; + }, 3565: function _(t, n, e) { + "use strict"; + t.exports = function (t) { + var n = e.nc;n && t.setAttribute("nonce", n); + }; + }, 7795: function _(t) { + "use strict"; + t.exports = function (t) { + var n = t.insertStyleElement(t);return { update: function update(e) { + !function (t, n, e) { + var r = "";e.supports && (r += "@supports (".concat(e.supports, ") {")), e.media && (r += "@media ".concat(e.media, " {"));var o = void 0 !== e.layer;o && (r += "@layer".concat(e.layer.length > 0 ? " ".concat(e.layer) : "", " {")), r += e.css, o && (r += "}"), e.media && (r += "}"), e.supports && (r += "}");var i = e.sourceMap;i && "undefined" != typeof btoa && (r += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i)))), " */")), n.styleTagTransform(r, t, n.options); + }(n, t, e); + }, remove: function remove() { + !function (t) { + if (null === t.parentNode) return !1;t.parentNode.removeChild(t); + }(n); + } }; + }; + }, 4589: function _(t) { + "use strict"; + t.exports = function (t, n) { + if (n.styleSheet) n.styleSheet.cssText = t;else { + for (; n.firstChild;) { + n.removeChild(n.firstChild); + }n.appendChild(document.createTextNode(t)); + } + }; + }, 6464: function _(t, n, e) { + "use strict"; + function r(t) { + if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t; + }e.d(n, { Z: function Z() { + return r; + } }); + }, 4296: function _(t, n, e) { + "use strict"; + function r(t, n) { + for (var e = 0; e < n.length; e++) { + var r = n[e];r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r); + } + }function o(t, n, e) { + return n && r(t.prototype, n), e && r(t, e), Object.defineProperty(t, "prototype", { writable: !1 }), t; + }e.d(n, { Z: function Z() { + return o; + } }); + }, 6881: function _(t, n, e) { + "use strict"; + e.d(n, { Z: function Z() { + return o; + } });var r = e(2717);function o(t, n) { + t.prototype = Object.create(n.prototype), t.prototype.constructor = t, (0, r.Z)(t, n); + } + }, 2717: function _(t, n, e) { + "use strict"; + function r(t, n) { + return r = Object.setPrototypeOf || function (t, n) { + return t.__proto__ = n, t; + }, r(t, n); + }e.d(n, { Z: function Z() { + return r; + } }); + }, 7003: function _(t, n, e) { + "use strict"; + e.d(n, { H3: function H3() { + return r.H3E; + }, ev: function ev() { + return r.evW; + }, x: function x() { + return r.xa3; + } });var r = e(2942); + }, 2942: function _(t, n, e) { + "use strict"; + function r(t) { + return r = Object.setPrototypeOf ? Object.getPrototypeOf : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }, r(t); + }e.d(n, { FWw: function FWw() { + return B; + }, f_C: function f_C() { + return _t; + }, hjT: function hjT() { + return Q; + }, R3I: function R3I() { + return y; + }, Ljt: function Ljt() { + return k; + }, akz: function akz() { + return dt; + }, VnY: function VnY() { + return H; + }, cKT: function cKT() { + return K; + }, gbL: function gbL() { + return ct; + }, FIv: function FIv() { + return _; + }, xa3: function xa3() { + return W; + }, YCL: function YCL() { + return vt; + }, vpE: function vpE() { + return ht; + }, RMB: function RMB() { + return L; + }, ogt: function ogt() { + return E; + }, bGB: function bGB() { + return T; + }, cSb: function cSb() { + return I; + }, yl1: function yl1() { + return et; + }, $XI: function $XI() { + return m; + }, dvw: function dvw() { + return at; + }, S1n: function S1n() { + return mt; + }, $Tr: function $Tr() { + return w; + }, oLt: function oLt() { + return D; + }, yef: function yef() { + return pt; + }, ZTd: function ZTd() { + return s; + }, evW: function evW() { + return G; + }, H3E: function H3E() { + return V; + }, cly: function cly() { + return lt; + }, AT7: function AT7() { + return R; + }, j7q: function j7q() { + return d; + }, N8: function N8() { + return p; + }, rTO: function rTO() { + return P; + }, BmG: function BmG() { + return M; + }, fxP: function fxP() { + return b; + }, czc: function czc() { + return $; + }, DhX: function DhX() { + return x; + }, LdU: function LdU() { + return g; + }, bi5: function bi5() { + return O; + }, fLW: function fLW() { + return C; + }, VHj: function VHj() { + return S; + }, Ui: function Ui() { + return ut; + }, etI: function etI() { + return st; + }, GQg: function GQg() { + return ft; + } });var o = e(2717);function i() { + if ("undefined" == typeof Reflect || !Reflect.construct) return !1;if (Reflect.construct.sham) return !1;if ("function" == typeof Proxy) return !0;try { + return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0; + } catch (t) { + return !1; + } + }function a(t, n, e) { + return a = i() ? Reflect.construct : function (t, n, e) { + var r = [null];r.push.apply(r, n);var i = new (Function.bind.apply(t, r))();return e && (0, o.Z)(i, e.prototype), i; + }, a.apply(null, arguments); + }function c(t) { + var n = "function" == typeof Map ? new Map() : void 0;return c = function c(t) { + if (null === t || (e = t, -1 === Function.toString.call(e).indexOf("[native code]"))) return t;var e;if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function");if (void 0 !== n) { + if (n.has(t)) return n.get(t);n.set(t, i); + }function i() { + return a(t, arguments, r(this).constructor); + }return i.prototype = Object.create(t.prototype, { constructor: { value: i, enumerable: !1, writable: !0, configurable: !0 } }), (0, o.Z)(i, t); + }, c(t); + }var u = e(6881);function s() {}function l(t) { + return t(); + }function f() { + return Object.create(null); + }function d(t) { + t.forEach(l); + }function v(t) { + return "function" == typeof t; + }function p(t, n) { + return t != t ? n == n : t !== n || t && "object" == (typeof t === "undefined" ? "undefined" : _typeof(t)) || "function" == typeof t; + }function h(t) { + return 0 === Object.keys(t).length; + }function g(t) { + if (null == t) return s;for (var n = arguments.length, e = new Array(n > 1 ? n - 1 : 0), r = 1; r < n; r++) { + e[r - 1] = arguments[r]; + }var o = t.subscribe.apply(t, e);return o.unsubscribe ? function () { + return o.unsubscribe(); + } : o; + }function m(t) { + var n;return g(t, function (t) { + return n = t; + })(), n; + }function _(t, n, e) { + t.$$.on_destroy.push(g(n, e)); + }function b(t, n, e) { + return t.set(e), n; + }new Set();function y(t, n) { + t.appendChild(n); + }function w(t, n, e) { + t.insertBefore(n, e || null); + }function E(t) { + t.parentNode.removeChild(t); + }function L(t, n) { + for (var e = 0; e < t.length; e += 1) { + t[e] && t[e].d(n); + } + }function T(t) { + return document.createElement(t); + }function O(t) { + return document.createElementNS("http://www.w3.org/2000/svg", t); + }function C(t) { + return document.createTextNode(t); + }function x() { + return C(" "); + }function I() { + return C(""); + }function D(t, n, e, r) { + return t.addEventListener(n, e, r), function () { + return t.removeEventListener(n, e, r); + }; + }function R(t) { + return function (n) { + return n.preventDefault(), t.call(this, n); + }; + }function k(t, n, e) { + null == e ? t.removeAttribute(n) : t.getAttribute(n) !== e && t.setAttribute(n, e); + }function P(t, n) { + n = "" + n, t.wholeText !== n && (t.data = n); + }function M(t, n) { + t.value = null == n ? "" : n; + }function $(t, n, e, r) { + null === e ? t.style.removeProperty(n) : t.style.setProperty(n, e, r ? "important" : ""); + }function S(t, n, e) { + t.classList[e ? "add" : "remove"](n); + }function j(t, n, e) { + void 0 === e && (e = !1);var r = document.createEvent("CustomEvent");return r.initCustomEvent(t, e, !1, n), r; + }var B = function () { + function t() { + this.e = this.n = null; + }var n = t.prototype;return n.c = function (t) { + this.h(t); + }, n.m = function (t, n, e) { + void 0 === e && (e = null), this.e || (this.e = T(n.nodeName), this.t = n, this.c(t)), this.i(e); + }, n.h = function (t) { + this.e.innerHTML = t, this.n = Array.from(this.e.childNodes); + }, n.i = function (t) { + for (var n = 0; n < this.n.length; n += 1) { + w(this.t, this.n[n], t); + } + }, n.p = function (t) { + this.d(), this.h(t), this.i(this.a); + }, n.d = function () { + this.n.forEach(E); + }, t; + }();var A;new Map();function U(t) { + A = t; + }function N() { + if (!A) throw new Error("Function called outside component initialization");return A; + }function V(t) { + N().$$.on_mount.push(t); + }function G(t) { + N().$$.on_destroy.push(t); + }function W() { + var t = N();return function (n, e) { + var r = t.$$.callbacks[n];if (r) { + var o = j(n, e);r.slice().forEach(function (n) { + n.call(t, o); + }); + } + }; + }function K(t, n) { + var e = this, + r = t.$$.callbacks[n.type];r && r.slice().forEach(function (t) { + return t.call(e, n); + }); + }var F = [], + H = [], + q = [], + Z = [], + X = Promise.resolve(), + z = !1;function Y() { + z || (z = !0, X.then(et)); + }function J(t) { + q.push(t); + }function Q(t) { + Z.push(t); + }var tt = new Set(), + nt = 0;function et() { + var t = A;do { + for (; nt < F.length;) { + var n = F[nt];nt++, U(n), rt(n.$$); + }for (U(null), F.length = 0, nt = 0; H.length;) { + H.pop()(); + }for (var e = 0; e < q.length; e += 1) { + var r = q[e];tt.has(r) || (tt.add(r), r()); + }q.length = 0; + } while (F.length);for (; Z.length;) { + Z.pop()(); + }z = !1, tt.clear(), U(t); + }function rt(t) { + if (null !== t.fragment) { + t.update(), d(t.before_update);var n = t.dirty;t.dirty = [-1], t.fragment && t.fragment.p(t.ctx, n), t.after_update.forEach(J); + } + }var ot, + it = new Set();function at() { + ot = { r: 0, c: [], p: ot }; + }function ct() { + ot.r || d(ot.c), ot = ot.p; + }function ut(t, n) { + t && t.i && (it.delete(t), t.i(n)); + }function st(t, n, e, r) { + if (t && t.o) { + if (it.has(t)) return;it.add(t), ot.c.push(function () { + it.delete(t), r && (e && t.d(1), r()); + }), t.o(n); + } + }"undefined" != typeof window ? window : "undefined" != typeof globalThis ? globalThis : global;function lt(t, n) { + st(t, 1, 1, function () { + n.delete(t.key); + }); + }function ft(t, n, e, r, o, i, a, c, u, s, l, f) { + for (var d = t.length, v = i.length, p = d, h = {}; p--;) { + h[t[p].key] = p; + }var g = [], + m = new Map(), + _ = new Map();for (p = v; p--;) { + var b = f(o, i, p), + y = e(b), + w = a.get(y);w ? r && w.p(b, n) : (w = s(y, b)).c(), m.set(y, g[p] = w), y in h && _.set(y, Math.abs(p - h[y])); + }var E = new Set(), + L = new Set();function T(t) { + ut(t, 1), t.m(c, l), a.set(t.key, t), l = t.first, v--; + }for (; d && v;) { + var O = g[v - 1], + C = t[d - 1], + x = O.key, + I = C.key;O === C ? (l = O.first, d--, v--) : m.has(I) ? !a.has(x) || E.has(x) ? T(O) : L.has(I) ? d-- : _.get(x) > _.get(I) ? (L.add(x), T(O)) : (E.add(I), d--) : (u(C, a), d--); + }for (; d--;) { + var D = t[d];m.has(D.key) || u(D, a); + }for (; v;) { + T(g[v - 1]); + }return g; + }new Set(["allowfullscreen", "allowpaymentrequest", "async", "autofocus", "autoplay", "checked", "controls", "default", "defer", "disabled", "formnovalidate", "hidden", "ismap", "loop", "multiple", "muted", "nomodule", "novalidate", "open", "playsinline", "readonly", "required", "reversed", "selected"]);function dt(t, n, e) { + var r = t.$$.props[n];void 0 !== r && (t.$$.bound[r] = e, e(t.$$.ctx[r])); + }function vt(t) { + t && t.c(); + }function pt(t, n, e, r) { + var o = t.$$, + i = o.fragment, + a = o.on_mount, + c = o.on_destroy, + u = o.after_update;i && i.m(n, e), r || J(function () { + var n = a.map(l).filter(v);c ? c.push.apply(c, n) : d(n), t.$$.on_mount = []; + }), u.forEach(J); + }function ht(t, n) { + var e = t.$$;null !== e.fragment && (d(e.on_destroy), e.fragment && e.fragment.d(n), e.on_destroy = e.fragment = null, e.ctx = []); + }function gt(t, n) { + -1 === t.$$.dirty[0] && (F.push(t), Y(), t.$$.dirty.fill(0)), t.$$.dirty[n / 31 | 0] |= 1 << n % 31; + }function mt(t, n, e, r, o, i, a, c) { + void 0 === c && (c = [-1]);var u = A;U(t);var l = t.$$ = { fragment: null, ctx: null, props: i, update: s, not_equal: o, bound: f(), on_mount: [], on_destroy: [], on_disconnect: [], before_update: [], after_update: [], context: new Map(n.context || (u ? u.$$.context : [])), callbacks: f(), dirty: c, skip_bound: !1, root: n.target || u.$$.root };a && a(l.root);var v, + p = !1;if (l.ctx = e ? e(t, n.props || {}, function (n, e) { + var r = !(arguments.length <= 2) && arguments.length - 2 ? arguments.length <= 2 ? void 0 : arguments[2] : e;return l.ctx && o(l.ctx[n], l.ctx[n] = r) && (!l.skip_bound && l.bound[n] && l.bound[n](r), p && gt(t, n)), e; + }) : [], l.update(), p = !0, d(l.before_update), l.fragment = !!r && r(l.ctx), n.target) { + if (n.hydrate) { + !0;var h = (v = n.target, Array.from(v.childNodes));l.fragment && l.fragment.l(h), h.forEach(E); + } else l.fragment && l.fragment.c();n.intro && ut(t.$$.fragment), pt(t, n.target, n.anchor, n.customElement), !1, et(); + }U(u); + }"function" == typeof HTMLElement && HTMLElement;var _t = function () { + function t() {}var n = t.prototype;return n.$destroy = function () { + ht(this, 1), this.$destroy = s; + }, n.$on = function (t, n) { + var e = this.$$.callbacks[t] || (this.$$.callbacks[t] = []);return e.push(n), function () { + var t = e.indexOf(n);-1 !== t && e.splice(t, 1); + }; + }, n.$set = function (t) { + this.$$set && !h(t) && (this.$$.skip_bound = !0, this.$$set(t), this.$$.skip_bound = !1); + }, t; + }(); + }, 3313: function _(t, n, e) { + "use strict"; + e.d(n, { U2: function U2() { + return r.$XI; + }, fZ: function fZ() { + return c; + } });var r = e(2942);function o(t, n) { + var e = "undefined" != typeof Symbol && t[Symbol.iterator] || t["@@iterator"];if (e) return (e = e.call(t)).next.bind(e);if (Array.isArray(t) || (e = function (t, n) { + if (!t) return;if ("string" == typeof t) return i(t, n);var e = Object.prototype.toString.call(t).slice(8, -1);"Object" === e && t.constructor && (e = t.constructor.name);if ("Map" === e || "Set" === e) return Array.from(t);if ("Arguments" === e || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)) return i(t, n); + }(t)) || n && t && "number" == typeof t.length) { + e && (t = e);var r = 0;return function () { + return r >= t.length ? { done: !0 } : { done: !1, value: t[r++] }; + }; + }throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + }function i(t, n) { + (null == n || n > t.length) && (n = t.length);for (var e = 0, r = new Array(n); e < n; e++) { + r[e] = t[e]; + }return r; + }var a = [];function c(t, n) { + var e;void 0 === n && (n = r.ZTd);var i = new Set();function c(n) { + if ((0, r.N8)(t, n) && (t = n, e)) { + for (var c, u = !a.length, s = o(i); !(c = s()).done;) { + var l = c.value;l[1](), a.push(l, t); + }if (u) { + for (var f = 0; f < a.length; f += 2) { + a[f][0](a[f + 1]); + }a.length = 0; + } + } + }return { set: c, update: function update(n) { + c(n(t)); + }, subscribe: function subscribe(o, a) { + void 0 === a && (a = r.ZTd);var u = [o, a];return i.add(u), 1 === i.size && (e = n(c) || r.ZTd), o(t), function () { + i.delete(u), 0 === i.size && (e(), e = null); + }; + } }; + } + } }, + __webpack_module_cache__ = {};function __webpack_require__(t) { + var n = __webpack_module_cache__[t];if (void 0 !== n) return n.exports;var e = __webpack_module_cache__[t] = { id: t, exports: {} };return __webpack_modules__[t](e, e.exports, __webpack_require__), e.exports; + }__webpack_require__.n = function (t) { + var n = t && t.__esModule ? function () { + return t.default; + } : function () { + return t; + };return __webpack_require__.d(n, { a: n }), n; + }, __webpack_require__.d = function (t, n) { + for (var e in n) { + __webpack_require__.o(n, e) && !__webpack_require__.o(t, e) && Object.defineProperty(t, e, { enumerable: !0, get: n[e] }); + } + }, __webpack_require__.g = function () { + if ("object" == (typeof globalThis === "undefined" ? "undefined" : _typeof(globalThis))) return globalThis;try { + return this || new Function("return this")(); + } catch (t) { + if ("object" == (typeof window === "undefined" ? "undefined" : _typeof(window))) return window; + } + }(), __webpack_require__.o = function (t, n) { + return Object.prototype.hasOwnProperty.call(t, n); + };var __webpack_exports__ = {};return function () { + "use strict"; + __webpack_require__.d(__webpack_exports__, { default: function _default() { + return Ar; + } });__webpack_require__(5441), __webpack_require__(8765);var t = __webpack_require__(4296), + n = __webpack_require__(5103), + e = { one: function one(t, n) { + void 0 === n && (n = document);try { + return n.querySelector(t) || void 0; + } catch (t) { + return; + } + }, all: function all(t, n) { + void 0 === n && (n = document);try { + var e = n.querySelectorAll(t);return [].slice.call(e); + } catch (t) { + return []; + } + }, addClass: function addClass(t, e) { + if (t) for (var r = (0, n.kJ)(t) ? t : [t], o = 0; o < r.length; o++) { + var i = (r[o].className || "").split(" ");i.indexOf(e) > -1 || (i.push(e), r[o].className = i.join(" ")); + } + }, removeClass: function removeClass(t, e) { + if (t) for (var r = (0, n.kJ)(t) ? t : [t], o = 0; o < r.length; o++) { + for (var i = r[o].className.split(" "), a = 0; a < i.length; a++) { + i[a] == e && (i[a] = ""); + }r[o].className = i.join(" ").trim(); + } + }, hasClass: function hasClass(t, n) { + return !(!t || !t.classList) && t.classList.contains(n); + }, bind: function bind(t, e, r, o) { + (void 0 === o && (o = !1), t) && ((0, n.kJ)(t) ? t : [t]).forEach(function (t) { + t.addEventListener(e, r, !!o); + }); + }, delegate: function delegate(t, n, r, o) { + t && t.addEventListener(n, function (n) { + var i = e.all(r, t);if (i) t: for (var a = 0; a < i.length; a++) { + for (var c = n.target; c;) { + if (c == i[a]) { + o.call(c, n, c);break t; + }if ((c = c.parentNode) == t) break; + } + } + }, !1); + }, removeChildren: function removeChildren(t) { + for (; t.firstChild;) { + t.removeChild(t.lastChild); + }return t; + } }, + r = e, + o = __webpack_require__(6464), + i = __webpack_require__(6881), + a = __webpack_require__(2942), + c = __webpack_require__(7003), + u = __webpack_require__(3379), + s = __webpack_require__.n(u), + l = __webpack_require__(7795), + f = __webpack_require__.n(l), + d = __webpack_require__(569), + v = __webpack_require__.n(d), + p = __webpack_require__(3565), + h = __webpack_require__.n(p), + g = __webpack_require__(9216), + m = __webpack_require__.n(g), + _ = __webpack_require__(4589), + b = __webpack_require__.n(_), + y = __webpack_require__(7558), + w = {};y.Z && y.Z.locals && (w.locals = y.Z.locals);var E, + L = 0, + T = {};T.styleTagTransform = b(), T.setAttributes = h(), T.insert = v().bind(null, "head"), T.domAPI = f(), T.insertStyleElement = m(), w.use = function (t) { + return T.options = t || {}, L++ || (E = s()(y.Z, T)), w; + }, w.unuse = function () { + L > 0 && ! --L && (E(), E = null); + };var O = w;function C(t) { + var n, e, r, o;return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.fLW)("vConsole"), (0, a.Ljt)(n, "class", "vc-switch"), (0, a.czc)(n, "right", t[2].x + "px"), (0, a.czc)(n, "bottom", t[2].y + "px"), (0, a.czc)(n, "display", t[0] ? "block" : "none"); + }, m: function m(i, c) { + (0, a.$Tr)(i, n, c), (0, a.R3I)(n, e), t[8](n), r || (o = [(0, a.oLt)(n, "touchstart", t[3]), (0, a.oLt)(n, "touchend", t[4]), (0, a.oLt)(n, "touchmove", t[5]), (0, a.oLt)(n, "click", t[7])], r = !0); + }, p: function p(t, e) { + var r = e[0];4 & r && (0, a.czc)(n, "right", t[2].x + "px"), 4 & r && (0, a.czc)(n, "bottom", t[2].y + "px"), 1 & r && (0, a.czc)(n, "display", t[0] ? "block" : "none"); + }, i: a.ZTd, o: a.ZTd, d: function d(e) { + e && (0, a.ogt)(n), t[8](null), r = !1, (0, a.j7q)(o); + } }; + }function x(t, e, r) { + var o, + i = e.show, + u = void 0 === i || i, + s = e.position, + l = void 0 === s ? { x: 0, y: 0 } : s, + f = { hasMoved: !1, x: 0, y: 0, startX: 0, startY: 0, endX: 0, endY: 0 }, + d = { x: 0, y: 0 };(0, c.H3)(function () { + O.use(); + }), (0, c.ev)(function () { + O.unuse(); + });var v = function v(t, e) { + var o = p(t, e);t = o[0], e = o[1], f.x = t, f.y = e, r(2, d.x = t, d), r(2, d.y = e, d), n.po("switch_x", t + ""), n.po("switch_y", e + ""); + }, + p = function p(t, n) { + var e = Math.max(document.documentElement.offsetWidth, window.innerWidth), + r = Math.max(document.documentElement.offsetHeight, window.innerHeight);return t + o.offsetWidth > e && (t = e - o.offsetWidth), n + o.offsetHeight > r && (n = r - o.offsetHeight), t < 0 && (t = 0), n < 20 && (n = 20), [t, n]; + };return t.$$set = function (t) { + "show" in t && r(0, u = t.show), "position" in t && r(6, l = t.position); + }, t.$$.update = function () { + 66 & t.$$.dirty && o && v(l.x, l.y); + }, [u, o, d, function (t) { + f.startX = t.touches[0].pageX, f.startY = t.touches[0].pageY, f.hasMoved = !1; + }, function (t) { + f.hasMoved && (f.startX = 0, f.startY = 0, f.hasMoved = !1, v(f.endX, f.endY)); + }, function (t) { + if (!(t.touches.length <= 0)) { + var n = t.touches[0].pageX - f.startX, + e = t.touches[0].pageY - f.startY, + o = Math.floor(f.x - n), + i = Math.floor(f.y - e), + a = p(o, i);o = a[0], i = a[1], r(2, d.x = o, d), r(2, d.y = i, d), f.endX = o, f.endY = i, f.hasMoved = !0, t.preventDefault(); + } + }, l, function (n) { + a.cKT.call(this, t, n); + }, function (t) { + a.VnY[t ? "unshift" : "push"](function () { + r(1, o = t); + }); + }]; + }var I = function (n) { + function e(t) { + var e;return e = n.call(this) || this, (0, a.S1n)((0, o.Z)(e), t, x, C, a.N8, { show: 0, position: 6 }), e; + }return (0, i.Z)(e, n), (0, t.Z)(e, [{ key: "show", get: function get() { + return this.$$.ctx[0]; + }, set: function set(t) { + this.$$set({ show: t }), (0, a.yl1)(); + } }, { key: "position", get: function get() { + return this.$$.ctx[6]; + }, set: function set(t) { + this.$$set({ position: t }), (0, a.yl1)(); + } }]), e; + }(a.f_C), + D = I, + R = __webpack_require__(4687), + k = __webpack_require__(3283), + P = {};k.Z && k.Z.locals && (P.locals = k.Z.locals);var M, + $ = 0, + S = {};S.styleTagTransform = b(), S.setAttributes = h(), S.insert = v().bind(null, "head"), S.domAPI = f(), S.insertStyleElement = m(), P.use = function (t) { + return S.options = t || {}, $++ || (M = s()(k.Z, S)), P; + }, P.unuse = function () { + $ > 0 && ! --$ && (M(), M = null); + };var j = P;function B(t, n, e) { + var r = t.slice();return r[41] = n[e][0], r[42] = n[e][1], r; + }function A(t, n, e) { + var r = t.slice();return r[45] = n[e], r[47] = e, r; + }function U(t, n, e) { + var r = t.slice();return r[41] = n[e][0], r[42] = n[e][1], r; + }function N(t, n, e) { + var r = t.slice();return r[41] = n[e][0], r[42] = n[e][1], r; + }function V(t, n, e) { + var r = t.slice();return r[45] = n[e], r[47] = e, r; + }function G(t, n, e) { + var r = t.slice();return r[41] = n[e][0], r[42] = n[e][1], r; + }function W(t) { + var n, + e, + r, + o, + i, + _c3 = t[42].name + "";function u() { + return t[26](t[42]); + }return { c: function c() { + n = (0, a.bGB)("a"), e = (0, a.fLW)(_c3), (0, a.Ljt)(n, "class", "vc-tab"), (0, a.Ljt)(n, "id", r = "__vc_tab_" + t[42].id), (0, a.VHj)(n, "vc-actived", t[42].id === t[2]); + }, m: function m(t, r) { + (0, a.$Tr)(t, n, r), (0, a.R3I)(n, e), o || (i = (0, a.oLt)(n, "click", u), o = !0); + }, p: function p(o, i) { + t = o, 8 & i[0] && _c3 !== (_c3 = t[42].name + "") && (0, a.rTO)(e, _c3), 8 & i[0] && r !== (r = "__vc_tab_" + t[42].id) && (0, a.Ljt)(n, "id", r), 12 & i[0] && (0, a.VHj)(n, "vc-actived", t[42].id === t[2]); + }, d: function d(t) { + t && (0, a.ogt)(n), o = !1, i(); + } }; + }function K(t) { + var n, + e = t[42].hasTabPanel && W(t);return { c: function c() { + e && e.c(), n = (0, a.cSb)(); + }, m: function m(t, r) { + e && e.m(t, r), (0, a.$Tr)(t, n, r); + }, p: function p(t, r) { + t[42].hasTabPanel ? e ? e.p(t, r) : ((e = W(t)).c(), e.m(n.parentNode, n)) : e && (e.d(1), e = null); + }, d: function d(t) { + e && e.d(t), t && (0, a.ogt)(n); + } }; + }function F(t) { + var n, + e, + r, + o, + i, + _c4 = t[45].name + "";function u() { + for (var n, e = arguments.length, r = new Array(e), o = 0; o < e; o++) { + r[o] = arguments[o]; + }return (n = t)[27].apply(n, [t[42], t[47]].concat(r)); + }return { c: function c() { + n = (0, a.bGB)("i"), e = (0, a.fLW)(_c4), (0, a.Ljt)(n, "class", r = "vc-toptab vc-topbar-" + t[42].id + " " + t[45].className), (0, a.VHj)(n, "vc-toggle", t[42].id === t[2]), (0, a.VHj)(n, "vc-actived", t[45].actived); + }, m: function m(t, r) { + (0, a.$Tr)(t, n, r), (0, a.R3I)(n, e), o || (i = (0, a.oLt)(n, "click", u), o = !0); + }, p: function p(o, i) { + t = o, 8 & i[0] && _c4 !== (_c4 = t[45].name + "") && (0, a.rTO)(e, _c4), 8 & i[0] && r !== (r = "vc-toptab vc-topbar-" + t[42].id + " " + t[45].className) && (0, a.Ljt)(n, "class", r), 12 & i[0] && (0, a.VHj)(n, "vc-toggle", t[42].id === t[2]), 8 & i[0] && (0, a.VHj)(n, "vc-actived", t[45].actived); + }, d: function d(t) { + t && (0, a.ogt)(n), o = !1, i(); + } }; + }function H(t) { + for (var n, e = t[42].topbarList, r = [], o = 0; o < e.length; o += 1) { + r[o] = F(V(t, e, o)); + }return { c: function c() { + for (var t = 0; t < r.length; t += 1) { + r[t].c(); + }n = (0, a.cSb)(); + }, m: function m(t, e) { + for (var o = 0; o < r.length; o += 1) { + r[o].m(t, e); + }(0, a.$Tr)(t, n, e); + }, p: function p(t, o) { + if (16396 & o[0]) { + var i;for (e = t[42].topbarList, i = 0; i < e.length; i += 1) { + var a = V(t, e, i);r[i] ? r[i].p(a, o) : (r[i] = F(a), r[i].c(), r[i].m(n.parentNode, n)); + }for (; i < r.length; i += 1) { + r[i].d(1); + }r.length = e.length; + } + }, d: function d(t) { + (0, a.RMB)(r, t), t && (0, a.ogt)(n); + } }; + }function q(t) { + var n, e;return { c: function c() { + n = (0, a.bGB)("div"), (0, a.Ljt)(n, "id", e = "__vc_plug_" + t[42].id), (0, a.Ljt)(n, "class", "vc-plugin-box"), (0, a.VHj)(n, "vc-actived", t[42].id === t[2]); + }, m: function m(e, r) { + (0, a.$Tr)(e, n, r), t[28](n); + }, p: function p(t, r) { + 8 & r[0] && e !== (e = "__vc_plug_" + t[42].id) && (0, a.Ljt)(n, "id", e), 12 & r[0] && (0, a.VHj)(n, "vc-actived", t[42].id === t[2]); + }, d: function d(e) { + e && (0, a.ogt)(n), t[28](null); + } }; + }function Z(t) { + var n, + e, + r, + o, + i, + _c5 = t[45].name + "";function u() { + for (var n, e = arguments.length, r = new Array(e), o = 0; o < e; o++) { + r[o] = arguments[o]; + }return (n = t)[30].apply(n, [t[42], t[47]].concat(r)); + }return { c: function c() { + n = (0, a.bGB)("i"), e = (0, a.fLW)(_c5), (0, a.Ljt)(n, "class", r = "vc-tool vc-tool-" + t[42].id), (0, a.VHj)(n, "vc-global-tool", t[45].global), (0, a.VHj)(n, "vc-toggle", t[42].id === t[2]); + }, m: function m(t, r) { + (0, a.$Tr)(t, n, r), (0, a.R3I)(n, e), o || (i = (0, a.oLt)(n, "click", u), o = !0); + }, p: function p(o, i) { + t = o, 8 & i[0] && _c5 !== (_c5 = t[45].name + "") && (0, a.rTO)(e, _c5), 8 & i[0] && r !== (r = "vc-tool vc-tool-" + t[42].id) && (0, a.Ljt)(n, "class", r), 8 & i[0] && (0, a.VHj)(n, "vc-global-tool", t[45].global), 12 & i[0] && (0, a.VHj)(n, "vc-toggle", t[42].id === t[2]); + }, d: function d(t) { + t && (0, a.ogt)(n), o = !1, i(); + } }; + }function X(t) { + for (var n, e = t[42].toolbarList, r = [], o = 0; o < e.length; o += 1) { + r[o] = Z(A(t, e, o)); + }return { c: function c() { + for (var t = 0; t < r.length; t += 1) { + r[t].c(); + }n = (0, a.cSb)(); + }, m: function m(t, e) { + for (var o = 0; o < r.length; o += 1) { + r[o].m(t, e); + }(0, a.$Tr)(t, n, e); + }, p: function p(t, o) { + if (32780 & o[0]) { + var i;for (e = t[42].toolbarList, i = 0; i < e.length; i += 1) { + var a = A(t, e, i);r[i] ? r[i].p(a, o) : (r[i] = Z(a), r[i].c(), r[i].m(n.parentNode, n)); + }for (; i < r.length; i += 1) { + r[i].d(1); + }r.length = e.length; + } + }, d: function d(t) { + (0, a.RMB)(r, t), t && (0, a.ogt)(n); + } }; + }function z(t) { + var n, e, r, o, i, _c6, u, s, l, f, d, v, _p2, h, g, _m3, _, b, y, w, E;function L(n) { + t[24](n); + }function T(n) { + t[25](n); + }var O = {};void 0 !== t[0] && (O.show = t[0]), void 0 !== t[1] && (O.position = t[1]), e = new D({ props: O }), a.VnY.push(function () { + return (0, a.akz)(e, "show", L); + }), a.VnY.push(function () { + return (0, a.akz)(e, "position", T); + }), e.$on("click", t[11]);for (var C = Object.entries(t[3]), x = [], I = 0; I < C.length; I += 1) { + x[I] = K(G(t, C, I)); + }for (var R = Object.entries(t[3]), k = [], P = 0; P < R.length; P += 1) { + k[P] = H(N(t, R, P)); + }for (var M = Object.entries(t[3]), $ = [], S = 0; S < M.length; S += 1) { + $[S] = q(U(t, M, S)); + }for (var j = Object.entries(t[3]), A = [], V = 0; V < j.length; V += 1) { + A[V] = X(B(t, j, V)); + }return { c: function c() { + var r, o;n = (0, a.bGB)("div"), (0, a.YCL)(e.$$.fragment), i = (0, a.DhX)(), _c6 = (0, a.bGB)("div"), u = (0, a.DhX)(), s = (0, a.bGB)("div"), l = (0, a.bGB)("div");for (var y = 0; y < x.length; y += 1) { + x[y].c(); + }f = (0, a.DhX)(), d = (0, a.bGB)("div");for (var w = 0; w < k.length; w += 1) { + k[w].c(); + }v = (0, a.DhX)(), _p2 = (0, a.bGB)("div");for (var E = 0; E < $.length; E += 1) { + $[E].c(); + }h = (0, a.DhX)(), g = (0, a.bGB)("div");for (var L = 0; L < A.length; L += 1) { + A[L].c(); + }_m3 = (0, a.DhX)(), (_ = (0, a.bGB)("i")).textContent = "Hide", (0, a.Ljt)(_c6, "class", "vc-mask"), (0, a.czc)(_c6, "display", t[10] ? "block" : "none"), (0, a.Ljt)(l, "class", "vc-tabbar"), (0, a.Ljt)(d, "class", "vc-topbar"), (0, a.Ljt)(_p2, "class", "vc-content"), (0, a.VHj)(_p2, "vc-has-topbar", (null == (r = t[3][t[2]]) || null == (o = r.topbarList) ? void 0 : o.length) > 0), (0, a.Ljt)(_, "class", "vc-tool vc-global-tool vc-tool-last vc-hide"), (0, a.Ljt)(g, "class", "vc-toolbar"), (0, a.Ljt)(s, "class", "vc-panel"), (0, a.czc)(s, "display", t[9] ? "block" : "none"), (0, a.Ljt)(n, "id", "__vconsole"), (0, a.Ljt)(n, "style", b = t[7] ? "font-size:" + t[7] + ";" : ""), (0, a.Ljt)(n, "data-theme", t[5]), (0, a.VHj)(n, "vc-toggle", t[8]); + }, m: function m(r, o) { + (0, a.$Tr)(r, n, o), (0, a.yef)(e, n, null), (0, a.R3I)(n, i), (0, a.R3I)(n, _c6), (0, a.R3I)(n, u), (0, a.R3I)(n, s), (0, a.R3I)(s, l);for (var b = 0; b < x.length; b += 1) { + x[b].m(l, null); + }(0, a.R3I)(s, f), (0, a.R3I)(s, d);for (var L = 0; L < k.length; L += 1) { + k[L].m(d, null); + }(0, a.R3I)(s, v), (0, a.R3I)(s, _p2);for (var T = 0; T < $.length; T += 1) { + $[T].m(_p2, null); + }t[29](_p2), (0, a.R3I)(s, h), (0, a.R3I)(s, g);for (var O = 0; O < A.length; O += 1) { + A[O].m(g, null); + }(0, a.R3I)(g, _m3), (0, a.R3I)(g, _), y = !0, w || (E = [(0, a.oLt)(_c6, "click", t[12]), (0, a.oLt)(_p2, "touchstart", t[16]), (0, a.oLt)(_p2, "touchmove", t[17]), (0, a.oLt)(_p2, "touchend", t[18]), (0, a.oLt)(_p2, "scroll", t[19]), (0, a.oLt)(_, "click", t[12]), (0, a.oLt)(n, "touchstart", t[20].touchStart, !0), (0, a.oLt)(n, "touchmove", t[20].touchMove, !0), (0, a.oLt)(n, "touchend", t[20].touchEnd, !0)], w = !0); + }, p: function p(t, i) { + var u, + f, + v = {};if (!r && 1 & i[0] && (r = !0, v.show = t[0], (0, a.hjT)(function () { + return r = !1; + })), !o && 2 & i[0] && (o = !0, v.position = t[1], (0, a.hjT)(function () { + return o = !1; + })), e.$set(v), (!y || 1024 & i[0]) && (0, a.czc)(_c6, "display", t[10] ? "block" : "none"), 8204 & i[0]) { + var h;for (C = Object.entries(t[3]), h = 0; h < C.length; h += 1) { + var _ = G(t, C, h);x[h] ? x[h].p(_, i) : (x[h] = K(_), x[h].c(), x[h].m(l, null)); + }for (; h < x.length; h += 1) { + x[h].d(1); + }x.length = C.length; + }if (16396 & i[0]) { + var w;for (R = Object.entries(t[3]), w = 0; w < R.length; w += 1) { + var E = N(t, R, w);k[w] ? k[w].p(E, i) : (k[w] = H(E), k[w].c(), k[w].m(d, null)); + }for (; w < k.length; w += 1) { + k[w].d(1); + }k.length = R.length; + }if (28 & i[0]) { + var L;for (M = Object.entries(t[3]), L = 0; L < M.length; L += 1) { + var T = U(t, M, L);$[L] ? $[L].p(T, i) : ($[L] = q(T), $[L].c(), $[L].m(_p2, null)); + }for (; L < $.length; L += 1) { + $[L].d(1); + }$.length = M.length; + }12 & i[0] && (0, a.VHj)(_p2, "vc-has-topbar", (null == (u = t[3][t[2]]) || null == (f = u.topbarList) ? void 0 : f.length) > 0);if (32780 & i[0]) { + var O;for (j = Object.entries(t[3]), O = 0; O < j.length; O += 1) { + var I = B(t, j, O);A[O] ? A[O].p(I, i) : (A[O] = X(I), A[O].c(), A[O].m(g, _m3)); + }for (; O < A.length; O += 1) { + A[O].d(1); + }A.length = j.length; + }(!y || 512 & i[0]) && (0, a.czc)(s, "display", t[9] ? "block" : "none"), (!y || 128 & i[0] && b !== (b = t[7] ? "font-size:" + t[7] + ";" : "")) && (0, a.Ljt)(n, "style", b), (!y || 32 & i[0]) && (0, a.Ljt)(n, "data-theme", t[5]), 256 & i[0] && (0, a.VHj)(n, "vc-toggle", t[8]); + }, i: function i(t) { + y || ((0, a.Ui)(e.$$.fragment, t), y = !0); + }, o: function o(t) { + (0, a.etI)(e.$$.fragment, t), y = !1; + }, d: function d(r) { + r && (0, a.ogt)(n), (0, a.vpE)(e), (0, a.RMB)(x, r), (0, a.RMB)(k, r), (0, a.RMB)($, r), t[29](null), (0, a.RMB)(A, r), w = !1, (0, a.j7q)(E); + } }; + }function Y(t, e, r) { + var o, + i, + u = e.theme, + s = void 0 === u ? "" : u, + l = e.disableScrolling, + f = void 0 !== l && l, + d = e.show, + v = void 0 !== d && d, + p = e.showSwitchButton, + h = void 0 === p || p, + g = e.switchButtonPosition, + m = void 0 === g ? { x: 0, y: 0 } : g, + _ = e.activedPluginId, + b = void 0 === _ ? "" : _, + y = e.pluginList, + w = void 0 === y ? {} : y, + E = e.divContentInner, + L = void 0 === E ? void 0 : E, + T = (0, c.x)(), + O = !1, + C = "", + x = !1, + I = !1, + D = !1, + k = !0, + P = 0, + M = null, + $ = {};(0, c.H3)(function () { + var t = document.querySelectorAll('[name="viewport"]');if (t && t[0]) { + var n = (t[t.length - 1].getAttribute("content") || "").match(/initial\-scale\=\d+(\.\d+)?/), + e = n ? parseFloat(n[0].split("=")[1]) : 1;1 !== e && r(7, C = Math.floor(1 / e * 13) + "px"); + }j.use && j.use(), i = R.x.subscribe(function (t) { + v && P !== t.updateTime && (P = t.updateTime, S()); + }); + }), (0, c.ev)(function () { + j.unuse && j.unuse(), i && i(); + });var S = function S() { + !f && k && o && r(6, o.scrollTop = o.scrollHeight - o.offsetHeight, o); + }, + B = function B(t) { + t !== b && (r(2, b = t), T("changePanel", { pluginId: t }), setTimeout(function () { + o && r(6, o.scrollTop = $[b] || 0, o); + }, 0)); + }, + A = function A(t, e, o) { + var i = w[e].topbarList[o], + a = !0;if (n.mf(i.onClick) && (a = i.onClick.call(t.target, t, i.data)), !1 === a) ;else { + for (var c = 0; c < w[e].topbarList.length; c++) { + r(3, w[e].topbarList[c].actived = o === c, w); + }r(3, w); + } + }, + U = function U(t, e, r) { + var o = w[e].toolbarList[r];n.mf(o.onClick) && o.onClick.call(t.target, t, o.data); + }, + N = { tapTime: 700, tapBoundary: 10, lastTouchStartTime: 0, touchstartX: 0, touchstartY: 0, touchHasMoved: !1, targetElem: null }, + V = { touchStart: function touchStart(t) { + if (0 === N.lastTouchStartTime) { + var n = t.targetTouches[0];N.touchstartX = n.pageX, N.touchstartY = n.pageY, N.lastTouchStartTime = t.timeStamp, N.targetElem = t.target.nodeType === Node.TEXT_NODE ? t.target.parentNode : t.target; + } + }, touchMove: function touchMove(t) { + var n = t.changedTouches[0];(Math.abs(n.pageX - N.touchstartX) > N.tapBoundary || Math.abs(n.pageY - N.touchstartY) > N.tapBoundary) && (N.touchHasMoved = !0); + }, touchEnd: function touchEnd(t) { + if (!1 === N.touchHasMoved && t.timeStamp - N.lastTouchStartTime < N.tapTime && null != N.targetElem) { + var n = !1;switch (N.targetElem.tagName.toLowerCase()) {case "textarea": + n = !0;break;case "input": + switch (N.targetElem.type) {case "button":case "checkbox":case "file":case "image":case "radio":case "submit": + n = !1;break;default: + n = !N.targetElem.disabled && !N.targetElem.readOnly;}}n ? N.targetElem.focus() : t.preventDefault();var e = t.changedTouches[0], + r = new MouseEvent("click", { bubbles: !0, cancelable: !0, view: window, screenX: e.screenX, screenY: e.screenY, clientX: e.clientX, clientY: e.clientY });N.targetElem.dispatchEvent(r); + }N.lastTouchStartTime = 0, N.touchHasMoved = !1, N.targetElem = null; + } };return t.$$set = function (t) { + "theme" in t && r(5, s = t.theme), "disableScrolling" in t && r(21, f = t.disableScrolling), "show" in t && r(22, v = t.show), "showSwitchButton" in t && r(0, h = t.showSwitchButton), "switchButtonPosition" in t && r(1, m = t.switchButtonPosition), "activedPluginId" in t && r(2, b = t.activedPluginId), "pluginList" in t && r(3, w = t.pluginList), "divContentInner" in t && r(4, L = t.divContentInner); + }, t.$$.update = function () { + 12582912 & t.$$.dirty[0] && (!0 === v ? (r(9, I = !0), r(10, D = !0), M && clearTimeout(M), r(23, M = setTimeout(function () { + r(8, x = !0), S(); + }, 10))) : (r(8, x = !1), M && clearTimeout(M), r(23, M = setTimeout(function () { + r(9, I = !1), r(10, D = !1); + }, 330)))); + }, [h, m, b, w, L, s, o, C, x, I, D, function (t) { + T("show", { show: !0 }); + }, function (t) { + T("show", { show: !1 }); + }, B, A, U, function (t) { + var n = o.scrollTop, + e = o.scrollHeight, + i = n + o.offsetHeight;0 === n ? (r(6, o.scrollTop = 1, o), 0 === o.scrollTop && t.target.classList && !t.target.classList.contains("vc-cmd-input") && (O = !0)) : i === e && (r(6, o.scrollTop = n - 1, o), o.scrollTop === n && t.target.classList && !t.target.classList.contains("vc-cmd-input") && (O = !0)); + }, function (t) { + O && t.preventDefault(); + }, function (t) { + O = !1; + }, function (t) { + v && (k = o.scrollTop + o.offsetHeight >= o.scrollHeight - 50, $[b] = o.scrollTop); + }, V, f, v, M, function (t) { + r(0, h = t); + }, function (t) { + r(1, m = t); + }, function (t) { + return B(t.id); + }, function (t, n, e) { + return A(e, t.id, n); + }, function (t) { + a.VnY[t ? "unshift" : "push"](function () { + r(4, L = t); + }); + }, function (t) { + a.VnY[t ? "unshift" : "push"](function () { + r(6, o = t); + }); + }, function (t, n, e) { + return U(e, t.id, n); + }]; + }var J = function (n) { + function e(t) { + var e;return e = n.call(this) || this, (0, a.S1n)((0, o.Z)(e), t, Y, z, a.N8, { theme: 5, disableScrolling: 21, show: 22, showSwitchButton: 0, switchButtonPosition: 1, activedPluginId: 2, pluginList: 3, divContentInner: 4 }, null, [-1, -1]), e; + }return (0, i.Z)(e, n), (0, t.Z)(e, [{ key: "theme", get: function get() { + return this.$$.ctx[5]; + }, set: function set(t) { + this.$$set({ theme: t }), (0, a.yl1)(); + } }, { key: "disableScrolling", get: function get() { + return this.$$.ctx[21]; + }, set: function set(t) { + this.$$set({ disableScrolling: t }), (0, a.yl1)(); + } }, { key: "show", get: function get() { + return this.$$.ctx[22]; + }, set: function set(t) { + this.$$set({ show: t }), (0, a.yl1)(); + } }, { key: "showSwitchButton", get: function get() { + return this.$$.ctx[0]; + }, set: function set(t) { + this.$$set({ showSwitchButton: t }), (0, a.yl1)(); + } }, { key: "switchButtonPosition", get: function get() { + return this.$$.ctx[1]; + }, set: function set(t) { + this.$$set({ switchButtonPosition: t }), (0, a.yl1)(); + } }, { key: "activedPluginId", get: function get() { + return this.$$.ctx[2]; + }, set: function set(t) { + this.$$set({ activedPluginId: t }), (0, a.yl1)(); + } }, { key: "pluginList", get: function get() { + return this.$$.ctx[3]; + }, set: function set(t) { + this.$$set({ pluginList: t }), (0, a.yl1)(); + } }, { key: "divContentInner", get: function get() { + return this.$$.ctx[4]; + }, set: function set(t) { + this.$$set({ divContentInner: t }), (0, a.yl1)(); + } }]), e; + }(a.f_C), + Q = J, + tt = function () { + function e(t, n) { + void 0 === n && (n = "newPlugin"), this.isReady = !1, this.eventMap = new Map(), this.exporter = void 0, this._id = void 0, this._name = void 0, this._vConsole = void 0, this.id = t, this.name = n, this.isReady = !1; + }var r = e.prototype;return r.on = function (t, n) { + return this.eventMap.set(t, n), this; + }, r.onRemove = function () { + this.unbindExporter(); + }, r.trigger = function (t, n) { + var e = this.eventMap.get(t);if ("function" == typeof e) e.call(this, n);else { + var r = "on" + t.charAt(0).toUpperCase() + t.slice(1);"function" == typeof this[r] && this[r].call(this, n); + }return this; + }, r.bindExporter = function () { + if (this._vConsole && this.exporter) { + var t = "default" === this.id ? "log" : this.id;this._vConsole[t] = this.exporter; + } + }, r.unbindExporter = function () { + var t = "default" === this.id ? "log" : this.id;this._vConsole && this._vConsole[t] && (this._vConsole[t] = void 0); + }, r.getUniqueID = function (t) { + return void 0 === t && (t = ""), (0, n.QI)(t); + }, (0, t.Z)(e, [{ key: "id", get: function get() { + return this._id; + }, set: function set(t) { + if ("string" != typeof t) throw "[vConsole] Plugin ID must be a string.";if (!t) throw "[vConsole] Plugin ID cannot be empty.";this._id = t.toLowerCase(); + } }, { key: "name", get: function get() { + return this._name; + }, set: function set(t) { + if ("string" != typeof t) throw "[vConsole] Plugin name must be a string.";if (!t) throw "[vConsole] Plugin name cannot be empty.";this._name = t; + } }, { key: "vConsole", get: function get() { + return this._vConsole || void 0; + }, set: function set(t) { + if (!t) throw "[vConsole] vConsole cannot be empty";this._vConsole = t, this.bindExporter(); + } }]), e; + }(), + nt = function (t) { + function n(n, e, r, o) { + var i;return (i = t.call(this, n, e) || this).CompClass = void 0, i.compInstance = void 0, i.initialProps = void 0, i.CompClass = r, i.initialProps = o, i; + }(0, i.Z)(n, t);var e = n.prototype;return e.onReady = function () { + this.isReady = !0; + }, e.onRenderTab = function (t) { + var n = document.createElement("div");this.compInstance = new this.CompClass({ target: n, props: this.initialProps }), t(n.firstElementChild); + }, e.onRemove = function () { + t.prototype.onRemove && t.prototype.onRemove.call(this), this.compInstance && this.compInstance.$destroy(); + }, n; + }(tt), + et = __webpack_require__(8665), + rt = __webpack_require__(9923);var ot = __webpack_require__(6958);function it(t) { + var n, e;return (n = new ot.Z({ props: { name: t[0] ? "success" : "copy" } })).$on("click", t[1]), { c: function c() { + (0, a.YCL)(n.$$.fragment); + }, m: function m(t, r) { + (0, a.yef)(n, t, r), e = !0; + }, p: function p(t, e) { + var r = {};1 & e[0] && (r.name = t[0] ? "success" : "copy"), n.$set(r); + }, i: function i(t) { + e || ((0, a.Ui)(n.$$.fragment, t), e = !0); + }, o: function o(t) { + (0, a.etI)(n.$$.fragment, t), e = !1; + }, d: function d(t) { + (0, a.vpE)(n, t); + } }; + }function at(t, e, r) { + var o = e.content, + i = void 0 === o ? "" : o, + a = e.handler, + c = void 0 === a ? void 0 : a, + u = { target: document.documentElement }, + s = !1;return t.$$set = function (t) { + "content" in t && r(2, i = t.content), "handler" in t && r(3, c = t.handler); + }, [s, function (t) { + (function (t, n) { + var e = (void 0 === n ? {} : n).target, + r = void 0 === e ? document.body : e, + o = document.createElement("textarea"), + i = document.activeElement;o.value = t, o.setAttribute("readonly", ""), o.style.contain = "strict", o.style.position = "absolute", o.style.left = "-9999px", o.style.fontSize = "12pt";var a = document.getSelection(), + c = !1;a.rangeCount > 0 && (c = a.getRangeAt(0)), r.append(o), o.select(), o.selectionStart = 0, o.selectionEnd = t.length;var u = !1;try { + u = document.execCommand("copy"); + } catch (t) {}o.remove(), c && (a.removeAllRanges(), a.addRange(c)), i && i.focus(); + })(n.mf(c) ? c(i) || "" : n.Kn(i) || n.kJ(i) ? n.hZ(i) : i, u), r(0, s = !0), setTimeout(function () { + r(0, s = !1); + }, 600); + }, i, c]; + }var ct = function (n) { + function e(t) { + var e;return e = n.call(this) || this, (0, a.S1n)((0, o.Z)(e), t, at, it, a.N8, { content: 2, handler: 3 }), e; + }return (0, i.Z)(e, n), (0, t.Z)(e, [{ key: "content", get: function get() { + return this.$$.ctx[2]; + }, set: function set(t) { + this.$$set({ content: t }), (0, a.yl1)(); + } }, { key: "handler", get: function get() { + return this.$$.ctx[3]; + }, set: function set(t) { + this.$$set({ handler: t }), (0, a.yl1)(); + } }]), e; + }(a.f_C), + ut = ct, + st = __webpack_require__(845), + lt = {};st.Z && st.Z.locals && (lt.locals = st.Z.locals);var ft, + dt = 0, + vt = {};vt.styleTagTransform = b(), vt.setAttributes = h(), vt.insert = v().bind(null, "head"), vt.domAPI = f(), vt.insertStyleElement = m(), lt.use = function (t) { + return vt.options = t || {}, dt++ || (ft = s()(st.Z, vt)), lt; + }, lt.unuse = function () { + dt > 0 && ! --dt && (ft(), ft = null); + };var pt = lt;function ht(t) { + var e, + r, + o, + i = n.rE(t[1]) + "";return { c: function c() { + e = (0, a.bGB)("i"), r = (0, a.fLW)(i), o = (0, a.fLW)(":"), (0, a.Ljt)(e, "class", "vc-log-key"), (0, a.VHj)(e, "vc-log-key-symbol", "symbol" === t[2]), (0, a.VHj)(e, "vc-log-key-private", "private" === t[2]); + }, m: function m(t, n) { + (0, a.$Tr)(t, e, n), (0, a.R3I)(e, r), (0, a.$Tr)(t, o, n); + }, p: function p(t, o) { + 2 & o && i !== (i = n.rE(t[1]) + "") && (0, a.rTO)(r, i), 4 & o && (0, a.VHj)(e, "vc-log-key-symbol", "symbol" === t[2]), 4 & o && (0, a.VHj)(e, "vc-log-key-private", "private" === t[2]); + }, d: function d(t) { + t && (0, a.ogt)(e), t && (0, a.ogt)(o); + } }; + }function gt(t) { + var n;return { c: function c() { + n = (0, a.fLW)(t[3]); + }, m: function m(t, e) { + (0, a.$Tr)(t, n, e); + }, p: function p(t, e) { + 8 & e && (0, a.rTO)(n, t[3]); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function mt(t) { + var n, e;return { c: function c() { + n = new a.FWw(), e = (0, a.cSb)(), n.a = e; + }, m: function m(r, o) { + n.m(t[3], r, o), (0, a.$Tr)(r, e, o); + }, p: function p(t, e) { + 8 & e && n.p(t[3]); + }, d: function d(t) { + t && (0, a.ogt)(e), t && n.d(); + } }; + }function _t(t) { + var n, + e, + r, + o = void 0 !== t[1] && ht(t);function i(t, n) { + return t[5] || "string" !== t[4] ? gt : mt; + }var c = i(t), + u = c(t);return { c: function c() { + o && o.c(), n = (0, a.DhX)(), e = (0, a.bGB)("i"), u.c(), (0, a.Ljt)(e, "class", r = "vc-log-val vc-log-val-" + t[4]), (0, a.Ljt)(e, "style", t[0]), (0, a.VHj)(e, "vc-log-val-haskey", void 0 !== t[1]); + }, m: function m(t, r) { + o && o.m(t, r), (0, a.$Tr)(t, n, r), (0, a.$Tr)(t, e, r), u.m(e, null); + }, p: function p(t, s) { + var l = s[0];void 0 !== t[1] ? o ? o.p(t, l) : ((o = ht(t)).c(), o.m(n.parentNode, n)) : o && (o.d(1), o = null), c === (c = i(t)) && u ? u.p(t, l) : (u.d(1), (u = c(t)) && (u.c(), u.m(e, null))), 16 & l && r !== (r = "vc-log-val vc-log-val-" + t[4]) && (0, a.Ljt)(e, "class", r), 1 & l && (0, a.Ljt)(e, "style", t[0]), 18 & l && (0, a.VHj)(e, "vc-log-val-haskey", void 0 !== t[1]); + }, i: a.ZTd, o: a.ZTd, d: function d(t) { + o && o.d(t), t && (0, a.ogt)(n), t && (0, a.ogt)(e), u.d(); + } }; + }function bt(t, e, r) { + var o = e.origData, + i = e.style, + a = void 0 === i ? "" : i, + u = e.dataKey, + s = void 0 === u ? void 0 : u, + l = e.keyType, + f = void 0 === l ? "" : l, + d = "", + v = "", + p = !1, + h = !1;return (0, c.H3)(function () { + pt.use(); + }), (0, c.ev)(function () { + pt.unuse(); + }), t.$$set = function (t) { + "origData" in t && r(6, o = t.origData), "style" in t && r(0, a = t.style), "dataKey" in t && r(1, s = t.dataKey), "keyType" in t && r(2, f = t.keyType); + }, t.$$.update = function () { + if (250 & t.$$.dirty && !p) { + r(5, h = void 0 !== s);var e = (0, et.LH)(o, h);r(4, v = e.valueType), r(3, d = e.text), h || "string" !== v || r(3, d = n.Ak(d.replace("\\n", "\n").replace("\\t", "\t"))), r(7, p = !0); + } + }, [a, s, f, d, v, h, o, p]; + }var yt = function (n) { + function e(t) { + var e;return e = n.call(this) || this, (0, a.S1n)((0, o.Z)(e), t, bt, _t, a.N8, { origData: 6, style: 0, dataKey: 1, keyType: 2 }), e; + }return (0, i.Z)(e, n), (0, t.Z)(e, [{ key: "origData", get: function get() { + return this.$$.ctx[6]; + }, set: function set(t) { + this.$$set({ origData: t }), (0, a.yl1)(); + } }, { key: "style", get: function get() { + return this.$$.ctx[0]; + }, set: function set(t) { + this.$$set({ style: t }), (0, a.yl1)(); + } }, { key: "dataKey", get: function get() { + return this.$$.ctx[1]; + }, set: function set(t) { + this.$$set({ dataKey: t }), (0, a.yl1)(); + } }, { key: "keyType", get: function get() { + return this.$$.ctx[2]; + }, set: function set(t) { + this.$$set({ keyType: t }), (0, a.yl1)(); + } }]), e; + }(a.f_C), + wt = yt, + Et = __webpack_require__(1237), + Lt = {};Et.Z && Et.Z.locals && (Lt.locals = Et.Z.locals);var Tt, + Ot = 0, + Ct = {};Ct.styleTagTransform = b(), Ct.setAttributes = h(), Ct.insert = v().bind(null, "head"), Ct.domAPI = f(), Ct.insertStyleElement = m(), Lt.use = function (t) { + return Ct.options = t || {}, Ot++ || (Tt = s()(Et.Z, Ct)), Lt; + }, Lt.unuse = function () { + Ot > 0 && ! --Ot && (Tt(), Tt = null); + };var xt = Lt;function It(t, n, e) { + var r = t.slice();return r[18] = n[e], r[20] = e, r; + }function Dt(t, n, e) { + var r = t.slice();return r[18] = n[e], r; + }function Rt(t, n, e) { + var r = t.slice();return r[18] = n[e], r[20] = e, r; + }function kt(t) { + for (var n, e, r, o, i, _c7, u, s = [], l = new Map(), f = [], d = new Map(), v = [], _p3 = new Map(), h = t[5], g = function g(t) { + return t[18]; + }, m = 0; m < h.length; m += 1) { + var _ = Rt(t, h, m), + b = g(_);l.set(b, s[m] = Mt(b, _)); + }for (var y = t[9] < t[5].length && $t(t), w = t[7], E = function E(t) { + return t[18]; + }, L = 0; L < w.length; L += 1) { + var T = Dt(t, w, L), + O = E(T);d.set(O, f[L] = St(O, T)); + }for (var C = t[6], x = function x(t) { + return t[18]; + }, I = 0; I < C.length; I += 1) { + var D = It(t, C, I), + R = x(D);_p3.set(R, v[I] = Bt(R, D)); + }var k = t[10] < t[6].length && At(t), + P = t[8] && Ut(t);return { c: function c() { + n = (0, a.bGB)("div");for (var t = 0; t < s.length; t += 1) { + s[t].c(); + }e = (0, a.DhX)(), y && y.c(), r = (0, a.DhX)();for (var u = 0; u < f.length; u += 1) { + f[u].c(); + }o = (0, a.DhX)();for (var l = 0; l < v.length; l += 1) { + v[l].c(); + }i = (0, a.DhX)(), k && k.c(), _c7 = (0, a.DhX)(), P && P.c(), (0, a.Ljt)(n, "class", "vc-log-tree-child"); + }, m: function m(t, l) { + (0, a.$Tr)(t, n, l);for (var d = 0; d < s.length; d += 1) { + s[d].m(n, null); + }(0, a.R3I)(n, e), y && y.m(n, null), (0, a.R3I)(n, r);for (var p = 0; p < f.length; p += 1) { + f[p].m(n, null); + }(0, a.R3I)(n, o);for (var h = 0; h < v.length; h += 1) { + v[h].m(n, null); + }(0, a.R3I)(n, i), k && k.m(n, null), (0, a.R3I)(n, _c7), P && P.m(n, null), u = !0; + }, p: function p(t, u) { + 16928 & u && (h = t[5], (0, a.dvw)(), s = (0, a.GQg)(s, u, g, 1, t, h, l, n, a.cly, Mt, e, Rt), (0, a.gbL)()), t[9] < t[5].length ? y ? y.p(t, u) : ((y = $t(t)).c(), y.m(n, r)) : y && (y.d(1), y = null), 16512 & u && (w = t[7], (0, a.dvw)(), f = (0, a.GQg)(f, u, E, 1, t, w, d, n, a.cly, St, o, Dt), (0, a.gbL)()), 17472 & u && (C = t[6], (0, a.dvw)(), v = (0, a.GQg)(v, u, x, 1, t, C, _p3, n, a.cly, Bt, i, It), (0, a.gbL)()), t[10] < t[6].length ? k ? k.p(t, u) : ((k = At(t)).c(), k.m(n, _c7)) : k && (k.d(1), k = null), t[8] ? P ? (P.p(t, u), 256 & u && (0, a.Ui)(P, 1)) : ((P = Ut(t)).c(), (0, a.Ui)(P, 1), P.m(n, null)) : P && ((0, a.dvw)(), (0, a.etI)(P, 1, 1, function () { + P = null; + }), (0, a.gbL)()); + }, i: function i(t) { + if (!u) { + for (var n = 0; n < h.length; n += 1) { + (0, a.Ui)(s[n]); + }for (var e = 0; e < w.length; e += 1) { + (0, a.Ui)(f[e]); + }for (var r = 0; r < C.length; r += 1) { + (0, a.Ui)(v[r]); + }(0, a.Ui)(P), u = !0; + } + }, o: function o(t) { + for (var n = 0; n < s.length; n += 1) { + (0, a.etI)(s[n]); + }for (var e = 0; e < f.length; e += 1) { + (0, a.etI)(f[e]); + }for (var r = 0; r < v.length; r += 1) { + (0, a.etI)(v[r]); + }(0, a.etI)(P), u = !1; + }, d: function d(t) { + t && (0, a.ogt)(n);for (var e = 0; e < s.length; e += 1) { + s[e].d(); + }y && y.d();for (var r = 0; r < f.length; r += 1) { + f[r].d(); + }for (var o = 0; o < v.length; o += 1) { + v[o].d(); + }k && k.d(), P && P.d(); + } }; + }function Pt(t) { + var n, e;return n = new Gt({ props: { origData: t[14](t[18]), dataKey: t[18] } }), { c: function c() { + (0, a.YCL)(n.$$.fragment); + }, m: function m(t, r) { + (0, a.yef)(n, t, r), e = !0; + }, p: function p(t, e) { + var r = {};32 & e && (r.origData = t[14](t[18])), 32 & e && (r.dataKey = t[18]), n.$set(r); + }, i: function i(t) { + e || ((0, a.Ui)(n.$$.fragment, t), e = !0); + }, o: function o(t) { + (0, a.etI)(n.$$.fragment, t), e = !1; + }, d: function d(t) { + (0, a.vpE)(n, t); + } }; + }function Mt(t, n) { + var e, + r, + _o, + _i = n[20] < n[9] && Pt(n);return { key: t, first: null, c: function c() { + e = (0, a.cSb)(), _i && _i.c(), r = (0, a.cSb)(), this.first = e; + }, m: function m(t, n) { + (0, a.$Tr)(t, e, n), _i && _i.m(t, n), (0, a.$Tr)(t, r, n), _o = !0; + }, p: function p(t, e) { + (n = t)[20] < n[9] ? _i ? (_i.p(n, e), 544 & e && (0, a.Ui)(_i, 1)) : ((_i = Pt(n)).c(), (0, a.Ui)(_i, 1), _i.m(r.parentNode, r)) : _i && ((0, a.dvw)(), (0, a.etI)(_i, 1, 1, function () { + _i = null; + }), (0, a.gbL)()); + }, i: function i(t) { + _o || ((0, a.Ui)(_i), _o = !0); + }, o: function o(t) { + (0, a.etI)(_i), _o = !1; + }, d: function d(t) { + t && (0, a.ogt)(e), _i && _i.d(t), t && (0, a.ogt)(r); + } }; + }function $t(t) { + var n, + e, + r, + o, + i = t[12](t[5].length - t[9]) + "";return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.fLW)(i), (0, a.Ljt)(n, "class", "vc-log-tree-loadmore"); + }, m: function m(i, c) { + (0, a.$Tr)(i, n, c), (0, a.R3I)(n, e), r || (o = (0, a.oLt)(n, "click", t[16]), r = !0); + }, p: function p(t, n) { + 544 & n && i !== (i = t[12](t[5].length - t[9]) + "") && (0, a.rTO)(e, i); + }, d: function d(t) { + t && (0, a.ogt)(n), r = !1, o(); + } }; + }function St(t, n) { + var e, r, _o2;return r = new Gt({ props: { origData: n[14](n[18]), dataKey: String(n[18]), keyType: "symbol" } }), { key: t, first: null, c: function c() { + e = (0, a.cSb)(), (0, a.YCL)(r.$$.fragment), this.first = e; + }, m: function m(t, n) { + (0, a.$Tr)(t, e, n), (0, a.yef)(r, t, n), _o2 = !0; + }, p: function p(t, e) { + n = t;var o = {};128 & e && (o.origData = n[14](n[18])), 128 & e && (o.dataKey = String(n[18])), r.$set(o); + }, i: function i(t) { + _o2 || ((0, a.Ui)(r.$$.fragment, t), _o2 = !0); + }, o: function o(t) { + (0, a.etI)(r.$$.fragment, t), _o2 = !1; + }, d: function d(t) { + t && (0, a.ogt)(e), (0, a.vpE)(r, t); + } }; + }function jt(t) { + var n, e;return n = new Gt({ props: { origData: t[14](t[18]), dataKey: t[18], keyType: "private" } }), { c: function c() { + (0, a.YCL)(n.$$.fragment); + }, m: function m(t, r) { + (0, a.yef)(n, t, r), e = !0; + }, p: function p(t, e) { + var r = {};64 & e && (r.origData = t[14](t[18])), 64 & e && (r.dataKey = t[18]), n.$set(r); + }, i: function i(t) { + e || ((0, a.Ui)(n.$$.fragment, t), e = !0); + }, o: function o(t) { + (0, a.etI)(n.$$.fragment, t), e = !1; + }, d: function d(t) { + (0, a.vpE)(n, t); + } }; + }function Bt(t, n) { + var e, + r, + _o3, + _i2 = n[20] < n[10] && jt(n);return { key: t, first: null, c: function c() { + e = (0, a.cSb)(), _i2 && _i2.c(), r = (0, a.cSb)(), this.first = e; + }, m: function m(t, n) { + (0, a.$Tr)(t, e, n), _i2 && _i2.m(t, n), (0, a.$Tr)(t, r, n), _o3 = !0; + }, p: function p(t, e) { + (n = t)[20] < n[10] ? _i2 ? (_i2.p(n, e), 1088 & e && (0, a.Ui)(_i2, 1)) : ((_i2 = jt(n)).c(), (0, a.Ui)(_i2, 1), _i2.m(r.parentNode, r)) : _i2 && ((0, a.dvw)(), (0, a.etI)(_i2, 1, 1, function () { + _i2 = null; + }), (0, a.gbL)()); + }, i: function i(t) { + _o3 || ((0, a.Ui)(_i2), _o3 = !0); + }, o: function o(t) { + (0, a.etI)(_i2), _o3 = !1; + }, d: function d(t) { + t && (0, a.ogt)(e), _i2 && _i2.d(t), t && (0, a.ogt)(r); + } }; + }function At(t) { + var n, + e, + r, + o, + i = t[12](t[6].length - t[10]) + "";return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.fLW)(i), (0, a.Ljt)(n, "class", "vc-log-tree-loadmore"); + }, m: function m(i, c) { + (0, a.$Tr)(i, n, c), (0, a.R3I)(n, e), r || (o = (0, a.oLt)(n, "click", t[17]), r = !0); + }, p: function p(t, n) { + 1088 & n && i !== (i = t[12](t[6].length - t[10]) + "") && (0, a.rTO)(e, i); + }, d: function d(t) { + t && (0, a.ogt)(n), r = !1, o(); + } }; + }function Ut(t) { + var n, e;return n = new Gt({ props: { origData: t[14]("__proto__"), dataKey: "__proto__", keyType: "private" } }), { c: function c() { + (0, a.YCL)(n.$$.fragment); + }, m: function m(t, r) { + (0, a.yef)(n, t, r), e = !0; + }, p: a.ZTd, i: function i(t) { + e || ((0, a.Ui)(n.$$.fragment, t), e = !0); + }, o: function o(t) { + (0, a.etI)(n.$$.fragment, t), e = !1; + }, d: function d(t) { + (0, a.vpE)(n, t); + } }; + }function Nt(t) { + var n, e, r, o, _i3, c, u;r = new wt({ props: { origData: t[0], dataKey: t[1], keyType: t[2] } });var s = t[4] && t[3] && kt(t);return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.bGB)("div"), (0, a.YCL)(r.$$.fragment), o = (0, a.DhX)(), s && s.c(), (0, a.Ljt)(e, "class", "vc-log-tree-node"), (0, a.Ljt)(n, "class", "vc-log-tree"), (0, a.VHj)(n, "vc-toggle", t[3]), (0, a.VHj)(n, "vc-is-tree", t[4]); + }, m: function m(l, f) { + (0, a.$Tr)(l, n, f), (0, a.R3I)(n, e), (0, a.yef)(r, e, null), (0, a.R3I)(n, o), s && s.m(n, null), _i3 = !0, c || (u = (0, a.oLt)(e, "click", t[13]), c = !0); + }, p: function p(t, e) { + var o = e[0], + i = {};1 & o && (i.origData = t[0]), 2 & o && (i.dataKey = t[1]), 4 & o && (i.keyType = t[2]), r.$set(i), t[4] && t[3] ? s ? (s.p(t, o), 24 & o && (0, a.Ui)(s, 1)) : ((s = kt(t)).c(), (0, a.Ui)(s, 1), s.m(n, null)) : s && ((0, a.dvw)(), (0, a.etI)(s, 1, 1, function () { + s = null; + }), (0, a.gbL)()), 8 & o && (0, a.VHj)(n, "vc-toggle", t[3]), 16 & o && (0, a.VHj)(n, "vc-is-tree", t[4]); + }, i: function i(t) { + _i3 || ((0, a.Ui)(r.$$.fragment, t), (0, a.Ui)(s), _i3 = !0); + }, o: function o(t) { + (0, a.etI)(r.$$.fragment, t), (0, a.etI)(s), _i3 = !1; + }, d: function d(t) { + t && (0, a.ogt)(n), (0, a.vpE)(r), s && s.d(), c = !1, u(); + } }; + }function Vt(t, e, r) { + var o, + i, + a, + u = e.origData, + s = e.dataKey, + l = void 0 === s ? void 0 : s, + f = e.keyType, + d = void 0 === f ? "" : f, + v = !1, + p = !1, + h = !1, + g = !1, + m = 50, + _ = 50;(0, c.H3)(function () { + xt.use(); + }), (0, c.ev)(function () { + xt.unuse(); + });var b = function b(t) { + "enum" === t ? r(9, m += 50) : "nonEnum" === t && r(10, _ += 50); + };return t.$$set = function (t) { + "origData" in t && r(0, u = t.origData), "dataKey" in t && r(1, l = t.dataKey), "keyType" in t && r(2, d = t.keyType); + }, t.$$.update = function () { + 33017 & t.$$.dirty && (v || (r(4, h = !(u instanceof et.Tg) && (n.kJ(u) || n.Kn(u))), r(15, v = !0)), h && p && (r(5, o = o || n.qr(n.MH(u))), r(6, i = i || n.qr(n.QK(u))), r(7, a = a || n._D(u)), r(8, g = n.Kn(u) && -1 === i.indexOf("__proto__")))); + }, [u, l, d, p, h, o, i, a, g, m, _, b, function (t) { + return "(..." + t + " Key" + (t > 1 ? "s" : "") + " Left)"; + }, function () { + r(3, p = !p); + }, function (t) { + try { + return u[t]; + } catch (t) { + return new et.Tg(); + } + }, v, function () { + return b("enum"); + }, function () { + return b("nonEnum"); + }]; + }var Gt = function (n) { + function e(t) { + var e;return e = n.call(this) || this, (0, a.S1n)((0, o.Z)(e), t, Vt, Nt, a.N8, { origData: 0, dataKey: 1, keyType: 2 }), e; + }return (0, i.Z)(e, n), (0, t.Z)(e, [{ key: "origData", get: function get() { + return this.$$.ctx[0]; + }, set: function set(t) { + this.$$set({ origData: t }), (0, a.yl1)(); + } }, { key: "dataKey", get: function get() { + return this.$$.ctx[1]; + }, set: function set(t) { + this.$$set({ dataKey: t }), (0, a.yl1)(); + } }, { key: "keyType", get: function get() { + return this.$$.ctx[2]; + }, set: function set(t) { + this.$$set({ keyType: t }), (0, a.yl1)(); + } }]), e; + }(a.f_C), + Wt = Gt, + Kt = __webpack_require__(7147), + Ft = {};Kt.Z && Kt.Z.locals && (Ft.locals = Kt.Z.locals);var Ht, + qt = 0, + Zt = {};Zt.styleTagTransform = b(), Zt.setAttributes = h(), Zt.insert = v().bind(null, "head"), Zt.domAPI = f(), Zt.insertStyleElement = m(), Ft.use = function (t) { + return Zt.options = t || {}, qt++ || (Ht = s()(Kt.Z, Zt)), Ft; + }, Ft.unuse = function () { + qt > 0 && ! --qt && (Ht(), Ht = null); + };var Xt = Ft;function zt(t, n, e) { + var r = t.slice();return r[7] = n[e], r[9] = e, r; + }function Yt(t) { + for (var n, e, r, o, i, _c8, u, s, l, f = [], d = new Map(), v = t[1] && Jt(t), _p4 = t[0].repeated && Qt(t), h = t[0].data, g = function g(t) { + return t[9]; + }, m = 0; m < h.length; m += 1) { + var _ = zt(t, h, m), + b = g(_);d.set(b, f[m] = en(b, _)); + }return u = new ut({ props: { handler: t[4] } }), { c: function c() { + n = (0, a.bGB)("div"), v && v.c(), e = (0, a.DhX)(), _p4 && _p4.c(), r = (0, a.DhX)(), o = (0, a.bGB)("div");for (var l = 0; l < f.length; l += 1) { + f[l].c(); + }i = (0, a.DhX)(), _c8 = (0, a.bGB)("div"), (0, a.YCL)(u.$$.fragment), (0, a.Ljt)(o, "class", "vc-log-content"), (0, a.Ljt)(_c8, "class", "vc-logrow-icon"), (0, a.Ljt)(n, "class", s = "vc-log-row vc-log-" + t[0].type), (0, a.VHj)(n, "vc-log-input", "input" === t[0].cmdType), (0, a.VHj)(n, "vc-log-output", "output" === t[0].cmdType); + }, m: function m(t, s) { + (0, a.$Tr)(t, n, s), v && v.m(n, null), (0, a.R3I)(n, e), _p4 && _p4.m(n, null), (0, a.R3I)(n, r), (0, a.R3I)(n, o);for (var d = 0; d < f.length; d += 1) { + f[d].m(o, null); + }(0, a.R3I)(n, i), (0, a.R3I)(n, _c8), (0, a.yef)(u, _c8, null), l = !0; + }, p: function p(t, i) { + t[1] ? v ? v.p(t, i) : ((v = Jt(t)).c(), v.m(n, e)) : v && (v.d(1), v = null), t[0].repeated ? _p4 ? _p4.p(t, i) : ((_p4 = Qt(t)).c(), _p4.m(n, r)) : _p4 && (_p4.d(1), _p4 = null), 9 & i && (h = t[0].data, (0, a.dvw)(), f = (0, a.GQg)(f, i, g, 1, t, h, d, o, a.cly, en, null, zt), (0, a.gbL)()), (!l || 1 & i && s !== (s = "vc-log-row vc-log-" + t[0].type)) && (0, a.Ljt)(n, "class", s), 1 & i && (0, a.VHj)(n, "vc-log-input", "input" === t[0].cmdType), 1 & i && (0, a.VHj)(n, "vc-log-output", "output" === t[0].cmdType); + }, i: function i(t) { + if (!l) { + for (var n = 0; n < h.length; n += 1) { + (0, a.Ui)(f[n]); + }(0, a.Ui)(u.$$.fragment, t), l = !0; + } + }, o: function o(t) { + for (var n = 0; n < f.length; n += 1) { + (0, a.etI)(f[n]); + }(0, a.etI)(u.$$.fragment, t), l = !1; + }, d: function d(t) { + t && (0, a.ogt)(n), v && v.d(), _p4 && _p4.d();for (var e = 0; e < f.length; e += 1) { + f[e].d(); + }(0, a.vpE)(u); + } }; + }function Jt(t) { + var n, e;return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.fLW)(t[2]), (0, a.Ljt)(n, "class", "vc-log-time"); + }, m: function m(t, r) { + (0, a.$Tr)(t, n, r), (0, a.R3I)(n, e); + }, p: function p(t, n) { + 4 & n && (0, a.rTO)(e, t[2]); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function Qt(t) { + var n, + e, + r, + o = t[0].repeated + "";return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.bGB)("i"), r = (0, a.fLW)(o), (0, a.Ljt)(n, "class", "vc-log-repeat"); + }, m: function m(t, o) { + (0, a.$Tr)(t, n, o), (0, a.R3I)(n, e), (0, a.R3I)(e, r); + }, p: function p(t, n) { + 1 & n && o !== (o = t[0].repeated + "") && (0, a.rTO)(r, o); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function tn(t) { + var n, e;return n = new wt({ props: { origData: t[7].origData, style: t[7].style } }), { c: function c() { + (0, a.YCL)(n.$$.fragment); + }, m: function m(t, r) { + (0, a.yef)(n, t, r), e = !0; + }, p: function p(t, e) { + var r = {};1 & e && (r.origData = t[7].origData), 1 & e && (r.style = t[7].style), n.$set(r); + }, i: function i(t) { + e || ((0, a.Ui)(n.$$.fragment, t), e = !0); + }, o: function o(t) { + (0, a.etI)(n.$$.fragment, t), e = !1; + }, d: function d(t) { + (0, a.vpE)(n, t); + } }; + }function nn(t) { + var n, e;return n = new Wt({ props: { origData: t[7].origData } }), { c: function c() { + (0, a.YCL)(n.$$.fragment); + }, m: function m(t, r) { + (0, a.yef)(n, t, r), e = !0; + }, p: function p(t, e) { + var r = {};1 & e && (r.origData = t[7].origData), n.$set(r); + }, i: function i(t) { + e || ((0, a.Ui)(n.$$.fragment, t), e = !0); + }, o: function o(t) { + (0, a.etI)(n.$$.fragment, t), e = !1; + }, d: function d(t) { + (0, a.vpE)(n, t); + } }; + }function en(t, n) { + var e, + r, + o, + _i4, + _c9, + u, + s = [nn, tn], + l = [];function f(t, n) { + return 1 & n && (r = null), null == r && (r = !!t[3](t[7].origData)), r ? 0 : 1; + }return o = f(n, -1), _i4 = l[o] = s[o](n), { key: t, first: null, c: function c() { + e = (0, a.cSb)(), _i4.c(), _c9 = (0, a.cSb)(), this.first = e; + }, m: function m(t, n) { + (0, a.$Tr)(t, e, n), l[o].m(t, n), (0, a.$Tr)(t, _c9, n), u = !0; + }, p: function p(t, e) { + var r = o;(o = f(n = t, e)) === r ? l[o].p(n, e) : ((0, a.dvw)(), (0, a.etI)(l[r], 1, 1, function () { + l[r] = null; + }), (0, a.gbL)(), (_i4 = l[o]) ? _i4.p(n, e) : (_i4 = l[o] = s[o](n)).c(), (0, a.Ui)(_i4, 1), _i4.m(_c9.parentNode, _c9)); + }, i: function i(t) { + u || ((0, a.Ui)(_i4), u = !0); + }, o: function o(t) { + (0, a.etI)(_i4), u = !1; + }, d: function d(t) { + t && (0, a.ogt)(e), l[o].d(t), t && (0, a.ogt)(_c9); + } }; + }function rn(t) { + var n, + e, + r = t[0] && Yt(t);return { c: function c() { + r && r.c(), n = (0, a.cSb)(); + }, m: function m(t, o) { + r && r.m(t, o), (0, a.$Tr)(t, n, o), e = !0; + }, p: function p(t, e) { + var o = e[0];t[0] ? r ? (r.p(t, o), 1 & o && (0, a.Ui)(r, 1)) : ((r = Yt(t)).c(), (0, a.Ui)(r, 1), r.m(n.parentNode, n)) : r && ((0, a.dvw)(), (0, a.etI)(r, 1, 1, function () { + r = null; + }), (0, a.gbL)()); + }, i: function i(t) { + e || ((0, a.Ui)(r), e = !0); + }, o: function o(t) { + (0, a.etI)(r), e = !1; + }, d: function d(t) { + r && r.d(t), t && (0, a.ogt)(n); + } }; + }function on(t, e, r) { + var o = e.log, + i = e.showTimestamps, + a = void 0 !== i && i, + u = !1, + s = "", + l = function l(t, n) { + var e = "000" + t;return e.substring(e.length - n); + };(0, c.H3)(function () { + Xt.use(); + }), (0, c.ev)(function () { + Xt.unuse(); + });return t.$$set = function (t) { + "log" in t && r(0, o = t.log), "showTimestamps" in t && r(1, a = t.showTimestamps); + }, t.$$.update = function () { + if (39 & t.$$.dirty && (u || r(5, u = !0), a && "" === s)) { + var n = new Date(o.date);r(2, s = l(n.getHours(), 2) + ":" + l(n.getMinutes(), 2) + ":" + l(n.getSeconds(), 2) + ":" + l(n.getMilliseconds(), 3)); + } + }, [o, a, s, function (t) { + return !(t instanceof et.Tg) && (n.kJ(t) || n.Kn(t)); + }, function () { + var t = [];try { + for (var e = 0; e < o.data.length; e++) { + t.push(n.hZ(o.data[e].origData, { maxDepth: 10, keyMaxLen: 1e4, pretty: !1 })); + } + } catch (t) {}return t.join(" "); + }, u]; + }var an = function (n) { + function e(t) { + var e;return e = n.call(this) || this, (0, a.S1n)((0, o.Z)(e), t, on, rn, a.N8, { log: 0, showTimestamps: 1 }), e; + }return (0, i.Z)(e, n), (0, t.Z)(e, [{ key: "log", get: function get() { + return this.$$.ctx[0]; + }, set: function set(t) { + this.$$set({ log: t }), (0, a.yl1)(); + } }, { key: "showTimestamps", get: function get() { + return this.$$.ctx[1]; + }, set: function set(t) { + this.$$set({ showTimestamps: t }), (0, a.yl1)(); + } }]), e; + }(a.f_C), + cn = an, + un = __webpack_require__(3903), + sn = __webpack_require__(3327), + ln = {};sn.Z && sn.Z.locals && (ln.locals = sn.Z.locals);var fn, + dn = 0, + vn = {};vn.styleTagTransform = b(), vn.setAttributes = h(), vn.insert = v().bind(null, "head"), vn.domAPI = f(), vn.insertStyleElement = m(), ln.use = function (t) { + return vn.options = t || {}, dn++ || (fn = s()(sn.Z, vn)), ln; + }, ln.unuse = function () { + dn > 0 && ! --dn && (fn(), fn = null); + };var pn = ln;function hn(t, n, e) { + var r = t.slice();return r[9] = n[e], r; + }function gn(t) { + var n;return { c: function c() { + n = (0, a.bGB)("div"), (0, a.Ljt)(n, "class", "vc-plugin-empty"); + }, m: function m(t, e) { + (0, a.$Tr)(t, n, e); + }, p: a.ZTd, i: a.ZTd, o: a.ZTd, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function mn(t) { + for (var n, e, r = [], o = new Map(), _i5 = t[5].logList, c = function c(t) { + return t[9]._id; + }, u = 0; u < _i5.length; u += 1) { + var s = hn(t, _i5, u), + l = c(s);o.set(l, r[u] = bn(l, s)); + }return { c: function c() { + for (var t = 0; t < r.length; t += 1) { + r[t].c(); + }n = (0, a.cSb)(); + }, m: function m(t, o) { + for (var i = 0; i < r.length; i += 1) { + r[i].m(t, o); + }(0, a.$Tr)(t, n, o), e = !0; + }, p: function p(t, e) { + 46 & e && (_i5 = t[5].logList, (0, a.dvw)(), r = (0, a.GQg)(r, e, c, 1, t, _i5, o, n.parentNode, a.cly, bn, n, hn), (0, a.gbL)()); + }, i: function i(t) { + if (!e) { + for (var n = 0; n < _i5.length; n += 1) { + (0, a.Ui)(r[n]); + }e = !0; + } + }, o: function o(t) { + for (var n = 0; n < r.length; n += 1) { + (0, a.etI)(r[n]); + }e = !1; + }, d: function d(t) { + for (var e = 0; e < r.length; e += 1) { + r[e].d(t); + }t && (0, a.ogt)(n); + } }; + }function _n(t) { + var n, e;return n = new cn({ props: { log: t[9], showTimestamps: t[2] } }), { c: function c() { + (0, a.YCL)(n.$$.fragment); + }, m: function m(t, r) { + (0, a.yef)(n, t, r), e = !0; + }, p: function p(t, e) { + var r = {};32 & e && (r.log = t[9]), 4 & e && (r.showTimestamps = t[2]), n.$set(r); + }, i: function i(t) { + e || ((0, a.Ui)(n.$$.fragment, t), e = !0); + }, o: function o(t) { + (0, a.etI)(n.$$.fragment, t), e = !1; + }, d: function d(t) { + (0, a.vpE)(n, t); + } }; + }function bn(t, n) { + var e, + r, + _o4, + i = ("all" === n[1] || n[1] === n[9].type) && ("" === n[3] || (0, et.HX)(n[9], n[3])), + _c10 = i && _n(n);return { key: t, first: null, c: function c() { + e = (0, a.cSb)(), _c10 && _c10.c(), r = (0, a.cSb)(), this.first = e; + }, m: function m(t, n) { + (0, a.$Tr)(t, e, n), _c10 && _c10.m(t, n), (0, a.$Tr)(t, r, n), _o4 = !0; + }, p: function p(t, e) { + n = t, 42 & e && (i = ("all" === n[1] || n[1] === n[9].type) && ("" === n[3] || (0, et.HX)(n[9], n[3]))), i ? _c10 ? (_c10.p(n, e), 42 & e && (0, a.Ui)(_c10, 1)) : ((_c10 = _n(n)).c(), (0, a.Ui)(_c10, 1), _c10.m(r.parentNode, r)) : _c10 && ((0, a.dvw)(), (0, a.etI)(_c10, 1, 1, function () { + _c10 = null; + }), (0, a.gbL)()); + }, i: function i(t) { + _o4 || ((0, a.Ui)(_c10), _o4 = !0); + }, o: function o(t) { + (0, a.etI)(_c10), _o4 = !1; + }, d: function d(t) { + t && (0, a.ogt)(e), _c10 && _c10.d(t), t && (0, a.ogt)(r); + } }; + }function yn(t) { + var n, e;return (n = new un.Z({})).$on("filterText", t[6]), { c: function c() { + (0, a.YCL)(n.$$.fragment); + }, m: function m(t, r) { + (0, a.yef)(n, t, r), e = !0; + }, p: a.ZTd, i: function i(t) { + e || ((0, a.Ui)(n.$$.fragment, t), e = !0); + }, o: function o(t) { + (0, a.etI)(n.$$.fragment, t), e = !1; + }, d: function d(t) { + (0, a.vpE)(n, t); + } }; + }function wn(t) { + var n, + e, + r, + o, + _i6, + c = [mn, gn], + u = [];function s(t, n) { + return t[5] && t[5].logList.length > 0 ? 0 : 1; + }e = s(t), r = u[e] = c[e](t);var l = t[0] && yn(t);return { c: function c() { + n = (0, a.bGB)("div"), r.c(), o = (0, a.DhX)(), l && l.c(), (0, a.Ljt)(n, "class", "vc-plugin-content"), (0, a.VHj)(n, "vc-logs-has-cmd", t[0]); + }, m: function m(t, r) { + (0, a.$Tr)(t, n, r), u[e].m(n, null), (0, a.R3I)(n, o), l && l.m(n, null), _i6 = !0; + }, p: function p(t, i) { + var f = i[0], + d = e;(e = s(t)) === d ? u[e].p(t, f) : ((0, a.dvw)(), (0, a.etI)(u[d], 1, 1, function () { + u[d] = null; + }), (0, a.gbL)(), (r = u[e]) ? r.p(t, f) : (r = u[e] = c[e](t)).c(), (0, a.Ui)(r, 1), r.m(n, o)), t[0] ? l ? (l.p(t, f), 1 & f && (0, a.Ui)(l, 1)) : ((l = yn(t)).c(), (0, a.Ui)(l, 1), l.m(n, null)) : l && ((0, a.dvw)(), (0, a.etI)(l, 1, 1, function () { + l = null; + }), (0, a.gbL)()), 1 & f && (0, a.VHj)(n, "vc-logs-has-cmd", t[0]); + }, i: function i(t) { + _i6 || ((0, a.Ui)(r), (0, a.Ui)(l), _i6 = !0); + }, o: function o(t) { + (0, a.etI)(r), (0, a.etI)(l), _i6 = !1; + }, d: function d(t) { + t && (0, a.ogt)(n), u[e].d(), l && l.d(); + } }; + }function En(t, n, e) { + var r, + o = a.ZTd;t.$$.on_destroy.push(function () { + return o(); + });var i, + u = n.pluginId, + s = void 0 === u ? "default" : u, + l = n.showCmd, + f = void 0 !== l && l, + d = n.filterType, + v = void 0 === d ? "all" : d, + p = n.showTimestamps, + h = void 0 !== p && p, + g = !1, + m = "";(0, c.H3)(function () { + pn.use(); + }), (0, c.ev)(function () { + pn.unuse(); + });return t.$$set = function (t) { + "pluginId" in t && e(7, s = t.pluginId), "showCmd" in t && e(0, f = t.showCmd), "filterType" in t && e(1, v = t.filterType), "showTimestamps" in t && e(2, h = t.showTimestamps); + }, t.$$.update = function () { + 384 & t.$$.dirty && (g || (e(4, i = rt.O.get(s)), o(), o = (0, a.LdU)(i, function (t) { + return e(5, r = t); + }), e(8, g = !0))); + }, [f, v, h, m, i, r, function (t) { + e(3, m = t.detail.filterText || ""); + }, s, g]; + }var Ln = function (n) { + function e(t) { + var e;return e = n.call(this) || this, (0, a.S1n)((0, o.Z)(e), t, En, wn, a.N8, { pluginId: 7, showCmd: 0, filterType: 1, showTimestamps: 2 }), e; + }return (0, i.Z)(e, n), (0, t.Z)(e, [{ key: "pluginId", get: function get() { + return this.$$.ctx[7]; + }, set: function set(t) { + this.$$set({ pluginId: t }), (0, a.yl1)(); + } }, { key: "showCmd", get: function get() { + return this.$$.ctx[0]; + }, set: function set(t) { + this.$$set({ showCmd: t }), (0, a.yl1)(); + } }, { key: "filterType", get: function get() { + return this.$$.ctx[1]; + }, set: function set(t) { + this.$$set({ filterType: t }), (0, a.yl1)(); + } }, { key: "showTimestamps", get: function get() { + return this.$$.ctx[2]; + }, set: function set(t) { + this.$$set({ showTimestamps: t }), (0, a.yl1)(); + } }]), e; + }(a.f_C), + Tn = Ln, + On = __webpack_require__(5629), + Cn = function () { + function t(t) { + this.model = void 0, this.pluginId = void 0, this.pluginId = t; + }return t.prototype.destroy = function () { + this.model = void 0; + }, t; + }(), + xn = function (t) { + function n() { + for (var n, e = arguments.length, r = new Array(e), o = 0; o < e; o++) { + r[o] = arguments[o]; + }return (n = t.call.apply(t, [this].concat(r)) || this).model = On.W.getSingleton(On.W, "VConsoleLogModel"), n; + }(0, i.Z)(n, t);var e = n.prototype;return e.log = function () { + for (var t = arguments.length, n = new Array(t), e = 0; e < t; e++) { + n[e] = arguments[e]; + }this.addLog.apply(this, ["log"].concat(n)); + }, e.info = function () { + for (var t = arguments.length, n = new Array(t), e = 0; e < t; e++) { + n[e] = arguments[e]; + }this.addLog.apply(this, ["info"].concat(n)); + }, e.debug = function () { + for (var t = arguments.length, n = new Array(t), e = 0; e < t; e++) { + n[e] = arguments[e]; + }this.addLog.apply(this, ["debug"].concat(n)); + }, e.warn = function () { + for (var t = arguments.length, n = new Array(t), e = 0; e < t; e++) { + n[e] = arguments[e]; + }this.addLog.apply(this, ["warn"].concat(n)); + }, e.error = function () { + for (var t = arguments.length, n = new Array(t), e = 0; e < t; e++) { + n[e] = arguments[e]; + }this.addLog.apply(this, ["error"].concat(n)); + }, e.clear = function () { + this.model && this.model.clearPluginLog(this.pluginId); + }, e.addLog = function (t) { + if (this.model) { + for (var n = arguments.length, e = new Array(n > 1 ? n - 1 : 0), r = 1; r < n; r++) { + e[r - 1] = arguments[r]; + }e.unshift("[" + this.pluginId + "]"), this.model.addLog({ type: t, origData: e }, { noOrig: !0 }); + } + }, n; + }(Cn), + In = function (t) { + function n(n, e) { + var r;return (r = t.call(this, n, e, Tn, { pluginId: n, filterType: "all" }) || this).model = On.W.getSingleton(On.W, "VConsoleLogModel"), r.isReady = !1, r.isShow = !1, r.isInBottom = !0, r.model.bindPlugin(n), r.exporter = new xn(n), r; + }(0, i.Z)(n, t);var e = n.prototype;return e.onReady = function () { + var n, e;t.prototype.onReady.call(this), this.model.maxLogNumber = Number(null == (n = this.vConsole.option.log) ? void 0 : n.maxLogNumber) || 1e3, this.compInstance.showTimestamps = !(null == (e = this.vConsole.option.log) || !e.showTimestamps); + }, e.onRemove = function () { + t.prototype.onRemove.call(this), this.model.unbindPlugin(this.id); + }, e.onAddTopBar = function (t) { + for (var n = this, e = ["All", "Log", "Info", "Warn", "Error"], r = [], o = 0; o < e.length; o++) { + r.push({ name: e[o], data: { type: e[o].toLowerCase() }, actived: 0 === o, className: "", onClick: function onClick(t, e) { + if (e.type === n.compInstance.filterType) return !1;n.compInstance.filterType = e.type; + } }); + }r[0].className = "vc-actived", t(r); + }, e.onAddTool = function (t) { + var n = this;t([{ name: "Clear", global: !1, onClick: function onClick(t) { + n.model.clearPluginLog(n.id), n.vConsole.triggerEvent("clearLog"); + } }]); + }, e.onUpdateOption = function () { + var t, n, e, r;(null == (t = this.vConsole.option.log) ? void 0 : t.maxLogNumber) !== this.model.maxLogNumber && (this.model.maxLogNumber = Number(null == (e = this.vConsole.option.log) ? void 0 : e.maxLogNumber) || 1e3);!(null == (n = this.vConsole.option.log) || !n.showTimestamps) !== this.compInstance.showTimestamps && (this.compInstance.showTimestamps = !(null == (r = this.vConsole.option.log) || !r.showTimestamps)); + }, n; + }(nt), + Dn = function (t) { + function e() { + for (var n, e = arguments.length, r = new Array(e), o = 0; o < e; o++) { + r[o] = arguments[o]; + }return (n = t.call.apply(t, [this].concat(r)) || this).onErrorHandler = void 0, n.resourceErrorHandler = void 0, n.rejectionHandler = void 0, n; + }(0, i.Z)(e, t);var r = e.prototype;return r.onReady = function () { + t.prototype.onReady.call(this), this.bindErrors(), this.compInstance.showCmd = !0; + }, r.onRemove = function () { + t.prototype.onRemove.call(this), this.unbindErrors(); + }, r.bindErrors = function () { + n.FJ(window) && n.mf(window.addEventListener) && (this.catchWindowOnError(), this.catchResourceError(), this.catchUnhandledRejection()); + }, r.unbindErrors = function () { + n.FJ(window) && n.mf(window.addEventListener) && (window.removeEventListener("error", this.onErrorHandler), window.removeEventListener("error", this.resourceErrorHandler), window.removeEventListener("unhandledrejection", this.rejectionHandler)); + }, r.catchWindowOnError = function () { + var t = this;this.onErrorHandler = this.onErrorHandler ? this.onErrorHandler : function (n) { + var e = n.message;n.filename && (e += "\n" + n.filename.replace(location.origin, "")), (n.lineno || n.colno) && (e += ":" + n.lineno + ":" + n.colno);var r = !!n.error && !!n.error.stack && n.error.stack.toString() || "";t.model.addLog({ type: "error", origData: [e, r] }, { noOrig: !0 }); + }, window.removeEventListener("error", this.onErrorHandler), window.addEventListener("error", this.onErrorHandler); + }, r.catchResourceError = function () { + var t = this;this.resourceErrorHandler = this.resourceErrorHandler ? this.resourceErrorHandler : function (n) { + var e = n.target;if (["link", "video", "script", "img", "audio"].indexOf(e.localName) > -1) { + var r = e.href || e.src || e.currentSrc;t.model.addLog({ type: "error", origData: ["GET <" + e.localName + "> error: " + r] }, { noOrig: !0 }); + } + }, window.removeEventListener("error", this.resourceErrorHandler), window.addEventListener("error", this.resourceErrorHandler, !0); + }, r.catchUnhandledRejection = function () { + var t = this;this.rejectionHandler = this.rejectionHandler ? this.rejectionHandler : function (n) { + var e = n && n.reason, + r = "Uncaught (in promise) ", + o = [r, e];e instanceof Error && (o = [r, { name: e.name, message: e.message, stack: e.stack }]), t.model.addLog({ type: "error", origData: o }, { noOrig: !0 }); + }, window.removeEventListener("unhandledrejection", this.rejectionHandler), window.addEventListener("unhandledrejection", this.rejectionHandler); + }, e; + }(In), + Rn = function (t) { + function n() { + return t.apply(this, arguments) || this; + }(0, i.Z)(n, t);var e = n.prototype;return e.onReady = function () { + t.prototype.onReady.call(this), this.printSystemInfo(); + }, e.printSystemInfo = function () { + var t = navigator.userAgent, + n = [], + e = t.match(/MicroMessenger\/([\d\.]+)/i), + r = e && e[1] ? e[1] : null;"servicewechat.com" === location.host || console.info("[system]", "Location:", location.href);var o = t.match(/(ipod).*\s([\d_]+)/i), + i = t.match(/(ipad).*\s([\d_]+)/i), + a = t.match(/(iphone)\sos\s([\d_]+)/i), + c = t.match(/(android)\s([\d\.]+)/i), + u = t.match(/(Mac OS X)\s([\d_]+)/i);n = [], c ? n.push("Android " + c[2]) : a ? n.push("iPhone, iOS " + a[2].replace(/_/g, ".")) : i ? n.push("iPad, iOS " + i[2].replace(/_/g, ".")) : o ? n.push("iPod, iOS " + o[2].replace(/_/g, ".")) : u && n.push("Mac, MacOS " + u[2].replace(/_/g, ".")), r && n.push("WeChat " + r), console.info("[system]", "Client:", n.length ? n.join(", ") : "Unknown");var s = t.toLowerCase().match(/ nettype\/([^ ]+)/g);s && s[0] && (n = [(s = s[0].split("/"))[1]], console.info("[system]", "Network:", n.length ? n.join(", ") : "Unknown")), console.info("[system]", "UA:", t), setTimeout(function () { + var t = window.performance || window.msPerformance || window.webkitPerformance;if (t && t.timing) { + var n = t.timing;n.navigationStart && console.info("[system]", "navigationStart:", n.navigationStart), n.navigationStart && n.domainLookupStart && console.info("[system]", "navigation:", n.domainLookupStart - n.navigationStart + "ms"), n.domainLookupEnd && n.domainLookupStart && console.info("[system]", "dns:", n.domainLookupEnd - n.domainLookupStart + "ms"), n.connectEnd && n.connectStart && (n.connectEnd && n.secureConnectionStart ? console.info("[system]", "tcp (ssl):", n.connectEnd - n.connectStart + "ms (" + (n.connectEnd - n.secureConnectionStart) + "ms)") : console.info("[system]", "tcp:", n.connectEnd - n.connectStart + "ms")), n.responseStart && n.requestStart && console.info("[system]", "request:", n.responseStart - n.requestStart + "ms"), n.responseEnd && n.responseStart && console.info("[system]", "response:", n.responseEnd - n.responseStart + "ms"), n.domComplete && n.domLoading && (n.domContentLoadedEventStart && n.domLoading ? console.info("[system]", "domComplete (domLoaded):", n.domComplete - n.domLoading + "ms (" + (n.domContentLoadedEventStart - n.domLoading) + "ms)") : console.info("[system]", "domComplete:", n.domComplete - n.domLoading + "ms")), n.loadEventEnd && n.loadEventStart && console.info("[system]", "loadEvent:", n.loadEventEnd - n.loadEventStart + "ms"), n.navigationStart && n.loadEventEnd && console.info("[system]", "total (DOM):", n.loadEventEnd - n.navigationStart + "ms (" + (n.domComplete - n.navigationStart) + "ms)"); + } + }, 0); + }, n; + }(In), + kn = __webpack_require__(3313), + Pn = __webpack_require__(643);function Mn(t, n) { + var e = "undefined" != typeof Symbol && t[Symbol.iterator] || t["@@iterator"];if (e) return (e = e.call(t)).next.bind(e);if (Array.isArray(t) || (e = function (t, n) { + if (!t) return;if ("string" == typeof t) return $n(t, n);var e = Object.prototype.toString.call(t).slice(8, -1);"Object" === e && t.constructor && (e = t.constructor.name);if ("Map" === e || "Set" === e) return Array.from(t);if ("Arguments" === e || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)) return $n(t, n); + }(t)) || n && t && "number" == typeof t.length) { + e && (t = e);var r = 0;return function () { + return r >= t.length ? { done: !0 } : { done: !1, value: t[r++] }; + }; + }throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + }function $n(t, n) { + (null == n || n > t.length) && (n = t.length);for (var e = 0, r = new Array(n); e < n; e++) { + r[e] = t[e]; + }return r; + }var Sn = function Sn(t, e) { + void 0 === e && (e = {}), n.Kn(e) || (e = {});var r = t ? t.split("?") : [];if (r.shift(), r.length > 0) for (var o, i = Mn(r = r.join("?").split("&")); !(o = i()).done;) { + var a = o.value.split("=");try { + e[a[0]] = decodeURIComponent(a[1]); + } catch (t) { + e[a[0]] = a[1]; + } + }return e; + }, + jn = function jn(t, e) { + var r = "";switch (t) {case "":case "text":case "json": + if (n.HD(e)) try { + r = JSON.parse(e), r = n.hZ(r, { maxDepth: 10, keyMaxLen: 1e4, pretty: !0 }); + } catch (t) { + r = n.id(String(e), 1e4); + } else n.Kn(e) || n.kJ(e) ? r = n.hZ(e, { maxDepth: 10, keyMaxLen: 1e4, pretty: !0 }) : void 0 !== e && (r = Object.prototype.toString.call(e));break;default: + void 0 !== e && (r = Object.prototype.toString.call(e));}return r; + }, + Bn = function Bn(t) { + if (!t) return null;var e = null;if ("string" == typeof t) try { + e = JSON.parse(t); + } catch (n) { + var r = t.split("&");if (1 === r.length) e = t;else { + e = {};for (var o, i = Mn(r); !(o = i()).done;) { + var a = o.value.split("=");e[a[0]] = void 0 === a[1] ? "undefined" : a[1]; + } + } + } else if (n.TW(t)) { + e = {};for (var c, u = Mn(t); !(c = u()).done;) { + var s = c.value, + l = s[0], + f = s[1];e[l] = "string" == typeof f ? f : "[object Object]"; + } + } else if (n.PO(t)) e = t;else { + e = "[object " + n.zl(t) + "]"; + }return e; + }, + An = function An(t) { + (void 0 === t && (t = ""), t.startsWith("//")) && (t = "" + new URL(window.location.href).protocol + t);return t.startsWith("http") ? new URL(t) : new URL(t, window.location.href); + }, + Un = function Un() { + this.id = "", this.name = "", this.method = "", this.url = "", this.status = 0, this.statusText = "", this.cancelState = 0, this.readyState = 0, this.header = null, this.responseType = "", this.requestType = void 0, this.requestHeader = null, this.response = void 0, this.responseSize = 0, this.responseSizeText = "", this.startTime = 0, this.endTime = 0, this.costTime = 0, this.getData = null, this.postData = null, this.actived = !1, this.noVConsole = !1, this.id = (0, n.QI)(); + }, + Nn = function (t) { + function n(e) { + var r;return (r = t.call(this) || this)._response = void 0, new Proxy(e, n.Handler) || (0, o.Z)(r); + }return (0, i.Z)(n, t), n; + }(Un);Nn.Handler = { get: function get(t, n) { + return "response" === n ? t._response : Reflect.get(t, n); + }, set: function set(t, n, e) { + var r;switch (n) {case "response": + return t._response = jn(t.responseType, e), !0;case "url": + var o = (null == (r = e = String(e)) ? void 0 : r.replace(new RegExp("[/]*$"), "").split("/").pop()) || "Unknown";Reflect.set(t, "name", o);var i = Sn(e, t.getData);Reflect.set(t, "getData", i);break;case "status": + var a = String(e) || "Unknown";Reflect.set(t, "statusText", a);break;case "startTime": + if (e && t.endTime) { + var c = t.endTime - e;Reflect.set(t, "costTime", c); + }break;case "endTime": + if (e && t.startTime) { + var u = e - t.startTime;Reflect.set(t, "costTime", u); + }}return Reflect.set(t, n, e); + } };var Vn = function () { + function t(t, n) { + var e = this;this.XMLReq = void 0, this.item = void 0, this.onUpdateCallback = void 0, this.XMLReq = t, this.XMLReq.onreadystatechange = function () { + e.onReadyStateChange(); + }, this.XMLReq.onabort = function () { + e.onAbort(); + }, this.XMLReq.ontimeout = function () { + e.onTimeout(); + }, this.item = new Un(), this.item.requestType = "xhr", this.onUpdateCallback = n; + }var e = t.prototype;return e.get = function (t, n) { + switch (n) {case "_noVConsole": + return this.item.noVConsole;case "open": + return this.getOpen(t);case "send": + return this.getSend(t);case "setRequestHeader": + return this.getSetRequestHeader(t);default: + var e = Reflect.get(t, n);return "function" == typeof e ? e.bind(t) : e;} + }, e.set = function (t, n, e) { + switch (n) {case "_noVConsole": + return void (this.item.noVConsole = !!e);case "onreadystatechange": + return this.setOnReadyStateChange(t, n, e);case "onabort": + return this.setOnAbort(t, n, e);case "ontimeout": + return this.setOnTimeout(t, n, e);}return Reflect.set(t, n, e); + }, e.onReadyStateChange = function () { + this.item.readyState = this.XMLReq.readyState, this.item.responseType = this.XMLReq.responseType, this.item.endTime = Date.now(), this.item.costTime = this.item.endTime - this.item.startTime, this.updateItemByReadyState(), this.item.response = jn(this.item.responseType, this.item.response), this.triggerUpdate(); + }, e.onAbort = function () { + this.item.cancelState = 1, this.item.statusText = "Abort", this.triggerUpdate(); + }, e.onTimeout = function () { + this.item.cancelState = 3, this.item.statusText = "Timeout", this.triggerUpdate(); + }, e.triggerUpdate = function () { + this.item.noVConsole || this.onUpdateCallback(this.item); + }, e.getOpen = function (t) { + var n = this, + e = Reflect.get(t, "open");return function () { + for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++) { + o[i] = arguments[i]; + }var a = o[0], + c = o[1];return n.item.method = a ? a.toUpperCase() : "GET", n.item.url = c || "", n.item.name = n.item.url.replace(new RegExp("[/]*$"), "").split("/").pop() || "", n.item.getData = Sn(n.item.url, {}), n.triggerUpdate(), e.apply(t, o); + }; + }, e.getSend = function (t) { + var n = this, + e = Reflect.get(t, "send");return function () { + for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++) { + o[i] = arguments[i]; + }var a = o[0];return n.item.postData = Bn(a), n.triggerUpdate(), e.apply(t, o); + }; + }, e.getSetRequestHeader = function (t) { + var n = this, + e = Reflect.get(t, "setRequestHeader");return function () { + n.item.requestHeader || (n.item.requestHeader = {});for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++) { + o[i] = arguments[i]; + }return n.item.requestHeader[o[0]] = o[1], n.triggerUpdate(), e.apply(t, o); + }; + }, e.setOnReadyStateChange = function (t, n, e) { + var r = this;return Reflect.set(t, n, function () { + r.onReadyStateChange();for (var n = arguments.length, o = new Array(n), i = 0; i < n; i++) { + o[i] = arguments[i]; + }e.apply(t, o); + }); + }, e.setOnAbort = function (t, n, e) { + var r = this;return Reflect.set(t, n, function () { + r.onAbort();for (var n = arguments.length, o = new Array(n), i = 0; i < n; i++) { + o[i] = arguments[i]; + }e.apply(t, o); + }); + }, e.setOnTimeout = function (t, n, e) { + var r = this;return Reflect.set(t, n, function () { + r.onTimeout();for (var n = arguments.length, o = new Array(n), i = 0; i < n; i++) { + o[i] = arguments[i]; + }e.apply(t, o); + }); + }, e.updateItemByReadyState = function () { + switch (this.XMLReq.readyState) {case 0:case 1: + this.item.status = 0, this.item.statusText = "Pending", this.item.startTime || (this.item.startTime = Date.now());break;case 2: + this.item.status = this.XMLReq.status, this.item.statusText = "Loading", this.item.header = {};for (var t = (this.XMLReq.getAllResponseHeaders() || "").split("\n"), e = 0; e < t.length; e++) { + var r = t[e];if (r) { + var o = r.split(": "), + i = o[0], + a = o.slice(1).join(": ");this.item.header[i] = a; + } + }break;case 3: + this.item.status = this.XMLReq.status, this.item.statusText = "Loading", this.XMLReq.response && this.XMLReq.response.length && (this.item.responseSize = this.XMLReq.response.length, this.item.responseSizeText = (0, n.KL)(this.item.responseSize));break;case 4: + this.item.status = this.XMLReq.status || this.item.status || 0, this.item.statusText = String(this.item.status), this.item.endTime = Date.now(), this.item.costTime = this.item.endTime - (this.item.startTime || this.item.endTime), this.item.response = this.XMLReq.response, this.XMLReq.response && this.XMLReq.response.length && (this.item.responseSize = this.XMLReq.response.length, this.item.responseSizeText = (0, n.KL)(this.item.responseSize));break;default: + this.item.status = this.XMLReq.status, this.item.statusText = "Unknown";} + }, t; + }(), + Gn = function () { + function t() {}return t.create = function (t) { + return new Proxy(XMLHttpRequest, { construct: function construct(n) { + var e = new n();return new Proxy(e, new Vn(e, t)); + } }); + }, t; + }();function Wn(t, n) { + var e = "undefined" != typeof Symbol && t[Symbol.iterator] || t["@@iterator"];if (e) return (e = e.call(t)).next.bind(e);if (Array.isArray(t) || (e = function (t, n) { + if (!t) return;if ("string" == typeof t) return Kn(t, n);var e = Object.prototype.toString.call(t).slice(8, -1);"Object" === e && t.constructor && (e = t.constructor.name);if ("Map" === e || "Set" === e) return Array.from(t);if ("Arguments" === e || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)) return Kn(t, n); + }(t)) || n && t && "number" == typeof t.length) { + e && (t = e);var r = 0;return function () { + return r >= t.length ? { done: !0 } : { done: !1, value: t[r++] }; + }; + }throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + }function Kn(t, n) { + (null == n || n > t.length) && (n = t.length);for (var e = 0, r = new Array(n); e < n; e++) { + r[e] = t[e]; + }return r; + }Gn.origXMLHttpRequest = XMLHttpRequest;var Fn = function () { + function t(t, n, e) { + this.resp = void 0, this.item = void 0, this.onUpdateCallback = void 0, this.resp = t, this.item = n, this.onUpdateCallback = e, this.mockReader(); + }var e = t.prototype;return e.set = function (t, n, e) { + return Reflect.set(t, n, e); + }, e.get = function (t, n) { + var e = this, + r = Reflect.get(t, n);switch (n) {case "arrayBuffer":case "blob":case "formData":case "json":case "text": + return function () { + return e.item.responseType = n.toLowerCase(), r.apply(t).then(function (t) { + return e.item.response = jn(e.item.responseType, t), e.onUpdateCallback(e.item), t; + }); + };}return "function" == typeof r ? r.bind(t) : r; + }, e.mockReader = function () { + var t, + e = this;if (this.resp.body && "function" == typeof this.resp.body.getReader) { + var r = this.resp.body.getReader;this.resp.body.getReader = function () { + var o = r.apply(e.resp.body);if (4 === e.item.readyState) return o;var i = o.read, + a = o.cancel;return e.item.responseType = "arraybuffer", o.read = function () { + return i.apply(o).then(function (r) { + if (t) { + var o = new Uint8Array(t.length + r.value.length);o.set(t), o.set(r.value, t.length), t = o; + } else t = new Uint8Array(r.value);return e.item.endTime = Date.now(), e.item.costTime = e.item.endTime - (e.item.startTime || e.item.endTime), e.item.readyState = r.done ? 4 : 3, e.item.statusText = r.done ? String(e.item.status) : "Loading", e.item.responseSize = t.length, e.item.responseSizeText = n.KL(e.item.responseSize), r.done && (e.item.response = jn(e.item.responseType, t)), e.onUpdateCallback(e.item), r; + }); + }, o.cancel = function () { + e.item.cancelState = 2, e.item.statusText = "Cancel", e.item.endTime = Date.now(), e.item.costTime = e.item.endTime - (e.item.startTime || e.item.endTime), e.item.response = jn(e.item.responseType, t), e.onUpdateCallback(e.item);for (var n = arguments.length, r = new Array(n), i = 0; i < n; i++) { + r[i] = arguments[i]; + }return a.apply(o, r); + }, o; + }; + } + }, t; + }(), + Hn = function () { + function t(t) { + this.onUpdateCallback = void 0, this.onUpdateCallback = t; + }var e = t.prototype;return e.apply = function (t, n, e) { + var r = this, + o = e[0], + i = e[1], + a = new Un();return this.beforeFetch(a, o, i), t.apply(n, e).then(this.afterFetch(a)).catch(function (t) { + throw a.endTime = Date.now(), a.costTime = a.endTime - (a.startTime || a.endTime), r.onUpdateCallback(a), t; + }); + }, e.beforeFetch = function (t, e, r) { + var o, + i = "GET", + a = null;if (n.HD(e) ? (i = (null == r ? void 0 : r.method) || "GET", o = An(e), a = (null == r ? void 0 : r.headers) || null) : (i = e.method || "GET", o = An(e.url), a = e.headers), t.method = i, t.requestType = "fetch", t.requestHeader = a, t.url = o.toString(), t.name = (o.pathname.split("/").pop() || "") + o.search, t.status = 0, t.statusText = "Pending", t.readyState = 1, t.startTime || (t.startTime = Date.now()), "[object Headers]" === Object.prototype.toString.call(a)) { + t.requestHeader = {};for (var c, u = Wn(a); !(c = u()).done;) { + var s = c.value, + l = s[0], + f = s[1];t.requestHeader[l] = f; + } + } else t.requestHeader = a;if (o.search && o.searchParams) { + t.getData = {};for (var d, v = Wn(o.searchParams); !(d = v()).done;) { + var p = d.value, + h = p[0], + g = p[1];t.getData[h] = g; + } + }null != r && r.body && (t.postData = Bn(r.body)), this.onUpdateCallback(t); + }, e.afterFetch = function (t) { + var e = this;return function (r) { + t.endTime = Date.now(), t.costTime = t.endTime - (t.startTime || t.endTime), t.status = r.status, t.statusText = String(r.status);var o = !1;t.header = {};for (var i, a = Wn(r.headers); !(i = a()).done;) { + var c = i.value, + u = c[0], + s = c[1];t.header[u] = s, o = s.toLowerCase().indexOf("chunked") > -1 || o; + }return o ? t.readyState = 3 : (t.readyState = 4, e.handleResponseBody(r.clone(), t).then(function (r) { + t.responseSize = "string" == typeof r ? r.length : r.byteLength, t.responseSizeText = n.KL(t.responseSize), t.response = jn(t.responseType, r), e.onUpdateCallback(t); + })), e.onUpdateCallback(t), new Proxy(r, new Fn(r, t, e.onUpdateCallback)); + }; + }, e.handleResponseBody = function (t, n) { + var e = t.headers.get("content-type");return e && e.includes("application/json") ? (n.responseType = "json", t.text()) : e && (e.includes("text/html") || e.includes("text/plain")) ? (n.responseType = "text", t.text()) : (n.responseType = "arraybuffer", t.arrayBuffer()); + }, t; + }(), + qn = function () { + function t() {}return t.create = function (t) { + return new Proxy(fetch, new Hn(t)); + }, t; + }();function Zn(t, n) { + var e = "undefined" != typeof Symbol && t[Symbol.iterator] || t["@@iterator"];if (e) return (e = e.call(t)).next.bind(e);if (Array.isArray(t) || (e = function (t, n) { + if (!t) return;if ("string" == typeof t) return Xn(t, n);var e = Object.prototype.toString.call(t).slice(8, -1);"Object" === e && t.constructor && (e = t.constructor.name);if ("Map" === e || "Set" === e) return Array.from(t);if ("Arguments" === e || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)) return Xn(t, n); + }(t)) || n && t && "number" == typeof t.length) { + e && (t = e);var r = 0;return function () { + return r >= t.length ? { done: !0 } : { done: !1, value: t[r++] }; + }; + }throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + }function Xn(t, n) { + (null == n || n > t.length) && (n = t.length);for (var e = 0, r = new Array(n); e < n; e++) { + r[e] = t[e]; + }return r; + }qn.origFetch = fetch;var zn = function zn(t) { + return t instanceof Blob ? t.type : t instanceof FormData ? "multipart/form-data" : t instanceof URLSearchParams ? "application/x-www-form-urlencoded;charset=UTF-8" : "text/plain;charset=UTF-8"; + }, + Yn = function () { + function t(t) { + this.onUpdateCallback = void 0, this.onUpdateCallback = t; + }return t.prototype.apply = function (t, n, e) { + var r = e[0], + o = e[1], + i = new Un(), + a = An(r);if (i.method = "POST", i.url = r, i.name = (a.pathname.split("/").pop() || "") + a.search, i.requestType = "ping", i.requestHeader = { "Content-Type": zn(o) }, i.status = 0, i.statusText = "Pending", a.search && a.searchParams) { + i.getData = {};for (var c, u = Zn(a.searchParams); !(c = u()).done;) { + var s = c.value, + l = s[0], + f = s[1];i.getData[l] = f; + } + }i.postData = Bn(o), i.startTime || (i.startTime = Date.now()), this.onUpdateCallback(i);var d = t.apply(n, e);return d ? (i.endTime = Date.now(), i.costTime = i.endTime - (i.startTime || i.endTime), i.status = 0, i.statusText = "Sent", i.readyState = 4) : (i.status = 500, i.statusText = "Unknown"), this.onUpdateCallback(i), d; + }, t; + }(), + Jn = function () { + function t() {}return t.create = function (t) { + return new Proxy(navigator.sendBeacon, new Yn(t)); + }, t; + }();Jn.origSendBeacon = navigator.sendBeacon;var Qn = (0, kn.fZ)({}), + te = function (t) { + function n() { + var n;return (n = t.call(this) || this).maxNetworkNumber = 1e3, n.itemCounter = 0, n.mockXHR(), n.mockFetch(), n.mockSendBeacon(), n; + }(0, i.Z)(n, t);var e = n.prototype;return e.unMock = function () { + window.hasOwnProperty("XMLHttpRequest") && (window.XMLHttpRequest = Gn.origXMLHttpRequest), window.hasOwnProperty("fetch") && (window.fetch = qn.origFetch), window.navigator.sendBeacon && (window.navigator.sendBeacon = Jn.origSendBeacon); + }, e.clearLog = function () { + Qn.set({}); + }, e.updateRequest = function (t, n) { + var e = (0, kn.U2)(Qn), + r = !!e[t];if (r) { + var o = e[t];for (var i in n) { + o[i] = n[i]; + }n = o; + }Qn.update(function (e) { + return e[t] = n, e; + }), r || (R.x.updateTime(), this.limitListLength()); + }, e.mockXHR = function () { + var t = this;window.hasOwnProperty("XMLHttpRequest") && (window.XMLHttpRequest = Gn.create(function (n) { + t.updateRequest(n.id, n); + })); + }, e.mockFetch = function () { + var t = this;window.hasOwnProperty("fetch") && (window.fetch = qn.create(function (n) { + t.updateRequest(n.id, n); + })); + }, e.mockSendBeacon = function () { + var t = this;window.navigator.sendBeacon && (window.navigator.sendBeacon = Jn.create(function (n) { + t.updateRequest(n.id, n); + })); + }, e.limitListLength = function () { + var t = this;if (this.itemCounter++, this.itemCounter % 10 == 0) { + this.itemCounter = 0;var n = (0, kn.U2)(Qn), + e = Object.keys(n);e.length > this.maxNetworkNumber - 10 && Qn.update(function (n) { + for (var r = e.splice(0, e.length - t.maxNetworkNumber + 10), o = 0; o < r.length; o++) { + n[r[o]] = void 0, delete n[r[o]]; + }return n; + }); + } + }, n; + }(Pn.N), + ne = __webpack_require__(8747), + ee = {};ne.Z && ne.Z.locals && (ee.locals = ne.Z.locals);var re, + oe = 0, + ie = {};ie.styleTagTransform = b(), ie.setAttributes = h(), ie.insert = v().bind(null, "head"), ie.domAPI = f(), ie.insertStyleElement = m(), ee.use = function (t) { + return ie.options = t || {}, oe++ || (re = s()(ne.Z, ie)), ee; + }, ee.unuse = function () { + oe > 0 && ! --oe && (re(), re = null); + };var ae = ee;function ce(t, n, e) { + var r = t.slice();return r[7] = n[e][0], r[8] = n[e][1], r; + }function ue(t, n, e) { + var r = t.slice();return r[11] = n[e][0], r[12] = n[e][1], r; + }function se(t, n, e) { + var r = t.slice();return r[11] = n[e][0], r[12] = n[e][1], r; + }function le(t, n, e) { + var r = t.slice();return r[11] = n[e][0], r[12] = n[e][1], r; + }function fe(t, n, e) { + var r = t.slice();return r[11] = n[e][0], r[12] = n[e][1], r; + }function de(t) { + var n, e, r;return { c: function c() { + n = (0, a.fLW)("("), e = (0, a.fLW)(t[0]), r = (0, a.fLW)(")"); + }, m: function m(t, o) { + (0, a.$Tr)(t, n, o), (0, a.$Tr)(t, e, o), (0, a.$Tr)(t, r, o); + }, p: function p(t, n) { + 1 & n && (0, a.rTO)(e, t[0]); + }, d: function d(t) { + t && (0, a.ogt)(n), t && (0, a.ogt)(e), t && (0, a.ogt)(r); + } }; + }function ve(t) { + var n, e, r, o, i, _c11, u, s;_c11 = new ut({ props: { content: t[8].requestHeader } });for (var l = Object.entries(t[8].requestHeader), f = [], d = 0; d < l.length; d += 1) { + f[d] = pe(fe(t, l, d)); + }return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.bGB)("dl"), r = (0, a.bGB)("dt"), o = (0, a.fLW)("Request Headers\n "), i = (0, a.bGB)("i"), (0, a.YCL)(_c11.$$.fragment), u = (0, a.DhX)();for (var t = 0; t < f.length; t += 1) { + f[t].c(); + }(0, a.Ljt)(i, "class", "vc-table-row-icon"), (0, a.Ljt)(r, "class", "vc-table-col vc-table-col-title"), (0, a.Ljt)(e, "class", "vc-table-row vc-left-border"); + }, m: function m(t, l) { + (0, a.$Tr)(t, n, l), (0, a.R3I)(n, e), (0, a.R3I)(e, r), (0, a.R3I)(r, o), (0, a.R3I)(r, i), (0, a.yef)(_c11, i, null), (0, a.R3I)(n, u);for (var d = 0; d < f.length; d += 1) { + f[d].m(n, null); + }s = !0; + }, p: function p(t, e) { + var r = {};if (2 & e && (r.content = t[8].requestHeader), _c11.$set(r), 10 & e) { + var o;for (l = Object.entries(t[8].requestHeader), o = 0; o < l.length; o += 1) { + var i = fe(t, l, o);f[o] ? f[o].p(i, e) : (f[o] = pe(i), f[o].c(), f[o].m(n, null)); + }for (; o < f.length; o += 1) { + f[o].d(1); + }f.length = l.length; + } + }, i: function i(t) { + s || ((0, a.Ui)(_c11.$$.fragment, t), s = !0); + }, o: function o(t) { + (0, a.etI)(_c11.$$.fragment, t), s = !1; + }, d: function d(t) { + t && (0, a.ogt)(n), (0, a.vpE)(_c11), (0, a.RMB)(f, t); + } }; + }function pe(t) { + var n, + e, + r, + o, + i, + _c12, + u, + s = t[11] + "", + l = t[3](t[12]) + "";return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.bGB)("div"), r = (0, a.fLW)(s), o = (0, a.DhX)(), i = (0, a.bGB)("div"), _c12 = (0, a.fLW)(l), u = (0, a.DhX)(), (0, a.Ljt)(e, "class", "vc-table-col vc-table-col-2"), (0, a.Ljt)(i, "class", "vc-table-col vc-table-col-4 vc-table-col-value vc-max-height-line"), (0, a.Ljt)(n, "class", "vc-table-row vc-left-border vc-small"); + }, m: function m(t, s) { + (0, a.$Tr)(t, n, s), (0, a.R3I)(n, e), (0, a.R3I)(e, r), (0, a.R3I)(n, o), (0, a.R3I)(n, i), (0, a.R3I)(i, _c12), (0, a.R3I)(n, u); + }, p: function p(t, n) { + 2 & n && s !== (s = t[11] + "") && (0, a.rTO)(r, s), 2 & n && l !== (l = t[3](t[12]) + "") && (0, a.rTO)(_c12, l); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function he(t) { + var n, e, r, o, i, _c13, u, s;_c13 = new ut({ props: { content: t[8].getData } });for (var l = Object.entries(t[8].getData), f = [], d = 0; d < l.length; d += 1) { + f[d] = ge(le(t, l, d)); + }return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.bGB)("dl"), r = (0, a.bGB)("dt"), o = (0, a.fLW)("Query String Parameters\n "), i = (0, a.bGB)("i"), (0, a.YCL)(_c13.$$.fragment), u = (0, a.DhX)();for (var t = 0; t < f.length; t += 1) { + f[t].c(); + }(0, a.Ljt)(i, "class", "vc-table-row-icon"), (0, a.Ljt)(r, "class", "vc-table-col vc-table-col-title"), (0, a.Ljt)(e, "class", "vc-table-row vc-left-border"); + }, m: function m(t, l) { + (0, a.$Tr)(t, n, l), (0, a.R3I)(n, e), (0, a.R3I)(e, r), (0, a.R3I)(r, o), (0, a.R3I)(r, i), (0, a.yef)(_c13, i, null), (0, a.R3I)(n, u);for (var d = 0; d < f.length; d += 1) { + f[d].m(n, null); + }s = !0; + }, p: function p(t, e) { + var r = {};if (2 & e && (r.content = t[8].getData), _c13.$set(r), 10 & e) { + var o;for (l = Object.entries(t[8].getData), o = 0; o < l.length; o += 1) { + var i = le(t, l, o);f[o] ? f[o].p(i, e) : (f[o] = ge(i), f[o].c(), f[o].m(n, null)); + }for (; o < f.length; o += 1) { + f[o].d(1); + }f.length = l.length; + } + }, i: function i(t) { + s || ((0, a.Ui)(_c13.$$.fragment, t), s = !0); + }, o: function o(t) { + (0, a.etI)(_c13.$$.fragment, t), s = !1; + }, d: function d(t) { + t && (0, a.ogt)(n), (0, a.vpE)(_c13), (0, a.RMB)(f, t); + } }; + }function ge(t) { + var n, + e, + r, + o, + i, + _c14, + u, + s = t[11] + "", + l = t[3](t[12]) + "";return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.bGB)("div"), r = (0, a.fLW)(s), o = (0, a.DhX)(), i = (0, a.bGB)("div"), _c14 = (0, a.fLW)(l), u = (0, a.DhX)(), (0, a.Ljt)(e, "class", "vc-table-col vc-table-col-2"), (0, a.Ljt)(i, "class", "vc-table-col vc-table-col-4 vc-table-col-value vc-max-height-line"), (0, a.Ljt)(n, "class", "vc-table-row vc-left-border vc-small"); + }, m: function m(t, s) { + (0, a.$Tr)(t, n, s), (0, a.R3I)(n, e), (0, a.R3I)(e, r), (0, a.R3I)(n, o), (0, a.R3I)(n, i), (0, a.R3I)(i, _c14), (0, a.R3I)(n, u); + }, p: function p(t, n) { + 2 & n && s !== (s = t[11] + "") && (0, a.rTO)(r, s), 2 & n && l !== (l = t[3](t[12]) + "") && (0, a.rTO)(_c14, l); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function me(t) { + var n, e, r, o, i, _c15, u, s;function l(t, n) { + return "string" == typeof t[8].postData ? be : _e; + }_c15 = new ut({ props: { content: t[8].postData } });var f = l(t), + _d2 = f(t);return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.bGB)("dl"), r = (0, a.bGB)("dt"), o = (0, a.fLW)("Request Payload\n "), i = (0, a.bGB)("i"), (0, a.YCL)(_c15.$$.fragment), u = (0, a.DhX)(), _d2.c(), (0, a.Ljt)(i, "class", "vc-table-row-icon"), (0, a.Ljt)(r, "class", "vc-table-col vc-table-col-title"), (0, a.Ljt)(e, "class", "vc-table-row vc-left-border"); + }, m: function m(t, l) { + (0, a.$Tr)(t, n, l), (0, a.R3I)(n, e), (0, a.R3I)(e, r), (0, a.R3I)(r, o), (0, a.R3I)(r, i), (0, a.yef)(_c15, i, null), (0, a.R3I)(n, u), _d2.m(n, null), s = !0; + }, p: function p(t, e) { + var r = {};2 & e && (r.content = t[8].postData), _c15.$set(r), f === (f = l(t)) && _d2 ? _d2.p(t, e) : (_d2.d(1), (_d2 = f(t)) && (_d2.c(), _d2.m(n, null))); + }, i: function i(t) { + s || ((0, a.Ui)(_c15.$$.fragment, t), s = !0); + }, o: function o(t) { + (0, a.etI)(_c15.$$.fragment, t), s = !1; + }, d: function d(t) { + t && (0, a.ogt)(n), (0, a.vpE)(_c15), _d2.d(); + } }; + }function _e(t) { + for (var n, e = Object.entries(t[8].postData), r = [], o = 0; o < e.length; o += 1) { + r[o] = ye(se(t, e, o)); + }return { c: function c() { + for (var t = 0; t < r.length; t += 1) { + r[t].c(); + }n = (0, a.cSb)(); + }, m: function m(t, e) { + for (var o = 0; o < r.length; o += 1) { + r[o].m(t, e); + }(0, a.$Tr)(t, n, e); + }, p: function p(t, o) { + if (10 & o) { + var i;for (e = Object.entries(t[8].postData), i = 0; i < e.length; i += 1) { + var a = se(t, e, i);r[i] ? r[i].p(a, o) : (r[i] = ye(a), r[i].c(), r[i].m(n.parentNode, n)); + }for (; i < r.length; i += 1) { + r[i].d(1); + }r.length = e.length; + } + }, d: function d(t) { + (0, a.RMB)(r, t), t && (0, a.ogt)(n); + } }; + }function be(t) { + var n, + e, + r, + o = t[8].postData + "";return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.bGB)("pre"), r = (0, a.fLW)(o), (0, a.Ljt)(e, "class", "vc-table-col vc-table-col-value vc-max-height-line"), (0, a.Ljt)(n, "class", "vc-table-row vc-left-border vc-small"); + }, m: function m(t, o) { + (0, a.$Tr)(t, n, o), (0, a.R3I)(n, e), (0, a.R3I)(e, r); + }, p: function p(t, n) { + 2 & n && o !== (o = t[8].postData + "") && (0, a.rTO)(r, o); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function ye(t) { + var n, + e, + r, + o, + i, + _c16, + u, + s = t[11] + "", + l = t[3](t[12]) + "";return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.bGB)("div"), r = (0, a.fLW)(s), o = (0, a.DhX)(), i = (0, a.bGB)("div"), _c16 = (0, a.fLW)(l), u = (0, a.DhX)(), (0, a.Ljt)(e, "class", "vc-table-col vc-table-col-2"), (0, a.Ljt)(i, "class", "vc-table-col vc-table-col-4 vc-table-col-value vc-max-height-line"), (0, a.Ljt)(n, "class", "vc-table-row vc-left-border vc-small"); + }, m: function m(t, s) { + (0, a.$Tr)(t, n, s), (0, a.R3I)(n, e), (0, a.R3I)(e, r), (0, a.R3I)(n, o), (0, a.R3I)(n, i), (0, a.R3I)(i, _c16), (0, a.R3I)(n, u); + }, p: function p(t, n) { + 2 & n && s !== (s = t[11] + "") && (0, a.rTO)(r, s), 2 & n && l !== (l = t[3](t[12]) + "") && (0, a.rTO)(_c16, l); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function we(t) { + var n, e, r, o, i, _c17, u, s;_c17 = new ut({ props: { content: t[8].header } });for (var l = Object.entries(t[8].header), f = [], d = 0; d < l.length; d += 1) { + f[d] = Ee(ue(t, l, d)); + }return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.bGB)("dl"), r = (0, a.bGB)("dt"), o = (0, a.fLW)("Response Headers\n "), i = (0, a.bGB)("i"), (0, a.YCL)(_c17.$$.fragment), u = (0, a.DhX)();for (var t = 0; t < f.length; t += 1) { + f[t].c(); + }(0, a.Ljt)(i, "class", "vc-table-row-icon"), (0, a.Ljt)(r, "class", "vc-table-col vc-table-col-title"), (0, a.Ljt)(e, "class", "vc-table-row vc-left-border"); + }, m: function m(t, l) { + (0, a.$Tr)(t, n, l), (0, a.R3I)(n, e), (0, a.R3I)(e, r), (0, a.R3I)(r, o), (0, a.R3I)(r, i), (0, a.yef)(_c17, i, null), (0, a.R3I)(n, u);for (var d = 0; d < f.length; d += 1) { + f[d].m(n, null); + }s = !0; + }, p: function p(t, e) { + var r = {};if (2 & e && (r.content = t[8].header), _c17.$set(r), 10 & e) { + var o;for (l = Object.entries(t[8].header), o = 0; o < l.length; o += 1) { + var i = ue(t, l, o);f[o] ? f[o].p(i, e) : (f[o] = Ee(i), f[o].c(), f[o].m(n, null)); + }for (; o < f.length; o += 1) { + f[o].d(1); + }f.length = l.length; + } + }, i: function i(t) { + s || ((0, a.Ui)(_c17.$$.fragment, t), s = !0); + }, o: function o(t) { + (0, a.etI)(_c17.$$.fragment, t), s = !1; + }, d: function d(t) { + t && (0, a.ogt)(n), (0, a.vpE)(_c17), (0, a.RMB)(f, t); + } }; + }function Ee(t) { + var n, + e, + r, + o, + i, + _c18, + u, + s = t[11] + "", + l = t[3](t[12]) + "";return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.bGB)("div"), r = (0, a.fLW)(s), o = (0, a.DhX)(), i = (0, a.bGB)("div"), _c18 = (0, a.fLW)(l), u = (0, a.DhX)(), (0, a.Ljt)(e, "class", "vc-table-col vc-table-col-2"), (0, a.Ljt)(i, "class", "vc-table-col vc-table-col-4 vc-table-col-value vc-max-height-line"), (0, a.Ljt)(n, "class", "vc-table-row vc-left-border vc-small"); + }, m: function m(t, s) { + (0, a.$Tr)(t, n, s), (0, a.R3I)(n, e), (0, a.R3I)(e, r), (0, a.R3I)(n, o), (0, a.R3I)(n, i), (0, a.R3I)(i, _c18), (0, a.R3I)(n, u); + }, p: function p(t, n) { + 2 & n && s !== (s = t[11] + "") && (0, a.rTO)(r, s), 2 & n && l !== (l = t[3](t[12]) + "") && (0, a.rTO)(_c18, l); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function Le(t) { + var n, + e, + r, + o, + i, + _c19 = t[8].responseSizeText + "";return { c: function c() { + n = (0, a.bGB)("div"), (e = (0, a.bGB)("div")).textContent = "Size", r = (0, a.DhX)(), o = (0, a.bGB)("div"), i = (0, a.fLW)(_c19), (0, a.Ljt)(e, "class", "vc-table-col vc-table-col-2"), (0, a.Ljt)(o, "class", "vc-table-col vc-table-col-4 vc-table-col-value vc-max-height-line"), (0, a.Ljt)(n, "class", "vc-table-row vc-left-border vc-small"); + }, m: function m(t, c) { + (0, a.$Tr)(t, n, c), (0, a.R3I)(n, e), (0, a.R3I)(n, r), (0, a.R3I)(n, o), (0, a.R3I)(o, i); + }, p: function p(t, n) { + 2 & n && _c19 !== (_c19 = t[8].responseSizeText + "") && (0, a.rTO)(i, _c19); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function Te(t) { + var n, + e, + r, + o, + i, + _c20, + u, + s, + l, + f, + d, + v, + p, + h, + g, + _m4, + _, + b, + y, + w, + E, + L, + T, + O, + C, + x, + I, + D, + R, + k, + P, + M, + $, + S, + j, + B, + A, + U, + N, + V, + G, + W, + K, + F, + H, + q, + Z, + X, + z, + Y, + J, + Q, + tt, + nt, + et, + rt, + ot, + it, + at, + ct, + st, + lt, + ft, + dt = t[8].name + "", + vt = t[8].method + "", + pt = t[8].statusText + "", + ht = t[8].costTime + "", + gt = t[8].url + "", + mt = t[8].method + "", + _t = t[8].requestType + "", + bt = t[8].status + "", + yt = (t[8].response || "") + "";function wt() { + return t[4](t[8]); + }b = new ut({ props: { content: t[8].url } });var Et = null !== t[8].requestHeader && ve(t), + Lt = null !== t[8].getData && he(t), + Tt = null !== t[8].postData && me(t), + Ot = null !== t[8].header && we(t);tt = new ut({ props: { content: t[8].response } });var Ct = t[8].responseSize > 0 && Le(t);return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.bGB)("dl"), r = (0, a.bGB)("dd"), o = (0, a.fLW)(dt), i = (0, a.bGB)("dd"), _c20 = (0, a.fLW)(vt), u = (0, a.bGB)("dd"), s = (0, a.fLW)(pt), l = (0, a.bGB)("dd"), f = (0, a.fLW)(ht), d = (0, a.DhX)(), v = (0, a.bGB)("div"), p = (0, a.bGB)("div"), h = (0, a.bGB)("dl"), g = (0, a.bGB)("dt"), _m4 = (0, a.fLW)("General\n "), _ = (0, a.bGB)("i"), (0, a.YCL)(b.$$.fragment), y = (0, a.DhX)(), w = (0, a.bGB)("div"), (E = (0, a.bGB)("div")).textContent = "URL", L = (0, a.DhX)(), T = (0, a.bGB)("div"), O = (0, a.fLW)(gt), C = (0, a.DhX)(), x = (0, a.bGB)("div"), (I = (0, a.bGB)("div")).textContent = "Method", D = (0, a.DhX)(), R = (0, a.bGB)("div"), k = (0, a.fLW)(mt), P = (0, a.DhX)(), M = (0, a.bGB)("div"), ($ = (0, a.bGB)("div")).textContent = "Request Type", S = (0, a.DhX)(), j = (0, a.bGB)("div"), B = (0, a.fLW)(_t), A = (0, a.DhX)(), U = (0, a.bGB)("div"), (N = (0, a.bGB)("div")).textContent = "HTTP Status", V = (0, a.DhX)(), G = (0, a.bGB)("div"), W = (0, a.fLW)(bt), K = (0, a.DhX)(), Et && Et.c(), F = (0, a.DhX)(), Lt && Lt.c(), H = (0, a.DhX)(), Tt && Tt.c(), q = (0, a.DhX)(), Ot && Ot.c(), Z = (0, a.DhX)(), X = (0, a.bGB)("div"), z = (0, a.bGB)("dl"), Y = (0, a.bGB)("dt"), J = (0, a.fLW)("Response\n "), Q = (0, a.bGB)("i"), (0, a.YCL)(tt.$$.fragment), nt = (0, a.DhX)(), Ct && Ct.c(), et = (0, a.DhX)(), rt = (0, a.bGB)("div"), ot = (0, a.bGB)("pre"), it = (0, a.fLW)(yt), at = (0, a.DhX)(), (0, a.Ljt)(r, "class", "vc-table-col vc-table-col-4"), (0, a.Ljt)(i, "class", "vc-table-col"), (0, a.Ljt)(u, "class", "vc-table-col"), (0, a.Ljt)(l, "class", "vc-table-col"), (0, a.Ljt)(e, "class", "vc-table-row vc-group-preview"), (0, a.VHj)(e, "vc-table-row-error", t[8].status >= 400), (0, a.Ljt)(_, "class", "vc-table-row-icon"), (0, a.Ljt)(g, "class", "vc-table-col vc-table-col-title"), (0, a.Ljt)(h, "class", "vc-table-row vc-left-border"), (0, a.Ljt)(E, "class", "vc-table-col vc-table-col-2"), (0, a.Ljt)(T, "class", "vc-table-col vc-table-col-4 vc-table-col-value vc-max-height-line"), (0, a.Ljt)(w, "class", "vc-table-row vc-left-border vc-small"), (0, a.Ljt)(I, "class", "vc-table-col vc-table-col-2"), (0, a.Ljt)(R, "class", "vc-table-col vc-table-col-4 vc-table-col-value vc-max-height-line"), (0, a.Ljt)(x, "class", "vc-table-row vc-left-border vc-small"), (0, a.Ljt)($, "class", "vc-table-col vc-table-col-2"), (0, a.Ljt)(j, "class", "vc-table-col vc-table-col-4 vc-table-col-value vc-max-height-line"), (0, a.Ljt)(M, "class", "vc-table-row vc-left-border vc-small"), (0, a.Ljt)(N, "class", "vc-table-col vc-table-col-2"), (0, a.Ljt)(G, "class", "vc-table-col vc-table-col-4 vc-table-col-value vc-max-height-line"), (0, a.Ljt)(U, "class", "vc-table-row vc-left-border vc-small"), (0, a.Ljt)(Q, "class", "vc-table-row-icon"), (0, a.Ljt)(Y, "class", "vc-table-col vc-table-col-title"), (0, a.Ljt)(z, "class", "vc-table-row vc-left-border"), (0, a.Ljt)(ot, "class", "vc-table-col vc-max-height vc-min-height"), (0, a.Ljt)(rt, "class", "vc-table-row vc-left-border vc-small"), (0, a.Ljt)(v, "class", "vc-group-detail"), (0, a.Ljt)(n, "class", "vc-group"), (0, a.Ljt)(n, "id", ct = t[8].id), (0, a.VHj)(n, "vc-actived", t[8].actived); + }, m: function m(t, ct) { + (0, a.$Tr)(t, n, ct), (0, a.R3I)(n, e), (0, a.R3I)(e, r), (0, a.R3I)(r, o), (0, a.R3I)(e, i), (0, a.R3I)(i, _c20), (0, a.R3I)(e, u), (0, a.R3I)(u, s), (0, a.R3I)(e, l), (0, a.R3I)(l, f), (0, a.R3I)(n, d), (0, a.R3I)(n, v), (0, a.R3I)(v, p), (0, a.R3I)(p, h), (0, a.R3I)(h, g), (0, a.R3I)(g, _m4), (0, a.R3I)(g, _), (0, a.yef)(b, _, null), (0, a.R3I)(p, y), (0, a.R3I)(p, w), (0, a.R3I)(w, E), (0, a.R3I)(w, L), (0, a.R3I)(w, T), (0, a.R3I)(T, O), (0, a.R3I)(p, C), (0, a.R3I)(p, x), (0, a.R3I)(x, I), (0, a.R3I)(x, D), (0, a.R3I)(x, R), (0, a.R3I)(R, k), (0, a.R3I)(p, P), (0, a.R3I)(p, M), (0, a.R3I)(M, $), (0, a.R3I)(M, S), (0, a.R3I)(M, j), (0, a.R3I)(j, B), (0, a.R3I)(p, A), (0, a.R3I)(p, U), (0, a.R3I)(U, N), (0, a.R3I)(U, V), (0, a.R3I)(U, G), (0, a.R3I)(G, W), (0, a.R3I)(v, K), Et && Et.m(v, null), (0, a.R3I)(v, F), Lt && Lt.m(v, null), (0, a.R3I)(v, H), Tt && Tt.m(v, null), (0, a.R3I)(v, q), Ot && Ot.m(v, null), (0, a.R3I)(v, Z), (0, a.R3I)(v, X), (0, a.R3I)(X, z), (0, a.R3I)(z, Y), (0, a.R3I)(Y, J), (0, a.R3I)(Y, Q), (0, a.yef)(tt, Q, null), (0, a.R3I)(X, nt), Ct && Ct.m(X, null), (0, a.R3I)(X, et), (0, a.R3I)(X, rt), (0, a.R3I)(rt, ot), (0, a.R3I)(ot, it), (0, a.R3I)(n, at), st = !0, lt || (ft = (0, a.oLt)(e, "click", wt), lt = !0); + }, p: function p(r, i) { + t = r, (!st || 2 & i) && dt !== (dt = t[8].name + "") && (0, a.rTO)(o, dt), (!st || 2 & i) && vt !== (vt = t[8].method + "") && (0, a.rTO)(_c20, vt), (!st || 2 & i) && pt !== (pt = t[8].statusText + "") && (0, a.rTO)(s, pt), (!st || 2 & i) && ht !== (ht = t[8].costTime + "") && (0, a.rTO)(f, ht), 2 & i && (0, a.VHj)(e, "vc-table-row-error", t[8].status >= 400);var u = {};2 & i && (u.content = t[8].url), b.$set(u), (!st || 2 & i) && gt !== (gt = t[8].url + "") && (0, a.rTO)(O, gt), (!st || 2 & i) && mt !== (mt = t[8].method + "") && (0, a.rTO)(k, mt), (!st || 2 & i) && _t !== (_t = t[8].requestType + "") && (0, a.rTO)(B, _t), (!st || 2 & i) && bt !== (bt = t[8].status + "") && (0, a.rTO)(W, bt), null !== t[8].requestHeader ? Et ? (Et.p(t, i), 2 & i && (0, a.Ui)(Et, 1)) : ((Et = ve(t)).c(), (0, a.Ui)(Et, 1), Et.m(v, F)) : Et && ((0, a.dvw)(), (0, a.etI)(Et, 1, 1, function () { + Et = null; + }), (0, a.gbL)()), null !== t[8].getData ? Lt ? (Lt.p(t, i), 2 & i && (0, a.Ui)(Lt, 1)) : ((Lt = he(t)).c(), (0, a.Ui)(Lt, 1), Lt.m(v, H)) : Lt && ((0, a.dvw)(), (0, a.etI)(Lt, 1, 1, function () { + Lt = null; + }), (0, a.gbL)()), null !== t[8].postData ? Tt ? (Tt.p(t, i), 2 & i && (0, a.Ui)(Tt, 1)) : ((Tt = me(t)).c(), (0, a.Ui)(Tt, 1), Tt.m(v, q)) : Tt && ((0, a.dvw)(), (0, a.etI)(Tt, 1, 1, function () { + Tt = null; + }), (0, a.gbL)()), null !== t[8].header ? Ot ? (Ot.p(t, i), 2 & i && (0, a.Ui)(Ot, 1)) : ((Ot = we(t)).c(), (0, a.Ui)(Ot, 1), Ot.m(v, Z)) : Ot && ((0, a.dvw)(), (0, a.etI)(Ot, 1, 1, function () { + Ot = null; + }), (0, a.gbL)());var l = {};2 & i && (l.content = t[8].response), tt.$set(l), t[8].responseSize > 0 ? Ct ? Ct.p(t, i) : ((Ct = Le(t)).c(), Ct.m(X, et)) : Ct && (Ct.d(1), Ct = null), (!st || 2 & i) && yt !== (yt = (t[8].response || "") + "") && (0, a.rTO)(it, yt), (!st || 2 & i && ct !== (ct = t[8].id)) && (0, a.Ljt)(n, "id", ct), 2 & i && (0, a.VHj)(n, "vc-actived", t[8].actived); + }, i: function i(t) { + st || ((0, a.Ui)(b.$$.fragment, t), (0, a.Ui)(Et), (0, a.Ui)(Lt), (0, a.Ui)(Tt), (0, a.Ui)(Ot), (0, a.Ui)(tt.$$.fragment, t), st = !0); + }, o: function o(t) { + (0, a.etI)(b.$$.fragment, t), (0, a.etI)(Et), (0, a.etI)(Lt), (0, a.etI)(Tt), (0, a.etI)(Ot), (0, a.etI)(tt.$$.fragment, t), st = !1; + }, d: function d(t) { + t && (0, a.ogt)(n), (0, a.vpE)(b), Et && Et.d(), Lt && Lt.d(), Tt && Tt.d(), Ot && Ot.d(), (0, a.vpE)(tt), Ct && Ct.d(), lt = !1, ft(); + } }; + }function Oe(t) { + for (var n, e, r, o, i, _c21, u, s, l, f, _d3 = t[0] > 0 && de(t), v = Object.entries(t[1]), _p5 = [], h = 0; h < v.length; h += 1) { + _p5[h] = Te(ce(t, v, h)); + }var g = function g(t) { + return (0, a.etI)(_p5[t], 1, 1, function () { + _p5[t] = null; + }); + };return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.bGB)("dl"), r = (0, a.bGB)("dd"), o = (0, a.fLW)("Name "), _d3 && _d3.c(), (i = (0, a.bGB)("dd")).textContent = "Method", (_c21 = (0, a.bGB)("dd")).textContent = "Status", (u = (0, a.bGB)("dd")).textContent = "Time", s = (0, a.DhX)(), l = (0, a.bGB)("div");for (var t = 0; t < _p5.length; t += 1) { + _p5[t].c(); + }(0, a.Ljt)(r, "class", "vc-table-col vc-table-col-4"), (0, a.Ljt)(i, "class", "vc-table-col"), (0, a.Ljt)(_c21, "class", "vc-table-col"), (0, a.Ljt)(u, "class", "vc-table-col"), (0, a.Ljt)(e, "class", "vc-table-row"), (0, a.Ljt)(l, "class", "vc-plugin-content"), (0, a.Ljt)(n, "class", "vc-table"); + }, m: function m(t, v) { + (0, a.$Tr)(t, n, v), (0, a.R3I)(n, e), (0, a.R3I)(e, r), (0, a.R3I)(r, o), _d3 && _d3.m(r, null), (0, a.R3I)(e, i), (0, a.R3I)(e, _c21), (0, a.R3I)(e, u), (0, a.R3I)(n, s), (0, a.R3I)(n, l);for (var h = 0; h < _p5.length; h += 1) { + _p5[h].m(l, null); + }f = !0; + }, p: function p(t, n) { + var e = n[0];if (t[0] > 0 ? _d3 ? _d3.p(t, e) : ((_d3 = de(t)).c(), _d3.m(r, null)) : _d3 && (_d3.d(1), _d3 = null), 14 & e) { + var o;for (v = Object.entries(t[1]), o = 0; o < v.length; o += 1) { + var i = ce(t, v, o);_p5[o] ? (_p5[o].p(i, e), (0, a.Ui)(_p5[o], 1)) : (_p5[o] = Te(i), _p5[o].c(), (0, a.Ui)(_p5[o], 1), _p5[o].m(l, null)); + }for ((0, a.dvw)(), o = v.length; o < _p5.length; o += 1) { + g(o); + }(0, a.gbL)(); + } + }, i: function i(t) { + if (!f) { + for (var n = 0; n < v.length; n += 1) { + (0, a.Ui)(_p5[n]); + }f = !0; + } + }, o: function o(t) { + _p5 = _p5.filter(Boolean);for (var n = 0; n < _p5.length; n += 1) { + (0, a.etI)(_p5[n]); + }f = !1; + }, d: function d(t) { + t && (0, a.ogt)(n), _d3 && _d3.d(), (0, a.RMB)(_p5, t); + } }; + }function Ce(t, e, r) { + var o;(0, a.FIv)(t, Qn, function (t) { + return r(1, o = t); + });var i = 0, + u = function u(t) { + r(0, i = Object.keys(t).length); + }, + s = Qn.subscribe(u);u(o);var l = function l(t) { + (0, a.fxP)(Qn, o[t].actived = !o[t].actived, o); + };(0, c.H3)(function () { + ae.use(); + }), (0, c.ev)(function () { + s(), ae.unuse(); + });return [i, o, l, function (t) { + return n.Kn(t) || n.kJ(t) ? n.hZ(t, { maxDepth: 10, keyMaxLen: 1e4, pretty: !0 }) : t; + }, function (t) { + return l(t.id); + }]; + }var xe = function (t) { + function n(n) { + var e;return e = t.call(this) || this, (0, a.S1n)((0, o.Z)(e), n, Ce, Oe, a.N8, {}), e; + }return (0, i.Z)(n, t), n; + }(a.f_C), + Ie = xe, + De = function (t) { + function n() { + for (var n, e = arguments.length, r = new Array(e), o = 0; o < e; o++) { + r[o] = arguments[o]; + }return (n = t.call.apply(t, [this].concat(r)) || this).model = te.getSingleton(te, "VConsoleNetworkModel"), n; + }(0, i.Z)(n, t);var e = n.prototype;return e.add = function (t) { + var n = new Nn(new Un());for (var e in t) { + n[e] = t[e]; + }return n.startTime = n.startTime || Date.now(), n.requestType = n.requestType || "custom", this.model.updateRequest(n.id, n), n; + }, e.update = function (t, n) { + this.model.updateRequest(t, n); + }, e.clear = function () { + this.model.clearLog(); + }, n; + }(Cn), + Re = function (t) { + function n(n, e, r) { + var o;return void 0 === r && (r = {}), (o = t.call(this, n, e, Ie, r) || this).model = te.getSingleton(te, "VConsoleNetworkModel"), o.exporter = void 0, o.exporter = new De(n), o; + }(0, i.Z)(n, t);var e = n.prototype;return e.onReady = function () { + t.prototype.onReady.call(this), this.onUpdateOption(); + }, e.onAddTool = function (t) { + var n = this;t([{ name: "Clear", global: !1, onClick: function onClick(t) { + n.model.clearLog(); + } }]); + }, e.onRemove = function () { + t.prototype.onRemove.call(this), this.model && this.model.unMock(); + }, e.onUpdateOption = function () { + var t, n;(null == (t = this.vConsole.option.network) ? void 0 : t.maxNetworkNumber) !== this.model.maxNetworkNumber && (this.model.maxNetworkNumber = Number(null == (n = this.vConsole.option.network) ? void 0 : n.maxNetworkNumber) || 1e3); + }, n; + }(nt), + ke = __webpack_require__(8679), + Pe = __webpack_require__.n(ke), + Me = (0, kn.fZ)(), + $e = (0, kn.fZ)(), + Se = __webpack_require__(5670), + je = {};Se.Z && Se.Z.locals && (je.locals = Se.Z.locals);var Be, + Ae = 0, + Ue = {};Ue.styleTagTransform = b(), Ue.setAttributes = h(), Ue.insert = v().bind(null, "head"), Ue.domAPI = f(), Ue.insertStyleElement = m(), je.use = function (t) { + return Ue.options = t || {}, Ae++ || (Be = s()(Se.Z, Ue)), je; + }, je.unuse = function () { + Ae > 0 && ! --Ae && (Be(), Be = null); + };var Ne = je;function Ve(t, n, e) { + var r = t.slice();return r[8] = n[e], r; + }function Ge(t, n, e) { + var r = t.slice();return r[11] = n[e], r; + }function We(t) { + var n, + e, + r, + _o5 = t[0].nodeType === Node.ELEMENT_NODE && Ke(t), + i = t[0].nodeType === Node.TEXT_NODE && nr(t);return { c: function c() { + n = (0, a.bGB)("div"), _o5 && _o5.c(), e = (0, a.DhX)(), i && i.c(), (0, a.Ljt)(n, "class", "vcelm-l"), (0, a.VHj)(n, "vc-actived", t[0]._isActived), (0, a.VHj)(n, "vc-toggle", t[0]._isExpand), (0, a.VHj)(n, "vcelm-noc", t[0]._isSingleLine); + }, m: function m(t, c) { + (0, a.$Tr)(t, n, c), _o5 && _o5.m(n, null), (0, a.R3I)(n, e), i && i.m(n, null), r = !0; + }, p: function p(t, r) { + t[0].nodeType === Node.ELEMENT_NODE ? _o5 ? (_o5.p(t, r), 1 & r && (0, a.Ui)(_o5, 1)) : ((_o5 = Ke(t)).c(), (0, a.Ui)(_o5, 1), _o5.m(n, e)) : _o5 && ((0, a.dvw)(), (0, a.etI)(_o5, 1, 1, function () { + _o5 = null; + }), (0, a.gbL)()), t[0].nodeType === Node.TEXT_NODE ? i ? i.p(t, r) : ((i = nr(t)).c(), i.m(n, null)) : i && (i.d(1), i = null), 1 & r && (0, a.VHj)(n, "vc-actived", t[0]._isActived), 1 & r && (0, a.VHj)(n, "vc-toggle", t[0]._isExpand), 1 & r && (0, a.VHj)(n, "vcelm-noc", t[0]._isSingleLine); + }, i: function i(t) { + r || ((0, a.Ui)(_o5), r = !0); + }, o: function o(t) { + (0, a.etI)(_o5), r = !1; + }, d: function d(t) { + t && (0, a.ogt)(n), _o5 && _o5.d(), i && i.d(); + } }; + }function Ke(t) { + var n, + e, + r, + o, + i, + _c22, + u, + s, + l, + f, + d = t[0].nodeName + "", + v = (t[0].className || t[0].attributes.length) && Fe(t), + _p6 = t[0]._isNullEndTag && Xe(t), + h = t[0].childNodes.length > 0 && ze(t), + g = !t[0]._isNullEndTag && tr(t);return { c: function c() { + n = (0, a.bGB)("span"), e = (0, a.fLW)("<"), r = (0, a.fLW)(d), v && v.c(), o = (0, a.cSb)(), _p6 && _p6.c(), i = (0, a.fLW)(">"), h && h.c(), _c22 = (0, a.cSb)(), g && g.c(), u = (0, a.cSb)(), (0, a.Ljt)(n, "class", "vcelm-node"); + }, m: function m(d, _m5) { + (0, a.$Tr)(d, n, _m5), (0, a.R3I)(n, e), (0, a.R3I)(n, r), v && v.m(n, null), (0, a.R3I)(n, o), _p6 && _p6.m(n, null), (0, a.R3I)(n, i), h && h.m(d, _m5), (0, a.$Tr)(d, _c22, _m5), g && g.m(d, _m5), (0, a.$Tr)(d, u, _m5), s = !0, l || (f = (0, a.oLt)(n, "click", t[2]), l = !0); + }, p: function p(t, e) { + (!s || 1 & e) && d !== (d = t[0].nodeName + "") && (0, a.rTO)(r, d), t[0].className || t[0].attributes.length ? v ? v.p(t, e) : ((v = Fe(t)).c(), v.m(n, o)) : v && (v.d(1), v = null), t[0]._isNullEndTag ? _p6 || ((_p6 = Xe(t)).c(), _p6.m(n, i)) : _p6 && (_p6.d(1), _p6 = null), t[0].childNodes.length > 0 ? h ? (h.p(t, e), 1 & e && (0, a.Ui)(h, 1)) : ((h = ze(t)).c(), (0, a.Ui)(h, 1), h.m(_c22.parentNode, _c22)) : h && ((0, a.dvw)(), (0, a.etI)(h, 1, 1, function () { + h = null; + }), (0, a.gbL)()), t[0]._isNullEndTag ? g && (g.d(1), g = null) : g ? g.p(t, e) : ((g = tr(t)).c(), g.m(u.parentNode, u)); + }, i: function i(t) { + s || ((0, a.Ui)(h), s = !0); + }, o: function o(t) { + (0, a.etI)(h), s = !1; + }, d: function d(t) { + t && (0, a.ogt)(n), v && v.d(), _p6 && _p6.d(), h && h.d(t), t && (0, a.ogt)(_c22), g && g.d(t), t && (0, a.ogt)(u), l = !1, f(); + } }; + }function Fe(t) { + for (var n, e = t[0].attributes, r = [], o = 0; o < e.length; o += 1) { + r[o] = Ze(Ge(t, e, o)); + }return { c: function c() { + n = (0, a.bGB)("i");for (var t = 0; t < r.length; t += 1) { + r[t].c(); + }(0, a.Ljt)(n, "class", "vcelm-k"); + }, m: function m(t, e) { + (0, a.$Tr)(t, n, e);for (var o = 0; o < r.length; o += 1) { + r[o].m(n, null); + } + }, p: function p(t, o) { + if (1 & o) { + var i;for (e = t[0].attributes, i = 0; i < e.length; i += 1) { + var a = Ge(t, e, i);r[i] ? r[i].p(a, o) : (r[i] = Ze(a), r[i].c(), r[i].m(n, null)); + }for (; i < r.length; i += 1) { + r[i].d(1); + }r.length = e.length; + } + }, d: function d(t) { + t && (0, a.ogt)(n), (0, a.RMB)(r, t); + } }; + }function He(t) { + var n, + e = t[11].name + "";return { c: function c() { + n = (0, a.fLW)(e); + }, m: function m(t, e) { + (0, a.$Tr)(t, n, e); + }, p: function p(t, r) { + 1 & r && e !== (e = t[11].name + "") && (0, a.rTO)(n, e); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function qe(t) { + var n, + e, + r, + o, + i, + _c23 = t[11].name + "", + u = t[11].value + "";return { c: function c() { + n = (0, a.fLW)(_c23), e = (0, a.fLW)('="'), r = (0, a.bGB)("i"), o = (0, a.fLW)(u), i = (0, a.fLW)('"'), (0, a.Ljt)(r, "class", "vcelm-v"); + }, m: function m(t, c) { + (0, a.$Tr)(t, n, c), (0, a.$Tr)(t, e, c), (0, a.$Tr)(t, r, c), (0, a.R3I)(r, o), (0, a.$Tr)(t, i, c); + }, p: function p(t, e) { + 1 & e && _c23 !== (_c23 = t[11].name + "") && (0, a.rTO)(n, _c23), 1 & e && u !== (u = t[11].value + "") && (0, a.rTO)(o, u); + }, d: function d(t) { + t && (0, a.ogt)(n), t && (0, a.ogt)(e), t && (0, a.ogt)(r), t && (0, a.ogt)(i); + } }; + }function Ze(t) { + var n, e;function r(t, n) { + return "" !== t[11].value ? qe : He; + }var o = r(t), + i = o(t);return { c: function c() { + n = (0, a.fLW)(" \n "), i.c(), e = (0, a.cSb)(); + }, m: function m(t, r) { + (0, a.$Tr)(t, n, r), i.m(t, r), (0, a.$Tr)(t, e, r); + }, p: function p(t, n) { + o === (o = r(t)) && i ? i.p(t, n) : (i.d(1), (i = o(t)) && (i.c(), i.m(e.parentNode, e))); + }, d: function d(t) { + t && (0, a.ogt)(n), i.d(t), t && (0, a.ogt)(e); + } }; + }function Xe(t) { + var n;return { c: function c() { + n = (0, a.fLW)("/"); + }, m: function m(t, e) { + (0, a.$Tr)(t, n, e); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function ze(t) { + var n, + e, + r, + _o6, + i = [Je, Ye], + c = [];function u(t, n) { + return t[0]._isExpand ? 1 : 0; + }return n = u(t), e = c[n] = i[n](t), { c: function c() { + e.c(), r = (0, a.cSb)(); + }, m: function m(t, e) { + c[n].m(t, e), (0, a.$Tr)(t, r, e), _o6 = !0; + }, p: function p(t, o) { + var s = n;(n = u(t)) === s ? c[n].p(t, o) : ((0, a.dvw)(), (0, a.etI)(c[s], 1, 1, function () { + c[s] = null; + }), (0, a.gbL)(), (e = c[n]) ? e.p(t, o) : (e = c[n] = i[n](t)).c(), (0, a.Ui)(e, 1), e.m(r.parentNode, r)); + }, i: function i(t) { + _o6 || ((0, a.Ui)(e), _o6 = !0); + }, o: function o(t) { + (0, a.etI)(e), _o6 = !1; + }, d: function d(t) { + c[n].d(t), t && (0, a.ogt)(r); + } }; + }function Ye(t) { + for (var n, e, r = t[0].childNodes, _o7 = [], i = 0; i < r.length; i += 1) { + _o7[i] = Qe(Ve(t, r, i)); + }var c = function c(t) { + return (0, a.etI)(_o7[t], 1, 1, function () { + _o7[t] = null; + }); + };return { c: function c() { + for (var t = 0; t < _o7.length; t += 1) { + _o7[t].c(); + }n = (0, a.cSb)(); + }, m: function m(t, r) { + for (var i = 0; i < _o7.length; i += 1) { + _o7[i].m(t, r); + }(0, a.$Tr)(t, n, r), e = !0; + }, p: function p(t, e) { + if (1 & e) { + var i;for (r = t[0].childNodes, i = 0; i < r.length; i += 1) { + var u = Ve(t, r, i);_o7[i] ? (_o7[i].p(u, e), (0, a.Ui)(_o7[i], 1)) : (_o7[i] = Qe(u), _o7[i].c(), (0, a.Ui)(_o7[i], 1), _o7[i].m(n.parentNode, n)); + }for ((0, a.dvw)(), i = r.length; i < _o7.length; i += 1) { + c(i); + }(0, a.gbL)(); + } + }, i: function i(t) { + if (!e) { + for (var n = 0; n < r.length; n += 1) { + (0, a.Ui)(_o7[n]); + }e = !0; + } + }, o: function o(t) { + _o7 = _o7.filter(Boolean);for (var n = 0; n < _o7.length; n += 1) { + (0, a.etI)(_o7[n]); + }e = !1; + }, d: function d(t) { + (0, a.RMB)(_o7, t), t && (0, a.ogt)(n); + } }; + }function Je(t) { + var n;return { c: function c() { + n = (0, a.fLW)("..."); + }, m: function m(t, e) { + (0, a.$Tr)(t, n, e); + }, p: a.ZTd, i: a.ZTd, o: a.ZTd, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function Qe(t) { + var n, e, r;return (n = new or({ props: { node: t[8] } })).$on("toggleNode", t[4]), { c: function c() { + (0, a.YCL)(n.$$.fragment), e = (0, a.DhX)(); + }, m: function m(t, o) { + (0, a.yef)(n, t, o), (0, a.$Tr)(t, e, o), r = !0; + }, p: function p(t, e) { + var r = {};1 & e && (r.node = t[8]), n.$set(r); + }, i: function i(t) { + r || ((0, a.Ui)(n.$$.fragment, t), r = !0); + }, o: function o(t) { + (0, a.etI)(n.$$.fragment, t), r = !1; + }, d: function d(t) { + (0, a.vpE)(n, t), t && (0, a.ogt)(e); + } }; + }function tr(t) { + var n, + e, + r, + o, + i = t[0].nodeName + "";return { c: function c() { + n = (0, a.bGB)("span"), e = (0, a.fLW)("</"), r = (0, a.fLW)(i), o = (0, a.fLW)(">"), (0, a.Ljt)(n, "class", "vcelm-node"); + }, m: function m(t, i) { + (0, a.$Tr)(t, n, i), (0, a.R3I)(n, e), (0, a.R3I)(n, r), (0, a.R3I)(n, o); + }, p: function p(t, n) { + 1 & n && i !== (i = t[0].nodeName + "") && (0, a.rTO)(r, i); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function nr(t) { + var n, + e, + r = t[1](t[0].textContent) + "";return { c: function c() { + n = (0, a.bGB)("span"), e = (0, a.fLW)(r), (0, a.Ljt)(n, "class", "vcelm-t vcelm-noc"); + }, m: function m(t, r) { + (0, a.$Tr)(t, n, r), (0, a.R3I)(n, e); + }, p: function p(t, n) { + 1 & n && r !== (r = t[1](t[0].textContent) + "") && (0, a.rTO)(e, r); + }, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function er(t) { + var n, + e, + r = t[0] && We(t);return { c: function c() { + r && r.c(), n = (0, a.cSb)(); + }, m: function m(t, o) { + r && r.m(t, o), (0, a.$Tr)(t, n, o), e = !0; + }, p: function p(t, e) { + var o = e[0];t[0] ? r ? (r.p(t, o), 1 & o && (0, a.Ui)(r, 1)) : ((r = We(t)).c(), (0, a.Ui)(r, 1), r.m(n.parentNode, n)) : r && ((0, a.dvw)(), (0, a.etI)(r, 1, 1, function () { + r = null; + }), (0, a.gbL)()); + }, i: function i(t) { + e || ((0, a.Ui)(r), e = !0); + }, o: function o(t) { + (0, a.etI)(r), e = !1; + }, d: function d(t) { + r && r.d(t), t && (0, a.ogt)(n); + } }; + }function rr(t, n, e) { + var r;(0, a.FIv)(t, $e, function (t) { + return e(3, r = t); + });var o = n.node, + i = (0, c.x)(), + u = ["br", "hr", "img", "input", "link", "meta"];(0, c.H3)(function () { + Ne.use(); + }), (0, c.ev)(function () { + Ne.unuse(); + });return t.$$set = function (t) { + "node" in t && e(0, o = t.node); + }, t.$$.update = function () { + 9 & t.$$.dirty && o && (e(0, o._isActived = o === r, o), e(0, o._isNullEndTag = function (t) { + return u.indexOf(t.nodeName) > -1; + }(o), o), e(0, o._isSingleLine = 0 === o.childNodes.length || o._isNullEndTag, o)); + }, [o, function (t) { + return t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); + }, function () { + o._isNullEndTag || (e(0, o._isExpand = !o._isExpand, o), i("toggleNode", { node: o })); + }, r, function (n) { + a.cKT.call(this, t, n); + }]; + }var or = function (n) { + function e(t) { + var e;return e = n.call(this) || this, (0, a.S1n)((0, o.Z)(e), t, rr, er, a.N8, { node: 0 }), e; + }return (0, i.Z)(e, n), (0, t.Z)(e, [{ key: "node", get: function get() { + return this.$$.ctx[0]; + }, set: function set(t) { + this.$$set({ node: t }), (0, a.yl1)(); + } }]), e; + }(a.f_C), + ir = or;function ar(t) { + var n, e, r;return (e = new ir({ props: { node: t[0] } })).$on("toggleNode", t[1]), { c: function c() { + n = (0, a.bGB)("div"), (0, a.YCL)(e.$$.fragment), (0, a.Ljt)(n, "class", "vc-plugin-content"); + }, m: function m(t, o) { + (0, a.$Tr)(t, n, o), (0, a.yef)(e, n, null), r = !0; + }, p: function p(t, n) { + var r = {};1 & n[0] && (r.node = t[0]), e.$set(r); + }, i: function i(t) { + r || ((0, a.Ui)(e.$$.fragment, t), r = !0); + }, o: function o(t) { + (0, a.etI)(e.$$.fragment, t), r = !1; + }, d: function d(t) { + t && (0, a.ogt)(n), (0, a.vpE)(e); + } }; + }function cr(t, n, e) { + var r;return (0, a.FIv)(t, Me, function (t) { + return e(0, r = t); + }), [r, function (n) { + a.cKT.call(this, t, n); + }]; + }var ur = function (t) { + function n(n) { + var e;return e = t.call(this) || this, (0, a.S1n)((0, o.Z)(e), n, cr, ar, a.N8, {}), e; + }return (0, i.Z)(n, t), n; + }(a.f_C), + sr = ur, + lr = function (t) { + function n(n, e, r) { + var o;return void 0 === r && (r = {}), (o = t.call(this, n, e, sr, r) || this).isInited = !1, o.observer = void 0, o.nodeMap = void 0, o; + }(0, i.Z)(n, t);var e = n.prototype;return e.onShow = function () { + this.isInited || this._init(); + }, e.onRemove = function () { + t.prototype.onRemove.call(this), this.isInited && (this.observer.disconnect(), this.isInited = !1, this.nodeMap = void 0, Me.set(void 0)); + }, e.onAddTool = function (t) { + var n = this;t([{ name: "Expand", global: !1, onClick: function onClick(t) { + n._expandActivedNode(); + } }, { name: "Collapse", global: !1, onClick: function onClick(t) { + n._collapseActivedNode(); + } }]); + }, e._init = function () { + var t = this;this.isInited = !0, this.nodeMap = new WeakMap();var n = this._generateVNode(document.documentElement);n._isExpand = !0, $e.set(n), Me.set(n), this.compInstance.$on("toggleNode", function (t) { + $e.set(t.detail.node); + }), this.observer = new (Pe())(function (n) { + for (var e = 0; e < n.length; e++) { + var r = n[e];t._isInVConsole(r.target) || t._handleMutation(r); + } + }), this.observer.observe(document.documentElement, { attributes: !0, childList: !0, characterData: !0, subtree: !0 }); + }, e._handleMutation = function (t) { + switch (t.type) {case "childList": + t.removedNodes.length > 0 && this._onChildRemove(t), t.addedNodes.length > 0 && this._onChildAdd(t);break;case "attributes": + this._onAttributesChange(t);break;case "characterData": + this._onCharacterDataChange(t);} + }, e._onChildRemove = function (t) { + var n = this.nodeMap.get(t.target);if (n) { + for (var e = 0; e < t.removedNodes.length; e++) { + var r = this.nodeMap.get(t.removedNodes[e]);if (r) { + for (var o = 0; o < n.childNodes.length; o++) { + if (n.childNodes[o] === r) { + n.childNodes.splice(o, 1);break; + } + }this.nodeMap.delete(t.removedNodes[e]); + } + }this._refreshStore(); + } + }, e._onChildAdd = function (t) { + var n = this.nodeMap.get(t.target);if (n) { + for (var e = 0; e < t.addedNodes.length; e++) { + var r = t.addedNodes[e], + o = this._generateVNode(r);if (o) { + var i = void 0, + a = r;do { + if (null === a.nextSibling) break;a.nodeType === Node.ELEMENT_NODE && (i = this.nodeMap.get(a.nextSibling) || void 0), a = a.nextSibling; + } while (void 0 === i);if (void 0 === i) n.childNodes.push(o);else for (var c = 0; c < n.childNodes.length; c++) { + if (n.childNodes[c] === i) { + n.childNodes.splice(c, 0, o);break; + } + } + } + }this._refreshStore(); + } + }, e._onAttributesChange = function (t) { + this._updateVNodeAttributes(t.target), this._refreshStore(); + }, e._onCharacterDataChange = function (t) { + var n = this.nodeMap.get(t.target);n && (n.textContent = t.target.textContent, this._refreshStore()); + }, e._generateVNode = function (t) { + if (!this._isIgnoredNode(t)) { + var n = { nodeType: t.nodeType, nodeName: t.nodeName.toLowerCase(), textContent: "", id: "", className: "", attributes: [], childNodes: [] };if (this.nodeMap.set(t, n), n.nodeType != t.TEXT_NODE && n.nodeType != t.DOCUMENT_TYPE_NODE || (n.textContent = t.textContent), t.childNodes.length > 0) { + n.childNodes = [];for (var e = 0; e < t.childNodes.length; e++) { + var r = this._generateVNode(t.childNodes[e]);r && n.childNodes.push(r); + } + }return this._updateVNodeAttributes(t), n; + } + }, e._updateVNodeAttributes = function (t) { + var n = this.nodeMap.get(t);if (n && t instanceof Element && (n.id = t.id || "", n.className = t.className || "", t.hasAttributes && t.hasAttributes())) { + n.attributes = [];for (var e = 0; e < t.attributes.length; e++) { + n.attributes.push({ name: t.attributes[e].name, value: t.attributes[e].value || "" }); + } + } + }, e._expandActivedNode = function () { + var t = (0, kn.U2)($e);if (t._isExpand) for (var n = 0; n < t.childNodes.length; n++) { + t.childNodes[n]._isExpand = !0; + } else t._isExpand = !0;this._refreshStore(); + }, e._collapseActivedNode = function () { + var t = (0, kn.U2)($e);if (t._isExpand) { + for (var n = !1, e = 0; e < t.childNodes.length; e++) { + t.childNodes[e]._isExpand && (n = !0, t.childNodes[e]._isExpand = !1); + }n || (t._isExpand = !1), this._refreshStore(); + } + }, e._isIgnoredNode = function (t) { + if (t.nodeType === t.TEXT_NODE) { + if ("" === t.textContent.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$|\n+/g, "")) return !0; + } else if (t.nodeType === t.COMMENT_NODE) return !0;return !1; + }, e._isInVConsole = function (t) { + for (var n = t; void 0 !== n;) { + if ("__vconsole" == n.id) return !0;n = n.parentElement || void 0; + }return !1; + }, e._refreshStore = function () { + Me.update(function (t) { + return t; + }); + }, n; + }(nt);function fr(t, n, e, r, o, i, a) { + try { + var c = t[i](a), + u = c.value; + } catch (t) { + return void e(t); + }c.done ? n(u) : Promise.resolve(u).then(r, o); + }function dr(t) { + return function () { + var n = this, + e = arguments;return new Promise(function (r, o) { + var i = t.apply(n, e);function a(t) { + fr(i, r, o, a, c, "next", t); + }function c(t) { + fr(i, r, o, a, c, "throw", t); + }a(void 0); + }); + }; + }var vr = __webpack_require__(4264), + pr = __webpack_require__.n(vr);function hr(t, n, e) { + return n in t ? Object.defineProperty(t, n, { value: e, enumerable: !0, configurable: !0, writable: !0 }) : t[n] = e, t; + }function gr(t, n) { + var e = Object.keys(t);if (Object.getOwnPropertySymbols) { + var r = Object.getOwnPropertySymbols(t);n && (r = r.filter(function (n) { + return Object.getOwnPropertyDescriptor(t, n).enumerable; + })), e.push.apply(e, r); + }return e; + }function mr(t) { + for (var n = 1; n < arguments.length; n++) { + var e = null != arguments[n] ? arguments[n] : {};n % 2 ? gr(Object(e), !0).forEach(function (n) { + hr(t, n, e[n]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(e)) : gr(Object(e)).forEach(function (n) { + Object.defineProperty(t, n, Object.getOwnPropertyDescriptor(e, n)); + }); + }return t; + }var _r = function _r(t) { + if (!t || 0 === t.length) return {};for (var n = {}, e = t.split(";"), r = 0; r < e.length; r++) { + var o = e[r].indexOf("=");if (!(o < 0)) { + var i = e[r].substring(0, o).replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""), + a = e[r].substring(o + 1, e[r].length);try { + i = decodeURIComponent(i); + } catch (t) {}try { + a = decodeURIComponent(a); + } catch (t) {}n[i] = a; + } + }return n; + }, + br = function br(t, n, e) { + "undefined" != typeof document && void 0 !== document.cookie && (document.cookie = encodeURIComponent(t) + "=" + encodeURIComponent(n) + function (t) { + void 0 === t && (t = {});var n = t, + e = n.path, + r = n.domain, + o = n.expires, + i = n.secure, + a = n.sameSite, + c = ["none", "lax", "strict"].indexOf((a || "").toLowerCase()) > -1 ? a : null;return [null == e ? "" : ";path=" + e, null == r ? "" : ";domain=" + r, null == o ? "" : ";expires=" + o.toUTCString(), void 0 === i || !1 === i ? "" : ";secure", null === c ? "" : ";SameSite=" + c].join(""); + }(e)); + }, + yr = function yr() { + return "undefined" == typeof document || void 0 === document.cookie ? "" : document.cookie; + }, + wr = function () { + function n() {}var e = n.prototype;return e.key = function (t) { + return t < this.keys.length ? this.keys[t] : null; + }, e.setItem = function (t, n, e) { + br(t, n, e); + }, e.getItem = function (t) { + var n = _r(yr());return Object.prototype.hasOwnProperty.call(n, t) ? n[t] : null; + }, e.removeItem = function (t, n) { + for (var e, r, o = ["", "/"], i = (null == (e = location) || null == (r = e.hostname) ? void 0 : r.split(".")) || []; i.length > 1;) { + o.push(i.join(".")), i.shift(); + }for (var a = 0; a < o.length; a++) { + for (var c, u, s = (null == (c = location) || null == (u = c.pathname) ? void 0 : u.split("/")) || [], l = ""; s.length > 0;) { + l += ("/" === l ? "" : "/") + s.shift();var f = mr(mr({}, n), {}, { path: l, domain: o[a], expires: new Date(0) });br(t, "", f); + } + } + }, e.clear = function () { + for (var t = [].concat(this.keys), n = 0; n < t.length; n++) { + this.removeItem(t[n]); + } + }, (0, t.Z)(n, [{ key: "length", get: function get() { + return this.keys.length; + } }, { key: "keys", get: function get() { + var t = _r(yr());return Object.keys(t).sort(); + } }]), n; + }(), + Er = function () { + function e() { + this.keys = [], this.currentSize = 0, this.limitSize = 0; + }var r = e.prototype;return r.key = function (t) { + return t < this.keys.length ? this.keys[t] : null; + }, r.prepare = function () { + var t = dr(pr().mark(function t() { + var e = this;return pr().wrap(function (t) { + for (;;) { + switch (t.prev = t.next) {case 0: + return t.abrupt("return", new Promise(function (t, r) { + (0, n.qt)("getStorageInfo", { success: function success(n) { + e.keys = n ? n.keys.sort() : [], e.currentSize = n ? n.currentSize : 0, e.limitSize = n ? n.limitSize : 0, t(!0); + }, fail: function fail() { + r(!1); + } }); + }));case 1:case "end": + return t.stop();} + } + }, t); + }));return function () { + return t.apply(this, arguments); + }; + }(), r.getItem = function (t) { + return new Promise(function (e, r) { + (0, n.qt)("getStorage", { key: t, success: function success(t) { + var n = t.data;if ("object" == _typeof(t.data)) try { + n = JSON.stringify(t.data); + } catch (t) {}e(n); + }, fail: function fail(t) { + r(t); + } }); + }); + }, r.setItem = function (t, e) { + return new Promise(function (r, o) { + (0, n.qt)("setStorage", { key: t, data: e, success: function success(t) { + r(t); + }, fail: function fail(t) { + o(t); + } }); + }); + }, r.removeItem = function (t) { + return new Promise(function (e, r) { + (0, n.qt)("removeStorage", { key: t, success: function success(t) { + e(t); + }, fail: function fail(t) { + r(t); + } }); + }); + }, r.clear = function () { + return new Promise(function (t, e) { + (0, n.qt)("clearStorage", { success: function success(n) { + t(n); + }, fail: function fail(t) { + e(t); + } }); + }); + }, (0, t.Z)(e, [{ key: "length", get: function get() { + return this.keys.length; + } }]), e; + }(), + Lr = { updateTime: (0, kn.fZ)(0), activedName: (0, kn.fZ)(null), defaultStorages: (0, kn.fZ)(["cookies", "localStorage", "sessionStorage"]) }, + Tr = function (e) { + function r() { + var t;return (t = e.call(this) || this).storage = new Map(), Lr.activedName.subscribe(function (t) { + var n = (0, kn.U2)(Lr.defaultStorages);n.length > 0 && -1 === n.indexOf(t) && Lr.activedName.set(n[0]); + }), Lr.defaultStorages.subscribe(function (n) { + -1 === n.indexOf((0, kn.U2)(Lr.activedName)) && Lr.activedName.set(n[0]), t.updateEnabledStorages(); + }), t; + }(0, i.Z)(r, e);var o = r.prototype;return o.getItem = function () { + var t = dr(pr().mark(function t(n) { + return pr().wrap(function (t) { + for (;;) { + switch (t.prev = t.next) {case 0: + if (this.activedStorage) { + t.next = 2;break; + }return t.abrupt("return", "");case 2: + return t.next = 4, this.promisify(this.activedStorage.getItem(n));case 4: + return t.abrupt("return", t.sent);case 5:case "end": + return t.stop();} + } + }, t, this); + }));return function (n) { + return t.apply(this, arguments); + }; + }(), o.setItem = function () { + var t = dr(pr().mark(function t(n, e) { + var r;return pr().wrap(function (t) { + for (;;) { + switch (t.prev = t.next) {case 0: + if (this.activedStorage) { + t.next = 2;break; + }return t.abrupt("return");case 2: + return t.next = 4, this.promisify(this.activedStorage.setItem(n, e));case 4: + return r = t.sent, this.refresh(), t.abrupt("return", r);case 7:case "end": + return t.stop();} + } + }, t, this); + }));return function (n, e) { + return t.apply(this, arguments); + }; + }(), o.removeItem = function () { + var t = dr(pr().mark(function t(n) { + var e;return pr().wrap(function (t) { + for (;;) { + switch (t.prev = t.next) {case 0: + if (this.activedStorage) { + t.next = 2;break; + }return t.abrupt("return");case 2: + return t.next = 4, this.promisify(this.activedStorage.removeItem(n));case 4: + return e = t.sent, this.refresh(), t.abrupt("return", e);case 7:case "end": + return t.stop();} + } + }, t, this); + }));return function (n) { + return t.apply(this, arguments); + }; + }(), o.clear = function () { + var t = dr(pr().mark(function t() { + var n;return pr().wrap(function (t) { + for (;;) { + switch (t.prev = t.next) {case 0: + if (this.activedStorage) { + t.next = 2;break; + }return t.abrupt("return");case 2: + return t.next = 4, this.promisify(this.activedStorage.clear());case 4: + return n = t.sent, this.refresh(), t.abrupt("return", n);case 7:case "end": + return t.stop();} + } + }, t, this); + }));return function () { + return t.apply(this, arguments); + }; + }(), o.refresh = function () { + Lr.updateTime.set(Date.now()); + }, o.getEntries = function () { + var t = dr(pr().mark(function t() { + var n, e, r, o, i;return pr().wrap(function (t) { + for (;;) { + switch (t.prev = t.next) {case 0: + if (n = this.activedStorage) { + t.next = 3;break; + }return t.abrupt("return", []);case 3: + if ("function" != typeof n.prepare) { + t.next = 6;break; + }return t.next = 6, n.prepare();case 6: + e = [], r = 0;case 8: + if (!(r < n.length)) { + t.next = 17;break; + }return o = n.key(r), t.next = 12, this.getItem(o);case 12: + i = t.sent, e.push([o, i]);case 14: + r++, t.next = 8;break;case 17: + return t.abrupt("return", e);case 18:case "end": + return t.stop();} + } + }, t, this); + }));return function () { + return t.apply(this, arguments); + }; + }(), o.updateEnabledStorages = function () { + var t = (0, kn.U2)(Lr.defaultStorages);t.indexOf("cookies") > -1 ? void 0 !== document.cookie && this.storage.set("cookies", new wr()) : this.deleteStorage("cookies"), t.indexOf("localStorage") > -1 ? window.localStorage && this.storage.set("localStorage", window.localStorage) : this.deleteStorage("localStorage"), t.indexOf("sessionStorage") > -1 ? window.sessionStorage && this.storage.set("sessionStorage", window.sessionStorage) : this.deleteStorage("sessionStorage"), t.indexOf("wxStorage") > -1 ? (0, n.H_)() && this.storage.set("wxStorage", new Er()) : this.deleteStorage("wxStorage"); + }, o.promisify = function (t) { + return "string" == typeof t || null == t ? Promise.resolve(t) : t; + }, o.deleteStorage = function (t) { + this.storage.has(t) && this.storage.delete(t); + }, (0, t.Z)(r, [{ key: "activedStorage", get: function get() { + return this.storage.get((0, kn.U2)(Lr.activedName)); + } }]), r; + }(Pn.N);function Or(t, n, e) { + var r = t.slice();return r[20] = n[e][0], r[21] = n[e][1], r[23] = e, r; + }function Cr(t) { + var n;return { c: function c() { + n = (0, a.bGB)("div"), (0, a.Ljt)(n, "class", "vc-plugin-empty"); + }, m: function m(t, e) { + (0, a.$Tr)(t, n, e); + }, p: a.ZTd, d: function d(t) { + t && (0, a.ogt)(n); + } }; + }function xr(t) { + var n, + e, + r, + o, + i, + _c24 = t[20] + "", + u = t[5](t[21]) + "";return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.fLW)(_c24), r = (0, a.DhX)(), o = (0, a.bGB)("div"), i = (0, a.fLW)(u), (0, a.Ljt)(n, "class", "vc-table-col"), (0, a.Ljt)(o, "class", "vc-table-col vc-table-col-2"); + }, m: function m(t, c) { + (0, a.$Tr)(t, n, c), (0, a.R3I)(n, e), (0, a.$Tr)(t, r, c), (0, a.$Tr)(t, o, c), (0, a.R3I)(o, i); + }, p: function p(t, n) { + 1 & n && _c24 !== (_c24 = t[20] + "") && (0, a.rTO)(e, _c24), 1 & n && u !== (u = t[5](t[21]) + "") && (0, a.rTO)(i, u); + }, d: function d(t) { + t && (0, a.ogt)(n), t && (0, a.ogt)(r), t && (0, a.ogt)(o); + } }; + }function Ir(t) { + var n, e, r, o, i, c, u;return { c: function c() { + n = (0, a.bGB)("div"), e = (0, a.bGB)("textarea"), r = (0, a.DhX)(), o = (0, a.bGB)("div"), i = (0, a.bGB)("textarea"), (0, a.Ljt)(e, "class", "vc-table-input"), (0, a.Ljt)(n, "class", "vc-table-col"), (0, a.Ljt)(i, "class", "vc-table-input"), (0, a.Ljt)(o, "class", "vc-table-col vc-table-col-2"); + }, m: function m(s, l) { + (0, a.$Tr)(s, n, l), (0, a.R3I)(n, e), (0, a.BmG)(e, t[2]), (0, a.$Tr)(s, r, l), (0, a.$Tr)(s, o, l), (0, a.R3I)(o, i), (0, a.BmG)(i, t[3]), c || (u = [(0, a.oLt)(e, "input", t[11]), (0, a.oLt)(i, "input", t[12])], c = !0); + }, p: function p(t, n) { + 4 & n && (0, a.BmG)(e, t[2]), 8 & n && (0, a.BmG)(i, t[3]); + }, d: function d(t) { + t && (0, a.ogt)(n), t && (0, a.ogt)(r), t && (0, a.ogt)(o), c = !1, (0, a.j7q)(u); + } }; + }function Dr(t) { + var n, e, r, o, _i7, c;return (n = new ot.Z({ props: { name: "delete" } })).$on("click", function () { + return t[14](t[20]); + }), r = new ut({ props: { content: [t[20], t[21]].join("=") } }), (_i7 = new ot.Z({ props: { name: "edit" } })).$on("click", function () { + return t[15](t[20], t[21], t[23]); + }), { c: function c() { + (0, a.YCL)(n.$$.fragment), e = (0, a.DhX)(), (0, a.YCL)(r.$$.fragment), o = (0, a.DhX)(), (0, a.YCL)(_i7.$$.fragment); + }, m: function m(t, u) { + (0, a.yef)(n, t, u), (0, a.$Tr)(t, e, u), (0, a.yef)(r, t, u), (0, a.$Tr)(t, o, u), (0, a.yef)(_i7, t, u), c = !0; + }, p: function p(n, e) { + t = n;var o = {};1 & e && (o.content = [t[20], t[21]].join("=")), r.$set(o); + }, i: function i(t) { + c || ((0, a.Ui)(n.$$.fragment, t), (0, a.Ui)(r.$$.fragment, t), (0, a.Ui)(_i7.$$.fragment, t), c = !0); + }, o: function o(t) { + (0, a.etI)(n.$$.fragment, t), (0, a.etI)(r.$$.fragment, t), (0, a.etI)(_i7.$$.fragment, t), c = !1; + }, d: function d(t) { + (0, a.vpE)(n, t), t && (0, a.ogt)(e), (0, a.vpE)(r, t), t && (0, a.ogt)(o), (0, a.vpE)(_i7, t); + } }; + }function Rr(t) { + var n, e, r, _o8;return (n = new ot.Z({ props: { name: "cancel" } })).$on("click", t[9]), (r = new ot.Z({ props: { name: "done" } })).$on("click", function () { + return t[13](t[20]); + }), { c: function c() { + (0, a.YCL)(n.$$.fragment), e = (0, a.DhX)(), (0, a.YCL)(r.$$.fragment); + }, m: function m(t, i) { + (0, a.yef)(n, t, i), (0, a.$Tr)(t, e, i), (0, a.yef)(r, t, i), _o8 = !0; + }, p: function p(n, e) { + t = n; + }, i: function i(t) { + _o8 || ((0, a.Ui)(n.$$.fragment, t), (0, a.Ui)(r.$$.fragment, t), _o8 = !0); + }, o: function o(t) { + (0, a.etI)(n.$$.fragment, t), (0, a.etI)(r.$$.fragment, t), _o8 = !1; + }, d: function d(t) { + (0, a.vpE)(n, t), t && (0, a.ogt)(e), (0, a.vpE)(r, t); + } }; + }function kr(t) { + var n, e, r, o, _i8, _c25, u;function s(t, n) { + return t[1] === t[23] ? Ir : xr; + }var l = s(t), + f = l(t), + d = [Rr, Dr], + v = [];function _p7(t, n) { + return t[1] === t[23] ? 0 : 1; + }return o = _p7(t), _i8 = v[o] = d[o](t), { c: function c() { + n = (0, a.bGB)("div"), f.c(), e = (0, a.DhX)(), r = (0, a.bGB)("div"), _i8.c(), _c25 = (0, a.DhX)(), (0, a.Ljt)(r, "class", "vc-table-col vc-table-col-1 vc-table-action"), (0, a.Ljt)(n, "class", "vc-table-row"); + }, m: function m(t, i) { + (0, a.$Tr)(t, n, i), f.m(n, null), (0, a.R3I)(n, e), (0, a.R3I)(n, r), v[o].m(r, null), (0, a.R3I)(n, _c25), u = !0; + }, p: function p(t, c) { + l === (l = s(t)) && f ? f.p(t, c) : (f.d(1), (f = l(t)) && (f.c(), f.m(n, e)));var u = o;(o = _p7(t)) === u ? v[o].p(t, c) : ((0, a.dvw)(), (0, a.etI)(v[u], 1, 1, function () { + v[u] = null; + }), (0, a.gbL)(), (_i8 = v[o]) ? _i8.p(t, c) : (_i8 = v[o] = d[o](t)).c(), (0, a.Ui)(_i8, 1), _i8.m(r, null)); + }, i: function i(t) { + u || ((0, a.Ui)(_i8), u = !0); + }, o: function o(t) { + (0, a.etI)(_i8), u = !1; + }, d: function d(t) { + t && (0, a.ogt)(n), f.d(), v[o].d(); + } }; + }function Pr(t) { + for (var n, e, r, _o9, _i9 = t[0], _c26 = [], u = 0; u < _i9.length; u += 1) { + _c26[u] = kr(Or(t, _i9, u)); + }var s = function s(t) { + return (0, a.etI)(_c26[t], 1, 1, function () { + _c26[t] = null; + }); + }, + l = null;return _i9.length || (l = Cr()), { c: function c() { + n = (0, a.bGB)("div"), (e = (0, a.bGB)("div")).innerHTML = '<div class="vc-table-col">Key</div> \n <div class="vc-table-col vc-table-col-2">Value</div> \n <div class="vc-table-col vc-table-col-1 vc-table-action"></div>', r = (0, a.DhX)();for (var t = 0; t < _c26.length; t += 1) { + _c26[t].c(); + }l && l.c(), (0, a.Ljt)(e, "class", "vc-table-row"), (0, a.Ljt)(n, "class", "vc-table"); + }, m: function m(t, i) { + (0, a.$Tr)(t, n, i), (0, a.R3I)(n, e), (0, a.R3I)(n, r);for (var u = 0; u < _c26.length; u += 1) { + _c26[u].m(n, null); + }l && l.m(n, null), _o9 = !0; + }, p: function p(t, e) { + var r = e[0];if (1007 & r) { + var o;for (_i9 = t[0], o = 0; o < _i9.length; o += 1) { + var u = Or(t, _i9, o);_c26[o] ? (_c26[o].p(u, r), (0, a.Ui)(_c26[o], 1)) : (_c26[o] = kr(u), _c26[o].c(), (0, a.Ui)(_c26[o], 1), _c26[o].m(n, null)); + }for ((0, a.dvw)(), o = _i9.length; o < _c26.length; o += 1) { + s(o); + }(0, a.gbL)(), !_i9.length && l ? l.p(t, r) : _i9.length ? l && (l.d(1), l = null) : ((l = Cr()).c(), l.m(n, null)); + } + }, i: function i(t) { + if (!_o9) { + for (var n = 0; n < _i9.length; n += 1) { + (0, a.Ui)(_c26[n]); + }_o9 = !0; + } + }, o: function o(t) { + _c26 = _c26.filter(Boolean);for (var n = 0; n < _c26.length; n += 1) { + (0, a.etI)(_c26[n]); + }_o9 = !1; + }, d: function d(t) { + t && (0, a.ogt)(n), (0, a.RMB)(_c26, t), l && l.d(); + } }; + }function Mr(t, e, r) { + var o, + i = this && this.__awaiter || function (t, n, e, r) { + return new (e || (e = Promise))(function (o, i) { + function a(t) { + try { + u(r.next(t)); + } catch (t) { + i(t); + } + }function c(t) { + try { + u(r.throw(t)); + } catch (t) { + i(t); + } + }function u(t) { + var n;t.done ? o(t.value) : (n = t.value, n instanceof e ? n : new e(function (t) { + t(n); + })).then(a, c); + }u((r = r.apply(t, n || [])).next()); + }); + }, + c = Tr.getSingleton(Tr, "VConsoleStorageModel"), + u = Lr.updateTime;(0, a.FIv)(t, u, function (t) { + return r(10, o = t); + });var s = [], + l = -1, + f = "", + d = "", + v = function v() { + r(1, l = -1), r(2, f = ""), r(3, d = ""); + }, + p = function p(t) { + return i(void 0, void 0, void 0, pr().mark(function n() { + return pr().wrap(function (n) { + for (;;) { + switch (n.prev = n.next) {case 0: + return n.next = 2, c.removeItem(t);case 2:case "end": + return n.stop();} + } + }, n); + })); + }, + h = function h(t) { + return i(void 0, void 0, void 0, pr().mark(function n() { + return pr().wrap(function (n) { + for (;;) { + switch (n.prev = n.next) {case 0: + if (f === t) { + n.next = 3;break; + }return n.next = 3, c.removeItem(t);case 3: + c.setItem(f, d), v();case 5:case "end": + return n.stop();} + } + }, n); + })); + }, + g = function g(t, n, e) { + return i(void 0, void 0, void 0, pr().mark(function o() { + return pr().wrap(function (o) { + for (;;) { + switch (o.prev = o.next) {case 0: + r(2, f = t), r(3, d = n), r(1, l = e);case 3:case "end": + return o.stop();} + } + }, o); + })); + };return t.$$.update = function () { + 1024 & t.$$.dirty && o && i(void 0, void 0, void 0, pr().mark(function t() { + return pr().wrap(function (t) { + for (;;) { + switch (t.prev = t.next) {case 0: + return v(), t.t0 = r, t.next = 4, c.getEntries();case 4: + t.t1 = s = t.sent, (0, t.t0)(0, t.t1);case 6:case "end": + return t.stop();} + } + }, t); + })); + }, [s, l, f, d, u, function (t) { + return (0, n.id)(t, 1024); + }, p, h, g, function () { + v(); + }, o, function () { + f = this.value, r(2, f); + }, function () { + d = this.value, r(3, d); + }, function (t) { + return h(t); + }, function (t) { + return p(t); + }, function (t, n, e) { + return g(t, n, e); + }]; + }var $r = function (t) { + function n(n) { + var e;return e = t.call(this) || this, (0, a.S1n)((0, o.Z)(e), n, Mr, Pr, a.N8, {}), e; + }return (0, i.Z)(n, t), n; + }(a.f_C), + Sr = $r, + jr = function (t) { + function n(n, e, r) { + var o;return void 0 === r && (r = {}), (o = t.call(this, n, e, Sr, r) || this).model = Tr.getSingleton(Tr, "VConsoleStorageModel"), o.onAddTopBarCallback = void 0, o; + }(0, i.Z)(n, t);var e = n.prototype;return e.onReady = function () { + t.prototype.onReady.call(this), this.onUpdateOption(); + }, e.onShow = function () { + this.model.refresh(); + }, e.onAddTopBar = function (t) { + this.onAddTopBarCallback = t, this.updateTopBar(); + }, e.onAddTool = function (t) { + var n = this;t([{ name: "Add", global: !1, onClick: function onClick() { + n.model.setItem("new_" + Date.now(), "new_value"); + } }, { name: "Refresh", global: !1, onClick: function onClick() { + n.model.refresh(); + } }, { name: "Clear", global: !1, onClick: function onClick() { + n.model.clear(); + } }]); + }, e.onUpdateOption = function () { + var t, n;void 0 !== (null == (t = this.vConsole.option.storage) ? void 0 : t.defaultStorages) && (Lr.defaultStorages.set((null == (n = this.vConsole.option.storage) ? void 0 : n.defaultStorages) || []), this.updateTopBar()); + }, e.updateTopBar = function () { + var t = this;if ("function" == typeof this.onAddTopBarCallback) { + for (var n = (0, kn.U2)(Lr.defaultStorages), e = [], r = 0; r < n.length; r++) { + var o = n[r];e.push({ name: o[0].toUpperCase() + o.substring(1), data: { name: o }, actived: 0 === r, onClick: function onClick(n, e) { + var r = (0, kn.U2)(Lr.activedName);if (e.name === r) return !1;Lr.activedName.set(e.name), t.model.refresh(); + } }); + }this.onAddTopBarCallback(e); + } + }, n; + }(nt), + Br = function () { + function e(t) { + var o = this;if (this.version = "3.14.6", this.isInited = !1, this.option = {}, this.compInstance = void 0, this.pluginList = {}, this.log = void 0, this.system = void 0, this.network = void 0, e.instance && e.instance instanceof e) return console.debug("[vConsole] vConsole is already exists."), e.instance;if (e.instance = this, this.isInited = !1, this.option = { defaultPlugins: ["system", "network", "element", "storage"], log: {}, network: {}, storage: {} }, n.Kn(t)) for (var i in t) { + this.option[i] = t[i]; + }void 0 !== this.option.maxLogNumber && (this.option.log.maxLogNumber = this.option.maxLogNumber, console.debug("[vConsole] Deprecated option: `maxLogNumber`, use `log.maxLogNumber` instead.")), void 0 !== this.option.onClearLog && console.debug("[vConsole] Deprecated option: `onClearLog`."), void 0 !== this.option.maxNetworkNumber && (this.option.network.maxNetworkNumber = this.option.maxNetworkNumber, console.debug("[vConsole] Deprecated option: `maxNetworkNumber`, use `network.maxNetworkNumber` instead.")), this._addBuiltInPlugins();var a = function a() { + o.isInited || (o._initComponent(), o._autoRun()); + };if (void 0 !== document) "loading" === document.readyState ? r.bind(window, "DOMContentLoaded", a) : a();else { + var c;c = setTimeout(function t() { + document && "complete" == document.readyState ? (c && clearTimeout(c), a()) : c = setTimeout(t, 1); + }, 1); + } + }var o = e.prototype;return o._addBuiltInPlugins = function () { + this.addPlugin(new Dn("default", "Log"));var t = this.option.defaultPlugins, + e = { system: { proto: Rn, name: "System" } };if (e.network = { proto: Re, name: "Network" }, e.element = { proto: lr, name: "Element" }, e.storage = { proto: jr, name: "Storage" }, t && n.kJ(t)) for (var r = 0; r < t.length; r++) { + var o = e[t[r]];o ? this.addPlugin(new o.proto(t[r], o.name)) : console.debug("[vConsole] Unrecognized default plugin ID:", t[r]); + } + }, o._initComponent = function () { + var t = this;if (!r.one("#__vconsole")) { + var e, + o = 1 * n.cF("switch_x"), + i = 1 * n.cF("switch_y");"string" == typeof this.option.target ? e = document.querySelector(this.option.target) : this.option.target instanceof HTMLElement && (e = this.option.target), e instanceof HTMLElement || (e = document.documentElement), this.compInstance = new Q({ target: e, props: { switchButtonPosition: { x: o, y: i } } }), this.compInstance.$on("show", function (n) { + n.detail.show ? t.show() : t.hide(); + }), this.compInstance.$on("changePanel", function (n) { + var e = n.detail.pluginId;t.showPlugin(e); + }); + }this._updateComponentByOptions(); + }, o._updateComponentByOptions = function () { + if (this.compInstance) { + if (this.compInstance.theme !== this.option.theme) { + var t = this.option.theme;t = "light" !== t && "dark" !== t ? "" : t, this.compInstance.theme = t; + }this.compInstance.disableScrolling !== this.option.disableLogScrolling && (this.compInstance.disableScrolling = !!this.option.disableLogScrolling); + } + }, o.setSwitchPosition = function (t, n) { + this.compInstance.switchButtonPosition = { x: t, y: n }; + }, o._autoRun = function () { + for (var t in this.isInited = !0, this.pluginList) { + this._initPlugin(this.pluginList[t]); + }this._showFirstPluginWhenEmpty(), this.triggerEvent("ready"); + }, o._showFirstPluginWhenEmpty = function () { + var t = Object.keys(this.pluginList);"" === this.compInstance.activedPluginId && t.length > 0 && this.showPlugin(t[0]); + }, o.triggerEvent = function (t, e) { + var r = this;t = "on" + t.charAt(0).toUpperCase() + t.slice(1), n.mf(this.option[t]) && setTimeout(function () { + r.option[t].apply(r, e); + }, 0); + }, o._initPlugin = function (t) { + var e = this;t.vConsole = this, this.compInstance.pluginList[t.id] = { id: t.id, name: t.name, hasTabPanel: !1, topbarList: [], toolbarList: [] }, this.compInstance.pluginList = this._reorderPluginList(this.compInstance.pluginList), t.trigger("init"), t.trigger("renderTab", function (r) { + e.compInstance.pluginList[t.id].hasTabPanel = !0, r && (n.HD(r) ? e.compInstance.divContentInner.innerHTML += r : n.mf(r.appendTo) ? r.appendTo(e.compInstance.divContentInner) : n.kK(r) && e.compInstance.divContentInner.insertAdjacentElement("beforeend", r)), e.compInstance.pluginList = e.compInstance.pluginList; + }), t.trigger("addTopBar", function (n) { + if (n) { + for (var r = [], o = 0; o < n.length; o++) { + var i = n[o];r.push({ name: i.name || "Undefined", className: i.className || "", actived: !!i.actived, data: i.data, onClick: i.onClick }); + }e.compInstance.pluginList[t.id].topbarList = r, e.compInstance.pluginList = e.compInstance.pluginList; + } + }), t.trigger("addTool", function (n) { + if (n) { + for (var r = [], o = 0; o < n.length; o++) { + var i = n[o];r.push({ name: i.name || "Undefined", global: !!i.global, data: i.data, onClick: i.onClick }); + }e.compInstance.pluginList[t.id].toolbarList = r, e.compInstance.pluginList = e.compInstance.pluginList; + } + }), t.isReady = !0, t.trigger("ready"); + }, o._triggerPluginsEvent = function (t) { + for (var n in this.pluginList) { + this.pluginList[n].isReady && this.pluginList[n].trigger(t); + } + }, o._triggerPluginEvent = function (t, n) { + var e = this.pluginList[t];e && e.isReady && e.trigger(n); + }, o._reorderPluginList = function (t) { + var e = this;if (!n.kJ(this.option.pluginOrder)) return t;for (var r = Object.keys(t).sort(function (t, n) { + var r = e.option.pluginOrder.indexOf(t), + o = e.option.pluginOrder.indexOf(n);return r === o ? 0 : -1 === r ? 1 : -1 === o ? -1 : r - o; + }), o = {}, i = 0; i < r.length; i++) { + o[r[i]] = t[r[i]]; + }return o; + }, o.addPlugin = function (t) { + return void 0 !== this.pluginList[t.id] ? (console.debug("[vConsole] Plugin `" + t.id + "` has already been added."), !1) : (this.pluginList[t.id] = t, this.isInited && (this._initPlugin(t), this._showFirstPluginWhenEmpty()), !0); + }, o.removePlugin = function (t) { + t = (t + "").toLowerCase();var n = this.pluginList[t];if (void 0 === n) return console.debug("[vConsole] Plugin `" + t + "` does not exist."), !1;n.trigger("remove");try { + delete this.pluginList[t], delete this.compInstance.pluginList[t]; + } catch (n) { + this.pluginList[t] = void 0, this.compInstance.pluginList[t] = void 0; + }return this.compInstance.pluginList = this.compInstance.pluginList, this.compInstance.activedPluginId == t && (this.compInstance.activedPluginId = "", this._showFirstPluginWhenEmpty()), !0; + }, o.show = function () { + this.isInited && (this.compInstance.show = !0, this._triggerPluginsEvent("showConsole")); + }, o.hide = function () { + this.isInited && (this.compInstance.show = !1, this._triggerPluginsEvent("hideConsole")); + }, o.showSwitch = function () { + this.isInited && (this.compInstance.showSwitchButton = !0); + }, o.hideSwitch = function () { + this.isInited && (this.compInstance.showSwitchButton = !1); + }, o.showPlugin = function (t) { + this.isInited && (this.pluginList[t] || console.debug("[vConsole] Plugin `" + t + "` does not exist."), this.compInstance.activedPluginId && this._triggerPluginEvent(this.compInstance.activedPluginId, "hide"), this.compInstance.activedPluginId = t, this._triggerPluginEvent(this.compInstance.activedPluginId, "show")); + }, o.setOption = function (t, e) { + if ("string" == typeof t) { + for (var r = t.split("."), o = this.option, i = 0; i < r.length - 1; i++) { + void 0 === o[r[i]] && (o[r[i]] = {}), o = o[r[i]]; + }o[r[r.length - 1]] = e, this._triggerPluginsEvent("updateOption"), this._updateComponentByOptions(); + } else if (n.Kn(t)) { + for (var a in t) { + this.option[a] = t[a]; + }this._triggerPluginsEvent("updateOption"), this._updateComponentByOptions(); + } else console.debug("[vConsole] The first parameter of `vConsole.setOption()` must be a string or an object."); + }, o.destroy = function () { + if (this.isInited) { + this.isInited = !1, e.instance = void 0;for (var t = Object.keys(this.pluginList), n = t.length - 1; n >= 0; n--) { + this.removePlugin(t[n]); + }this.compInstance.$destroy(); + } + }, (0, t.Z)(e, null, [{ key: "instance", get: function get() { + return window.__VCONSOLE_INSTANCE; + }, set: function set(t) { + void 0 === t || t instanceof e ? window.__VCONSOLE_INSTANCE = t : console.debug("[vConsole] Cannot set `VConsole.instance` because the value is not the instance of VConsole."); + } }]), e; + }();Br.VConsolePlugin = void 0, Br.VConsoleLogPlugin = void 0, Br.VConsoleDefaultPlugin = void 0, Br.VConsoleSystemPlugin = void 0, Br.VConsoleNetworkPlugin = void 0, Br.VConsoleElementPlugin = void 0, Br.VConsoleStoragePlugin = void 0, Br.VConsolePlugin = tt, Br.VConsoleLogPlugin = In, Br.VConsoleDefaultPlugin = Dn, Br.VConsoleSystemPlugin = Rn, Br.VConsoleNetworkPlugin = Re, Br.VConsoleElementPlugin = lr, Br.VConsoleStoragePlugin = jr;var Ar = Br; + }(), __webpack_exports__ = __webpack_exports__.default, __webpack_exports__; + }(); +}); +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("mFPK"), __webpack_require__("y5YM")(module))) + +/***/ }), + +/***/ "NHQf": +/***/ (function(module, exports, __webpack_require__) { + +exports = module.exports = __webpack_require__("BkJT")(undefined); +// imports + + +// module +exports.push([module.i, "@font-face{font-family:iconfont;src:url(" + __webpack_require__("2Ml6") + ");src:url(" + __webpack_require__("2Ml6") + "?#iefix) format(\"embedded-opentype\"),url(\"data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAM0AAsAAAAABwAAAALlAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCCcAqCCIIEATYCJAMICwYABCAFhG0HMRsrBsgOJQlBwgDgAQVABA/3o+b92qr05kxcStsLoGsu8cMTaZDm4/1fnfZtF5UyqJ0B2ClNiIqcsPIUFRCOYCTcblgBaKbtpntZOJx2PcA7oFzuPxhg/DXA/7BPViCBecPYTQQO4TyBct1SSOtqUyv4yIBpgbgyG4fAJ6eQtaSHUqGoWZt9kPbBU2nyTH6EN/z78c98+JDIUyBr67LWABU/b8MoZd49r5cigDnfZZAjxSSQEXu1hg2KDExSlAcBD/1gX+nBz9tuN2Xs9o9HEAWQWgk6VcY9MTHrVosSkLn3/j3gflQUeWtrJXjmU9R+Evk9D2tFD55hjwvPc0M/vkz0vPhmfP4KCnl+Lcbz3HWd7kVkh3/bCT7vKtg+v2p9/brt7duON286Ea9d0LLUihgjOr4yf7V5/+sL1xoIutzWdSbgX8CZjq5Lf/8EnUj88zeM7xV4IrBsGbKLsLehYY3PlBPKZtgt1dbe9aG94x63Qs+G5Z0QaXFJJvLw0tKwBKnUJg/LJM3eUaHvQqqVVFWhgopTpdorph9WP0uK76+uDkju6lMB8HCQR6bsf//Gs/83fg4Elvwv1WXgx63mRM7qZwKld2UM/m5Fng/IW2w2CCQZWioDiT2ed11WrhwPoFnqfRkraXoVXSjNMS1IlOiCVKlBZIadhFyFRSiUWoJyE/SbKzTgFJGVYdyKAqHWbUhU+wSpWo+RGfYz5Jr9gkJtKFDuIEL3rDAcZlTN6ZCgBjw8gc2EOTSkFkikN1PjiG2IZ9kc3065y+zGmdOzxbCeOiifY4Fr1JglhIY1zuxYVS6jNhvDTs4slIg0kxDOovSZy7o3pRFmB2QNRw0RKANs2ATMjGAcNNpcQKXPN6OMRtgM4S11A8p2FOdiHhzLlCajB1IvcPSqu5drXEYZZREEDabhGDtMVXSUDQYYzFk/yoIihDSmET6nIulaI62vIG19kf3rtkA5IE0CDk2V3JmJGOEUAAAAAA==\") format(\"woff2\"),url(" + __webpack_require__("sHTV") + ") format(\"woff\"),url(" + __webpack_require__("+8RM") + ") format(\"truetype\"),url(" + __webpack_require__("N85c") + "#iconfont) format(\"svg\")}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-picture:before{content:\"\\E6AF\"}#loading-load{position:absolute;top:50%;margin-top:-4px;left:50%;margin-left:-4px;font-size:6px;width:8px;height:8px;border-radius:50%;text-indent:-9999em;-webkit-animation:loading-load 1.1s infinite ease;animation:loading-load 1.1s infinite ease}@keyframes loading-load{0%,to{box-shadow:0 -2.6em 0 0 #fff,1.8em -1.8em 0 0 hsla(0,0%,100%,.2),2.5em 0 0 0 hsla(0,0%,100%,.2),1.75em 1.75em 0 0 hsla(0,0%,100%,.2),0 2.5em 0 0 hsla(0,0%,100%,.2),-1.8em 1.8em 0 0 hsla(0,0%,100%,.2),-2.6em 0 0 0 hsla(0,0%,100%,.5),-1.8em -1.8em 0 0 hsla(0,0%,100%,.7)}12.5%{box-shadow:0 -2.6em 0 0 hsla(0,0%,100%,.7),1.8em -1.8em 0 0 #fff,2.5em 0 0 0 hsla(0,0%,100%,.2),1.75em 1.75em 0 0 hsla(0,0%,100%,.2),0 2.5em 0 0 hsla(0,0%,100%,.2),-1.8em 1.8em 0 0 hsla(0,0%,100%,.2),-2.6em 0 0 0 hsla(0,0%,100%,.2),-1.8em -1.8em 0 0 hsla(0,0%,100%,.5)}25%{box-shadow:0 -2.6em 0 0 hsla(0,0%,100%,.5),1.8em -1.8em 0 0 hsla(0,0%,100%,.7),2.5em 0 0 0 hsla(0,0%,100%,.5),1.75em 1.75em 0 0 hsla(0,0%,100%,.2),0 2.5em 0 0 hsla(0,0%,100%,.2),-1.8em 1.8em 0 0 hsla(0,0%,100%,.2),-2.6em 0 0 0 hsla(0,0%,100%,.2),-1.8em -1.8em 0 0 hsla(0,0%,100%,.2)}37.5%{box-shadow:0 -2.6em 0 0 hsla(0,0%,100%,.2),1.8em -1.8em 0 0 hsla(0,0%,100%,.5),2.5em 0 0 0 hsla(0,0%,100%,.7),1.75em 1.75em 0 0 rgba(255,v,255,.2),0 2.5em 0 0 hsla(0,0%,100%,.2),-1.8em 1.8em 0 0 hsla(0,0%,100%,.2),-2.6em 0 0 0 hsla(0,0%,100%,.2),-1.8em -1.8em 0 0 hsla(0,0%,100%,.2)}50%{box-shadow:0 -2.6em 0 0 rgba(255,v,255,.2),1.8em -1.8em 0 0 hsla(0,0%,100%,.2),2.5em 0 0 0 hsla(0,0%,100%,.5),1.75em 1.75em 0 0 hsla(0,0%,100%,.7),0 2.5em 0 0 #fff,-1.8em 1.8em 0 0 hsla(0,0%,100%,.2),-2.6em 0 0 0 hsla(0,0%,100%,.2),-1.8em -1.8em 0 0 hsla(0,0%,100%,.2)}62.5%{box-shadow:0 -2.6em 0 0 hsla(0,0%,100%,.2),1.8em -1.8em 0 0 hsla(0,0%,100%,.2),2.5em 0 0 0 hsla(0,0%,100%,.2),1.75em 1.75em 0 0 hsla(0,0%,100%,.5),0 2.5em 0 0 hsla(0,0%,100%,.7),-1.8em 1.8em 0 0 #fff,-2.6em 0 0 0 hsla(0,0%,100%,.2),-1.8em -1.8em 0 0 hsla(0,0%,100%,.2)}75%{box-shadow:0 -2.6em 0 0 hsla(0,0%,100%,.2),1.8em -1.8em 0 0 hsla(0,0%,100%,.2),2.5em 0 0 0 hsla(0,0%,100%,.2),1.75em 1.75em 0 0 hsla(0,0%,100%,.2),0 2.5em 0 0 hsla(0,0%,100%,.5),-1.8em 1.8em 0 0 hsla(0,0%,100%,.7),-2.6em 0 0 0 #fff,-1.8em -1.8em 0 0 hsla(0,0%,100%,.2)}87.5%{box-shadow:0 -2.6em 0 0 hsla(0,0%,100%,.2),1.8em -1.8em 0 0 hsla(0,0%,100%,.2),2.5em 0 0 0 hsla(0,0%,100%,.2),1.75em 1.75em 0 0 hsla(0,0%,100%,.2),0 2.5em 0 0 hsla(0,0%,100%,.2),-1.8em 1.8em 0 0 hsla(0,0%,100%,.5),-2.6em 0 0 0 hsla(0,0%,100%,.7),-1.8em -1.8em 0 0 #fff}}@keyframes load{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}", ""]); + +// exports + + +/***/ }), + +/***/ "NIaN": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const inherits = __webpack_require__("mwrz"); + +const DEREncoder = __webpack_require__("bzP+"); + +function PEMEncoder(entity) { + DEREncoder.call(this, entity); + this.enc = 'pem'; +} +inherits(PEMEncoder, DEREncoder); +module.exports = PEMEncoder; + +PEMEncoder.prototype.encode = function encode(data, options) { + const buf = DEREncoder.prototype.encode.call(this, data); + + const p = buf.toString('base64'); + const out = [ '-----BEGIN ' + options.label + '-----' ]; + for (let i = 0; i < p.length; i += 64) + out.push(p.slice(i, i + 64)); + out.push('-----END ' + options.label + '-----'); + return out.join('\n'); +}; + + +/***/ }), + +/***/ "NfRg": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) {/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh <http://feross.org> + * @license MIT + */ +/* eslint-disable no-proto */ + + + +var base64 = __webpack_require__("zGdw") +var ieee754 = __webpack_require__("YlXM") +var isArray = __webpack_require__("5RIO") + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined + ? global.TYPED_ARRAY_SUPPORT + : typedArraySupport() + +/* + * Export kMaxLength after typed array support is determined. + */ +exports.kMaxLength = kMaxLength() + +function typedArraySupport () { + try { + var arr = new Uint8Array(1) + arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} + return arr.foo() === 42 && // typed array instances can be augmented + typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` + arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` + } catch (e) { + return false + } +} + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = new Uint8Array(length) + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer(length) + } + that.length = length + } + + return that +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length) + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192 // not used by this implementation + +// TODO: Legacy, not needed anymore. Remove in next major version. +Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype + return arr +} + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +} + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype + Buffer.__proto__ = Uint8Array + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) { + // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true + }) + } +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +} + +function allocUnsafe (that, size) { + assertSize(size) + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0 + } + } + return that +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +} + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0 + that = createBuffer(that, length) + + var actual = that.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual) + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + that = createBuffer(that, length) + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array) + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset) + } else { + array = new Uint8Array(array, byteOffset, length) + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = array + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array) + } + return that +} + +function fromObject (that, obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + that = createBuffer(that, len) + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len) + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + // Note: cannot use `length < kMaxLength()` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string + } + + var len = string.length + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect +// Buffer instances. +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length | 0 + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') + if (this.length > max) str += ' ... ' + } + return '<Buffer ' + str + '>' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!Buffer.isBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + // must be an even number of digits + var strLen = string.length + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (isNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0 + if (isFinite(length)) { + length = length | 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end) + newBuf.__proto__ = Buffer.prototype + } else { + var sliceLen = end - start + newBuf = new Buffer(sliceLen, undefined) + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start] + } + } + + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + this[offset] = (value & 0xff) + return offset + 1 +} + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + var i + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if (code < 256) { + val = code + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : utf8ToBytes(new Buffer(val, encoding).toString()) + var len = bytes.length + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("mFPK"))) + +/***/ }), + +/***/ "Nobj": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var require;var require;var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +(function (f) { + if (( false ? "undefined" : _typeof(exports)) === "object" && typeof module !== "undefined") { + module.exports = f(); + } else if (true) { + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), + __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? + (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else { + var g;if (typeof window !== "undefined") { + g = window; + } else if (typeof global !== "undefined") { + g = global; + } else if (typeof self !== "undefined") { + g = self; + } else { + g = this; + }g.EBML = f(); + } +})(function () { + var define, module, exports;return function () { + function r(e, n, t) { + function o(i, f) { + if (!n[i]) { + if (!e[i]) { + var c = "function" == typeof require && require;if (!f && c) return require(i, !0);if (u) return u(i, !0);var a = new Error("Cannot find module '" + i + "'");throw a.code = "MODULE_NOT_FOUND", a; + }var p = n[i] = { exports: {} };e[i][0].call(p.exports, function (r) { + var n = e[i][1][r];return o(n || r); + }, p, p.exports, r, e, n, t); + }return n[i].exports; + }for (var u = "function" == typeof require && require, i = 0; i < t.length; i++) { + o(t[i]); + }return o; + }return r; + }()({ 1: [function (require, module, exports) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { value: true }); + var tools_1 = require("./tools"); + var int64_buffer_1 = require("int64-buffer"); + var tools = require("./tools"); + var schema = require("matroska/lib/schema"); + var byEbmlID = schema.byEbmlID; + // https://www.matroska.org/technical/specs/index.html + var State; + (function (State) { + State[State["STATE_TAG"] = 1] = "STATE_TAG"; + State[State["STATE_SIZE"] = 2] = "STATE_SIZE"; + State[State["STATE_CONTENT"] = 3] = "STATE_CONTENT"; + })(State || (State = {})); + var EBMLDecoder = /** @class */function () { + function EBMLDecoder() { + this._buffer = new tools_1.Buffer(0); + this._tag_stack = []; + this._state = State.STATE_TAG; + this._cursor = 0; + this._total = 0; + this._schema = byEbmlID; + this._result = []; + } + EBMLDecoder.prototype.decode = function (chunk) { + this.readChunk(chunk); + var diff = this._result; + this._result = []; + return diff; + }; + EBMLDecoder.prototype.readChunk = function (chunk) { + // 読みかけの(読めなかった) this._buffer と 新しい chunk を合わせて読み直す + this._buffer = tools.concat([this._buffer, new tools_1.Buffer(chunk)]); + while (this._cursor < this._buffer.length) { + // console.log(this._cursor, this._total, this._tag_stack); + if (this._state === State.STATE_TAG && !this.readTag()) { + break; + } + if (this._state === State.STATE_SIZE && !this.readSize()) { + break; + } + if (this._state === State.STATE_CONTENT && !this.readContent()) { + break; + } + } + }; + EBMLDecoder.prototype.getSchemaInfo = function (tagNum) { + return this._schema[tagNum] || { + name: "unknown", + level: -1, + type: "unknown", + description: "unknown" + }; + }; + /** + * vint された parsing tag + * @return - return false when waiting for more data + */ + EBMLDecoder.prototype.readTag = function () { + // tag.length が buffer の外にある + if (this._cursor >= this._buffer.length) { + return false; + } + // read ebml id vint without first byte + var tag = tools_1.readVint(this._buffer, this._cursor); + // tag が読めなかった + if (tag == null) { + return false; + } + // >>>>>>>>> + // tag 識別子 + //const tagStr = this._buffer.toString("hex", this._cursor, this._cursor + tag.length); + //const tagNum = parseInt(tagStr, 16); + // 上と等価 + var buf = this._buffer.slice(this._cursor, this._cursor + tag.length); + var tagNum = buf.reduce(function (o, v, i, arr) { + return o + v * Math.pow(16, 2 * (arr.length - 1 - i)); + }, 0); + var schema = this.getSchemaInfo(tagNum); + var tagObj = { + EBML_ID: tagNum.toString(16), + schema: schema, + type: schema.type, + name: schema.name, + level: schema.level, + tagStart: this._total, + tagEnd: this._total + tag.length, + sizeStart: this._total + tag.length, + sizeEnd: null, + dataStart: null, + dataEnd: null, + dataSize: null, + data: null + }; + // | tag: vint | size: vint | data: Buffer(size) | + this._tag_stack.push(tagObj); + // <<<<<<<< + // ポインタを進める + this._cursor += tag.length; + this._total += tag.length; + // 読み込み状態変更 + this._state = State.STATE_SIZE; + return true; + }; + /** + * vint された現在のタグの内容の大きさを読み込む + * @return - return false when waiting for more data + */ + EBMLDecoder.prototype.readSize = function () { + // tag.length が buffer の外にある + if (this._cursor >= this._buffer.length) { + return false; + } + // read ebml datasize vint without first byte + var size = tools_1.readVint(this._buffer, this._cursor); + // まだ読めない + if (size == null) { + return false; + } + // >>>>>>>>> + // current tag の data size 決定 + var tagObj = this._tag_stack[this._tag_stack.length - 1]; + tagObj.sizeEnd = tagObj.sizeStart + size.length; + tagObj.dataStart = tagObj.sizeEnd; + tagObj.dataSize = size.value; + if (size.value === -1) { + // unknown size + tagObj.dataEnd = -1; + if (tagObj.type === "m") { + tagObj.unknownSize = true; + } + } else { + tagObj.dataEnd = tagObj.sizeEnd + size.value; + } + // <<<<<<<< + // ポインタを進める + this._cursor += size.length; + this._total += size.length; + this._state = State.STATE_CONTENT; + return true; + }; + /** + * データ読み込み + */ + EBMLDecoder.prototype.readContent = function () { + var tagObj = this._tag_stack[this._tag_stack.length - 1]; + // master element は子要素を持つので生データはない + if (tagObj.type === 'm') { + // console.log('content should be tags'); + tagObj.isEnd = false; + this._result.push(tagObj); + this._state = State.STATE_TAG; + // この Mastert Element は空要素か + if (tagObj.dataSize === 0) { + // 即座に終了タグを追加 + var elm = Object.assign({}, tagObj, { isEnd: true }); + this._result.push(elm); + this._tag_stack.pop(); // スタックからこのタグを捨てる + } + return true; + } + // waiting for more data + if (this._buffer.length < this._cursor + tagObj.dataSize) { + return false; + } + // タグの中身の生データ + var data = this._buffer.slice(this._cursor, this._cursor + tagObj.dataSize); + // 読み終わったバッファを捨てて読み込んでいる部分のバッファのみ残す + this._buffer = this._buffer.slice(this._cursor + tagObj.dataSize); + tagObj.data = data; + // >>>>>>>>> + switch (tagObj.type) { + //case "m": break; + // Master-Element - contains other EBML sub-elements of the next lower level + case "u": + tagObj.value = data.readUIntBE(0, data.length); + break; + // Unsigned Integer - Big-endian, any size from 1 to 8 octets + case "i": + tagObj.value = data.readIntBE(0, data.length); + break; + // Signed Integer - Big-endian, any size from 1 to 8 octets + case "f": + tagObj.value = tagObj.dataSize === 4 ? data.readFloatBE(0) : tagObj.dataSize === 8 ? data.readDoubleBE(0) : (console.warn("cannot read " + tagObj.dataSize + " octets float. failback to 0"), 0); + break; + // Float - Big-endian, defined for 4 and 8 octets (32, 64 bits) + case "s": + tagObj.value = data.toString("ascii"); + break; // ascii + // Printable ASCII (0x20 to 0x7E), zero-padded when needed + case "8": + tagObj.value = data.toString("utf8"); + break; + // Unicode string, zero padded when needed (RFC 2279) + case "b": + tagObj.value = data; + break; + // Binary - not interpreted by the parser + case "d": + tagObj.value = tools_1.convertEBMLDateToJSDate(new int64_buffer_1.Int64BE(data).toNumber()); + break; + // nano second; Date.UTC(2001,1,1,0,0,0,0) === 980985600000 + // Date - signed 8 octets integer in nanoseconds with 0 indicating + // the precise beginning of the millennium (at 2001-01-01T00:00:00,000000000 UTC) + } + if (tagObj.value === null) { + throw new Error("unknown tag type:" + tagObj.type); + } + this._result.push(tagObj); + // <<<<<<<< + // ポインタを進める + this._total += tagObj.dataSize; + // タグ待ちモードに変更 + this._state = State.STATE_TAG; + this._cursor = 0; + this._tag_stack.pop(); // remove the object from the stack + while (this._tag_stack.length > 0) { + var topEle = this._tag_stack[this._tag_stack.length - 1]; + // 親が不定長サイズなので閉じタグは期待できない + if (topEle.dataEnd < 0) { + this._tag_stack.pop(); // 親タグを捨てる + return true; + } + // 閉じタグの来るべき場所まで来たかどうか + if (this._total < topEle.dataEnd) { + break; + } + // 閉じタグを挿入すべきタイミングが来た + if (topEle.type !== "m") { + throw new Error("parent element is not master element"); + } + var elm = Object.assign({}, topEle, { isEnd: true }); + this._result.push(elm); + this._tag_stack.pop(); + } + return true; + }; + return EBMLDecoder; + }(); + exports.default = EBMLDecoder; + }, { "./tools": 5, "int64-buffer": 15, "matroska/lib/schema": 17 }], 2: [function (require, module, exports) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { value: true }); + var tools = require("./tools"); + var tools_1 = require("./tools"); + var schema = require("matroska/lib/schema"); + var byEbmlID = schema.byEbmlID; + var EBMLEncoder = /** @class */function () { + function EBMLEncoder() { + this._schema = byEbmlID; + this._buffers = []; + this._stack = []; + } + EBMLEncoder.prototype.encode = function (elms) { + var _this = this; + return tools.concat(elms.reduce(function (lst, elm) { + return lst.concat(_this.encodeChunk(elm)); + }, [])).buffer; + }; + EBMLEncoder.prototype.encodeChunk = function (elm) { + if (elm.type === "m") { + if (!elm.isEnd) { + this.startTag(elm); + } else { + this.endTag(elm); + } + } else { + this.writeTag(elm); + } + return this.flush(); + }; + EBMLEncoder.prototype.flush = function () { + var ret = this._buffers; + this._buffers = []; + return ret; + }; + EBMLEncoder.prototype.getSchemaInfo = function (tagName) { + var tagNums = Object.keys(this._schema).map(Number); + for (var i = 0; i < tagNums.length; i++) { + var tagNum = tagNums[i]; + if (this._schema[tagNum].name === tagName) { + return new tools_1.Buffer(tagNum.toString(16), 'hex'); + } + } + return null; + }; + EBMLEncoder.prototype.writeTag = function (elm) { + var tagName = elm.name; + var tagId = this.getSchemaInfo(tagName); + var tagData = elm.data; + if (tagId == null) { + throw new Error('No schema entry found for ' + tagName); + } + var data = tools.encodeTag(tagId, tagData); + /** + * 親要素が閉じタグあり(isEnd)なら閉じタグが来るまで待つ(children queに入る) + */ + if (this._stack.length > 0) { + var last = this._stack[this._stack.length - 1]; + last.children.push({ + tagId: tagId, + elm: elm, + children: [], + data: data + }); + return; + } + this._buffers = this._buffers.concat(data); + return; + }; + EBMLEncoder.prototype.startTag = function (elm) { + var tagName = elm.name; + var tagId = this.getSchemaInfo(tagName); + if (tagId == null) { + throw new Error('No schema entry found for ' + tagName); + } + /** + * 閉じタグ不定長の場合はスタックに積まずに即時バッファに書き込む + */ + if (elm.unknownSize) { + var data = tools.encodeTag(tagId, new tools_1.Buffer(0), elm.unknownSize); + this._buffers = this._buffers.concat(data); + return; + } + var tag = { + tagId: tagId, + elm: elm, + children: [], + data: null + }; + if (this._stack.length > 0) { + this._stack[this._stack.length - 1].children.push(tag); + } + this._stack.push(tag); + }; + EBMLEncoder.prototype.endTag = function (elm) { + var tagName = elm.name; + var tag = this._stack.pop(); + if (tag == null) { + throw new Error("EBML structure is broken"); + } + if (tag.elm.name !== elm.name) { + throw new Error("EBML structure is broken"); + } + var childTagDataBuffers = tag.children.reduce(function (lst, child) { + if (child.data === null) { + throw new Error("EBML structure is broken"); + } + return lst.concat(child.data); + }, []); + var childTagDataBuffer = tools.concat(childTagDataBuffers); + if (tag.elm.type === "m") { + tag.data = tools.encodeTag(tag.tagId, childTagDataBuffer, tag.elm.unknownSize); + } else { + tag.data = tools.encodeTag(tag.tagId, childTagDataBuffer); + } + if (this._stack.length < 1) { + this._buffers = this._buffers.concat(tag.data); + } + }; + return EBMLEncoder; + }(); + exports.default = EBMLEncoder; + }, { "./tools": 5, "matroska/lib/schema": 17 }], 3: [function (require, module, exports) { + "use strict"; + + var __extends = this && this.__extends || function () { + var extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) { + if (b.hasOwnProperty(p)) d[p] = b[p]; + } + }; + return function (d, b) { + extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + }(); + Object.defineProperty(exports, "__esModule", { value: true }); + var events_1 = require("events"); + var tools = require("./tools"); + /** + * This is an informal code for reference. + * EBMLReader is a class for getting information to enable seeking Webm recorded by MediaRecorder. + * So please do not use for regular WebM files. + */ + var EBMLReader = /** @class */function (_super) { + __extends(EBMLReader, _super); + function EBMLReader() { + var _this = _super.call(this) || this; + _this.logGroup = ""; + _this.hasLoggingStarted = false; + _this.metadataloaded = false; + _this.chunks = []; + _this.stack = []; + _this.segmentOffset = 0; + _this.last2SimpleBlockVideoTrackTimecode = [0, 0]; + _this.last2SimpleBlockAudioTrackTimecode = [0, 0]; + _this.lastClusterTimecode = 0; + _this.lastClusterPosition = 0; + _this.timecodeScale = 1000000; // webm default TimecodeScale is 1ms + _this.metadataSize = 0; + _this.metadatas = []; + _this.cues = []; + _this.firstVideoBlockRead = false; + _this.firstAudioBlockRead = false; + _this.currentTrack = { TrackNumber: -1, TrackType: -1, DefaultDuration: null, CodecDelay: null }; + _this.trackTypes = []; + _this.trackDefaultDuration = []; + _this.trackCodecDelay = []; + _this.trackInfo = { type: "nothing" }; + _this.ended = false; + _this.logging = false; + _this.use_duration_every_simpleblock = false; + _this.use_webp = false; + _this.use_segment_info = true; + _this.drop_default_duration = true; + return _this; + } + /** + * emit final state. + */ + EBMLReader.prototype.stop = function () { + this.ended = true; + this.emit_segment_info(); + // clean up any unclosed Master Elements at the end of the stream. + while (this.stack.length) { + this.stack.pop(); + if (this.logging) { + console.groupEnd(); + } + } + // close main group if set, logging is enabled, and has actually logged anything. + if (this.logging && this.hasLoggingStarted && this.logGroup) { + console.groupEnd(); + } + }; + /** + * emit chunk info + */ + EBMLReader.prototype.emit_segment_info = function () { + var data = this.chunks; + this.chunks = []; + if (!this.metadataloaded) { + this.metadataloaded = true; + this.metadatas = data; + var videoTrackNum = this.trackTypes.indexOf(1); // find first video track + var audioTrackNum = this.trackTypes.indexOf(2); // find first audio track + this.trackInfo = videoTrackNum >= 0 && audioTrackNum >= 0 ? { type: "both", trackNumber: videoTrackNum } : videoTrackNum >= 0 ? { type: "video", trackNumber: videoTrackNum } : audioTrackNum >= 0 ? { type: "audio", trackNumber: audioTrackNum } : { type: "nothing" }; + if (!this.use_segment_info) { + return; + } + this.emit("metadata", { data: data, metadataSize: this.metadataSize }); + } else { + if (!this.use_segment_info) { + return; + } + var timecode = this.lastClusterTimecode; + var duration = this.duration; + var timecodeScale = this.timecodeScale; + this.emit("cluster", { timecode: timecode, data: data }); + this.emit("duration", { timecodeScale: timecodeScale, duration: duration }); + } + }; + EBMLReader.prototype.read = function (elm) { + var _this = this; + var drop = false; + if (this.ended) { + // reader is finished + return; + } + if (elm.type === "m") { + // 閉じタグの自動挿入 + if (elm.isEnd) { + this.stack.pop(); + } else { + var parent_1 = this.stack[this.stack.length - 1]; + if (parent_1 != null && parent_1.level >= elm.level) { + // 閉じタグなしでレベルが下がったら閉じタグを挿入 + this.stack.pop(); + // From http://w3c.github.io/media-source/webm-byte-stream-format.html#webm-media-segments + // This fixes logging for webm streams with Cluster of unknown length and no Cluster closing elements. + if (this.logging) { + console.groupEnd(); + } + parent_1.dataEnd = elm.dataEnd; + parent_1.dataSize = elm.dataEnd - parent_1.dataStart; + parent_1.unknownSize = false; + var o = Object.assign({}, parent_1, { name: parent_1.name, type: parent_1.type, isEnd: true }); + this.chunks.push(o); + } + this.stack.push(elm); + } + } + if (elm.type === "m" && elm.name == "Segment") { + if (this.segmentOffset != 0) { + console.warn("Multiple segments detected!"); + } + this.segmentOffset = elm.dataStart; + this.emit("segment_offset", this.segmentOffset); + } else if (elm.type === "b" && elm.name === "SimpleBlock") { + var _a = tools.ebmlBlock(elm.data), + timecode = _a.timecode, + trackNumber = _a.trackNumber, + frames_1 = _a.frames; + if (this.trackTypes[trackNumber] === 1) { + // trackType === 1 => video track + if (!this.firstVideoBlockRead) { + this.firstVideoBlockRead = true; + if (this.trackInfo.type === "both" || this.trackInfo.type === "video") { + var CueTime = this.lastClusterTimecode + timecode; + this.cues.push({ CueTrack: trackNumber, CueClusterPosition: this.lastClusterPosition, CueTime: CueTime }); + this.emit("cue_info", { CueTrack: trackNumber, CueClusterPosition: this.lastClusterPosition, CueTime: this.lastClusterTimecode }); + this.emit("cue", { CueTrack: trackNumber, CueClusterPosition: this.lastClusterPosition, CueTime: CueTime }); + } + } + this.last2SimpleBlockVideoTrackTimecode = [this.last2SimpleBlockVideoTrackTimecode[1], timecode]; + } else if (this.trackTypes[trackNumber] === 2) { + // trackType === 2 => audio track + if (!this.firstAudioBlockRead) { + this.firstAudioBlockRead = true; + if (this.trackInfo.type === "audio") { + var CueTime = this.lastClusterTimecode + timecode; + this.cues.push({ CueTrack: trackNumber, CueClusterPosition: this.lastClusterPosition, CueTime: CueTime }); + this.emit("cue_info", { CueTrack: trackNumber, CueClusterPosition: this.lastClusterPosition, CueTime: this.lastClusterTimecode }); + this.emit("cue", { CueTrack: trackNumber, CueClusterPosition: this.lastClusterPosition, CueTime: CueTime }); + } + } + this.last2SimpleBlockAudioTrackTimecode = [this.last2SimpleBlockAudioTrackTimecode[1], timecode]; + } + if (this.use_duration_every_simpleblock) { + this.emit("duration", { timecodeScale: this.timecodeScale, duration: this.duration }); + } + if (this.use_webp) { + frames_1.forEach(function (frame) { + var startcode = frame.slice(3, 6).toString("hex"); + if (startcode !== "9d012a") { + return; + } + ; // VP8 の場合 + var webpBuf = tools.VP8BitStreamToRiffWebPBuffer(frame); + var webp = new Blob([webpBuf], { type: "image/webp" }); + var currentTime = _this.duration; + _this.emit("webp", { currentTime: currentTime, webp: webp }); + }); + } + } else if (elm.type === "m" && elm.name === "Cluster" && elm.isEnd === false) { + this.firstVideoBlockRead = false; + this.firstAudioBlockRead = false; + this.emit_segment_info(); + this.emit("cluster_ptr", elm.tagStart); + this.lastClusterPosition = elm.tagStart; + } else if (elm.type === "u" && elm.name === "Timecode") { + this.lastClusterTimecode = elm.value; + } else if (elm.type === "u" && elm.name === "TimecodeScale") { + this.timecodeScale = elm.value; + } else if (elm.type === "m" && elm.name === "TrackEntry") { + if (elm.isEnd) { + this.trackTypes[this.currentTrack.TrackNumber] = this.currentTrack.TrackType; + this.trackDefaultDuration[this.currentTrack.TrackNumber] = this.currentTrack.DefaultDuration; + this.trackCodecDelay[this.currentTrack.TrackNumber] = this.currentTrack.CodecDelay; + } else { + this.currentTrack = { TrackNumber: -1, TrackType: -1, DefaultDuration: null, CodecDelay: null }; + } + } else if (elm.type === "u" && elm.name === "TrackType") { + this.currentTrack.TrackType = elm.value; + } else if (elm.type === "u" && elm.name === "TrackNumber") { + this.currentTrack.TrackNumber = elm.value; + } else if (elm.type === "u" && elm.name === "CodecDelay") { + this.currentTrack.CodecDelay = elm.value; + } else if (elm.type === "u" && elm.name === "DefaultDuration") { + // media source api は DefaultDuration を計算するとバグる。 + // https://bugs.chromium.org/p/chromium/issues/detail?id=606000#c22 + // chrome 58 ではこれを回避するために DefaultDuration 要素を抜き取った。 + // chrome 58 以前でもこのタグを抜き取ることで回避できる + if (this.drop_default_duration) { + console.warn("DefaultDuration detected!, remove it"); + drop = true; + } else { + this.currentTrack.DefaultDuration = elm.value; + } + } else if (elm.name === "unknown") { + console.warn(elm); + } + if (!this.metadataloaded && elm.dataEnd > 0) { + this.metadataSize = elm.dataEnd; + } + if (!drop) { + this.chunks.push(elm); + } + if (this.logging) { + this.put(elm); + } + }; + Object.defineProperty(EBMLReader.prototype, "duration", { + /** + * DefaultDuration が定義されている場合は最後のフレームのdurationも考慮する + * 単位 timecodeScale + * + * !!! if you need duration with seconds !!! + * ```js + * const nanosec = reader.duration * reader.timecodeScale; + * const sec = nanosec / 1000 / 1000 / 1000; + * ``` + */ + get: function get() { + if (this.trackInfo.type === "nothing") { + console.warn("no video, no audio track"); + return 0; + } + // defaultDuration は 生の nano sec + var defaultDuration = 0; + // nanoseconds + var codecDelay = 0; + var lastTimecode = 0; + var _defaultDuration = this.trackDefaultDuration[this.trackInfo.trackNumber]; + if (typeof _defaultDuration === "number") { + defaultDuration = _defaultDuration; + } else { + // https://bugs.chromium.org/p/chromium/issues/detail?id=606000#c22 + // default duration がないときに使う delta + if (this.trackInfo.type === "both") { + if (this.last2SimpleBlockAudioTrackTimecode[1] > this.last2SimpleBlockVideoTrackTimecode[1]) { + // audio diff + defaultDuration = (this.last2SimpleBlockAudioTrackTimecode[1] - this.last2SimpleBlockAudioTrackTimecode[0]) * this.timecodeScale; + // audio delay + var delay = this.trackCodecDelay[this.trackTypes.indexOf(2)]; // 2 => audio + if (typeof delay === "number") { + codecDelay = delay; + } + // audio timecode + lastTimecode = this.last2SimpleBlockAudioTrackTimecode[1]; + } else { + // video diff + defaultDuration = (this.last2SimpleBlockVideoTrackTimecode[1] - this.last2SimpleBlockVideoTrackTimecode[0]) * this.timecodeScale; + // video delay + var delay = this.trackCodecDelay[this.trackTypes.indexOf(1)]; // 1 => video + if (typeof delay === "number") { + codecDelay = delay; + } + // video timecode + lastTimecode = this.last2SimpleBlockVideoTrackTimecode[1]; + } + } else if (this.trackInfo.type === "video") { + defaultDuration = (this.last2SimpleBlockVideoTrackTimecode[1] - this.last2SimpleBlockVideoTrackTimecode[0]) * this.timecodeScale; + var delay = this.trackCodecDelay[this.trackInfo.trackNumber]; // 2 => audio + if (typeof delay === "number") { + codecDelay = delay; + } + lastTimecode = this.last2SimpleBlockVideoTrackTimecode[1]; + } else if (this.trackInfo.type === "audio") { + defaultDuration = (this.last2SimpleBlockAudioTrackTimecode[1] - this.last2SimpleBlockAudioTrackTimecode[0]) * this.timecodeScale; + var delay = this.trackCodecDelay[this.trackInfo.trackNumber]; // 1 => video + if (typeof delay === "number") { + codecDelay = delay; + } + lastTimecode = this.last2SimpleBlockAudioTrackTimecode[1]; + } // else { not reached } + } + // convert to timecodescale + var duration_nanosec = (this.lastClusterTimecode + lastTimecode) * this.timecodeScale + defaultDuration - codecDelay; + var duration = duration_nanosec / this.timecodeScale; + return Math.floor(duration); + }, + enumerable: true, + configurable: true + }); + EBMLReader.prototype.addListener = function (event, listener) { + return _super.prototype.addListener.call(this, event, listener); + }; + EBMLReader.prototype.put = function (elm) { + if (!this.hasLoggingStarted) { + this.hasLoggingStarted = true; + if (this.logging && this.logGroup) { + console.groupCollapsed(this.logGroup); + } + } + if (elm.type === "m") { + if (elm.isEnd) { + console.groupEnd(); + } else { + console.group(elm.name + ":" + elm.tagStart); + } + } else if (elm.type === "b") { + // for debug + //if(elm.name === "SimpleBlock"){ + //const o = EBML.tools.ebmlBlock(elm.value); + //console.log(elm.name, elm.type, o.trackNumber, o.timecode); + //}else{ + console.log(elm.name, elm.type); + //} + } else { + console.log(elm.name, elm.tagStart, elm.type, elm.value); + } + }; + return EBMLReader; + }(events_1.EventEmitter); + exports.default = EBMLReader; + ; + ; + ; + ; + }, { "./tools": 5, "events": 13 }], 4: [function (require, module, exports) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { value: true }); + var EBMLDecoder_1 = require("./EBMLDecoder"); + exports.Decoder = EBMLDecoder_1.default; + var EBMLEncoder_1 = require("./EBMLEncoder"); + exports.Encoder = EBMLEncoder_1.default; + var EBMLReader_1 = require("./EBMLReader"); + exports.Reader = EBMLReader_1.default; + var tools = require("./tools"); + exports.tools = tools; + var version = require("../package.json").version; + exports.version = version; + }, { "../package.json": 18, "./EBMLDecoder": 1, "./EBMLEncoder": 2, "./EBMLReader": 3, "./tools": 5 }], 5: [function (require, module, exports) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { value: true }); + /// <reference types="node"/> + var int64_buffer_1 = require("int64-buffer"); + var EBMLEncoder_1 = require("./EBMLEncoder"); + var _Buffer = require("buffer/"); + var _tools = require("ebml/lib/ebml/tools"); + var _block = require("ebml-block"); + exports.Buffer = _Buffer.Buffer; + exports.readVint = _tools.readVint; + exports.writeVint = _tools.writeVint; + exports.ebmlBlock = _block; + function readBlock(buf) { + return exports.ebmlBlock(new exports.Buffer(buf)); + } + exports.readBlock = readBlock; + /** + * @param end - if end === false then length is unknown + */ + function encodeTag(tagId, tagData, unknownSize) { + if (unknownSize === void 0) { + unknownSize = false; + } + return concat([tagId, unknownSize ? new exports.Buffer('01ffffffffffffff', 'hex') : exports.writeVint(tagData.length), tagData]); + } + exports.encodeTag = encodeTag; + /** + * @return - SimpleBlock to WebP Filter + */ + function WebPFrameFilter(elms) { + return WebPBlockFilter(elms).reduce(function (lst, elm) { + var o = exports.ebmlBlock(elm.data); + return o.frames.reduce(function (lst, frame) { + // https://developers.Blob.com/speed/webp/docs/riff_container + var webpBuf = VP8BitStreamToRiffWebPBuffer(frame); + var webp = new Blob([webpBuf], { type: "image/webp" }); + return lst.concat(webp); + }, lst); + }, []); + } + exports.WebPFrameFilter = WebPFrameFilter; + /** + * WebP ファイルにできる SimpleBlock の パスフィルタ + */ + function WebPBlockFilter(elms) { + return elms.reduce(function (lst, elm) { + if (elm.type !== "b") { + return lst; + } + if (elm.name !== "SimpleBlock") { + return lst; + } + var o = exports.ebmlBlock(elm.data); + var hasWebP = o.frames.some(function (frame) { + // https://tools.ietf.org/html/rfc6386#section-19.1 + var startcode = frame.slice(3, 6).toString("hex"); + return startcode === "9d012a"; + }); + if (!hasWebP) { + return lst; + } + return lst.concat(elm); + }, []); + } + exports.WebPBlockFilter = WebPBlockFilter; + /** + * @param frame - VP8 BitStream のうち startcode をもつ frame + * @return - WebP ファイルの ArrayBuffer + */ + function VP8BitStreamToRiffWebPBuffer(frame) { + var VP8Chunk = createRIFFChunk("VP8 ", frame); + var WebPChunk = concat([new exports.Buffer("WEBP", "ascii"), VP8Chunk]); + return createRIFFChunk("RIFF", WebPChunk); + } + exports.VP8BitStreamToRiffWebPBuffer = VP8BitStreamToRiffWebPBuffer; + /** + * RIFF データチャンクを作る + */ + function createRIFFChunk(FourCC, chunk) { + var chunkSize = new exports.Buffer(4); + chunkSize.writeUInt32LE(chunk.byteLength, 0); + return concat([new exports.Buffer(FourCC.substr(0, 4), "ascii"), chunkSize, chunk, new exports.Buffer(chunk.byteLength % 2 === 0 ? 0 : 1) // padding + ]); + } + exports.createRIFFChunk = createRIFFChunk; + /* Original Metadata + + m 0 EBML + u 1 EBMLVersion 1 + u 1 EBMLReadVersion 1 + u 1 EBMLMaxIDLength 4 + u 1 EBMLMaxSizeLength 8 + s 1 DocType webm + u 1 DocTypeVersion 4 + u 1 DocTypeReadVersion 2 + m 0 Segment + m 1 Info segmentContentStartPos, all CueClusterPositions provided in info.cues will be relative to here and will need adjusted + u 2 TimecodeScale 1000000 + 8 2 MuxingApp Chrome + 8 2 WritingApp Chrome + m 1 Tracks tracksStartPos + m 2 TrackEntry + u 3 TrackNumber 1 + u 3 TrackUID 31790271978391090 + u 3 TrackType 2 + s 3 CodecID A_OPUS + b 3 CodecPrivate <Buffer 19> + m 3 Audio + f 4 SamplingFrequency 48000 + u 4 Channels 1 + m 2 TrackEntry + u 3 TrackNumber 2 + u 3 TrackUID 24051277436254136 + u 3 TrackType 1 + s 3 CodecID V_VP8 + m 3 Video + u 4 PixelWidth 1024 + u 4 PixelHeight 576 + m 1 Cluster clusterStartPos + u 2 Timecode 0 + b 2 SimpleBlock track:2 timecode:0 keyframe:true invisible:false discardable:false lacing:1 + */ + /* Desired Metadata + + m 0 EBML + u 1 EBMLVersion 1 + u 1 EBMLReadVersion 1 + u 1 EBMLMaxIDLength 4 + u 1 EBMLMaxSizeLength 8 + s 1 DocType webm + u 1 DocTypeVersion 4 + u 1 DocTypeReadVersion 2 + m 0 Segment + m 1 SeekHead -> This is SeekPosition 0, so all SeekPositions can be calculated as (bytePos - segmentContentStartPos), which is 44 in this case + m 2 Seek + b 3 SeekID -> Buffer([0x15, 0x49, 0xA9, 0x66]) Info + u 3 SeekPosition -> infoStartPos = + m 2 Seek + b 3 SeekID -> Buffer([0x16, 0x54, 0xAE, 0x6B]) Tracks + u 3 SeekPosition { tracksStartPos } + m 2 Seek + b 3 SeekID -> Buffer([0x1C, 0x53, 0xBB, 0x6B]) Cues + u 3 SeekPosition { cuesStartPos } + m 1 Info + f 2 Duration 32480 -> overwrite, or insert if it doesn't exist + u 2 TimecodeScale 1000000 + 8 2 MuxingApp Chrome + 8 2 WritingApp Chrome + m 1 Tracks + m 2 TrackEntry + u 3 TrackNumber 1 + u 3 TrackUID 31790271978391090 + u 3 TrackType 2 + s 3 CodecID A_OPUS + b 3 CodecPrivate <Buffer 19> + m 3 Audio + f 4 SamplingFrequency 48000 + u 4 Channels 1 + m 2 TrackEntry + u 3 TrackNumber 2 + u 3 TrackUID 24051277436254136 + u 3 TrackType 1 + s 3 CodecID V_VP8 + m 3 Video + u 4 PixelWidth 1024 + u 4 PixelHeight 576 + m 1 Cues -> cuesStartPos + m 2 CuePoint + u 3 CueTime 0 + m 3 CueTrackPositions + u 4 CueTrack 1 + u 4 CueClusterPosition 3911 + m 2 CuePoint + u 3 CueTime 600 + m 3 CueTrackPositions + u 4 CueTrack 1 + u 4 CueClusterPosition 3911 + m 1 Cluster + u 2 Timecode 0 + b 2 SimpleBlock track:2 timecode:0 keyframe:true invisible:false discardable:false lacing:1 + */ + /** + * convert the metadata from a streaming webm bytestream to a seekable file by inserting Duration, Seekhead and Cues + * @param originalMetadata - orginal metadata (everything before the clusters start) from media recorder + * @param duration - Duration (TimecodeScale) + * @param cues - cue points for clusters + */ + function makeMetadataSeekable(originalMetadata, duration, cuesInfo) { + // extract the header, we can reuse this as-is + var header = extractElement("EBML", originalMetadata); + var headerSize = encodedSizeOfEbml(header); + //console.error("Header size: " + headerSize); + //printElementIds(header); + // After the header comes the Segment open tag, which in this implementation is always 12 bytes (4 byte id, 8 byte 'unknown length') + // After that the segment content starts. All SeekPositions and CueClusterPosition must be relative to segmentContentStartPos + var segmentContentStartPos = headerSize + 12; + //console.error("segmentContentStartPos: " + segmentContentStartPos); + // find the original metadata size, and adjust it for header size and Segment start element so we can keep all positions relative to segmentContentStartPos + var originalMetadataSize = originalMetadata[originalMetadata.length - 1].dataEnd - segmentContentStartPos; + //console.error("Original Metadata size: " + originalMetadataSize); + //printElementIds(originalMetadata); + // extract the segment info, remove the potentially existing Duration element, and add our own one. + var info = extractElement("Info", originalMetadata); + removeElement("Duration", info); + info.splice(1, 0, { name: "Duration", type: "f", data: createFloatBuffer(duration, 8) }); + var infoSize = encodedSizeOfEbml(info); + //console.error("Info size: " + infoSize); + //printElementIds(info); + // extract the track info, we can re-use this as is + var tracks = extractElement("Tracks", originalMetadata); + var tracksSize = encodedSizeOfEbml(tracks); + //console.error("Tracks size: " + tracksSize); + //printElementIds(tracks); + var seekHeadSize = 47; // Initial best guess, but could be slightly larger if the Cues element is huge. + var seekHead = []; + var cuesSize = 5 + cuesInfo.length * 15; // very rough initial approximation, depends a lot on file size and number of CuePoints + var cues = []; + var lastSizeDifference = -1; // + // The size of SeekHead and Cues elements depends on how many bytes the offsets values can be encoded in. + // The actual offsets in CueClusterPosition depend on the final size of the SeekHead and Cues elements + // We need to iteratively converge to a stable solution. + var maxIterations = 10; + var _loop_1 = function _loop_1(i) { + // SeekHead starts at 0 + var infoStart = seekHeadSize; // Info comes directly after SeekHead + var tracksStart = infoStart + infoSize; // Tracks comes directly after Info + var cuesStart = tracksStart + tracksSize; // Cues starts directly after + var newMetadataSize = cuesStart + cuesSize; // total size of metadata + // This is the offset all CueClusterPositions should be adjusted by due to the metadata size changing. + var sizeDifference = newMetadataSize - originalMetadataSize; + // console.error(`infoStart: ${infoStart}, infoSize: ${infoSize}`); + // console.error(`tracksStart: ${tracksStart}, tracksSize: ${tracksSize}`); + // console.error(`cuesStart: ${cuesStart}, cuesSize: ${cuesSize}`); + // console.error(`originalMetadataSize: ${originalMetadataSize}, newMetadataSize: ${newMetadataSize}, sizeDifference: ${sizeDifference}`); + // create the SeekHead element + seekHead = []; + seekHead.push({ name: "SeekHead", type: "m", isEnd: false }); + seekHead.push({ name: "Seek", type: "m", isEnd: false }); + seekHead.push({ name: "SeekID", type: "b", data: new exports.Buffer([0x15, 0x49, 0xA9, 0x66]) }); // Info + seekHead.push({ name: "SeekPosition", type: "u", data: createUIntBuffer(infoStart) }); + seekHead.push({ name: "Seek", type: "m", isEnd: true }); + seekHead.push({ name: "Seek", type: "m", isEnd: false }); + seekHead.push({ name: "SeekID", type: "b", data: new exports.Buffer([0x16, 0x54, 0xAE, 0x6B]) }); // Tracks + seekHead.push({ name: "SeekPosition", type: "u", data: createUIntBuffer(tracksStart) }); + seekHead.push({ name: "Seek", type: "m", isEnd: true }); + seekHead.push({ name: "Seek", type: "m", isEnd: false }); + seekHead.push({ name: "SeekID", type: "b", data: new exports.Buffer([0x1C, 0x53, 0xBB, 0x6B]) }); // Cues + seekHead.push({ name: "SeekPosition", type: "u", data: createUIntBuffer(cuesStart) }); + seekHead.push({ name: "Seek", type: "m", isEnd: true }); + seekHead.push({ name: "SeekHead", type: "m", isEnd: true }); + seekHeadSize = encodedSizeOfEbml(seekHead); + //console.error("SeekHead size: " + seekHeadSize); + //printElementIds(seekHead); + // create the Cues element + cues = []; + cues.push({ name: "Cues", type: "m", isEnd: false }); + cuesInfo.forEach(function (_a) { + var CueTrack = _a.CueTrack, + CueClusterPosition = _a.CueClusterPosition, + CueTime = _a.CueTime; + cues.push({ name: "CuePoint", type: "m", isEnd: false }); + cues.push({ name: "CueTime", type: "u", data: createUIntBuffer(CueTime) }); + cues.push({ name: "CueTrackPositions", type: "m", isEnd: false }); + cues.push({ name: "CueTrack", type: "u", data: createUIntBuffer(CueTrack) }); + //console.error(`CueClusterPosition: ${CueClusterPosition}, Corrected to: ${CueClusterPosition - segmentContentStartPos} , offset by ${sizeDifference} to become ${(CueClusterPosition - segmentContentStartPos) + sizeDifference - segmentContentStartPos}`); + // EBMLReader returns CueClusterPosition with absolute byte offsets. The Cues section expects them as offsets from the first level 1 element of the Segment, so we need to adjust it. + CueClusterPosition -= segmentContentStartPos; + // We also need to adjust to take into account the change in metadata size from when EBMLReader read the original metadata. + CueClusterPosition += sizeDifference; + cues.push({ name: "CueClusterPosition", type: "u", data: createUIntBuffer(CueClusterPosition) }); + cues.push({ name: "CueTrackPositions", type: "m", isEnd: true }); + cues.push({ name: "CuePoint", type: "m", isEnd: true }); + }); + cues.push({ name: "Cues", type: "m", isEnd: true }); + cuesSize = encodedSizeOfEbml(cues); + //console.error("Cues size: " + cuesSize); + //console.error("Cue count: " + cuesInfo.length); + //printElementIds(cues); + // If the new MetadataSize is not the same as the previous iteration, we need to run once more. + if (lastSizeDifference !== sizeDifference) { + lastSizeDifference = sizeDifference; + if (i === maxIterations - 1) { + throw new Error("Failed to converge to a stable metadata size"); + } + } else { + return "break"; + } + }; + for (var i = 0; i < maxIterations; i++) { + var state_1 = _loop_1(i); + if (state_1 === "break") break; + } + var finalMetadata = [].concat.apply([], [header, { name: "Segment", type: "m", isEnd: false, unknownSize: true }, seekHead, info, tracks, cues]); + var result = new EBMLEncoder_1.default().encode(finalMetadata); + //printElementIds(finalMetadata); + //console.error(`Final metadata buffer size: ${result.byteLength}`); + //console.error(`Final metadata buffer size without header and segment: ${result.byteLength-segmentContentStartPos}`); + return result; + } + exports.makeMetadataSeekable = makeMetadataSeekable; + /** + * print all element id names in a list + + * @param metadata - array of EBML elements to print + * + export function printElementIds(metadata: EBML.EBMLElementBuffer[]) { + + let result: EBML.EBMLElementBuffer[] = []; + let start: number = -1; + + for (let i = 0; i < metadata.length; i++) { + console.error("\t id: " + metadata[i].name); + } + } + */ + /** + * remove all occurances of an EBML element from an array of elements + * If it's a MasterElement you will also remove the content. (everything between start and end) + * @param idName - name of the EBML Element to remove. + * @param metadata - array of EBML elements to search + */ + function removeElement(idName, metadata) { + var result = []; + var start = -1; + for (var i = 0; i < metadata.length; i++) { + var element = metadata[i]; + if (element.name === idName) { + // if it's a Master element, extract the start and end element, and everything in between + if (element.type === "m") { + if (!element.isEnd) { + start = i; + } else { + // we've reached the end, extract the whole thing + if (start == -1) throw new Error("Detected " + idName + " closing element before finding the start"); + metadata.splice(start, i - start + 1); + return; + } + } else { + // not a Master element, so we've found what we're looking for. + metadata.splice(i, 1); + return; + } + } + } + } + exports.removeElement = removeElement; + /** + * extract the first occurance of an EBML tag from a flattened array of EBML data. + * If it's a MasterElement you will also get the content. (everything between start and end) + * @param idName - name of the EBML Element to extract. + * @param metadata - array of EBML elements to search + */ + function extractElement(idName, metadata) { + var result = []; + var start = -1; + for (var i = 0; i < metadata.length; i++) { + var element = metadata[i]; + if (element.name === idName) { + // if it's a Master element, extract the start and end element, and everything in between + if (element.type === "m") { + if (!element.isEnd) { + start = i; + } else { + // we've reached the end, extract the whole thing + if (start == -1) throw new Error("Detected " + idName + " closing element before finding the start"); + result = metadata.slice(start, i + 1); + break; + } + } else { + // not a Master element, so we've found what we're looking for. + result.push(metadata[i]); + break; + } + } + } + return result; + } + exports.extractElement = extractElement; + /** + * @deprecated + * metadata に対して duration と seekhead を追加した metadata を返す + * @param metadata - 変更前の webm における ファイル先頭から 最初の Cluster 要素までの 要素 + * @param duration - Duration (TimecodeScale) + * @param cues - cue points for clusters + * @deprecated @param clusterPtrs - 変更前の webm における SeekHead に追加する Cluster 要素 への start pointer + * @deprecated @param cueInfos - please use cues. + */ + function putRefinedMetaData(metadata, info) { + if (Array.isArray(info.cueInfos) && !Array.isArray(info.cues)) { + console.warn("putRefinedMetaData: info.cueInfos property is deprecated. please use info.cues"); + info.cues = info.cueInfos; + } + var ebml = []; + var payload = []; + for (var i_1 = 0; i_1 < metadata.length; i_1++) { + var elm = metadata[i_1]; + if (elm.type === "m" && elm.name === "Segment") { + ebml = metadata.slice(0, i_1); + payload = metadata.slice(i_1); + if (elm.unknownSize) { + payload.shift(); // remove segment tag + break; + } + throw new Error("this metadata is not streaming webm file"); + } + } + // *0 *4 *5 *36 *40 *48=segmentOffset *185=originalPayloadOffsetEnd + // | | | | | | | + // [EBML][size]....[Segment][size][Info][size][Duration][size]...[Cluster] + // | | |^inf | | + // | +segmentSiz(12)+ | + // +-ebmlSize(36)--+ | +-payloadSize(137)-------------+offsetEndDiff+ + // | | +-newPayloadSize(??)-------------------------+ + // | | | | + // [Segment][size][Info][size][Duration][size]....[size][value][Cluster] + // ^ | + // | *??=newPayloadOffsetEnd + // inf + if (!(payload[payload.length - 1].dataEnd > 0)) { + throw new Error("metadata dataEnd has wrong number"); + } + var originalPayloadOffsetEnd = payload[payload.length - 1].dataEnd; // = first cluster ptr + var ebmlSize = ebml[ebml.length - 1].dataEnd; // = first segment ptr + var refinedEBMLSize = new EBMLEncoder_1.default().encode(ebml).byteLength; + var offsetDiff = refinedEBMLSize - ebmlSize; + var payloadSize = originalPayloadOffsetEnd - payload[0].tagStart; + var segmentSize = payload[0].tagStart - ebmlSize; + var segmentOffset = payload[0].tagStart; + var segmentTagBuf = new exports.Buffer([0x18, 0x53, 0x80, 0x67]); // Segment + var segmentSizeBuf = new exports.Buffer('01ffffffffffffff', 'hex'); // Segmentの最後の位置は無数の Cluster 依存なので。 writeVint(newPayloadSize).byteLength ではなく、 infinity. + var _segmentSize = segmentTagBuf.byteLength + segmentSizeBuf.byteLength; // == segmentSize + var newPayloadSize = payloadSize; + // We need the size to be stable between two refinements in order for our offsets to be correct + // Bound the number of possible refinements so we can't go infinate if something goes wrong + var i; + for (i = 1; i < 20; i++) { + var newPayloadOffsetEnd = ebmlSize + _segmentSize + newPayloadSize; + var offsetEndDiff = newPayloadOffsetEnd - originalPayloadOffsetEnd; + var sizeDiff = offsetDiff + offsetEndDiff; + var refined = refineMetadata(payload, sizeDiff, info); + var newNewRefinedSize = new EBMLEncoder_1.default().encode(refined).byteLength; // 一旦 seekhead を作って自身のサイズを調べる + if (newNewRefinedSize === newPayloadSize) { + // Size is stable + return new EBMLEncoder_1.default().encode([].concat(ebml, [{ type: "m", name: "Segment", isEnd: false, unknownSize: true }], refined)); + } + newPayloadSize = newNewRefinedSize; + } + throw new Error("unable to refine metadata, stable size could not be found in " + i + " iterations!"); + } + exports.putRefinedMetaData = putRefinedMetaData; + // Given a list of EBMLElementBuffers, returns their encoded size in bytes + function encodedSizeOfEbml(refinedMetaData) { + var encorder = new EBMLEncoder_1.default(); + return refinedMetaData.reduce(function (lst, elm) { + return lst.concat(encorder.encode([elm])); + }, []).reduce(function (o, buf) { + return o + buf.byteLength; + }, 0); + } + function refineMetadata(mesetadata, sizeDiff, info) { + var duration = info.duration, + clusterPtrs = info.clusterPtrs, + cues = info.cues; + var _metadata = mesetadata.slice(0); + if (typeof duration === "number") { + // duration を追加する + var overwrited_1 = false; + _metadata.forEach(function (elm) { + if (elm.type === "f" && elm.name === "Duration") { + overwrited_1 = true; + elm.data = createFloatBuffer(duration, 8); + } + }); + if (!overwrited_1) { + insertTag(_metadata, "Info", [{ name: "Duration", type: "f", data: createFloatBuffer(duration, 8) }]); + } + } + if (Array.isArray(cues)) { + insertTag(_metadata, "Cues", create_cue(cues, sizeDiff)); + } + var seekhead_children = []; + if (Array.isArray(clusterPtrs)) { + console.warn("append cluster pointers to seekhead is deprecated. please use cues"); + seekhead_children = create_seek_from_clusters(clusterPtrs, sizeDiff); + } + // remove seek info + /* + _metadata = _metadata.filter((elm)=> !( + elm.name === "Seek" || + elm.name === "SeekID" || + elm.name === "SeekPosition") ); + */ + // working on progress + //seekhead_children = seekhead_children.concat(create_seekhead(_metadata)); + insertTag(_metadata, "SeekHead", seekhead_children, true); + return _metadata; + } + function create_seekhead(metadata, sizeDiff) { + var seeks = []; + ["Info", "Tracks", "Cues"].forEach(function (tagName) { + var tagStarts = metadata.filter(function (elm) { + return elm.type === "m" && elm.name === tagName && elm.isEnd === false; + }).map(function (elm) { + return elm["tagStart"]; + }); + var tagStart = tagStarts[0]; + if (typeof tagStart !== "number") { + return; + } + seeks.push({ name: "Seek", type: "m", isEnd: false }); + switch (tagName) { + case "Info": + seeks.push({ name: "SeekID", type: "b", data: new exports.Buffer([0x15, 0x49, 0xA9, 0x66]) }); + break; + case "Tracks": + seeks.push({ name: "SeekID", type: "b", data: new exports.Buffer([0x16, 0x54, 0xAE, 0x6B]) }); + break; + case "Cues": + seeks.push({ name: "SeekID", type: "b", data: new exports.Buffer([0x1C, 0x53, 0xBB, 0x6B]) }); + break; + } + seeks.push({ name: "SeekPosition", type: "u", data: createUIntBuffer(tagStart + sizeDiff) }); + seeks.push({ name: "Seek", type: "m", isEnd: true }); + }); + return seeks; + } + function create_seek_from_clusters(clusterPtrs, sizeDiff) { + var seeks = []; + clusterPtrs.forEach(function (start) { + seeks.push({ name: "Seek", type: "m", isEnd: false }); + // [0x1F, 0x43, 0xB6, 0x75] で Cluster 意 + seeks.push({ name: "SeekID", type: "b", data: new exports.Buffer([0x1F, 0x43, 0xB6, 0x75]) }); + seeks.push({ name: "SeekPosition", type: "u", data: createUIntBuffer(start + sizeDiff) }); + seeks.push({ name: "Seek", type: "m", isEnd: true }); + }); + return seeks; + } + function create_cue(cueInfos, sizeDiff) { + var cues = []; + cueInfos.forEach(function (_a) { + var CueTrack = _a.CueTrack, + CueClusterPosition = _a.CueClusterPosition, + CueTime = _a.CueTime; + cues.push({ name: "CuePoint", type: "m", isEnd: false }); + cues.push({ name: "CueTime", type: "u", data: createUIntBuffer(CueTime) }); + cues.push({ name: "CueTrackPositions", type: "m", isEnd: false }); + cues.push({ name: "CueTrack", type: "u", data: createUIntBuffer(CueTrack) }); // video track + cues.push({ name: "CueClusterPosition", type: "u", data: createUIntBuffer(CueClusterPosition + sizeDiff) }); + cues.push({ name: "CueTrackPositions", type: "m", isEnd: true }); + cues.push({ name: "CuePoint", type: "m", isEnd: true }); + }); + return cues; + } + function insertTag(_metadata, tagName, children, insertHead) { + if (insertHead === void 0) { + insertHead = false; + } + // find the tagname from _metadata + var idx = -1; + for (var i = 0; i < _metadata.length; i++) { + var elm = _metadata[i]; + if (elm.type === "m" && elm.name === tagName && elm.isEnd === false) { + idx = i; + break; + } + } + if (idx >= 0) { + // insert [<CuePoint />] to <Cues /> + Array.prototype.splice.apply(_metadata, [idx + 1, 0].concat(children)); + } else if (insertHead) { + [].concat([{ name: tagName, type: "m", isEnd: false }], children, [{ name: tagName, type: "m", isEnd: true }]).reverse().forEach(function (elm) { + _metadata.unshift(elm); + }); + } else { + // metadata 末尾に <Cues /> を追加 + // insert <Cues /> + _metadata.push({ name: tagName, type: "m", isEnd: false }); + children.forEach(function (elm) { + _metadata.push(elm); + }); + _metadata.push({ name: tagName, type: "m", isEnd: true }); + } + } + // alter Buffer.concat - https://github.com/feross/buffer/issues/154 + function concat(list) { + //return Buffer.concat.apply(Buffer, list); + var i = 0; + var length = 0; + for (; i < list.length; ++i) { + length += list[i].length; + } + var buffer = exports.Buffer.allocUnsafe(length); + var pos = 0; + for (i = 0; i < list.length; ++i) { + var buf = list[i]; + buf.copy(buffer, pos); + pos += buf.length; + } + return buffer; + } + exports.concat = concat; + function encodeValueToBuffer(elm) { + var data = new exports.Buffer(0); + if (elm.type === "m") { + return elm; + } + switch (elm.type) { + case "u": + data = createUIntBuffer(elm.value); + break; + case "i": + data = createIntBuffer(elm.value); + break; + case "f": + data = createFloatBuffer(elm.value); + break; + case "s": + data = new exports.Buffer(elm.value, 'ascii'); + break; + case "8": + data = new exports.Buffer(elm.value, 'utf8'); + break; + case "b": + data = elm.value; + break; + case "d": + data = new int64_buffer_1.Int64BE(elm.value.getTime().toString()).toBuffer(); + break; + } + return Object.assign({}, elm, { data: data }); + } + exports.encodeValueToBuffer = encodeValueToBuffer; + function createUIntBuffer(value) { + // Big-endian, any size from 1 to 8 + // but js number is float64, so max 6 bit octets + var bytes = 1; + for (; value >= Math.pow(2, 8 * bytes); bytes++) {} + if (bytes >= 7) { + console.warn("7bit or more bigger uint not supported."); + return new int64_buffer_1.Uint64BE(value).toBuffer(); + } + var data = new exports.Buffer(bytes); + data.writeUIntBE(value, 0, bytes); + return data; + } + exports.createUIntBuffer = createUIntBuffer; + function createIntBuffer(value) { + // Big-endian, any size from 1 to 8 octets + // but js number is float64, so max 6 bit + var bytes = 1; + for (; value >= Math.pow(2, 8 * bytes); bytes++) {} + if (bytes >= 7) { + console.warn("7bit or more bigger uint not supported."); + return new int64_buffer_1.Int64BE(value).toBuffer(); + } + var data = new exports.Buffer(bytes); + data.writeIntBE(value, 0, bytes); + return data; + } + exports.createIntBuffer = createIntBuffer; + function createFloatBuffer(value, bytes) { + if (bytes === void 0) { + bytes = 8; + } + // Big-endian, defined for 4 and 8 octets (32, 64 bits) + // js number is float64 so 8 bytes. + if (bytes === 8) { + // 64bit + var data = new exports.Buffer(8); + data.writeDoubleBE(value, 0); + return data; + } else if (bytes === 4) { + // 32bit + var data = new exports.Buffer(4); + data.writeFloatBE(value, 0); + return data; + } else { + throw new Error("float type bits must 4bytes or 8bytes"); + } + } + exports.createFloatBuffer = createFloatBuffer; + function convertEBMLDateToJSDate(int64str) { + if (int64str instanceof Date) { + return int64str; + } + return new Date(new Date("2001-01-01T00:00:00.000Z").getTime() + Number(int64str) / 1000 / 1000); + } + exports.convertEBMLDateToJSDate = convertEBMLDateToJSDate; + }, { "./EBMLEncoder": 2, "buffer/": 8, "ebml-block": 9, "ebml/lib/ebml/tools": 12, "int64-buffer": 15 }], 6: [function (require, module, exports) { + 'use strict'; + + exports.byteLength = byteLength; + exports.toByteArray = toByteArray; + exports.fromByteArray = fromByteArray; + + var lookup = []; + var revLookup = []; + var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; + + var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i]; + revLookup[code.charCodeAt(i)] = i; + } + + // Support decoding URL-safe base64 strings, as Node.js does. + // See: https://en.wikipedia.org/wiki/Base64#URL_applications + revLookup['-'.charCodeAt(0)] = 62; + revLookup['_'.charCodeAt(0)] = 63; + + function getLens(b64) { + var len = b64.length; + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4'); + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('='); + if (validLen === -1) validLen = len; + + var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4; + + return [validLen, placeHoldersLen]; + } + + // base64 is 4/3 + up to two characters of the original data + function byteLength(b64) { + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; + return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; + } + + function _byteLength(b64, validLen, placeHoldersLen) { + return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; + } + + function toByteArray(b64) { + var tmp; + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); + + var curByte = 0; + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 ? validLen - 4 : validLen; + + for (var i = 0; i < len; i += 4) { + tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)]; + arr[curByte++] = tmp >> 16 & 0xFF; + arr[curByte++] = tmp >> 8 & 0xFF; + arr[curByte++] = tmp & 0xFF; + } + + if (placeHoldersLen === 2) { + tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4; + arr[curByte++] = tmp & 0xFF; + } + + if (placeHoldersLen === 1) { + tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2; + arr[curByte++] = tmp >> 8 & 0xFF; + arr[curByte++] = tmp & 0xFF; + } + + return arr; + } + + function tripletToBase64(num) { + return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]; + } + + function encodeChunk(uint8, start, end) { + var tmp; + var output = []; + for (var i = start; i < end; i += 3) { + tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF); + output.push(tripletToBase64(tmp)); + } + return output.join(''); + } + + function fromByteArray(uint8) { + var tmp; + var len = uint8.length; + var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes + var parts = []; + var maxChunkLength = 16383; // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength)); + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1]; + parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '=='); + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1]; + parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '='); + } + + return parts.join(''); + } + }, {}], 7: [function (require, module, exports) { + (function (global) { + /*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> + * @license MIT + */ + /* eslint-disable no-proto */ + + 'use strict'; + + var base64 = require('base64-js'); + var ieee754 = require('ieee754'); + var isArray = require('isarray'); + + exports.Buffer = Buffer; + exports.SlowBuffer = SlowBuffer; + exports.INSPECT_MAX_BYTES = 50; + + /** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ + Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport(); + + /* + * Export kMaxLength after typed array support is determined. + */ + exports.kMaxLength = kMaxLength(); + + function typedArraySupport() { + try { + var arr = new Uint8Array(1); + arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function foo() { + return 42; + } }; + return arr.foo() === 42 && // typed array instances can be augmented + typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` + arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray` + } catch (e) { + return false; + } + } + + function kMaxLength() { + return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff; + } + + function createBuffer(that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length'); + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = new Uint8Array(length); + that.__proto__ = Buffer.prototype; + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer(length); + } + that.length = length; + } + + return that; + } + + /** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + + function Buffer(arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length); + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error('If encoding is specified then the first argument must be a string'); + } + return allocUnsafe(this, arg); + } + return from(this, arg, encodingOrOffset, length); + } + + Buffer.poolSize = 8192; // not used by this implementation + + // TODO: Legacy, not needed anymore. Remove in next major version. + Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype; + return arr; + }; + + function from(that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number'); + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length); + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset); + } + + return fromObject(that, value); + } + + /** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ + Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length); + }; + + if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype; + Buffer.__proto__ = Uint8Array; + if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) { + // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true + }); + } + } + + function assertSize(size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number'); + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative'); + } + } + + function alloc(that, size, fill, encoding) { + assertSize(size); + if (size <= 0) { + return createBuffer(that, size); + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill); + } + return createBuffer(that, size); + } + + /** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ + Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding); + }; + + function allocUnsafe(that, size) { + assertSize(size); + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0); + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0; + } + } + return that; + } + + /** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ + Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size); + }; + /** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ + Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size); + }; + + function fromString(that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8'; + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding'); + } + + var length = byteLength(string, encoding) | 0; + that = createBuffer(that, length); + + var actual = that.write(string, encoding); + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual); + } + + return that; + } + + function fromArrayLike(that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0; + that = createBuffer(that, length); + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255; + } + return that; + } + + function fromArrayBuffer(that, array, byteOffset, length) { + array.byteLength; // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds'); + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds'); + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array); + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset); + } else { + array = new Uint8Array(array, byteOffset, length); + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = array; + that.__proto__ = Buffer.prototype; + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array); + } + return that; + } + + function fromObject(that, obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0; + that = createBuffer(that, len); + + if (that.length === 0) { + return that; + } + + obj.copy(that, 0, 0, len); + return that; + } + + if (obj) { + if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0); + } + return fromArrayLike(that, obj); + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data); + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.'); + } + + function checked(length) { + // Note: cannot use `length < kMaxLength()` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes'); + } + return length | 0; + } + + function SlowBuffer(length) { + if (+length != length) { + // eslint-disable-line eqeqeq + length = 0; + } + return Buffer.alloc(+length); + } + + Buffer.isBuffer = function isBuffer(b) { + return !!(b != null && b._isBuffer); + }; + + Buffer.compare = function compare(a, b) { + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('Arguments must be Buffers'); + } + + if (a === b) return 0; + + var x = a.length; + var y = b.length; + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break; + } + } + + if (x < y) return -1; + if (y < x) return 1; + return 0; + }; + + Buffer.isEncoding = function isEncoding(encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true; + default: + return false; + } + }; + + Buffer.concat = function concat(list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers'); + } + + if (list.length === 0) { + return Buffer.alloc(0); + } + + var i; + if (length === undefined) { + length = 0; + for (i = 0; i < list.length; ++i) { + length += list[i].length; + } + } + + var buffer = Buffer.allocUnsafe(length); + var pos = 0; + for (i = 0; i < list.length; ++i) { + var buf = list[i]; + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers'); + } + buf.copy(buffer, pos); + pos += buf.length; + } + return buffer; + }; + + function byteLength(string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length; + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength; + } + if (typeof string !== 'string') { + string = '' + string; + } + + var len = string.length; + if (len === 0) return 0; + + // Use a for loop to avoid recursion + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len; + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2; + case 'hex': + return len >>> 1; + case 'base64': + return base64ToBytes(string).length; + default: + if (loweredCase) return utf8ToBytes(string).length; // assume utf8 + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } + } + Buffer.byteLength = byteLength; + + function slowToString(encoding, start, end) { + var loweredCase = false; + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0; + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return ''; + } + + if (end === undefined || end > this.length) { + end = this.length; + } + + if (end <= 0) { + return ''; + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0; + start >>>= 0; + + if (end <= start) { + return ''; + } + + if (!encoding) encoding = 'utf8'; + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end); + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end); + + case 'ascii': + return asciiSlice(this, start, end); + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end); + + case 'base64': + return base64Slice(this, start, end); + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end); + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding); + encoding = (encoding + '').toLowerCase(); + loweredCase = true; + } + } + } + + // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect + // Buffer instances. + Buffer.prototype._isBuffer = true; + + function swap(b, n, m) { + var i = b[n]; + b[n] = b[m]; + b[m] = i; + } + + Buffer.prototype.swap16 = function swap16() { + var len = this.length; + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits'); + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1); + } + return this; + }; + + Buffer.prototype.swap32 = function swap32() { + var len = this.length; + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits'); + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3); + swap(this, i + 1, i + 2); + } + return this; + }; + + Buffer.prototype.swap64 = function swap64() { + var len = this.length; + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits'); + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7); + swap(this, i + 1, i + 6); + swap(this, i + 2, i + 5); + swap(this, i + 3, i + 4); + } + return this; + }; + + Buffer.prototype.toString = function toString() { + var length = this.length | 0; + if (length === 0) return ''; + if (arguments.length === 0) return utf8Slice(this, 0, length); + return slowToString.apply(this, arguments); + }; + + Buffer.prototype.equals = function equals(b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer'); + if (this === b) return true; + return Buffer.compare(this, b) === 0; + }; + + Buffer.prototype.inspect = function inspect() { + var str = ''; + var max = exports.INSPECT_MAX_BYTES; + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' '); + if (this.length > max) str += ' ... '; + } + return '<Buffer ' + str + '>'; + }; + + Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) { + if (!Buffer.isBuffer(target)) { + throw new TypeError('Argument must be a Buffer'); + } + + if (start === undefined) { + start = 0; + } + if (end === undefined) { + end = target ? target.length : 0; + } + if (thisStart === undefined) { + thisStart = 0; + } + if (thisEnd === undefined) { + thisEnd = this.length; + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index'); + } + + if (thisStart >= thisEnd && start >= end) { + return 0; + } + if (thisStart >= thisEnd) { + return -1; + } + if (start >= end) { + return 1; + } + + start >>>= 0; + end >>>= 0; + thisStart >>>= 0; + thisEnd >>>= 0; + + if (this === target) return 0; + + var x = thisEnd - thisStart; + var y = end - start; + var len = Math.min(x, y); + + var thisCopy = this.slice(thisStart, thisEnd); + var targetCopy = target.slice(start, end); + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i]; + y = targetCopy[i]; + break; + } + } + + if (x < y) return -1; + if (y < x) return 1; + return 0; + }; + + // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, + // OR the last index of `val` in `buffer` at offset <= `byteOffset`. + // + // Arguments: + // - buffer - a Buffer to search + // - val - a string, Buffer, or number + // - byteOffset - an index into `buffer`; will be clamped to an int32 + // - encoding - an optional encoding, relevant is val is a string + // - dir - true for indexOf, false for lastIndexOf + function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1; + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset; + byteOffset = 0; + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff; + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000; + } + byteOffset = +byteOffset; // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : buffer.length - 1; + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset; + if (byteOffset >= buffer.length) { + if (dir) return -1;else byteOffset = buffer.length - 1; + } else if (byteOffset < 0) { + if (dir) byteOffset = 0;else return -1; + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding); + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1; + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir); + } else if (typeof val === 'number') { + val = val & 0xFF; // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset); + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset); + } + } + return arrayIndexOf(buffer, [val], byteOffset, encoding, dir); + } + + throw new TypeError('val must be string, number or Buffer'); + } + + function arrayIndexOf(arr, val, byteOffset, encoding, dir) { + var indexSize = 1; + var arrLength = arr.length; + var valLength = val.length; + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase(); + if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1; + } + indexSize = 2; + arrLength /= 2; + valLength /= 2; + byteOffset /= 2; + } + } + + function read(buf, i) { + if (indexSize === 1) { + return buf[i]; + } else { + return buf.readUInt16BE(i * indexSize); + } + } + + var i; + if (dir) { + var foundIndex = -1; + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i; + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize; + } else { + if (foundIndex !== -1) i -= i - foundIndex; + foundIndex = -1; + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; + for (i = byteOffset; i >= 0; i--) { + var found = true; + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false; + break; + } + } + if (found) return i; + } + } + + return -1; + } + + Buffer.prototype.includes = function includes(val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1; + }; + + Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true); + }; + + Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false); + }; + + function hexWrite(buf, string, offset, length) { + offset = Number(offset) || 0; + var remaining = buf.length - offset; + if (!length) { + length = remaining; + } else { + length = Number(length); + if (length > remaining) { + length = remaining; + } + } + + // must be an even number of digits + var strLen = string.length; + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string'); + + if (length > strLen / 2) { + length = strLen / 2; + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16); + if (isNaN(parsed)) return i; + buf[offset + i] = parsed; + } + return i; + } + + function utf8Write(buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length); + } + + function asciiWrite(buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length); + } + + function latin1Write(buf, string, offset, length) { + return asciiWrite(buf, string, offset, length); + } + + function base64Write(buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length); + } + + function ucs2Write(buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length); + } + + Buffer.prototype.write = function write(string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8'; + length = this.length; + offset = 0; + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset; + length = this.length; + offset = 0; + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0; + if (isFinite(length)) { + length = length | 0; + if (encoding === undefined) encoding = 'utf8'; + } else { + encoding = length; + length = undefined; + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported'); + } + + var remaining = this.length - offset; + if (length === undefined || length > remaining) length = remaining; + + if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds'); + } + + if (!encoding) encoding = 'utf8'; + + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length); + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length); + + case 'ascii': + return asciiWrite(this, string, offset, length); + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length); + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length); + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length); + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding); + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } + }; + + Buffer.prototype.toJSON = function toJSON() { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + }; + }; + + function base64Slice(buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf); + } else { + return base64.fromByteArray(buf.slice(start, end)); + } + } + + function utf8Slice(buf, start, end) { + end = Math.min(buf.length, end); + var res = []; + + var i = start; + while (i < end) { + var firstByte = buf[i]; + var codePoint = null; + var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1; + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint; + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte; + } + break; + case 2: + secondByte = buf[i + 1]; + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F; + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint; + } + } + break; + case 3: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F; + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint; + } + } + break; + case 4: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + fourthByte = buf[i + 3]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F; + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint; + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD; + bytesPerSequence = 1; + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000; + res.push(codePoint >>> 10 & 0x3FF | 0xD800); + codePoint = 0xDC00 | codePoint & 0x3FF; + } + + res.push(codePoint); + i += bytesPerSequence; + } + + return decodeCodePointsArray(res); + } + + // Based on http://stackoverflow.com/a/22747272/680742, the browser with + // the lowest limit is Chrome, with 0x10000 args. + // We go 1 magnitude less, for safety + var MAX_ARGUMENTS_LENGTH = 0x1000; + + function decodeCodePointsArray(codePoints) { + var len = codePoints.length; + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints); // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = ''; + var i = 0; + while (i < len) { + res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)); + } + return res; + } + + function asciiSlice(buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F); + } + return ret; + } + + function latin1Slice(buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]); + } + return ret; + } + + function hexSlice(buf, start, end) { + var len = buf.length; + + if (!start || start < 0) start = 0; + if (!end || end < 0 || end > len) end = len; + + var out = ''; + for (var i = start; i < end; ++i) { + out += toHex(buf[i]); + } + return out; + } + + function utf16leSlice(buf, start, end) { + var bytes = buf.slice(start, end); + var res = ''; + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); + } + return res; + } + + Buffer.prototype.slice = function slice(start, end) { + var len = this.length; + start = ~~start; + end = end === undefined ? len : ~~end; + + if (start < 0) { + start += len; + if (start < 0) start = 0; + } else if (start > len) { + start = len; + } + + if (end < 0) { + end += len; + if (end < 0) end = 0; + } else if (end > len) { + end = len; + } + + if (end < start) end = start; + + var newBuf; + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end); + newBuf.__proto__ = Buffer.prototype; + } else { + var sliceLen = end - start; + newBuf = new Buffer(sliceLen, undefined); + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start]; + } + } + + return newBuf; + }; + + /* + * Need to make sure that buffer isn't trying to write out of bounds. + */ + function checkOffset(offset, ext, length) { + if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint'); + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length'); + } + + Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + + return val; + }; + + Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + checkOffset(offset, byteLength, this.length); + } + + var val = this[offset + --byteLength]; + var mul = 1; + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul; + } + + return val; + }; + + Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length); + return this[offset]; + }; + + Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + return this[offset] | this[offset + 1] << 8; + }; + + Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + return this[offset] << 8 | this[offset + 1]; + }; + + Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000; + }; + + Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]); + }; + + Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val; + }; + + Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var i = byteLength; + var mul = 1; + var val = this[offset + --i]; + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val; + }; + + Buffer.prototype.readInt8 = function readInt8(offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length); + if (!(this[offset] & 0x80)) return this[offset]; + return (0xff - this[offset] + 1) * -1; + }; + + Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset] | this[offset + 1] << 8; + return val & 0x8000 ? val | 0xFFFF0000 : val; + }; + + Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset + 1] | this[offset] << 8; + return val & 0x8000 ? val | 0xFFFF0000 : val; + }; + + Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24; + }; + + Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]; + }; + + Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + return ieee754.read(this, offset, true, 23, 4); + }; + + Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + return ieee754.read(this, offset, false, 23, 4); + }; + + Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754.read(this, offset, true, 52, 8); + }; + + Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754.read(this, offset, false, 52, 8); + }; + + function checkInt(buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance'); + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds'); + if (offset + ext > buf.length) throw new RangeError('Index out of range'); + } + + Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var mul = 1; + var i = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = value / mul & 0xFF; + } + + return offset + byteLength; + }; + + Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var i = byteLength - 1; + var mul = 1; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = value / mul & 0xFF; + } + + return offset + byteLength; + }; + + Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); + this[offset] = value & 0xff; + return offset + 1; + }; + + function objectWriteUInt16(buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1; + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8; + } + } + + Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = value & 0xff; + this[offset + 1] = value >>> 8; + } else { + objectWriteUInt16(this, value, offset, true); + } + return offset + 2; + }; + + Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = value >>> 8; + this[offset + 1] = value & 0xff; + } else { + objectWriteUInt16(this, value, offset, false); + } + return offset + 2; + }; + + function objectWriteUInt32(buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1; + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff; + } + } + + Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = value >>> 24; + this[offset + 2] = value >>> 16; + this[offset + 1] = value >>> 8; + this[offset] = value & 0xff; + } else { + objectWriteUInt32(this, value, offset, true); + } + return offset + 4; + }; + + Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = value >>> 24; + this[offset + 1] = value >>> 16; + this[offset + 2] = value >>> 8; + this[offset + 3] = value & 0xff; + } else { + objectWriteUInt32(this, value, offset, false); + } + return offset + 4; + }; + + Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = 0; + var mul = 1; + var sub = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1; + } + this[offset + i] = (value / mul >> 0) - sub & 0xFF; + } + + return offset + byteLength; + }; + + Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = byteLength - 1; + var mul = 1; + var sub = 0; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1; + } + this[offset + i] = (value / mul >> 0) - sub & 0xFF; + } + + return offset + byteLength; + }; + + Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); + if (value < 0) value = 0xff + value + 1; + this[offset] = value & 0xff; + return offset + 1; + }; + + Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = value & 0xff; + this[offset + 1] = value >>> 8; + } else { + objectWriteUInt16(this, value, offset, true); + } + return offset + 2; + }; + + Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = value >>> 8; + this[offset + 1] = value & 0xff; + } else { + objectWriteUInt16(this, value, offset, false); + } + return offset + 2; + }; + + Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = value & 0xff; + this[offset + 1] = value >>> 8; + this[offset + 2] = value >>> 16; + this[offset + 3] = value >>> 24; + } else { + objectWriteUInt32(this, value, offset, true); + } + return offset + 4; + }; + + Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + if (value < 0) value = 0xffffffff + value + 1; + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = value >>> 24; + this[offset + 1] = value >>> 16; + this[offset + 2] = value >>> 8; + this[offset + 3] = value & 0xff; + } else { + objectWriteUInt32(this, value, offset, false); + } + return offset + 4; + }; + + function checkIEEE754(buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range'); + if (offset < 0) throw new RangeError('Index out of range'); + } + + function writeFloat(buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38); + } + ieee754.write(buf, value, offset, littleEndian, 23, 4); + return offset + 4; + } + + Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert); + }; + + Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert); + }; + + function writeDouble(buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308); + } + ieee754.write(buf, value, offset, littleEndian, 52, 8); + return offset + 8; + } + + Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert); + }; + + Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert); + }; + + // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) + Buffer.prototype.copy = function copy(target, targetStart, start, end) { + if (!start) start = 0; + if (!end && end !== 0) end = this.length; + if (targetStart >= target.length) targetStart = target.length; + if (!targetStart) targetStart = 0; + if (end > 0 && end < start) end = start; + + // Copy 0 bytes; we're done + if (end === start) return 0; + if (target.length === 0 || this.length === 0) return 0; + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds'); + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds'); + if (end < 0) throw new RangeError('sourceEnd out of bounds'); + + // Are we oob? + if (end > this.length) end = this.length; + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start; + } + + var len = end - start; + var i; + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start]; + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start]; + } + } else { + Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart); + } + + return len; + }; + + // Usage: + // buffer.fill(number[, offset[, end]]) + // buffer.fill(buffer[, offset[, end]]) + // buffer.fill(string[, offset[, end]][, encoding]) + Buffer.prototype.fill = function fill(val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start; + start = 0; + end = this.length; + } else if (typeof end === 'string') { + encoding = end; + end = this.length; + } + if (val.length === 1) { + var code = val.charCodeAt(0); + if (code < 256) { + val = code; + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string'); + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding); + } + } else if (typeof val === 'number') { + val = val & 255; + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index'); + } + + if (end <= start) { + return this; + } + + start = start >>> 0; + end = end === undefined ? this.length : end >>> 0; + + if (!val) val = 0; + + var i; + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val; + } + } else { + var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString()); + var len = bytes.length; + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len]; + } + } + + return this; + }; + + // HELPER FUNCTIONS + // ================ + + var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g; + + function base64clean(str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, ''); + // Node converts strings with length < 2 to '' + if (str.length < 2) return ''; + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '='; + } + return str; + } + + function stringtrim(str) { + if (str.trim) return str.trim(); + return str.replace(/^\s+|\s+$/g, ''); + } + + function toHex(n) { + if (n < 16) return '0' + n.toString(16); + return n.toString(16); + } + + function utf8ToBytes(string, units) { + units = units || Infinity; + var codePoint; + var length = string.length; + var leadSurrogate = null; + var bytes = []; + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i); + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue; + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue; + } + + // valid lead + leadSurrogate = codePoint; + + continue; + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + leadSurrogate = codePoint; + continue; + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + } + + leadSurrogate = null; + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break; + bytes.push(codePoint); + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break; + bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80); + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break; + bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80); + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break; + bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80); + } else { + throw new Error('Invalid code point'); + } + } + + return bytes; + } + + function asciiToBytes(str) { + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF); + } + return byteArray; + } + + function utf16leToBytes(str, units) { + var c, hi, lo; + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break; + + c = str.charCodeAt(i); + hi = c >> 8; + lo = c % 256; + byteArray.push(lo); + byteArray.push(hi); + } + + return byteArray; + } + + function base64ToBytes(str) { + return base64.toByteArray(base64clean(str)); + } + + function blitBuffer(src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if (i + offset >= dst.length || i >= src.length) break; + dst[i + offset] = src[i]; + } + return i; + } + + function isnan(val) { + return val !== val; // eslint-disable-line no-self-compare + } + }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); + }, { "base64-js": 6, "ieee754": 14, "isarray": 16 }], 8: [function (require, module, exports) { + /*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh <https://feross.org> + * @license MIT + */ + /* eslint-disable no-proto */ + + 'use strict'; + + var base64 = require('base64-js'); + var ieee754 = require('ieee754'); + + exports.Buffer = Buffer; + exports.SlowBuffer = SlowBuffer; + exports.INSPECT_MAX_BYTES = 50; + + var K_MAX_LENGTH = 0x7fffffff; + exports.kMaxLength = K_MAX_LENGTH; + + /** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Print warning and recommend using `buffer` v4.x which has an Object + * implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * We report that the browser does not support typed arrays if the are not subclassable + * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` + * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support + * for __proto__ and has a buggy typed array implementation. + */ + Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport(); + + if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && typeof console.error === 'function') { + console.error('This browser lacks typed array (Uint8Array) support which is required by ' + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'); + } + + function typedArraySupport() { + // Can typed array instances can be augmented? + try { + var arr = new Uint8Array(1); + arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function foo() { + return 42; + } }; + return arr.foo() === 42; + } catch (e) { + return false; + } + } + + Object.defineProperty(Buffer.prototype, 'parent', { + enumerable: true, + get: function get() { + if (!Buffer.isBuffer(this)) return undefined; + return this.buffer; + } + }); + + Object.defineProperty(Buffer.prototype, 'offset', { + enumerable: true, + get: function get() { + if (!Buffer.isBuffer(this)) return undefined; + return this.byteOffset; + } + }); + + function createBuffer(length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"'); + } + // Return an augmented `Uint8Array` instance + var buf = new Uint8Array(length); + buf.__proto__ = Buffer.prototype; + return buf; + } + + /** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + + function Buffer(arg, encodingOrOffset, length) { + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new TypeError('The "string" argument must be of type string. Received type number'); + } + return allocUnsafe(arg); + } + return from(arg, encodingOrOffset, length); + } + + // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 + if (typeof Symbol !== 'undefined' && Symbol.species != null && Buffer[Symbol.species] === Buffer) { + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true, + enumerable: false, + writable: false + }); + } + + Buffer.poolSize = 8192; // not used by this implementation + + function from(value, encodingOrOffset, length) { + if (typeof value === 'string') { + return fromString(value, encodingOrOffset); + } + + if (ArrayBuffer.isView(value)) { + return fromArrayLike(value); + } + + if (value == null) { + throw TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + (typeof value === "undefined" ? "undefined" : _typeof(value))); + } + + if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) { + return fromArrayBuffer(value, encodingOrOffset, length); + } + + if (typeof value === 'number') { + throw new TypeError('The "value" argument must not be of type number. Received type number'); + } + + var valueOf = value.valueOf && value.valueOf(); + if (valueOf != null && valueOf !== value) { + return Buffer.from(valueOf, encodingOrOffset, length); + } + + var b = fromObject(value); + if (b) return b; + + if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === 'function') { + return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length); + } + + throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + (typeof value === "undefined" ? "undefined" : _typeof(value))); + } + + /** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ + Buffer.from = function (value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length); + }; + + // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: + // https://github.com/feross/buffer/pull/148 + Buffer.prototype.__proto__ = Uint8Array.prototype; + Buffer.__proto__ = Uint8Array; + + function assertSize(size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be of type number'); + } else if (size < 0) { + throw new RangeError('The value "' + size + '" is invalid for option "size"'); + } + } + + function alloc(size, fill, encoding) { + assertSize(size); + if (size <= 0) { + return createBuffer(size); + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill); + } + return createBuffer(size); + } + + /** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ + Buffer.alloc = function (size, fill, encoding) { + return alloc(size, fill, encoding); + }; + + function allocUnsafe(size) { + assertSize(size); + return createBuffer(size < 0 ? 0 : checked(size) | 0); + } + + /** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ + Buffer.allocUnsafe = function (size) { + return allocUnsafe(size); + }; + /** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ + Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(size); + }; + + function fromString(string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8'; + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding); + } + + var length = byteLength(string, encoding) | 0; + var buf = createBuffer(length); + + var actual = buf.write(string, encoding); + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + buf = buf.slice(0, actual); + } + + return buf; + } + + function fromArrayLike(array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0; + var buf = createBuffer(length); + for (var i = 0; i < length; i += 1) { + buf[i] = array[i] & 255; + } + return buf; + } + + function fromArrayBuffer(array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('"offset" is outside of buffer bounds'); + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('"length" is outside of buffer bounds'); + } + + var buf; + if (byteOffset === undefined && length === undefined) { + buf = new Uint8Array(array); + } else if (length === undefined) { + buf = new Uint8Array(array, byteOffset); + } else { + buf = new Uint8Array(array, byteOffset, length); + } + + // Return an augmented `Uint8Array` instance + buf.__proto__ = Buffer.prototype; + return buf; + } + + function fromObject(obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0; + var buf = createBuffer(len); + + if (buf.length === 0) { + return buf; + } + + obj.copy(buf, 0, 0, len); + return buf; + } + + if (obj.length !== undefined) { + if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { + return createBuffer(0); + } + return fromArrayLike(obj); + } + + if (obj.type === 'Buffer' && Array.isArray(obj.data)) { + return fromArrayLike(obj.data); + } + } + + function checked(length) { + // Note: cannot use `length < K_MAX_LENGTH` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= K_MAX_LENGTH) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes'); + } + return length | 0; + } + + function SlowBuffer(length) { + if (+length != length) { + // eslint-disable-line eqeqeq + length = 0; + } + return Buffer.alloc(+length); + } + + Buffer.isBuffer = function isBuffer(b) { + return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false + }; + + Buffer.compare = function compare(a, b) { + if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength); + if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength); + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array'); + } + + if (a === b) return 0; + + var x = a.length; + var y = b.length; + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break; + } + } + + if (x < y) return -1; + if (y < x) return 1; + return 0; + }; + + Buffer.isEncoding = function isEncoding(encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true; + default: + return false; + } + }; + + Buffer.concat = function concat(list, length) { + if (!Array.isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers'); + } + + if (list.length === 0) { + return Buffer.alloc(0); + } + + var i; + if (length === undefined) { + length = 0; + for (i = 0; i < list.length; ++i) { + length += list[i].length; + } + } + + var buffer = Buffer.allocUnsafe(length); + var pos = 0; + for (i = 0; i < list.length; ++i) { + var buf = list[i]; + if (isInstance(buf, Uint8Array)) { + buf = Buffer.from(buf); + } + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers'); + } + buf.copy(buffer, pos); + pos += buf.length; + } + return buffer; + }; + + function byteLength(string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length; + } + if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { + return string.byteLength; + } + if (typeof string !== 'string') { + throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + (typeof string === "undefined" ? "undefined" : _typeof(string))); + } + + var len = string.length; + var mustMatch = arguments.length > 2 && arguments[2] === true; + if (!mustMatch && len === 0) return 0; + + // Use a for loop to avoid recursion + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len; + case 'utf8': + case 'utf-8': + return utf8ToBytes(string).length; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2; + case 'hex': + return len >>> 1; + case 'base64': + return base64ToBytes(string).length; + default: + if (loweredCase) { + return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8 + } + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } + } + Buffer.byteLength = byteLength; + + function slowToString(encoding, start, end) { + var loweredCase = false; + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0; + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return ''; + } + + if (end === undefined || end > this.length) { + end = this.length; + } + + if (end <= 0) { + return ''; + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0; + start >>>= 0; + + if (end <= start) { + return ''; + } + + if (!encoding) encoding = 'utf8'; + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end); + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end); + + case 'ascii': + return asciiSlice(this, start, end); + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end); + + case 'base64': + return base64Slice(this, start, end); + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end); + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding); + encoding = (encoding + '').toLowerCase(); + loweredCase = true; + } + } + } + + // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) + // to detect a Buffer instance. It's not possible to use `instanceof Buffer` + // reliably in a browserify context because there could be multiple different + // copies of the 'buffer' package in use. This method works even for Buffer + // instances that were created from another copy of the `buffer` package. + // See: https://github.com/feross/buffer/issues/154 + Buffer.prototype._isBuffer = true; + + function swap(b, n, m) { + var i = b[n]; + b[n] = b[m]; + b[m] = i; + } + + Buffer.prototype.swap16 = function swap16() { + var len = this.length; + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits'); + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1); + } + return this; + }; + + Buffer.prototype.swap32 = function swap32() { + var len = this.length; + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits'); + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3); + swap(this, i + 1, i + 2); + } + return this; + }; + + Buffer.prototype.swap64 = function swap64() { + var len = this.length; + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits'); + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7); + swap(this, i + 1, i + 6); + swap(this, i + 2, i + 5); + swap(this, i + 3, i + 4); + } + return this; + }; + + Buffer.prototype.toString = function toString() { + var length = this.length; + if (length === 0) return ''; + if (arguments.length === 0) return utf8Slice(this, 0, length); + return slowToString.apply(this, arguments); + }; + + Buffer.prototype.toLocaleString = Buffer.prototype.toString; + + Buffer.prototype.equals = function equals(b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer'); + if (this === b) return true; + return Buffer.compare(this, b) === 0; + }; + + Buffer.prototype.inspect = function inspect() { + var str = ''; + var max = exports.INSPECT_MAX_BYTES; + str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim(); + if (this.length > max) str += ' ... '; + return '<Buffer ' + str + '>'; + }; + + Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) { + if (isInstance(target, Uint8Array)) { + target = Buffer.from(target, target.offset, target.byteLength); + } + if (!Buffer.isBuffer(target)) { + throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + (typeof target === "undefined" ? "undefined" : _typeof(target))); + } + + if (start === undefined) { + start = 0; + } + if (end === undefined) { + end = target ? target.length : 0; + } + if (thisStart === undefined) { + thisStart = 0; + } + if (thisEnd === undefined) { + thisEnd = this.length; + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index'); + } + + if (thisStart >= thisEnd && start >= end) { + return 0; + } + if (thisStart >= thisEnd) { + return -1; + } + if (start >= end) { + return 1; + } + + start >>>= 0; + end >>>= 0; + thisStart >>>= 0; + thisEnd >>>= 0; + + if (this === target) return 0; + + var x = thisEnd - thisStart; + var y = end - start; + var len = Math.min(x, y); + + var thisCopy = this.slice(thisStart, thisEnd); + var targetCopy = target.slice(start, end); + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i]; + y = targetCopy[i]; + break; + } + } + + if (x < y) return -1; + if (y < x) return 1; + return 0; + }; + + // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, + // OR the last index of `val` in `buffer` at offset <= `byteOffset`. + // + // Arguments: + // - buffer - a Buffer to search + // - val - a string, Buffer, or number + // - byteOffset - an index into `buffer`; will be clamped to an int32 + // - encoding - an optional encoding, relevant is val is a string + // - dir - true for indexOf, false for lastIndexOf + function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1; + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset; + byteOffset = 0; + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff; + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000; + } + byteOffset = +byteOffset; // Coerce to Number. + if (numberIsNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : buffer.length - 1; + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset; + if (byteOffset >= buffer.length) { + if (dir) return -1;else byteOffset = buffer.length - 1; + } else if (byteOffset < 0) { + if (dir) byteOffset = 0;else return -1; + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding); + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1; + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir); + } else if (typeof val === 'number') { + val = val & 0xFF; // Search for a byte value [0-255] + if (typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset); + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset); + } + } + return arrayIndexOf(buffer, [val], byteOffset, encoding, dir); + } + + throw new TypeError('val must be string, number or Buffer'); + } + + function arrayIndexOf(arr, val, byteOffset, encoding, dir) { + var indexSize = 1; + var arrLength = arr.length; + var valLength = val.length; + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase(); + if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1; + } + indexSize = 2; + arrLength /= 2; + valLength /= 2; + byteOffset /= 2; + } + } + + function read(buf, i) { + if (indexSize === 1) { + return buf[i]; + } else { + return buf.readUInt16BE(i * indexSize); + } + } + + var i; + if (dir) { + var foundIndex = -1; + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i; + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize; + } else { + if (foundIndex !== -1) i -= i - foundIndex; + foundIndex = -1; + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; + for (i = byteOffset; i >= 0; i--) { + var found = true; + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false; + break; + } + } + if (found) return i; + } + } + + return -1; + } + + Buffer.prototype.includes = function includes(val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1; + }; + + Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true); + }; + + Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false); + }; + + function hexWrite(buf, string, offset, length) { + offset = Number(offset) || 0; + var remaining = buf.length - offset; + if (!length) { + length = remaining; + } else { + length = Number(length); + if (length > remaining) { + length = remaining; + } + } + + var strLen = string.length; + + if (length > strLen / 2) { + length = strLen / 2; + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16); + if (numberIsNaN(parsed)) return i; + buf[offset + i] = parsed; + } + return i; + } + + function utf8Write(buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length); + } + + function asciiWrite(buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length); + } + + function latin1Write(buf, string, offset, length) { + return asciiWrite(buf, string, offset, length); + } + + function base64Write(buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length); + } + + function ucs2Write(buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length); + } + + Buffer.prototype.write = function write(string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8'; + length = this.length; + offset = 0; + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset; + length = this.length; + offset = 0; + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset >>> 0; + if (isFinite(length)) { + length = length >>> 0; + if (encoding === undefined) encoding = 'utf8'; + } else { + encoding = length; + length = undefined; + } + } else { + throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported'); + } + + var remaining = this.length - offset; + if (length === undefined || length > remaining) length = remaining; + + if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds'); + } + + if (!encoding) encoding = 'utf8'; + + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length); + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length); + + case 'ascii': + return asciiWrite(this, string, offset, length); + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length); + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length); + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length); + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding); + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } + }; + + Buffer.prototype.toJSON = function toJSON() { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + }; + }; + + function base64Slice(buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf); + } else { + return base64.fromByteArray(buf.slice(start, end)); + } + } + + function utf8Slice(buf, start, end) { + end = Math.min(buf.length, end); + var res = []; + + var i = start; + while (i < end) { + var firstByte = buf[i]; + var codePoint = null; + var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1; + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint; + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte; + } + break; + case 2: + secondByte = buf[i + 1]; + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F; + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint; + } + } + break; + case 3: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F; + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint; + } + } + break; + case 4: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + fourthByte = buf[i + 3]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F; + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint; + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD; + bytesPerSequence = 1; + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000; + res.push(codePoint >>> 10 & 0x3FF | 0xD800); + codePoint = 0xDC00 | codePoint & 0x3FF; + } + + res.push(codePoint); + i += bytesPerSequence; + } + + return decodeCodePointsArray(res); + } + + // Based on http://stackoverflow.com/a/22747272/680742, the browser with + // the lowest limit is Chrome, with 0x10000 args. + // We go 1 magnitude less, for safety + var MAX_ARGUMENTS_LENGTH = 0x1000; + + function decodeCodePointsArray(codePoints) { + var len = codePoints.length; + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints); // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = ''; + var i = 0; + while (i < len) { + res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)); + } + return res; + } + + function asciiSlice(buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F); + } + return ret; + } + + function latin1Slice(buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]); + } + return ret; + } + + function hexSlice(buf, start, end) { + var len = buf.length; + + if (!start || start < 0) start = 0; + if (!end || end < 0 || end > len) end = len; + + var out = ''; + for (var i = start; i < end; ++i) { + out += toHex(buf[i]); + } + return out; + } + + function utf16leSlice(buf, start, end) { + var bytes = buf.slice(start, end); + var res = ''; + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); + } + return res; + } + + Buffer.prototype.slice = function slice(start, end) { + var len = this.length; + start = ~~start; + end = end === undefined ? len : ~~end; + + if (start < 0) { + start += len; + if (start < 0) start = 0; + } else if (start > len) { + start = len; + } + + if (end < 0) { + end += len; + if (end < 0) end = 0; + } else if (end > len) { + end = len; + } + + if (end < start) end = start; + + var newBuf = this.subarray(start, end); + // Return an augmented `Uint8Array` instance + newBuf.__proto__ = Buffer.prototype; + return newBuf; + }; + + /* + * Need to make sure that buffer isn't trying to write out of bounds. + */ + function checkOffset(offset, ext, length) { + if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint'); + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length'); + } + + Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + + return val; + }; + + Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) { + checkOffset(offset, byteLength, this.length); + } + + var val = this[offset + --byteLength]; + var mul = 1; + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul; + } + + return val; + }; + + Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 1, this.length); + return this[offset]; + }; + + Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + return this[offset] | this[offset + 1] << 8; + }; + + Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + return this[offset] << 8 | this[offset + 1]; + }; + + Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000; + }; + + Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]); + }; + + Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val; + }; + + Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var i = byteLength; + var mul = 1; + var val = this[offset + --i]; + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val; + }; + + Buffer.prototype.readInt8 = function readInt8(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 1, this.length); + if (!(this[offset] & 0x80)) return this[offset]; + return (0xff - this[offset] + 1) * -1; + }; + + Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset] | this[offset + 1] << 8; + return val & 0x8000 ? val | 0xFFFF0000 : val; + }; + + Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset + 1] | this[offset] << 8; + return val & 0x8000 ? val | 0xFFFF0000 : val; + }; + + Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24; + }; + + Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]; + }; + + Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return ieee754.read(this, offset, true, 23, 4); + }; + + Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return ieee754.read(this, offset, false, 23, 4); + }; + + Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754.read(this, offset, true, 52, 8); + }; + + Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754.read(this, offset, false, 52, 8); + }; + + function checkInt(buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance'); + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds'); + if (offset + ext > buf.length) throw new RangeError('Index out of range'); + } + + Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var mul = 1; + var i = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = value / mul & 0xFF; + } + + return offset + byteLength; + }; + + Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var i = byteLength - 1; + var mul = 1; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = value / mul & 0xFF; + } + + return offset + byteLength; + }; + + Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); + this[offset] = value & 0xff; + return offset + 1; + }; + + Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + this[offset] = value & 0xff; + this[offset + 1] = value >>> 8; + return offset + 2; + }; + + Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + this[offset] = value >>> 8; + this[offset + 1] = value & 0xff; + return offset + 2; + }; + + Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + this[offset + 3] = value >>> 24; + this[offset + 2] = value >>> 16; + this[offset + 1] = value >>> 8; + this[offset] = value & 0xff; + return offset + 4; + }; + + Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + this[offset] = value >>> 24; + this[offset + 1] = value >>> 16; + this[offset + 2] = value >>> 8; + this[offset + 3] = value & 0xff; + return offset + 4; + }; + + Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = 0; + var mul = 1; + var sub = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1; + } + this[offset + i] = (value / mul >> 0) - sub & 0xFF; + } + + return offset + byteLength; + }; + + Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = byteLength - 1; + var mul = 1; + var sub = 0; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1; + } + this[offset + i] = (value / mul >> 0) - sub & 0xFF; + } + + return offset + byteLength; + }; + + Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); + if (value < 0) value = 0xff + value + 1; + this[offset] = value & 0xff; + return offset + 1; + }; + + Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + this[offset] = value & 0xff; + this[offset + 1] = value >>> 8; + return offset + 2; + }; + + Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + this[offset] = value >>> 8; + this[offset + 1] = value & 0xff; + return offset + 2; + }; + + Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + this[offset] = value & 0xff; + this[offset + 1] = value >>> 8; + this[offset + 2] = value >>> 16; + this[offset + 3] = value >>> 24; + return offset + 4; + }; + + Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + if (value < 0) value = 0xffffffff + value + 1; + this[offset] = value >>> 24; + this[offset + 1] = value >>> 16; + this[offset + 2] = value >>> 8; + this[offset + 3] = value & 0xff; + return offset + 4; + }; + + function checkIEEE754(buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range'); + if (offset < 0) throw new RangeError('Index out of range'); + } + + function writeFloat(buf, value, offset, littleEndian, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38); + } + ieee754.write(buf, value, offset, littleEndian, 23, 4); + return offset + 4; + } + + Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert); + }; + + Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert); + }; + + function writeDouble(buf, value, offset, littleEndian, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308); + } + ieee754.write(buf, value, offset, littleEndian, 52, 8); + return offset + 8; + } + + Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert); + }; + + Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert); + }; + + // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) + Buffer.prototype.copy = function copy(target, targetStart, start, end) { + if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer'); + if (!start) start = 0; + if (!end && end !== 0) end = this.length; + if (targetStart >= target.length) targetStart = target.length; + if (!targetStart) targetStart = 0; + if (end > 0 && end < start) end = start; + + // Copy 0 bytes; we're done + if (end === start) return 0; + if (target.length === 0 || this.length === 0) return 0; + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds'); + } + if (start < 0 || start >= this.length) throw new RangeError('Index out of range'); + if (end < 0) throw new RangeError('sourceEnd out of bounds'); + + // Are we oob? + if (end > this.length) end = this.length; + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start; + } + + var len = end - start; + + if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { + // Use built-in when available, missing from IE11 + this.copyWithin(targetStart, start, end); + } else if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (var i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start]; + } + } else { + Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart); + } + + return len; + }; + + // Usage: + // buffer.fill(number[, offset[, end]]) + // buffer.fill(buffer[, offset[, end]]) + // buffer.fill(string[, offset[, end]][, encoding]) + Buffer.prototype.fill = function fill(val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start; + start = 0; + end = this.length; + } else if (typeof end === 'string') { + encoding = end; + end = this.length; + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string'); + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding); + } + if (val.length === 1) { + var code = val.charCodeAt(0); + if (encoding === 'utf8' && code < 128 || encoding === 'latin1') { + // Fast path: If `val` fits into a single byte, use that numeric value. + val = code; + } + } + } else if (typeof val === 'number') { + val = val & 255; + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index'); + } + + if (end <= start) { + return this; + } + + start = start >>> 0; + end = end === undefined ? this.length : end >>> 0; + + if (!val) val = 0; + + var i; + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val; + } + } else { + var bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding); + var len = bytes.length; + if (len === 0) { + throw new TypeError('The value "' + val + '" is invalid for argument "value"'); + } + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len]; + } + } + + return this; + }; + + // HELPER FUNCTIONS + // ================ + + var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; + + function base64clean(str) { + // Node takes equal signs as end of the Base64 encoding + str = str.split('=')[0]; + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = str.trim().replace(INVALID_BASE64_RE, ''); + // Node converts strings with length < 2 to '' + if (str.length < 2) return ''; + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '='; + } + return str; + } + + function toHex(n) { + if (n < 16) return '0' + n.toString(16); + return n.toString(16); + } + + function utf8ToBytes(string, units) { + units = units || Infinity; + var codePoint; + var length = string.length; + var leadSurrogate = null; + var bytes = []; + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i); + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue; + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue; + } + + // valid lead + leadSurrogate = codePoint; + + continue; + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + leadSurrogate = codePoint; + continue; + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + } + + leadSurrogate = null; + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break; + bytes.push(codePoint); + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break; + bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80); + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break; + bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80); + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break; + bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80); + } else { + throw new Error('Invalid code point'); + } + } + + return bytes; + } + + function asciiToBytes(str) { + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF); + } + return byteArray; + } + + function utf16leToBytes(str, units) { + var c, hi, lo; + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break; + + c = str.charCodeAt(i); + hi = c >> 8; + lo = c % 256; + byteArray.push(lo); + byteArray.push(hi); + } + + return byteArray; + } + + function base64ToBytes(str) { + return base64.toByteArray(base64clean(str)); + } + + function blitBuffer(src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if (i + offset >= dst.length || i >= src.length) break; + dst[i + offset] = src[i]; + } + return i; + } + + // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass + // the `instanceof` check but they should be treated as of that type. + // See: https://github.com/feross/buffer/issues/166 + function isInstance(obj, type) { + return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name; + } + function numberIsNaN(obj) { + // For IE11 support + return obj !== obj; // eslint-disable-line no-self-compare + } + }, { "base64-js": 6, "ieee754": 14 }], 9: [function (require, module, exports) { + var BufferReader = require('./lib/buffer-reader'); + + var XIPH_LACING = 1; + var EBML_LACING = 3; + var FIXED_SIZE_LACING = 2; + + module.exports = function (buffer) { + var block = {}; + var reader = new BufferReader(buffer); + + block.trackNumber = reader.nextUIntV(); + block.timecode = reader.nextInt16BE(); + + var flags = reader.nextUInt8(); + + block.invisible = !!(flags & 0x8); + + // only valid for SimpleBlock + block.keyframe = !!(flags & 0x80); + block.discardable = !!(flags & 0x1); + + var lacing = (flags & 0x6) >> 1; + + block.frames = readLacedData(reader, lacing); + + return block; + }; + + function readLacedData(reader, lacing) { + if (!lacing) return [reader.nextBuffer()]; + + var i, frameSize; + var frames = []; + var framesNum = reader.nextUInt8() + 1; // number of frames + + if (lacing === FIXED_SIZE_LACING) { + // remaining data should be divisible by the number of frames + if (reader.length % framesNum !== 0) throw new Error('Fixed-Size Lacing Error'); + + frameSize = reader.length / framesNum; + for (i = 0; i < framesNum; i++) { + frames.push(reader.nextBuffer(frameSize)); + } + return frames; + } + + var frameSizes = []; + + if (lacing === XIPH_LACING) { + for (i = 0; i < framesNum - 1; i++) { + var val; + frameSize = 0; + do { + val = reader.nextUInt8(); + frameSize += val; + } while (val === 0xff); + frameSizes.push(frameSize); + } + } else if (lacing === EBML_LACING) { + // first frame + frameSize = reader.nextUIntV(); + frameSizes.push(frameSize); + + // middle frames + for (i = 1; i < framesNum - 1; i++) { + frameSize += reader.nextIntV(); + frameSizes.push(frameSize); + } + } + + for (i = 0; i < framesNum - 1; i++) { + frames.push(reader.nextBuffer(frameSizes[i])); + } + + // last frame (remaining buffer) + frames.push(reader.nextBuffer()); + + return frames; + } + }, { "./lib/buffer-reader": 10 }], 10: [function (require, module, exports) { + var vint = require('./vint'); + + function BufferReader(buffer) { + this.buffer = buffer; + this.offset = 0; + } + + // a super limited subset of the node buffer API + BufferReader.prototype.nextInt16BE = function () { + var value = this.buffer.readInt16BE(this.offset); + this.offset += 2; + return value; + }; + + BufferReader.prototype.nextUInt8 = function () { + var value = this.buffer.readUInt8(this.offset); + this.offset += 1; + return value; + }; + + // EBML variable sized integers + BufferReader.prototype.nextUIntV = function () { + var v = vint(this.buffer, this.offset); + this.offset += v.length; + return v.value; + }; + + BufferReader.prototype.nextIntV = function () { + var v = vint(this.buffer, this.offset, true); + this.offset += v.length; + return v.value; + }; + + // buffer slice + BufferReader.prototype.nextBuffer = function (length) { + var buffer = length ? this.buffer.slice(this.offset, this.offset + length) : this.buffer.slice(this.offset); + this.offset += length || this.length; + return buffer; + }; + + // remaining bytes to read + Object.defineProperty(BufferReader.prototype, 'length', { + get: function get() { + return this.buffer.length - this.offset; + } + }); + + module.exports = BufferReader; + }, { "./vint": 11 }], 11: [function (require, module, exports) { + // https://github.com/themasch/node-ebml/blob/master/lib/ebml/tools.js + module.exports = function (buffer, start, signed) { + start = start || 0; + for (var length = 1; length <= 8; length++) { + if (buffer[start] >= Math.pow(2, 8 - length)) { + break; + } + } + if (length > 8) { + throw new Error('Unrepresentable length: ' + length + ' ' + buffer.toString('hex', start, start + length)); + } + if (start + length > buffer.length) { + return null; + } + var i; + var value = buffer[start] & (1 << 8 - length) - 1; + for (i = 1; i < length; i++) { + if (i === 7) { + if (value >= Math.pow(2, 53 - 8) && buffer[start + 7] > 0) { + return { + length: length, + value: -1 + }; + } + } + value *= Math.pow(2, 8); + value += buffer[start + i]; + } + if (signed) { + value -= Math.pow(2, length * 7 - 1) - 1; + } + return { + length: length, + value: value + }; + }; + }, {}], 12: [function (require, module, exports) { + (function (Buffer) { + var tools = { + readVint: function readVint(buffer, start) { + start = start || 0; + for (var length = 1; length <= 8; length++) { + if (buffer[start] >= Math.pow(2, 8 - length)) { + break; + } + } + if (length > 8) { + throw new Error("Unrepresentable length: " + length + " " + buffer.toString('hex', start, start + length)); + } + if (start + length > buffer.length) { + return null; + } + var value = buffer[start] & (1 << 8 - length) - 1; + for (var i = 1; i < length; i++) { + if (i === 7) { + if (value >= Math.pow(2, 53 - 8) && buffer[start + 7] > 0) { + return { + length: length, + value: -1 + }; + } + } + value *= Math.pow(2, 8); + value += buffer[start + i]; + } + return { + length: length, + value: value + }; + }, + + writeVint: function writeVint(value) { + if (value < 0 || value > Math.pow(2, 53)) { + throw new Error("Unrepresentable value: " + value); + } + for (var length = 1; length <= 8; length++) { + if (value < Math.pow(2, 7 * length) - 1) { + break; + } + } + var buffer = new Buffer(length); + for (var i = 1; i <= length; i++) { + var b = value & 0xFF; + buffer[length - i] = b; + value -= b; + value /= Math.pow(2, 8); + } + buffer[0] = buffer[0] | 1 << 8 - length; + return buffer; + } + }; + + module.exports = tools; + }).call(this, require("buffer").Buffer); + }, { "buffer": 7 }], 13: [function (require, module, exports) { + // Copyright Joyent, Inc. and other Node contributors. + // + // Permission is hereby granted, free of charge, to any person obtaining a + // copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to permit + // persons to whom the Software is furnished to do so, subject to the + // following conditions: + // + // The above copyright notice and this permission notice shall be included + // in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + // USE OR OTHER DEALINGS IN THE SOFTWARE. + + function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; + } + module.exports = EventEmitter; + + // Backwards-compat with node 0.10.x + EventEmitter.EventEmitter = EventEmitter; + + EventEmitter.prototype._events = undefined; + EventEmitter.prototype._maxListeners = undefined; + + // By default EventEmitters will print a warning if more than 10 listeners are + // added to it. This is a useful default which helps finding memory leaks. + EventEmitter.defaultMaxListeners = 10; + + // Obviously not all Emitters should be limited to 10. This function allows + // that to be increased. Set to zero for unlimited. + EventEmitter.prototype.setMaxListeners = function (n) { + if (!isNumber(n) || n < 0 || isNaN(n)) throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; + }; + + EventEmitter.prototype.emit = function (type) { + var er, handler, len, args, i, listeners; + + if (!this._events) this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || isObject(this._events.error) && !this._events.error.length) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + // At least give some kind of context to the user + var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); + err.context = er; + throw err; + } + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + args = Array.prototype.slice.call(arguments, 1); + handler.apply(this, args); + } + } else if (isObject(handler)) { + args = Array.prototype.slice.call(arguments, 1); + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) { + listeners[i].apply(this, args); + } + } + + return true; + }; + + EventEmitter.prototype.addListener = function (type, listener) { + var m; + + if (!isFunction(listener)) throw TypeError('listener must be a function'); + + if (!this._events) this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) this.emit('newListener', type, isFunction(listener.listener) ? listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener;else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener);else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + 'leak detected. %d listeners added. ' + 'Use emitter.setMaxListeners() to increase limit.', this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; + }; + + EventEmitter.prototype.on = EventEmitter.prototype.addListener; + + EventEmitter.prototype.once = function (type, listener) { + if (!isFunction(listener)) throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; + }; + + // emits a 'removeListener' event iff the listener was removed + EventEmitter.prototype.removeListener = function (type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || isFunction(list.listener) && list.listener === listener) { + delete this._events[type]; + if (this._events.removeListener) this.emit('removeListener', type, listener); + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || list[i].listener && list[i].listener === listener) { + position = i; + break; + } + } + + if (position < 0) return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) this.emit('removeListener', type, listener); + } + + return this; + }; + + EventEmitter.prototype.removeAllListeners = function (type) { + var key, listeners; + + if (!this._events) return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) this._events = {};else if (this._events[type]) delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else if (listeners) { + // LIFO order + while (listeners.length) { + this.removeListener(type, listeners[listeners.length - 1]); + } + } + delete this._events[type]; + + return this; + }; + + EventEmitter.prototype.listeners = function (type) { + var ret; + if (!this._events || !this._events[type]) ret = [];else if (isFunction(this._events[type])) ret = [this._events[type]];else ret = this._events[type].slice(); + return ret; + }; + + EventEmitter.prototype.listenerCount = function (type) { + if (this._events) { + var evlistener = this._events[type]; + + if (isFunction(evlistener)) return 1;else if (evlistener) return evlistener.length; + } + return 0; + }; + + EventEmitter.listenerCount = function (emitter, type) { + return emitter.listenerCount(type); + }; + + function isFunction(arg) { + return typeof arg === 'function'; + } + + function isNumber(arg) { + return typeof arg === 'number'; + } + + function isObject(arg) { + return (typeof arg === "undefined" ? "undefined" : _typeof(arg)) === 'object' && arg !== null; + } + + function isUndefined(arg) { + return arg === void 0; + } + }, {}], 14: [function (require, module, exports) { + exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = -7; + var i = isLE ? nBytes - 1 : 0; + var d = isLE ? -1 : 1; + var s = buffer[offset + i]; + + i += d; + + e = s & (1 << -nBits) - 1; + s >>= -nBits; + nBits += eLen; + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & (1 << -nBits) - 1; + e >>= -nBits; + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : (s ? -1 : 1) * Infinity; + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen); + }; + + exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0; + var i = isLE ? 0 : nBytes - 1; + var d = isLE ? 1 : -1; + var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; + + value = Math.abs(value); + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = e << mLen | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128; + }; + }, {}], 15: [function (require, module, exports) { + (function (Buffer) { + // int64-buffer.js + + /*jshint -W018 */ // Confusing use of '!'. + /*jshint -W030 */ // Expected an assignment or function call and instead saw an expression. + /*jshint -W093 */ // Did you mean to return a conditional instead of an assignment? + + var Uint64BE, Int64BE, Uint64LE, Int64LE; + + !function (exports) { + // constants + + var UNDEFINED = "undefined"; + var BUFFER = UNDEFINED !== (typeof Buffer === "undefined" ? "undefined" : _typeof(Buffer)) && Buffer; + var UINT8ARRAY = UNDEFINED !== (typeof Uint8Array === "undefined" ? "undefined" : _typeof(Uint8Array)) && Uint8Array; + var ARRAYBUFFER = UNDEFINED !== (typeof ArrayBuffer === "undefined" ? "undefined" : _typeof(ArrayBuffer)) && ArrayBuffer; + var ZERO = [0, 0, 0, 0, 0, 0, 0, 0]; + var isArray = Array.isArray || _isArray; + var BIT32 = 4294967296; + var BIT24 = 16777216; + + // storage class + + var storage; // Array; + + // generate classes + + Uint64BE = factory("Uint64BE", true, true); + Int64BE = factory("Int64BE", true, false); + Uint64LE = factory("Uint64LE", false, true); + Int64LE = factory("Int64LE", false, false); + + // class factory + + function factory(name, bigendian, unsigned) { + var posH = bigendian ? 0 : 4; + var posL = bigendian ? 4 : 0; + var pos0 = bigendian ? 0 : 3; + var pos1 = bigendian ? 1 : 2; + var pos2 = bigendian ? 2 : 1; + var pos3 = bigendian ? 3 : 0; + var fromPositive = bigendian ? fromPositiveBE : fromPositiveLE; + var fromNegative = bigendian ? fromNegativeBE : fromNegativeLE; + var proto = Int64.prototype; + var isName = "is" + name; + var _isInt64 = "_" + isName; + + // properties + proto.buffer = void 0; + proto.offset = 0; + proto[_isInt64] = true; + + // methods + proto.toNumber = toNumber; + proto.toString = toString; + proto.toJSON = toNumber; + proto.toArray = toArray; + + // add .toBuffer() method only when Buffer available + if (BUFFER) proto.toBuffer = toBuffer; + + // add .toArrayBuffer() method only when Uint8Array available + if (UINT8ARRAY) proto.toArrayBuffer = toArrayBuffer; + + // isUint64BE, isInt64BE + Int64[isName] = isInt64; + + // CommonJS + exports[name] = Int64; + + return Int64; + + // constructor + function Int64(buffer, offset, value, raddix) { + if (!(this instanceof Int64)) return new Int64(buffer, offset, value, raddix); + return init(this, buffer, offset, value, raddix); + } + + // isUint64BE, isInt64BE + function isInt64(b) { + return !!(b && b[_isInt64]); + } + + // initializer + function init(that, buffer, offset, value, raddix) { + if (UINT8ARRAY && ARRAYBUFFER) { + if (buffer instanceof ARRAYBUFFER) buffer = new UINT8ARRAY(buffer); + if (value instanceof ARRAYBUFFER) value = new UINT8ARRAY(value); + } + + // Int64BE() style + if (!buffer && !offset && !value && !storage) { + // shortcut to initialize with zero + that.buffer = newArray(ZERO, 0); + return; + } + + // Int64BE(value, raddix) style + if (!isValidBuffer(buffer, offset)) { + var _storage = storage || Array; + raddix = offset; + value = buffer; + offset = 0; + buffer = new _storage(8); + } + + that.buffer = buffer; + that.offset = offset |= 0; + + // Int64BE(buffer, offset) style + if (UNDEFINED === (typeof value === "undefined" ? "undefined" : _typeof(value))) return; + + // Int64BE(buffer, offset, value, raddix) style + if ("string" === typeof value) { + fromString(buffer, offset, value, raddix || 10); + } else if (isValidBuffer(value, raddix)) { + fromArray(buffer, offset, value, raddix); + } else if ("number" === typeof raddix) { + writeInt32(buffer, offset + posH, value); // high + writeInt32(buffer, offset + posL, raddix); // low + } else if (value > 0) { + fromPositive(buffer, offset, value); // positive + } else if (value < 0) { + fromNegative(buffer, offset, value); // negative + } else { + fromArray(buffer, offset, ZERO, 0); // zero, NaN and others + } + } + + function fromString(buffer, offset, str, raddix) { + var pos = 0; + var len = str.length; + var high = 0; + var low = 0; + if (str[0] === "-") pos++; + var sign = pos; + while (pos < len) { + var chr = parseInt(str[pos++], raddix); + if (!(chr >= 0)) break; // NaN + low = low * raddix + chr; + high = high * raddix + Math.floor(low / BIT32); + low %= BIT32; + } + if (sign) { + high = ~high; + if (low) { + low = BIT32 - low; + } else { + high++; + } + } + writeInt32(buffer, offset + posH, high); + writeInt32(buffer, offset + posL, low); + } + + function toNumber() { + var buffer = this.buffer; + var offset = this.offset; + var high = readInt32(buffer, offset + posH); + var low = readInt32(buffer, offset + posL); + if (!unsigned) high |= 0; // a trick to get signed + return high ? high * BIT32 + low : low; + } + + function toString(radix) { + var buffer = this.buffer; + var offset = this.offset; + var high = readInt32(buffer, offset + posH); + var low = readInt32(buffer, offset + posL); + var str = ""; + var sign = !unsigned && high & 0x80000000; + if (sign) { + high = ~high; + low = BIT32 - low; + } + radix = radix || 10; + while (1) { + var mod = high % radix * BIT32 + low; + high = Math.floor(high / radix); + low = Math.floor(mod / radix); + str = (mod % radix).toString(radix) + str; + if (!high && !low) break; + } + if (sign) { + str = "-" + str; + } + return str; + } + + function writeInt32(buffer, offset, value) { + buffer[offset + pos3] = value & 255; + value = value >> 8; + buffer[offset + pos2] = value & 255; + value = value >> 8; + buffer[offset + pos1] = value & 255; + value = value >> 8; + buffer[offset + pos0] = value & 255; + } + + function readInt32(buffer, offset) { + return buffer[offset + pos0] * BIT24 + (buffer[offset + pos1] << 16) + (buffer[offset + pos2] << 8) + buffer[offset + pos3]; + } + } + + function toArray(raw) { + var buffer = this.buffer; + var offset = this.offset; + storage = null; // Array + if (raw !== false && offset === 0 && buffer.length === 8 && isArray(buffer)) return buffer; + return newArray(buffer, offset); + } + + function toBuffer(raw) { + var buffer = this.buffer; + var offset = this.offset; + storage = BUFFER; + if (raw !== false && offset === 0 && buffer.length === 8 && Buffer.isBuffer(buffer)) return buffer; + var dest = new BUFFER(8); + fromArray(dest, 0, buffer, offset); + return dest; + } + + function toArrayBuffer(raw) { + var buffer = this.buffer; + var offset = this.offset; + var arrbuf = buffer.buffer; + storage = UINT8ARRAY; + if (raw !== false && offset === 0 && arrbuf instanceof ARRAYBUFFER && arrbuf.byteLength === 8) return arrbuf; + var dest = new UINT8ARRAY(8); + fromArray(dest, 0, buffer, offset); + return dest.buffer; + } + + function isValidBuffer(buffer, offset) { + var len = buffer && buffer.length; + offset |= 0; + return len && offset + 8 <= len && "string" !== typeof buffer[offset]; + } + + function fromArray(destbuf, destoff, srcbuf, srcoff) { + destoff |= 0; + srcoff |= 0; + for (var i = 0; i < 8; i++) { + destbuf[destoff++] = srcbuf[srcoff++] & 255; + } + } + + function newArray(buffer, offset) { + return Array.prototype.slice.call(buffer, offset, offset + 8); + } + + function fromPositiveBE(buffer, offset, value) { + var pos = offset + 8; + while (pos > offset) { + buffer[--pos] = value & 255; + value /= 256; + } + } + + function fromNegativeBE(buffer, offset, value) { + var pos = offset + 8; + value++; + while (pos > offset) { + buffer[--pos] = -value & 255 ^ 255; + value /= 256; + } + } + + function fromPositiveLE(buffer, offset, value) { + var end = offset + 8; + while (offset < end) { + buffer[offset++] = value & 255; + value /= 256; + } + } + + function fromNegativeLE(buffer, offset, value) { + var end = offset + 8; + value++; + while (offset < end) { + buffer[offset++] = -value & 255 ^ 255; + value /= 256; + } + } + + // https://github.com/retrofox/is-array + function _isArray(val) { + return !!val && "[object Array]" == Object.prototype.toString.call(val); + } + }((typeof exports === "undefined" ? "undefined" : _typeof(exports)) === 'object' && typeof exports.nodeName !== 'string' ? exports : this || {}); + }).call(this, require("buffer").Buffer); + }, { "buffer": 7 }], 16: [function (require, module, exports) { + var toString = {}.toString; + + module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; + }; + }, {}], 17: [function (require, module, exports) { + /*jslint node: true, vars: true, nomen: true */ + 'use strict'; + + var byEbmlID = { + 0x80: { + name: "ChapterDisplay", + level: 4, + type: "m", + multiple: true, + minver: 1, + webm: true, + description: "Contains all possible strings to use for the chapter display." + }, + 0x83: { + name: "TrackType", + level: 3, + type: "u", + mandatory: true, + minver: 1, + range: "1-254", + description: "A set of track types coded on 8 bits (1: video, 2: audio, 3: complex, 0x10: logo, 0x11: subtitle, 0x12: buttons, 0x20: control)." + }, + 0x85: { + name: "ChapString", + cppname: "ChapterString", + level: 5, + type: "8", + mandatory: true, + minver: 1, + webm: true, + description: "Contains the string to use as the chapter atom." + }, + 0x86: { + name: "CodecID", + level: 3, + type: "s", + mandatory: true, + minver: 1, + description: "An ID corresponding to the codec, see the codec page for more info." + }, + 0x88: { + name: "FlagDefault", + cppname: "TrackFlagDefault", + level: 3, + type: "u", + mandatory: true, + minver: 1, + "default": 1, + range: "0-1", + description: "Set if that track (audio, video or subs) SHOULD be active if no language found matches the user preference. (1 bit)" + }, + 0x89: { + name: "ChapterTrackNumber", + level: 5, + type: "u", + mandatory: true, + multiple: true, + minver: 1, + webm: false, + range: "not 0", + description: "UID of the Track to apply this chapter too. In the absense of a control track, choosing this chapter will select the listed Tracks and deselect unlisted tracks. Absense of this element indicates that the Chapter should be applied to any currently used Tracks." + }, + 0x91: { + name: "ChapterTimeStart", + level: 4, + type: "u", + mandatory: true, + minver: 1, + webm: true, + description: "Timestamp of the start of Chapter (not scaled)." + }, + 0x92: { + name: "ChapterTimeEnd", + level: 4, + type: "u", + minver: 1, + webm: false, + description: "Timestamp of the end of Chapter (timestamp excluded, not scaled)." + }, + 0x96: { + name: "CueRefTime", + level: 5, + type: "u", + mandatory: true, + minver: 2, + webm: false, + description: "Timestamp of the referenced Block." + }, + 0x97: { + name: "CueRefCluster", + level: 5, + type: "u", + mandatory: true, + webm: false, + description: "The Position of the Cluster containing the referenced Block." + }, + 0x98: { + name: "ChapterFlagHidden", + level: 4, + type: "u", + mandatory: true, + minver: 1, + webm: false, + "default": 0, + range: "0-1", + description: "If a chapter is hidden (1), it should not be available to the user interface (but still to Control Tracks; see flag notes). (1 bit)" + }, + 0x4254: { + name: "ContentCompAlgo", + level: 6, + type: "u", + mandatory: true, + minver: 1, + webm: false, + "default": 0, + // "br": [ "", "", "", "" ], + // "del": [ "1 - bzlib,", "2 - lzo1x" ], + description: "The compression algorithm used. Algorithms that have been specified so far are: 0 - zlib, 3 - Header Stripping" + }, + 0x4255: { + name: "ContentCompSettings", + level: 6, + type: "b", + minver: 1, + webm: false, + description: "Settings that might be needed by the decompressor. For Header Stripping (ContentCompAlgo=3), the bytes that were removed from the beggining of each frames of the track." + }, + 0x4282: { + name: "DocType", + level: 1, + type: "s", + mandatory: true, + "default": "matroska", + minver: 1, + description: "A string that describes the type of document that follows this EBML header. 'matroska' in our case or 'webm' for webm files." + }, + 0x4285: { + name: "DocTypeReadVersion", + level: 1, + type: "u", + mandatory: true, + "default": 1, + minver: 1, + description: "The minimum DocType version an interpreter has to support to read this file." + }, + 0x4286: { + name: "EBMLVersion", + level: 1, + type: "u", + mandatory: true, + "default": 1, + minver: 1, + description: "The version of EBML parser used to create the file." + }, + 0x4287: { + name: "DocTypeVersion", + level: 1, + type: "u", + mandatory: true, + "default": 1, + minver: 1, + description: "The version of DocType interpreter used to create the file." + }, + 0x4444: { + name: "SegmentFamily", + level: 2, + type: "b", + multiple: true, + minver: 1, + webm: false, + bytesize: 16, + description: "A randomly generated unique ID that all segments related to each other must use (128 bits)." + }, + 0x4461: { + name: "DateUTC", + level: 2, + type: "d", + minver: 1, + description: "Date of the origin of timestamp (value 0), i.e. production date." + }, + 0x4484: { + name: "TagDefault", + level: 4, + type: "u", + mandatory: true, + minver: 1, + webm: false, + "default": 1, + range: "0-1", + description: "Indication to know if this is the default/original language to use for the given tag. (1 bit)" + }, + 0x4485: { + name: "TagBinary", + level: 4, + type: "b", + minver: 1, + webm: false, + description: "The values of the Tag if it is binary. Note that this cannot be used in the same SimpleTag as TagString." + }, + 0x4487: { + name: "TagString", + level: 4, + type: "8", + minver: 1, + webm: false, + description: "The value of the Element." + }, + 0x4489: { + name: "Duration", + level: 2, + type: "f", + minver: 1, + range: "> 0", + description: "Duration of the segment (based on TimecodeScale)." + }, + 0x4598: { + name: "ChapterFlagEnabled", + level: 4, + type: "u", + mandatory: true, + minver: 1, + webm: false, + "default": 1, + range: "0-1", + description: "Specify wether the chapter is enabled. It can be enabled/disabled by a Control Track. When disabled, the movie should skip all the content between the TimeStart and TimeEnd of this chapter (see flag notes). (1 bit)" + }, + 0x4660: { + name: "FileMimeType", + level: 3, + type: "s", + mandatory: true, + minver: 1, + webm: false, + description: "MIME type of the file." + }, + 0x4661: { + name: "FileUsedStartTime", + level: 3, + type: "u", + divx: true, + description: "DivX font extension" + }, + 0x4662: { + name: "FileUsedEndTime", + level: 3, + type: "u", + divx: true, + description: "DivX font extension" + }, + 0x4675: { + name: "FileReferral", + level: 3, + type: "b", + webm: false, + description: "A binary value that a track/codec can refer to when the attachment is needed." + }, + 0x5031: { + name: "ContentEncodingOrder", + level: 5, + type: "u", + mandatory: true, + minver: 1, + webm: false, + "default": 0, + description: "Tells when this modification was used during encoding/muxing starting with 0 and counting upwards. The decoder/demuxer has to start with the highest order number it finds and work its way down. This value has to be unique over all ContentEncodingOrder elements in the segment." + }, + 0x5032: { + name: "ContentEncodingScope", + level: 5, + type: "u", + mandatory: true, + minver: 1, + webm: false, + "default": 1, + range: "not 0", + // "br": [ "", "", "" ], + description: "A bit field that describes which elements have been modified in this way. Values (big endian) can be OR'ed. Possible values: 1 - all frame contents, 2 - the track's private data, 4 - the next ContentEncoding (next ContentEncodingOrder. Either the data inside ContentCompression and/or ContentEncryption)" + }, + 0x5033: { + name: "ContentEncodingType", + level: 5, + type: "u", + mandatory: true, + minver: 1, + webm: false, + "default": 0, + // "br": [ "", "" ], + description: "A value describing what kind of transformation has been done. Possible values: 0 - compression, 1 - encryption" + }, + 0x5034: { + name: "ContentCompression", + level: 5, + type: "m", + minver: 1, + webm: false, + description: "Settings describing the compression used. Must be present if the value of ContentEncodingType is 0 and absent otherwise. Each block must be decompressable even if no previous block is available in order not to prevent seeking." + }, + 0x5035: { + name: "ContentEncryption", + level: 5, + type: "m", + minver: 1, + webm: false, + description: "Settings describing the encryption used. Must be present if the value of ContentEncodingType is 1 and absent otherwise." + }, + 0x5378: { + name: "CueBlockNumber", + level: 4, + type: "u", + minver: 1, + "default": 1, + range: "not 0", + description: "Number of the Block in the specified Cluster." + }, + 0x5654: { + name: "ChapterStringUID", + level: 4, + type: "8", + mandatory: false, + minver: 3, + webm: true, + description: "A unique string ID to identify the Chapter. Use for WebVTT cue identifier storage." + }, + 0x5741: { + name: "WritingApp", + level: 2, + type: "8", + mandatory: true, + minver: 1, + description: "Writing application (\"mkvmerge-0.3.3\")." + }, + 0x5854: { + name: "SilentTracks", + cppname: "ClusterSilentTracks", + level: 2, + type: "m", + minver: 1, + webm: false, + description: "The list of tracks that are not used in that part of the stream. It is useful when using overlay tracks on seeking. Then you should decide what track to use." + }, + 0x6240: { + name: "ContentEncoding", + level: 4, + type: "m", + mandatory: true, + multiple: true, + minver: 1, + webm: false, + description: "Settings for one content encoding like compression or encryption." + }, + 0x6264: { + name: "BitDepth", + cppname: "AudioBitDepth", + level: 4, + type: "u", + minver: 1, + range: "not 0", + description: "Bits per sample, mostly used for PCM." + }, + 0x6532: { + name: "SignedElement", + level: 3, + type: "b", + multiple: true, + webm: false, + description: "An element ID whose data will be used to compute the signature." + }, + 0x6624: { + name: "TrackTranslate", + level: 3, + type: "m", + multiple: true, + minver: 1, + webm: false, + description: "The track identification for the given Chapter Codec." + }, + 0x6911: { + name: "ChapProcessCommand", + cppname: "ChapterProcessCommand", + level: 5, + type: "m", + multiple: true, + minver: 1, + webm: false, + description: "Contains all the commands associated to the Atom." + }, + 0x6922: { + name: "ChapProcessTime", + cppname: "ChapterProcessTime", + level: 6, + type: "u", + mandatory: true, + minver: 1, + webm: false, + description: "Defines when the process command should be handled (0: during the whole chapter, 1: before starting playback, 2: after playback of the chapter)." + }, + 0x6924: { + name: "ChapterTranslate", + level: 2, + type: "m", + multiple: true, + minver: 1, + webm: false, + description: "A tuple of corresponding ID used by chapter codecs to represent this segment." + }, + 0x6933: { + name: "ChapProcessData", + cppname: "ChapterProcessData", + level: 6, + type: "b", + mandatory: true, + minver: 1, + webm: false, + description: "Contains the command information. The data should be interpreted depending on the ChapProcessCodecID value. For ChapProcessCodecID = 1, the data correspond to the binary DVD cell pre/post commands." + }, + 0x6944: { + name: "ChapProcess", + cppname: "ChapterProcess", + level: 4, + type: "m", + multiple: true, + minver: 1, + webm: false, + description: "Contains all the commands associated to the Atom." + }, + 0x6955: { + name: "ChapProcessCodecID", + cppname: "ChapterProcessCodecID", + level: 5, + type: "u", + mandatory: true, + minver: 1, + webm: false, + "default": 0, + description: "Contains the type of the codec used for the processing. A value of 0 means native Matroska processing (to be defined), a value of 1 means the DVD command set is used. More codec IDs can be added later." + }, + 0x7373: { + name: "Tag", + level: 2, + type: "m", + mandatory: true, + multiple: true, + minver: 1, + webm: false, + description: "Element containing elements specific to Tracks/Chapters." + }, + 0x7384: { + name: "SegmentFilename", + level: 2, + type: "8", + minver: 1, + webm: false, + description: "A filename corresponding to this segment." + }, + 0x7446: { + name: "AttachmentLink", + cppname: "TrackAttachmentLink", + level: 3, + type: "u", + minver: 1, + webm: false, + range: "not 0", + description: "The UID of an attachment that is used by this codec." + }, + 0x258688: { + name: "CodecName", + level: 3, + type: "8", + minver: 1, + description: "A human-readable string specifying the codec." + }, + 0x18538067: { + name: "Segment", + level: "0", + type: "m", + mandatory: true, + multiple: true, + minver: 1, + description: "This element contains all other top-level (level 1) elements. Typically a Matroska file is composed of 1 segment." + }, + 0x447a: { + name: "TagLanguage", + level: 4, + type: "s", + mandatory: true, + minver: 1, + webm: false, + "default": "und", + description: "Specifies the language of the tag specified, in the Matroska languages form." + }, + 0x45a3: { + name: "TagName", + level: 4, + type: "8", + mandatory: true, + minver: 1, + webm: false, + description: "The name of the Tag that is going to be stored." + }, + 0x67c8: { + name: "SimpleTag", + cppname: "TagSimple", + level: 3, + "recursive": "1", + type: "m", + mandatory: true, + multiple: true, + minver: 1, + webm: false, + description: "Contains general information about the target." + }, + 0x63c6: { + name: "TagAttachmentUID", + level: 4, + type: "u", + multiple: true, + minver: 1, + webm: false, + "default": 0, + description: "A unique ID to identify the Attachment(s) the tags belong to. If the value is 0 at this level, the tags apply to all the attachments in the Segment." + }, + 0x63c4: { + name: "TagChapterUID", + level: 4, + type: "u", + multiple: true, + minver: 1, + webm: false, + "default": 0, + description: "A unique ID to identify the Chapter(s) the tags belong to. If the value is 0 at this level, the tags apply to all chapters in the Segment." + }, + 0x63c9: { + name: "TagEditionUID", + level: 4, + type: "u", + multiple: true, + minver: 1, + webm: false, + "default": 0, + description: "A unique ID to identify the EditionEntry(s) the tags belong to. If the value is 0 at this level, the tags apply to all editions in the Segment." + }, + 0x63c5: { + name: "TagTrackUID", + level: 4, + type: "u", + multiple: true, + minver: 1, + webm: false, + "default": 0, + description: "A unique ID to identify the Track(s) the tags belong to. If the value is 0 at this level, the tags apply to all tracks in the Segment." + }, + 0x63ca: { + name: "TargetType", + cppname: "TagTargetType", + level: 4, + type: "s", + minver: 1, + webm: false, + "strong": "informational", + description: "An string that can be used to display the logical level of the target like \"ALBUM\", \"TRACK\", \"MOVIE\", \"CHAPTER\", etc (see TargetType)." + }, + 0x68ca: { + name: "TargetTypeValue", + cppname: "TagTargetTypeValue", + level: 4, + type: "u", + minver: 1, + webm: false, + "default": 50, + description: "A number to indicate the logical level of the target (see TargetType)." + }, + 0x63c0: { + name: "Targets", + cppname: "TagTargets", + level: 3, + type: "m", + mandatory: true, + minver: 1, + webm: false, + description: "Contain all UIDs where the specified meta data apply. It is empty to describe everything in the segment." + }, + 0x1254c367: { + name: "Tags", + level: 1, + type: "m", + multiple: true, + minver: 1, + webm: false, + description: "Element containing elements specific to Tracks/Chapters. A list of valid tags can be found here." + }, + 0x450d: { + name: "ChapProcessPrivate", + cppname: "ChapterProcessPrivate", + level: 5, + type: "b", + minver: 1, + webm: false, + description: "Some optional data attached to the ChapProcessCodecID information. For ChapProcessCodecID = 1, it is the \"DVD level\" equivalent." + }, + 0x437e: { + name: "ChapCountry", + cppname: "ChapterCountry", + level: 5, + type: "s", + multiple: true, + minver: 1, + webm: false, + description: "The countries corresponding to the string, same 2 octets as in Internet domains." + }, + 0x437c: { + name: "ChapLanguage", + cppname: "ChapterLanguage", + level: 5, + type: "s", + mandatory: true, + multiple: true, + minver: 1, + webm: true, + "default": "eng", + description: "The languages corresponding to the string, in the bibliographic ISO-639-2 form." + }, + 0x8f: { + name: "ChapterTrack", + level: 4, + type: "m", + minver: 1, + webm: false, + description: "List of tracks on which the chapter applies. If this element is not present, all tracks apply" + }, + 0x63c3: { + name: "ChapterPhysicalEquiv", + level: 4, + type: "u", + minver: 1, + webm: false, + description: "Specify the physical equivalent of this ChapterAtom like \"DVD\" (60) or \"SIDE\" (50), see complete list of values." + }, + 0x6ebc: { + name: "ChapterSegmentEditionUID", + level: 4, + type: "u", + minver: 1, + webm: false, + range: "not 0", + description: "The EditionUID to play from the segment linked in ChapterSegmentUID." + }, + 0x6e67: { + name: "ChapterSegmentUID", + level: 4, + type: "b", + minver: 1, + webm: false, + range: ">0", + bytesize: 16, + description: "A segment to play in place of this chapter. Edition ChapterSegmentEditionUID should be used for this segment, otherwise no edition is used." + }, + 0x73c4: { + name: "ChapterUID", + level: 4, + type: "u", + mandatory: true, + minver: 1, + webm: true, + range: "not 0", + description: "A unique ID to identify the Chapter." + }, + 0xb6: { + name: "ChapterAtom", + level: 3, + "recursive": "1", + type: "m", + mandatory: true, + multiple: true, + minver: 1, + webm: true, + description: "Contains the atom information to use as the chapter atom (apply to all tracks)." + }, + 0x45dd: { + name: "EditionFlagOrdered", + level: 3, + type: "u", + minver: 1, + webm: false, + "default": 0, + range: "0-1", + description: "Specify if the chapters can be defined multiple times and the order to play them is enforced. (1 bit)" + }, + 0x45db: { + name: "EditionFlagDefault", + level: 3, + type: "u", + mandatory: true, + minver: 1, + webm: false, + "default": 0, + range: "0-1", + description: "If a flag is set (1) the edition should be used as the default one. (1 bit)" + }, + 0x45bd: { + name: "EditionFlagHidden", + level: 3, + type: "u", + mandatory: true, + minver: 1, + webm: false, + "default": 0, + range: "0-1", + description: "If an edition is hidden (1), it should not be available to the user interface (but still to Control Tracks; see flag notes). (1 bit)" + }, + 0x45bc: { + name: "EditionUID", + level: 3, + type: "u", + minver: 1, + webm: false, + range: "not 0", + description: "A unique ID to identify the edition. It's useful for tagging an edition." + }, + 0x45b9: { + name: "EditionEntry", + level: 2, + type: "m", + mandatory: true, + multiple: true, + minver: 1, + webm: true, + description: "Contains all information about a segment edition." + }, + 0x1043a770: { + name: "Chapters", + level: 1, + type: "m", + minver: 1, + webm: true, + description: "A system to define basic menus and partition data. For more detailed information, look at the Chapters Explanation." + }, + 0x46ae: { + name: "FileUID", + level: 3, + type: "u", + mandatory: true, + minver: 1, + webm: false, + range: "not 0", + description: "Unique ID representing the file, as random as possible." + }, + 0x465c: { + name: "FileData", + level: 3, + type: "b", + mandatory: true, + minver: 1, + webm: false, + description: "The data of the file." + }, + 0x466e: { + name: "FileName", + level: 3, + type: "8", + mandatory: true, + minver: 1, + webm: false, + description: "Filename of the attached file." + }, + 0x467e: { + name: "FileDescription", + level: 3, + type: "8", + minver: 1, + webm: false, + description: "A human-friendly name for the attached file." + }, + 0x61a7: { + name: "AttachedFile", + level: 2, + type: "m", + mandatory: true, + multiple: true, + minver: 1, + webm: false, + description: "An attached file." + }, + 0x1941a469: { + name: "Attachments", + level: 1, + type: "m", + minver: 1, + webm: false, + description: "Contain attached files." + }, + 0xeb: { + name: "CueRefCodecState", + level: 5, + type: "u", + webm: false, + "default": 0, + description: "The position of the Codec State corresponding to this referenced element. 0 means that the data is taken from the initial Track Entry." + }, + 0x535f: { + name: "CueRefNumber", + level: 5, + type: "u", + webm: false, + "default": 1, + range: "not 0", + description: "Number of the referenced Block of Track X in the specified Cluster." + }, + 0xdb: { + name: "CueReference", + level: 4, + type: "m", + multiple: true, + minver: 2, + webm: false, + description: "The Clusters containing the required referenced Blocks." + }, + 0xea: { + name: "CueCodecState", + level: 4, + type: "u", + minver: 2, + webm: false, + "default": 0, + description: "The position of the Codec State corresponding to this Cue element. 0 means that the data is taken from the initial Track Entry." + }, + 0xb2: { + name: "CueDuration", + level: 4, + type: "u", + mandatory: false, + minver: 4, + webm: false, + description: "The duration of the block according to the segment time base. If missing the track's DefaultDuration does not apply and no duration information is available in terms of the cues." + }, + 0xf0: { + name: "CueRelativePosition", + level: 4, + type: "u", + mandatory: false, + minver: 4, + webm: false, + description: "The relative position of the referenced block inside the cluster with 0 being the first possible position for an element inside that cluster.", + position: "clusterRelative" + }, + 0xf1: { + name: "CueClusterPosition", + level: 4, + type: "u", + mandatory: true, + minver: 1, + description: "The position of the Cluster containing the required Block.", + position: "segment" + }, + 0xf7: { + name: "CueTrack", + level: 4, + type: "u", + mandatory: true, + minver: 1, + range: "not 0", + description: "The track for which a position is given." + }, + 0xb7: { + name: "CueTrackPositions", + level: 3, + type: "m", + mandatory: true, + multiple: true, + minver: 1, + description: "Contain positions for different tracks corresponding to the timestamp." + }, + 0xb3: { + name: "CueTime", + level: 3, + type: "u", + mandatory: true, + minver: 1, + description: "Absolute timestamp according to the segment time base." + }, + 0xbb: { + name: "CuePoint", + level: 2, + type: "m", + mandatory: true, + multiple: true, + minver: 1, + description: "Contains all information relative to a seek point in the segment." + }, + 0x1c53bb6b: { + name: "Cues", + level: 1, + type: "m", + minver: 1, + description: "A top-level element to speed seeking access. All entries are local to the segment. Should be mandatory for non \"live\" streams." + }, + 0x47e6: { + name: "ContentSigHashAlgo", + level: 6, + type: "u", + minver: 1, + webm: false, + "default": 0, + // "br": [ "", "" ], + description: "The hash algorithm used for the signature. A value of '0' means that the contents have not been signed but only encrypted. Predefined values: 1 - SHA1-160 2 - MD5" + }, + 0x47e5: { + name: "ContentSigAlgo", + level: 6, + type: "u", + minver: 1, + webm: false, + "default": 0, + // "br": "", + description: "The algorithm used for the signature. A value of '0' means that the contents have not been signed but only encrypted. Predefined values: 1 - RSA" + }, + 0x47e4: { + name: "ContentSigKeyID", + level: 6, + type: "b", + minver: 1, + webm: false, + description: "This is the ID of the private key the data was signed with." + }, + 0x47e3: { + name: "ContentSignature", + level: 6, + type: "b", + minver: 1, + webm: false, + description: "A cryptographic signature of the contents." + }, + 0x47e2: { + name: "ContentEncKeyID", + level: 6, + type: "b", + minver: 1, + webm: false, + description: "For public key algorithms this is the ID of the public key the the data was encrypted with." + }, + 0x47e1: { + name: "ContentEncAlgo", + level: 6, + type: "u", + minver: 1, + webm: false, + "default": 0, + // "br": "", + description: "The encryption algorithm used. The value '0' means that the contents have not been encrypted but only signed. Predefined values: 1 - DES, 2 - 3DES, 3 - Twofish, 4 - Blowfish, 5 - AES" + }, + 0x6d80: { + name: "ContentEncodings", + level: 3, + type: "m", + minver: 1, + webm: false, + description: "Settings for several content encoding mechanisms like compression or encryption." + }, + 0xc4: { + name: "TrickMasterTrackSegmentUID", + level: 3, + type: "b", + divx: true, + bytesize: 16, + description: "DivX trick track extenstions" + }, + 0xc7: { + name: "TrickMasterTrackUID", + level: 3, + type: "u", + divx: true, + description: "DivX trick track extenstions" + }, + 0xc6: { + name: "TrickTrackFlag", + level: 3, + type: "u", + divx: true, + "default": 0, + description: "DivX trick track extenstions" + }, + 0xc1: { + name: "TrickTrackSegmentUID", + level: 3, + type: "b", + divx: true, + bytesize: 16, + description: "DivX trick track extenstions" + }, + 0xc0: { + name: "TrickTrackUID", + level: 3, + type: "u", + divx: true, + description: "DivX trick track extenstions" + }, + 0xed: { + name: "TrackJoinUID", + level: 5, + type: "u", + mandatory: true, + multiple: true, + minver: 3, + webm: false, + range: "not 0", + description: "The trackUID number of a track whose blocks are used to create this virtual track." + }, + 0xe9: { + name: "TrackJoinBlocks", + level: 4, + type: "m", + minver: 3, + webm: false, + description: "Contains the list of all tracks whose Blocks need to be combined to create this virtual track" + }, + 0xe6: { + name: "TrackPlaneType", + level: 6, + type: "u", + mandatory: true, + minver: 3, + webm: false, + description: "The kind of plane this track corresponds to (0: left eye, 1: right eye, 2: background)." + }, + 0xe5: { + name: "TrackPlaneUID", + level: 6, + type: "u", + mandatory: true, + minver: 3, + webm: false, + range: "not 0", + description: "The trackUID number of the track representing the plane." + }, + 0xe4: { + name: "TrackPlane", + level: 5, + type: "m", + mandatory: true, + multiple: true, + minver: 3, + webm: false, + description: "Contains a video plane track that need to be combined to create this 3D track" + }, + 0xe3: { + name: "TrackCombinePlanes", + level: 4, + type: "m", + minver: 3, + webm: false, + description: "Contains the list of all video plane tracks that need to be combined to create this 3D track" + }, + 0xe2: { + name: "TrackOperation", + level: 3, + type: "m", + minver: 3, + webm: false, + description: "Operation that needs to be applied on tracks to create this virtual track. For more details look at the Specification Notes on the subject." + }, + 0x7d7b: { + name: "ChannelPositions", + cppname: "AudioPosition", + level: 4, + type: "b", + webm: false, + description: "Table of horizontal angles for each successive channel, see appendix." + }, + 0x9f: { + name: "Channels", + cppname: "AudioChannels", + level: 4, + type: "u", + mandatory: true, + minver: 1, + "default": 1, + range: "not 0", + description: "Numbers of channels in the track." + }, + 0x78b5: { + name: "OutputSamplingFrequency", + cppname: "AudioOutputSamplingFreq", + level: 4, + type: "f", + minver: 1, + "default": "Sampling Frequency", + range: "> 0", + description: "Real output sampling frequency in Hz (used for SBR techniques)." + }, + 0xb5: { + name: "SamplingFrequency", + cppname: "AudioSamplingFreq", + level: 4, + type: "f", + mandatory: true, + minver: 1, + "default": 8000.0, + range: "> 0", + description: "Sampling frequency in Hz." + }, + 0xe1: { + name: "Audio", + cppname: "TrackAudio", + level: 3, + type: "m", + minver: 1, + description: "Audio settings." + }, + 0x2383e3: { + name: "FrameRate", + cppname: "VideoFrameRate", + level: 4, + type: "f", + range: "> 0", + "strong": "Informational", + description: "Number of frames per second. only." + }, + 0x2fb523: { + name: "GammaValue", + cppname: "VideoGamma", + level: 4, + type: "f", + webm: false, + range: "> 0", + description: "Gamma Value." + }, + 0x2eb524: { + name: "ColourSpace", + cppname: "VideoColourSpace", + level: 4, + type: "b", + minver: 1, + webm: false, + bytesize: 4, + description: "Same value as in AVI (32 bits)." + }, + 0x54b3: { + name: "AspectRatioType", + cppname: "VideoAspectRatio", + level: 4, + type: "u", + minver: 1, + "default": 0, + description: "Specify the possible modifications to the aspect ratio (0: free resizing, 1: keep aspect ratio, 2: fixed)." + }, + 0x54b2: { + name: "DisplayUnit", + cppname: "VideoDisplayUnit", + level: 4, + type: "u", + minver: 1, + "default": 0, + description: "How DisplayWidth & DisplayHeight should be interpreted (0: pixels, 1: centimeters, 2: inches, 3: Display Aspect Ratio)." + }, + 0x54ba: { + name: "DisplayHeight", + cppname: "VideoDisplayHeight", + level: 4, + type: "u", + minver: 1, + "default": "PixelHeight", + range: "not 0", + description: "Height of the video frames to display. The default value is only valid when DisplayUnit is 0." + }, + 0x54b0: { + name: "DisplayWidth", + cppname: "VideoDisplayWidth", + level: 4, + type: "u", + minver: 1, + "default": "PixelWidth", + range: "not 0", + description: "Width of the video frames to display. The default value is only valid when DisplayUnit is 0." + }, + 0x54dd: { + name: "PixelCropRight", + cppname: "VideoPixelCropRight", + level: 4, + type: "u", + minver: 1, + "default": 0, + description: "The number of video pixels to remove on the right of the image." + }, + 0x54cc: { + name: "PixelCropLeft", + cppname: "VideoPixelCropLeft", + level: 4, + type: "u", + minver: 1, + "default": 0, + description: "The number of video pixels to remove on the left of the image." + }, + 0x54bb: { + name: "PixelCropTop", + cppname: "VideoPixelCropTop", + level: 4, + type: "u", + minver: 1, + "default": 0, + description: "The number of video pixels to remove at the top of the image." + }, + 0x54aa: { + name: "PixelCropBottom", + cppname: "VideoPixelCropBottom", + level: 4, + type: "u", + minver: 1, + "default": 0, + description: "The number of video pixels to remove at the bottom of the image (for HDTV content)." + }, + 0xba: { + name: "PixelHeight", + cppname: "VideoPixelHeight", + level: 4, + type: "u", + mandatory: true, + minver: 1, + range: "not 0", + description: "Height of the encoded video frames in pixels." + }, + 0xb0: { + name: "PixelWidth", + cppname: "VideoPixelWidth", + level: 4, + type: "u", + mandatory: true, + minver: 1, + range: "not 0", + description: "Width of the encoded video frames in pixels." + }, + 0x53b9: { + name: "OldStereoMode", + level: 4, + type: "u", + "maxver": "0", + webm: false, + divx: false, + description: "DEPRECATED, DO NOT USE. Bogus StereoMode value used in old versions of libmatroska. (0: mono, 1: right eye, 2: left eye, 3: both eyes)." + }, + 0x53c0: { + name: "AlphaMode", + cppname: "VideoAlphaMode", + level: 4, + type: "u", + minver: 3, + webm: true, + "default": 0, + description: "Alpha Video Mode. Presence of this element indicates that the BlockAdditional element could contain Alpha data." + }, + 0x53b8: { + name: "StereoMode", + cppname: "VideoStereoMode", + level: 4, + type: "u", + minver: 3, + webm: true, + "default": 0, + description: "Stereo-3D video mode (0: mono, 1: side by side (left eye is first), 2: top-bottom (right eye is first), 3: top-bottom (left eye is first), 4: checkboard (right is first), 5: checkboard (left is first), 6: row interleaved (right is first), 7: row interleaved (left is first), 8: column interleaved (right is first), 9: column interleaved (left is first), 10: anaglyph (cyan/red), 11: side by side (right eye is first), 12: anaglyph (green/magenta), 13 both eyes laced in one Block (left eye is first), 14 both eyes laced in one Block (right eye is first)) . There are some more details on 3D support in the Specification Notes." + }, + 0x9a: { + name: "FlagInterlaced", + cppname: "VideoFlagInterlaced", + level: 4, + type: "u", + mandatory: true, + minver: 2, + webm: true, + "default": 0, + range: "0-1", + description: "Set if the video is interlaced. (1 bit)" + }, + 0xe0: { + name: "Video", + cppname: "TrackVideo", + level: 3, + type: "m", + minver: 1, + description: "Video settings." + }, + 0x66a5: { + name: "TrackTranslateTrackID", + level: 4, + type: "b", + mandatory: true, + minver: 1, + webm: false, + description: "The binary value used to represent this track in the chapter codec data. The format depends on the ChapProcessCodecID used." + }, + 0x66bf: { + name: "TrackTranslateCodec", + level: 4, + type: "u", + mandatory: true, + minver: 1, + webm: false, + description: "The chapter codec using this ID (0: Matroska Script, 1: DVD-menu)." + }, + 0x66fc: { + name: "TrackTranslateEditionUID", + level: 4, + type: "u", + multiple: true, + minver: 1, + webm: false, + description: "Specify an edition UID on which this translation applies. When not specified, it means for all editions found in the segment." + }, + 0x56bb: { + name: "SeekPreRoll", + level: 3, + type: "u", + mandatory: true, + multiple: false, + "default": 0, + minver: 4, + webm: true, + description: "After a discontinuity, SeekPreRoll is the duration in nanoseconds of the data the decoder must decode before the decoded data is valid." + }, + 0x56aa: { + name: "CodecDelay", + level: 3, + type: "u", + multiple: false, + "default": 0, + minver: 4, + webm: true, + description: "CodecDelay is The codec-built-in delay in nanoseconds. This value must be subtracted from each block timestamp in order to get the actual timestamp. The value should be small so the muxing of tracks with the same actual timestamp are in the same Cluster." + }, + 0x6fab: { + name: "TrackOverlay", + level: 3, + type: "u", + multiple: true, + minver: 1, + webm: false, + description: "Specify that this track is an overlay track for the Track specified (in the u-integer). That means when this track has a gap (see SilentTracks) the overlay track should be used instead. The order of multiple TrackOverlay matters, the first one is the one that should be used. If not found it should be the second, etc." + }, + 0xaa: { + name: "CodecDecodeAll", + level: 3, + type: "u", + mandatory: true, + minver: 2, + webm: false, + "default": 1, + range: "0-1", + description: "The codec can decode potentially damaged data (1 bit)." + }, + 0x26b240: { + name: "CodecDownloadURL", + level: 3, + type: "s", + multiple: true, + webm: false, + description: "A URL to download about the codec used." + }, + 0x3b4040: { + name: "CodecInfoURL", + level: 3, + type: "s", + multiple: true, + webm: false, + description: "A URL to find information about the codec used." + }, + 0x3a9697: { + name: "CodecSettings", + level: 3, + type: "8", + webm: false, + description: "A string describing the encoding setting used." + }, + 0x63a2: { + name: "CodecPrivate", + level: 3, + type: "b", + minver: 1, + description: "Private data only known to the codec." + }, + 0x22b59c: { + name: "Language", + cppname: "TrackLanguage", + level: 3, + type: "s", + minver: 1, + "default": "eng", + description: "Specifies the language of the track in the Matroska languages form." + }, + 0x536e: { + name: "Name", + cppname: "TrackName", + level: 3, + type: "8", + minver: 1, + description: "A human-readable track name." + }, + 0x55ee: { + name: "MaxBlockAdditionID", + level: 3, + type: "u", + mandatory: true, + minver: 1, + webm: false, + "default": 0, + description: "The maximum value of BlockAdditions for this track." + }, + 0x537f: { + name: "TrackOffset", + level: 3, + type: "i", + webm: false, + "default": 0, + description: "A value to add to the Block's Timestamp. This can be used to adjust the playback offset of a track." + }, + 0x23314f: { + name: "TrackTimecodeScale", + level: 3, + type: "f", + mandatory: true, + minver: 1, + "maxver": "3", + webm: false, + "default": 1.0, + range: "> 0", + description: "DEPRECATED, DO NOT USE. The scale to apply on this track to work at normal speed in relation with other tracks (mostly used to adjust video speed when the audio length differs)." + }, + 0x234e7a: { + name: "DefaultDecodedFieldDuration", + cppname: "TrackDefaultDecodedFieldDuration", + level: 3, + type: "u", + minver: 4, + range: "not 0", + description: "The period in nanoseconds (not scaled by TimcodeScale)\nbetween two successive fields at the output of the decoding process (see the notes)" + }, + 0x23e383: { + name: "DefaultDuration", + cppname: "TrackDefaultDuration", + level: 3, + type: "u", + minver: 1, + range: "not 0", + description: "Number of nanoseconds (not scaled via TimecodeScale) per frame ('frame' in the Matroska sense -- one element put into a (Simple)Block)." + }, + 0x6df8: { + name: "MaxCache", + cppname: "TrackMaxCache", + level: 3, + type: "u", + minver: 1, + webm: false, + description: "The maximum cache size required to store referenced frames in and the current frame. 0 means no cache is needed." + }, + 0x6de7: { + name: "MinCache", + cppname: "TrackMinCache", + level: 3, + type: "u", + mandatory: true, + minver: 1, + webm: false, + "default": 0, + description: "The minimum number of frames a player should be able to cache during playback. If set to 0, the reference pseudo-cache system is not used." + }, + 0x9c: { + name: "FlagLacing", + cppname: "TrackFlagLacing", + level: 3, + type: "u", + mandatory: true, + minver: 1, + "default": 1, + range: "0-1", + description: "Set if the track may contain blocks using lacing. (1 bit)" + }, + 0x55aa: { + name: "FlagForced", + cppname: "TrackFlagForced", + level: 3, + type: "u", + mandatory: true, + minver: 1, + "default": 0, + range: "0-1", + description: "Set if that track MUST be active during playback. There can be many forced track for a kind (audio, video or subs), the player should select the one which language matches the user preference or the default + forced track. Overlay MAY happen between a forced and non-forced track of the same kind. (1 bit)" + }, + 0xb9: { + name: "FlagEnabled", + cppname: "TrackFlagEnabled", + level: 3, + type: "u", + mandatory: true, + minver: 2, + webm: true, + "default": 1, + range: "0-1", + description: "Set if the track is usable. (1 bit)" + }, + 0x73c5: { + name: "TrackUID", + level: 3, + type: "u", + mandatory: true, + minver: 1, + range: "not 0", + description: "A unique ID to identify the Track. This should be kept the same when making a direct stream copy of the Track to another file." + }, + 0xd7: { + name: "TrackNumber", + level: 3, + type: "u", + mandatory: true, + minver: 1, + range: "not 0", + description: "The track number as used in the Block Header (using more than 127 tracks is not encouraged, though the design allows an unlimited number)." + }, + 0xae: { + name: "TrackEntry", + level: 2, + type: "m", + mandatory: true, + multiple: true, + minver: 1, + description: "Describes a track with all elements." + }, + 0x1654ae6b: { + name: "Tracks", + level: 1, + type: "m", + multiple: true, + minver: 1, + description: "A top-level block of information with many tracks described." + }, + 0xaf: { + name: "EncryptedBlock", + level: 2, + type: "b", + multiple: true, + webm: false, + description: "Similar to EncryptedBlock Structure)" + }, + 0xca: { + name: "ReferenceTimeCode", + level: 4, + type: "u", + multiple: false, + mandatory: true, + minver: 0, + webm: false, + divx: true, + description: "DivX trick track extenstions" + }, + 0xc9: { + name: "ReferenceOffset", + level: 4, + type: "u", + multiple: false, + mandatory: true, + minver: 0, + webm: false, + divx: true, + description: "DivX trick track extenstions" + }, + 0xc8: { + name: "ReferenceFrame", + level: 3, + type: "m", + multiple: false, + minver: 0, + webm: false, + divx: true, + description: "DivX trick track extenstions" + }, + 0xcf: { + name: "SliceDuration", + level: 5, + type: "u", + "default": 0, + description: "The (scaled) duration to apply to the element." + }, + 0xce: { + name: "Delay", + cppname: "SliceDelay", + level: 5, + type: "u", + "default": 0, + description: "The (scaled) delay to apply to the element." + }, + 0xcb: { + name: "BlockAdditionID", + cppname: "SliceBlockAddID", + level: 5, + type: "u", + "default": 0, + description: "The ID of the BlockAdditional element (0 is the main Block)." + }, + 0xcd: { + name: "FrameNumber", + cppname: "SliceFrameNumber", + level: 5, + type: "u", + "default": 0, + description: "The number of the frame to generate from this lace with this delay (allow you to generate many frames from the same Block/Frame)." + }, + 0xcc: { + name: "LaceNumber", + cppname: "SliceLaceNumber", + level: 5, + type: "u", + minver: 1, + "default": 0, + divx: false, + description: "The reverse number of the frame in the lace (0 is the last frame, 1 is the next to last, etc). While there are a few files in the wild with this element, it is no longer in use and has been deprecated. Being able to interpret this element is not required for playback." + }, + 0xe8: { + name: "TimeSlice", + level: 4, + type: "m", + multiple: true, + minver: 1, + divx: false, + description: "Contains extra time information about the data contained in the Block. While there are a few files in the wild with this element, it is no longer in use and has been deprecated. Being able to interpret this element is not required for playback." + }, + 0x8e: { + name: "Slices", + level: 3, + type: "m", + minver: 1, + divx: false, + description: "Contains slices description." + }, + 0x75a2: { + name: "DiscardPadding", + level: 3, + type: "i", + minver: 4, + webm: true, + description: "Duration in nanoseconds of the silent data added to the Block (padding at the end of the Block for positive value, at the beginning of the Block for negative value). The duration of DiscardPadding is not calculated in the duration of the TrackEntry and should be discarded during playback." + }, + 0xa4: { + name: "CodecState", + level: 3, + type: "b", + minver: 2, + webm: false, + description: "The new codec state to use. Data interpretation is private to the codec. This information should always be referenced by a seek entry." + }, + 0xfd: { + name: "ReferenceVirtual", + level: 3, + type: "i", + webm: false, + description: "Relative position of the data that should be in position of the virtual block." + }, + 0xfb: { + name: "ReferenceBlock", + level: 3, + type: "i", + multiple: true, + minver: 1, + description: "Timestamp of another frame used as a reference (ie: B or P frame). The timestamp is relative to the block it's attached to." + }, + 0xfa: { + name: "ReferencePriority", + cppname: "FlagReferenced", + level: 3, + type: "u", + mandatory: true, + minver: 1, + webm: false, + "default": 0, + description: "This frame is referenced and has the specified cache priority. In cache only a frame of the same or higher priority can replace this frame. A value of 0 means the frame is not referenced." + }, + 0x9b: { + name: "BlockDuration", + level: 3, + type: "u", + minver: 1, + "default": "TrackDuration", + description: "The duration of the Block (based on TimecodeScale). This element is mandatory when DefaultDuration is set for the track (but can be omitted as other default values). When not written and with no DefaultDuration, the value is assumed to be the difference between the timestamp of this Block and the timestamp of the next Block in \"display\" order (not coding order). This element can be useful at the end of a Track (as there is not other Block available), or when there is a break in a track like for subtitle tracks. When set to 0 that means the frame is not a keyframe." + }, + 0xa5: { + name: "BlockAdditional", + level: 5, + type: "b", + mandatory: true, + minver: 1, + webm: false, + description: "Interpreted by the codec as it wishes (using the BlockAddID)." + }, + 0xee: { + name: "BlockAddID", + level: 5, + type: "u", + mandatory: true, + minver: 1, + webm: false, + "default": 1, + range: "not 0", + description: "An ID to identify the BlockAdditional level." + }, + 0xa6: { + name: "BlockMore", + level: 4, + type: "m", + mandatory: true, + multiple: true, + minver: 1, + webm: false, + description: "Contain the BlockAdditional and some parameters." + }, + 0x75a1: { + name: "BlockAdditions", + level: 3, + type: "m", + minver: 1, + webm: false, + description: "Contain additional blocks to complete the main one. An EBML parser that has no knowledge of the Block structure could still see and use/skip these data." + }, + 0xa2: { + name: "BlockVirtual", + level: 3, + type: "b", + webm: false, + description: "A Block with no data. It must be stored in the stream at the place the real Block should be in display order. (see Block Virtual)" + }, + 0xa1: { + name: "Block", + level: 3, + type: "b", + mandatory: true, + minver: 1, + description: "Block containing the actual data to be rendered and a timestamp relative to the Cluster Timecode. (see Block Structure)" + }, + 0xa0: { + name: "BlockGroup", + level: 2, + type: "m", + multiple: true, + minver: 1, + description: "Basic container of information containing a single Block or BlockVirtual, and information specific to that Block/VirtualBlock." + }, + 0xa3: { + name: "SimpleBlock", + level: 2, + type: "b", + multiple: true, + minver: 2, + webm: true, + divx: true, + description: "Similar to SimpleBlock Structure" + }, + 0xab: { + name: "PrevSize", + cppname: "ClusterPrevSize", + level: 2, + type: "u", + minver: 1, + description: "Size of the previous Cluster, in octets. Can be useful for backward playing.", + position: "prevCluster" + }, + 0xa7: { + name: "Position", + cppname: "ClusterPosition", + level: 2, + type: "u", + minver: 1, + webm: false, + description: "The Position of the Cluster in the segment (0 in live broadcast streams). It might help to resynchronise offset on damaged streams.", + position: "segment" + }, + 0x58d7: { + name: "SilentTrackNumber", + cppname: "ClusterSilentTrackNumber", + level: 3, + type: "u", + multiple: true, + minver: 1, + webm: false, + description: "One of the track number that are not used from now on in the stream. It could change later if not specified as silent in a further Cluster." + }, + 0xe7: { + name: "Timecode", + cppname: "ClusterTimecode", + level: 2, + type: "u", + mandatory: true, + minver: 1, + description: "Absolute timestamp of the cluster (based on TimecodeScale)." + }, + 0x1f43b675: { + name: "Cluster", + level: 1, + type: "m", + multiple: true, + minver: 1, + description: "The lower level element containing the (monolithic) Block structure." + }, + 0x4d80: { + name: "MuxingApp", + level: 2, + type: "8", + mandatory: true, + minver: 1, + description: "Muxing application or library (\"libmatroska-0.4.3\")." + }, + 0x7ba9: { + name: "Title", + level: 2, + type: "8", + minver: 1, + webm: false, + description: "General name of the segment." + }, + 0x2ad7b2: { + name: "TimecodeScaleDenominator", + level: 2, + type: "u", + mandatory: true, + minver: 4, + "default": "1000000000", + description: "Timestamp scale numerator, see TimecodeScale." + }, + 0x2ad7b1: { + name: "TimecodeScale", + level: 2, + type: "u", + mandatory: true, + minver: 1, + "default": "1000000", + description: "Timestamp scale in nanoseconds (1.000.000 means all timestamps in the segment are expressed in milliseconds)." + }, + 0x69a5: { + name: "ChapterTranslateID", + level: 3, + type: "b", + mandatory: true, + minver: 1, + webm: false, + description: "The binary value used to represent this segment in the chapter codec data. The format depends on the ChapProcessCodecID used." + }, + 0x69bf: { + name: "ChapterTranslateCodec", + level: 3, + type: "u", + mandatory: true, + minver: 1, + webm: false, + description: "The chapter codec using this ID (0: Matroska Script, 1: DVD-menu)." + }, + 0x69fc: { + name: "ChapterTranslateEditionUID", + level: 3, + type: "u", + multiple: true, + minver: 1, + webm: false, + description: "Specify an edition UID on which this correspondance applies. When not specified, it means for all editions found in the segment." + }, + 0x3e83bb: { + name: "NextFilename", + level: 2, + type: "8", + minver: 1, + webm: false, + description: "An escaped filename corresponding to the next segment." + }, + 0x3eb923: { + name: "NextUID", + level: 2, + type: "b", + minver: 1, + webm: false, + bytesize: 16, + description: "A unique ID to identify the next chained segment (128 bits)." + }, + 0x3c83ab: { + name: "PrevFilename", + level: 2, + type: "8", + minver: 1, + webm: false, + description: "An escaped filename corresponding to the previous segment." + }, + 0x3cb923: { + name: "PrevUID", + level: 2, + type: "b", + minver: 1, + webm: false, + bytesize: 16, + description: "A unique ID to identify the previous chained segment (128 bits)." + }, + 0x73a4: { + name: "SegmentUID", + level: 2, + type: "b", + minver: 1, + webm: false, + range: "not 0", + bytesize: 16, + description: "A randomly generated unique ID to identify the current segment between many others (128 bits)." + }, + 0x1549a966: { + name: "Info", + level: 1, + type: "m", + mandatory: true, + multiple: true, + minver: 1, + description: "Contains miscellaneous general information and statistics on the file." + }, + 0x53ac: { + name: "SeekPosition", + level: 3, + type: "u", + mandatory: true, + minver: 1, + description: "The position of the element in the segment in octets (0 = first level 1 element).", + position: "segment" + }, + 0x53ab: { + name: "SeekID", + level: 3, + type: "b", + mandatory: true, + minver: 1, + description: "The binary ID corresponding to the element name.", + type2: "ebmlID" + }, + 0x4dbb: { + name: "Seek", + cppname: "SeekPoint", + level: 2, + type: "m", + mandatory: true, + multiple: true, + minver: 1, + description: "Contains a single seek entry to an EBML element." + }, + 0x114d9b74: { + name: "SeekHead", + cppname: "SeekHeader", + level: 1, + type: "m", + multiple: true, + minver: 1, + description: "Contains the position of other level 1 elements." + }, + 0x7e7b: { + name: "SignatureElementList", + level: 2, + type: "m", + multiple: true, + webm: false, + i: "Cluster|Block|BlockAdditional", + description: "A list consists of a number of consecutive elements that represent one case where data is used in signature. Ex: means that the BlockAdditional of all Blocks in all Clusters is used for encryption." + }, + 0x7e5b: { + name: "SignatureElements", + level: 1, + type: "m", + webm: false, + description: "Contains elements that will be used to compute the signature." + }, + 0x7eb5: { + name: "Signature", + level: 1, + type: "b", + webm: false, + description: "The signature of the data (until a new." + }, + 0x7ea5: { + name: "SignaturePublicKey", + level: 1, + type: "b", + webm: false, + description: "The public key to use with the algorithm (in the case of a PKI-based signature)." + }, + 0x7e9a: { + name: "SignatureHash", + level: 1, + type: "u", + webm: false, + description: "Hash algorithm used (1=SHA1-160, 2=MD5)." + }, + 0x7e8a: { + name: "SignatureAlgo", + level: 1, + type: "u", + webm: false, + description: "Signature algorithm used (1=RSA, 2=elliptic)." + }, + 0x1b538667: { + name: "SignatureSlot", + level: -1, + type: "m", + multiple: true, + webm: false, + description: "Contain signature of some (coming) elements in the stream." + }, + 0xbf: { + name: "CRC-32", + level: -1, + type: "b", + minver: 1, + webm: false, + description: "The CRC is computed on all the data of the Master element it's in. The CRC element should be the first in it's parent master for easier reading. All level 1 elements should include a CRC-32. The CRC in use is the IEEE CRC32 Little Endian", + crc: true + }, + 0xec: { + name: "Void", + level: -1, + type: "b", + minver: 1, + description: "Used to void damaged data, to avoid unexpected behaviors when using damaged data. The content is discarded. Also used to reserve space in a sub-element for later use." + }, + 0x42f3: { + name: "EBMLMaxSizeLength", + level: 1, + type: "u", + mandatory: true, + "default": 8, + minver: 1, + description: "The maximum length of the sizes you'll find in this file (8 or less in Matroska). This does not override the element size indicated at the beginning of an element. Elements that have an indicated size which is larger than what is allowed by EBMLMaxSizeLength shall be considered invalid." + }, + 0x42f2: { + name: "EBMLMaxIDLength", + level: 1, + type: "u", + mandatory: true, + "default": 4, + minver: 1, + description: "The maximum length of the IDs you'll find in this file (4 or less in Matroska)." + }, + 0x42f7: { + name: "EBMLReadVersion", + level: 1, + type: "u", + mandatory: true, + "default": 1, + minver: 1, + description: "The minimum EBML version a parser has to support to read this file." + }, + 0x1a45dfa3: { + name: "EBML", + level: "0", + type: "m", + mandatory: true, + multiple: true, + minver: 1, + description: "Set the EBML characteristics of the data to follow. Each EBML document has to start with this." + } + }; + + var byName = {}; + + var schema = { + byEbmlID: byEbmlID, + byName: byName + }; + + for (var ebmlID in byEbmlID) { + var desc = byEbmlID[ebmlID]; + byName[desc.name.replace('-', '_')] = parseInt(ebmlID, 10); + } + + module.exports = schema; + }, {}], 18: [function (require, module, exports) { + module.exports = { + "name": "ts-ebml", + "version": "2.0.2", + "description": "ebml decoder and encoder", + "scripts": { + "setup": "npm install -g http-server;", + "init": "npm run update; npm run mkdir; npm run build", + "update": "npm run reset; npm update", + "reset": "rm -rf node_modules", + "mkdir": "mkdir lib dist 2>/dev/null", + "clean": "rm -rf lib/* dist/* test/*.js; mkdir -p dist", + "build": "npm run clean && tsc -p .; npm run browserify", + "start": "http-server . -s & tsc -w -p .& watchify lib/example_seekable.js -o test/example_seekable.js", + "stop": "killall -- node */tsc -w -p", + "browserify": "browserify lib/index.js --standalone EBML -o dist/EBML.js", + "watchify": "watchify lib/index.js --standalone EBML -o dist/EBMl.js -v", + "test": "tsc; espower lib/test.js > lib/test.tmp; mv -f lib/test.tmp lib/test.js; browserify lib/test.js -o test/test.js", + "example": "tsc; browserify lib/example_seekable.js -o test/example_seekable.js", + "examples": "tsc; for file in `find lib -name 'example_*.js' -type f -printf '%f\\n'`; do browserify lib/$file -o test/$file; done", + "examples_bsd": "tsc; for file in `find lib -name 'example_*.js' -type f -print`; do browserify lib/$(basename $file) -o test/$(basename $file); done", + "check": "tsc -w --noEmit -p ./", + "lint": "tslint -c ./tslint.json --project ./tsconfig.json --type-check", + "doc": "typedoc --mode modules --out doc --disableOutputCheck" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/legokichi/ts-ebml.git" + }, + "keywords": ["ebml", "webm", "mkv", "matrosika", "webp"], + "author": "legokichi duckscallion", + "license": "MIT", + "bugs": { + "url": "https://github.com/legokichi/ts-ebml/issues" + }, + "homepage": "https://github.com/legokichi/ts-ebml#readme", + "dependencies": { + "buffer": "^5.0.7", + "commander": "^2.11.0", + "ebml": "^2.2.1", + "ebml-block": "^1.1.0", + "events": "^1.1.1", + "int64-buffer": "^0.1.9", + "matroska": "^2.2.3" + }, + "devDependencies": { + "@types/commander": "^2.9.1", + "@types/qunit": "^2.0.31", + "browserify": "^13.1.0", + "empower": "^1.2.3", + "espower-cli": "^1.1.0", + "power-assert": "^1.4.4", + "power-assert-formatter": "^1.4.1", + "qunit-tap": "^1.5.1", + "qunitjs": "^2.4.0", + "tslint": "^3.15.1", + "typedoc": "^0.5.3", + "typescript": "^2.4.2", + "watchify": "^3.7.0" + }, + "bin": "./lib/cli.js", + "main": "./lib/index.js", + "typings": "./lib/index.d.ts" + }; + }, {}] }, {}, [4])(4); +}); +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("mFPK"))) + +/***/ }), + +/***/ "Nre6": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const inherits = __webpack_require__("mwrz"); + +const bignum = __webpack_require__("u/Wk"); +const DecoderBuffer = __webpack_require__("cKvS").DecoderBuffer; +const Node = __webpack_require__("6BOp"); + +// Import DER constants +const der = __webpack_require__("7ZNp"); + +function DERDecoder(entity) { + this.enc = 'der'; + this.name = entity.name; + this.entity = entity; + + // Construct base tree + this.tree = new DERNode(); + this.tree._init(entity.body); +} +module.exports = DERDecoder; + +DERDecoder.prototype.decode = function decode(data, options) { + if (!DecoderBuffer.isDecoderBuffer(data)) { + data = new DecoderBuffer(data, options); + } + + return this.tree._decode(data, options); +}; + +// Tree methods + +function DERNode(parent) { + Node.call(this, 'der', parent); +} +inherits(DERNode, Node); + +DERNode.prototype._peekTag = function peekTag(buffer, tag, any) { + if (buffer.isEmpty()) + return false; + + const state = buffer.save(); + const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: "' + tag + '"'); + if (buffer.isError(decodedTag)) + return decodedTag; + + buffer.restore(state); + + return decodedTag.tag === tag || decodedTag.tagStr === tag || + (decodedTag.tagStr + 'of') === tag || any; +}; + +DERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) { + const decodedTag = derDecodeTag(buffer, + 'Failed to decode tag of "' + tag + '"'); + if (buffer.isError(decodedTag)) + return decodedTag; + + let len = derDecodeLen(buffer, + decodedTag.primitive, + 'Failed to get length of "' + tag + '"'); + + // Failure + if (buffer.isError(len)) + return len; + + if (!any && + decodedTag.tag !== tag && + decodedTag.tagStr !== tag && + decodedTag.tagStr + 'of' !== tag) { + return buffer.error('Failed to match tag: "' + tag + '"'); + } + + if (decodedTag.primitive || len !== null) + return buffer.skip(len, 'Failed to match body of: "' + tag + '"'); + + // Indefinite length... find END tag + const state = buffer.save(); + const res = this._skipUntilEnd( + buffer, + 'Failed to skip indefinite length body: "' + this.tag + '"'); + if (buffer.isError(res)) + return res; + + len = buffer.offset - state.offset; + buffer.restore(state); + return buffer.skip(len, 'Failed to match body of: "' + tag + '"'); +}; + +DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) { + for (;;) { + const tag = derDecodeTag(buffer, fail); + if (buffer.isError(tag)) + return tag; + const len = derDecodeLen(buffer, tag.primitive, fail); + if (buffer.isError(len)) + return len; + + let res; + if (tag.primitive || len !== null) + res = buffer.skip(len); + else + res = this._skipUntilEnd(buffer, fail); + + // Failure + if (buffer.isError(res)) + return res; + + if (tag.tagStr === 'end') + break; + } +}; + +DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, + options) { + const result = []; + while (!buffer.isEmpty()) { + const possibleEnd = this._peekTag(buffer, 'end'); + if (buffer.isError(possibleEnd)) + return possibleEnd; + + const res = decoder.decode(buffer, 'der', options); + if (buffer.isError(res) && possibleEnd) + break; + result.push(res); + } + return result; +}; + +DERNode.prototype._decodeStr = function decodeStr(buffer, tag) { + if (tag === 'bitstr') { + const unused = buffer.readUInt8(); + if (buffer.isError(unused)) + return unused; + return { unused: unused, data: buffer.raw() }; + } else if (tag === 'bmpstr') { + const raw = buffer.raw(); + if (raw.length % 2 === 1) + return buffer.error('Decoding of string type: bmpstr length mismatch'); + + let str = ''; + for (let i = 0; i < raw.length / 2; i++) { + str += String.fromCharCode(raw.readUInt16BE(i * 2)); + } + return str; + } else if (tag === 'numstr') { + const numstr = buffer.raw().toString('ascii'); + if (!this._isNumstr(numstr)) { + return buffer.error('Decoding of string type: ' + + 'numstr unsupported characters'); + } + return numstr; + } else if (tag === 'octstr') { + return buffer.raw(); + } else if (tag === 'objDesc') { + return buffer.raw(); + } else if (tag === 'printstr') { + const printstr = buffer.raw().toString('ascii'); + if (!this._isPrintstr(printstr)) { + return buffer.error('Decoding of string type: ' + + 'printstr unsupported characters'); + } + return printstr; + } else if (/str$/.test(tag)) { + return buffer.raw().toString(); + } else { + return buffer.error('Decoding of string type: ' + tag + ' unsupported'); + } +}; + +DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) { + let result; + const identifiers = []; + let ident = 0; + let subident = 0; + while (!buffer.isEmpty()) { + subident = buffer.readUInt8(); + ident <<= 7; + ident |= subident & 0x7f; + if ((subident & 0x80) === 0) { + identifiers.push(ident); + ident = 0; + } + } + if (subident & 0x80) + identifiers.push(ident); + + const first = (identifiers[0] / 40) | 0; + const second = identifiers[0] % 40; + + if (relative) + result = identifiers; + else + result = [first, second].concat(identifiers.slice(1)); + + if (values) { + let tmp = values[result.join(' ')]; + if (tmp === undefined) + tmp = values[result.join('.')]; + if (tmp !== undefined) + result = tmp; + } + + return result; +}; + +DERNode.prototype._decodeTime = function decodeTime(buffer, tag) { + const str = buffer.raw().toString(); + + let year; + let mon; + let day; + let hour; + let min; + let sec; + if (tag === 'gentime') { + year = str.slice(0, 4) | 0; + mon = str.slice(4, 6) | 0; + day = str.slice(6, 8) | 0; + hour = str.slice(8, 10) | 0; + min = str.slice(10, 12) | 0; + sec = str.slice(12, 14) | 0; + } else if (tag === 'utctime') { + year = str.slice(0, 2) | 0; + mon = str.slice(2, 4) | 0; + day = str.slice(4, 6) | 0; + hour = str.slice(6, 8) | 0; + min = str.slice(8, 10) | 0; + sec = str.slice(10, 12) | 0; + if (year < 70) + year = 2000 + year; + else + year = 1900 + year; + } else { + return buffer.error('Decoding ' + tag + ' time is not supported yet'); + } + + return Date.UTC(year, mon - 1, day, hour, min, sec, 0); +}; + +DERNode.prototype._decodeNull = function decodeNull() { + return null; +}; + +DERNode.prototype._decodeBool = function decodeBool(buffer) { + const res = buffer.readUInt8(); + if (buffer.isError(res)) + return res; + else + return res !== 0; +}; + +DERNode.prototype._decodeInt = function decodeInt(buffer, values) { + // Bigint, return as it is (assume big endian) + const raw = buffer.raw(); + let res = new bignum(raw); + + if (values) + res = values[res.toString(10)] || res; + + return res; +}; + +DERNode.prototype._use = function use(entity, obj) { + if (typeof entity === 'function') + entity = entity(obj); + return entity._getDecoder('der').tree; +}; + +// Utility methods + +function derDecodeTag(buf, fail) { + let tag = buf.readUInt8(fail); + if (buf.isError(tag)) + return tag; + + const cls = der.tagClass[tag >> 6]; + const primitive = (tag & 0x20) === 0; + + // Multi-octet tag - load + if ((tag & 0x1f) === 0x1f) { + let oct = tag; + tag = 0; + while ((oct & 0x80) === 0x80) { + oct = buf.readUInt8(fail); + if (buf.isError(oct)) + return oct; + + tag <<= 7; + tag |= oct & 0x7f; + } + } else { + tag &= 0x1f; + } + const tagStr = der.tag[tag]; + + return { + cls: cls, + primitive: primitive, + tag: tag, + tagStr: tagStr + }; +} + +function derDecodeLen(buf, primitive, fail) { + let len = buf.readUInt8(fail); + if (buf.isError(len)) + return len; + + // Indefinite form + if (!primitive && len === 0x80) + return null; + + // Definite form + if ((len & 0x80) === 0) { + // Short form + return len; + } + + // Long form + const num = len & 0x7f; + if (num > 4) + return buf.error('length octect is too long'); + + len = 0; + for (let i = 0; i < num; i++) { + len <<= 8; + const j = buf.readUInt8(fail); + if (buf.isError(j)) + return j; + len |= j; + } + + return len; +} + + +/***/ }), + +/***/ "OJ8B": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var curve = exports; + +curve.base = __webpack_require__("qW1i"); +curve.short = __webpack_require__("n4Nz"); +curve.mont = __webpack_require__("oCEa"); +curve.edwards = __webpack_require__("FjWA"); + + +/***/ }), + +/***/ "OtjJ": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var inherits = __webpack_require__("mwrz") +var Legacy = __webpack_require__("My4w") +var Base = __webpack_require__("onRW") +var Buffer = __webpack_require__("DLTi").Buffer +var md5 = __webpack_require__("yXLo") +var RIPEMD160 = __webpack_require__("DJz8") + +var sha = __webpack_require__("96zr") + +var ZEROS = Buffer.alloc(128) + +function Hmac (alg, key) { + Base.call(this, 'digest') + if (typeof key === 'string') { + key = Buffer.from(key) + } + + var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64 + + this._alg = alg + this._key = key + if (key.length > blocksize) { + var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg) + key = hash.update(key).digest() + } else if (key.length < blocksize) { + key = Buffer.concat([key, ZEROS], blocksize) + } + + var ipad = this._ipad = Buffer.allocUnsafe(blocksize) + var opad = this._opad = Buffer.allocUnsafe(blocksize) + + for (var i = 0; i < blocksize; i++) { + ipad[i] = key[i] ^ 0x36 + opad[i] = key[i] ^ 0x5C + } + this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg) + this._hash.update(ipad) +} + +inherits(Hmac, Base) + +Hmac.prototype._update = function (data) { + this._hash.update(data) +} + +Hmac.prototype._final = function () { + var h = this._hash.digest() + var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg) + return hash.update(this._opad).update(h).digest() +} + +module.exports = function createHmac (alg, key) { + alg = alg.toLowerCase() + if (alg === 'rmd160' || alg === 'ripemd160') { + return new Hmac('rmd160', key) + } + if (alg === 'md5') { + return new Legacy(md5, key) + } + return new Hmac(alg, key) +} + + +/***/ }), + +/***/ "P01y": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global, setImmediate) {/*! + * Vue.js v2.5.13 + * (c) 2014-2017 Evan You + * Released under the MIT License. + */ + + +/* */ + +var emptyObject = Object.freeze({}); + +// these helpers produces better vm code in JS engines due to their +// explicitness and function inlining +function isUndef (v) { + return v === undefined || v === null +} + +function isDef (v) { + return v !== undefined && v !== null +} + +function isTrue (v) { + return v === true +} + +function isFalse (v) { + return v === false +} + +/** + * Check if value is primitive + */ +function isPrimitive (value) { + return ( + typeof value === 'string' || + typeof value === 'number' || + // $flow-disable-line + typeof value === 'symbol' || + typeof value === 'boolean' + ) +} + +/** + * Quick object check - this is primarily used to tell + * Objects from primitive values when we know the value + * is a JSON-compliant type. + */ +function isObject (obj) { + return obj !== null && typeof obj === 'object' +} + +/** + * Get the raw type string of a value e.g. [object Object] + */ +var _toString = Object.prototype.toString; + +function toRawType (value) { + return _toString.call(value).slice(8, -1) +} + +/** + * Strict object type check. Only returns true + * for plain JavaScript objects. + */ +function isPlainObject (obj) { + return _toString.call(obj) === '[object Object]' +} + +function isRegExp (v) { + return _toString.call(v) === '[object RegExp]' +} + +/** + * Check if val is a valid array index. + */ +function isValidArrayIndex (val) { + var n = parseFloat(String(val)); + return n >= 0 && Math.floor(n) === n && isFinite(val) +} + +/** + * Convert a value to a string that is actually rendered. + */ +function toString (val) { + return val == null + ? '' + : typeof val === 'object' + ? JSON.stringify(val, null, 2) + : String(val) +} + +/** + * Convert a input value to a number for persistence. + * If the conversion fails, return original string. + */ +function toNumber (val) { + var n = parseFloat(val); + return isNaN(n) ? val : n +} + +/** + * Make a map and return a function for checking if a key + * is in that map. + */ +function makeMap ( + str, + expectsLowerCase +) { + var map = Object.create(null); + var list = str.split(','); + for (var i = 0; i < list.length; i++) { + map[list[i]] = true; + } + return expectsLowerCase + ? function (val) { return map[val.toLowerCase()]; } + : function (val) { return map[val]; } +} + +/** + * Check if a tag is a built-in tag. + */ +var isBuiltInTag = makeMap('slot,component', true); + +/** + * Check if a attribute is a reserved attribute. + */ +var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is'); + +/** + * Remove an item from an array + */ +function remove (arr, item) { + if (arr.length) { + var index = arr.indexOf(item); + if (index > -1) { + return arr.splice(index, 1) + } + } +} + +/** + * Check whether the object has the property. + */ +var hasOwnProperty = Object.prototype.hasOwnProperty; +function hasOwn (obj, key) { + return hasOwnProperty.call(obj, key) +} + +/** + * Create a cached version of a pure function. + */ +function cached (fn) { + var cache = Object.create(null); + return (function cachedFn (str) { + var hit = cache[str]; + return hit || (cache[str] = fn(str)) + }) +} + +/** + * Camelize a hyphen-delimited string. + */ +var camelizeRE = /-(\w)/g; +var camelize = cached(function (str) { + return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; }) +}); + +/** + * Capitalize a string. + */ +var capitalize = cached(function (str) { + return str.charAt(0).toUpperCase() + str.slice(1) +}); + +/** + * Hyphenate a camelCase string. + */ +var hyphenateRE = /\B([A-Z])/g; +var hyphenate = cached(function (str) { + return str.replace(hyphenateRE, '-$1').toLowerCase() +}); + +/** + * Simple bind, faster than native + */ +function bind (fn, ctx) { + function boundFn (a) { + var l = arguments.length; + return l + ? l > 1 + ? fn.apply(ctx, arguments) + : fn.call(ctx, a) + : fn.call(ctx) + } + // record original fn length + boundFn._length = fn.length; + return boundFn +} + +/** + * Convert an Array-like object to a real Array. + */ +function toArray (list, start) { + start = start || 0; + var i = list.length - start; + var ret = new Array(i); + while (i--) { + ret[i] = list[i + start]; + } + return ret +} + +/** + * Mix properties into target object. + */ +function extend (to, _from) { + for (var key in _from) { + to[key] = _from[key]; + } + return to +} + +/** + * Merge an Array of Objects into a single Object. + */ +function toObject (arr) { + var res = {}; + for (var i = 0; i < arr.length; i++) { + if (arr[i]) { + extend(res, arr[i]); + } + } + return res +} + +/** + * Perform no operation. + * Stubbing args to make Flow happy without leaving useless transpiled code + * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/) + */ +function noop (a, b, c) {} + +/** + * Always return false. + */ +var no = function (a, b, c) { return false; }; + +/** + * Return same value + */ +var identity = function (_) { return _; }; + +/** + * Generate a static keys string from compiler modules. + */ +function genStaticKeys (modules) { + return modules.reduce(function (keys, m) { + return keys.concat(m.staticKeys || []) + }, []).join(',') +} + +/** + * Check if two values are loosely equal - that is, + * if they are plain objects, do they have the same shape? + */ +function looseEqual (a, b) { + if (a === b) { return true } + var isObjectA = isObject(a); + var isObjectB = isObject(b); + if (isObjectA && isObjectB) { + try { + var isArrayA = Array.isArray(a); + var isArrayB = Array.isArray(b); + if (isArrayA && isArrayB) { + return a.length === b.length && a.every(function (e, i) { + return looseEqual(e, b[i]) + }) + } else if (!isArrayA && !isArrayB) { + var keysA = Object.keys(a); + var keysB = Object.keys(b); + return keysA.length === keysB.length && keysA.every(function (key) { + return looseEqual(a[key], b[key]) + }) + } else { + /* istanbul ignore next */ + return false + } + } catch (e) { + /* istanbul ignore next */ + return false + } + } else if (!isObjectA && !isObjectB) { + return String(a) === String(b) + } else { + return false + } +} + +function looseIndexOf (arr, val) { + for (var i = 0; i < arr.length; i++) { + if (looseEqual(arr[i], val)) { return i } + } + return -1 +} + +/** + * Ensure a function is called only once. + */ +function once (fn) { + var called = false; + return function () { + if (!called) { + called = true; + fn.apply(this, arguments); + } + } +} + +var SSR_ATTR = 'data-server-rendered'; + +var ASSET_TYPES = [ + 'component', + 'directive', + 'filter' +]; + +var LIFECYCLE_HOOKS = [ + 'beforeCreate', + 'created', + 'beforeMount', + 'mounted', + 'beforeUpdate', + 'updated', + 'beforeDestroy', + 'destroyed', + 'activated', + 'deactivated', + 'errorCaptured' +]; + +/* */ + +var config = ({ + /** + * Option merge strategies (used in core/util/options) + */ + // $flow-disable-line + optionMergeStrategies: Object.create(null), + + /** + * Whether to suppress warnings. + */ + silent: false, + + /** + * Show production mode tip message on boot? + */ + productionTip: "production" !== 'production', + + /** + * Whether to enable devtools + */ + devtools: "production" !== 'production', + + /** + * Whether to record perf + */ + performance: false, + + /** + * Error handler for watcher errors + */ + errorHandler: null, + + /** + * Warn handler for watcher warns + */ + warnHandler: null, + + /** + * Ignore certain custom elements + */ + ignoredElements: [], + + /** + * Custom user key aliases for v-on + */ + // $flow-disable-line + keyCodes: Object.create(null), + + /** + * Check if a tag is reserved so that it cannot be registered as a + * component. This is platform-dependent and may be overwritten. + */ + isReservedTag: no, + + /** + * Check if an attribute is reserved so that it cannot be used as a component + * prop. This is platform-dependent and may be overwritten. + */ + isReservedAttr: no, + + /** + * Check if a tag is an unknown element. + * Platform-dependent. + */ + isUnknownElement: no, + + /** + * Get the namespace of an element + */ + getTagNamespace: noop, + + /** + * Parse the real tag name for the specific platform. + */ + parsePlatformTagName: identity, + + /** + * Check if an attribute must be bound using property, e.g. value + * Platform-dependent. + */ + mustUseProp: no, + + /** + * Exposed for legacy reasons + */ + _lifecycleHooks: LIFECYCLE_HOOKS +}); + +/* */ + +/** + * Check if a string starts with $ or _ + */ +function isReserved (str) { + var c = (str + '').charCodeAt(0); + return c === 0x24 || c === 0x5F +} + +/** + * Define a property. + */ +function def (obj, key, val, enumerable) { + Object.defineProperty(obj, key, { + value: val, + enumerable: !!enumerable, + writable: true, + configurable: true + }); +} + +/** + * Parse simple path. + */ +var bailRE = /[^\w.$]/; +function parsePath (path) { + if (bailRE.test(path)) { + return + } + var segments = path.split('.'); + return function (obj) { + for (var i = 0; i < segments.length; i++) { + if (!obj) { return } + obj = obj[segments[i]]; + } + return obj + } +} + +/* */ + + +// can we use __proto__? +var hasProto = '__proto__' in {}; + +// Browser environment sniffing +var inBrowser = typeof window !== 'undefined'; +var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform; +var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase(); +var UA = inBrowser && window.navigator.userAgent.toLowerCase(); +var isIE = UA && /msie|trident/.test(UA); +var isIE9 = UA && UA.indexOf('msie 9.0') > 0; +var isEdge = UA && UA.indexOf('edge/') > 0; +var isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android'); +var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios'); +var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge; + +// Firefox has a "watch" function on Object.prototype... +var nativeWatch = ({}).watch; + +var supportsPassive = false; +if (inBrowser) { + try { + var opts = {}; + Object.defineProperty(opts, 'passive', ({ + get: function get () { + /* istanbul ignore next */ + supportsPassive = true; + } + })); // https://github.com/facebook/flow/issues/285 + window.addEventListener('test-passive', null, opts); + } catch (e) {} +} + +// this needs to be lazy-evaled because vue may be required before +// vue-server-renderer can set VUE_ENV +var _isServer; +var isServerRendering = function () { + if (_isServer === undefined) { + /* istanbul ignore if */ + if (!inBrowser && typeof global !== 'undefined') { + // detect presence of vue-server-renderer and avoid + // Webpack shimming the process + _isServer = global['process'].env.VUE_ENV === 'server'; + } else { + _isServer = false; + } + } + return _isServer +}; + +// detect devtools +var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__; + +/* istanbul ignore next */ +function isNative (Ctor) { + return typeof Ctor === 'function' && /native code/.test(Ctor.toString()) +} + +var hasSymbol = + typeof Symbol !== 'undefined' && isNative(Symbol) && + typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys); + +var _Set; +/* istanbul ignore if */ // $flow-disable-line +if (typeof Set !== 'undefined' && isNative(Set)) { + // use native Set when available. + _Set = Set; +} else { + // a non-standard Set polyfill that only works with primitive keys. + _Set = (function () { + function Set () { + this.set = Object.create(null); + } + Set.prototype.has = function has (key) { + return this.set[key] === true + }; + Set.prototype.add = function add (key) { + this.set[key] = true; + }; + Set.prototype.clear = function clear () { + this.set = Object.create(null); + }; + + return Set; + }()); +} + +/* */ + +var warn = noop; +var tip = noop; +var generateComponentTrace = (noop); // work around flow check +var formatComponentName = (noop); + +if (false) { + var hasConsole = typeof console !== 'undefined'; + var classifyRE = /(?:^|[-_])(\w)/g; + var classify = function (str) { return str + .replace(classifyRE, function (c) { return c.toUpperCase(); }) + .replace(/[-_]/g, ''); }; + + warn = function (msg, vm) { + var trace = vm ? generateComponentTrace(vm) : ''; + + if (config.warnHandler) { + config.warnHandler.call(null, msg, vm, trace); + } else if (hasConsole && (!config.silent)) { + console.error(("[Vue warn]: " + msg + trace)); + } + }; + + tip = function (msg, vm) { + if (hasConsole && (!config.silent)) { + console.warn("[Vue tip]: " + msg + ( + vm ? generateComponentTrace(vm) : '' + )); + } + }; + + formatComponentName = function (vm, includeFile) { + if (vm.$root === vm) { + return '<Root>' + } + var options = typeof vm === 'function' && vm.cid != null + ? vm.options + : vm._isVue + ? vm.$options || vm.constructor.options + : vm || {}; + var name = options.name || options._componentTag; + var file = options.__file; + if (!name && file) { + var match = file.match(/([^/\\]+)\.vue$/); + name = match && match[1]; + } + + return ( + (name ? ("<" + (classify(name)) + ">") : "<Anonymous>") + + (file && includeFile !== false ? (" at " + file) : '') + ) + }; + + var repeat = function (str, n) { + var res = ''; + while (n) { + if (n % 2 === 1) { res += str; } + if (n > 1) { str += str; } + n >>= 1; + } + return res + }; + + generateComponentTrace = function (vm) { + if (vm._isVue && vm.$parent) { + var tree = []; + var currentRecursiveSequence = 0; + while (vm) { + if (tree.length > 0) { + var last = tree[tree.length - 1]; + if (last.constructor === vm.constructor) { + currentRecursiveSequence++; + vm = vm.$parent; + continue + } else if (currentRecursiveSequence > 0) { + tree[tree.length - 1] = [last, currentRecursiveSequence]; + currentRecursiveSequence = 0; + } + } + tree.push(vm); + vm = vm.$parent; + } + return '\n\nfound in\n\n' + tree + .map(function (vm, i) { return ("" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm) + ? ((formatComponentName(vm[0])) + "... (" + (vm[1]) + " recursive calls)") + : formatComponentName(vm))); }) + .join('\n') + } else { + return ("\n\n(found in " + (formatComponentName(vm)) + ")") + } + }; +} + +/* */ + + +var uid = 0; + +/** + * A dep is an observable that can have multiple + * directives subscribing to it. + */ +var Dep = function Dep () { + this.id = uid++; + this.subs = []; +}; + +Dep.prototype.addSub = function addSub (sub) { + this.subs.push(sub); +}; + +Dep.prototype.removeSub = function removeSub (sub) { + remove(this.subs, sub); +}; + +Dep.prototype.depend = function depend () { + if (Dep.target) { + Dep.target.addDep(this); + } +}; + +Dep.prototype.notify = function notify () { + // stabilize the subscriber list first + var subs = this.subs.slice(); + for (var i = 0, l = subs.length; i < l; i++) { + subs[i].update(); + } +}; + +// the current target watcher being evaluated. +// this is globally unique because there could be only one +// watcher being evaluated at any time. +Dep.target = null; +var targetStack = []; + +function pushTarget (_target) { + if (Dep.target) { targetStack.push(Dep.target); } + Dep.target = _target; +} + +function popTarget () { + Dep.target = targetStack.pop(); +} + +/* */ + +var VNode = function VNode ( + tag, + data, + children, + text, + elm, + context, + componentOptions, + asyncFactory +) { + this.tag = tag; + this.data = data; + this.children = children; + this.text = text; + this.elm = elm; + this.ns = undefined; + this.context = context; + this.fnContext = undefined; + this.fnOptions = undefined; + this.fnScopeId = undefined; + this.key = data && data.key; + this.componentOptions = componentOptions; + this.componentInstance = undefined; + this.parent = undefined; + this.raw = false; + this.isStatic = false; + this.isRootInsert = true; + this.isComment = false; + this.isCloned = false; + this.isOnce = false; + this.asyncFactory = asyncFactory; + this.asyncMeta = undefined; + this.isAsyncPlaceholder = false; +}; + +var prototypeAccessors = { child: { configurable: true } }; + +// DEPRECATED: alias for componentInstance for backwards compat. +/* istanbul ignore next */ +prototypeAccessors.child.get = function () { + return this.componentInstance +}; + +Object.defineProperties( VNode.prototype, prototypeAccessors ); + +var createEmptyVNode = function (text) { + if ( text === void 0 ) text = ''; + + var node = new VNode(); + node.text = text; + node.isComment = true; + return node +}; + +function createTextVNode (val) { + return new VNode(undefined, undefined, undefined, String(val)) +} + +// optimized shallow clone +// used for static nodes and slot nodes because they may be reused across +// multiple renders, cloning them avoids errors when DOM manipulations rely +// on their elm reference. +function cloneVNode (vnode, deep) { + var componentOptions = vnode.componentOptions; + var cloned = new VNode( + vnode.tag, + vnode.data, + vnode.children, + vnode.text, + vnode.elm, + vnode.context, + componentOptions, + vnode.asyncFactory + ); + cloned.ns = vnode.ns; + cloned.isStatic = vnode.isStatic; + cloned.key = vnode.key; + cloned.isComment = vnode.isComment; + cloned.fnContext = vnode.fnContext; + cloned.fnOptions = vnode.fnOptions; + cloned.fnScopeId = vnode.fnScopeId; + cloned.isCloned = true; + if (deep) { + if (vnode.children) { + cloned.children = cloneVNodes(vnode.children, true); + } + if (componentOptions && componentOptions.children) { + componentOptions.children = cloneVNodes(componentOptions.children, true); + } + } + return cloned +} + +function cloneVNodes (vnodes, deep) { + var len = vnodes.length; + var res = new Array(len); + for (var i = 0; i < len; i++) { + res[i] = cloneVNode(vnodes[i], deep); + } + return res +} + +/* + * not type checking this file because flow doesn't play well with + * dynamically accessing methods on Array prototype + */ + +var arrayProto = Array.prototype; +var arrayMethods = Object.create(arrayProto);[ + 'push', + 'pop', + 'shift', + 'unshift', + 'splice', + 'sort', + 'reverse' +].forEach(function (method) { + // cache original method + var original = arrayProto[method]; + def(arrayMethods, method, function mutator () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var result = original.apply(this, args); + var ob = this.__ob__; + var inserted; + switch (method) { + case 'push': + case 'unshift': + inserted = args; + break + case 'splice': + inserted = args.slice(2); + break + } + if (inserted) { ob.observeArray(inserted); } + // notify change + ob.dep.notify(); + return result + }); +}); + +/* */ + +var arrayKeys = Object.getOwnPropertyNames(arrayMethods); + +/** + * By default, when a reactive property is set, the new value is + * also converted to become reactive. However when passing down props, + * we don't want to force conversion because the value may be a nested value + * under a frozen data structure. Converting it would defeat the optimization. + */ +var observerState = { + shouldConvert: true +}; + +/** + * Observer class that are attached to each observed + * object. Once attached, the observer converts target + * object's property keys into getter/setters that + * collect dependencies and dispatches updates. + */ +var Observer = function Observer (value) { + this.value = value; + this.dep = new Dep(); + this.vmCount = 0; + def(value, '__ob__', this); + if (Array.isArray(value)) { + var augment = hasProto + ? protoAugment + : copyAugment; + augment(value, arrayMethods, arrayKeys); + this.observeArray(value); + } else { + this.walk(value); + } +}; + +/** + * Walk through each property and convert them into + * getter/setters. This method should only be called when + * value type is Object. + */ +Observer.prototype.walk = function walk (obj) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + defineReactive(obj, keys[i], obj[keys[i]]); + } +}; + +/** + * Observe a list of Array items. + */ +Observer.prototype.observeArray = function observeArray (items) { + for (var i = 0, l = items.length; i < l; i++) { + observe(items[i]); + } +}; + +// helpers + +/** + * Augment an target Object or Array by intercepting + * the prototype chain using __proto__ + */ +function protoAugment (target, src, keys) { + /* eslint-disable no-proto */ + target.__proto__ = src; + /* eslint-enable no-proto */ +} + +/** + * Augment an target Object or Array by defining + * hidden properties. + */ +/* istanbul ignore next */ +function copyAugment (target, src, keys) { + for (var i = 0, l = keys.length; i < l; i++) { + var key = keys[i]; + def(target, key, src[key]); + } +} + +/** + * Attempt to create an observer instance for a value, + * returns the new observer if successfully observed, + * or the existing observer if the value already has one. + */ +function observe (value, asRootData) { + if (!isObject(value) || value instanceof VNode) { + return + } + var ob; + if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) { + ob = value.__ob__; + } else if ( + observerState.shouldConvert && + !isServerRendering() && + (Array.isArray(value) || isPlainObject(value)) && + Object.isExtensible(value) && + !value._isVue + ) { + ob = new Observer(value); + } + if (asRootData && ob) { + ob.vmCount++; + } + return ob +} + +/** + * Define a reactive property on an Object. + */ +function defineReactive ( + obj, + key, + val, + customSetter, + shallow +) { + var dep = new Dep(); + + var property = Object.getOwnPropertyDescriptor(obj, key); + if (property && property.configurable === false) { + return + } + + // cater for pre-defined getter/setters + var getter = property && property.get; + var setter = property && property.set; + + var childOb = !shallow && observe(val); + Object.defineProperty(obj, key, { + enumerable: true, + configurable: true, + get: function reactiveGetter () { + var value = getter ? getter.call(obj) : val; + if (Dep.target) { + dep.depend(); + if (childOb) { + childOb.dep.depend(); + if (Array.isArray(value)) { + dependArray(value); + } + } + } + return value + }, + set: function reactiveSetter (newVal) { + var value = getter ? getter.call(obj) : val; + /* eslint-disable no-self-compare */ + if (newVal === value || (newVal !== newVal && value !== value)) { + return + } + /* eslint-enable no-self-compare */ + if (false) { + customSetter(); + } + if (setter) { + setter.call(obj, newVal); + } else { + val = newVal; + } + childOb = !shallow && observe(newVal); + dep.notify(); + } + }); +} + +/** + * Set a property on an object. Adds the new property and + * triggers change notification if the property doesn't + * already exist. + */ +function set (target, key, val) { + if (Array.isArray(target) && isValidArrayIndex(key)) { + target.length = Math.max(target.length, key); + target.splice(key, 1, val); + return val + } + if (key in target && !(key in Object.prototype)) { + target[key] = val; + return val + } + var ob = (target).__ob__; + if (target._isVue || (ob && ob.vmCount)) { + "production" !== 'production' && warn( + 'Avoid adding reactive properties to a Vue instance or its root $data ' + + 'at runtime - declare it upfront in the data option.' + ); + return val + } + if (!ob) { + target[key] = val; + return val + } + defineReactive(ob.value, key, val); + ob.dep.notify(); + return val +} + +/** + * Delete a property and trigger change if necessary. + */ +function del (target, key) { + if (Array.isArray(target) && isValidArrayIndex(key)) { + target.splice(key, 1); + return + } + var ob = (target).__ob__; + if (target._isVue || (ob && ob.vmCount)) { + "production" !== 'production' && warn( + 'Avoid deleting properties on a Vue instance or its root $data ' + + '- just set it to null.' + ); + return + } + if (!hasOwn(target, key)) { + return + } + delete target[key]; + if (!ob) { + return + } + ob.dep.notify(); +} + +/** + * Collect dependencies on array elements when the array is touched, since + * we cannot intercept array element access like property getters. + */ +function dependArray (value) { + for (var e = (void 0), i = 0, l = value.length; i < l; i++) { + e = value[i]; + e && e.__ob__ && e.__ob__.dep.depend(); + if (Array.isArray(e)) { + dependArray(e); + } + } +} + +/* */ + +/** + * Option overwriting strategies are functions that handle + * how to merge a parent option value and a child option + * value into the final value. + */ +var strats = config.optionMergeStrategies; + +/** + * Options with restrictions + */ +if (false) { + strats.el = strats.propsData = function (parent, child, vm, key) { + if (!vm) { + warn( + "option \"" + key + "\" can only be used during instance " + + 'creation with the `new` keyword.' + ); + } + return defaultStrat(parent, child) + }; +} + +/** + * Helper that recursively merges two data objects together. + */ +function mergeData (to, from) { + if (!from) { return to } + var key, toVal, fromVal; + var keys = Object.keys(from); + for (var i = 0; i < keys.length; i++) { + key = keys[i]; + toVal = to[key]; + fromVal = from[key]; + if (!hasOwn(to, key)) { + set(to, key, fromVal); + } else if (isPlainObject(toVal) && isPlainObject(fromVal)) { + mergeData(toVal, fromVal); + } + } + return to +} + +/** + * Data + */ +function mergeDataOrFn ( + parentVal, + childVal, + vm +) { + if (!vm) { + // in a Vue.extend merge, both should be functions + if (!childVal) { + return parentVal + } + if (!parentVal) { + return childVal + } + // when parentVal & childVal are both present, + // we need to return a function that returns the + // merged result of both functions... no need to + // check if parentVal is a function here because + // it has to be a function to pass previous merges. + return function mergedDataFn () { + return mergeData( + typeof childVal === 'function' ? childVal.call(this, this) : childVal, + typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal + ) + } + } else { + return function mergedInstanceDataFn () { + // instance merge + var instanceData = typeof childVal === 'function' + ? childVal.call(vm, vm) + : childVal; + var defaultData = typeof parentVal === 'function' + ? parentVal.call(vm, vm) + : parentVal; + if (instanceData) { + return mergeData(instanceData, defaultData) + } else { + return defaultData + } + } + } +} + +strats.data = function ( + parentVal, + childVal, + vm +) { + if (!vm) { + if (childVal && typeof childVal !== 'function') { + "production" !== 'production' && warn( + 'The "data" option should be a function ' + + 'that returns a per-instance value in component ' + + 'definitions.', + vm + ); + + return parentVal + } + return mergeDataOrFn(parentVal, childVal) + } + + return mergeDataOrFn(parentVal, childVal, vm) +}; + +/** + * Hooks and props are merged as arrays. + */ +function mergeHook ( + parentVal, + childVal +) { + return childVal + ? parentVal + ? parentVal.concat(childVal) + : Array.isArray(childVal) + ? childVal + : [childVal] + : parentVal +} + +LIFECYCLE_HOOKS.forEach(function (hook) { + strats[hook] = mergeHook; +}); + +/** + * Assets + * + * When a vm is present (instance creation), we need to do + * a three-way merge between constructor options, instance + * options and parent options. + */ +function mergeAssets ( + parentVal, + childVal, + vm, + key +) { + var res = Object.create(parentVal || null); + if (childVal) { + "production" !== 'production' && assertObjectType(key, childVal, vm); + return extend(res, childVal) + } else { + return res + } +} + +ASSET_TYPES.forEach(function (type) { + strats[type + 's'] = mergeAssets; +}); + +/** + * Watchers. + * + * Watchers hashes should not overwrite one + * another, so we merge them as arrays. + */ +strats.watch = function ( + parentVal, + childVal, + vm, + key +) { + // work around Firefox's Object.prototype.watch... + if (parentVal === nativeWatch) { parentVal = undefined; } + if (childVal === nativeWatch) { childVal = undefined; } + /* istanbul ignore if */ + if (!childVal) { return Object.create(parentVal || null) } + if (false) { + assertObjectType(key, childVal, vm); + } + if (!parentVal) { return childVal } + var ret = {}; + extend(ret, parentVal); + for (var key$1 in childVal) { + var parent = ret[key$1]; + var child = childVal[key$1]; + if (parent && !Array.isArray(parent)) { + parent = [parent]; + } + ret[key$1] = parent + ? parent.concat(child) + : Array.isArray(child) ? child : [child]; + } + return ret +}; + +/** + * Other object hashes. + */ +strats.props = +strats.methods = +strats.inject = +strats.computed = function ( + parentVal, + childVal, + vm, + key +) { + if (childVal && "production" !== 'production') { + assertObjectType(key, childVal, vm); + } + if (!parentVal) { return childVal } + var ret = Object.create(null); + extend(ret, parentVal); + if (childVal) { extend(ret, childVal); } + return ret +}; +strats.provide = mergeDataOrFn; + +/** + * Default strategy. + */ +var defaultStrat = function (parentVal, childVal) { + return childVal === undefined + ? parentVal + : childVal +}; + +/** + * Validate component names + */ +function checkComponents (options) { + for (var key in options.components) { + validateComponentName(key); + } +} + +function validateComponentName (name) { + if (!/^[a-zA-Z][\w-]*$/.test(name)) { + warn( + 'Invalid component name: "' + name + '". Component names ' + + 'can only contain alphanumeric characters and the hyphen, ' + + 'and must start with a letter.' + ); + } + if (isBuiltInTag(name) || config.isReservedTag(name)) { + warn( + 'Do not use built-in or reserved HTML elements as component ' + + 'id: ' + name + ); + } +} + +/** + * Ensure all props option syntax are normalized into the + * Object-based format. + */ +function normalizeProps (options, vm) { + var props = options.props; + if (!props) { return } + var res = {}; + var i, val, name; + if (Array.isArray(props)) { + i = props.length; + while (i--) { + val = props[i]; + if (typeof val === 'string') { + name = camelize(val); + res[name] = { type: null }; + } else if (false) { + warn('props must be strings when using array syntax.'); + } + } + } else if (isPlainObject(props)) { + for (var key in props) { + val = props[key]; + name = camelize(key); + res[name] = isPlainObject(val) + ? val + : { type: val }; + } + } else if (false) { + warn( + "Invalid value for option \"props\": expected an Array or an Object, " + + "but got " + (toRawType(props)) + ".", + vm + ); + } + options.props = res; +} + +/** + * Normalize all injections into Object-based format + */ +function normalizeInject (options, vm) { + var inject = options.inject; + if (!inject) { return } + var normalized = options.inject = {}; + if (Array.isArray(inject)) { + for (var i = 0; i < inject.length; i++) { + normalized[inject[i]] = { from: inject[i] }; + } + } else if (isPlainObject(inject)) { + for (var key in inject) { + var val = inject[key]; + normalized[key] = isPlainObject(val) + ? extend({ from: key }, val) + : { from: val }; + } + } else if (false) { + warn( + "Invalid value for option \"inject\": expected an Array or an Object, " + + "but got " + (toRawType(inject)) + ".", + vm + ); + } +} + +/** + * Normalize raw function directives into object format. + */ +function normalizeDirectives (options) { + var dirs = options.directives; + if (dirs) { + for (var key in dirs) { + var def = dirs[key]; + if (typeof def === 'function') { + dirs[key] = { bind: def, update: def }; + } + } + } +} + +function assertObjectType (name, value, vm) { + if (!isPlainObject(value)) { + warn( + "Invalid value for option \"" + name + "\": expected an Object, " + + "but got " + (toRawType(value)) + ".", + vm + ); + } +} + +/** + * Merge two option objects into a new one. + * Core utility used in both instantiation and inheritance. + */ +function mergeOptions ( + parent, + child, + vm +) { + if (false) { + checkComponents(child); + } + + if (typeof child === 'function') { + child = child.options; + } + + normalizeProps(child, vm); + normalizeInject(child, vm); + normalizeDirectives(child); + var extendsFrom = child.extends; + if (extendsFrom) { + parent = mergeOptions(parent, extendsFrom, vm); + } + if (child.mixins) { + for (var i = 0, l = child.mixins.length; i < l; i++) { + parent = mergeOptions(parent, child.mixins[i], vm); + } + } + var options = {}; + var key; + for (key in parent) { + mergeField(key); + } + for (key in child) { + if (!hasOwn(parent, key)) { + mergeField(key); + } + } + function mergeField (key) { + var strat = strats[key] || defaultStrat; + options[key] = strat(parent[key], child[key], vm, key); + } + return options +} + +/** + * Resolve an asset. + * This function is used because child instances need access + * to assets defined in its ancestor chain. + */ +function resolveAsset ( + options, + type, + id, + warnMissing +) { + /* istanbul ignore if */ + if (typeof id !== 'string') { + return + } + var assets = options[type]; + // check local registration variations first + if (hasOwn(assets, id)) { return assets[id] } + var camelizedId = camelize(id); + if (hasOwn(assets, camelizedId)) { return assets[camelizedId] } + var PascalCaseId = capitalize(camelizedId); + if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] } + // fallback to prototype chain + var res = assets[id] || assets[camelizedId] || assets[PascalCaseId]; + if (false) { + warn( + 'Failed to resolve ' + type.slice(0, -1) + ': ' + id, + options + ); + } + return res +} + +/* */ + +function validateProp ( + key, + propOptions, + propsData, + vm +) { + var prop = propOptions[key]; + var absent = !hasOwn(propsData, key); + var value = propsData[key]; + // handle boolean props + if (isType(Boolean, prop.type)) { + if (absent && !hasOwn(prop, 'default')) { + value = false; + } else if (!isType(String, prop.type) && (value === '' || value === hyphenate(key))) { + value = true; + } + } + // check default value + if (value === undefined) { + value = getPropDefaultValue(vm, prop, key); + // since the default value is a fresh copy, + // make sure to observe it. + var prevShouldConvert = observerState.shouldConvert; + observerState.shouldConvert = true; + observe(value); + observerState.shouldConvert = prevShouldConvert; + } + if ( + false + ) { + assertProp(prop, key, value, vm, absent); + } + return value +} + +/** + * Get the default value of a prop. + */ +function getPropDefaultValue (vm, prop, key) { + // no default, return undefined + if (!hasOwn(prop, 'default')) { + return undefined + } + var def = prop.default; + // warn against non-factory defaults for Object & Array + if (false) { + warn( + 'Invalid default value for prop "' + key + '": ' + + 'Props with type Object/Array must use a factory function ' + + 'to return the default value.', + vm + ); + } + // the raw prop value was also undefined from previous render, + // return previous default value to avoid unnecessary watcher trigger + if (vm && vm.$options.propsData && + vm.$options.propsData[key] === undefined && + vm._props[key] !== undefined + ) { + return vm._props[key] + } + // call factory function for non-Function types + // a value is Function if its prototype is function even across different execution context + return typeof def === 'function' && getType(prop.type) !== 'Function' + ? def.call(vm) + : def +} + +/** + * Assert whether a prop is valid. + */ +function assertProp ( + prop, + name, + value, + vm, + absent +) { + if (prop.required && absent) { + warn( + 'Missing required prop: "' + name + '"', + vm + ); + return + } + if (value == null && !prop.required) { + return + } + var type = prop.type; + var valid = !type || type === true; + var expectedTypes = []; + if (type) { + if (!Array.isArray(type)) { + type = [type]; + } + for (var i = 0; i < type.length && !valid; i++) { + var assertedType = assertType(value, type[i]); + expectedTypes.push(assertedType.expectedType || ''); + valid = assertedType.valid; + } + } + if (!valid) { + warn( + "Invalid prop: type check failed for prop \"" + name + "\"." + + " Expected " + (expectedTypes.map(capitalize).join(', ')) + + ", got " + (toRawType(value)) + ".", + vm + ); + return + } + var validator = prop.validator; + if (validator) { + if (!validator(value)) { + warn( + 'Invalid prop: custom validator check failed for prop "' + name + '".', + vm + ); + } + } +} + +var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/; + +function assertType (value, type) { + var valid; + var expectedType = getType(type); + if (simpleCheckRE.test(expectedType)) { + var t = typeof value; + valid = t === expectedType.toLowerCase(); + // for primitive wrapper objects + if (!valid && t === 'object') { + valid = value instanceof type; + } + } else if (expectedType === 'Object') { + valid = isPlainObject(value); + } else if (expectedType === 'Array') { + valid = Array.isArray(value); + } else { + valid = value instanceof type; + } + return { + valid: valid, + expectedType: expectedType + } +} + +/** + * Use function string name to check built-in types, + * because a simple equality check will fail when running + * across different vms / iframes. + */ +function getType (fn) { + var match = fn && fn.toString().match(/^\s*function (\w+)/); + return match ? match[1] : '' +} + +function isType (type, fn) { + if (!Array.isArray(fn)) { + return getType(fn) === getType(type) + } + for (var i = 0, len = fn.length; i < len; i++) { + if (getType(fn[i]) === getType(type)) { + return true + } + } + /* istanbul ignore next */ + return false +} + +/* */ + +function handleError (err, vm, info) { + if (vm) { + var cur = vm; + while ((cur = cur.$parent)) { + var hooks = cur.$options.errorCaptured; + if (hooks) { + for (var i = 0; i < hooks.length; i++) { + try { + var capture = hooks[i].call(cur, err, vm, info) === false; + if (capture) { return } + } catch (e) { + globalHandleError(e, cur, 'errorCaptured hook'); + } + } + } + } + } + globalHandleError(err, vm, info); +} + +function globalHandleError (err, vm, info) { + if (config.errorHandler) { + try { + return config.errorHandler.call(null, err, vm, info) + } catch (e) { + logError(e, null, 'config.errorHandler'); + } + } + logError(err, vm, info); +} + +function logError (err, vm, info) { + if (false) { + warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm); + } + /* istanbul ignore else */ + if ((inBrowser || inWeex) && typeof console !== 'undefined') { + console.error(err); + } else { + throw err + } +} + +/* */ +/* globals MessageChannel */ + +var callbacks = []; +var pending = false; + +function flushCallbacks () { + pending = false; + var copies = callbacks.slice(0); + callbacks.length = 0; + for (var i = 0; i < copies.length; i++) { + copies[i](); + } +} + +// Here we have async deferring wrappers using both micro and macro tasks. +// In < 2.4 we used micro tasks everywhere, but there are some scenarios where +// micro tasks have too high a priority and fires in between supposedly +// sequential events (e.g. #4521, #6690) or even between bubbling of the same +// event (#6566). However, using macro tasks everywhere also has subtle problems +// when state is changed right before repaint (e.g. #6813, out-in transitions). +// Here we use micro task by default, but expose a way to force macro task when +// needed (e.g. in event handlers attached by v-on). +var microTimerFunc; +var macroTimerFunc; +var useMacroTask = false; + +// Determine (macro) Task defer implementation. +// Technically setImmediate should be the ideal choice, but it's only available +// in IE. The only polyfill that consistently queues the callback after all DOM +// events triggered in the same loop is by using MessageChannel. +/* istanbul ignore if */ +if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) { + macroTimerFunc = function () { + setImmediate(flushCallbacks); + }; +} else if (typeof MessageChannel !== 'undefined' && ( + isNative(MessageChannel) || + // PhantomJS + MessageChannel.toString() === '[object MessageChannelConstructor]' +)) { + var channel = new MessageChannel(); + var port = channel.port2; + channel.port1.onmessage = flushCallbacks; + macroTimerFunc = function () { + port.postMessage(1); + }; +} else { + /* istanbul ignore next */ + macroTimerFunc = function () { + setTimeout(flushCallbacks, 0); + }; +} + +// Determine MicroTask defer implementation. +/* istanbul ignore next, $flow-disable-line */ +if (typeof Promise !== 'undefined' && isNative(Promise)) { + var p = Promise.resolve(); + microTimerFunc = function () { + p.then(flushCallbacks); + // in problematic UIWebViews, Promise.then doesn't completely break, but + // it can get stuck in a weird state where callbacks are pushed into the + // microtask queue but the queue isn't being flushed, until the browser + // needs to do some other work, e.g. handle a timer. Therefore we can + // "force" the microtask queue to be flushed by adding an empty timer. + if (isIOS) { setTimeout(noop); } + }; +} else { + // fallback to macro + microTimerFunc = macroTimerFunc; +} + +/** + * Wrap a function so that if any code inside triggers state change, + * the changes are queued using a Task instead of a MicroTask. + */ +function withMacroTask (fn) { + return fn._withTask || (fn._withTask = function () { + useMacroTask = true; + var res = fn.apply(null, arguments); + useMacroTask = false; + return res + }) +} + +function nextTick (cb, ctx) { + var _resolve; + callbacks.push(function () { + if (cb) { + try { + cb.call(ctx); + } catch (e) { + handleError(e, ctx, 'nextTick'); + } + } else if (_resolve) { + _resolve(ctx); + } + }); + if (!pending) { + pending = true; + if (useMacroTask) { + macroTimerFunc(); + } else { + microTimerFunc(); + } + } + // $flow-disable-line + if (!cb && typeof Promise !== 'undefined') { + return new Promise(function (resolve) { + _resolve = resolve; + }) + } +} + +/* */ + +var mark; +var measure; + +if (false) { + var perf = inBrowser && window.performance; + /* istanbul ignore if */ + if ( + perf && + perf.mark && + perf.measure && + perf.clearMarks && + perf.clearMeasures + ) { + mark = function (tag) { return perf.mark(tag); }; + measure = function (name, startTag, endTag) { + perf.measure(name, startTag, endTag); + perf.clearMarks(startTag); + perf.clearMarks(endTag); + perf.clearMeasures(name); + }; + } +} + +/* not type checking this file because flow doesn't play well with Proxy */ + +var initProxy; + +if (false) { + var allowedGlobals = makeMap( + 'Infinity,undefined,NaN,isFinite,isNaN,' + + 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' + + 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' + + 'require' // for Webpack/Browserify + ); + + var warnNonPresent = function (target, key) { + warn( + "Property or method \"" + key + "\" is not defined on the instance but " + + 'referenced during render. Make sure that this property is reactive, ' + + 'either in the data option, or for class-based components, by ' + + 'initializing the property. ' + + 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', + target + ); + }; + + var hasProxy = + typeof Proxy !== 'undefined' && + Proxy.toString().match(/native code/); + + if (hasProxy) { + var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact'); + config.keyCodes = new Proxy(config.keyCodes, { + set: function set (target, key, value) { + if (isBuiltInModifier(key)) { + warn(("Avoid overwriting built-in modifier in config.keyCodes: ." + key)); + return false + } else { + target[key] = value; + return true + } + } + }); + } + + var hasHandler = { + has: function has (target, key) { + var has = key in target; + var isAllowed = allowedGlobals(key) || key.charAt(0) === '_'; + if (!has && !isAllowed) { + warnNonPresent(target, key); + } + return has || !isAllowed + } + }; + + var getHandler = { + get: function get (target, key) { + if (typeof key === 'string' && !(key in target)) { + warnNonPresent(target, key); + } + return target[key] + } + }; + + initProxy = function initProxy (vm) { + if (hasProxy) { + // determine which proxy handler to use + var options = vm.$options; + var handlers = options.render && options.render._withStripped + ? getHandler + : hasHandler; + vm._renderProxy = new Proxy(vm, handlers); + } else { + vm._renderProxy = vm; + } + }; +} + +/* */ + +var seenObjects = new _Set(); + +/** + * Recursively traverse an object to evoke all converted + * getters, so that every nested property inside the object + * is collected as a "deep" dependency. + */ +function traverse (val) { + _traverse(val, seenObjects); + seenObjects.clear(); +} + +function _traverse (val, seen) { + var i, keys; + var isA = Array.isArray(val); + if ((!isA && !isObject(val)) || Object.isFrozen(val)) { + return + } + if (val.__ob__) { + var depId = val.__ob__.dep.id; + if (seen.has(depId)) { + return + } + seen.add(depId); + } + if (isA) { + i = val.length; + while (i--) { _traverse(val[i], seen); } + } else { + keys = Object.keys(val); + i = keys.length; + while (i--) { _traverse(val[keys[i]], seen); } + } +} + +/* */ + +var normalizeEvent = cached(function (name) { + var passive = name.charAt(0) === '&'; + name = passive ? name.slice(1) : name; + var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first + name = once$$1 ? name.slice(1) : name; + var capture = name.charAt(0) === '!'; + name = capture ? name.slice(1) : name; + return { + name: name, + once: once$$1, + capture: capture, + passive: passive + } +}); + +function createFnInvoker (fns) { + function invoker () { + var arguments$1 = arguments; + + var fns = invoker.fns; + if (Array.isArray(fns)) { + var cloned = fns.slice(); + for (var i = 0; i < cloned.length; i++) { + cloned[i].apply(null, arguments$1); + } + } else { + // return handler return value for single handlers + return fns.apply(null, arguments) + } + } + invoker.fns = fns; + return invoker +} + +function updateListeners ( + on, + oldOn, + add, + remove$$1, + vm +) { + var name, def, cur, old, event; + for (name in on) { + def = cur = on[name]; + old = oldOn[name]; + event = normalizeEvent(name); + /* istanbul ignore if */ + if (isUndef(cur)) { + "production" !== 'production' && warn( + "Invalid handler for event \"" + (event.name) + "\": got " + String(cur), + vm + ); + } else if (isUndef(old)) { + if (isUndef(cur.fns)) { + cur = on[name] = createFnInvoker(cur); + } + add(event.name, cur, event.once, event.capture, event.passive, event.params); + } else if (cur !== old) { + old.fns = cur; + on[name] = old; + } + } + for (name in oldOn) { + if (isUndef(on[name])) { + event = normalizeEvent(name); + remove$$1(event.name, oldOn[name], event.capture); + } + } +} + +/* */ + +function mergeVNodeHook (def, hookKey, hook) { + if (def instanceof VNode) { + def = def.data.hook || (def.data.hook = {}); + } + var invoker; + var oldHook = def[hookKey]; + + function wrappedHook () { + hook.apply(this, arguments); + // important: remove merged hook to ensure it's called only once + // and prevent memory leak + remove(invoker.fns, wrappedHook); + } + + if (isUndef(oldHook)) { + // no existing hook + invoker = createFnInvoker([wrappedHook]); + } else { + /* istanbul ignore if */ + if (isDef(oldHook.fns) && isTrue(oldHook.merged)) { + // already a merged invoker + invoker = oldHook; + invoker.fns.push(wrappedHook); + } else { + // existing plain hook + invoker = createFnInvoker([oldHook, wrappedHook]); + } + } + + invoker.merged = true; + def[hookKey] = invoker; +} + +/* */ + +function extractPropsFromVNodeData ( + data, + Ctor, + tag +) { + // we are only extracting raw values here. + // validation and default values are handled in the child + // component itself. + var propOptions = Ctor.options.props; + if (isUndef(propOptions)) { + return + } + var res = {}; + var attrs = data.attrs; + var props = data.props; + if (isDef(attrs) || isDef(props)) { + for (var key in propOptions) { + var altKey = hyphenate(key); + if (false) { + var keyInLowerCase = key.toLowerCase(); + if ( + key !== keyInLowerCase && + attrs && hasOwn(attrs, keyInLowerCase) + ) { + tip( + "Prop \"" + keyInLowerCase + "\" is passed to component " + + (formatComponentName(tag || Ctor)) + ", but the declared prop name is" + + " \"" + key + "\". " + + "Note that HTML attributes are case-insensitive and camelCased " + + "props need to use their kebab-case equivalents when using in-DOM " + + "templates. You should probably use \"" + altKey + "\" instead of \"" + key + "\"." + ); + } + } + checkProp(res, props, key, altKey, true) || + checkProp(res, attrs, key, altKey, false); + } + } + return res +} + +function checkProp ( + res, + hash, + key, + altKey, + preserve +) { + if (isDef(hash)) { + if (hasOwn(hash, key)) { + res[key] = hash[key]; + if (!preserve) { + delete hash[key]; + } + return true + } else if (hasOwn(hash, altKey)) { + res[key] = hash[altKey]; + if (!preserve) { + delete hash[altKey]; + } + return true + } + } + return false +} + +/* */ + +// The template compiler attempts to minimize the need for normalization by +// statically analyzing the template at compile time. +// +// For plain HTML markup, normalization can be completely skipped because the +// generated render function is guaranteed to return Array<VNode>. There are +// two cases where extra normalization is needed: + +// 1. When the children contains components - because a functional component +// may return an Array instead of a single root. In this case, just a simple +// normalization is needed - if any child is an Array, we flatten the whole +// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep +// because functional components already normalize their own children. +function simpleNormalizeChildren (children) { + for (var i = 0; i < children.length; i++) { + if (Array.isArray(children[i])) { + return Array.prototype.concat.apply([], children) + } + } + return children +} + +// 2. When the children contains constructs that always generated nested Arrays, +// e.g. <template>, <slot>, v-for, or when the children is provided by user +// with hand-written render functions / JSX. In such cases a full normalization +// is needed to cater to all possible types of children values. +function normalizeChildren (children) { + return isPrimitive(children) + ? [createTextVNode(children)] + : Array.isArray(children) + ? normalizeArrayChildren(children) + : undefined +} + +function isTextNode (node) { + return isDef(node) && isDef(node.text) && isFalse(node.isComment) +} + +function normalizeArrayChildren (children, nestedIndex) { + var res = []; + var i, c, lastIndex, last; + for (i = 0; i < children.length; i++) { + c = children[i]; + if (isUndef(c) || typeof c === 'boolean') { continue } + lastIndex = res.length - 1; + last = res[lastIndex]; + // nested + if (Array.isArray(c)) { + if (c.length > 0) { + c = normalizeArrayChildren(c, ((nestedIndex || '') + "_" + i)); + // merge adjacent text nodes + if (isTextNode(c[0]) && isTextNode(last)) { + res[lastIndex] = createTextVNode(last.text + (c[0]).text); + c.shift(); + } + res.push.apply(res, c); + } + } else if (isPrimitive(c)) { + if (isTextNode(last)) { + // merge adjacent text nodes + // this is necessary for SSR hydration because text nodes are + // essentially merged when rendered to HTML strings + res[lastIndex] = createTextVNode(last.text + c); + } else if (c !== '') { + // convert primitive to vnode + res.push(createTextVNode(c)); + } + } else { + if (isTextNode(c) && isTextNode(last)) { + // merge adjacent text nodes + res[lastIndex] = createTextVNode(last.text + c.text); + } else { + // default key for nested array children (likely generated by v-for) + if (isTrue(children._isVList) && + isDef(c.tag) && + isUndef(c.key) && + isDef(nestedIndex)) { + c.key = "__vlist" + nestedIndex + "_" + i + "__"; + } + res.push(c); + } + } + } + return res +} + +/* */ + +function ensureCtor (comp, base) { + if ( + comp.__esModule || + (hasSymbol && comp[Symbol.toStringTag] === 'Module') + ) { + comp = comp.default; + } + return isObject(comp) + ? base.extend(comp) + : comp +} + +function createAsyncPlaceholder ( + factory, + data, + context, + children, + tag +) { + var node = createEmptyVNode(); + node.asyncFactory = factory; + node.asyncMeta = { data: data, context: context, children: children, tag: tag }; + return node +} + +function resolveAsyncComponent ( + factory, + baseCtor, + context +) { + if (isTrue(factory.error) && isDef(factory.errorComp)) { + return factory.errorComp + } + + if (isDef(factory.resolved)) { + return factory.resolved + } + + if (isTrue(factory.loading) && isDef(factory.loadingComp)) { + return factory.loadingComp + } + + if (isDef(factory.contexts)) { + // already pending + factory.contexts.push(context); + } else { + var contexts = factory.contexts = [context]; + var sync = true; + + var forceRender = function () { + for (var i = 0, l = contexts.length; i < l; i++) { + contexts[i].$forceUpdate(); + } + }; + + var resolve = once(function (res) { + // cache resolved + factory.resolved = ensureCtor(res, baseCtor); + // invoke callbacks only if this is not a synchronous resolve + // (async resolves are shimmed as synchronous during SSR) + if (!sync) { + forceRender(); + } + }); + + var reject = once(function (reason) { + "production" !== 'production' && warn( + "Failed to resolve async component: " + (String(factory)) + + (reason ? ("\nReason: " + reason) : '') + ); + if (isDef(factory.errorComp)) { + factory.error = true; + forceRender(); + } + }); + + var res = factory(resolve, reject); + + if (isObject(res)) { + if (typeof res.then === 'function') { + // () => Promise + if (isUndef(factory.resolved)) { + res.then(resolve, reject); + } + } else if (isDef(res.component) && typeof res.component.then === 'function') { + res.component.then(resolve, reject); + + if (isDef(res.error)) { + factory.errorComp = ensureCtor(res.error, baseCtor); + } + + if (isDef(res.loading)) { + factory.loadingComp = ensureCtor(res.loading, baseCtor); + if (res.delay === 0) { + factory.loading = true; + } else { + setTimeout(function () { + if (isUndef(factory.resolved) && isUndef(factory.error)) { + factory.loading = true; + forceRender(); + } + }, res.delay || 200); + } + } + + if (isDef(res.timeout)) { + setTimeout(function () { + if (isUndef(factory.resolved)) { + reject( + false + ? ("timeout (" + (res.timeout) + "ms)") + : null + ); + } + }, res.timeout); + } + } + } + + sync = false; + // return in case resolved synchronously + return factory.loading + ? factory.loadingComp + : factory.resolved + } +} + +/* */ + +function isAsyncPlaceholder (node) { + return node.isComment && node.asyncFactory +} + +/* */ + +function getFirstComponentChild (children) { + if (Array.isArray(children)) { + for (var i = 0; i < children.length; i++) { + var c = children[i]; + if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) { + return c + } + } + } +} + +/* */ + +/* */ + +function initEvents (vm) { + vm._events = Object.create(null); + vm._hasHookEvent = false; + // init parent attached events + var listeners = vm.$options._parentListeners; + if (listeners) { + updateComponentListeners(vm, listeners); + } +} + +var target; + +function add (event, fn, once) { + if (once) { + target.$once(event, fn); + } else { + target.$on(event, fn); + } +} + +function remove$1 (event, fn) { + target.$off(event, fn); +} + +function updateComponentListeners ( + vm, + listeners, + oldListeners +) { + target = vm; + updateListeners(listeners, oldListeners || {}, add, remove$1, vm); + target = undefined; +} + +function eventsMixin (Vue) { + var hookRE = /^hook:/; + Vue.prototype.$on = function (event, fn) { + var this$1 = this; + + var vm = this; + if (Array.isArray(event)) { + for (var i = 0, l = event.length; i < l; i++) { + this$1.$on(event[i], fn); + } + } else { + (vm._events[event] || (vm._events[event] = [])).push(fn); + // optimize hook:event cost by using a boolean flag marked at registration + // instead of a hash lookup + if (hookRE.test(event)) { + vm._hasHookEvent = true; + } + } + return vm + }; + + Vue.prototype.$once = function (event, fn) { + var vm = this; + function on () { + vm.$off(event, on); + fn.apply(vm, arguments); + } + on.fn = fn; + vm.$on(event, on); + return vm + }; + + Vue.prototype.$off = function (event, fn) { + var this$1 = this; + + var vm = this; + // all + if (!arguments.length) { + vm._events = Object.create(null); + return vm + } + // array of events + if (Array.isArray(event)) { + for (var i = 0, l = event.length; i < l; i++) { + this$1.$off(event[i], fn); + } + return vm + } + // specific event + var cbs = vm._events[event]; + if (!cbs) { + return vm + } + if (!fn) { + vm._events[event] = null; + return vm + } + if (fn) { + // specific handler + var cb; + var i$1 = cbs.length; + while (i$1--) { + cb = cbs[i$1]; + if (cb === fn || cb.fn === fn) { + cbs.splice(i$1, 1); + break + } + } + } + return vm + }; + + Vue.prototype.$emit = function (event) { + var vm = this; + if (false) { + var lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) { + tip( + "Event \"" + lowerCaseEvent + "\" is emitted in component " + + (formatComponentName(vm)) + " but the handler is registered for \"" + event + "\". " + + "Note that HTML attributes are case-insensitive and you cannot use " + + "v-on to listen to camelCase events when using in-DOM templates. " + + "You should probably use \"" + (hyphenate(event)) + "\" instead of \"" + event + "\"." + ); + } + } + var cbs = vm._events[event]; + if (cbs) { + cbs = cbs.length > 1 ? toArray(cbs) : cbs; + var args = toArray(arguments, 1); + for (var i = 0, l = cbs.length; i < l; i++) { + try { + cbs[i].apply(vm, args); + } catch (e) { + handleError(e, vm, ("event handler for \"" + event + "\"")); + } + } + } + return vm + }; +} + +/* */ + + + +/** + * Runtime helper for resolving raw children VNodes into a slot object. + */ +function resolveSlots ( + children, + context +) { + var slots = {}; + if (!children) { + return slots + } + for (var i = 0, l = children.length; i < l; i++) { + var child = children[i]; + var data = child.data; + // remove slot attribute if the node is resolved as a Vue slot node + if (data && data.attrs && data.attrs.slot) { + delete data.attrs.slot; + } + // named slots should only be respected if the vnode was rendered in the + // same context. + if ((child.context === context || child.fnContext === context) && + data && data.slot != null + ) { + var name = data.slot; + var slot = (slots[name] || (slots[name] = [])); + if (child.tag === 'template') { + slot.push.apply(slot, child.children || []); + } else { + slot.push(child); + } + } else { + (slots.default || (slots.default = [])).push(child); + } + } + // ignore slots that contains only whitespace + for (var name$1 in slots) { + if (slots[name$1].every(isWhitespace)) { + delete slots[name$1]; + } + } + return slots +} + +function isWhitespace (node) { + return (node.isComment && !node.asyncFactory) || node.text === ' ' +} + +function resolveScopedSlots ( + fns, // see flow/vnode + res +) { + res = res || {}; + for (var i = 0; i < fns.length; i++) { + if (Array.isArray(fns[i])) { + resolveScopedSlots(fns[i], res); + } else { + res[fns[i].key] = fns[i].fn; + } + } + return res +} + +/* */ + +var activeInstance = null; +var isUpdatingChildComponent = false; + +function initLifecycle (vm) { + var options = vm.$options; + + // locate first non-abstract parent + var parent = options.parent; + if (parent && !options.abstract) { + while (parent.$options.abstract && parent.$parent) { + parent = parent.$parent; + } + parent.$children.push(vm); + } + + vm.$parent = parent; + vm.$root = parent ? parent.$root : vm; + + vm.$children = []; + vm.$refs = {}; + + vm._watcher = null; + vm._inactive = null; + vm._directInactive = false; + vm._isMounted = false; + vm._isDestroyed = false; + vm._isBeingDestroyed = false; +} + +function lifecycleMixin (Vue) { + Vue.prototype._update = function (vnode, hydrating) { + var vm = this; + if (vm._isMounted) { + callHook(vm, 'beforeUpdate'); + } + var prevEl = vm.$el; + var prevVnode = vm._vnode; + var prevActiveInstance = activeInstance; + activeInstance = vm; + vm._vnode = vnode; + // Vue.prototype.__patch__ is injected in entry points + // based on the rendering backend used. + if (!prevVnode) { + // initial render + vm.$el = vm.__patch__( + vm.$el, vnode, hydrating, false /* removeOnly */, + vm.$options._parentElm, + vm.$options._refElm + ); + // no need for the ref nodes after initial patch + // this prevents keeping a detached DOM tree in memory (#5851) + vm.$options._parentElm = vm.$options._refElm = null; + } else { + // updates + vm.$el = vm.__patch__(prevVnode, vnode); + } + activeInstance = prevActiveInstance; + // update __vue__ reference + if (prevEl) { + prevEl.__vue__ = null; + } + if (vm.$el) { + vm.$el.__vue__ = vm; + } + // if parent is an HOC, update its $el as well + if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) { + vm.$parent.$el = vm.$el; + } + // updated hook is called by the scheduler to ensure that children are + // updated in a parent's updated hook. + }; + + Vue.prototype.$forceUpdate = function () { + var vm = this; + if (vm._watcher) { + vm._watcher.update(); + } + }; + + Vue.prototype.$destroy = function () { + var vm = this; + if (vm._isBeingDestroyed) { + return + } + callHook(vm, 'beforeDestroy'); + vm._isBeingDestroyed = true; + // remove self from parent + var parent = vm.$parent; + if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) { + remove(parent.$children, vm); + } + // teardown watchers + if (vm._watcher) { + vm._watcher.teardown(); + } + var i = vm._watchers.length; + while (i--) { + vm._watchers[i].teardown(); + } + // remove reference from data ob + // frozen object may not have observer. + if (vm._data.__ob__) { + vm._data.__ob__.vmCount--; + } + // call the last hook... + vm._isDestroyed = true; + // invoke destroy hooks on current rendered tree + vm.__patch__(vm._vnode, null); + // fire destroyed hook + callHook(vm, 'destroyed'); + // turn off all instance listeners. + vm.$off(); + // remove __vue__ reference + if (vm.$el) { + vm.$el.__vue__ = null; + } + // release circular reference (#6759) + if (vm.$vnode) { + vm.$vnode.parent = null; + } + }; +} + +function mountComponent ( + vm, + el, + hydrating +) { + vm.$el = el; + if (!vm.$options.render) { + vm.$options.render = createEmptyVNode; + if (false) { + /* istanbul ignore if */ + if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') || + vm.$options.el || el) { + warn( + 'You are using the runtime-only build of Vue where the template ' + + 'compiler is not available. Either pre-compile the templates into ' + + 'render functions, or use the compiler-included build.', + vm + ); + } else { + warn( + 'Failed to mount component: template or render function not defined.', + vm + ); + } + } + } + callHook(vm, 'beforeMount'); + + var updateComponent; + /* istanbul ignore if */ + if (false) { + updateComponent = function () { + var name = vm._name; + var id = vm._uid; + var startTag = "vue-perf-start:" + id; + var endTag = "vue-perf-end:" + id; + + mark(startTag); + var vnode = vm._render(); + mark(endTag); + measure(("vue " + name + " render"), startTag, endTag); + + mark(startTag); + vm._update(vnode, hydrating); + mark(endTag); + measure(("vue " + name + " patch"), startTag, endTag); + }; + } else { + updateComponent = function () { + vm._update(vm._render(), hydrating); + }; + } + + // we set this to vm._watcher inside the watcher's constructor + // since the watcher's initial patch may call $forceUpdate (e.g. inside child + // component's mounted hook), which relies on vm._watcher being already defined + new Watcher(vm, updateComponent, noop, null, true /* isRenderWatcher */); + hydrating = false; + + // manually mounted instance, call mounted on self + // mounted is called for render-created child components in its inserted hook + if (vm.$vnode == null) { + vm._isMounted = true; + callHook(vm, 'mounted'); + } + return vm +} + +function updateChildComponent ( + vm, + propsData, + listeners, + parentVnode, + renderChildren +) { + if (false) { + isUpdatingChildComponent = true; + } + + // determine whether component has slot children + // we need to do this before overwriting $options._renderChildren + var hasChildren = !!( + renderChildren || // has new static slots + vm.$options._renderChildren || // has old static slots + parentVnode.data.scopedSlots || // has new scoped slots + vm.$scopedSlots !== emptyObject // has old scoped slots + ); + + vm.$options._parentVnode = parentVnode; + vm.$vnode = parentVnode; // update vm's placeholder node without re-render + + if (vm._vnode) { // update child tree's parent + vm._vnode.parent = parentVnode; + } + vm.$options._renderChildren = renderChildren; + + // update $attrs and $listeners hash + // these are also reactive so they may trigger child update if the child + // used them during render + vm.$attrs = (parentVnode.data && parentVnode.data.attrs) || emptyObject; + vm.$listeners = listeners || emptyObject; + + // update props + if (propsData && vm.$options.props) { + observerState.shouldConvert = false; + var props = vm._props; + var propKeys = vm.$options._propKeys || []; + for (var i = 0; i < propKeys.length; i++) { + var key = propKeys[i]; + props[key] = validateProp(key, vm.$options.props, propsData, vm); + } + observerState.shouldConvert = true; + // keep a copy of raw propsData + vm.$options.propsData = propsData; + } + + // update listeners + if (listeners) { + var oldListeners = vm.$options._parentListeners; + vm.$options._parentListeners = listeners; + updateComponentListeners(vm, listeners, oldListeners); + } + // resolve slots + force update if has children + if (hasChildren) { + vm.$slots = resolveSlots(renderChildren, parentVnode.context); + vm.$forceUpdate(); + } + + if (false) { + isUpdatingChildComponent = false; + } +} + +function isInInactiveTree (vm) { + while (vm && (vm = vm.$parent)) { + if (vm._inactive) { return true } + } + return false +} + +function activateChildComponent (vm, direct) { + if (direct) { + vm._directInactive = false; + if (isInInactiveTree(vm)) { + return + } + } else if (vm._directInactive) { + return + } + if (vm._inactive || vm._inactive === null) { + vm._inactive = false; + for (var i = 0; i < vm.$children.length; i++) { + activateChildComponent(vm.$children[i]); + } + callHook(vm, 'activated'); + } +} + +function deactivateChildComponent (vm, direct) { + if (direct) { + vm._directInactive = true; + if (isInInactiveTree(vm)) { + return + } + } + if (!vm._inactive) { + vm._inactive = true; + for (var i = 0; i < vm.$children.length; i++) { + deactivateChildComponent(vm.$children[i]); + } + callHook(vm, 'deactivated'); + } +} + +function callHook (vm, hook) { + var handlers = vm.$options[hook]; + if (handlers) { + for (var i = 0, j = handlers.length; i < j; i++) { + try { + handlers[i].call(vm); + } catch (e) { + handleError(e, vm, (hook + " hook")); + } + } + } + if (vm._hasHookEvent) { + vm.$emit('hook:' + hook); + } +} + +/* */ + + +var MAX_UPDATE_COUNT = 100; + +var queue = []; +var activatedChildren = []; +var has = {}; +var circular = {}; +var waiting = false; +var flushing = false; +var index = 0; + +/** + * Reset the scheduler's state. + */ +function resetSchedulerState () { + index = queue.length = activatedChildren.length = 0; + has = {}; + if (false) { + circular = {}; + } + waiting = flushing = false; +} + +/** + * Flush both queues and run the watchers. + */ +function flushSchedulerQueue () { + flushing = true; + var watcher, id; + + // Sort queue before flush. + // This ensures that: + // 1. Components are updated from parent to child. (because parent is always + // created before the child) + // 2. A component's user watchers are run before its render watcher (because + // user watchers are created before the render watcher) + // 3. If a component is destroyed during a parent component's watcher run, + // its watchers can be skipped. + queue.sort(function (a, b) { return a.id - b.id; }); + + // do not cache length because more watchers might be pushed + // as we run existing watchers + for (index = 0; index < queue.length; index++) { + watcher = queue[index]; + id = watcher.id; + has[id] = null; + watcher.run(); + // in dev build, check and stop circular updates. + if (false) { + circular[id] = (circular[id] || 0) + 1; + if (circular[id] > MAX_UPDATE_COUNT) { + warn( + 'You may have an infinite update loop ' + ( + watcher.user + ? ("in watcher with expression \"" + (watcher.expression) + "\"") + : "in a component render function." + ), + watcher.vm + ); + break + } + } + } + + // keep copies of post queues before resetting state + var activatedQueue = activatedChildren.slice(); + var updatedQueue = queue.slice(); + + resetSchedulerState(); + + // call component updated and activated hooks + callActivatedHooks(activatedQueue); + callUpdatedHooks(updatedQueue); + + // devtool hook + /* istanbul ignore if */ + if (devtools && config.devtools) { + devtools.emit('flush'); + } +} + +function callUpdatedHooks (queue) { + var i = queue.length; + while (i--) { + var watcher = queue[i]; + var vm = watcher.vm; + if (vm._watcher === watcher && vm._isMounted) { + callHook(vm, 'updated'); + } + } +} + +/** + * Queue a kept-alive component that was activated during patch. + * The queue will be processed after the entire tree has been patched. + */ +function queueActivatedComponent (vm) { + // setting _inactive to false here so that a render function can + // rely on checking whether it's in an inactive tree (e.g. router-view) + vm._inactive = false; + activatedChildren.push(vm); +} + +function callActivatedHooks (queue) { + for (var i = 0; i < queue.length; i++) { + queue[i]._inactive = true; + activateChildComponent(queue[i], true /* true */); + } +} + +/** + * Push a watcher into the watcher queue. + * Jobs with duplicate IDs will be skipped unless it's + * pushed when the queue is being flushed. + */ +function queueWatcher (watcher) { + var id = watcher.id; + if (has[id] == null) { + has[id] = true; + if (!flushing) { + queue.push(watcher); + } else { + // if already flushing, splice the watcher based on its id + // if already past its id, it will be run next immediately. + var i = queue.length - 1; + while (i > index && queue[i].id > watcher.id) { + i--; + } + queue.splice(i + 1, 0, watcher); + } + // queue the flush + if (!waiting) { + waiting = true; + nextTick(flushSchedulerQueue); + } + } +} + +/* */ + +var uid$2 = 0; + +/** + * A watcher parses an expression, collects dependencies, + * and fires callback when the expression value changes. + * This is used for both the $watch() api and directives. + */ +var Watcher = function Watcher ( + vm, + expOrFn, + cb, + options, + isRenderWatcher +) { + this.vm = vm; + if (isRenderWatcher) { + vm._watcher = this; + } + vm._watchers.push(this); + // options + if (options) { + this.deep = !!options.deep; + this.user = !!options.user; + this.lazy = !!options.lazy; + this.sync = !!options.sync; + } else { + this.deep = this.user = this.lazy = this.sync = false; + } + this.cb = cb; + this.id = ++uid$2; // uid for batching + this.active = true; + this.dirty = this.lazy; // for lazy watchers + this.deps = []; + this.newDeps = []; + this.depIds = new _Set(); + this.newDepIds = new _Set(); + this.expression = false + ? expOrFn.toString() + : ''; + // parse expression for getter + if (typeof expOrFn === 'function') { + this.getter = expOrFn; + } else { + this.getter = parsePath(expOrFn); + if (!this.getter) { + this.getter = function () {}; + "production" !== 'production' && warn( + "Failed watching path: \"" + expOrFn + "\" " + + 'Watcher only accepts simple dot-delimited paths. ' + + 'For full control, use a function instead.', + vm + ); + } + } + this.value = this.lazy + ? undefined + : this.get(); +}; + +/** + * Evaluate the getter, and re-collect dependencies. + */ +Watcher.prototype.get = function get () { + pushTarget(this); + var value; + var vm = this.vm; + try { + value = this.getter.call(vm, vm); + } catch (e) { + if (this.user) { + handleError(e, vm, ("getter for watcher \"" + (this.expression) + "\"")); + } else { + throw e + } + } finally { + // "touch" every property so they are all tracked as + // dependencies for deep watching + if (this.deep) { + traverse(value); + } + popTarget(); + this.cleanupDeps(); + } + return value +}; + +/** + * Add a dependency to this directive. + */ +Watcher.prototype.addDep = function addDep (dep) { + var id = dep.id; + if (!this.newDepIds.has(id)) { + this.newDepIds.add(id); + this.newDeps.push(dep); + if (!this.depIds.has(id)) { + dep.addSub(this); + } + } +}; + +/** + * Clean up for dependency collection. + */ +Watcher.prototype.cleanupDeps = function cleanupDeps () { + var this$1 = this; + + var i = this.deps.length; + while (i--) { + var dep = this$1.deps[i]; + if (!this$1.newDepIds.has(dep.id)) { + dep.removeSub(this$1); + } + } + var tmp = this.depIds; + this.depIds = this.newDepIds; + this.newDepIds = tmp; + this.newDepIds.clear(); + tmp = this.deps; + this.deps = this.newDeps; + this.newDeps = tmp; + this.newDeps.length = 0; +}; + +/** + * Subscriber interface. + * Will be called when a dependency changes. + */ +Watcher.prototype.update = function update () { + /* istanbul ignore else */ + if (this.lazy) { + this.dirty = true; + } else if (this.sync) { + this.run(); + } else { + queueWatcher(this); + } +}; + +/** + * Scheduler job interface. + * Will be called by the scheduler. + */ +Watcher.prototype.run = function run () { + if (this.active) { + var value = this.get(); + if ( + value !== this.value || + // Deep watchers and watchers on Object/Arrays should fire even + // when the value is the same, because the value may + // have mutated. + isObject(value) || + this.deep + ) { + // set new value + var oldValue = this.value; + this.value = value; + if (this.user) { + try { + this.cb.call(this.vm, value, oldValue); + } catch (e) { + handleError(e, this.vm, ("callback for watcher \"" + (this.expression) + "\"")); + } + } else { + this.cb.call(this.vm, value, oldValue); + } + } + } +}; + +/** + * Evaluate the value of the watcher. + * This only gets called for lazy watchers. + */ +Watcher.prototype.evaluate = function evaluate () { + this.value = this.get(); + this.dirty = false; +}; + +/** + * Depend on all deps collected by this watcher. + */ +Watcher.prototype.depend = function depend () { + var this$1 = this; + + var i = this.deps.length; + while (i--) { + this$1.deps[i].depend(); + } +}; + +/** + * Remove self from all dependencies' subscriber list. + */ +Watcher.prototype.teardown = function teardown () { + var this$1 = this; + + if (this.active) { + // remove self from vm's watcher list + // this is a somewhat expensive operation so we skip it + // if the vm is being destroyed. + if (!this.vm._isBeingDestroyed) { + remove(this.vm._watchers, this); + } + var i = this.deps.length; + while (i--) { + this$1.deps[i].removeSub(this$1); + } + this.active = false; + } +}; + +/* */ + +var sharedPropertyDefinition = { + enumerable: true, + configurable: true, + get: noop, + set: noop +}; + +function proxy (target, sourceKey, key) { + sharedPropertyDefinition.get = function proxyGetter () { + return this[sourceKey][key] + }; + sharedPropertyDefinition.set = function proxySetter (val) { + this[sourceKey][key] = val; + }; + Object.defineProperty(target, key, sharedPropertyDefinition); +} + +function initState (vm) { + vm._watchers = []; + var opts = vm.$options; + if (opts.props) { initProps(vm, opts.props); } + if (opts.methods) { initMethods(vm, opts.methods); } + if (opts.data) { + initData(vm); + } else { + observe(vm._data = {}, true /* asRootData */); + } + if (opts.computed) { initComputed(vm, opts.computed); } + if (opts.watch && opts.watch !== nativeWatch) { + initWatch(vm, opts.watch); + } +} + +function initProps (vm, propsOptions) { + var propsData = vm.$options.propsData || {}; + var props = vm._props = {}; + // cache prop keys so that future props updates can iterate using Array + // instead of dynamic object key enumeration. + var keys = vm.$options._propKeys = []; + var isRoot = !vm.$parent; + // root instance props should be converted + observerState.shouldConvert = isRoot; + var loop = function ( key ) { + keys.push(key); + var value = validateProp(key, propsOptions, propsData, vm); + /* istanbul ignore else */ + if (false) { + var hyphenatedKey = hyphenate(key); + if (isReservedAttribute(hyphenatedKey) || + config.isReservedAttr(hyphenatedKey)) { + warn( + ("\"" + hyphenatedKey + "\" is a reserved attribute and cannot be used as component prop."), + vm + ); + } + defineReactive(props, key, value, function () { + if (vm.$parent && !isUpdatingChildComponent) { + warn( + "Avoid mutating a prop directly since the value will be " + + "overwritten whenever the parent component re-renders. " + + "Instead, use a data or computed property based on the prop's " + + "value. Prop being mutated: \"" + key + "\"", + vm + ); + } + }); + } else { + defineReactive(props, key, value); + } + // static props are already proxied on the component's prototype + // during Vue.extend(). We only need to proxy props defined at + // instantiation here. + if (!(key in vm)) { + proxy(vm, "_props", key); + } + }; + + for (var key in propsOptions) loop( key ); + observerState.shouldConvert = true; +} + +function initData (vm) { + var data = vm.$options.data; + data = vm._data = typeof data === 'function' + ? getData(data, vm) + : data || {}; + if (!isPlainObject(data)) { + data = {}; + "production" !== 'production' && warn( + 'data functions should return an object:\n' + + 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function', + vm + ); + } + // proxy data on instance + var keys = Object.keys(data); + var props = vm.$options.props; + var methods = vm.$options.methods; + var i = keys.length; + while (i--) { + var key = keys[i]; + if (false) { + if (methods && hasOwn(methods, key)) { + warn( + ("Method \"" + key + "\" has already been defined as a data property."), + vm + ); + } + } + if (props && hasOwn(props, key)) { + "production" !== 'production' && warn( + "The data property \"" + key + "\" is already declared as a prop. " + + "Use prop default value instead.", + vm + ); + } else if (!isReserved(key)) { + proxy(vm, "_data", key); + } + } + // observe data + observe(data, true /* asRootData */); +} + +function getData (data, vm) { + try { + return data.call(vm, vm) + } catch (e) { + handleError(e, vm, "data()"); + return {} + } +} + +var computedWatcherOptions = { lazy: true }; + +function initComputed (vm, computed) { + // $flow-disable-line + var watchers = vm._computedWatchers = Object.create(null); + // computed properties are just getters during SSR + var isSSR = isServerRendering(); + + for (var key in computed) { + var userDef = computed[key]; + var getter = typeof userDef === 'function' ? userDef : userDef.get; + if (false) { + warn( + ("Getter is missing for computed property \"" + key + "\"."), + vm + ); + } + + if (!isSSR) { + // create internal watcher for the computed property. + watchers[key] = new Watcher( + vm, + getter || noop, + noop, + computedWatcherOptions + ); + } + + // component-defined computed properties are already defined on the + // component prototype. We only need to define computed properties defined + // at instantiation here. + if (!(key in vm)) { + defineComputed(vm, key, userDef); + } else if (false) { + if (key in vm.$data) { + warn(("The computed property \"" + key + "\" is already defined in data."), vm); + } else if (vm.$options.props && key in vm.$options.props) { + warn(("The computed property \"" + key + "\" is already defined as a prop."), vm); + } + } + } +} + +function defineComputed ( + target, + key, + userDef +) { + var shouldCache = !isServerRendering(); + if (typeof userDef === 'function') { + sharedPropertyDefinition.get = shouldCache + ? createComputedGetter(key) + : userDef; + sharedPropertyDefinition.set = noop; + } else { + sharedPropertyDefinition.get = userDef.get + ? shouldCache && userDef.cache !== false + ? createComputedGetter(key) + : userDef.get + : noop; + sharedPropertyDefinition.set = userDef.set + ? userDef.set + : noop; + } + if (false) { + sharedPropertyDefinition.set = function () { + warn( + ("Computed property \"" + key + "\" was assigned to but it has no setter."), + this + ); + }; + } + Object.defineProperty(target, key, sharedPropertyDefinition); +} + +function createComputedGetter (key) { + return function computedGetter () { + var watcher = this._computedWatchers && this._computedWatchers[key]; + if (watcher) { + if (watcher.dirty) { + watcher.evaluate(); + } + if (Dep.target) { + watcher.depend(); + } + return watcher.value + } + } +} + +function initMethods (vm, methods) { + var props = vm.$options.props; + for (var key in methods) { + if (false) { + if (methods[key] == null) { + warn( + "Method \"" + key + "\" has an undefined value in the component definition. " + + "Did you reference the function correctly?", + vm + ); + } + if (props && hasOwn(props, key)) { + warn( + ("Method \"" + key + "\" has already been defined as a prop."), + vm + ); + } + if ((key in vm) && isReserved(key)) { + warn( + "Method \"" + key + "\" conflicts with an existing Vue instance method. " + + "Avoid defining component methods that start with _ or $." + ); + } + } + vm[key] = methods[key] == null ? noop : bind(methods[key], vm); + } +} + +function initWatch (vm, watch) { + for (var key in watch) { + var handler = watch[key]; + if (Array.isArray(handler)) { + for (var i = 0; i < handler.length; i++) { + createWatcher(vm, key, handler[i]); + } + } else { + createWatcher(vm, key, handler); + } + } +} + +function createWatcher ( + vm, + keyOrFn, + handler, + options +) { + if (isPlainObject(handler)) { + options = handler; + handler = handler.handler; + } + if (typeof handler === 'string') { + handler = vm[handler]; + } + return vm.$watch(keyOrFn, handler, options) +} + +function stateMixin (Vue) { + // flow somehow has problems with directly declared definition object + // when using Object.defineProperty, so we have to procedurally build up + // the object here. + var dataDef = {}; + dataDef.get = function () { return this._data }; + var propsDef = {}; + propsDef.get = function () { return this._props }; + if (false) { + dataDef.set = function (newData) { + warn( + 'Avoid replacing instance root $data. ' + + 'Use nested data properties instead.', + this + ); + }; + propsDef.set = function () { + warn("$props is readonly.", this); + }; + } + Object.defineProperty(Vue.prototype, '$data', dataDef); + Object.defineProperty(Vue.prototype, '$props', propsDef); + + Vue.prototype.$set = set; + Vue.prototype.$delete = del; + + Vue.prototype.$watch = function ( + expOrFn, + cb, + options + ) { + var vm = this; + if (isPlainObject(cb)) { + return createWatcher(vm, expOrFn, cb, options) + } + options = options || {}; + options.user = true; + var watcher = new Watcher(vm, expOrFn, cb, options); + if (options.immediate) { + cb.call(vm, watcher.value); + } + return function unwatchFn () { + watcher.teardown(); + } + }; +} + +/* */ + +function initProvide (vm) { + var provide = vm.$options.provide; + if (provide) { + vm._provided = typeof provide === 'function' + ? provide.call(vm) + : provide; + } +} + +function initInjections (vm) { + var result = resolveInject(vm.$options.inject, vm); + if (result) { + observerState.shouldConvert = false; + Object.keys(result).forEach(function (key) { + /* istanbul ignore else */ + if (false) { + defineReactive(vm, key, result[key], function () { + warn( + "Avoid mutating an injected value directly since the changes will be " + + "overwritten whenever the provided component re-renders. " + + "injection being mutated: \"" + key + "\"", + vm + ); + }); + } else { + defineReactive(vm, key, result[key]); + } + }); + observerState.shouldConvert = true; + } +} + +function resolveInject (inject, vm) { + if (inject) { + // inject is :any because flow is not smart enough to figure out cached + var result = Object.create(null); + var keys = hasSymbol + ? Reflect.ownKeys(inject).filter(function (key) { + /* istanbul ignore next */ + return Object.getOwnPropertyDescriptor(inject, key).enumerable + }) + : Object.keys(inject); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var provideKey = inject[key].from; + var source = vm; + while (source) { + if (source._provided && provideKey in source._provided) { + result[key] = source._provided[provideKey]; + break + } + source = source.$parent; + } + if (!source) { + if ('default' in inject[key]) { + var provideDefault = inject[key].default; + result[key] = typeof provideDefault === 'function' + ? provideDefault.call(vm) + : provideDefault; + } else if (false) { + warn(("Injection \"" + key + "\" not found"), vm); + } + } + } + return result + } +} + +/* */ + +/** + * Runtime helper for rendering v-for lists. + */ +function renderList ( + val, + render +) { + var ret, i, l, keys, key; + if (Array.isArray(val) || typeof val === 'string') { + ret = new Array(val.length); + for (i = 0, l = val.length; i < l; i++) { + ret[i] = render(val[i], i); + } + } else if (typeof val === 'number') { + ret = new Array(val); + for (i = 0; i < val; i++) { + ret[i] = render(i + 1, i); + } + } else if (isObject(val)) { + keys = Object.keys(val); + ret = new Array(keys.length); + for (i = 0, l = keys.length; i < l; i++) { + key = keys[i]; + ret[i] = render(val[key], key, i); + } + } + if (isDef(ret)) { + (ret)._isVList = true; + } + return ret +} + +/* */ + +/** + * Runtime helper for rendering <slot> + */ +function renderSlot ( + name, + fallback, + props, + bindObject +) { + var scopedSlotFn = this.$scopedSlots[name]; + var nodes; + if (scopedSlotFn) { // scoped slot + props = props || {}; + if (bindObject) { + if (false) { + warn( + 'slot v-bind without argument expects an Object', + this + ); + } + props = extend(extend({}, bindObject), props); + } + nodes = scopedSlotFn(props) || fallback; + } else { + var slotNodes = this.$slots[name]; + // warn duplicate slot usage + if (slotNodes) { + if (false) { + warn( + "Duplicate presence of slot \"" + name + "\" found in the same render tree " + + "- this will likely cause render errors.", + this + ); + } + slotNodes._rendered = true; + } + nodes = slotNodes || fallback; + } + + var target = props && props.slot; + if (target) { + return this.$createElement('template', { slot: target }, nodes) + } else { + return nodes + } +} + +/* */ + +/** + * Runtime helper for resolving filters + */ +function resolveFilter (id) { + return resolveAsset(this.$options, 'filters', id, true) || identity +} + +/* */ + +/** + * Runtime helper for checking keyCodes from config. + * exposed as Vue.prototype._k + * passing in eventKeyName as last argument separately for backwards compat + */ +function checkKeyCodes ( + eventKeyCode, + key, + builtInAlias, + eventKeyName +) { + var keyCodes = config.keyCodes[key] || builtInAlias; + if (keyCodes) { + if (Array.isArray(keyCodes)) { + return keyCodes.indexOf(eventKeyCode) === -1 + } else { + return keyCodes !== eventKeyCode + } + } else if (eventKeyName) { + return hyphenate(eventKeyName) !== key + } +} + +/* */ + +/** + * Runtime helper for merging v-bind="object" into a VNode's data. + */ +function bindObjectProps ( + data, + tag, + value, + asProp, + isSync +) { + if (value) { + if (!isObject(value)) { + "production" !== 'production' && warn( + 'v-bind without argument expects an Object or Array value', + this + ); + } else { + if (Array.isArray(value)) { + value = toObject(value); + } + var hash; + var loop = function ( key ) { + if ( + key === 'class' || + key === 'style' || + isReservedAttribute(key) + ) { + hash = data; + } else { + var type = data.attrs && data.attrs.type; + hash = asProp || config.mustUseProp(tag, type, key) + ? data.domProps || (data.domProps = {}) + : data.attrs || (data.attrs = {}); + } + if (!(key in hash)) { + hash[key] = value[key]; + + if (isSync) { + var on = data.on || (data.on = {}); + on[("update:" + key)] = function ($event) { + value[key] = $event; + }; + } + } + }; + + for (var key in value) loop( key ); + } + } + return data +} + +/* */ + +/** + * Runtime helper for rendering static trees. + */ +function renderStatic ( + index, + isInFor +) { + var cached = this._staticTrees || (this._staticTrees = []); + var tree = cached[index]; + // if has already-rendered static tree and not inside v-for, + // we can reuse the same tree by doing a shallow clone. + if (tree && !isInFor) { + return Array.isArray(tree) + ? cloneVNodes(tree) + : cloneVNode(tree) + } + // otherwise, render a fresh tree. + tree = cached[index] = this.$options.staticRenderFns[index].call( + this._renderProxy, + null, + this // for render fns generated for functional component templates + ); + markStatic(tree, ("__static__" + index), false); + return tree +} + +/** + * Runtime helper for v-once. + * Effectively it means marking the node as static with a unique key. + */ +function markOnce ( + tree, + index, + key +) { + markStatic(tree, ("__once__" + index + (key ? ("_" + key) : "")), true); + return tree +} + +function markStatic ( + tree, + key, + isOnce +) { + if (Array.isArray(tree)) { + for (var i = 0; i < tree.length; i++) { + if (tree[i] && typeof tree[i] !== 'string') { + markStaticNode(tree[i], (key + "_" + i), isOnce); + } + } + } else { + markStaticNode(tree, key, isOnce); + } +} + +function markStaticNode (node, key, isOnce) { + node.isStatic = true; + node.key = key; + node.isOnce = isOnce; +} + +/* */ + +function bindObjectListeners (data, value) { + if (value) { + if (!isPlainObject(value)) { + "production" !== 'production' && warn( + 'v-on without argument expects an Object value', + this + ); + } else { + var on = data.on = data.on ? extend({}, data.on) : {}; + for (var key in value) { + var existing = on[key]; + var ours = value[key]; + on[key] = existing ? [].concat(existing, ours) : ours; + } + } + } + return data +} + +/* */ + +function installRenderHelpers (target) { + target._o = markOnce; + target._n = toNumber; + target._s = toString; + target._l = renderList; + target._t = renderSlot; + target._q = looseEqual; + target._i = looseIndexOf; + target._m = renderStatic; + target._f = resolveFilter; + target._k = checkKeyCodes; + target._b = bindObjectProps; + target._v = createTextVNode; + target._e = createEmptyVNode; + target._u = resolveScopedSlots; + target._g = bindObjectListeners; +} + +/* */ + +function FunctionalRenderContext ( + data, + props, + children, + parent, + Ctor +) { + var options = Ctor.options; + this.data = data; + this.props = props; + this.children = children; + this.parent = parent; + this.listeners = data.on || emptyObject; + this.injections = resolveInject(options.inject, parent); + this.slots = function () { return resolveSlots(children, parent); }; + + // ensure the createElement function in functional components + // gets a unique context - this is necessary for correct named slot check + var contextVm = Object.create(parent); + var isCompiled = isTrue(options._compiled); + var needNormalization = !isCompiled; + + // support for compiled functional template + if (isCompiled) { + // exposing $options for renderStatic() + this.$options = options; + // pre-resolve slots for renderSlot() + this.$slots = this.slots(); + this.$scopedSlots = data.scopedSlots || emptyObject; + } + + if (options._scopeId) { + this._c = function (a, b, c, d) { + var vnode = createElement(contextVm, a, b, c, d, needNormalization); + if (vnode) { + vnode.fnScopeId = options._scopeId; + vnode.fnContext = parent; + } + return vnode + }; + } else { + this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); }; + } +} + +installRenderHelpers(FunctionalRenderContext.prototype); + +function createFunctionalComponent ( + Ctor, + propsData, + data, + contextVm, + children +) { + var options = Ctor.options; + var props = {}; + var propOptions = options.props; + if (isDef(propOptions)) { + for (var key in propOptions) { + props[key] = validateProp(key, propOptions, propsData || emptyObject); + } + } else { + if (isDef(data.attrs)) { mergeProps(props, data.attrs); } + if (isDef(data.props)) { mergeProps(props, data.props); } + } + + var renderContext = new FunctionalRenderContext( + data, + props, + children, + contextVm, + Ctor + ); + + var vnode = options.render.call(null, renderContext._c, renderContext); + + if (vnode instanceof VNode) { + vnode.fnContext = contextVm; + vnode.fnOptions = options; + if (data.slot) { + (vnode.data || (vnode.data = {})).slot = data.slot; + } + } + + return vnode +} + +function mergeProps (to, from) { + for (var key in from) { + to[camelize(key)] = from[key]; + } +} + +/* */ + + + + +// Register the component hook to weex native render engine. +// The hook will be triggered by native, not javascript. + + +// Updates the state of the component to weex native render engine. + +/* */ + +// https://github.com/Hanks10100/weex-native-directive/tree/master/component + +// listening on native callback + +/* */ + +/* */ + +// hooks to be invoked on component VNodes during patch +var componentVNodeHooks = { + init: function init ( + vnode, + hydrating, + parentElm, + refElm + ) { + if (!vnode.componentInstance || vnode.componentInstance._isDestroyed) { + var child = vnode.componentInstance = createComponentInstanceForVnode( + vnode, + activeInstance, + parentElm, + refElm + ); + child.$mount(hydrating ? vnode.elm : undefined, hydrating); + } else if (vnode.data.keepAlive) { + // kept-alive components, treat as a patch + var mountedNode = vnode; // work around flow + componentVNodeHooks.prepatch(mountedNode, mountedNode); + } + }, + + prepatch: function prepatch (oldVnode, vnode) { + var options = vnode.componentOptions; + var child = vnode.componentInstance = oldVnode.componentInstance; + updateChildComponent( + child, + options.propsData, // updated props + options.listeners, // updated listeners + vnode, // new parent vnode + options.children // new children + ); + }, + + insert: function insert (vnode) { + var context = vnode.context; + var componentInstance = vnode.componentInstance; + if (!componentInstance._isMounted) { + componentInstance._isMounted = true; + callHook(componentInstance, 'mounted'); + } + if (vnode.data.keepAlive) { + if (context._isMounted) { + // vue-router#1212 + // During updates, a kept-alive component's child components may + // change, so directly walking the tree here may call activated hooks + // on incorrect children. Instead we push them into a queue which will + // be processed after the whole patch process ended. + queueActivatedComponent(componentInstance); + } else { + activateChildComponent(componentInstance, true /* direct */); + } + } + }, + + destroy: function destroy (vnode) { + var componentInstance = vnode.componentInstance; + if (!componentInstance._isDestroyed) { + if (!vnode.data.keepAlive) { + componentInstance.$destroy(); + } else { + deactivateChildComponent(componentInstance, true /* direct */); + } + } + } +}; + +var hooksToMerge = Object.keys(componentVNodeHooks); + +function createComponent ( + Ctor, + data, + context, + children, + tag +) { + if (isUndef(Ctor)) { + return + } + + var baseCtor = context.$options._base; + + // plain options object: turn it into a constructor + if (isObject(Ctor)) { + Ctor = baseCtor.extend(Ctor); + } + + // if at this stage it's not a constructor or an async component factory, + // reject. + if (typeof Ctor !== 'function') { + if (false) { + warn(("Invalid Component definition: " + (String(Ctor))), context); + } + return + } + + // async component + var asyncFactory; + if (isUndef(Ctor.cid)) { + asyncFactory = Ctor; + Ctor = resolveAsyncComponent(asyncFactory, baseCtor, context); + if (Ctor === undefined) { + // return a placeholder node for async component, which is rendered + // as a comment node but preserves all the raw information for the node. + // the information will be used for async server-rendering and hydration. + return createAsyncPlaceholder( + asyncFactory, + data, + context, + children, + tag + ) + } + } + + data = data || {}; + + // resolve constructor options in case global mixins are applied after + // component constructor creation + resolveConstructorOptions(Ctor); + + // transform component v-model data into props & events + if (isDef(data.model)) { + transformModel(Ctor.options, data); + } + + // extract props + var propsData = extractPropsFromVNodeData(data, Ctor, tag); + + // functional component + if (isTrue(Ctor.options.functional)) { + return createFunctionalComponent(Ctor, propsData, data, context, children) + } + + // extract listeners, since these needs to be treated as + // child component listeners instead of DOM listeners + var listeners = data.on; + // replace with listeners with .native modifier + // so it gets processed during parent component patch. + data.on = data.nativeOn; + + if (isTrue(Ctor.options.abstract)) { + // abstract components do not keep anything + // other than props & listeners & slot + + // work around flow + var slot = data.slot; + data = {}; + if (slot) { + data.slot = slot; + } + } + + // merge component management hooks onto the placeholder node + mergeHooks(data); + + // return a placeholder vnode + var name = Ctor.options.name || tag; + var vnode = new VNode( + ("vue-component-" + (Ctor.cid) + (name ? ("-" + name) : '')), + data, undefined, undefined, undefined, context, + { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }, + asyncFactory + ); + + // Weex specific: invoke recycle-list optimized @render function for + // extracting cell-slot template. + // https://github.com/Hanks10100/weex-native-directive/tree/master/component + /* istanbul ignore if */ + return vnode +} + +function createComponentInstanceForVnode ( + vnode, // we know it's MountedComponentVNode but flow doesn't + parent, // activeInstance in lifecycle state + parentElm, + refElm +) { + var options = { + _isComponent: true, + parent: parent, + _parentVnode: vnode, + _parentElm: parentElm || null, + _refElm: refElm || null + }; + // check inline-template render functions + var inlineTemplate = vnode.data.inlineTemplate; + if (isDef(inlineTemplate)) { + options.render = inlineTemplate.render; + options.staticRenderFns = inlineTemplate.staticRenderFns; + } + return new vnode.componentOptions.Ctor(options) +} + +function mergeHooks (data) { + if (!data.hook) { + data.hook = {}; + } + for (var i = 0; i < hooksToMerge.length; i++) { + var key = hooksToMerge[i]; + var fromParent = data.hook[key]; + var ours = componentVNodeHooks[key]; + data.hook[key] = fromParent ? mergeHook$1(ours, fromParent) : ours; + } +} + +function mergeHook$1 (one, two) { + return function (a, b, c, d) { + one(a, b, c, d); + two(a, b, c, d); + } +} + +// transform component v-model info (value and callback) into +// prop and event handler respectively. +function transformModel (options, data) { + var prop = (options.model && options.model.prop) || 'value'; + var event = (options.model && options.model.event) || 'input';(data.props || (data.props = {}))[prop] = data.model.value; + var on = data.on || (data.on = {}); + if (isDef(on[event])) { + on[event] = [data.model.callback].concat(on[event]); + } else { + on[event] = data.model.callback; + } +} + +/* */ + +var SIMPLE_NORMALIZE = 1; +var ALWAYS_NORMALIZE = 2; + +// wrapper function for providing a more flexible interface +// without getting yelled at by flow +function createElement ( + context, + tag, + data, + children, + normalizationType, + alwaysNormalize +) { + if (Array.isArray(data) || isPrimitive(data)) { + normalizationType = children; + children = data; + data = undefined; + } + if (isTrue(alwaysNormalize)) { + normalizationType = ALWAYS_NORMALIZE; + } + return _createElement(context, tag, data, children, normalizationType) +} + +function _createElement ( + context, + tag, + data, + children, + normalizationType +) { + if (isDef(data) && isDef((data).__ob__)) { + "production" !== 'production' && warn( + "Avoid using observed data object as vnode data: " + (JSON.stringify(data)) + "\n" + + 'Always create fresh vnode data objects in each render!', + context + ); + return createEmptyVNode() + } + // object syntax in v-bind + if (isDef(data) && isDef(data.is)) { + tag = data.is; + } + if (!tag) { + // in case of component :is set to falsy value + return createEmptyVNode() + } + // warn against non-primitive key + if (false + ) { + { + warn( + 'Avoid using non-primitive value as key, ' + + 'use string/number value instead.', + context + ); + } + } + // support single function children as default scoped slot + if (Array.isArray(children) && + typeof children[0] === 'function' + ) { + data = data || {}; + data.scopedSlots = { default: children[0] }; + children.length = 0; + } + if (normalizationType === ALWAYS_NORMALIZE) { + children = normalizeChildren(children); + } else if (normalizationType === SIMPLE_NORMALIZE) { + children = simpleNormalizeChildren(children); + } + var vnode, ns; + if (typeof tag === 'string') { + var Ctor; + ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag); + if (config.isReservedTag(tag)) { + // platform built-in elements + vnode = new VNode( + config.parsePlatformTagName(tag), data, children, + undefined, undefined, context + ); + } else if (isDef(Ctor = resolveAsset(context.$options, 'components', tag))) { + // component + vnode = createComponent(Ctor, data, context, children, tag); + } else { + // unknown or unlisted namespaced elements + // check at runtime because it may get assigned a namespace when its + // parent normalizes children + vnode = new VNode( + tag, data, children, + undefined, undefined, context + ); + } + } else { + // direct component options / constructor + vnode = createComponent(tag, data, context, children); + } + if (isDef(vnode)) { + if (ns) { applyNS(vnode, ns); } + return vnode + } else { + return createEmptyVNode() + } +} + +function applyNS (vnode, ns, force) { + vnode.ns = ns; + if (vnode.tag === 'foreignObject') { + // use default namespace inside foreignObject + ns = undefined; + force = true; + } + if (isDef(vnode.children)) { + for (var i = 0, l = vnode.children.length; i < l; i++) { + var child = vnode.children[i]; + if (isDef(child.tag) && (isUndef(child.ns) || isTrue(force))) { + applyNS(child, ns, force); + } + } + } +} + +/* */ + +function initRender (vm) { + vm._vnode = null; // the root of the child tree + vm._staticTrees = null; // v-once cached trees + var options = vm.$options; + var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree + var renderContext = parentVnode && parentVnode.context; + vm.$slots = resolveSlots(options._renderChildren, renderContext); + vm.$scopedSlots = emptyObject; + // bind the createElement fn to this instance + // so that we get proper render context inside it. + // args order: tag, data, children, normalizationType, alwaysNormalize + // internal version is used by render functions compiled from templates + vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); }; + // normalization is always applied for the public version, used in + // user-written render functions. + vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); }; + + // $attrs & $listeners are exposed for easier HOC creation. + // they need to be reactive so that HOCs using them are always updated + var parentData = parentVnode && parentVnode.data; + + /* istanbul ignore else */ + if (false) { + defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () { + !isUpdatingChildComponent && warn("$attrs is readonly.", vm); + }, true); + defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () { + !isUpdatingChildComponent && warn("$listeners is readonly.", vm); + }, true); + } else { + defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true); + defineReactive(vm, '$listeners', options._parentListeners || emptyObject, null, true); + } +} + +function renderMixin (Vue) { + // install runtime convenience helpers + installRenderHelpers(Vue.prototype); + + Vue.prototype.$nextTick = function (fn) { + return nextTick(fn, this) + }; + + Vue.prototype._render = function () { + var vm = this; + var ref = vm.$options; + var render = ref.render; + var _parentVnode = ref._parentVnode; + + if (vm._isMounted) { + // if the parent didn't update, the slot nodes will be the ones from + // last render. They need to be cloned to ensure "freshness" for this render. + for (var key in vm.$slots) { + var slot = vm.$slots[key]; + // _rendered is a flag added by renderSlot, but may not be present + // if the slot is passed from manually written render functions + if (slot._rendered || (slot[0] && slot[0].elm)) { + vm.$slots[key] = cloneVNodes(slot, true /* deep */); + } + } + } + + vm.$scopedSlots = (_parentVnode && _parentVnode.data.scopedSlots) || emptyObject; + + // set parent vnode. this allows render functions to have access + // to the data on the placeholder node. + vm.$vnode = _parentVnode; + // render self + var vnode; + try { + vnode = render.call(vm._renderProxy, vm.$createElement); + } catch (e) { + handleError(e, vm, "render"); + // return error render result, + // or previous vnode to prevent render error causing blank component + /* istanbul ignore else */ + if (false) { + if (vm.$options.renderError) { + try { + vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e); + } catch (e) { + handleError(e, vm, "renderError"); + vnode = vm._vnode; + } + } else { + vnode = vm._vnode; + } + } else { + vnode = vm._vnode; + } + } + // return empty vnode in case the render function errored out + if (!(vnode instanceof VNode)) { + if (false) { + warn( + 'Multiple root nodes returned from render function. Render function ' + + 'should return a single root node.', + vm + ); + } + vnode = createEmptyVNode(); + } + // set parent + vnode.parent = _parentVnode; + return vnode + }; +} + +/* */ + +var uid$1 = 0; + +function initMixin (Vue) { + Vue.prototype._init = function (options) { + var vm = this; + // a uid + vm._uid = uid$1++; + + var startTag, endTag; + /* istanbul ignore if */ + if (false) { + startTag = "vue-perf-start:" + (vm._uid); + endTag = "vue-perf-end:" + (vm._uid); + mark(startTag); + } + + // a flag to avoid this being observed + vm._isVue = true; + // merge options + if (options && options._isComponent) { + // optimize internal component instantiation + // since dynamic options merging is pretty slow, and none of the + // internal component options needs special treatment. + initInternalComponent(vm, options); + } else { + vm.$options = mergeOptions( + resolveConstructorOptions(vm.constructor), + options || {}, + vm + ); + } + /* istanbul ignore else */ + if (false) { + initProxy(vm); + } else { + vm._renderProxy = vm; + } + // expose real self + vm._self = vm; + initLifecycle(vm); + initEvents(vm); + initRender(vm); + callHook(vm, 'beforeCreate'); + initInjections(vm); // resolve injections before data/props + initState(vm); + initProvide(vm); // resolve provide after data/props + callHook(vm, 'created'); + + /* istanbul ignore if */ + if (false) { + vm._name = formatComponentName(vm, false); + mark(endTag); + measure(("vue " + (vm._name) + " init"), startTag, endTag); + } + + if (vm.$options.el) { + vm.$mount(vm.$options.el); + } + }; +} + +function initInternalComponent (vm, options) { + var opts = vm.$options = Object.create(vm.constructor.options); + // doing this because it's faster than dynamic enumeration. + var parentVnode = options._parentVnode; + opts.parent = options.parent; + opts._parentVnode = parentVnode; + opts._parentElm = options._parentElm; + opts._refElm = options._refElm; + + var vnodeComponentOptions = parentVnode.componentOptions; + opts.propsData = vnodeComponentOptions.propsData; + opts._parentListeners = vnodeComponentOptions.listeners; + opts._renderChildren = vnodeComponentOptions.children; + opts._componentTag = vnodeComponentOptions.tag; + + if (options.render) { + opts.render = options.render; + opts.staticRenderFns = options.staticRenderFns; + } +} + +function resolveConstructorOptions (Ctor) { + var options = Ctor.options; + if (Ctor.super) { + var superOptions = resolveConstructorOptions(Ctor.super); + var cachedSuperOptions = Ctor.superOptions; + if (superOptions !== cachedSuperOptions) { + // super option changed, + // need to resolve new options. + Ctor.superOptions = superOptions; + // check if there are any late-modified/attached options (#4976) + var modifiedOptions = resolveModifiedOptions(Ctor); + // update base extend options + if (modifiedOptions) { + extend(Ctor.extendOptions, modifiedOptions); + } + options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions); + if (options.name) { + options.components[options.name] = Ctor; + } + } + } + return options +} + +function resolveModifiedOptions (Ctor) { + var modified; + var latest = Ctor.options; + var extended = Ctor.extendOptions; + var sealed = Ctor.sealedOptions; + for (var key in latest) { + if (latest[key] !== sealed[key]) { + if (!modified) { modified = {}; } + modified[key] = dedupe(latest[key], extended[key], sealed[key]); + } + } + return modified +} + +function dedupe (latest, extended, sealed) { + // compare latest and sealed to ensure lifecycle hooks won't be duplicated + // between merges + if (Array.isArray(latest)) { + var res = []; + sealed = Array.isArray(sealed) ? sealed : [sealed]; + extended = Array.isArray(extended) ? extended : [extended]; + for (var i = 0; i < latest.length; i++) { + // push original options and not sealed options to exclude duplicated options + if (extended.indexOf(latest[i]) >= 0 || sealed.indexOf(latest[i]) < 0) { + res.push(latest[i]); + } + } + return res + } else { + return latest + } +} + +function Vue$3 (options) { + if (false + ) { + warn('Vue is a constructor and should be called with the `new` keyword'); + } + this._init(options); +} + +initMixin(Vue$3); +stateMixin(Vue$3); +eventsMixin(Vue$3); +lifecycleMixin(Vue$3); +renderMixin(Vue$3); + +/* */ + +function initUse (Vue) { + Vue.use = function (plugin) { + var installedPlugins = (this._installedPlugins || (this._installedPlugins = [])); + if (installedPlugins.indexOf(plugin) > -1) { + return this + } + + // additional parameters + var args = toArray(arguments, 1); + args.unshift(this); + if (typeof plugin.install === 'function') { + plugin.install.apply(plugin, args); + } else if (typeof plugin === 'function') { + plugin.apply(null, args); + } + installedPlugins.push(plugin); + return this + }; +} + +/* */ + +function initMixin$1 (Vue) { + Vue.mixin = function (mixin) { + this.options = mergeOptions(this.options, mixin); + return this + }; +} + +/* */ + +function initExtend (Vue) { + /** + * Each instance constructor, including Vue, has a unique + * cid. This enables us to create wrapped "child + * constructors" for prototypal inheritance and cache them. + */ + Vue.cid = 0; + var cid = 1; + + /** + * Class inheritance + */ + Vue.extend = function (extendOptions) { + extendOptions = extendOptions || {}; + var Super = this; + var SuperId = Super.cid; + var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {}); + if (cachedCtors[SuperId]) { + return cachedCtors[SuperId] + } + + var name = extendOptions.name || Super.options.name; + if (false) { + validateComponentName(name); + } + + var Sub = function VueComponent (options) { + this._init(options); + }; + Sub.prototype = Object.create(Super.prototype); + Sub.prototype.constructor = Sub; + Sub.cid = cid++; + Sub.options = mergeOptions( + Super.options, + extendOptions + ); + Sub['super'] = Super; + + // For props and computed properties, we define the proxy getters on + // the Vue instances at extension time, on the extended prototype. This + // avoids Object.defineProperty calls for each instance created. + if (Sub.options.props) { + initProps$1(Sub); + } + if (Sub.options.computed) { + initComputed$1(Sub); + } + + // allow further extension/mixin/plugin usage + Sub.extend = Super.extend; + Sub.mixin = Super.mixin; + Sub.use = Super.use; + + // create asset registers, so extended classes + // can have their private assets too. + ASSET_TYPES.forEach(function (type) { + Sub[type] = Super[type]; + }); + // enable recursive self-lookup + if (name) { + Sub.options.components[name] = Sub; + } + + // keep a reference to the super options at extension time. + // later at instantiation we can check if Super's options have + // been updated. + Sub.superOptions = Super.options; + Sub.extendOptions = extendOptions; + Sub.sealedOptions = extend({}, Sub.options); + + // cache constructor + cachedCtors[SuperId] = Sub; + return Sub + }; +} + +function initProps$1 (Comp) { + var props = Comp.options.props; + for (var key in props) { + proxy(Comp.prototype, "_props", key); + } +} + +function initComputed$1 (Comp) { + var computed = Comp.options.computed; + for (var key in computed) { + defineComputed(Comp.prototype, key, computed[key]); + } +} + +/* */ + +function initAssetRegisters (Vue) { + /** + * Create asset registration methods. + */ + ASSET_TYPES.forEach(function (type) { + Vue[type] = function ( + id, + definition + ) { + if (!definition) { + return this.options[type + 's'][id] + } else { + /* istanbul ignore if */ + if (false) { + validateComponentName(id); + } + if (type === 'component' && isPlainObject(definition)) { + definition.name = definition.name || id; + definition = this.options._base.extend(definition); + } + if (type === 'directive' && typeof definition === 'function') { + definition = { bind: definition, update: definition }; + } + this.options[type + 's'][id] = definition; + return definition + } + }; + }); +} + +/* */ + +function getComponentName (opts) { + return opts && (opts.Ctor.options.name || opts.tag) +} + +function matches (pattern, name) { + if (Array.isArray(pattern)) { + return pattern.indexOf(name) > -1 + } else if (typeof pattern === 'string') { + return pattern.split(',').indexOf(name) > -1 + } else if (isRegExp(pattern)) { + return pattern.test(name) + } + /* istanbul ignore next */ + return false +} + +function pruneCache (keepAliveInstance, filter) { + var cache = keepAliveInstance.cache; + var keys = keepAliveInstance.keys; + var _vnode = keepAliveInstance._vnode; + for (var key in cache) { + var cachedNode = cache[key]; + if (cachedNode) { + var name = getComponentName(cachedNode.componentOptions); + if (name && !filter(name)) { + pruneCacheEntry(cache, key, keys, _vnode); + } + } + } +} + +function pruneCacheEntry ( + cache, + key, + keys, + current +) { + var cached$$1 = cache[key]; + if (cached$$1 && (!current || cached$$1.tag !== current.tag)) { + cached$$1.componentInstance.$destroy(); + } + cache[key] = null; + remove(keys, key); +} + +var patternTypes = [String, RegExp, Array]; + +var KeepAlive = { + name: 'keep-alive', + abstract: true, + + props: { + include: patternTypes, + exclude: patternTypes, + max: [String, Number] + }, + + created: function created () { + this.cache = Object.create(null); + this.keys = []; + }, + + destroyed: function destroyed () { + var this$1 = this; + + for (var key in this$1.cache) { + pruneCacheEntry(this$1.cache, key, this$1.keys); + } + }, + + watch: { + include: function include (val) { + pruneCache(this, function (name) { return matches(val, name); }); + }, + exclude: function exclude (val) { + pruneCache(this, function (name) { return !matches(val, name); }); + } + }, + + render: function render () { + var slot = this.$slots.default; + var vnode = getFirstComponentChild(slot); + var componentOptions = vnode && vnode.componentOptions; + if (componentOptions) { + // check pattern + var name = getComponentName(componentOptions); + var ref = this; + var include = ref.include; + var exclude = ref.exclude; + if ( + // not included + (include && (!name || !matches(include, name))) || + // excluded + (exclude && name && matches(exclude, name)) + ) { + return vnode + } + + var ref$1 = this; + var cache = ref$1.cache; + var keys = ref$1.keys; + var key = vnode.key == null + // same constructor may get registered as different local components + // so cid alone is not enough (#3269) + ? componentOptions.Ctor.cid + (componentOptions.tag ? ("::" + (componentOptions.tag)) : '') + : vnode.key; + if (cache[key]) { + vnode.componentInstance = cache[key].componentInstance; + // make current key freshest + remove(keys, key); + keys.push(key); + } else { + cache[key] = vnode; + keys.push(key); + // prune oldest entry + if (this.max && keys.length > parseInt(this.max)) { + pruneCacheEntry(cache, keys[0], keys, this._vnode); + } + } + + vnode.data.keepAlive = true; + } + return vnode || (slot && slot[0]) + } +}; + +var builtInComponents = { + KeepAlive: KeepAlive +}; + +/* */ + +function initGlobalAPI (Vue) { + // config + var configDef = {}; + configDef.get = function () { return config; }; + if (false) { + configDef.set = function () { + warn( + 'Do not replace the Vue.config object, set individual fields instead.' + ); + }; + } + Object.defineProperty(Vue, 'config', configDef); + + // exposed util methods. + // NOTE: these are not considered part of the public API - avoid relying on + // them unless you are aware of the risk. + Vue.util = { + warn: warn, + extend: extend, + mergeOptions: mergeOptions, + defineReactive: defineReactive + }; + + Vue.set = set; + Vue.delete = del; + Vue.nextTick = nextTick; + + Vue.options = Object.create(null); + ASSET_TYPES.forEach(function (type) { + Vue.options[type + 's'] = Object.create(null); + }); + + // this is used to identify the "base" constructor to extend all plain-object + // components with in Weex's multi-instance scenarios. + Vue.options._base = Vue; + + extend(Vue.options.components, builtInComponents); + + initUse(Vue); + initMixin$1(Vue); + initExtend(Vue); + initAssetRegisters(Vue); +} + +initGlobalAPI(Vue$3); + +Object.defineProperty(Vue$3.prototype, '$isServer', { + get: isServerRendering +}); + +Object.defineProperty(Vue$3.prototype, '$ssrContext', { + get: function get () { + /* istanbul ignore next */ + return this.$vnode && this.$vnode.ssrContext + } +}); + +Vue$3.version = '2.5.13'; + +/* */ + +// these are reserved for web because they are directly compiled away +// during template compilation +var isReservedAttr = makeMap('style,class'); + +// attributes that should be using props for binding +var acceptValue = makeMap('input,textarea,option,select,progress'); +var mustUseProp = function (tag, type, attr) { + return ( + (attr === 'value' && acceptValue(tag)) && type !== 'button' || + (attr === 'selected' && tag === 'option') || + (attr === 'checked' && tag === 'input') || + (attr === 'muted' && tag === 'video') + ) +}; + +var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck'); + +var isBooleanAttr = makeMap( + 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' + + 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' + + 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' + + 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' + + 'required,reversed,scoped,seamless,selected,sortable,translate,' + + 'truespeed,typemustmatch,visible' +); + +var xlinkNS = 'http://www.w3.org/1999/xlink'; + +var isXlink = function (name) { + return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink' +}; + +var getXlinkProp = function (name) { + return isXlink(name) ? name.slice(6, name.length) : '' +}; + +var isFalsyAttrValue = function (val) { + return val == null || val === false +}; + +/* */ + +function genClassForVnode (vnode) { + var data = vnode.data; + var parentNode = vnode; + var childNode = vnode; + while (isDef(childNode.componentInstance)) { + childNode = childNode.componentInstance._vnode; + if (childNode && childNode.data) { + data = mergeClassData(childNode.data, data); + } + } + while (isDef(parentNode = parentNode.parent)) { + if (parentNode && parentNode.data) { + data = mergeClassData(data, parentNode.data); + } + } + return renderClass(data.staticClass, data.class) +} + +function mergeClassData (child, parent) { + return { + staticClass: concat(child.staticClass, parent.staticClass), + class: isDef(child.class) + ? [child.class, parent.class] + : parent.class + } +} + +function renderClass ( + staticClass, + dynamicClass +) { + if (isDef(staticClass) || isDef(dynamicClass)) { + return concat(staticClass, stringifyClass(dynamicClass)) + } + /* istanbul ignore next */ + return '' +} + +function concat (a, b) { + return a ? b ? (a + ' ' + b) : a : (b || '') +} + +function stringifyClass (value) { + if (Array.isArray(value)) { + return stringifyArray(value) + } + if (isObject(value)) { + return stringifyObject(value) + } + if (typeof value === 'string') { + return value + } + /* istanbul ignore next */ + return '' +} + +function stringifyArray (value) { + var res = ''; + var stringified; + for (var i = 0, l = value.length; i < l; i++) { + if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') { + if (res) { res += ' '; } + res += stringified; + } + } + return res +} + +function stringifyObject (value) { + var res = ''; + for (var key in value) { + if (value[key]) { + if (res) { res += ' '; } + res += key; + } + } + return res +} + +/* */ + +var namespaceMap = { + svg: 'http://www.w3.org/2000/svg', + math: 'http://www.w3.org/1998/Math/MathML' +}; + +var isHTMLTag = makeMap( + 'html,body,base,head,link,meta,style,title,' + + 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' + + 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' + + 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' + + 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' + + 'embed,object,param,source,canvas,script,noscript,del,ins,' + + 'caption,col,colgroup,table,thead,tbody,td,th,tr,' + + 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' + + 'output,progress,select,textarea,' + + 'details,dialog,menu,menuitem,summary,' + + 'content,element,shadow,template,blockquote,iframe,tfoot' +); + +// this map is intentionally selective, only covering SVG elements that may +// contain child elements. +var isSVG = makeMap( + 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' + + 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' + + 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', + true +); + +var isPreTag = function (tag) { return tag === 'pre'; }; + +var isReservedTag = function (tag) { + return isHTMLTag(tag) || isSVG(tag) +}; + +function getTagNamespace (tag) { + if (isSVG(tag)) { + return 'svg' + } + // basic support for MathML + // note it doesn't support other MathML elements being component roots + if (tag === 'math') { + return 'math' + } +} + +var unknownElementCache = Object.create(null); +function isUnknownElement (tag) { + /* istanbul ignore if */ + if (!inBrowser) { + return true + } + if (isReservedTag(tag)) { + return false + } + tag = tag.toLowerCase(); + /* istanbul ignore if */ + if (unknownElementCache[tag] != null) { + return unknownElementCache[tag] + } + var el = document.createElement(tag); + if (tag.indexOf('-') > -1) { + // http://stackoverflow.com/a/28210364/1070244 + return (unknownElementCache[tag] = ( + el.constructor === window.HTMLUnknownElement || + el.constructor === window.HTMLElement + )) + } else { + return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString())) + } +} + +var isTextInputType = makeMap('text,number,password,search,email,tel,url'); + +/* */ + +/** + * Query an element selector if it's not an element already. + */ +function query (el) { + if (typeof el === 'string') { + var selected = document.querySelector(el); + if (!selected) { + "production" !== 'production' && warn( + 'Cannot find element: ' + el + ); + return document.createElement('div') + } + return selected + } else { + return el + } +} + +/* */ + +function createElement$1 (tagName, vnode) { + var elm = document.createElement(tagName); + if (tagName !== 'select') { + return elm + } + // false or null will remove the attribute but undefined will not + if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) { + elm.setAttribute('multiple', 'multiple'); + } + return elm +} + +function createElementNS (namespace, tagName) { + return document.createElementNS(namespaceMap[namespace], tagName) +} + +function createTextNode (text) { + return document.createTextNode(text) +} + +function createComment (text) { + return document.createComment(text) +} + +function insertBefore (parentNode, newNode, referenceNode) { + parentNode.insertBefore(newNode, referenceNode); +} + +function removeChild (node, child) { + node.removeChild(child); +} + +function appendChild (node, child) { + node.appendChild(child); +} + +function parentNode (node) { + return node.parentNode +} + +function nextSibling (node) { + return node.nextSibling +} + +function tagName (node) { + return node.tagName +} + +function setTextContent (node, text) { + node.textContent = text; +} + +function setAttribute (node, key, val) { + node.setAttribute(key, val); +} + + +var nodeOps = Object.freeze({ + createElement: createElement$1, + createElementNS: createElementNS, + createTextNode: createTextNode, + createComment: createComment, + insertBefore: insertBefore, + removeChild: removeChild, + appendChild: appendChild, + parentNode: parentNode, + nextSibling: nextSibling, + tagName: tagName, + setTextContent: setTextContent, + setAttribute: setAttribute +}); + +/* */ + +var ref = { + create: function create (_, vnode) { + registerRef(vnode); + }, + update: function update (oldVnode, vnode) { + if (oldVnode.data.ref !== vnode.data.ref) { + registerRef(oldVnode, true); + registerRef(vnode); + } + }, + destroy: function destroy (vnode) { + registerRef(vnode, true); + } +}; + +function registerRef (vnode, isRemoval) { + var key = vnode.data.ref; + if (!key) { return } + + var vm = vnode.context; + var ref = vnode.componentInstance || vnode.elm; + var refs = vm.$refs; + if (isRemoval) { + if (Array.isArray(refs[key])) { + remove(refs[key], ref); + } else if (refs[key] === ref) { + refs[key] = undefined; + } + } else { + if (vnode.data.refInFor) { + if (!Array.isArray(refs[key])) { + refs[key] = [ref]; + } else if (refs[key].indexOf(ref) < 0) { + // $flow-disable-line + refs[key].push(ref); + } + } else { + refs[key] = ref; + } + } +} + +/** + * Virtual DOM patching algorithm based on Snabbdom by + * Simon Friis Vindum (@paldepind) + * Licensed under the MIT License + * https://github.com/paldepind/snabbdom/blob/master/LICENSE + * + * modified by Evan You (@yyx990803) + * + * Not type-checking this because this file is perf-critical and the cost + * of making flow understand it is not worth it. + */ + +var emptyNode = new VNode('', {}, []); + +var hooks = ['create', 'activate', 'update', 'remove', 'destroy']; + +function sameVnode (a, b) { + return ( + a.key === b.key && ( + ( + a.tag === b.tag && + a.isComment === b.isComment && + isDef(a.data) === isDef(b.data) && + sameInputType(a, b) + ) || ( + isTrue(a.isAsyncPlaceholder) && + a.asyncFactory === b.asyncFactory && + isUndef(b.asyncFactory.error) + ) + ) + ) +} + +function sameInputType (a, b) { + if (a.tag !== 'input') { return true } + var i; + var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type; + var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type; + return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB) +} + +function createKeyToOldIdx (children, beginIdx, endIdx) { + var i, key; + var map = {}; + for (i = beginIdx; i <= endIdx; ++i) { + key = children[i].key; + if (isDef(key)) { map[key] = i; } + } + return map +} + +function createPatchFunction (backend) { + var i, j; + var cbs = {}; + + var modules = backend.modules; + var nodeOps = backend.nodeOps; + + for (i = 0; i < hooks.length; ++i) { + cbs[hooks[i]] = []; + for (j = 0; j < modules.length; ++j) { + if (isDef(modules[j][hooks[i]])) { + cbs[hooks[i]].push(modules[j][hooks[i]]); + } + } + } + + function emptyNodeAt (elm) { + return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm) + } + + function createRmCb (childElm, listeners) { + function remove () { + if (--remove.listeners === 0) { + removeNode(childElm); + } + } + remove.listeners = listeners; + return remove + } + + function removeNode (el) { + var parent = nodeOps.parentNode(el); + // element may have already been removed due to v-html / v-text + if (isDef(parent)) { + nodeOps.removeChild(parent, el); + } + } + + function isUnknownElement$$1 (vnode, inVPre) { + return ( + !inVPre && + !vnode.ns && + !( + config.ignoredElements.length && + config.ignoredElements.some(function (ignore) { + return isRegExp(ignore) + ? ignore.test(vnode.tag) + : ignore === vnode.tag + }) + ) && + config.isUnknownElement(vnode.tag) + ) + } + + var creatingElmInVPre = 0; + function createElm (vnode, insertedVnodeQueue, parentElm, refElm, nested) { + vnode.isRootInsert = !nested; // for transition enter check + if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) { + return + } + + var data = vnode.data; + var children = vnode.children; + var tag = vnode.tag; + if (isDef(tag)) { + if (false) { + if (data && data.pre) { + creatingElmInVPre++; + } + if (isUnknownElement$$1(vnode, creatingElmInVPre)) { + warn( + 'Unknown custom element: <' + tag + '> - did you ' + + 'register the component correctly? For recursive components, ' + + 'make sure to provide the "name" option.', + vnode.context + ); + } + } + vnode.elm = vnode.ns + ? nodeOps.createElementNS(vnode.ns, tag) + : nodeOps.createElement(tag, vnode); + setScope(vnode); + + /* istanbul ignore if */ + { + createChildren(vnode, children, insertedVnodeQueue); + if (isDef(data)) { + invokeCreateHooks(vnode, insertedVnodeQueue); + } + insert(parentElm, vnode.elm, refElm); + } + + if (false) { + creatingElmInVPre--; + } + } else if (isTrue(vnode.isComment)) { + vnode.elm = nodeOps.createComment(vnode.text); + insert(parentElm, vnode.elm, refElm); + } else { + vnode.elm = nodeOps.createTextNode(vnode.text); + insert(parentElm, vnode.elm, refElm); + } + } + + function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) { + var i = vnode.data; + if (isDef(i)) { + var isReactivated = isDef(vnode.componentInstance) && i.keepAlive; + if (isDef(i = i.hook) && isDef(i = i.init)) { + i(vnode, false /* hydrating */, parentElm, refElm); + } + // after calling the init hook, if the vnode is a child component + // it should've created a child instance and mounted it. the child + // component also has set the placeholder vnode's elm. + // in that case we can just return the element and be done. + if (isDef(vnode.componentInstance)) { + initComponent(vnode, insertedVnodeQueue); + if (isTrue(isReactivated)) { + reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm); + } + return true + } + } + } + + function initComponent (vnode, insertedVnodeQueue) { + if (isDef(vnode.data.pendingInsert)) { + insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert); + vnode.data.pendingInsert = null; + } + vnode.elm = vnode.componentInstance.$el; + if (isPatchable(vnode)) { + invokeCreateHooks(vnode, insertedVnodeQueue); + setScope(vnode); + } else { + // empty component root. + // skip all element-related modules except for ref (#3455) + registerRef(vnode); + // make sure to invoke the insert hook + insertedVnodeQueue.push(vnode); + } + } + + function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) { + var i; + // hack for #4339: a reactivated component with inner transition + // does not trigger because the inner node's created hooks are not called + // again. It's not ideal to involve module-specific logic in here but + // there doesn't seem to be a better way to do it. + var innerNode = vnode; + while (innerNode.componentInstance) { + innerNode = innerNode.componentInstance._vnode; + if (isDef(i = innerNode.data) && isDef(i = i.transition)) { + for (i = 0; i < cbs.activate.length; ++i) { + cbs.activate[i](emptyNode, innerNode); + } + insertedVnodeQueue.push(innerNode); + break + } + } + // unlike a newly created component, + // a reactivated keep-alive component doesn't insert itself + insert(parentElm, vnode.elm, refElm); + } + + function insert (parent, elm, ref$$1) { + if (isDef(parent)) { + if (isDef(ref$$1)) { + if (ref$$1.parentNode === parent) { + nodeOps.insertBefore(parent, elm, ref$$1); + } + } else { + nodeOps.appendChild(parent, elm); + } + } + } + + function createChildren (vnode, children, insertedVnodeQueue) { + if (Array.isArray(children)) { + if (false) { + checkDuplicateKeys(children); + } + for (var i = 0; i < children.length; ++i) { + createElm(children[i], insertedVnodeQueue, vnode.elm, null, true); + } + } else if (isPrimitive(vnode.text)) { + nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text))); + } + } + + function isPatchable (vnode) { + while (vnode.componentInstance) { + vnode = vnode.componentInstance._vnode; + } + return isDef(vnode.tag) + } + + function invokeCreateHooks (vnode, insertedVnodeQueue) { + for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) { + cbs.create[i$1](emptyNode, vnode); + } + i = vnode.data.hook; // Reuse variable + if (isDef(i)) { + if (isDef(i.create)) { i.create(emptyNode, vnode); } + if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); } + } + } + + // set scope id attribute for scoped CSS. + // this is implemented as a special case to avoid the overhead + // of going through the normal attribute patching process. + function setScope (vnode) { + var i; + if (isDef(i = vnode.fnScopeId)) { + nodeOps.setAttribute(vnode.elm, i, ''); + } else { + var ancestor = vnode; + while (ancestor) { + if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) { + nodeOps.setAttribute(vnode.elm, i, ''); + } + ancestor = ancestor.parent; + } + } + // for slot content they should also get the scopeId from the host instance. + if (isDef(i = activeInstance) && + i !== vnode.context && + i !== vnode.fnContext && + isDef(i = i.$options._scopeId) + ) { + nodeOps.setAttribute(vnode.elm, i, ''); + } + } + + function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) { + for (; startIdx <= endIdx; ++startIdx) { + createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm); + } + } + + function invokeDestroyHook (vnode) { + var i, j; + var data = vnode.data; + if (isDef(data)) { + if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); } + for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); } + } + if (isDef(i = vnode.children)) { + for (j = 0; j < vnode.children.length; ++j) { + invokeDestroyHook(vnode.children[j]); + } + } + } + + function removeVnodes (parentElm, vnodes, startIdx, endIdx) { + for (; startIdx <= endIdx; ++startIdx) { + var ch = vnodes[startIdx]; + if (isDef(ch)) { + if (isDef(ch.tag)) { + removeAndInvokeRemoveHook(ch); + invokeDestroyHook(ch); + } else { // Text node + removeNode(ch.elm); + } + } + } + } + + function removeAndInvokeRemoveHook (vnode, rm) { + if (isDef(rm) || isDef(vnode.data)) { + var i; + var listeners = cbs.remove.length + 1; + if (isDef(rm)) { + // we have a recursively passed down rm callback + // increase the listeners count + rm.listeners += listeners; + } else { + // directly removing + rm = createRmCb(vnode.elm, listeners); + } + // recursively invoke hooks on child component root node + if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) { + removeAndInvokeRemoveHook(i, rm); + } + for (i = 0; i < cbs.remove.length; ++i) { + cbs.remove[i](vnode, rm); + } + if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) { + i(vnode, rm); + } else { + rm(); + } + } else { + removeNode(vnode.elm); + } + } + + function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) { + var oldStartIdx = 0; + var newStartIdx = 0; + var oldEndIdx = oldCh.length - 1; + var oldStartVnode = oldCh[0]; + var oldEndVnode = oldCh[oldEndIdx]; + var newEndIdx = newCh.length - 1; + var newStartVnode = newCh[0]; + var newEndVnode = newCh[newEndIdx]; + var oldKeyToIdx, idxInOld, vnodeToMove, refElm; + + // removeOnly is a special flag used only by <transition-group> + // to ensure removed elements stay in correct relative positions + // during leaving transitions + var canMove = !removeOnly; + + if (false) { + checkDuplicateKeys(newCh); + } + + while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) { + if (isUndef(oldStartVnode)) { + oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left + } else if (isUndef(oldEndVnode)) { + oldEndVnode = oldCh[--oldEndIdx]; + } else if (sameVnode(oldStartVnode, newStartVnode)) { + patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue); + oldStartVnode = oldCh[++oldStartIdx]; + newStartVnode = newCh[++newStartIdx]; + } else if (sameVnode(oldEndVnode, newEndVnode)) { + patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue); + oldEndVnode = oldCh[--oldEndIdx]; + newEndVnode = newCh[--newEndIdx]; + } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right + patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue); + canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm)); + oldStartVnode = oldCh[++oldStartIdx]; + newEndVnode = newCh[--newEndIdx]; + } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left + patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue); + canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm); + oldEndVnode = oldCh[--oldEndIdx]; + newStartVnode = newCh[++newStartIdx]; + } else { + if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); } + idxInOld = isDef(newStartVnode.key) + ? oldKeyToIdx[newStartVnode.key] + : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx); + if (isUndef(idxInOld)) { // New element + createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm); + } else { + vnodeToMove = oldCh[idxInOld]; + if (sameVnode(vnodeToMove, newStartVnode)) { + patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue); + oldCh[idxInOld] = undefined; + canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm); + } else { + // same key but different element. treat as new element + createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm); + } + } + newStartVnode = newCh[++newStartIdx]; + } + } + if (oldStartIdx > oldEndIdx) { + refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm; + addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue); + } else if (newStartIdx > newEndIdx) { + removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx); + } + } + + function checkDuplicateKeys (children) { + var seenKeys = {}; + for (var i = 0; i < children.length; i++) { + var vnode = children[i]; + var key = vnode.key; + if (isDef(key)) { + if (seenKeys[key]) { + warn( + ("Duplicate keys detected: '" + key + "'. This may cause an update error."), + vnode.context + ); + } else { + seenKeys[key] = true; + } + } + } + } + + function findIdxInOld (node, oldCh, start, end) { + for (var i = start; i < end; i++) { + var c = oldCh[i]; + if (isDef(c) && sameVnode(node, c)) { return i } + } + } + + function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) { + if (oldVnode === vnode) { + return + } + + var elm = vnode.elm = oldVnode.elm; + + if (isTrue(oldVnode.isAsyncPlaceholder)) { + if (isDef(vnode.asyncFactory.resolved)) { + hydrate(oldVnode.elm, vnode, insertedVnodeQueue); + } else { + vnode.isAsyncPlaceholder = true; + } + return + } + + // reuse element for static trees. + // note we only do this if the vnode is cloned - + // if the new node is not cloned it means the render functions have been + // reset by the hot-reload-api and we need to do a proper re-render. + if (isTrue(vnode.isStatic) && + isTrue(oldVnode.isStatic) && + vnode.key === oldVnode.key && + (isTrue(vnode.isCloned) || isTrue(vnode.isOnce)) + ) { + vnode.componentInstance = oldVnode.componentInstance; + return + } + + var i; + var data = vnode.data; + if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) { + i(oldVnode, vnode); + } + + var oldCh = oldVnode.children; + var ch = vnode.children; + if (isDef(data) && isPatchable(vnode)) { + for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); } + if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); } + } + if (isUndef(vnode.text)) { + if (isDef(oldCh) && isDef(ch)) { + if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); } + } else if (isDef(ch)) { + if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); } + addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue); + } else if (isDef(oldCh)) { + removeVnodes(elm, oldCh, 0, oldCh.length - 1); + } else if (isDef(oldVnode.text)) { + nodeOps.setTextContent(elm, ''); + } + } else if (oldVnode.text !== vnode.text) { + nodeOps.setTextContent(elm, vnode.text); + } + if (isDef(data)) { + if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); } + } + } + + function invokeInsertHook (vnode, queue, initial) { + // delay insert hooks for component root nodes, invoke them after the + // element is really inserted + if (isTrue(initial) && isDef(vnode.parent)) { + vnode.parent.data.pendingInsert = queue; + } else { + for (var i = 0; i < queue.length; ++i) { + queue[i].data.hook.insert(queue[i]); + } + } + } + + var hydrationBailed = false; + // list of modules that can skip create hook during hydration because they + // are already rendered on the client or has no need for initialization + // Note: style is excluded because it relies on initial clone for future + // deep updates (#7063). + var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key'); + + // Note: this is a browser-only function so we can assume elms are DOM nodes. + function hydrate (elm, vnode, insertedVnodeQueue, inVPre) { + var i; + var tag = vnode.tag; + var data = vnode.data; + var children = vnode.children; + inVPre = inVPre || (data && data.pre); + vnode.elm = elm; + + if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) { + vnode.isAsyncPlaceholder = true; + return true + } + // assert node match + if (false) { + if (!assertNodeMatch(elm, vnode, inVPre)) { + return false + } + } + if (isDef(data)) { + if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); } + if (isDef(i = vnode.componentInstance)) { + // child component. it should have hydrated its own tree. + initComponent(vnode, insertedVnodeQueue); + return true + } + } + if (isDef(tag)) { + if (isDef(children)) { + // empty element, allow client to pick up and populate children + if (!elm.hasChildNodes()) { + createChildren(vnode, children, insertedVnodeQueue); + } else { + // v-html and domProps: innerHTML + if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) { + if (i !== elm.innerHTML) { + /* istanbul ignore if */ + if (false + ) { + hydrationBailed = true; + console.warn('Parent: ', elm); + console.warn('server innerHTML: ', i); + console.warn('client innerHTML: ', elm.innerHTML); + } + return false + } + } else { + // iterate and compare children lists + var childrenMatch = true; + var childNode = elm.firstChild; + for (var i$1 = 0; i$1 < children.length; i$1++) { + if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) { + childrenMatch = false; + break + } + childNode = childNode.nextSibling; + } + // if childNode is not null, it means the actual childNodes list is + // longer than the virtual children list. + if (!childrenMatch || childNode) { + /* istanbul ignore if */ + if (false + ) { + hydrationBailed = true; + console.warn('Parent: ', elm); + console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children); + } + return false + } + } + } + } + if (isDef(data)) { + var fullInvoke = false; + for (var key in data) { + if (!isRenderedModule(key)) { + fullInvoke = true; + invokeCreateHooks(vnode, insertedVnodeQueue); + break + } + } + if (!fullInvoke && data['class']) { + // ensure collecting deps for deep class bindings for future updates + traverse(data['class']); + } + } + } else if (elm.data !== vnode.text) { + elm.data = vnode.text; + } + return true + } + + function assertNodeMatch (node, vnode, inVPre) { + if (isDef(vnode.tag)) { + return vnode.tag.indexOf('vue-component') === 0 || ( + !isUnknownElement$$1(vnode, inVPre) && + vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase()) + ) + } else { + return node.nodeType === (vnode.isComment ? 8 : 3) + } + } + + return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) { + if (isUndef(vnode)) { + if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); } + return + } + + var isInitialPatch = false; + var insertedVnodeQueue = []; + + if (isUndef(oldVnode)) { + // empty mount (likely as component), create new root element + isInitialPatch = true; + createElm(vnode, insertedVnodeQueue, parentElm, refElm); + } else { + var isRealElement = isDef(oldVnode.nodeType); + if (!isRealElement && sameVnode(oldVnode, vnode)) { + // patch existing root node + patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly); + } else { + if (isRealElement) { + // mounting to a real element + // check if this is server-rendered content and if we can perform + // a successful hydration. + if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) { + oldVnode.removeAttribute(SSR_ATTR); + hydrating = true; + } + if (isTrue(hydrating)) { + if (hydrate(oldVnode, vnode, insertedVnodeQueue)) { + invokeInsertHook(vnode, insertedVnodeQueue, true); + return oldVnode + } else if (false) { + warn( + 'The client-side rendered virtual DOM tree is not matching ' + + 'server-rendered content. This is likely caused by incorrect ' + + 'HTML markup, for example nesting block-level elements inside ' + + '<p>, or missing <tbody>. Bailing hydration and performing ' + + 'full client-side render.' + ); + } + } + // either not server-rendered, or hydration failed. + // create an empty node and replace it + oldVnode = emptyNodeAt(oldVnode); + } + + // replacing existing element + var oldElm = oldVnode.elm; + var parentElm$1 = nodeOps.parentNode(oldElm); + + // create new node + createElm( + vnode, + insertedVnodeQueue, + // extremely rare edge case: do not insert if old element is in a + // leaving transition. Only happens when combining transition + + // keep-alive + HOCs. (#4590) + oldElm._leaveCb ? null : parentElm$1, + nodeOps.nextSibling(oldElm) + ); + + // update parent placeholder node element, recursively + if (isDef(vnode.parent)) { + var ancestor = vnode.parent; + var patchable = isPatchable(vnode); + while (ancestor) { + for (var i = 0; i < cbs.destroy.length; ++i) { + cbs.destroy[i](ancestor); + } + ancestor.elm = vnode.elm; + if (patchable) { + for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) { + cbs.create[i$1](emptyNode, ancestor); + } + // #6513 + // invoke insert hooks that may have been merged by create hooks. + // e.g. for directives that uses the "inserted" hook. + var insert = ancestor.data.hook.insert; + if (insert.merged) { + // start at index 1 to avoid re-invoking component mounted hook + for (var i$2 = 1; i$2 < insert.fns.length; i$2++) { + insert.fns[i$2](); + } + } + } else { + registerRef(ancestor); + } + ancestor = ancestor.parent; + } + } + + // destroy old node + if (isDef(parentElm$1)) { + removeVnodes(parentElm$1, [oldVnode], 0, 0); + } else if (isDef(oldVnode.tag)) { + invokeDestroyHook(oldVnode); + } + } + } + + invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch); + return vnode.elm + } +} + +/* */ + +var directives = { + create: updateDirectives, + update: updateDirectives, + destroy: function unbindDirectives (vnode) { + updateDirectives(vnode, emptyNode); + } +}; + +function updateDirectives (oldVnode, vnode) { + if (oldVnode.data.directives || vnode.data.directives) { + _update(oldVnode, vnode); + } +} + +function _update (oldVnode, vnode) { + var isCreate = oldVnode === emptyNode; + var isDestroy = vnode === emptyNode; + var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context); + var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context); + + var dirsWithInsert = []; + var dirsWithPostpatch = []; + + var key, oldDir, dir; + for (key in newDirs) { + oldDir = oldDirs[key]; + dir = newDirs[key]; + if (!oldDir) { + // new directive, bind + callHook$1(dir, 'bind', vnode, oldVnode); + if (dir.def && dir.def.inserted) { + dirsWithInsert.push(dir); + } + } else { + // existing directive, update + dir.oldValue = oldDir.value; + callHook$1(dir, 'update', vnode, oldVnode); + if (dir.def && dir.def.componentUpdated) { + dirsWithPostpatch.push(dir); + } + } + } + + if (dirsWithInsert.length) { + var callInsert = function () { + for (var i = 0; i < dirsWithInsert.length; i++) { + callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode); + } + }; + if (isCreate) { + mergeVNodeHook(vnode, 'insert', callInsert); + } else { + callInsert(); + } + } + + if (dirsWithPostpatch.length) { + mergeVNodeHook(vnode, 'postpatch', function () { + for (var i = 0; i < dirsWithPostpatch.length; i++) { + callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode); + } + }); + } + + if (!isCreate) { + for (key in oldDirs) { + if (!newDirs[key]) { + // no longer present, unbind + callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy); + } + } + } +} + +var emptyModifiers = Object.create(null); + +function normalizeDirectives$1 ( + dirs, + vm +) { + var res = Object.create(null); + if (!dirs) { + // $flow-disable-line + return res + } + var i, dir; + for (i = 0; i < dirs.length; i++) { + dir = dirs[i]; + if (!dir.modifiers) { + // $flow-disable-line + dir.modifiers = emptyModifiers; + } + res[getRawDirName(dir)] = dir; + dir.def = resolveAsset(vm.$options, 'directives', dir.name, true); + } + // $flow-disable-line + return res +} + +function getRawDirName (dir) { + return dir.rawName || ((dir.name) + "." + (Object.keys(dir.modifiers || {}).join('.'))) +} + +function callHook$1 (dir, hook, vnode, oldVnode, isDestroy) { + var fn = dir.def && dir.def[hook]; + if (fn) { + try { + fn(vnode.elm, dir, vnode, oldVnode, isDestroy); + } catch (e) { + handleError(e, vnode.context, ("directive " + (dir.name) + " " + hook + " hook")); + } + } +} + +var baseModules = [ + ref, + directives +]; + +/* */ + +function updateAttrs (oldVnode, vnode) { + var opts = vnode.componentOptions; + if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) { + return + } + if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) { + return + } + var key, cur, old; + var elm = vnode.elm; + var oldAttrs = oldVnode.data.attrs || {}; + var attrs = vnode.data.attrs || {}; + // clone observed objects, as the user probably wants to mutate it + if (isDef(attrs.__ob__)) { + attrs = vnode.data.attrs = extend({}, attrs); + } + + for (key in attrs) { + cur = attrs[key]; + old = oldAttrs[key]; + if (old !== cur) { + setAttr(elm, key, cur); + } + } + // #4391: in IE9, setting type can reset value for input[type=radio] + // #6666: IE/Edge forces progress value down to 1 before setting a max + /* istanbul ignore if */ + if ((isIE || isEdge) && attrs.value !== oldAttrs.value) { + setAttr(elm, 'value', attrs.value); + } + for (key in oldAttrs) { + if (isUndef(attrs[key])) { + if (isXlink(key)) { + elm.removeAttributeNS(xlinkNS, getXlinkProp(key)); + } else if (!isEnumeratedAttr(key)) { + elm.removeAttribute(key); + } + } + } +} + +function setAttr (el, key, value) { + if (isBooleanAttr(key)) { + // set attribute for blank value + // e.g. <option disabled>Select one</option> + if (isFalsyAttrValue(value)) { + el.removeAttribute(key); + } else { + // technically allowfullscreen is a boolean attribute for <iframe>, + // but Flash expects a value of "true" when used on <embed> tag + value = key === 'allowfullscreen' && el.tagName === 'EMBED' + ? 'true' + : key; + el.setAttribute(key, value); + } + } else if (isEnumeratedAttr(key)) { + el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true'); + } else if (isXlink(key)) { + if (isFalsyAttrValue(value)) { + el.removeAttributeNS(xlinkNS, getXlinkProp(key)); + } else { + el.setAttributeNS(xlinkNS, key, value); + } + } else { + if (isFalsyAttrValue(value)) { + el.removeAttribute(key); + } else { + // #7138: IE10 & 11 fires input event when setting placeholder on + // <textarea>... block the first input event and remove the blocker + // immediately. + /* istanbul ignore if */ + if ( + isIE && !isIE9 && + el.tagName === 'TEXTAREA' && + key === 'placeholder' && !el.__ieph + ) { + var blocker = function (e) { + e.stopImmediatePropagation(); + el.removeEventListener('input', blocker); + }; + el.addEventListener('input', blocker); + // $flow-disable-line + el.__ieph = true; /* IE placeholder patched */ + } + el.setAttribute(key, value); + } + } +} + +var attrs = { + create: updateAttrs, + update: updateAttrs +}; + +/* */ + +function updateClass (oldVnode, vnode) { + var el = vnode.elm; + var data = vnode.data; + var oldData = oldVnode.data; + if ( + isUndef(data.staticClass) && + isUndef(data.class) && ( + isUndef(oldData) || ( + isUndef(oldData.staticClass) && + isUndef(oldData.class) + ) + ) + ) { + return + } + + var cls = genClassForVnode(vnode); + + // handle transition classes + var transitionClass = el._transitionClasses; + if (isDef(transitionClass)) { + cls = concat(cls, stringifyClass(transitionClass)); + } + + // set the class + if (cls !== el._prevClass) { + el.setAttribute('class', cls); + el._prevClass = cls; + } +} + +var klass = { + create: updateClass, + update: updateClass +}; + +/* */ + +var validDivisionCharRE = /[\w).+\-_$\]]/; + +function parseFilters (exp) { + var inSingle = false; + var inDouble = false; + var inTemplateString = false; + var inRegex = false; + var curly = 0; + var square = 0; + var paren = 0; + var lastFilterIndex = 0; + var c, prev, i, expression, filters; + + for (i = 0; i < exp.length; i++) { + prev = c; + c = exp.charCodeAt(i); + if (inSingle) { + if (c === 0x27 && prev !== 0x5C) { inSingle = false; } + } else if (inDouble) { + if (c === 0x22 && prev !== 0x5C) { inDouble = false; } + } else if (inTemplateString) { + if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; } + } else if (inRegex) { + if (c === 0x2f && prev !== 0x5C) { inRegex = false; } + } else if ( + c === 0x7C && // pipe + exp.charCodeAt(i + 1) !== 0x7C && + exp.charCodeAt(i - 1) !== 0x7C && + !curly && !square && !paren + ) { + if (expression === undefined) { + // first filter, end of expression + lastFilterIndex = i + 1; + expression = exp.slice(0, i).trim(); + } else { + pushFilter(); + } + } else { + switch (c) { + case 0x22: inDouble = true; break // " + case 0x27: inSingle = true; break // ' + case 0x60: inTemplateString = true; break // ` + case 0x28: paren++; break // ( + case 0x29: paren--; break // ) + case 0x5B: square++; break // [ + case 0x5D: square--; break // ] + case 0x7B: curly++; break // { + case 0x7D: curly--; break // } + } + if (c === 0x2f) { // / + var j = i - 1; + var p = (void 0); + // find first non-whitespace prev char + for (; j >= 0; j--) { + p = exp.charAt(j); + if (p !== ' ') { break } + } + if (!p || !validDivisionCharRE.test(p)) { + inRegex = true; + } + } + } + } + + if (expression === undefined) { + expression = exp.slice(0, i).trim(); + } else if (lastFilterIndex !== 0) { + pushFilter(); + } + + function pushFilter () { + (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim()); + lastFilterIndex = i + 1; + } + + if (filters) { + for (i = 0; i < filters.length; i++) { + expression = wrapFilter(expression, filters[i]); + } + } + + return expression +} + +function wrapFilter (exp, filter) { + var i = filter.indexOf('('); + if (i < 0) { + // _f: resolveFilter + return ("_f(\"" + filter + "\")(" + exp + ")") + } else { + var name = filter.slice(0, i); + var args = filter.slice(i + 1); + return ("_f(\"" + name + "\")(" + exp + "," + args) + } +} + +/* */ + +function baseWarn (msg) { + console.error(("[Vue compiler]: " + msg)); +} + +function pluckModuleFunction ( + modules, + key +) { + return modules + ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; }) + : [] +} + +function addProp (el, name, value) { + (el.props || (el.props = [])).push({ name: name, value: value }); + el.plain = false; +} + +function addAttr (el, name, value) { + (el.attrs || (el.attrs = [])).push({ name: name, value: value }); + el.plain = false; +} + +// add a raw attr (use this in preTransforms) +function addRawAttr (el, name, value) { + el.attrsMap[name] = value; + el.attrsList.push({ name: name, value: value }); +} + +function addDirective ( + el, + name, + rawName, + value, + arg, + modifiers +) { + (el.directives || (el.directives = [])).push({ name: name, rawName: rawName, value: value, arg: arg, modifiers: modifiers }); + el.plain = false; +} + +function addHandler ( + el, + name, + value, + modifiers, + important, + warn +) { + modifiers = modifiers || emptyObject; + // warn prevent and passive modifier + /* istanbul ignore if */ + if ( + false + ) { + warn( + 'passive and prevent can\'t be used together. ' + + 'Passive handler can\'t prevent default event.' + ); + } + + // check capture modifier + if (modifiers.capture) { + delete modifiers.capture; + name = '!' + name; // mark the event as captured + } + if (modifiers.once) { + delete modifiers.once; + name = '~' + name; // mark the event as once + } + /* istanbul ignore if */ + if (modifiers.passive) { + delete modifiers.passive; + name = '&' + name; // mark the event as passive + } + + // normalize click.right and click.middle since they don't actually fire + // this is technically browser-specific, but at least for now browsers are + // the only target envs that have right/middle clicks. + if (name === 'click') { + if (modifiers.right) { + name = 'contextmenu'; + delete modifiers.right; + } else if (modifiers.middle) { + name = 'mouseup'; + } + } + + var events; + if (modifiers.native) { + delete modifiers.native; + events = el.nativeEvents || (el.nativeEvents = {}); + } else { + events = el.events || (el.events = {}); + } + + var newHandler = { value: value }; + if (modifiers !== emptyObject) { + newHandler.modifiers = modifiers; + } + + var handlers = events[name]; + /* istanbul ignore if */ + if (Array.isArray(handlers)) { + important ? handlers.unshift(newHandler) : handlers.push(newHandler); + } else if (handlers) { + events[name] = important ? [newHandler, handlers] : [handlers, newHandler]; + } else { + events[name] = newHandler; + } + + el.plain = false; +} + +function getBindingAttr ( + el, + name, + getStatic +) { + var dynamicValue = + getAndRemoveAttr(el, ':' + name) || + getAndRemoveAttr(el, 'v-bind:' + name); + if (dynamicValue != null) { + return parseFilters(dynamicValue) + } else if (getStatic !== false) { + var staticValue = getAndRemoveAttr(el, name); + if (staticValue != null) { + return JSON.stringify(staticValue) + } + } +} + +// note: this only removes the attr from the Array (attrsList) so that it +// doesn't get processed by processAttrs. +// By default it does NOT remove it from the map (attrsMap) because the map is +// needed during codegen. +function getAndRemoveAttr ( + el, + name, + removeFromMap +) { + var val; + if ((val = el.attrsMap[name]) != null) { + var list = el.attrsList; + for (var i = 0, l = list.length; i < l; i++) { + if (list[i].name === name) { + list.splice(i, 1); + break + } + } + } + if (removeFromMap) { + delete el.attrsMap[name]; + } + return val +} + +/* */ + +/** + * Cross-platform code generation for component v-model + */ +function genComponentModel ( + el, + value, + modifiers +) { + var ref = modifiers || {}; + var number = ref.number; + var trim = ref.trim; + + var baseValueExpression = '$$v'; + var valueExpression = baseValueExpression; + if (trim) { + valueExpression = + "(typeof " + baseValueExpression + " === 'string'" + + "? " + baseValueExpression + ".trim()" + + ": " + baseValueExpression + ")"; + } + if (number) { + valueExpression = "_n(" + valueExpression + ")"; + } + var assignment = genAssignmentCode(value, valueExpression); + + el.model = { + value: ("(" + value + ")"), + expression: ("\"" + value + "\""), + callback: ("function (" + baseValueExpression + ") {" + assignment + "}") + }; +} + +/** + * Cross-platform codegen helper for generating v-model value assignment code. + */ +function genAssignmentCode ( + value, + assignment +) { + var res = parseModel(value); + if (res.key === null) { + return (value + "=" + assignment) + } else { + return ("$set(" + (res.exp) + ", " + (res.key) + ", " + assignment + ")") + } +} + +/** + * Parse a v-model expression into a base path and a final key segment. + * Handles both dot-path and possible square brackets. + * + * Possible cases: + * + * - test + * - test[key] + * - test[test1[key]] + * - test["a"][key] + * - xxx.test[a[a].test1[key]] + * - test.xxx.a["asa"][test1[key]] + * + */ + +var len; +var str; +var chr; +var index$1; +var expressionPos; +var expressionEndPos; + + + +function parseModel (val) { + len = val.length; + + if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) { + index$1 = val.lastIndexOf('.'); + if (index$1 > -1) { + return { + exp: val.slice(0, index$1), + key: '"' + val.slice(index$1 + 1) + '"' + } + } else { + return { + exp: val, + key: null + } + } + } + + str = val; + index$1 = expressionPos = expressionEndPos = 0; + + while (!eof()) { + chr = next(); + /* istanbul ignore if */ + if (isStringStart(chr)) { + parseString(chr); + } else if (chr === 0x5B) { + parseBracket(chr); + } + } + + return { + exp: val.slice(0, expressionPos), + key: val.slice(expressionPos + 1, expressionEndPos) + } +} + +function next () { + return str.charCodeAt(++index$1) +} + +function eof () { + return index$1 >= len +} + +function isStringStart (chr) { + return chr === 0x22 || chr === 0x27 +} + +function parseBracket (chr) { + var inBracket = 1; + expressionPos = index$1; + while (!eof()) { + chr = next(); + if (isStringStart(chr)) { + parseString(chr); + continue + } + if (chr === 0x5B) { inBracket++; } + if (chr === 0x5D) { inBracket--; } + if (inBracket === 0) { + expressionEndPos = index$1; + break + } + } +} + +function parseString (chr) { + var stringQuote = chr; + while (!eof()) { + chr = next(); + if (chr === stringQuote) { + break + } + } +} + +/* */ + +var warn$1; + +// in some cases, the event used has to be determined at runtime +// so we used some reserved tokens during compile. +var RANGE_TOKEN = '__r'; +var CHECKBOX_RADIO_TOKEN = '__c'; + +function model ( + el, + dir, + _warn +) { + warn$1 = _warn; + var value = dir.value; + var modifiers = dir.modifiers; + var tag = el.tag; + var type = el.attrsMap.type; + + if (false) { + // inputs with type="file" are read only and setting the input's + // value will throw an error. + if (tag === 'input' && type === 'file') { + warn$1( + "<" + (el.tag) + " v-model=\"" + value + "\" type=\"file\">:\n" + + "File inputs are read only. Use a v-on:change listener instead." + ); + } + } + + if (el.component) { + genComponentModel(el, value, modifiers); + // component v-model doesn't need extra runtime + return false + } else if (tag === 'select') { + genSelect(el, value, modifiers); + } else if (tag === 'input' && type === 'checkbox') { + genCheckboxModel(el, value, modifiers); + } else if (tag === 'input' && type === 'radio') { + genRadioModel(el, value, modifiers); + } else if (tag === 'input' || tag === 'textarea') { + genDefaultModel(el, value, modifiers); + } else if (!config.isReservedTag(tag)) { + genComponentModel(el, value, modifiers); + // component v-model doesn't need extra runtime + return false + } else if (false) { + warn$1( + "<" + (el.tag) + " v-model=\"" + value + "\">: " + + "v-model is not supported on this element type. " + + 'If you are working with contenteditable, it\'s recommended to ' + + 'wrap a library dedicated for that purpose inside a custom component.' + ); + } + + // ensure runtime directive metadata + return true +} + +function genCheckboxModel ( + el, + value, + modifiers +) { + var number = modifiers && modifiers.number; + var valueBinding = getBindingAttr(el, 'value') || 'null'; + var trueValueBinding = getBindingAttr(el, 'true-value') || 'true'; + var falseValueBinding = getBindingAttr(el, 'false-value') || 'false'; + addProp(el, 'checked', + "Array.isArray(" + value + ")" + + "?_i(" + value + "," + valueBinding + ")>-1" + ( + trueValueBinding === 'true' + ? (":(" + value + ")") + : (":_q(" + value + "," + trueValueBinding + ")") + ) + ); + addHandler(el, 'change', + "var $$a=" + value + "," + + '$$el=$event.target,' + + "$$c=$$el.checked?(" + trueValueBinding + "):(" + falseValueBinding + ");" + + 'if(Array.isArray($$a)){' + + "var $$v=" + (number ? '_n(' + valueBinding + ')' : valueBinding) + "," + + '$$i=_i($$a,$$v);' + + "if($$el.checked){$$i<0&&(" + value + "=$$a.concat([$$v]))}" + + "else{$$i>-1&&(" + value + "=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}" + + "}else{" + (genAssignmentCode(value, '$$c')) + "}", + null, true + ); +} + +function genRadioModel ( + el, + value, + modifiers +) { + var number = modifiers && modifiers.number; + var valueBinding = getBindingAttr(el, 'value') || 'null'; + valueBinding = number ? ("_n(" + valueBinding + ")") : valueBinding; + addProp(el, 'checked', ("_q(" + value + "," + valueBinding + ")")); + addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true); +} + +function genSelect ( + el, + value, + modifiers +) { + var number = modifiers && modifiers.number; + var selectedVal = "Array.prototype.filter" + + ".call($event.target.options,function(o){return o.selected})" + + ".map(function(o){var val = \"_value\" in o ? o._value : o.value;" + + "return " + (number ? '_n(val)' : 'val') + "})"; + + var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]'; + var code = "var $$selectedVal = " + selectedVal + ";"; + code = code + " " + (genAssignmentCode(value, assignment)); + addHandler(el, 'change', code, null, true); +} + +function genDefaultModel ( + el, + value, + modifiers +) { + var type = el.attrsMap.type; + + // warn if v-bind:value conflicts with v-model + if (false) { + var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value']; + if (value$1) { + var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value'; + warn$1( + binding + "=\"" + value$1 + "\" conflicts with v-model on the same element " + + 'because the latter already expands to a value binding internally' + ); + } + } + + var ref = modifiers || {}; + var lazy = ref.lazy; + var number = ref.number; + var trim = ref.trim; + var needCompositionGuard = !lazy && type !== 'range'; + var event = lazy + ? 'change' + : type === 'range' + ? RANGE_TOKEN + : 'input'; + + var valueExpression = '$event.target.value'; + if (trim) { + valueExpression = "$event.target.value.trim()"; + } + if (number) { + valueExpression = "_n(" + valueExpression + ")"; + } + + var code = genAssignmentCode(value, valueExpression); + if (needCompositionGuard) { + code = "if($event.target.composing)return;" + code; + } + + addProp(el, 'value', ("(" + value + ")")); + addHandler(el, event, code, null, true); + if (trim || number) { + addHandler(el, 'blur', '$forceUpdate()'); + } +} + +/* */ + +// normalize v-model event tokens that can only be determined at runtime. +// it's important to place the event as the first in the array because +// the whole point is ensuring the v-model callback gets called before +// user-attached handlers. +function normalizeEvents (on) { + /* istanbul ignore if */ + if (isDef(on[RANGE_TOKEN])) { + // IE input[type=range] only supports `change` event + var event = isIE ? 'change' : 'input'; + on[event] = [].concat(on[RANGE_TOKEN], on[event] || []); + delete on[RANGE_TOKEN]; + } + // This was originally intended to fix #4521 but no longer necessary + // after 2.5. Keeping it for backwards compat with generated code from < 2.4 + /* istanbul ignore if */ + if (isDef(on[CHECKBOX_RADIO_TOKEN])) { + on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []); + delete on[CHECKBOX_RADIO_TOKEN]; + } +} + +var target$1; + +function createOnceHandler (handler, event, capture) { + var _target = target$1; // save current target element in closure + return function onceHandler () { + var res = handler.apply(null, arguments); + if (res !== null) { + remove$2(event, onceHandler, capture, _target); + } + } +} + +function add$1 ( + event, + handler, + once$$1, + capture, + passive +) { + handler = withMacroTask(handler); + if (once$$1) { handler = createOnceHandler(handler, event, capture); } + target$1.addEventListener( + event, + handler, + supportsPassive + ? { capture: capture, passive: passive } + : capture + ); +} + +function remove$2 ( + event, + handler, + capture, + _target +) { + (_target || target$1).removeEventListener( + event, + handler._withTask || handler, + capture + ); +} + +function updateDOMListeners (oldVnode, vnode) { + if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) { + return + } + var on = vnode.data.on || {}; + var oldOn = oldVnode.data.on || {}; + target$1 = vnode.elm; + normalizeEvents(on); + updateListeners(on, oldOn, add$1, remove$2, vnode.context); + target$1 = undefined; +} + +var events = { + create: updateDOMListeners, + update: updateDOMListeners +}; + +/* */ + +function updateDOMProps (oldVnode, vnode) { + if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) { + return + } + var key, cur; + var elm = vnode.elm; + var oldProps = oldVnode.data.domProps || {}; + var props = vnode.data.domProps || {}; + // clone observed objects, as the user probably wants to mutate it + if (isDef(props.__ob__)) { + props = vnode.data.domProps = extend({}, props); + } + + for (key in oldProps) { + if (isUndef(props[key])) { + elm[key] = ''; + } + } + for (key in props) { + cur = props[key]; + // ignore children if the node has textContent or innerHTML, + // as these will throw away existing DOM nodes and cause removal errors + // on subsequent patches (#3360) + if (key === 'textContent' || key === 'innerHTML') { + if (vnode.children) { vnode.children.length = 0; } + if (cur === oldProps[key]) { continue } + // #6601 work around Chrome version <= 55 bug where single textNode + // replaced by innerHTML/textContent retains its parentNode property + if (elm.childNodes.length === 1) { + elm.removeChild(elm.childNodes[0]); + } + } + + if (key === 'value') { + // store value as _value as well since + // non-string values will be stringified + elm._value = cur; + // avoid resetting cursor position when value is the same + var strCur = isUndef(cur) ? '' : String(cur); + if (shouldUpdateValue(elm, strCur)) { + elm.value = strCur; + } + } else { + elm[key] = cur; + } + } +} + +// check platforms/web/util/attrs.js acceptValue + + +function shouldUpdateValue (elm, checkVal) { + return (!elm.composing && ( + elm.tagName === 'OPTION' || + isNotInFocusAndDirty(elm, checkVal) || + isDirtyWithModifiers(elm, checkVal) + )) +} + +function isNotInFocusAndDirty (elm, checkVal) { + // return true when textbox (.number and .trim) loses focus and its value is + // not equal to the updated value + var notInFocus = true; + // #6157 + // work around IE bug when accessing document.activeElement in an iframe + try { notInFocus = document.activeElement !== elm; } catch (e) {} + return notInFocus && elm.value !== checkVal +} + +function isDirtyWithModifiers (elm, newVal) { + var value = elm.value; + var modifiers = elm._vModifiers; // injected by v-model runtime + if (isDef(modifiers)) { + if (modifiers.lazy) { + // inputs with lazy should only be updated when not in focus + return false + } + if (modifiers.number) { + return toNumber(value) !== toNumber(newVal) + } + if (modifiers.trim) { + return value.trim() !== newVal.trim() + } + } + return value !== newVal +} + +var domProps = { + create: updateDOMProps, + update: updateDOMProps +}; + +/* */ + +var parseStyleText = cached(function (cssText) { + var res = {}; + var listDelimiter = /;(?![^(]*\))/g; + var propertyDelimiter = /:(.+)/; + cssText.split(listDelimiter).forEach(function (item) { + if (item) { + var tmp = item.split(propertyDelimiter); + tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim()); + } + }); + return res +}); + +// merge static and dynamic style data on the same vnode +function normalizeStyleData (data) { + var style = normalizeStyleBinding(data.style); + // static style is pre-processed into an object during compilation + // and is always a fresh object, so it's safe to merge into it + return data.staticStyle + ? extend(data.staticStyle, style) + : style +} + +// normalize possible array / string values into Object +function normalizeStyleBinding (bindingStyle) { + if (Array.isArray(bindingStyle)) { + return toObject(bindingStyle) + } + if (typeof bindingStyle === 'string') { + return parseStyleText(bindingStyle) + } + return bindingStyle +} + +/** + * parent component style should be after child's + * so that parent component's style could override it + */ +function getStyle (vnode, checkChild) { + var res = {}; + var styleData; + + if (checkChild) { + var childNode = vnode; + while (childNode.componentInstance) { + childNode = childNode.componentInstance._vnode; + if ( + childNode && childNode.data && + (styleData = normalizeStyleData(childNode.data)) + ) { + extend(res, styleData); + } + } + } + + if ((styleData = normalizeStyleData(vnode.data))) { + extend(res, styleData); + } + + var parentNode = vnode; + while ((parentNode = parentNode.parent)) { + if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) { + extend(res, styleData); + } + } + return res +} + +/* */ + +var cssVarRE = /^--/; +var importantRE = /\s*!important$/; +var setProp = function (el, name, val) { + /* istanbul ignore if */ + if (cssVarRE.test(name)) { + el.style.setProperty(name, val); + } else if (importantRE.test(val)) { + el.style.setProperty(name, val.replace(importantRE, ''), 'important'); + } else { + var normalizedName = normalize(name); + if (Array.isArray(val)) { + // Support values array created by autoprefixer, e.g. + // {display: ["-webkit-box", "-ms-flexbox", "flex"]} + // Set them one by one, and the browser will only set those it can recognize + for (var i = 0, len = val.length; i < len; i++) { + el.style[normalizedName] = val[i]; + } + } else { + el.style[normalizedName] = val; + } + } +}; + +var vendorNames = ['Webkit', 'Moz', 'ms']; + +var emptyStyle; +var normalize = cached(function (prop) { + emptyStyle = emptyStyle || document.createElement('div').style; + prop = camelize(prop); + if (prop !== 'filter' && (prop in emptyStyle)) { + return prop + } + var capName = prop.charAt(0).toUpperCase() + prop.slice(1); + for (var i = 0; i < vendorNames.length; i++) { + var name = vendorNames[i] + capName; + if (name in emptyStyle) { + return name + } + } +}); + +function updateStyle (oldVnode, vnode) { + var data = vnode.data; + var oldData = oldVnode.data; + + if (isUndef(data.staticStyle) && isUndef(data.style) && + isUndef(oldData.staticStyle) && isUndef(oldData.style) + ) { + return + } + + var cur, name; + var el = vnode.elm; + var oldStaticStyle = oldData.staticStyle; + var oldStyleBinding = oldData.normalizedStyle || oldData.style || {}; + + // if static style exists, stylebinding already merged into it when doing normalizeStyleData + var oldStyle = oldStaticStyle || oldStyleBinding; + + var style = normalizeStyleBinding(vnode.data.style) || {}; + + // store normalized style under a different key for next diff + // make sure to clone it if it's reactive, since the user likely wants + // to mutate it. + vnode.data.normalizedStyle = isDef(style.__ob__) + ? extend({}, style) + : style; + + var newStyle = getStyle(vnode, true); + + for (name in oldStyle) { + if (isUndef(newStyle[name])) { + setProp(el, name, ''); + } + } + for (name in newStyle) { + cur = newStyle[name]; + if (cur !== oldStyle[name]) { + // ie9 setting to null has no effect, must use empty string + setProp(el, name, cur == null ? '' : cur); + } + } +} + +var style = { + create: updateStyle, + update: updateStyle +}; + +/* */ + +/** + * Add class with compatibility for SVG since classList is not supported on + * SVG elements in IE + */ +function addClass (el, cls) { + /* istanbul ignore if */ + if (!cls || !(cls = cls.trim())) { + return + } + + /* istanbul ignore else */ + if (el.classList) { + if (cls.indexOf(' ') > -1) { + cls.split(/\s+/).forEach(function (c) { return el.classList.add(c); }); + } else { + el.classList.add(cls); + } + } else { + var cur = " " + (el.getAttribute('class') || '') + " "; + if (cur.indexOf(' ' + cls + ' ') < 0) { + el.setAttribute('class', (cur + cls).trim()); + } + } +} + +/** + * Remove class with compatibility for SVG since classList is not supported on + * SVG elements in IE + */ +function removeClass (el, cls) { + /* istanbul ignore if */ + if (!cls || !(cls = cls.trim())) { + return + } + + /* istanbul ignore else */ + if (el.classList) { + if (cls.indexOf(' ') > -1) { + cls.split(/\s+/).forEach(function (c) { return el.classList.remove(c); }); + } else { + el.classList.remove(cls); + } + if (!el.classList.length) { + el.removeAttribute('class'); + } + } else { + var cur = " " + (el.getAttribute('class') || '') + " "; + var tar = ' ' + cls + ' '; + while (cur.indexOf(tar) >= 0) { + cur = cur.replace(tar, ' '); + } + cur = cur.trim(); + if (cur) { + el.setAttribute('class', cur); + } else { + el.removeAttribute('class'); + } + } +} + +/* */ + +function resolveTransition (def) { + if (!def) { + return + } + /* istanbul ignore else */ + if (typeof def === 'object') { + var res = {}; + if (def.css !== false) { + extend(res, autoCssTransition(def.name || 'v')); + } + extend(res, def); + return res + } else if (typeof def === 'string') { + return autoCssTransition(def) + } +} + +var autoCssTransition = cached(function (name) { + return { + enterClass: (name + "-enter"), + enterToClass: (name + "-enter-to"), + enterActiveClass: (name + "-enter-active"), + leaveClass: (name + "-leave"), + leaveToClass: (name + "-leave-to"), + leaveActiveClass: (name + "-leave-active") + } +}); + +var hasTransition = inBrowser && !isIE9; +var TRANSITION = 'transition'; +var ANIMATION = 'animation'; + +// Transition property/event sniffing +var transitionProp = 'transition'; +var transitionEndEvent = 'transitionend'; +var animationProp = 'animation'; +var animationEndEvent = 'animationend'; +if (hasTransition) { + /* istanbul ignore if */ + if (window.ontransitionend === undefined && + window.onwebkittransitionend !== undefined + ) { + transitionProp = 'WebkitTransition'; + transitionEndEvent = 'webkitTransitionEnd'; + } + if (window.onanimationend === undefined && + window.onwebkitanimationend !== undefined + ) { + animationProp = 'WebkitAnimation'; + animationEndEvent = 'webkitAnimationEnd'; + } +} + +// binding to window is necessary to make hot reload work in IE in strict mode +var raf = inBrowser + ? window.requestAnimationFrame + ? window.requestAnimationFrame.bind(window) + : setTimeout + : /* istanbul ignore next */ function (fn) { return fn(); }; + +function nextFrame (fn) { + raf(function () { + raf(fn); + }); +} + +function addTransitionClass (el, cls) { + var transitionClasses = el._transitionClasses || (el._transitionClasses = []); + if (transitionClasses.indexOf(cls) < 0) { + transitionClasses.push(cls); + addClass(el, cls); + } +} + +function removeTransitionClass (el, cls) { + if (el._transitionClasses) { + remove(el._transitionClasses, cls); + } + removeClass(el, cls); +} + +function whenTransitionEnds ( + el, + expectedType, + cb +) { + var ref = getTransitionInfo(el, expectedType); + var type = ref.type; + var timeout = ref.timeout; + var propCount = ref.propCount; + if (!type) { return cb() } + var event = type === TRANSITION ? transitionEndEvent : animationEndEvent; + var ended = 0; + var end = function () { + el.removeEventListener(event, onEnd); + cb(); + }; + var onEnd = function (e) { + if (e.target === el) { + if (++ended >= propCount) { + end(); + } + } + }; + setTimeout(function () { + if (ended < propCount) { + end(); + } + }, timeout + 1); + el.addEventListener(event, onEnd); +} + +var transformRE = /\b(transform|all)(,|$)/; + +function getTransitionInfo (el, expectedType) { + var styles = window.getComputedStyle(el); + var transitionDelays = styles[transitionProp + 'Delay'].split(', '); + var transitionDurations = styles[transitionProp + 'Duration'].split(', '); + var transitionTimeout = getTimeout(transitionDelays, transitionDurations); + var animationDelays = styles[animationProp + 'Delay'].split(', '); + var animationDurations = styles[animationProp + 'Duration'].split(', '); + var animationTimeout = getTimeout(animationDelays, animationDurations); + + var type; + var timeout = 0; + var propCount = 0; + /* istanbul ignore if */ + if (expectedType === TRANSITION) { + if (transitionTimeout > 0) { + type = TRANSITION; + timeout = transitionTimeout; + propCount = transitionDurations.length; + } + } else if (expectedType === ANIMATION) { + if (animationTimeout > 0) { + type = ANIMATION; + timeout = animationTimeout; + propCount = animationDurations.length; + } + } else { + timeout = Math.max(transitionTimeout, animationTimeout); + type = timeout > 0 + ? transitionTimeout > animationTimeout + ? TRANSITION + : ANIMATION + : null; + propCount = type + ? type === TRANSITION + ? transitionDurations.length + : animationDurations.length + : 0; + } + var hasTransform = + type === TRANSITION && + transformRE.test(styles[transitionProp + 'Property']); + return { + type: type, + timeout: timeout, + propCount: propCount, + hasTransform: hasTransform + } +} + +function getTimeout (delays, durations) { + /* istanbul ignore next */ + while (delays.length < durations.length) { + delays = delays.concat(delays); + } + + return Math.max.apply(null, durations.map(function (d, i) { + return toMs(d) + toMs(delays[i]) + })) +} + +function toMs (s) { + return Number(s.slice(0, -1)) * 1000 +} + +/* */ + +function enter (vnode, toggleDisplay) { + var el = vnode.elm; + + // call leave callback now + if (isDef(el._leaveCb)) { + el._leaveCb.cancelled = true; + el._leaveCb(); + } + + var data = resolveTransition(vnode.data.transition); + if (isUndef(data)) { + return + } + + /* istanbul ignore if */ + if (isDef(el._enterCb) || el.nodeType !== 1) { + return + } + + var css = data.css; + var type = data.type; + var enterClass = data.enterClass; + var enterToClass = data.enterToClass; + var enterActiveClass = data.enterActiveClass; + var appearClass = data.appearClass; + var appearToClass = data.appearToClass; + var appearActiveClass = data.appearActiveClass; + var beforeEnter = data.beforeEnter; + var enter = data.enter; + var afterEnter = data.afterEnter; + var enterCancelled = data.enterCancelled; + var beforeAppear = data.beforeAppear; + var appear = data.appear; + var afterAppear = data.afterAppear; + var appearCancelled = data.appearCancelled; + var duration = data.duration; + + // activeInstance will always be the <transition> component managing this + // transition. One edge case to check is when the <transition> is placed + // as the root node of a child component. In that case we need to check + // <transition>'s parent for appear check. + var context = activeInstance; + var transitionNode = activeInstance.$vnode; + while (transitionNode && transitionNode.parent) { + transitionNode = transitionNode.parent; + context = transitionNode.context; + } + + var isAppear = !context._isMounted || !vnode.isRootInsert; + + if (isAppear && !appear && appear !== '') { + return + } + + var startClass = isAppear && appearClass + ? appearClass + : enterClass; + var activeClass = isAppear && appearActiveClass + ? appearActiveClass + : enterActiveClass; + var toClass = isAppear && appearToClass + ? appearToClass + : enterToClass; + + var beforeEnterHook = isAppear + ? (beforeAppear || beforeEnter) + : beforeEnter; + var enterHook = isAppear + ? (typeof appear === 'function' ? appear : enter) + : enter; + var afterEnterHook = isAppear + ? (afterAppear || afterEnter) + : afterEnter; + var enterCancelledHook = isAppear + ? (appearCancelled || enterCancelled) + : enterCancelled; + + var explicitEnterDuration = toNumber( + isObject(duration) + ? duration.enter + : duration + ); + + if (false) { + checkDuration(explicitEnterDuration, 'enter', vnode); + } + + var expectsCSS = css !== false && !isIE9; + var userWantsControl = getHookArgumentsLength(enterHook); + + var cb = el._enterCb = once(function () { + if (expectsCSS) { + removeTransitionClass(el, toClass); + removeTransitionClass(el, activeClass); + } + if (cb.cancelled) { + if (expectsCSS) { + removeTransitionClass(el, startClass); + } + enterCancelledHook && enterCancelledHook(el); + } else { + afterEnterHook && afterEnterHook(el); + } + el._enterCb = null; + }); + + if (!vnode.data.show) { + // remove pending leave element on enter by injecting an insert hook + mergeVNodeHook(vnode, 'insert', function () { + var parent = el.parentNode; + var pendingNode = parent && parent._pending && parent._pending[vnode.key]; + if (pendingNode && + pendingNode.tag === vnode.tag && + pendingNode.elm._leaveCb + ) { + pendingNode.elm._leaveCb(); + } + enterHook && enterHook(el, cb); + }); + } + + // start enter transition + beforeEnterHook && beforeEnterHook(el); + if (expectsCSS) { + addTransitionClass(el, startClass); + addTransitionClass(el, activeClass); + nextFrame(function () { + addTransitionClass(el, toClass); + removeTransitionClass(el, startClass); + if (!cb.cancelled && !userWantsControl) { + if (isValidDuration(explicitEnterDuration)) { + setTimeout(cb, explicitEnterDuration); + } else { + whenTransitionEnds(el, type, cb); + } + } + }); + } + + if (vnode.data.show) { + toggleDisplay && toggleDisplay(); + enterHook && enterHook(el, cb); + } + + if (!expectsCSS && !userWantsControl) { + cb(); + } +} + +function leave (vnode, rm) { + var el = vnode.elm; + + // call enter callback now + if (isDef(el._enterCb)) { + el._enterCb.cancelled = true; + el._enterCb(); + } + + var data = resolveTransition(vnode.data.transition); + if (isUndef(data) || el.nodeType !== 1) { + return rm() + } + + /* istanbul ignore if */ + if (isDef(el._leaveCb)) { + return + } + + var css = data.css; + var type = data.type; + var leaveClass = data.leaveClass; + var leaveToClass = data.leaveToClass; + var leaveActiveClass = data.leaveActiveClass; + var beforeLeave = data.beforeLeave; + var leave = data.leave; + var afterLeave = data.afterLeave; + var leaveCancelled = data.leaveCancelled; + var delayLeave = data.delayLeave; + var duration = data.duration; + + var expectsCSS = css !== false && !isIE9; + var userWantsControl = getHookArgumentsLength(leave); + + var explicitLeaveDuration = toNumber( + isObject(duration) + ? duration.leave + : duration + ); + + if (false) { + checkDuration(explicitLeaveDuration, 'leave', vnode); + } + + var cb = el._leaveCb = once(function () { + if (el.parentNode && el.parentNode._pending) { + el.parentNode._pending[vnode.key] = null; + } + if (expectsCSS) { + removeTransitionClass(el, leaveToClass); + removeTransitionClass(el, leaveActiveClass); + } + if (cb.cancelled) { + if (expectsCSS) { + removeTransitionClass(el, leaveClass); + } + leaveCancelled && leaveCancelled(el); + } else { + rm(); + afterLeave && afterLeave(el); + } + el._leaveCb = null; + }); + + if (delayLeave) { + delayLeave(performLeave); + } else { + performLeave(); + } + + function performLeave () { + // the delayed leave may have already been cancelled + if (cb.cancelled) { + return + } + // record leaving element + if (!vnode.data.show) { + (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode; + } + beforeLeave && beforeLeave(el); + if (expectsCSS) { + addTransitionClass(el, leaveClass); + addTransitionClass(el, leaveActiveClass); + nextFrame(function () { + addTransitionClass(el, leaveToClass); + removeTransitionClass(el, leaveClass); + if (!cb.cancelled && !userWantsControl) { + if (isValidDuration(explicitLeaveDuration)) { + setTimeout(cb, explicitLeaveDuration); + } else { + whenTransitionEnds(el, type, cb); + } + } + }); + } + leave && leave(el, cb); + if (!expectsCSS && !userWantsControl) { + cb(); + } + } +} + +// only used in dev mode +function checkDuration (val, name, vnode) { + if (typeof val !== 'number') { + warn( + "<transition> explicit " + name + " duration is not a valid number - " + + "got " + (JSON.stringify(val)) + ".", + vnode.context + ); + } else if (isNaN(val)) { + warn( + "<transition> explicit " + name + " duration is NaN - " + + 'the duration expression might be incorrect.', + vnode.context + ); + } +} + +function isValidDuration (val) { + return typeof val === 'number' && !isNaN(val) +} + +/** + * Normalize a transition hook's argument length. The hook may be: + * - a merged hook (invoker) with the original in .fns + * - a wrapped component method (check ._length) + * - a plain function (.length) + */ +function getHookArgumentsLength (fn) { + if (isUndef(fn)) { + return false + } + var invokerFns = fn.fns; + if (isDef(invokerFns)) { + // invoker + return getHookArgumentsLength( + Array.isArray(invokerFns) + ? invokerFns[0] + : invokerFns + ) + } else { + return (fn._length || fn.length) > 1 + } +} + +function _enter (_, vnode) { + if (vnode.data.show !== true) { + enter(vnode); + } +} + +var transition = inBrowser ? { + create: _enter, + activate: _enter, + remove: function remove$$1 (vnode, rm) { + /* istanbul ignore else */ + if (vnode.data.show !== true) { + leave(vnode, rm); + } else { + rm(); + } + } +} : {}; + +var platformModules = [ + attrs, + klass, + events, + domProps, + style, + transition +]; + +/* */ + +// the directive module should be applied last, after all +// built-in modules have been applied. +var modules = platformModules.concat(baseModules); + +var patch = createPatchFunction({ nodeOps: nodeOps, modules: modules }); + +/** + * Not type checking this file because flow doesn't like attaching + * properties to Elements. + */ + +/* istanbul ignore if */ +if (isIE9) { + // http://www.matts411.com/post/internet-explorer-9-oninput/ + document.addEventListener('selectionchange', function () { + var el = document.activeElement; + if (el && el.vmodel) { + trigger(el, 'input'); + } + }); +} + +var directive = { + inserted: function inserted (el, binding, vnode, oldVnode) { + if (vnode.tag === 'select') { + // #6903 + if (oldVnode.elm && !oldVnode.elm._vOptions) { + mergeVNodeHook(vnode, 'postpatch', function () { + directive.componentUpdated(el, binding, vnode); + }); + } else { + setSelected(el, binding, vnode.context); + } + el._vOptions = [].map.call(el.options, getValue); + } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) { + el._vModifiers = binding.modifiers; + if (!binding.modifiers.lazy) { + // Safari < 10.2 & UIWebView doesn't fire compositionend when + // switching focus before confirming composition choice + // this also fixes the issue where some browsers e.g. iOS Chrome + // fires "change" instead of "input" on autocomplete. + el.addEventListener('change', onCompositionEnd); + if (!isAndroid) { + el.addEventListener('compositionstart', onCompositionStart); + el.addEventListener('compositionend', onCompositionEnd); + } + /* istanbul ignore if */ + if (isIE9) { + el.vmodel = true; + } + } + } + }, + + componentUpdated: function componentUpdated (el, binding, vnode) { + if (vnode.tag === 'select') { + setSelected(el, binding, vnode.context); + // in case the options rendered by v-for have changed, + // it's possible that the value is out-of-sync with the rendered options. + // detect such cases and filter out values that no longer has a matching + // option in the DOM. + var prevOptions = el._vOptions; + var curOptions = el._vOptions = [].map.call(el.options, getValue); + if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) { + // trigger change event if + // no matching option found for at least one value + var needReset = el.multiple + ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); }) + : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions); + if (needReset) { + trigger(el, 'change'); + } + } + } + } +}; + +function setSelected (el, binding, vm) { + actuallySetSelected(el, binding, vm); + /* istanbul ignore if */ + if (isIE || isEdge) { + setTimeout(function () { + actuallySetSelected(el, binding, vm); + }, 0); + } +} + +function actuallySetSelected (el, binding, vm) { + var value = binding.value; + var isMultiple = el.multiple; + if (isMultiple && !Array.isArray(value)) { + "production" !== 'production' && warn( + "<select multiple v-model=\"" + (binding.expression) + "\"> " + + "expects an Array value for its binding, but got " + (Object.prototype.toString.call(value).slice(8, -1)), + vm + ); + return + } + var selected, option; + for (var i = 0, l = el.options.length; i < l; i++) { + option = el.options[i]; + if (isMultiple) { + selected = looseIndexOf(value, getValue(option)) > -1; + if (option.selected !== selected) { + option.selected = selected; + } + } else { + if (looseEqual(getValue(option), value)) { + if (el.selectedIndex !== i) { + el.selectedIndex = i; + } + return + } + } + } + if (!isMultiple) { + el.selectedIndex = -1; + } +} + +function hasNoMatchingOption (value, options) { + return options.every(function (o) { return !looseEqual(o, value); }) +} + +function getValue (option) { + return '_value' in option + ? option._value + : option.value +} + +function onCompositionStart (e) { + e.target.composing = true; +} + +function onCompositionEnd (e) { + // prevent triggering an input event for no reason + if (!e.target.composing) { return } + e.target.composing = false; + trigger(e.target, 'input'); +} + +function trigger (el, type) { + var e = document.createEvent('HTMLEvents'); + e.initEvent(type, true, true); + el.dispatchEvent(e); +} + +/* */ + +// recursively search for possible transition defined inside the component root +function locateNode (vnode) { + return vnode.componentInstance && (!vnode.data || !vnode.data.transition) + ? locateNode(vnode.componentInstance._vnode) + : vnode +} + +var show = { + bind: function bind (el, ref, vnode) { + var value = ref.value; + + vnode = locateNode(vnode); + var transition$$1 = vnode.data && vnode.data.transition; + var originalDisplay = el.__vOriginalDisplay = + el.style.display === 'none' ? '' : el.style.display; + if (value && transition$$1) { + vnode.data.show = true; + enter(vnode, function () { + el.style.display = originalDisplay; + }); + } else { + el.style.display = value ? originalDisplay : 'none'; + } + }, + + update: function update (el, ref, vnode) { + var value = ref.value; + var oldValue = ref.oldValue; + + /* istanbul ignore if */ + if (value === oldValue) { return } + vnode = locateNode(vnode); + var transition$$1 = vnode.data && vnode.data.transition; + if (transition$$1) { + vnode.data.show = true; + if (value) { + enter(vnode, function () { + el.style.display = el.__vOriginalDisplay; + }); + } else { + leave(vnode, function () { + el.style.display = 'none'; + }); + } + } else { + el.style.display = value ? el.__vOriginalDisplay : 'none'; + } + }, + + unbind: function unbind ( + el, + binding, + vnode, + oldVnode, + isDestroy + ) { + if (!isDestroy) { + el.style.display = el.__vOriginalDisplay; + } + } +}; + +var platformDirectives = { + model: directive, + show: show +}; + +/* */ + +// Provides transition support for a single element/component. +// supports transition mode (out-in / in-out) + +var transitionProps = { + name: String, + appear: Boolean, + css: Boolean, + mode: String, + type: String, + enterClass: String, + leaveClass: String, + enterToClass: String, + leaveToClass: String, + enterActiveClass: String, + leaveActiveClass: String, + appearClass: String, + appearActiveClass: String, + appearToClass: String, + duration: [Number, String, Object] +}; + +// in case the child is also an abstract component, e.g. <keep-alive> +// we want to recursively retrieve the real component to be rendered +function getRealChild (vnode) { + var compOptions = vnode && vnode.componentOptions; + if (compOptions && compOptions.Ctor.options.abstract) { + return getRealChild(getFirstComponentChild(compOptions.children)) + } else { + return vnode + } +} + +function extractTransitionData (comp) { + var data = {}; + var options = comp.$options; + // props + for (var key in options.propsData) { + data[key] = comp[key]; + } + // events. + // extract listeners and pass them directly to the transition methods + var listeners = options._parentListeners; + for (var key$1 in listeners) { + data[camelize(key$1)] = listeners[key$1]; + } + return data +} + +function placeholder (h, rawChild) { + if (/\d-keep-alive$/.test(rawChild.tag)) { + return h('keep-alive', { + props: rawChild.componentOptions.propsData + }) + } +} + +function hasParentTransition (vnode) { + while ((vnode = vnode.parent)) { + if (vnode.data.transition) { + return true + } + } +} + +function isSameChild (child, oldChild) { + return oldChild.key === child.key && oldChild.tag === child.tag +} + +var Transition = { + name: 'transition', + props: transitionProps, + abstract: true, + + render: function render (h) { + var this$1 = this; + + var children = this.$slots.default; + if (!children) { + return + } + + // filter out text nodes (possible whitespaces) + children = children.filter(function (c) { return c.tag || isAsyncPlaceholder(c); }); + /* istanbul ignore if */ + if (!children.length) { + return + } + + // warn multiple elements + if (false) { + warn( + '<transition> can only be used on a single element. Use ' + + '<transition-group> for lists.', + this.$parent + ); + } + + var mode = this.mode; + + // warn invalid mode + if (false + ) { + warn( + 'invalid <transition> mode: ' + mode, + this.$parent + ); + } + + var rawChild = children[0]; + + // if this is a component root node and the component's + // parent container node also has transition, skip. + if (hasParentTransition(this.$vnode)) { + return rawChild + } + + // apply transition data to child + // use getRealChild() to ignore abstract components e.g. keep-alive + var child = getRealChild(rawChild); + /* istanbul ignore if */ + if (!child) { + return rawChild + } + + if (this._leaving) { + return placeholder(h, rawChild) + } + + // ensure a key that is unique to the vnode type and to this transition + // component instance. This key will be used to remove pending leaving nodes + // during entering. + var id = "__transition-" + (this._uid) + "-"; + child.key = child.key == null + ? child.isComment + ? id + 'comment' + : id + child.tag + : isPrimitive(child.key) + ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key) + : child.key; + + var data = (child.data || (child.data = {})).transition = extractTransitionData(this); + var oldRawChild = this._vnode; + var oldChild = getRealChild(oldRawChild); + + // mark v-show + // so that the transition module can hand over the control to the directive + if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) { + child.data.show = true; + } + + if ( + oldChild && + oldChild.data && + !isSameChild(child, oldChild) && + !isAsyncPlaceholder(oldChild) && + // #6687 component root is a comment node + !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment) + ) { + // replace old child transition data with fresh one + // important for dynamic transitions! + var oldData = oldChild.data.transition = extend({}, data); + // handle transition mode + if (mode === 'out-in') { + // return placeholder node and queue update when leave finishes + this._leaving = true; + mergeVNodeHook(oldData, 'afterLeave', function () { + this$1._leaving = false; + this$1.$forceUpdate(); + }); + return placeholder(h, rawChild) + } else if (mode === 'in-out') { + if (isAsyncPlaceholder(child)) { + return oldRawChild + } + var delayedLeave; + var performLeave = function () { delayedLeave(); }; + mergeVNodeHook(data, 'afterEnter', performLeave); + mergeVNodeHook(data, 'enterCancelled', performLeave); + mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; }); + } + } + + return rawChild + } +}; + +/* */ + +// Provides transition support for list items. +// supports move transitions using the FLIP technique. + +// Because the vdom's children update algorithm is "unstable" - i.e. +// it doesn't guarantee the relative positioning of removed elements, +// we force transition-group to update its children into two passes: +// in the first pass, we remove all nodes that need to be removed, +// triggering their leaving transition; in the second pass, we insert/move +// into the final desired state. This way in the second pass removed +// nodes will remain where they should be. + +var props = extend({ + tag: String, + moveClass: String +}, transitionProps); + +delete props.mode; + +var TransitionGroup = { + props: props, + + render: function render (h) { + var tag = this.tag || this.$vnode.data.tag || 'span'; + var map = Object.create(null); + var prevChildren = this.prevChildren = this.children; + var rawChildren = this.$slots.default || []; + var children = this.children = []; + var transitionData = extractTransitionData(this); + + for (var i = 0; i < rawChildren.length; i++) { + var c = rawChildren[i]; + if (c.tag) { + if (c.key != null && String(c.key).indexOf('__vlist') !== 0) { + children.push(c); + map[c.key] = c + ;(c.data || (c.data = {})).transition = transitionData; + } else if (false) { + var opts = c.componentOptions; + var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag; + warn(("<transition-group> children must be keyed: <" + name + ">")); + } + } + } + + if (prevChildren) { + var kept = []; + var removed = []; + for (var i$1 = 0; i$1 < prevChildren.length; i$1++) { + var c$1 = prevChildren[i$1]; + c$1.data.transition = transitionData; + c$1.data.pos = c$1.elm.getBoundingClientRect(); + if (map[c$1.key]) { + kept.push(c$1); + } else { + removed.push(c$1); + } + } + this.kept = h(tag, null, kept); + this.removed = removed; + } + + return h(tag, null, children) + }, + + beforeUpdate: function beforeUpdate () { + // force removing pass + this.__patch__( + this._vnode, + this.kept, + false, // hydrating + true // removeOnly (!important avoids unnecessary moves) + ); + this._vnode = this.kept; + }, + + updated: function updated () { + var children = this.prevChildren; + var moveClass = this.moveClass || ((this.name || 'v') + '-move'); + if (!children.length || !this.hasMove(children[0].elm, moveClass)) { + return + } + + // we divide the work into three loops to avoid mixing DOM reads and writes + // in each iteration - which helps prevent layout thrashing. + children.forEach(callPendingCbs); + children.forEach(recordPosition); + children.forEach(applyTranslation); + + // force reflow to put everything in position + // assign to this to avoid being removed in tree-shaking + // $flow-disable-line + this._reflow = document.body.offsetHeight; + + children.forEach(function (c) { + if (c.data.moved) { + var el = c.elm; + var s = el.style; + addTransitionClass(el, moveClass); + s.transform = s.WebkitTransform = s.transitionDuration = ''; + el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) { + if (!e || /transform$/.test(e.propertyName)) { + el.removeEventListener(transitionEndEvent, cb); + el._moveCb = null; + removeTransitionClass(el, moveClass); + } + }); + } + }); + }, + + methods: { + hasMove: function hasMove (el, moveClass) { + /* istanbul ignore if */ + if (!hasTransition) { + return false + } + /* istanbul ignore if */ + if (this._hasMove) { + return this._hasMove + } + // Detect whether an element with the move class applied has + // CSS transitions. Since the element may be inside an entering + // transition at this very moment, we make a clone of it and remove + // all other transition classes applied to ensure only the move class + // is applied. + var clone = el.cloneNode(); + if (el._transitionClasses) { + el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); }); + } + addClass(clone, moveClass); + clone.style.display = 'none'; + this.$el.appendChild(clone); + var info = getTransitionInfo(clone); + this.$el.removeChild(clone); + return (this._hasMove = info.hasTransform) + } + } +}; + +function callPendingCbs (c) { + /* istanbul ignore if */ + if (c.elm._moveCb) { + c.elm._moveCb(); + } + /* istanbul ignore if */ + if (c.elm._enterCb) { + c.elm._enterCb(); + } +} + +function recordPosition (c) { + c.data.newPos = c.elm.getBoundingClientRect(); +} + +function applyTranslation (c) { + var oldPos = c.data.pos; + var newPos = c.data.newPos; + var dx = oldPos.left - newPos.left; + var dy = oldPos.top - newPos.top; + if (dx || dy) { + c.data.moved = true; + var s = c.elm.style; + s.transform = s.WebkitTransform = "translate(" + dx + "px," + dy + "px)"; + s.transitionDuration = '0s'; + } +} + +var platformComponents = { + Transition: Transition, + TransitionGroup: TransitionGroup +}; + +/* */ + +// install platform specific utils +Vue$3.config.mustUseProp = mustUseProp; +Vue$3.config.isReservedTag = isReservedTag; +Vue$3.config.isReservedAttr = isReservedAttr; +Vue$3.config.getTagNamespace = getTagNamespace; +Vue$3.config.isUnknownElement = isUnknownElement; + +// install platform runtime directives & components +extend(Vue$3.options.directives, platformDirectives); +extend(Vue$3.options.components, platformComponents); + +// install platform patch function +Vue$3.prototype.__patch__ = inBrowser ? patch : noop; + +// public mount method +Vue$3.prototype.$mount = function ( + el, + hydrating +) { + el = el && inBrowser ? query(el) : undefined; + return mountComponent(this, el, hydrating) +}; + +// devtools global hook +/* istanbul ignore next */ +Vue$3.nextTick(function () { + if (config.devtools) { + if (devtools) { + devtools.emit('init', Vue$3); + } else if (false) { + console[console.info ? 'info' : 'log']( + 'Download the Vue Devtools extension for a better development experience:\n' + + 'https://github.com/vuejs/vue-devtools' + ); + } + } + if (false + ) { + console[console.info ? 'info' : 'log']( + "You are running Vue in development mode.\n" + + "Make sure to turn on production mode when deploying for production.\n" + + "See more tips at https://vuejs.org/guide/deployment.html" + ); + } +}, 0); + +/* */ + +var defaultTagRE = /\{\{((?:.|\n)+?)\}\}/g; +var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g; + +var buildRegex = cached(function (delimiters) { + var open = delimiters[0].replace(regexEscapeRE, '\\$&'); + var close = delimiters[1].replace(regexEscapeRE, '\\$&'); + return new RegExp(open + '((?:.|\\n)+?)' + close, 'g') +}); + + + +function parseText ( + text, + delimiters +) { + var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE; + if (!tagRE.test(text)) { + return + } + var tokens = []; + var rawTokens = []; + var lastIndex = tagRE.lastIndex = 0; + var match, index, tokenValue; + while ((match = tagRE.exec(text))) { + index = match.index; + // push text token + if (index > lastIndex) { + rawTokens.push(tokenValue = text.slice(lastIndex, index)); + tokens.push(JSON.stringify(tokenValue)); + } + // tag token + var exp = parseFilters(match[1].trim()); + tokens.push(("_s(" + exp + ")")); + rawTokens.push({ '@binding': exp }); + lastIndex = index + match[0].length; + } + if (lastIndex < text.length) { + rawTokens.push(tokenValue = text.slice(lastIndex)); + tokens.push(JSON.stringify(tokenValue)); + } + return { + expression: tokens.join('+'), + tokens: rawTokens + } +} + +/* */ + +function transformNode (el, options) { + var warn = options.warn || baseWarn; + var staticClass = getAndRemoveAttr(el, 'class'); + if (false) { + var res = parseText(staticClass, options.delimiters); + if (res) { + warn( + "class=\"" + staticClass + "\": " + + 'Interpolation inside attributes has been removed. ' + + 'Use v-bind or the colon shorthand instead. For example, ' + + 'instead of <div class="{{ val }}">, use <div :class="val">.' + ); + } + } + if (staticClass) { + el.staticClass = JSON.stringify(staticClass); + } + var classBinding = getBindingAttr(el, 'class', false /* getStatic */); + if (classBinding) { + el.classBinding = classBinding; + } +} + +function genData (el) { + var data = ''; + if (el.staticClass) { + data += "staticClass:" + (el.staticClass) + ","; + } + if (el.classBinding) { + data += "class:" + (el.classBinding) + ","; + } + return data +} + +var klass$1 = { + staticKeys: ['staticClass'], + transformNode: transformNode, + genData: genData +}; + +/* */ + +function transformNode$1 (el, options) { + var warn = options.warn || baseWarn; + var staticStyle = getAndRemoveAttr(el, 'style'); + if (staticStyle) { + /* istanbul ignore if */ + if (false) { + var res = parseText(staticStyle, options.delimiters); + if (res) { + warn( + "style=\"" + staticStyle + "\": " + + 'Interpolation inside attributes has been removed. ' + + 'Use v-bind or the colon shorthand instead. For example, ' + + 'instead of <div style="{{ val }}">, use <div :style="val">.' + ); + } + } + el.staticStyle = JSON.stringify(parseStyleText(staticStyle)); + } + + var styleBinding = getBindingAttr(el, 'style', false /* getStatic */); + if (styleBinding) { + el.styleBinding = styleBinding; + } +} + +function genData$1 (el) { + var data = ''; + if (el.staticStyle) { + data += "staticStyle:" + (el.staticStyle) + ","; + } + if (el.styleBinding) { + data += "style:(" + (el.styleBinding) + "),"; + } + return data +} + +var style$1 = { + staticKeys: ['staticStyle'], + transformNode: transformNode$1, + genData: genData$1 +}; + +/* */ + +var decoder; + +var he = { + decode: function decode (html) { + decoder = decoder || document.createElement('div'); + decoder.innerHTML = html; + return decoder.textContent + } +}; + +/* */ + +var isUnaryTag = makeMap( + 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' + + 'link,meta,param,source,track,wbr' +); + +// Elements that you can, intentionally, leave open +// (and which close themselves) +var canBeLeftOpenTag = makeMap( + 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source' +); + +// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3 +// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content +var isNonPhrasingTag = makeMap( + 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' + + 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' + + 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' + + 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' + + 'title,tr,track' +); + +/** + * Not type-checking this file because it's mostly vendor code. + */ + +/*! + * HTML Parser By John Resig (ejohn.org) + * Modified by Juriy "kangax" Zaytsev + * Original code by Erik Arvidsson, Mozilla Public License + * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js + */ + +// Regular Expressions for parsing tags and attributes +var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/; +// could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName +// but for Vue templates we can enforce a simple charset +var ncname = '[a-zA-Z_][\\w\\-\\.]*'; +var qnameCapture = "((?:" + ncname + "\\:)?" + ncname + ")"; +var startTagOpen = new RegExp(("^<" + qnameCapture)); +var startTagClose = /^\s*(\/?)>/; +var endTag = new RegExp(("^<\\/" + qnameCapture + "[^>]*>")); +var doctype = /^<!DOCTYPE [^>]+>/i; +var comment = /^<!--/; +var conditionalComment = /^<!\[/; + +var IS_REGEX_CAPTURING_BROKEN = false; +'x'.replace(/x(.)?/g, function (m, g) { + IS_REGEX_CAPTURING_BROKEN = g === ''; +}); + +// Special Elements (can contain anything) +var isPlainTextElement = makeMap('script,style,textarea', true); +var reCache = {}; + +var decodingMap = { + '<': '<', + '>': '>', + '"': '"', + '&': '&', + ' ': '\n', + ' ': '\t' +}; +var encodedAttr = /&(?:lt|gt|quot|amp);/g; +var encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#10|#9);/g; + +// #5992 +var isIgnoreNewlineTag = makeMap('pre,textarea', true); +var shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\n'; }; + +function decodeAttr (value, shouldDecodeNewlines) { + var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr; + return value.replace(re, function (match) { return decodingMap[match]; }) +} + +function parseHTML (html, options) { + var stack = []; + var expectHTML = options.expectHTML; + var isUnaryTag$$1 = options.isUnaryTag || no; + var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no; + var index = 0; + var last, lastTag; + while (html) { + last = html; + // Make sure we're not in a plaintext content element like script/style + if (!lastTag || !isPlainTextElement(lastTag)) { + var textEnd = html.indexOf('<'); + if (textEnd === 0) { + // Comment: + if (comment.test(html)) { + var commentEnd = html.indexOf('-->'); + + if (commentEnd >= 0) { + if (options.shouldKeepComment) { + options.comment(html.substring(4, commentEnd)); + } + advance(commentEnd + 3); + continue + } + } + + // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment + if (conditionalComment.test(html)) { + var conditionalEnd = html.indexOf(']>'); + + if (conditionalEnd >= 0) { + advance(conditionalEnd + 2); + continue + } + } + + // Doctype: + var doctypeMatch = html.match(doctype); + if (doctypeMatch) { + advance(doctypeMatch[0].length); + continue + } + + // End tag: + var endTagMatch = html.match(endTag); + if (endTagMatch) { + var curIndex = index; + advance(endTagMatch[0].length); + parseEndTag(endTagMatch[1], curIndex, index); + continue + } + + // Start tag: + var startTagMatch = parseStartTag(); + if (startTagMatch) { + handleStartTag(startTagMatch); + if (shouldIgnoreFirstNewline(lastTag, html)) { + advance(1); + } + continue + } + } + + var text = (void 0), rest = (void 0), next = (void 0); + if (textEnd >= 0) { + rest = html.slice(textEnd); + while ( + !endTag.test(rest) && + !startTagOpen.test(rest) && + !comment.test(rest) && + !conditionalComment.test(rest) + ) { + // < in plain text, be forgiving and treat it as text + next = rest.indexOf('<', 1); + if (next < 0) { break } + textEnd += next; + rest = html.slice(textEnd); + } + text = html.substring(0, textEnd); + advance(textEnd); + } + + if (textEnd < 0) { + text = html; + html = ''; + } + + if (options.chars && text) { + options.chars(text); + } + } else { + var endTagLength = 0; + var stackedTag = lastTag.toLowerCase(); + var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\s\\S]*?)(</' + stackedTag + '[^>]*>)', 'i')); + var rest$1 = html.replace(reStackedTag, function (all, text, endTag) { + endTagLength = endTag.length; + if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') { + text = text + .replace(/<!--([\s\S]*?)-->/g, '$1') + .replace(/<!\[CDATA\[([\s\S]*?)]]>/g, '$1'); + } + if (shouldIgnoreFirstNewline(stackedTag, text)) { + text = text.slice(1); + } + if (options.chars) { + options.chars(text); + } + return '' + }); + index += html.length - rest$1.length; + html = rest$1; + parseEndTag(stackedTag, index - endTagLength, index); + } + + if (html === last) { + options.chars && options.chars(html); + if (false) { + options.warn(("Mal-formatted tag at end of template: \"" + html + "\"")); + } + break + } + } + + // Clean up any remaining tags + parseEndTag(); + + function advance (n) { + index += n; + html = html.substring(n); + } + + function parseStartTag () { + var start = html.match(startTagOpen); + if (start) { + var match = { + tagName: start[1], + attrs: [], + start: index + }; + advance(start[0].length); + var end, attr; + while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) { + advance(attr[0].length); + match.attrs.push(attr); + } + if (end) { + match.unarySlash = end[1]; + advance(end[0].length); + match.end = index; + return match + } + } + } + + function handleStartTag (match) { + var tagName = match.tagName; + var unarySlash = match.unarySlash; + + if (expectHTML) { + if (lastTag === 'p' && isNonPhrasingTag(tagName)) { + parseEndTag(lastTag); + } + if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) { + parseEndTag(tagName); + } + } + + var unary = isUnaryTag$$1(tagName) || !!unarySlash; + + var l = match.attrs.length; + var attrs = new Array(l); + for (var i = 0; i < l; i++) { + var args = match.attrs[i]; + // hackish work around FF bug https://bugzilla.mozilla.org/show_bug.cgi?id=369778 + if (IS_REGEX_CAPTURING_BROKEN && args[0].indexOf('""') === -1) { + if (args[3] === '') { delete args[3]; } + if (args[4] === '') { delete args[4]; } + if (args[5] === '') { delete args[5]; } + } + var value = args[3] || args[4] || args[5] || ''; + var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href' + ? options.shouldDecodeNewlinesForHref + : options.shouldDecodeNewlines; + attrs[i] = { + name: args[1], + value: decodeAttr(value, shouldDecodeNewlines) + }; + } + + if (!unary) { + stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs }); + lastTag = tagName; + } + + if (options.start) { + options.start(tagName, attrs, unary, match.start, match.end); + } + } + + function parseEndTag (tagName, start, end) { + var pos, lowerCasedTagName; + if (start == null) { start = index; } + if (end == null) { end = index; } + + if (tagName) { + lowerCasedTagName = tagName.toLowerCase(); + } + + // Find the closest opened tag of the same type + if (tagName) { + for (pos = stack.length - 1; pos >= 0; pos--) { + if (stack[pos].lowerCasedTag === lowerCasedTagName) { + break + } + } + } else { + // If no tag name is provided, clean shop + pos = 0; + } + + if (pos >= 0) { + // Close all the open elements, up the stack + for (var i = stack.length - 1; i >= pos; i--) { + if (false + ) { + options.warn( + ("tag <" + (stack[i].tag) + "> has no matching end tag.") + ); + } + if (options.end) { + options.end(stack[i].tag, start, end); + } + } + + // Remove the open elements from the stack + stack.length = pos; + lastTag = pos && stack[pos - 1].tag; + } else if (lowerCasedTagName === 'br') { + if (options.start) { + options.start(tagName, [], true, start, end); + } + } else if (lowerCasedTagName === 'p') { + if (options.start) { + options.start(tagName, [], false, start, end); + } + if (options.end) { + options.end(tagName, start, end); + } + } + } +} + +/* */ + +var onRE = /^@|^v-on:/; +var dirRE = /^v-|^@|^:/; +var forAliasRE = /(.*?)\s+(?:in|of)\s+(.*)/; +var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; +var stripParensRE = /^\(|\)$/g; + +var argRE = /:(.*)$/; +var bindRE = /^:|^v-bind:/; +var modifierRE = /\.[^.]+/g; + +var decodeHTMLCached = cached(he.decode); + +// configurable state +var warn$2; +var delimiters; +var transforms; +var preTransforms; +var postTransforms; +var platformIsPreTag; +var platformMustUseProp; +var platformGetTagNamespace; + + + +function createASTElement ( + tag, + attrs, + parent +) { + return { + type: 1, + tag: tag, + attrsList: attrs, + attrsMap: makeAttrsMap(attrs), + parent: parent, + children: [] + } +} + +/** + * Convert HTML string to AST. + */ +function parse ( + template, + options +) { + warn$2 = options.warn || baseWarn; + + platformIsPreTag = options.isPreTag || no; + platformMustUseProp = options.mustUseProp || no; + platformGetTagNamespace = options.getTagNamespace || no; + + transforms = pluckModuleFunction(options.modules, 'transformNode'); + preTransforms = pluckModuleFunction(options.modules, 'preTransformNode'); + postTransforms = pluckModuleFunction(options.modules, 'postTransformNode'); + + delimiters = options.delimiters; + + var stack = []; + var preserveWhitespace = options.preserveWhitespace !== false; + var root; + var currentParent; + var inVPre = false; + var inPre = false; + var warned = false; + + function warnOnce (msg) { + if (!warned) { + warned = true; + warn$2(msg); + } + } + + function closeElement (element) { + // check pre state + if (element.pre) { + inVPre = false; + } + if (platformIsPreTag(element.tag)) { + inPre = false; + } + // apply post-transforms + for (var i = 0; i < postTransforms.length; i++) { + postTransforms[i](element, options); + } + } + + parseHTML(template, { + warn: warn$2, + expectHTML: options.expectHTML, + isUnaryTag: options.isUnaryTag, + canBeLeftOpenTag: options.canBeLeftOpenTag, + shouldDecodeNewlines: options.shouldDecodeNewlines, + shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref, + shouldKeepComment: options.comments, + start: function start (tag, attrs, unary) { + // check namespace. + // inherit parent ns if there is one + var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag); + + // handle IE svg bug + /* istanbul ignore if */ + if (isIE && ns === 'svg') { + attrs = guardIESVGBug(attrs); + } + + var element = createASTElement(tag, attrs, currentParent); + if (ns) { + element.ns = ns; + } + + if (isForbiddenTag(element) && !isServerRendering()) { + element.forbidden = true; + "production" !== 'production' && warn$2( + 'Templates should only be responsible for mapping the state to the ' + + 'UI. Avoid placing tags with side-effects in your templates, such as ' + + "<" + tag + ">" + ', as they will not be parsed.' + ); + } + + // apply pre-transforms + for (var i = 0; i < preTransforms.length; i++) { + element = preTransforms[i](element, options) || element; + } + + if (!inVPre) { + processPre(element); + if (element.pre) { + inVPre = true; + } + } + if (platformIsPreTag(element.tag)) { + inPre = true; + } + if (inVPre) { + processRawAttrs(element); + } else if (!element.processed) { + // structural directives + processFor(element); + processIf(element); + processOnce(element); + // element-scope stuff + processElement(element, options); + } + + function checkRootConstraints (el) { + if (false) { + if (el.tag === 'slot' || el.tag === 'template') { + warnOnce( + "Cannot use <" + (el.tag) + "> as component root element because it may " + + 'contain multiple nodes.' + ); + } + if (el.attrsMap.hasOwnProperty('v-for')) { + warnOnce( + 'Cannot use v-for on stateful component root element because ' + + 'it renders multiple elements.' + ); + } + } + } + + // tree management + if (!root) { + root = element; + checkRootConstraints(root); + } else if (!stack.length) { + // allow root elements with v-if, v-else-if and v-else + if (root.if && (element.elseif || element.else)) { + checkRootConstraints(element); + addIfCondition(root, { + exp: element.elseif, + block: element + }); + } else if (false) { + warnOnce( + "Component template should contain exactly one root element. " + + "If you are using v-if on multiple elements, " + + "use v-else-if to chain them instead." + ); + } + } + if (currentParent && !element.forbidden) { + if (element.elseif || element.else) { + processIfConditions(element, currentParent); + } else if (element.slotScope) { // scoped slot + currentParent.plain = false; + var name = element.slotTarget || '"default"';(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element; + } else { + currentParent.children.push(element); + element.parent = currentParent; + } + } + if (!unary) { + currentParent = element; + stack.push(element); + } else { + closeElement(element); + } + }, + + end: function end () { + // remove trailing whitespace + var element = stack[stack.length - 1]; + var lastNode = element.children[element.children.length - 1]; + if (lastNode && lastNode.type === 3 && lastNode.text === ' ' && !inPre) { + element.children.pop(); + } + // pop stack + stack.length -= 1; + currentParent = stack[stack.length - 1]; + closeElement(element); + }, + + chars: function chars (text) { + if (!currentParent) { + if (false) { + if (text === template) { + warnOnce( + 'Component template requires a root element, rather than just text.' + ); + } else if ((text = text.trim())) { + warnOnce( + ("text \"" + text + "\" outside root element will be ignored.") + ); + } + } + return + } + // IE textarea placeholder bug + /* istanbul ignore if */ + if (isIE && + currentParent.tag === 'textarea' && + currentParent.attrsMap.placeholder === text + ) { + return + } + var children = currentParent.children; + text = inPre || text.trim() + ? isTextTag(currentParent) ? text : decodeHTMLCached(text) + // only preserve whitespace if its not right after a starting tag + : preserveWhitespace && children.length ? ' ' : ''; + if (text) { + var res; + if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) { + children.push({ + type: 2, + expression: res.expression, + tokens: res.tokens, + text: text + }); + } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') { + children.push({ + type: 3, + text: text + }); + } + } + }, + comment: function comment (text) { + currentParent.children.push({ + type: 3, + text: text, + isComment: true + }); + } + }); + return root +} + +function processPre (el) { + if (getAndRemoveAttr(el, 'v-pre') != null) { + el.pre = true; + } +} + +function processRawAttrs (el) { + var l = el.attrsList.length; + if (l) { + var attrs = el.attrs = new Array(l); + for (var i = 0; i < l; i++) { + attrs[i] = { + name: el.attrsList[i].name, + value: JSON.stringify(el.attrsList[i].value) + }; + } + } else if (!el.pre) { + // non root node in pre blocks with no attributes + el.plain = true; + } +} + +function processElement (element, options) { + processKey(element); + + // determine whether this is a plain element after + // removing structural attributes + element.plain = !element.key && !element.attrsList.length; + + processRef(element); + processSlot(element); + processComponent(element); + for (var i = 0; i < transforms.length; i++) { + element = transforms[i](element, options) || element; + } + processAttrs(element); +} + +function processKey (el) { + var exp = getBindingAttr(el, 'key'); + if (exp) { + if (false) { + warn$2("<template> cannot be keyed. Place the key on real elements instead."); + } + el.key = exp; + } +} + +function processRef (el) { + var ref = getBindingAttr(el, 'ref'); + if (ref) { + el.ref = ref; + el.refInFor = checkInFor(el); + } +} + +function processFor (el) { + var exp; + if ((exp = getAndRemoveAttr(el, 'v-for'))) { + var res = parseFor(exp); + if (res) { + extend(el, res); + } else if (false) { + warn$2( + ("Invalid v-for expression: " + exp) + ); + } + } +} + +function parseFor (exp) { + var inMatch = exp.match(forAliasRE); + if (!inMatch) { return } + var res = {}; + res.for = inMatch[2].trim(); + var alias = inMatch[1].trim().replace(stripParensRE, ''); + var iteratorMatch = alias.match(forIteratorRE); + if (iteratorMatch) { + res.alias = alias.replace(forIteratorRE, ''); + res.iterator1 = iteratorMatch[1].trim(); + if (iteratorMatch[2]) { + res.iterator2 = iteratorMatch[2].trim(); + } + } else { + res.alias = alias; + } + return res +} + +function processIf (el) { + var exp = getAndRemoveAttr(el, 'v-if'); + if (exp) { + el.if = exp; + addIfCondition(el, { + exp: exp, + block: el + }); + } else { + if (getAndRemoveAttr(el, 'v-else') != null) { + el.else = true; + } + var elseif = getAndRemoveAttr(el, 'v-else-if'); + if (elseif) { + el.elseif = elseif; + } + } +} + +function processIfConditions (el, parent) { + var prev = findPrevElement(parent.children); + if (prev && prev.if) { + addIfCondition(prev, { + exp: el.elseif, + block: el + }); + } else if (false) { + warn$2( + "v-" + (el.elseif ? ('else-if="' + el.elseif + '"') : 'else') + " " + + "used on element <" + (el.tag) + "> without corresponding v-if." + ); + } +} + +function findPrevElement (children) { + var i = children.length; + while (i--) { + if (children[i].type === 1) { + return children[i] + } else { + if (false) { + warn$2( + "text \"" + (children[i].text.trim()) + "\" between v-if and v-else(-if) " + + "will be ignored." + ); + } + children.pop(); + } + } +} + +function addIfCondition (el, condition) { + if (!el.ifConditions) { + el.ifConditions = []; + } + el.ifConditions.push(condition); +} + +function processOnce (el) { + var once$$1 = getAndRemoveAttr(el, 'v-once'); + if (once$$1 != null) { + el.once = true; + } +} + +function processSlot (el) { + if (el.tag === 'slot') { + el.slotName = getBindingAttr(el, 'name'); + if (false) { + warn$2( + "`key` does not work on <slot> because slots are abstract outlets " + + "and can possibly expand into multiple elements. " + + "Use the key on a wrapping element instead." + ); + } + } else { + var slotScope; + if (el.tag === 'template') { + slotScope = getAndRemoveAttr(el, 'scope'); + /* istanbul ignore if */ + if (false) { + warn$2( + "the \"scope\" attribute for scoped slots have been deprecated and " + + "replaced by \"slot-scope\" since 2.5. The new \"slot-scope\" attribute " + + "can also be used on plain elements in addition to <template> to " + + "denote scoped slots.", + true + ); + } + el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope'); + } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) { + /* istanbul ignore if */ + if (false) { + warn$2( + "Ambiguous combined usage of slot-scope and v-for on <" + (el.tag) + "> " + + "(v-for takes higher priority). Use a wrapper <template> for the " + + "scoped slot to make it clearer.", + true + ); + } + el.slotScope = slotScope; + } + var slotTarget = getBindingAttr(el, 'slot'); + if (slotTarget) { + el.slotTarget = slotTarget === '""' ? '"default"' : slotTarget; + // preserve slot as an attribute for native shadow DOM compat + // only for non-scoped slots. + if (el.tag !== 'template' && !el.slotScope) { + addAttr(el, 'slot', slotTarget); + } + } + } +} + +function processComponent (el) { + var binding; + if ((binding = getBindingAttr(el, 'is'))) { + el.component = binding; + } + if (getAndRemoveAttr(el, 'inline-template') != null) { + el.inlineTemplate = true; + } +} + +function processAttrs (el) { + var list = el.attrsList; + var i, l, name, rawName, value, modifiers, isProp; + for (i = 0, l = list.length; i < l; i++) { + name = rawName = list[i].name; + value = list[i].value; + if (dirRE.test(name)) { + // mark element as dynamic + el.hasBindings = true; + // modifiers + modifiers = parseModifiers(name); + if (modifiers) { + name = name.replace(modifierRE, ''); + } + if (bindRE.test(name)) { // v-bind + name = name.replace(bindRE, ''); + value = parseFilters(value); + isProp = false; + if (modifiers) { + if (modifiers.prop) { + isProp = true; + name = camelize(name); + if (name === 'innerHtml') { name = 'innerHTML'; } + } + if (modifiers.camel) { + name = camelize(name); + } + if (modifiers.sync) { + addHandler( + el, + ("update:" + (camelize(name))), + genAssignmentCode(value, "$event") + ); + } + } + if (isProp || ( + !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name) + )) { + addProp(el, name, value); + } else { + addAttr(el, name, value); + } + } else if (onRE.test(name)) { // v-on + name = name.replace(onRE, ''); + addHandler(el, name, value, modifiers, false, warn$2); + } else { // normal directives + name = name.replace(dirRE, ''); + // parse arg + var argMatch = name.match(argRE); + var arg = argMatch && argMatch[1]; + if (arg) { + name = name.slice(0, -(arg.length + 1)); + } + addDirective(el, name, rawName, value, arg, modifiers); + if (false) { + checkForAliasModel(el, value); + } + } + } else { + // literal attribute + if (false) { + var res = parseText(value, delimiters); + if (res) { + warn$2( + name + "=\"" + value + "\": " + + 'Interpolation inside attributes has been removed. ' + + 'Use v-bind or the colon shorthand instead. For example, ' + + 'instead of <div id="{{ val }}">, use <div :id="val">.' + ); + } + } + addAttr(el, name, JSON.stringify(value)); + // #6887 firefox doesn't update muted state if set via attribute + // even immediately after element creation + if (!el.component && + name === 'muted' && + platformMustUseProp(el.tag, el.attrsMap.type, name)) { + addProp(el, name, 'true'); + } + } + } +} + +function checkInFor (el) { + var parent = el; + while (parent) { + if (parent.for !== undefined) { + return true + } + parent = parent.parent; + } + return false +} + +function parseModifiers (name) { + var match = name.match(modifierRE); + if (match) { + var ret = {}; + match.forEach(function (m) { ret[m.slice(1)] = true; }); + return ret + } +} + +function makeAttrsMap (attrs) { + var map = {}; + for (var i = 0, l = attrs.length; i < l; i++) { + if ( + false + ) { + warn$2('duplicate attribute: ' + attrs[i].name); + } + map[attrs[i].name] = attrs[i].value; + } + return map +} + +// for script (e.g. type="x/template") or style, do not decode content +function isTextTag (el) { + return el.tag === 'script' || el.tag === 'style' +} + +function isForbiddenTag (el) { + return ( + el.tag === 'style' || + (el.tag === 'script' && ( + !el.attrsMap.type || + el.attrsMap.type === 'text/javascript' + )) + ) +} + +var ieNSBug = /^xmlns:NS\d+/; +var ieNSPrefix = /^NS\d+:/; + +/* istanbul ignore next */ +function guardIESVGBug (attrs) { + var res = []; + for (var i = 0; i < attrs.length; i++) { + var attr = attrs[i]; + if (!ieNSBug.test(attr.name)) { + attr.name = attr.name.replace(ieNSPrefix, ''); + res.push(attr); + } + } + return res +} + +function checkForAliasModel (el, value) { + var _el = el; + while (_el) { + if (_el.for && _el.alias === value) { + warn$2( + "<" + (el.tag) + " v-model=\"" + value + "\">: " + + "You are binding v-model directly to a v-for iteration alias. " + + "This will not be able to modify the v-for source array because " + + "writing to the alias is like modifying a function local variable. " + + "Consider using an array of objects and use v-model on an object property instead." + ); + } + _el = _el.parent; + } +} + +/* */ + +/** + * Expand input[v-model] with dyanmic type bindings into v-if-else chains + * Turn this: + * <input v-model="data[type]" :type="type"> + * into this: + * <input v-if="type === 'checkbox'" type="checkbox" v-model="data[type]"> + * <input v-else-if="type === 'radio'" type="radio" v-model="data[type]"> + * <input v-else :type="type" v-model="data[type]"> + */ + +function preTransformNode (el, options) { + if (el.tag === 'input') { + var map = el.attrsMap; + if (map['v-model'] && (map['v-bind:type'] || map[':type'])) { + var typeBinding = getBindingAttr(el, 'type'); + var ifCondition = getAndRemoveAttr(el, 'v-if', true); + var ifConditionExtra = ifCondition ? ("&&(" + ifCondition + ")") : ""; + var hasElse = getAndRemoveAttr(el, 'v-else', true) != null; + var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true); + // 1. checkbox + var branch0 = cloneASTElement(el); + // process for on the main node + processFor(branch0); + addRawAttr(branch0, 'type', 'checkbox'); + processElement(branch0, options); + branch0.processed = true; // prevent it from double-processed + branch0.if = "(" + typeBinding + ")==='checkbox'" + ifConditionExtra; + addIfCondition(branch0, { + exp: branch0.if, + block: branch0 + }); + // 2. add radio else-if condition + var branch1 = cloneASTElement(el); + getAndRemoveAttr(branch1, 'v-for', true); + addRawAttr(branch1, 'type', 'radio'); + processElement(branch1, options); + addIfCondition(branch0, { + exp: "(" + typeBinding + ")==='radio'" + ifConditionExtra, + block: branch1 + }); + // 3. other + var branch2 = cloneASTElement(el); + getAndRemoveAttr(branch2, 'v-for', true); + addRawAttr(branch2, ':type', typeBinding); + processElement(branch2, options); + addIfCondition(branch0, { + exp: ifCondition, + block: branch2 + }); + + if (hasElse) { + branch0.else = true; + } else if (elseIfCondition) { + branch0.elseif = elseIfCondition; + } + + return branch0 + } + } +} + +function cloneASTElement (el) { + return createASTElement(el.tag, el.attrsList.slice(), el.parent) +} + +var model$2 = { + preTransformNode: preTransformNode +}; + +var modules$1 = [ + klass$1, + style$1, + model$2 +]; + +/* */ + +function text (el, dir) { + if (dir.value) { + addProp(el, 'textContent', ("_s(" + (dir.value) + ")")); + } +} + +/* */ + +function html (el, dir) { + if (dir.value) { + addProp(el, 'innerHTML', ("_s(" + (dir.value) + ")")); + } +} + +var directives$1 = { + model: model, + text: text, + html: html +}; + +/* */ + +var baseOptions = { + expectHTML: true, + modules: modules$1, + directives: directives$1, + isPreTag: isPreTag, + isUnaryTag: isUnaryTag, + mustUseProp: mustUseProp, + canBeLeftOpenTag: canBeLeftOpenTag, + isReservedTag: isReservedTag, + getTagNamespace: getTagNamespace, + staticKeys: genStaticKeys(modules$1) +}; + +/* */ + +var isStaticKey; +var isPlatformReservedTag; + +var genStaticKeysCached = cached(genStaticKeys$1); + +/** + * Goal of the optimizer: walk the generated template AST tree + * and detect sub-trees that are purely static, i.e. parts of + * the DOM that never needs to change. + * + * Once we detect these sub-trees, we can: + * + * 1. Hoist them into constants, so that we no longer need to + * create fresh nodes for them on each re-render; + * 2. Completely skip them in the patching process. + */ +function optimize (root, options) { + if (!root) { return } + isStaticKey = genStaticKeysCached(options.staticKeys || ''); + isPlatformReservedTag = options.isReservedTag || no; + // first pass: mark all non-static nodes. + markStatic$1(root); + // second pass: mark static roots. + markStaticRoots(root, false); +} + +function genStaticKeys$1 (keys) { + return makeMap( + 'type,tag,attrsList,attrsMap,plain,parent,children,attrs' + + (keys ? ',' + keys : '') + ) +} + +function markStatic$1 (node) { + node.static = isStatic(node); + if (node.type === 1) { + // do not make component slot content static. this avoids + // 1. components not able to mutate slot nodes + // 2. static slot content fails for hot-reloading + if ( + !isPlatformReservedTag(node.tag) && + node.tag !== 'slot' && + node.attrsMap['inline-template'] == null + ) { + return + } + for (var i = 0, l = node.children.length; i < l; i++) { + var child = node.children[i]; + markStatic$1(child); + if (!child.static) { + node.static = false; + } + } + if (node.ifConditions) { + for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) { + var block = node.ifConditions[i$1].block; + markStatic$1(block); + if (!block.static) { + node.static = false; + } + } + } + } +} + +function markStaticRoots (node, isInFor) { + if (node.type === 1) { + if (node.static || node.once) { + node.staticInFor = isInFor; + } + // For a node to qualify as a static root, it should have children that + // are not just static text. Otherwise the cost of hoisting out will + // outweigh the benefits and it's better off to just always render it fresh. + if (node.static && node.children.length && !( + node.children.length === 1 && + node.children[0].type === 3 + )) { + node.staticRoot = true; + return + } else { + node.staticRoot = false; + } + if (node.children) { + for (var i = 0, l = node.children.length; i < l; i++) { + markStaticRoots(node.children[i], isInFor || !!node.for); + } + } + if (node.ifConditions) { + for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) { + markStaticRoots(node.ifConditions[i$1].block, isInFor); + } + } + } +} + +function isStatic (node) { + if (node.type === 2) { // expression + return false + } + if (node.type === 3) { // text + return true + } + return !!(node.pre || ( + !node.hasBindings && // no dynamic bindings + !node.if && !node.for && // not v-if or v-for or v-else + !isBuiltInTag(node.tag) && // not a built-in + isPlatformReservedTag(node.tag) && // not a component + !isDirectChildOfTemplateFor(node) && + Object.keys(node).every(isStaticKey) + )) +} + +function isDirectChildOfTemplateFor (node) { + while (node.parent) { + node = node.parent; + if (node.tag !== 'template') { + return false + } + if (node.for) { + return true + } + } + return false +} + +/* */ + +var fnExpRE = /^\s*([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/; +var simplePathRE = /^\s*[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['.*?']|\[".*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*\s*$/; + +// keyCode aliases +var keyCodes = { + esc: 27, + tab: 9, + enter: 13, + space: 32, + up: 38, + left: 37, + right: 39, + down: 40, + 'delete': [8, 46] +}; + +// #4868: modifiers that prevent the execution of the listener +// need to explicitly return null so that we can determine whether to remove +// the listener for .once +var genGuard = function (condition) { return ("if(" + condition + ")return null;"); }; + +var modifierCode = { + stop: '$event.stopPropagation();', + prevent: '$event.preventDefault();', + self: genGuard("$event.target !== $event.currentTarget"), + ctrl: genGuard("!$event.ctrlKey"), + shift: genGuard("!$event.shiftKey"), + alt: genGuard("!$event.altKey"), + meta: genGuard("!$event.metaKey"), + left: genGuard("'button' in $event && $event.button !== 0"), + middle: genGuard("'button' in $event && $event.button !== 1"), + right: genGuard("'button' in $event && $event.button !== 2") +}; + +function genHandlers ( + events, + isNative, + warn +) { + var res = isNative ? 'nativeOn:{' : 'on:{'; + for (var name in events) { + res += "\"" + name + "\":" + (genHandler(name, events[name])) + ","; + } + return res.slice(0, -1) + '}' +} + +function genHandler ( + name, + handler +) { + if (!handler) { + return 'function(){}' + } + + if (Array.isArray(handler)) { + return ("[" + (handler.map(function (handler) { return genHandler(name, handler); }).join(',')) + "]") + } + + var isMethodPath = simplePathRE.test(handler.value); + var isFunctionExpression = fnExpRE.test(handler.value); + + if (!handler.modifiers) { + if (isMethodPath || isFunctionExpression) { + return handler.value + } + /* istanbul ignore if */ + return ("function($event){" + (handler.value) + "}") // inline statement + } else { + var code = ''; + var genModifierCode = ''; + var keys = []; + for (var key in handler.modifiers) { + if (modifierCode[key]) { + genModifierCode += modifierCode[key]; + // left/right + if (keyCodes[key]) { + keys.push(key); + } + } else if (key === 'exact') { + var modifiers = (handler.modifiers); + genModifierCode += genGuard( + ['ctrl', 'shift', 'alt', 'meta'] + .filter(function (keyModifier) { return !modifiers[keyModifier]; }) + .map(function (keyModifier) { return ("$event." + keyModifier + "Key"); }) + .join('||') + ); + } else { + keys.push(key); + } + } + if (keys.length) { + code += genKeyFilter(keys); + } + // Make sure modifiers like prevent and stop get executed after key filtering + if (genModifierCode) { + code += genModifierCode; + } + var handlerCode = isMethodPath + ? handler.value + '($event)' + : isFunctionExpression + ? ("(" + (handler.value) + ")($event)") + : handler.value; + /* istanbul ignore if */ + return ("function($event){" + code + handlerCode + "}") + } +} + +function genKeyFilter (keys) { + return ("if(!('button' in $event)&&" + (keys.map(genFilterCode).join('&&')) + ")return null;") +} + +function genFilterCode (key) { + var keyVal = parseInt(key, 10); + if (keyVal) { + return ("$event.keyCode!==" + keyVal) + } + var code = keyCodes[key]; + return ( + "_k($event.keyCode," + + (JSON.stringify(key)) + "," + + (JSON.stringify(code)) + "," + + "$event.key)" + ) +} + +/* */ + +function on (el, dir) { + if (false) { + warn("v-on without argument does not support modifiers."); + } + el.wrapListeners = function (code) { return ("_g(" + code + "," + (dir.value) + ")"); }; +} + +/* */ + +function bind$1 (el, dir) { + el.wrapData = function (code) { + return ("_b(" + code + ",'" + (el.tag) + "'," + (dir.value) + "," + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + ")") + }; +} + +/* */ + +var baseDirectives = { + on: on, + bind: bind$1, + cloak: noop +}; + +/* */ + +var CodegenState = function CodegenState (options) { + this.options = options; + this.warn = options.warn || baseWarn; + this.transforms = pluckModuleFunction(options.modules, 'transformCode'); + this.dataGenFns = pluckModuleFunction(options.modules, 'genData'); + this.directives = extend(extend({}, baseDirectives), options.directives); + var isReservedTag = options.isReservedTag || no; + this.maybeComponent = function (el) { return !isReservedTag(el.tag); }; + this.onceId = 0; + this.staticRenderFns = []; +}; + + + +function generate ( + ast, + options +) { + var state = new CodegenState(options); + var code = ast ? genElement(ast, state) : '_c("div")'; + return { + render: ("with(this){return " + code + "}"), + staticRenderFns: state.staticRenderFns + } +} + +function genElement (el, state) { + if (el.staticRoot && !el.staticProcessed) { + return genStatic(el, state) + } else if (el.once && !el.onceProcessed) { + return genOnce(el, state) + } else if (el.for && !el.forProcessed) { + return genFor(el, state) + } else if (el.if && !el.ifProcessed) { + return genIf(el, state) + } else if (el.tag === 'template' && !el.slotTarget) { + return genChildren(el, state) || 'void 0' + } else if (el.tag === 'slot') { + return genSlot(el, state) + } else { + // component or element + var code; + if (el.component) { + code = genComponent(el.component, el, state); + } else { + var data = el.plain ? undefined : genData$2(el, state); + + var children = el.inlineTemplate ? null : genChildren(el, state, true); + code = "_c('" + (el.tag) + "'" + (data ? ("," + data) : '') + (children ? ("," + children) : '') + ")"; + } + // module transforms + for (var i = 0; i < state.transforms.length; i++) { + code = state.transforms[i](el, code); + } + return code + } +} + +// hoist static sub-trees out +function genStatic (el, state) { + el.staticProcessed = true; + state.staticRenderFns.push(("with(this){return " + (genElement(el, state)) + "}")); + return ("_m(" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + ")") +} + +// v-once +function genOnce (el, state) { + el.onceProcessed = true; + if (el.if && !el.ifProcessed) { + return genIf(el, state) + } else if (el.staticInFor) { + var key = ''; + var parent = el.parent; + while (parent) { + if (parent.for) { + key = parent.key; + break + } + parent = parent.parent; + } + if (!key) { + "production" !== 'production' && state.warn( + "v-once can only be used inside v-for that is keyed. " + ); + return genElement(el, state) + } + return ("_o(" + (genElement(el, state)) + "," + (state.onceId++) + "," + key + ")") + } else { + return genStatic(el, state) + } +} + +function genIf ( + el, + state, + altGen, + altEmpty +) { + el.ifProcessed = true; // avoid recursion + return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty) +} + +function genIfConditions ( + conditions, + state, + altGen, + altEmpty +) { + if (!conditions.length) { + return altEmpty || '_e()' + } + + var condition = conditions.shift(); + if (condition.exp) { + return ("(" + (condition.exp) + ")?" + (genTernaryExp(condition.block)) + ":" + (genIfConditions(conditions, state, altGen, altEmpty))) + } else { + return ("" + (genTernaryExp(condition.block))) + } + + // v-if with v-once should generate code like (a)?_m(0):_m(1) + function genTernaryExp (el) { + return altGen + ? altGen(el, state) + : el.once + ? genOnce(el, state) + : genElement(el, state) + } +} + +function genFor ( + el, + state, + altGen, + altHelper +) { + var exp = el.for; + var alias = el.alias; + var iterator1 = el.iterator1 ? ("," + (el.iterator1)) : ''; + var iterator2 = el.iterator2 ? ("," + (el.iterator2)) : ''; + + if (false + ) { + state.warn( + "<" + (el.tag) + " v-for=\"" + alias + " in " + exp + "\">: component lists rendered with " + + "v-for should have explicit keys. " + + "See https://vuejs.org/guide/list.html#key for more info.", + true /* tip */ + ); + } + + el.forProcessed = true; // avoid recursion + return (altHelper || '_l') + "((" + exp + ")," + + "function(" + alias + iterator1 + iterator2 + "){" + + "return " + ((altGen || genElement)(el, state)) + + '})' +} + +function genData$2 (el, state) { + var data = '{'; + + // directives first. + // directives may mutate the el's other properties before they are generated. + var dirs = genDirectives(el, state); + if (dirs) { data += dirs + ','; } + + // key + if (el.key) { + data += "key:" + (el.key) + ","; + } + // ref + if (el.ref) { + data += "ref:" + (el.ref) + ","; + } + if (el.refInFor) { + data += "refInFor:true,"; + } + // pre + if (el.pre) { + data += "pre:true,"; + } + // record original tag name for components using "is" attribute + if (el.component) { + data += "tag:\"" + (el.tag) + "\","; + } + // module data generation functions + for (var i = 0; i < state.dataGenFns.length; i++) { + data += state.dataGenFns[i](el); + } + // attributes + if (el.attrs) { + data += "attrs:{" + (genProps(el.attrs)) + "},"; + } + // DOM props + if (el.props) { + data += "domProps:{" + (genProps(el.props)) + "},"; + } + // event handlers + if (el.events) { + data += (genHandlers(el.events, false, state.warn)) + ","; + } + if (el.nativeEvents) { + data += (genHandlers(el.nativeEvents, true, state.warn)) + ","; + } + // slot target + // only for non-scoped slots + if (el.slotTarget && !el.slotScope) { + data += "slot:" + (el.slotTarget) + ","; + } + // scoped slots + if (el.scopedSlots) { + data += (genScopedSlots(el.scopedSlots, state)) + ","; + } + // component v-model + if (el.model) { + data += "model:{value:" + (el.model.value) + ",callback:" + (el.model.callback) + ",expression:" + (el.model.expression) + "},"; + } + // inline-template + if (el.inlineTemplate) { + var inlineTemplate = genInlineTemplate(el, state); + if (inlineTemplate) { + data += inlineTemplate + ","; + } + } + data = data.replace(/,$/, '') + '}'; + // v-bind data wrap + if (el.wrapData) { + data = el.wrapData(data); + } + // v-on data wrap + if (el.wrapListeners) { + data = el.wrapListeners(data); + } + return data +} + +function genDirectives (el, state) { + var dirs = el.directives; + if (!dirs) { return } + var res = 'directives:['; + var hasRuntime = false; + var i, l, dir, needRuntime; + for (i = 0, l = dirs.length; i < l; i++) { + dir = dirs[i]; + needRuntime = true; + var gen = state.directives[dir.name]; + if (gen) { + // compile-time directive that manipulates AST. + // returns true if it also needs a runtime counterpart. + needRuntime = !!gen(el, dir, state.warn); + } + if (needRuntime) { + hasRuntime = true; + res += "{name:\"" + (dir.name) + "\",rawName:\"" + (dir.rawName) + "\"" + (dir.value ? (",value:(" + (dir.value) + "),expression:" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (",arg:\"" + (dir.arg) + "\"") : '') + (dir.modifiers ? (",modifiers:" + (JSON.stringify(dir.modifiers))) : '') + "},"; + } + } + if (hasRuntime) { + return res.slice(0, -1) + ']' + } +} + +function genInlineTemplate (el, state) { + var ast = el.children[0]; + if (false) { + state.warn('Inline-template components must have exactly one child element.'); + } + if (ast.type === 1) { + var inlineRenderFns = generate(ast, state.options); + return ("inlineTemplate:{render:function(){" + (inlineRenderFns.render) + "},staticRenderFns:[" + (inlineRenderFns.staticRenderFns.map(function (code) { return ("function(){" + code + "}"); }).join(',')) + "]}") + } +} + +function genScopedSlots ( + slots, + state +) { + return ("scopedSlots:_u([" + (Object.keys(slots).map(function (key) { + return genScopedSlot(key, slots[key], state) + }).join(',')) + "])") +} + +function genScopedSlot ( + key, + el, + state +) { + if (el.for && !el.forProcessed) { + return genForScopedSlot(key, el, state) + } + var fn = "function(" + (String(el.slotScope)) + "){" + + "return " + (el.tag === 'template' + ? el.if + ? ((el.if) + "?" + (genChildren(el, state) || 'undefined') + ":undefined") + : genChildren(el, state) || 'undefined' + : genElement(el, state)) + "}"; + return ("{key:" + key + ",fn:" + fn + "}") +} + +function genForScopedSlot ( + key, + el, + state +) { + var exp = el.for; + var alias = el.alias; + var iterator1 = el.iterator1 ? ("," + (el.iterator1)) : ''; + var iterator2 = el.iterator2 ? ("," + (el.iterator2)) : ''; + el.forProcessed = true; // avoid recursion + return "_l((" + exp + ")," + + "function(" + alias + iterator1 + iterator2 + "){" + + "return " + (genScopedSlot(key, el, state)) + + '})' +} + +function genChildren ( + el, + state, + checkSkip, + altGenElement, + altGenNode +) { + var children = el.children; + if (children.length) { + var el$1 = children[0]; + // optimize single v-for + if (children.length === 1 && + el$1.for && + el$1.tag !== 'template' && + el$1.tag !== 'slot' + ) { + return (altGenElement || genElement)(el$1, state) + } + var normalizationType = checkSkip + ? getNormalizationType(children, state.maybeComponent) + : 0; + var gen = altGenNode || genNode; + return ("[" + (children.map(function (c) { return gen(c, state); }).join(',')) + "]" + (normalizationType ? ("," + normalizationType) : '')) + } +} + +// determine the normalization needed for the children array. +// 0: no normalization needed +// 1: simple normalization needed (possible 1-level deep nested array) +// 2: full normalization needed +function getNormalizationType ( + children, + maybeComponent +) { + var res = 0; + for (var i = 0; i < children.length; i++) { + var el = children[i]; + if (el.type !== 1) { + continue + } + if (needsNormalization(el) || + (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) { + res = 2; + break + } + if (maybeComponent(el) || + (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) { + res = 1; + } + } + return res +} + +function needsNormalization (el) { + return el.for !== undefined || el.tag === 'template' || el.tag === 'slot' +} + +function genNode (node, state) { + if (node.type === 1) { + return genElement(node, state) + } if (node.type === 3 && node.isComment) { + return genComment(node) + } else { + return genText(node) + } +} + +function genText (text) { + return ("_v(" + (text.type === 2 + ? text.expression // no need for () because already wrapped in _s() + : transformSpecialNewlines(JSON.stringify(text.text))) + ")") +} + +function genComment (comment) { + return ("_e(" + (JSON.stringify(comment.text)) + ")") +} + +function genSlot (el, state) { + var slotName = el.slotName || '"default"'; + var children = genChildren(el, state); + var res = "_t(" + slotName + (children ? ("," + children) : ''); + var attrs = el.attrs && ("{" + (el.attrs.map(function (a) { return ((camelize(a.name)) + ":" + (a.value)); }).join(',')) + "}"); + var bind$$1 = el.attrsMap['v-bind']; + if ((attrs || bind$$1) && !children) { + res += ",null"; + } + if (attrs) { + res += "," + attrs; + } + if (bind$$1) { + res += (attrs ? '' : ',null') + "," + bind$$1; + } + return res + ')' +} + +// componentName is el.component, take it as argument to shun flow's pessimistic refinement +function genComponent ( + componentName, + el, + state +) { + var children = el.inlineTemplate ? null : genChildren(el, state, true); + return ("_c(" + componentName + "," + (genData$2(el, state)) + (children ? ("," + children) : '') + ")") +} + +function genProps (props) { + var res = ''; + for (var i = 0; i < props.length; i++) { + var prop = props[i]; + /* istanbul ignore if */ + { + res += "\"" + (prop.name) + "\":" + (transformSpecialNewlines(prop.value)) + ","; + } + } + return res.slice(0, -1) +} + +// #3895, #4268 +function transformSpecialNewlines (text) { + return text + .replace(/\u2028/g, '\\u2028') + .replace(/\u2029/g, '\\u2029') +} + +/* */ + +// these keywords should not appear inside expressions, but operators like +// typeof, instanceof and in are allowed +var prohibitedKeywordRE = new RegExp('\\b' + ( + 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' + + 'super,throw,while,yield,delete,export,import,return,switch,default,' + + 'extends,finally,continue,debugger,function,arguments' +).split(',').join('\\b|\\b') + '\\b'); + +// these unary operators should not be used as property/method names +var unaryOperatorsRE = new RegExp('\\b' + ( + 'delete,typeof,void' +).split(',').join('\\s*\\([^\\)]*\\)|\\b') + '\\s*\\([^\\)]*\\)'); + +// strip strings in expressions +var stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g; + +// detect problematic expressions in a template +function detectErrors (ast) { + var errors = []; + if (ast) { + checkNode(ast, errors); + } + return errors +} + +function checkNode (node, errors) { + if (node.type === 1) { + for (var name in node.attrsMap) { + if (dirRE.test(name)) { + var value = node.attrsMap[name]; + if (value) { + if (name === 'v-for') { + checkFor(node, ("v-for=\"" + value + "\""), errors); + } else if (onRE.test(name)) { + checkEvent(value, (name + "=\"" + value + "\""), errors); + } else { + checkExpression(value, (name + "=\"" + value + "\""), errors); + } + } + } + } + if (node.children) { + for (var i = 0; i < node.children.length; i++) { + checkNode(node.children[i], errors); + } + } + } else if (node.type === 2) { + checkExpression(node.expression, node.text, errors); + } +} + +function checkEvent (exp, text, errors) { + var stipped = exp.replace(stripStringRE, ''); + var keywordMatch = stipped.match(unaryOperatorsRE); + if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') { + errors.push( + "avoid using JavaScript unary operator as property name: " + + "\"" + (keywordMatch[0]) + "\" in expression " + (text.trim()) + ); + } + checkExpression(exp, text, errors); +} + +function checkFor (node, text, errors) { + checkExpression(node.for || '', text, errors); + checkIdentifier(node.alias, 'v-for alias', text, errors); + checkIdentifier(node.iterator1, 'v-for iterator', text, errors); + checkIdentifier(node.iterator2, 'v-for iterator', text, errors); +} + +function checkIdentifier ( + ident, + type, + text, + errors +) { + if (typeof ident === 'string') { + try { + new Function(("var " + ident + "=_")); + } catch (e) { + errors.push(("invalid " + type + " \"" + ident + "\" in expression: " + (text.trim()))); + } + } +} + +function checkExpression (exp, text, errors) { + try { + new Function(("return " + exp)); + } catch (e) { + var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE); + if (keywordMatch) { + errors.push( + "avoid using JavaScript keyword as property name: " + + "\"" + (keywordMatch[0]) + "\"\n Raw expression: " + (text.trim()) + ); + } else { + errors.push( + "invalid expression: " + (e.message) + " in\n\n" + + " " + exp + "\n\n" + + " Raw expression: " + (text.trim()) + "\n" + ); + } + } +} + +/* */ + +function createFunction (code, errors) { + try { + return new Function(code) + } catch (err) { + errors.push({ err: err, code: code }); + return noop + } +} + +function createCompileToFunctionFn (compile) { + var cache = Object.create(null); + + return function compileToFunctions ( + template, + options, + vm + ) { + options = extend({}, options); + var warn$$1 = options.warn || warn; + delete options.warn; + + /* istanbul ignore if */ + if (false) { + // detect possible CSP restriction + try { + new Function('return 1'); + } catch (e) { + if (e.toString().match(/unsafe-eval|CSP/)) { + warn$$1( + 'It seems you are using the standalone build of Vue.js in an ' + + 'environment with Content Security Policy that prohibits unsafe-eval. ' + + 'The template compiler cannot work in this environment. Consider ' + + 'relaxing the policy to allow unsafe-eval or pre-compiling your ' + + 'templates into render functions.' + ); + } + } + } + + // check cache + var key = options.delimiters + ? String(options.delimiters) + template + : template; + if (cache[key]) { + return cache[key] + } + + // compile + var compiled = compile(template, options); + + // check compilation errors/tips + if (false) { + if (compiled.errors && compiled.errors.length) { + warn$$1( + "Error compiling template:\n\n" + template + "\n\n" + + compiled.errors.map(function (e) { return ("- " + e); }).join('\n') + '\n', + vm + ); + } + if (compiled.tips && compiled.tips.length) { + compiled.tips.forEach(function (msg) { return tip(msg, vm); }); + } + } + + // turn code into functions + var res = {}; + var fnGenErrors = []; + res.render = createFunction(compiled.render, fnGenErrors); + res.staticRenderFns = compiled.staticRenderFns.map(function (code) { + return createFunction(code, fnGenErrors) + }); + + // check function generation errors. + // this should only happen if there is a bug in the compiler itself. + // mostly for codegen development use + /* istanbul ignore if */ + if (false) { + if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) { + warn$$1( + "Failed to generate render function:\n\n" + + fnGenErrors.map(function (ref) { + var err = ref.err; + var code = ref.code; + + return ((err.toString()) + " in\n\n" + code + "\n"); + }).join('\n'), + vm + ); + } + } + + return (cache[key] = res) + } +} + +/* */ + +function createCompilerCreator (baseCompile) { + return function createCompiler (baseOptions) { + function compile ( + template, + options + ) { + var finalOptions = Object.create(baseOptions); + var errors = []; + var tips = []; + finalOptions.warn = function (msg, tip) { + (tip ? tips : errors).push(msg); + }; + + if (options) { + // merge custom modules + if (options.modules) { + finalOptions.modules = + (baseOptions.modules || []).concat(options.modules); + } + // merge custom directives + if (options.directives) { + finalOptions.directives = extend( + Object.create(baseOptions.directives || null), + options.directives + ); + } + // copy other options + for (var key in options) { + if (key !== 'modules' && key !== 'directives') { + finalOptions[key] = options[key]; + } + } + } + + var compiled = baseCompile(template, finalOptions); + if (false) { + errors.push.apply(errors, detectErrors(compiled.ast)); + } + compiled.errors = errors; + compiled.tips = tips; + return compiled + } + + return { + compile: compile, + compileToFunctions: createCompileToFunctionFn(compile) + } + } +} + +/* */ + +// `createCompilerCreator` allows creating compilers that use alternative +// parser/optimizer/codegen, e.g the SSR optimizing compiler. +// Here we just export a default compiler using the default parts. +var createCompiler = createCompilerCreator(function baseCompile ( + template, + options +) { + var ast = parse(template.trim(), options); + if (options.optimize !== false) { + optimize(ast, options); + } + var code = generate(ast, options); + return { + ast: ast, + render: code.render, + staticRenderFns: code.staticRenderFns + } +}); + +/* */ + +var ref$1 = createCompiler(baseOptions); +var compileToFunctions = ref$1.compileToFunctions; + +/* */ + +// check whether current browser encodes a char inside attribute values +var div; +function getShouldDecode (href) { + div = div || document.createElement('div'); + div.innerHTML = href ? "<a href=\"\n\"/>" : "<div a=\"\n\"/>"; + return div.innerHTML.indexOf(' ') > 0 +} + +// #3663: IE encodes newlines inside attribute values while other browsers don't +var shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false; +// #6828: chrome encodes content in a[href] +var shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false; + +/* */ + +var idToTemplate = cached(function (id) { + var el = query(id); + return el && el.innerHTML +}); + +var mount = Vue$3.prototype.$mount; +Vue$3.prototype.$mount = function ( + el, + hydrating +) { + el = el && query(el); + + /* istanbul ignore if */ + if (el === document.body || el === document.documentElement) { + "production" !== 'production' && warn( + "Do not mount Vue to <html> or <body> - mount to normal elements instead." + ); + return this + } + + var options = this.$options; + // resolve template/el and convert to render function + if (!options.render) { + var template = options.template; + if (template) { + if (typeof template === 'string') { + if (template.charAt(0) === '#') { + template = idToTemplate(template); + /* istanbul ignore if */ + if (false) { + warn( + ("Template element not found or is empty: " + (options.template)), + this + ); + } + } + } else if (template.nodeType) { + template = template.innerHTML; + } else { + if (false) { + warn('invalid template option:' + template, this); + } + return this + } + } else if (el) { + template = getOuterHTML(el); + } + if (template) { + /* istanbul ignore if */ + if (false) { + mark('compile'); + } + + var ref = compileToFunctions(template, { + shouldDecodeNewlines: shouldDecodeNewlines, + shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref, + delimiters: options.delimiters, + comments: options.comments + }, this); + var render = ref.render; + var staticRenderFns = ref.staticRenderFns; + options.render = render; + options.staticRenderFns = staticRenderFns; + + /* istanbul ignore if */ + if (false) { + mark('compile end'); + measure(("vue " + (this._name) + " compile"), 'compile', 'compile end'); + } + } + } + return mount.call(this, el, hydrating) +}; + +/** + * Get outerHTML of elements, taking care + * of SVG elements in IE as well. + */ +function getOuterHTML (el) { + if (el.outerHTML) { + return el.outerHTML + } else { + var container = document.createElement('div'); + container.appendChild(el.cloneNode(true)); + return container.innerHTML + } +} + +Vue$3.compile = compileToFunctions; + +module.exports = Vue$3; + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("mFPK"), __webpack_require__("PKNu").setImmediate)) + +/***/ }), + +/***/ "P1/4": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__("maJs"); +var assert = __webpack_require__("tSXQ"); + +function BlockHash() { + this.pending = null; + this.pendingTotal = 0; + this.blockSize = this.constructor.blockSize; + this.outSize = this.constructor.outSize; + this.hmacStrength = this.constructor.hmacStrength; + this.padLength = this.constructor.padLength / 8; + this.endian = 'big'; + + this._delta8 = this.blockSize / 8; + this._delta32 = this.blockSize / 32; +} +exports.BlockHash = BlockHash; + +BlockHash.prototype.update = function update(msg, enc) { + // Convert message to array, pad it, and join into 32bit blocks + msg = utils.toArray(msg, enc); + if (!this.pending) + this.pending = msg; + else + this.pending = this.pending.concat(msg); + this.pendingTotal += msg.length; + + // Enough data, try updating + if (this.pending.length >= this._delta8) { + msg = this.pending; + + // Process pending data in blocks + var r = msg.length % this._delta8; + this.pending = msg.slice(msg.length - r, msg.length); + if (this.pending.length === 0) + this.pending = null; + + msg = utils.join32(msg, 0, msg.length - r, this.endian); + for (var i = 0; i < msg.length; i += this._delta32) + this._update(msg, i, i + this._delta32); + } + + return this; +}; + +BlockHash.prototype.digest = function digest(enc) { + this.update(this._pad()); + assert(this.pending === null); + + return this._digest(enc); +}; + +BlockHash.prototype._pad = function pad() { + var len = this.pendingTotal; + var bytes = this._delta8; + var k = bytes - ((len + this.padLength) % bytes); + var res = new Array(k + this.padLength); + res[0] = 0x80; + for (var i = 1; i < k; i++) + res[i] = 0; + + // Append length + len <<= 3; + if (this.endian === 'big') { + for (var t = 8; t < this.padLength; t++) + res[i++] = 0; + + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + res[i++] = (len >>> 24) & 0xff; + res[i++] = (len >>> 16) & 0xff; + res[i++] = (len >>> 8) & 0xff; + res[i++] = len & 0xff; + } else { + res[i++] = len & 0xff; + res[i++] = (len >>> 8) & 0xff; + res[i++] = (len >>> 16) & 0xff; + res[i++] = (len >>> 24) & 0xff; + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + + for (t = 8; t < this.padLength; t++) + res[i++] = 0; + } + + return res; +}; + + +/***/ }), + +/***/ "PKNu": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== "undefined" && global) || + (typeof self !== "undefined" && self) || + window; +var apply = Function.prototype.apply; + +// DOM APIs, for completeness + +exports.setTimeout = function() { + return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout); +}; +exports.setInterval = function() { + return new Timeout(apply.call(setInterval, scope, arguments), clearInterval); +}; +exports.clearTimeout = +exports.clearInterval = function(timeout) { + if (timeout) { + timeout.close(); + } +}; + +function Timeout(id, clearFn) { + this._id = id; + this._clearFn = clearFn; +} +Timeout.prototype.unref = Timeout.prototype.ref = function() {}; +Timeout.prototype.close = function() { + this._clearFn.call(scope, this._id); +}; + +// Does not start the time, just sets up the members needed. +exports.enroll = function(item, msecs) { + clearTimeout(item._idleTimeoutId); + item._idleTimeout = msecs; +}; + +exports.unenroll = function(item) { + clearTimeout(item._idleTimeoutId); + item._idleTimeout = -1; +}; + +exports._unrefActive = exports.active = function(item) { + clearTimeout(item._idleTimeoutId); + + var msecs = item._idleTimeout; + if (msecs >= 0) { + item._idleTimeoutId = setTimeout(function onTimeout() { + if (item._onTimeout) + item._onTimeout(); + }, msecs); + } +}; + +// setimmediate attaches itself to the global object +__webpack_require__("AYvJ"); +// On some exotic environments, it's not clear which object `setimmediate` was +// able to install onto. Search each possibility in the same order as the +// `setimmediate` library. +exports.setImmediate = (typeof self !== "undefined" && self.setImmediate) || + (typeof global !== "undefined" && global.setImmediate) || + (this && this.setImmediate); +exports.clearImmediate = (typeof self !== "undefined" && self.clearImmediate) || + (typeof global !== "undefined" && global.clearImmediate) || + (this && this.clearImmediate); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("mFPK"))) + +/***/ }), + +/***/ "PNoM": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Kazakh [kk] +//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var suffixes = { + 0: '-ші', + 1: '-ші', + 2: '-ші', + 3: '-ші', + 4: '-ші', + 5: '-ші', + 6: '-шы', + 7: '-ші', + 8: '-ші', + 9: '-шы', + 10: '-шы', + 20: '-шы', + 30: '-шы', + 40: '-шы', + 50: '-ші', + 60: '-шы', + 70: '-ші', + 80: '-ші', + 90: '-шы', + 100: '-ші' +}; + +var kk = moment.defineLocale('kk', { + months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'), + monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), + weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'), + weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), + weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Бүгін сағат] LT', + nextDay : '[Ертең сағат] LT', + nextWeek : 'dddd [сағат] LT', + lastDay : '[Кеше сағат] LT', + lastWeek : '[Өткен аптаның] dddd [сағат] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ішінде', + past : '%s бұрын', + s : 'бірнеше секунд', + m : 'бір минут', + mm : '%d минут', + h : 'бір сағат', + hh : '%d сағат', + d : 'бір күн', + dd : '%d күн', + M : 'бір ай', + MM : '%d ай', + y : 'бір жыл', + yy : '%d жыл' + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/, + ordinal : function (number) { + var a = number % 10, + b = number >= 100 ? 100 : null; + return number + (suffixes[number] || suffixes[a] || suffixes[b]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return kk; + +}))); + + +/***/ }), + +/***/ "Pbao": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Javanese [jv] +//! author : Rony Lantip : https://github.com/lantip +//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var jv = moment.defineLocale('jv', { + months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), + weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), + weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), + weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /enjing|siyang|sonten|ndalu/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'enjing') { + return hour; + } else if (meridiem === 'siyang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sonten' || meridiem === 'ndalu') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'enjing'; + } else if (hours < 15) { + return 'siyang'; + } else if (hours < 19) { + return 'sonten'; + } else { + return 'ndalu'; + } + }, + calendar : { + sameDay : '[Dinten puniko pukul] LT', + nextDay : '[Mbenjang pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kala wingi pukul] LT', + lastWeek : 'dddd [kepengker pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'wonten ing %s', + past : '%s ingkang kepengker', + s : 'sawetawis detik', + m : 'setunggal menit', + mm : '%d menit', + h : 'setunggal jam', + hh : '%d jam', + d : 'sedinten', + dd : '%d dinten', + M : 'sewulan', + MM : '%d wulan', + y : 'setaun', + yy : '%d taun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return jv; + +}))); + + +/***/ }), + +/***/ "PeeF": +/***/ (function(module, exports) { + +module.exports = function xor (a, b) { + var len = a.length + var i = -1 + while (++i < len) { + a[i] ^= b[i] + } + return a +} + + +/***/ }), + +/***/ "Pi9+": +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a <style> tag + +// load the styles +var content = __webpack_require__("eACQ"); +if(typeof content === 'string') content = [[module.i, content, '']]; +if(content.locals) module.exports = content.locals; +// add the styles to the DOM +var update = __webpack_require__("FIqI")("d4284c0c", content, true, {}); + +/***/ }), + +/***/ "PjeN": +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__("DLTi").Buffer +var createHash = __webpack_require__("kFjB") +var stream = __webpack_require__("WTPY") +var inherits = __webpack_require__("mwrz") +var sign = __webpack_require__("SEjb") +var verify = __webpack_require__("183T") + +var algorithms = __webpack_require__("n1Xs") +Object.keys(algorithms).forEach(function (key) { + algorithms[key].id = Buffer.from(algorithms[key].id, 'hex') + algorithms[key.toLowerCase()] = algorithms[key] +}) + +function Sign (algorithm) { + stream.Writable.call(this) + + var data = algorithms[algorithm] + if (!data) throw new Error('Unknown message digest') + + this._hashType = data.hash + this._hash = createHash(data.hash) + this._tag = data.id + this._signType = data.sign +} +inherits(Sign, stream.Writable) + +Sign.prototype._write = function _write (data, _, done) { + this._hash.update(data) + done() +} + +Sign.prototype.update = function update (data, enc) { + if (typeof data === 'string') data = Buffer.from(data, enc) + + this._hash.update(data) + return this +} + +Sign.prototype.sign = function signMethod (key, enc) { + this.end() + var hash = this._hash.digest() + var sig = sign(hash, key, this._hashType, this._signType, this._tag) + + return enc ? sig.toString(enc) : sig +} + +function Verify (algorithm) { + stream.Writable.call(this) + + var data = algorithms[algorithm] + if (!data) throw new Error('Unknown message digest') + + this._hash = createHash(data.hash) + this._tag = data.id + this._signType = data.sign +} +inherits(Verify, stream.Writable) + +Verify.prototype._write = function _write (data, _, done) { + this._hash.update(data) + done() +} + +Verify.prototype.update = function update (data, enc) { + if (typeof data === 'string') data = Buffer.from(data, enc) + + this._hash.update(data) + return this +} + +Verify.prototype.verify = function verifyMethod (key, sig, enc) { + if (typeof sig === 'string') sig = Buffer.from(sig, enc) + + this.end() + var hash = this._hash.digest() + return verify(sig, hash, key, this._signType, this._tag) +} + +function createSign (algorithm) { + return new Sign(algorithm) +} + +function createVerify (algorithm) { + return new Verify(algorithm) +} + +module.exports = { + Sign: createSign, + Verify: createVerify, + createSign: createSign, + createVerify: createVerify +} + + +/***/ }), + +/***/ "Pklo": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Spanish [es] +//! author : Julio Napurí : https://github.com/julionc + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'); +var monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); + +var es = moment.defineLocale('es', { + months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortDot; + } else if (/-MMM-/.test(format)) { + return monthsShort[m.month()]; + } else { + return monthsShortDot[m.month()]; + } + }, + monthsParseExact : true, + weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY H:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' + }, + calendar : { + sameDay : function () { + return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextDay : function () { + return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastDay : function () { + return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'en %s', + past : 'hace %s', + s : 'unos segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'una hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un año', + yy : '%d años' + }, + dayOfMonthOrdinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return es; + +}))); + + +/***/ }), + +/***/ "PmB6": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : German [de] +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Mikolaj Dadela : https://github.com/mik01aj + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; +} + +var de = moment.defineLocale('de', { + months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + monthsParseExact : true, + weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd, D. MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]' + }, + relativeTime : { + future : 'in %s', + past : 'vor %s', + s : 'ein paar Sekunden', + m : processRelativeTime, + mm : '%d Minuten', + h : processRelativeTime, + hh : '%d Stunden', + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return de; + +}))); + + +/***/ }), + +/***/ "QMyh": +/***/ (function(module, exports, __webpack_require__) { + +/* eslint-disable node/no-deprecated-api */ +var buffer = __webpack_require__("NfRg") +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + + +/***/ }), + +/***/ "QYQw": +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__("DLTi").Buffer + +// prototype class for hash functions +function Hash (blockSize, finalSize) { + this._block = Buffer.alloc(blockSize) + this._finalSize = finalSize + this._blockSize = blockSize + this._len = 0 +} + +Hash.prototype.update = function (data, enc) { + if (typeof data === 'string') { + enc = enc || 'utf8' + data = Buffer.from(data, enc) + } + + var block = this._block + var blockSize = this._blockSize + var length = data.length + var accum = this._len + + for (var offset = 0; offset < length;) { + var assigned = accum % blockSize + var remainder = Math.min(length - offset, blockSize - assigned) + + for (var i = 0; i < remainder; i++) { + block[assigned + i] = data[offset + i] + } + + accum += remainder + offset += remainder + + if ((accum % blockSize) === 0) { + this._update(block) + } + } + + this._len += length + return this +} + +Hash.prototype.digest = function (enc) { + var rem = this._len % this._blockSize + + this._block[rem] = 0x80 + + // zero (rem + 1) trailing bits, where (rem + 1) is the smallest + // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize + this._block.fill(0, rem + 1) + + if (rem >= this._finalSize) { + this._update(this._block) + this._block.fill(0) + } + + var bits = this._len * 8 + + // uint32 + if (bits <= 0xffffffff) { + this._block.writeUInt32BE(bits, this._blockSize - 4) + + // uint64 + } else { + var lowBits = (bits & 0xffffffff) >>> 0 + var highBits = (bits - lowBits) / 0x100000000 + + this._block.writeUInt32BE(highBits, this._blockSize - 8) + this._block.writeUInt32BE(lowBits, this._blockSize - 4) + } + + this._update(this._block) + var hash = this._hash() + + return enc ? hash.toString(enc) : hash +} + +Hash.prototype._update = function () { + throw new Error('_update must be implemented by subclass') +} + +module.exports = Hash + + +/***/ }), + +/***/ "R09Z": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + + + +module.exports = Transform; + +var Duplex = __webpack_require__("qI9I"); + +/*<replacement>*/ +var util = Object.create(__webpack_require__("rcOv")); +util.inherits = __webpack_require__("mwrz"); +/*</replacement>*/ + +util.inherits(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + + var cb = ts.writecb; + + if (!cb) { + return this.emit('error', new Error('write callback called multiple times')); + } + + ts.writechunk = null; + ts.writecb = null; + + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + + cb(er); + + var rs = this._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + + Duplex.call(this, options); + + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + + if (typeof options.flush === 'function') this._flush = options.flush; + } + + // When the writable side finishes, then flush out anything remaining. + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function') { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + throw new Error('_transform() is not implemented'); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + var _this2 = this; + + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + _this2.emit('close'); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); + + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); + + if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); + + return stream.push(null); +} + +/***/ }), + +/***/ "RX7Q": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : German (Austria) [de-at] +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Martin Groller : https://github.com/MadMG +//! author : Mikolaj Dadela : https://github.com/mik01aj + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; +} + +var deAt = moment.defineLocale('de-at', { + months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + monthsParseExact : true, + weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd, D. MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]' + }, + relativeTime : { + future : 'in %s', + past : 'vor %s', + s : 'ein paar Sekunden', + m : processRelativeTime, + mm : '%d Minuten', + h : processRelativeTime, + hh : '%d Stunden', + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return deAt; + +}))); + + +/***/ }), + +/***/ "Re/X": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js +// thanks to @Rantanen + + + +var asn = __webpack_require__("3XBS") + +var Time = asn.define('Time', function () { + this.choice({ + utcTime: this.utctime(), + generalTime: this.gentime() + }) +}) + +var AttributeTypeValue = asn.define('AttributeTypeValue', function () { + this.seq().obj( + this.key('type').objid(), + this.key('value').any() + ) +}) + +var AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () { + this.seq().obj( + this.key('algorithm').objid(), + this.key('parameters').optional(), + this.key('curve').objid().optional() + ) +}) + +var SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () { + this.seq().obj( + this.key('algorithm').use(AlgorithmIdentifier), + this.key('subjectPublicKey').bitstr() + ) +}) + +var RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () { + this.setof(AttributeTypeValue) +}) + +var RDNSequence = asn.define('RDNSequence', function () { + this.seqof(RelativeDistinguishedName) +}) + +var Name = asn.define('Name', function () { + this.choice({ + rdnSequence: this.use(RDNSequence) + }) +}) + +var Validity = asn.define('Validity', function () { + this.seq().obj( + this.key('notBefore').use(Time), + this.key('notAfter').use(Time) + ) +}) + +var Extension = asn.define('Extension', function () { + this.seq().obj( + this.key('extnID').objid(), + this.key('critical').bool().def(false), + this.key('extnValue').octstr() + ) +}) + +var TBSCertificate = asn.define('TBSCertificate', function () { + this.seq().obj( + this.key('version').explicit(0).int().optional(), + this.key('serialNumber').int(), + this.key('signature').use(AlgorithmIdentifier), + this.key('issuer').use(Name), + this.key('validity').use(Validity), + this.key('subject').use(Name), + this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo), + this.key('issuerUniqueID').implicit(1).bitstr().optional(), + this.key('subjectUniqueID').implicit(2).bitstr().optional(), + this.key('extensions').explicit(3).seqof(Extension).optional() + ) +}) + +var X509Certificate = asn.define('X509Certificate', function () { + this.seq().obj( + this.key('tbsCertificate').use(TBSCertificate), + this.key('signatureAlgorithm').use(AlgorithmIdentifier), + this.key('signatureValue').bitstr() + ) +}) + +module.exports = X509Certificate + + +/***/ }), + +/***/ "S1A0": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {var generatePrime = __webpack_require__("YHfo") +var primes = __webpack_require__("UgYt") + +var DH = __webpack_require__("iFzV") + +function getDiffieHellman (mod) { + var prime = new Buffer(primes[mod].prime, 'hex') + var gen = new Buffer(primes[mod].gen, 'hex') + + return new DH(prime, gen) +} + +var ENCODINGS = { + 'binary': true, 'hex': true, 'base64': true +} + +function createDiffieHellman (prime, enc, generator, genc) { + if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) { + return createDiffieHellman(prime, 'binary', enc, generator) + } + + enc = enc || 'binary' + genc = genc || 'binary' + generator = generator || new Buffer([2]) + + if (!Buffer.isBuffer(generator)) { + generator = new Buffer(generator, genc) + } + + if (typeof prime === 'number') { + return new DH(generatePrime(prime, generator), generator, true) + } + + if (!Buffer.isBuffer(prime)) { + prime = new Buffer(prime, enc) + } + + return new DH(prime, generator, true) +} + +exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman +exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("NfRg").Buffer)) + +/***/ }), + +/***/ "SEjb": +/***/ (function(module, exports, __webpack_require__) { + +// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js +var Buffer = __webpack_require__("DLTi").Buffer +var createHmac = __webpack_require__("OtjJ") +var crt = __webpack_require__("2ZN/") +var EC = __webpack_require__("qve+").ec +var BN = __webpack_require__("DoTB") +var parseKeys = __webpack_require__("UjI3") +var curves = __webpack_require__("D380") + +function sign (hash, key, hashType, signType, tag) { + var priv = parseKeys(key) + if (priv.curve) { + // rsa keys can be interpreted as ecdsa ones in openssl + if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type') + return ecSign(hash, priv) + } else if (priv.type === 'dsa') { + if (signType !== 'dsa') throw new Error('wrong private key type') + return dsaSign(hash, priv, hashType) + } else { + if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type') + } + hash = Buffer.concat([tag, hash]) + var len = priv.modulus.byteLength() + var pad = [0, 1] + while (hash.length + pad.length + 1 < len) pad.push(0xff) + pad.push(0x00) + var i = -1 + while (++i < hash.length) pad.push(hash[i]) + + var out = crt(pad, priv) + return out +} + +function ecSign (hash, priv) { + var curveId = curves[priv.curve.join('.')] + if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.')) + + var curve = new EC(curveId) + var key = curve.keyFromPrivate(priv.privateKey) + var out = key.sign(hash) + + return Buffer.from(out.toDER()) +} + +function dsaSign (hash, priv, algo) { + var x = priv.params.priv_key + var p = priv.params.p + var q = priv.params.q + var g = priv.params.g + var r = new BN(0) + var k + var H = bits2int(hash, q).mod(q) + var s = false + var kv = getKey(x, q, hash, algo) + while (s === false) { + k = makeKey(q, kv, algo) + r = makeR(g, k, p, q) + s = k.invm(q).imul(H.add(x.mul(r))).mod(q) + if (s.cmpn(0) === 0) { + s = false + r = new BN(0) + } + } + return toDER(r, s) +} + +function toDER (r, s) { + r = r.toArray() + s = s.toArray() + + // Pad values + if (r[0] & 0x80) r = [0].concat(r) + if (s[0] & 0x80) s = [0].concat(s) + + var total = r.length + s.length + 4 + var res = [0x30, total, 0x02, r.length] + res = res.concat(r, [0x02, s.length], s) + return Buffer.from(res) +} + +function getKey (x, q, hash, algo) { + x = Buffer.from(x.toArray()) + if (x.length < q.byteLength()) { + var zeros = Buffer.alloc(q.byteLength() - x.length) + x = Buffer.concat([zeros, x]) + } + var hlen = hash.length + var hbits = bits2octets(hash, q) + var v = Buffer.alloc(hlen) + v.fill(1) + var k = Buffer.alloc(hlen) + k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest() + v = createHmac(algo, k).update(v).digest() + k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest() + v = createHmac(algo, k).update(v).digest() + return { k: k, v: v } +} + +function bits2int (obits, q) { + var bits = new BN(obits) + var shift = (obits.length << 3) - q.bitLength() + if (shift > 0) bits.ishrn(shift) + return bits +} + +function bits2octets (bits, q) { + bits = bits2int(bits, q) + bits = bits.mod(q) + var out = Buffer.from(bits.toArray()) + if (out.length < q.byteLength()) { + var zeros = Buffer.alloc(q.byteLength() - out.length) + out = Buffer.concat([zeros, out]) + } + return out +} + +function makeKey (q, kv, algo) { + var t + var k + + do { + t = Buffer.alloc(0) + + while (t.length * 8 < q.bitLength()) { + kv.v = createHmac(algo, kv.k).update(kv.v).digest() + t = Buffer.concat([t, kv.v]) + } + + k = bits2int(t, q) + kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest() + kv.v = createHmac(algo, kv.k).update(kv.v).digest() + } while (k.cmp(q) !== -1) + + return k +} + +function makeR (g, k, p, q) { + return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q) +} + +module.exports = sign +module.exports.getKey = getKey +module.exports.makeKey = makeKey + + +/***/ }), + +/***/ "SWEK": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Frisian [fy] +//! author : Robin van der Vliet : https://github.com/robin0van0der0v + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'); +var monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); + +var fy = moment.defineLocale('fy', { + months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortWithDots; + } else if (/-MMM-/.test(format)) { + return monthsShortWithoutDots[m.month()]; + } else { + return monthsShortWithDots[m.month()]; + } + }, + monthsParseExact : true, + weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), + weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'), + weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[hjoed om] LT', + nextDay: '[moarn om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[juster om] LT', + lastWeek: '[ôfrûne] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'oer %s', + past : '%s lyn', + s : 'in pear sekonden', + m : 'ien minút', + mm : '%d minuten', + h : 'ien oere', + hh : '%d oeren', + d : 'ien dei', + dd : '%d dagen', + M : 'ien moanne', + MM : '%d moannen', + y : 'ien jier', + yy : '%d jierren' + }, + dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return fy; + +}))); + + +/***/ }), + +/***/ "Sa/j": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Swahili [sw] +//! author : Fahad Kassim : https://github.com/fadsel + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var sw = moment.defineLocale('sw', { + months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'), + monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), + weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'), + weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), + weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[leo saa] LT', + nextDay : '[kesho saa] LT', + nextWeek : '[wiki ijayo] dddd [saat] LT', + lastDay : '[jana] LT', + lastWeek : '[wiki iliyopita] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s baadaye', + past : 'tokea %s', + s : 'hivi punde', + m : 'dakika moja', + mm : 'dakika %d', + h : 'saa limoja', + hh : 'masaa %d', + d : 'siku moja', + dd : 'masiku %d', + M : 'mwezi mmoja', + MM : 'miezi %d', + y : 'mwaka mmoja', + yy : 'miaka %d' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return sw; + +}))); + + +/***/ }), + +/***/ "ShjI": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var hash = __webpack_require__("JSLd"); +var utils = __webpack_require__("jgf2"); +var assert = __webpack_require__("tSXQ"); + +function HmacDRBG(options) { + if (!(this instanceof HmacDRBG)) + return new HmacDRBG(options); + this.hash = options.hash; + this.predResist = !!options.predResist; + + this.outLen = this.hash.outSize; + this.minEntropy = options.minEntropy || this.hash.hmacStrength; + + this._reseed = null; + this.reseedInterval = null; + this.K = null; + this.V = null; + + var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex'); + var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex'); + var pers = utils.toArray(options.pers, options.persEnc || 'hex'); + assert(entropy.length >= (this.minEntropy / 8), + 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); + this._init(entropy, nonce, pers); +} +module.exports = HmacDRBG; + +HmacDRBG.prototype._init = function init(entropy, nonce, pers) { + var seed = entropy.concat(nonce).concat(pers); + + this.K = new Array(this.outLen / 8); + this.V = new Array(this.outLen / 8); + for (var i = 0; i < this.V.length; i++) { + this.K[i] = 0x00; + this.V[i] = 0x01; + } + + this._update(seed); + this._reseed = 1; + this.reseedInterval = 0x1000000000000; // 2^48 +}; + +HmacDRBG.prototype._hmac = function hmac() { + return new hash.hmac(this.hash, this.K); +}; + +HmacDRBG.prototype._update = function update(seed) { + var kmac = this._hmac() + .update(this.V) + .update([ 0x00 ]); + if (seed) + kmac = kmac.update(seed); + this.K = kmac.digest(); + this.V = this._hmac().update(this.V).digest(); + if (!seed) + return; + + this.K = this._hmac() + .update(this.V) + .update([ 0x01 ]) + .update(seed) + .digest(); + this.V = this._hmac().update(this.V).digest(); +}; + +HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) { + // Optional entropy enc + if (typeof entropyEnc !== 'string') { + addEnc = add; + add = entropyEnc; + entropyEnc = null; + } + + entropy = utils.toArray(entropy, entropyEnc); + add = utils.toArray(add, addEnc); + + assert(entropy.length >= (this.minEntropy / 8), + 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); + + this._update(entropy.concat(add || [])); + this._reseed = 1; +}; + +HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { + if (this._reseed > this.reseedInterval) + throw new Error('Reseed is required'); + + // Optional encoding + if (typeof enc !== 'string') { + addEnc = add; + add = enc; + enc = null; + } + + // Optional additional data + if (add) { + add = utils.toArray(add, addEnc || 'hex'); + this._update(add); + } + + var temp = []; + while (temp.length < len) { + this.V = this._hmac().update(this.V).digest(); + temp = temp.concat(this.V); + } + + var res = temp.slice(0, len); + this._update(add); + this._reseed++; + return utils.encode(res, enc); +}; + + +/***/ }), + +/***/ "SqhN": +/***/ (function(module, exports, __webpack_require__) { + +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined + * in FIPS PUB 180-1 + * This source code is derived from sha1.js of the same repository. + * The difference between SHA-0 and SHA-1 is just a bitwise rotate left + * operation was added. + */ + +var inherits = __webpack_require__("mwrz") +var Hash = __webpack_require__("QYQw") +var Buffer = __webpack_require__("DLTi").Buffer + +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +] + +var W = new Array(80) + +function Sha () { + this.init() + this._w = W + + Hash.call(this, 64, 56) +} + +inherits(Sha, Hash) + +Sha.prototype.init = function () { + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 + + return this +} + +function rotl5 (num) { + return (num << 5) | (num >>> 27) +} + +function rotl30 (num) { + return (num << 30) | (num >>> 2) +} + +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d +} + +Sha.prototype._update = function (M) { + var W = this._w + + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16] + + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20) + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 + + e = d + d = c + c = rotl30(b) + b = a + a = t + } + + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 +} + +Sha.prototype._hash = function () { + var H = Buffer.allocUnsafe(20) + + H.writeInt32BE(this._a | 0, 0) + H.writeInt32BE(this._b | 0, 4) + H.writeInt32BE(this._c | 0, 8) + H.writeInt32BE(this._d | 0, 12) + H.writeInt32BE(this._e | 0, 16) + + return H +} + +module.exports = Sha + + +/***/ }), + +/***/ "T1Xl": +/***/ (function(module, exports, __webpack_require__) { + +var CipherBase = __webpack_require__("onRW") +var des = __webpack_require__("3Zew") +var inherits = __webpack_require__("mwrz") +var Buffer = __webpack_require__("DLTi").Buffer + +var modes = { + 'des-ede3-cbc': des.CBC.instantiate(des.EDE), + 'des-ede3': des.EDE, + 'des-ede-cbc': des.CBC.instantiate(des.EDE), + 'des-ede': des.EDE, + 'des-cbc': des.CBC.instantiate(des.DES), + 'des-ecb': des.DES +} +modes.des = modes['des-cbc'] +modes.des3 = modes['des-ede3-cbc'] +module.exports = DES +inherits(DES, CipherBase) +function DES (opts) { + CipherBase.call(this) + var modeName = opts.mode.toLowerCase() + var mode = modes[modeName] + var type + if (opts.decrypt) { + type = 'decrypt' + } else { + type = 'encrypt' + } + var key = opts.key + if (!Buffer.isBuffer(key)) { + key = Buffer.from(key) + } + if (modeName === 'des-ede' || modeName === 'des-ede-cbc') { + key = Buffer.concat([key, key.slice(0, 8)]) + } + var iv = opts.iv + if (!Buffer.isBuffer(iv)) { + iv = Buffer.from(iv) + } + this._des = mode.create({ + key: key, + iv: iv, + type: type + }) +} +DES.prototype._update = function (data) { + return Buffer.from(this._des.update(data)) +} +DES.prototype._final = function () { + return Buffer.from(this._des.final()) +} + + +/***/ }), + +/***/ "T4CU": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Turkish [tr] +//! authors : Erhan Gundogan : https://github.com/erhangundogan, +//! Burak Yiğit Kaya: https://github.com/BYK + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var suffixes = { + 1: '\'inci', + 5: '\'inci', + 8: '\'inci', + 70: '\'inci', + 80: '\'inci', + 2: '\'nci', + 7: '\'nci', + 20: '\'nci', + 50: '\'nci', + 3: '\'üncü', + 4: '\'üncü', + 100: '\'üncü', + 6: '\'ncı', + 9: '\'uncu', + 10: '\'uncu', + 30: '\'uncu', + 60: '\'ıncı', + 90: '\'ıncı' +}; + +var tr = moment.defineLocale('tr', { + months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), + monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), + weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), + weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), + weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[bugün saat] LT', + nextDay : '[yarın saat] LT', + nextWeek : '[haftaya] dddd [saat] LT', + lastDay : '[dün] LT', + lastWeek : '[geçen hafta] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s sonra', + past : '%s önce', + s : 'birkaç saniye', + m : 'bir dakika', + mm : '%d dakika', + h : 'bir saat', + hh : '%d saat', + d : 'bir gün', + dd : '%d gün', + M : 'bir ay', + MM : '%d ay', + y : 'bir yıl', + yy : '%d yıl' + }, + dayOfMonthOrdinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/, + ordinal : function (number) { + if (number === 0) { // special case for zero + return number + '\'ıncı'; + } + var a = number % 10, + b = number % 100 - a, + c = number >= 100 ? 100 : null; + return number + (suffixes[a] || suffixes[b] || suffixes[c]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return tr; + +}))); + + +/***/ }), + +/***/ "TDlb": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +/*<replacement>*/ + +var pna = __webpack_require__("z2li"); +/*</replacement>*/ + +module.exports = Readable; + +/*<replacement>*/ +var isArray = __webpack_require__("5RIO"); +/*</replacement>*/ + +/*<replacement>*/ +var Duplex; +/*</replacement>*/ + +Readable.ReadableState = ReadableState; + +/*<replacement>*/ +var EE = __webpack_require__("cGIK").EventEmitter; + +var EElistenerCount = function (emitter, type) { + return emitter.listeners(type).length; +}; +/*</replacement>*/ + +/*<replacement>*/ +var Stream = __webpack_require__("KSX3"); +/*</replacement>*/ + +/*<replacement>*/ + +var Buffer = __webpack_require__("QMyh").Buffer; +var OurUint8Array = global.Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/*</replacement>*/ + +/*<replacement>*/ +var util = Object.create(__webpack_require__("rcOv")); +util.inherits = __webpack_require__("mwrz"); +/*</replacement>*/ + +/*<replacement>*/ +var debugUtil = __webpack_require__(3); +var debug = void 0; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function () {}; +} +/*</replacement>*/ + +var BufferList = __webpack_require__("Yt9d"); +var destroyImpl = __webpack_require__("/sSn"); +var StringDecoder; + +util.inherits(Readable, Stream); + +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); + + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream) { + Duplex = Duplex || __webpack_require__("qI9I"); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var readableHwm = options.readableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + + // has it been destroyed + this.destroyed = false; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = __webpack_require__("boXJ").StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || __webpack_require__("qI9I"); + + if (!(this instanceof Readable)) return new Readable(options); + + this._readableState = new ReadableState(options, this); + + // legacy + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined) { + return false; + } + return this._readableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + } +}); + +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; +Readable.prototype._destroy = function (err, cb) { + this.push(null); + cb(err); +}; + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; + +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + var state = stream._readableState; + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); + } else if (state.ended) { + stream.emit('error', new Error('stream.push() after EOF')); + } else { + state.reading = false; + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + } + } + + return needMoreData(state); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + + if (state.needReadable) emitReadable(stream); + } + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} + +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; + +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = __webpack_require__("boXJ").StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; + +// Don't raise the hwm > 8MB +var MAX_HWM = 0x800000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; +} + +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; +} + +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + + if (n !== 0) state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); + + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = true; + n = 0; + } else { + state.length -= n; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + + return ret; +}; + +function onEofChunk(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); + } +} + +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + pna.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + this.emit('error', new Error('_read() is not implemented')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); + + dest.on('unpipe', onunpipe); + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + + cleanedUp = true; + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + // If the user pushes more data while we're writing to dest then we'll end up + // in ondata again. However, we only want to increase awaitDrain once because + // dest will only emit one 'drain' event for the multiple writes. + // => Introduce a guard on increasing awaitDrain. + var increasedAwaitDrain = false; + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + increasedAwaitDrain = false; + var ret = dest.write(chunk); + if (false === ret && !increasedAwaitDrain) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', src._readableState.awaitDrain); + src._readableState.awaitDrain++; + increasedAwaitDrain = true; + } + src.pause(); + } + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } + + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function () { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { hasUnpiped: false }; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + + if (!dest) dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, unpipeInfo); + }return this; + } + + // try to find the right one. + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + + dest.emit('unpipe', this, unpipeInfo); + + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + + if (ev === 'data') { + // Start flowing on next tick if stream isn't explicitly paused + if (this._readableState.flowing !== false) this.resume(); + } else if (ev === 'readable') { + var state = this._readableState; + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.emittedReadable = false; + if (!state.reading) { + pna.nextTick(nReadingNextTick, this); + } else if (state.length) { + emitReadable(this); + } + } + } + + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + resume(this, state); + } + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + pna.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + if (!state.reading) { + debug('resume read 0'); + stream.read(0); + } + + state.resumeScheduled = false; + state.awaitDrain = 0; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null) {} +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); + + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } + + // proxy certain important events. + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + this._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._readableState.highWaterMark; + } +}); + +// exposed for testing purposes only. +Readable._fromList = fromList; + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = fromListPartial(n, state.buffer, state.decoder); + } + + return ret; +} + +// Extracts only enough buffered data to satisfy the amount requested. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromListPartial(n, list, hasStrings) { + var ret; + if (n < list.head.data.length) { + // slice is the same for buffers and strings + ret = list.head.data.slice(0, n); + list.head.data = list.head.data.slice(n); + } else if (n === list.head.data.length) { + // first chunk is a perfect match + ret = list.shift(); + } else { + // result spans more than one buffer + ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); + } + return ret; +} + +// Copies a specified amount of characters from the list of buffered data +// chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBufferString(n, list) { + var p = list.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +// Copies a specified amount of bytes from the list of buffered data chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBuffer(n, list) { + var ret = Buffer.allocUnsafe(n); + var p = list.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); + + if (!state.endEmitted) { + state.ended = true; + pna.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("mFPK"), __webpack_require__("V0EG"))) + +/***/ }), + +/***/ "TJQU": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Luxembourgish [lb] +//! author : mweimerskirch : https://github.com/mweimerskirch +//! author : David Raison : https://github.com/kwisatz + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eng Minutt', 'enger Minutt'], + 'h': ['eng Stonn', 'enger Stonn'], + 'd': ['een Dag', 'engem Dag'], + 'M': ['ee Mount', 'engem Mount'], + 'y': ['ee Joer', 'engem Joer'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; +} +function processFutureTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return 'a ' + string; + } + return 'an ' + string; +} +function processPastTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return 'viru ' + string; + } + return 'virun ' + string; +} +/** + * Returns true if the word before the given number loses the '-n' ending. + * e.g. 'an 10 Deeg' but 'a 5 Deeg' + * + * @param number {integer} + * @returns {boolean} + */ +function eifelerRegelAppliesToNumber(number) { + number = parseInt(number, 10); + if (isNaN(number)) { + return false; + } + if (number < 0) { + // Negative Number --> always true + return true; + } else if (number < 10) { + // Only 1 digit + if (4 <= number && number <= 7) { + return true; + } + return false; + } else if (number < 100) { + // 2 digits + var lastDigit = number % 10, firstDigit = number / 10; + if (lastDigit === 0) { + return eifelerRegelAppliesToNumber(firstDigit); + } + return eifelerRegelAppliesToNumber(lastDigit); + } else if (number < 10000) { + // 3 or 4 digits --> recursively check first digit + while (number >= 10) { + number = number / 10; + } + return eifelerRegelAppliesToNumber(number); + } else { + // Anything larger than 4 digits: recursively check first n-3 digits + number = number / 1000; + return eifelerRegelAppliesToNumber(number); + } +} + +var lb = moment.defineLocale('lb', { + months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + monthsParseExact : true, + weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), + weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat: { + LT: 'H:mm [Auer]', + LTS: 'H:mm:ss [Auer]', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm [Auer]', + LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' + }, + calendar: { + sameDay: '[Haut um] LT', + sameElse: 'L', + nextDay: '[Muer um] LT', + nextWeek: 'dddd [um] LT', + lastDay: '[Gëschter um] LT', + lastWeek: function () { + // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule + switch (this.day()) { + case 2: + case 4: + return '[Leschten] dddd [um] LT'; + default: + return '[Leschte] dddd [um] LT'; + } + } + }, + relativeTime : { + future : processFutureTime, + past : processPastTime, + s : 'e puer Sekonnen', + m : processRelativeTime, + mm : '%d Minutten', + h : processRelativeTime, + hh : '%d Stonnen', + d : processRelativeTime, + dd : '%d Deeg', + M : processRelativeTime, + MM : '%d Méint', + y : processRelativeTime, + yy : '%d Joer' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return lb; + +}))); + + +/***/ }), + +/***/ "TjCN": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Chinese (Hong Kong) [zh-hk] +//! author : Ben : https://github.com/ben-lin +//! author : Chris Lam : https://github.com/hehachris +//! author : Konstantin : https://github.com/skfd + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var zhHk = moment.defineLocale('zh-hk', { + months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin : '日_一_二_三_四_五_六'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY年MMMD日', + LL : 'YYYY年MMMD日', + LLL : 'YYYY年MMMD日 HH:mm', + LLLL : 'YYYY年MMMD日dddd HH:mm', + l : 'YYYY年MMMD日', + ll : 'YYYY年MMMD日', + lll : 'YYYY年MMMD日 HH:mm', + llll : 'YYYY年MMMD日dddd HH:mm' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, + ordinal : function (number, period) { + switch (period) { + case 'd' : + case 'D' : + case 'DDD' : + return number + '日'; + case 'M' : + return number + '月'; + case 'w' : + case 'W' : + return number + '週'; + default : + return number; + } + }, + relativeTime : { + future : '%s內', + past : '%s前', + s : '幾秒', + m : '1 分鐘', + mm : '%d 分鐘', + h : '1 小時', + hh : '%d 小時', + d : '1 天', + dd : '%d 天', + M : '1 個月', + MM : '%d 個月', + y : '1 年', + yy : '%d 年' + } +}); + +return zhHk; + +}))); + + +/***/ }), + +/***/ "U8Ka": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var _require = __webpack_require__("NfRg"), + Buffer = _require.Buffer; + +var _require2 = __webpack_require__(2), + inspect = _require2.inspect; + +var custom = inspect && inspect.custom || 'inspect'; + +function copyBuffer(src, target, offset) { + Buffer.prototype.copy.call(src, target, offset); +} + +module.exports = +/*#__PURE__*/ +function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + _createClass(BufferList, [{ + key: "push", + value: function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + } + }, { + key: "unshift", + value: function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + }, { + key: "shift", + value: function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + } + }, { + key: "clear", + value: function clear() { + this.head = this.tail = null; + this.length = 0; + } + }, { + key: "join", + value: function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + + while (p = p.next) { + ret += s + p.data; + } + + return ret; + } + }, { + key: "concat", + value: function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + + return ret; + } // Consumes a specified amount of bytes or characters from the buffered data. + + }, { + key: "consume", + value: function consume(n, hasStrings) { + var ret; + + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); + } + + return ret; + } + }, { + key: "first", + value: function first() { + return this.head.data; + } // Consumes a specified amount of characters from the buffered data. + + }, { + key: "_getString", + value: function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Consumes a specified amount of bytes from the buffered data. + + }, { + key: "_getBuffer", + value: function _getBuffer(n) { + var ret = Buffer.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Make sure the linked list only shows the minimal necessary information. + + }, { + key: custom, + value: function value(_, options) { + return inspect(this, _objectSpread({}, options, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } + }]); + + return BufferList; +}(); + +/***/ }), + +/***/ "UJSw": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Norwegian Bokmål [nb] +//! authors : Espen Hovlandsdal : https://github.com/rexxars +//! Sigurd Gartmann : https://github.com/sigurdga + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var nb = moment.defineLocale('nb', { + months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'), + monthsParseExact : true, + weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'), + weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY [kl.] HH:mm', + LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' + }, + calendar : { + sameDay: '[i dag kl.] LT', + nextDay: '[i morgen kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[i går kl.] LT', + lastWeek: '[forrige] dddd [kl.] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : '%s siden', + s : 'noen sekunder', + m : 'ett minutt', + mm : '%d minutter', + h : 'en time', + hh : '%d timer', + d : 'en dag', + dd : '%d dager', + M : 'en måned', + MM : '%d måneder', + y : 'ett år', + yy : '%d år' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return nb; + +}))); + + +/***/ }), + +/***/ "UOWd": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__("maJs"); +var rotr32 = utils.rotr32; + +function ft_1(s, x, y, z) { + if (s === 0) + return ch32(x, y, z); + if (s === 1 || s === 3) + return p32(x, y, z); + if (s === 2) + return maj32(x, y, z); +} +exports.ft_1 = ft_1; + +function ch32(x, y, z) { + return (x & y) ^ ((~x) & z); +} +exports.ch32 = ch32; + +function maj32(x, y, z) { + return (x & y) ^ (x & z) ^ (y & z); +} +exports.maj32 = maj32; + +function p32(x, y, z) { + return x ^ y ^ z; +} +exports.p32 = p32; + +function s0_256(x) { + return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22); +} +exports.s0_256 = s0_256; + +function s1_256(x) { + return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25); +} +exports.s1_256 = s1_256; + +function g0_256(x) { + return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3); +} +exports.g0_256 = g0_256; + +function g1_256(x) { + return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10); +} +exports.g1_256 = g1_256; + + +/***/ }), + +/***/ "UTjk": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__config__ = __webpack_require__("FhoZ"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_assets_styles_video_js_css__ = __webpack_require__("/TTR"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_assets_styles_video_js_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_assets_styles_video_js_css__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_assets_styles_iconfont_css__ = __webpack_require__("kGlO"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_assets_styles_iconfont_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_assets_styles_iconfont_css__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_assets_js_vconsole_min__ = __webpack_require__("NBqP"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_assets_js_vconsole_min___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_assets_js_vconsole_min__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_vue_fullscreen__ = __webpack_require__("d4gF"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_vue_fullscreen___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_vue_fullscreen__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_uiMixins_js__ = __webpack_require__("+olj"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_hlsMixins_js__ = __webpack_require__("7Gjy"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_wasmMixins_js__ = __webpack_require__("qHGM"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__mixins_Flv265Mixins_js__ = __webpack_require__("pAGj"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__mixins_videoJsMixins_js__ = __webpack_require__("pOqu"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_assets_js_webRtcPlayer_js__ = __webpack_require__("7P+W"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_assets_wasm_tools_decode_worker_js__ = __webpack_require__("JgjT"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_expose_loader_EPlayer_exports_loader_EPlayer_assets_js_eplayer_min_js__ = __webpack_require__("8ZH7"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_expose_loader_EPlayer_exports_loader_EPlayer_assets_js_eplayer_min_js___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_12_expose_loader_EPlayer_exports_loader_EPlayer_assets_js_eplayer_min_js__); +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + + + + + + + + + + + + + + + + +var loadWasmModule = __WEBPACK_IMPORTED_MODULE_11_assets_wasm_tools_decode_worker_js__["a" /* EasyPlayerWasmModule */].loadWasmModule, + wasModule = __WEBPACK_IMPORTED_MODULE_11_assets_wasm_tools_decode_worker_js__["a" /* EasyPlayerWasmModule */].module; +var appEnterprise = __WEBPACK_IMPORTED_MODULE_0__config__["a" /* default */].appEnterprise, + appVersion = __WEBPACK_IMPORTED_MODULE_0__config__["a" /* default */].appVersion; + + +/* harmony default export */ __webpack_exports__["a"] = ({ + name: "easy-player", + + model: { + prop: 'videoUrl', + event: "change" + }, + + props: { + //视频流地址没有指定情况下, 视频所在区域显示的文字 + alt: { + type: String, + default: "无信号" + }, + //视频显示区域的宽高比 + aspect: { + type: String, + default: '' + }, + //自动播放 + autoplay: { + type: [Boolean, String], + default: 'true' + }, + currentTime: { + type: Number, + default: 0 + }, + //解码类型 + decodeType: { + type: String, + default: "auto" // soft + }, + debug: { + type: Boolean, + default: function _default() { + return false; + } + }, + hiddenRightMenu: { + type: Boolean, + default: function _default() { + return false; + } + }, + //是否不同分辨率强制铺满窗口 + easyStretch: { + type: Boolean, + default: function _default() { + return true; + } + }, + isH265: { + type: Boolean, + default: function _default() { + return false; + } + }, + live: { + type: Boolean, + default: function _default() { + return true; + } + }, + loop: { + type: Boolean, + default: false + }, + muted: { + type: Boolean, + default: function _default() { + return true; + } + }, + playerStyle: { + type: String, + default: "" + }, + poster: { + type: String, + default: function _default() { + return ''; + } + }, + reconnection: { + type: Boolean, + default: function _default() { + return false; + } + }, + restartTime: { + type: Number, + default: 60 * 60 * 6 + }, + resolution: { + type: String, + default: '' + }, + resolutionDefault: { + type: String, + default: "hd" + }, + showEnterprise: { + type: Boolean, + default: true + }, + iceServers: { + type: Array, + default: function _default() { + return []; + } + }, + videoUrl: { + type: String, + default: '' + }, + videoTitle: { + type: String, + default: '' + }, + watermark: [Object, String], + isTransCoding: { + type: Boolean, + default: function _default() { + return false; + } + }, + hasAudio: { + type: Boolean, + default: function _default() { + return true; + } + }, + recordMaxFileSize: { + type: Number, + default: 200 + }, + progress: { + type: Boolean, + default: function _default() { + return true; + } + }, + remoteHost: { + type: String, + default: "https://demo.easycvr.com:18000" + }, + recordFileName: { + type: String, + default: "" + } + }, + + mixins: [__WEBPACK_IMPORTED_MODULE_5__mixins_uiMixins_js__["a" /* UIMixins */], __WEBPACK_IMPORTED_MODULE_6__mixins_hlsMixins_js__["a" /* HlsMixins */], __WEBPACK_IMPORTED_MODULE_8__mixins_Flv265Mixins_js__["a" /* Flv265Mixins */], __WEBPACK_IMPORTED_MODULE_7__mixins_wasmMixins_js__["a" /* WasmMixins */], __WEBPACK_IMPORTED_MODULE_9__mixins_videoJsMixins_js__["a" /* VideoJsMixins */]], + + computed: { + defaultPlayerOption: function defaultPlayerOption() { + return { + loop: this.loop, + controls: true, + language: "zh-CN", + type: "video/mp4", + userActions: { click: false }, + autoplay: this.autoplay, + watermark: { watermark: this.watermark }, + controlBar: { + pictureInPictureToggle: false, + volumePanel: { + inline: false //默认是true,横着的 + } + + } + }; + } + }, + + watch: { + progress: { + handler: function handler() { + this._handlerVideoProgress(); + }, + + immediate: false + }, + muted: { + handler: function handler(nvl) { + this.playerMuted = nvl; + }, + + immediate: true + }, + playerMessage: { + handler: function handler(nvl) { + var _this2 = this; + + if (nvl) { + // 处理日志滚动问题 + this.$nextTick(function () { + var loadTextEle = _this2.$el.querySelector('.easy-player-loading-text'); + loadTextEle.scrollTop = loadTextEle.scrollTop + 20; + }); + console.log(nvl); + this.showMessage = true; + if (this.showMessageTimer) clearTimeout(this.showMessageTimer); + this.showMessageTimer = setTimeout(function () { + _this2.showMessage = false; + }, 10 * 1000); + } + }, + + immediate: true + }, + easyStretch: { + handler: function handler(nvl) { + this.stretch = nvl; + }, + + immediate: true + }, + isH265: { + handler: function handler(nvl) { + this.isStreamH265 = nvl; + }, + + immediate: true + }, + isStreamH265: { + handler: function handler(nvl) { + var _this3 = this; + + if (!nvl) { + //TODO 隐藏加载logo + this.handlePoster(); + var easyPlayerLoadingEle = this.$el.querySelector(".easy-player-loading"); + if (easyPlayerLoadingEle) easyPlayerLoadingEle.style.opacity = 0; + } + var vjs_progress_control = this.$el.querySelector(".vjs-progress-control"); + if (vjs_progress_control && !this.videoUrl.includes(".mp4")) vjs_progress_control.style.opacity = 0; + + if (nvl) { + this.imageUrlDataTimer = setInterval(function () { + return _this3.getH265SnapData(); + }, 5000 * 1000); + } + } + }, + + easyPlayer: { + handler: function handler(player) { + var _this4 = this; + + if (!player) return; + this.loading = true; + setTimeout(function () { + return _this4.setPlayerEventListener(player); + }, 200); + if (this.currentTime) this.seek(this.currentTime); + }, + + immediate: true + }, + + videoUrl: { + handler: function handler(src) { + var _this5 = this; + + if (this.showRightMenu) this.showRightMenu = false; + this.$nextTick(function () { + _this5.noSingleEle = _this5.$el.querySelector(".no-single"); + if (!_this5.easyVideoPlayerInnerEle) _this5.easyVideoPlayerInnerEle = _this5.$el.querySelector(".easy-video-player-inner"); + if (!src) { + if (_this5.noSingleEle) return; + _this5.noSingleEle = document.createElement("div"); + _this5.noSingleEle.classList = 'no-single'; + _this5.noSingleEle.setAttribute('oncontextmenu', 'return false'); + _this5.noSingleEle.style = "display: flex;flex: 1;justify-content: center;align-items: center;color: white;background: black;width: 100%;height: 100%"; + _this5.noSingleEle.innerHTML = _this5.alt; + _this5.easyVideoPlayerInnerEle.appendChild(_this5.noSingleEle); + _this5.destroyPlayer(); + _this5.handlePoster(); + } else { + _this5.playerMessage = []; + _this5.isFirstM3u8 = true; + _this5.isStreamH265 = false; + _this5.handlerVideOption(src); + _this5.initPlayer(); + } + }); + this._is_hls = src.includes(".m3u8"); + }, + + immediate: true + }, + + loading: { + handler: function handler(nvl) { + var _this6 = this; + + this.$nextTick(function () { + setTimeout(function () { + if (_this6.showPlayerMessage) _this6.showPlayerMessage = false; + if (_this6.initLoading) _this6.initLoading = false; + }, 1000 * 5); + var easyPlayerLoadingEle = _this6.$el.querySelector(".easy-player-loading"); + if (easyPlayerLoadingEle) easyPlayerLoadingEle.style.opacity = nvl ? 1 : 0; + if (!nvl && !_this6.playerPlaying) _this6.playerPlaying = true; + }); + }, + + immediate: false + }, + + currentTime: { + handler: function handler(nvl) { + if (nvl) this.seek(nvl); + }, + + immediate: true + }, + + playerPlaying: { + handler: function handler() { + var _this7 = this; + + this.$nextTick(function () { + return _this7.handlePoster(); + }); + } + } + + }, + + data: function data() { + return { + TAG: "EasyPlayer", + degbug: true, + appVersion: appVersion, + pause: false, + playerPlaying: false, + appEnterprise: appEnterprise, + stretch: false, + loading: false, + isFirstPaused: true, + fullscreenIndex: 0, + initLoading: false, + wasmPlayer: null, + playerOption: {}, + playerMessage: [], + easyPlayer: null, + waitingTimer: null, + isStreamH265: false, + endLoadingTimer: null, + startWaitingTime: null, + easyWebrtcPlayer: null, + showPlayerMessage: false, + resolutionDict: { + sd: "标清", + hd: "高清", + fhd: "超清", + yh: "原画" + }, + versionStyle: { + top: 0, + left: 0, + zIndex: 9999, + position: 'absolute', + pointerEvents: 'auto' + }, + videoStyle: {}, + playerPlugins: { + videoJsResolutionSwitcher: { + //多清晰度播放 + default: this.resolutionDefault, //默认清晰度 + dynamicLabel: true + } + }, + eventTimer: null, + restartPlayerTimer: null, + restartSnapshot: null, // 缓存清理快照 + isCacheCleanUp: false, //缓存清理标识 + showMessage: false, // 显示消息 + showMessageTimer: false, // 显示消息 + errorTimeStamp: 0, + isFirstM3u8: true, + showRightMenu: false, + showViewMessage: false, + playLive: true, + playerMuted: true, + videoEle: null, + noSingleEle: null, + easyPlayerLoadingEle: null, + easyVideoPlayerInnerEle: null, + _videoId: null, + _luXiangEle: null, + _recording: false, + _recordOffset: 0, + restartH265Snapshot: null, + _recordArrayBuffer: [], + _cacheArrayBuffer: [], + _is_hls: false, + isSafari: /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent), + imageUrlDataTimer: null, + reloadBool: false, + flvLastFrame: 0, + flvLastFrameTimer: null, + iceConnectionState: null, + iceConnectionStateTimer: null, + mediaRecorder: null, + debounceTimer: null + }; + }, + created: function created() { + this.initVideoJs(); // 设置播放器参数 + if (this.isTransCoding) this.loadWasmKit(); + }, + mounted: function mounted() { + if (this.debug) new __WEBPACK_IMPORTED_MODULE_3_assets_js_vconsole_min___default.a(); + }, + destroyed: function destroyed() { + this.destroyPlayer(); + }, + + + methods: { + handlePoster: function handlePoster() { + if (this.$el.querySelector(".easy-big-play-button")) return; + var vjsPosterEle = this.$el.querySelector('.easy-player-poster'); + if (!vjsPosterEle) return; + var vjsPlayBtnEle = this.$el.querySelector('.easy-play-btn'); + if (vjsPlayBtnEle) return; // 有暂停按钮显示快照 + vjsPosterEle.style.display = this.playerPlaying ? "none" : "block"; + }, + getH265SnapData: function getH265SnapData() { + var _this8 = this; + + var features = flv265.getFeatureList(); + if (features.nativeMP4H265Playback) { + this.flv265Snapshot(); + } else { + var snapshotTimer = void 0, + snap = void 0; + if (this._is_hls) snap = this.easyPlayer.saveImageDateURL();else snap = this.easyPlayer.tech_.flvPlayer.saveImageDateURL(); + if (snap.length < 768 * 1024) return snapshotTimer = setTimeout(function () { + return _this8.getH265SnapData(); + }, 40); + this.restartH265Snapshot = snap; + this.restartSnapshot = null; + snapshotTimer && clearTimeout(snapshotTimer); + snapshotTimer = null; + } + }, + getCurrentTime: function getCurrentTime() { + return this.formatTime(this.easyPlayer.currentTime()); + }, + + + //TODO 快照 + snapshot: function snapshot() { + if (this.isStreamH265) { + if (this._is_hls) return this.easyPlayer.saveLocalSnapshot();else { + if (flv265.getFeatureList().nativeMP4H265Playback) this.saveLocalSnapshot();else this.easyPlayer && this.easyPlayer.tech_.flvPlayer.saveLocalSnapshot(); + } + } else this.saveLocalSnapshot(); + }, + + + //TODO HLS 快进 + seek: function seek(seek_time) { + var _this9 = this; + + var current_time = this.easyPlayer && this.easyPlayer.currentTime && this.easyPlayer.currentTime() || 0; + setTimeout(function () { + if (!_this9.isStreamH265) _this9.easyPlayer && _this9.easyPlayer.currentTime(current_time + seek_time);else _this9.easyPlayer && _this9.easyPlayer.tech_ && _this9.easyPlayer.tech_.flvPlayer && _this9.easyPlayer.tech_.flvPlayer.seekToPercent(seek_time); + }, 200); + }, + + + //TODO 录像 + switchRecording: function switchRecording() { + if (this.isStreamH265) { + if (this._is_hls) return this.easyPlayer.recordSwitch(); + this.easyPlayer && this.easyPlayer.tech_ && this.easyPlayer.tech_.flvPlayer && this.easyPlayer.tech_.flvPlayer.recordSwitch(); + } else this._recordingUIChange(); + }, + changeStretch: function changeStretch() { + this.stretch = !this.stretch; + this.$el.querySelector('.vjs-stretch-control').innerText = this.stretch ? "拉伸" : "标准"; + }, + + + //TODO 退出全屏 + exitFullscreen: function exitFullscreen() { + if (Hls.isSupported()) { + if (this.isStreamH265) __WEBPACK_IMPORTED_MODULE_4_vue_fullscreen__["api"].toggle(this.$el.querySelector('.easy-video-player-inner'), { teleport: false });else this.easyPlayer.exitFullscreen(); + } else { + __WEBPACK_IMPORTED_MODULE_4_vue_fullscreen__["api"].toggle(this.$el.querySelector('.easy-video-player-inner'), { teleport: false }); + } + }, + + + //TODO 全屏 + fullscreen: function fullscreen() { + if (Hls.isSupported()) { + if (this.isStreamH265) __WEBPACK_IMPORTED_MODULE_4_vue_fullscreen__["api"].toggle(this.$el.querySelector('.easy-video-player-inner'), { teleport: false });else this.easyPlayer.requestFullscreen(); + } else { + __WEBPACK_IMPORTED_MODULE_4_vue_fullscreen__["api"].toggle(this.$el.querySelector('.easy-video-player-inner'), { teleport: false }); + } + }, + switchVideo: function switchVideo() { + if (this.isStreamH265) { + if (this._is_hls) return this.easyPlayer.switchPlay(); + this.easyPlayer && this.easyPlayer.tech_ && this.easyPlayer.tech_.flvPlayer && this.easyPlayer.tech_.flvPlayer.switchPlay(); + } else this.$el.querySelector(".vjs-play-control").click(); + }, + switchAudio: function switchAudio() { + if (this.isStreamH265) { + if (this._is_hls) return this.easyPlayer.switchAudio(); + this.easyPlayer && this.easyPlayer.tech_ && this.easyPlayer.tech_.flvPlayer && this.easyPlayer.tech_.flvPlayer.switchAudio(); + } else this.$el.querySelector(".vjs-mute-control").click(); + }, + + + //TODO 设置播放器配置问题 + handlerVideOption: function handlerVideOption(src) { + this.playerOption = null; + var options = { + language: 'zh-CN' // 设置语言 + }; + if (src.includes(".mp4")) { + options.type = 'video/mp4'; + options.techOrder = ["fmp4js", "html5"]; + options.fmp4js = { + config: { live: this.live } + }; + } else if (src.includes(".ogv")) { + options.type = 'video/ogg'; + } else if (src.includes(".flv")) { + options = { + type: 'video/flv', + techOrder: ['html5', 'flvjs'], + flvjs: { + mediaDataSource: { + muted: this.playerMuted, + isLive: this.live, + cors: true, + hasAudio: this.hasAudio, + withCredentials: false, + recordMaxFileSize: this.recordMaxFileSize + }, + config: { + enableStashBuffer: false, + autoCleanupSourceBuffer: true, //对SourceBuffer进行自动清理缓存 + autoCleanupMaxBackwardDuration: 10, //当向后缓冲区持续时间超过此值(以秒为单位)时,请对SourceBuffer进行自动清理 12 60 + autoCleanupMinBackwardDuration: 5, //指示进行自动清除时为反向缓冲区保留的持续时间(以秒为单位)。60 30 + decodeType: this.decodeType, + recordFileName: this.recordFileName + } + } + }; + } else if (src.includes(".m3u8")) { + options = Object.assign(options, { + type: 'application/x-mpegURL', + techOrder: ["hlsjs", "html5", "flvjs"], // 兼容顺序 + html5: { + hls: { + withCredentials: true + } + } + }); + } + var aspectRatio = this.aspect || this.$refs.videoInner.offsetWidth + ":" + this.$refs.videoInner.offsetHeight; + if (src.includes(".m3u8") && !!this.resolution) options = Object.assign(options, { plugins: this.playerPlugins }); //记载默认 + //TODO 合并参数 + this.playerOption = Object.assign(this.defaultPlayerOption, options, { + aspectRatio: aspectRatio, + playbackRates: this.live ? [] : [0.75, 1.0, 1.25, 1.5, 2.0] + }); + }, + + + //TODO 初始化播放器 + initPlayer: function initPlayer() { + var _this10 = this; + + var video_url = this.videoUrl; + if (video_url.startsWith("app://.")) video_url = video_url.replace("app://.", this.remoteHost); + if (this.easyPlayer) this.destroyPlayer(); + if (this.easyWebrtcPlayer) this.destroyPlayer(); + this.setRestartPlay(); // 清除长时间播放内存 无法释放问题 + this.initVideoEle(); //初始化标签对象 + if (this.reloadBool && this.isStreamH265 && this.videoUrl.indexOf(".m3u8") !== -1) return this.initH265Player(12, this.reloadBool); //渲染265 HLS播放器 + this.$nextTick(function () { + return _this10.debounce(function () { + _this10.showVersion(); //TODO 加载播放器版本 + if (video_url.startsWith('webrtc')) return _this10.$nextTick(function () { + return _this10.initWebRTCPlayer(); + }); //初始化webRtc 播放器) + //TODO 判断浏览器是否支持 flvjs + if (flvjs.isSupported()) { + var videoEle = _this10.$el.querySelector("video"); + _this10.easyPlayer = videojs(videoEle, Object.assign(_this10.playerOption, { + url: video_url, + live: _this10.live, + muted: _this10.playerMuted, + resizeManager: false, + language: 'zh-CN' + }), function () { + if (!_this10.reloadBool) _this10._createVideoLoadingEle(); + _this10._createVideoPlayBtnEle(); + if (video_url.includes(".m3u8")) { + fetch(video_url).then(function (res) { + var status = res.status; + + if (status === 200) { + _this10._autoPlay(); + } else if (status === 404) { + if (!_this10.autoplay) document.getElementById(_this10._videoId).parentNode.removeChild(document.querySelector(".easy-big-play-button")); + setTimeout(function () { + return _this10.initPlayer(); + }, 2500); + } + }); + } else { + _this10._autoPlay(); + } + _this10.loadDefinitionStreams(_this10.easyPlayer); //渲染不同分辨率 + _this10.setHLSListener(); //监测是否是HLS265 + _this10._handlerVideoProgress(); + }); + _this10.createPlayerMenusBtn(); + } else { + _this10.initH265Player(12); + } + }, 100); + }); + }, + debounce: function debounce(fn, delay) { + var _this = this; + return function () { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (_this.debounceTimer) clearTimeout(_this.debounceTimer); + // 使用箭头函数来处理this问题 + _this.debounceTimer = setTimeout(function () { + return fn.apply(_this, args); + }, delay); + }(); + }, + setRestartPlay: function setRestartPlay() { + var _this11 = this; + + if (this.videoUrl) { + //只针对flv 长时间播放问题 + if (this.videoUrl.includes(".flv")) this.restartPlayerTimer = setTimeout(function () { + return _this11.restartPlayer(); + }, this.restartTime * 1000); + } else { + this.restartPlayerTimer && clearTimeout(this.restartPlayerTimer); + this.restartPlayerTimer = null; + } + }, + getUUID: function getUUID() { + function S4() { + return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1); + } + + return S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4(); + }, + _autoPlay: function _autoPlay() { + var video_url = this.videoUrl; + if (video_url.startsWith("app://.")) video_url = video_url.replace("app://.", this.remoteHost); + if (!this.autoplay || !this.playerMuted) return this.loading = false; + var type = this.playerOption.type; + + this.easyPlayer.src({ src: video_url, type: type }); + this.easyPlayer.load(); + this.easyPlayer.play(); + }, + + + //TODO WebRTCPlayer 初始化播放器 + initWebRTCPlayer: function initWebRTCPlayer() { + var _this12 = this; + + if (this.easyPlayerLoadingEle === null) this._createVideoLoadingEle(); + if (this.easyWebrtcPlayer === null) { + this.loading = true; + this.easyWebrtcPlayer = new __WEBPACK_IMPORTED_MODULE_10_assets_js_webRtcPlayer_js__["a" /* default */](this.videoUrl, this.easyVideoPlayerInnerEle, this.autoplay, this.easyPlayerLoadingEle, this._videoId, this.iceServers, this.playerMuted, this.recordFileName, this.watermark); + } + this.easyWebrtcPlayer._emitter.on("canplay", function (e) { + _this12.loading = false; + }); + this.easyWebrtcPlayer._emitter.on("waiting", function (e) { + _this12.loading = true; + }); + this.easyWebrtcPlayer._emitter.on("videotimeout", function (e) { + console.log("videotimeout"); + _this12.restartPlayer(); + }); + this.easyWebrtcPlayer._emitter.on("playing", function (e) { + _this12.easyPlayerPlaying(); + _this12.loading = false; + }); + //录像回调 + this.easyWebrtcPlayer._emitter.on("recording", function (data) { + return _this12.$emit("recording", data); + }); + this.easyWebrtcPlayer._emitter.on("touchstart", function (e) { + if (_this12.showRightMenu) _this12.showRightMenu = false; + }); + this.easyWebrtcPlayer._emitter.on("oniceconnectionstatechange", function (e) { + var iceConnectionState = e.currentTarget.iceConnectionState; + + _this12.iceConnectionState = iceConnectionState; + if (iceConnectionState === 'disconnected') { + if (_this12.easyWebrtcPlayer.getImageDataURL()) _this12.restartSnapshot = _this12.easyWebrtcPlayer.getImageDataURL(); + _this12.initPlayer(); + } + }); + + this.iceConnectionStateTimer = setTimeout(function () { + if (_this12.iceConnectionState === 'connected') return; + if (_this12.easyWebrtcPlayer.getImageDataURL()) _this12.restartSnapshot = _this12.easyWebrtcPlayer.getImageDataURL(); + _this12.initPlayer(); + }, 15 * 1000); + }, + play: function play() { + this.easyPlayer.play(); + }, + + //TODO 重新加载数据 + replay: function replay() { + if (this.isStreamH265) return; + this.easyPlayer.load(); + this.easyPlayer.muted = this.playerMuted; + if (this.autoplay) this.easyPlayer.play(); + }, + + + //TODO 重启播放器 + restartPlayer: function restartPlayer() { + this.loading = false; + this.isCacheCleanUp = true; + if (this.imageUrlDataTimer) clearInterval(this.imageUrlDataTimer); + this.imageUrlDataTimer = null; + if (this.isStreamH265) { + this.restartSnapshot = this.restartH265Snapshot; + } else { + this.saveLocalSnapshot(); + } + this.reloadBool = true; + this.initPlayer(); //解决16分配内存溢出问题 + }, + easyPlayerPushMsg: function easyPlayerPushMsg(msg) { + console.log(222222); + this.playerMessage.push(msg); + }, + easyPlayerCleanMsg: function easyPlayerCleanMsg() { + this.playerMessage = []; + }, + loadWasmKit: function loadWasmKit() { + loadWasmModule(this.remoteHost); + window.easyPlayerWasmModule = wasModule; + + var EasyPlayerWasmKits = function () { + function EasyPlayerWasmKits(_self) { + _classCallCheck(this, EasyPlayerWasmKits); + + this.initModule = null; + this.deinitModule = null; + this.yuvData = null; + this.convertFrame2Image = null; + this._self = _self; + } + + _createClass(EasyPlayerWasmKits, [{ + key: "loadWebAssembly", + value: function loadWebAssembly() { + var _this13 = this; + + window.easyPlayerWasmModule.onRuntimeInitialized = function () { + _this13.initModule = window.easyPlayerWasmModule.cwrap('WasmDecoder_Init', 'number'); + _this13.deinitModule = window.easyPlayerWasmModule.cwrap('WasmDecoder_Deinit', 'number'); + _this13.convertFrame2Image = window.easyPlayerWasmModule.cwrap('WasmDecoder_ConvertFrame2Image', 'number', ['number', 'number', 'number', 'number', 'number']); + _this13.applyMemory(); + _this13.initModule(); + console.debug('WASM initialized done!'); + _this13._self.$emit("wasmIsReady", true); + }; + } + }, { + key: "applyMemory", + value: function applyMemory() { + this.yuvData = window.easyPlayerWasmModule._malloc(4000 * 2000 * 4); + } + }, { + key: "freeMemory", + value: function freeMemory() { + window.easyPlayerWasmModule._free(this.yuvData); + } + }]); + + return EasyPlayerWasmKits; + }(); + + var easyPlayerWasmKits = new EasyPlayerWasmKits(this); + easyPlayerWasmKits.loadWebAssembly(); + window.easyPlayerWasmKits = easyPlayerWasmKits; + }, + dateFormat: function dateFormat(date, fmt) { + var ret = void 0; + var opt = { + 'Y+': date.getFullYear().toString(), // 年 + 'M+': (date.getMonth() + 1).toString(), // 月 + 'D+': date.getDate().toString(), // 日 + 'h+': date.getHours().toString(), // 时 + 'm+': date.getMinutes().toString(), // 分 + 's+': date.getSeconds().toString() // 秒 + // 有其他格式化字符需求可以继续添加,必须转化成字符串 + }; + for (var k in opt) { + ret = new RegExp('(' + k + ')').exec(fmt); + if (ret) { + fmt = fmt.replace(ret[1], ret[1].length === 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')); + } + } + return fmt; + }, + changeStream: function changeStream(stream) { + var type = 'video/mp4'; + if (stream) type = 'video/mp4'; + if (stream) type = 'video/ogg'; + if (stream) type = 'video/x-flv'; + if (stream) type = 'application/x-mpegURL'; + if (this.easyPlayer) { + this.easyPlayer.src({ src: stream, type: type }); + } + }, + isIPhone: function isIPhone() { + try { + document.createEvent("TouchEvent"); + return navigator.userAgent.toLocaleLowerCase().includes("mac os"); + } catch (e) { + return false; + } + }, + formatTime: function formatTime(time) { + time = Math.floor(time); + var h = parseInt(time / 3600); + var minute = parseInt(time / 60 % 60); + var second = Math.ceil(time % 60); + var hours = h < 10 ? '0' + h : h; + var formatSecond = second > 59 ? 59 : second; + return "" + (hours > 0 ? hours + ":" : '00:') + (minute < 10 ? '0' + minute : minute) + ":" + (formatSecond < 10 ? '0' + formatSecond : formatSecond); + }, + destroyPlayer: function destroyPlayer() { + var easyPlayerLoading = this.$el.querySelector(".easy-player-loading"); + if (easyPlayerLoading) easyPlayerLoading.parentNode.removeChild(easyPlayerLoading); + this.initLoading = true; + this.isFirstPaused = true; + this.playerPlaying = false; + if (this.loading) this.loading = false; + if (this.easyPlayer && this.easyPlayer.dispose) this.easyPlayer.dispose(); + if (this.easyPlayer && this.easyPlayer.destroy) this.easyPlayer.destroy(); + if (this.easyWebrtcPlayer) this.easyWebrtcPlayer.destroy(); + if (this.imageUrlDataTimer) clearTimeout(this.imageUrlDataTimer); + if (this.wasmPlayer) this.wasmPlayer.destroy(); + this.videoEle = this.$el.querySelector("video"); + if (this.videoEle && this.videoEle.parentNode) this.videoEle.parentNode.removeChild(this.videoEle); + this.eventTimer && clearTimeout(this.eventTimer); + this.showMessageTimer && clearTimeout(this.showMessageTimer); + this.restartPlayerTimer && clearTimeout(this.restartPlayerTimer); + this.imageUrlDataTimer = null; + this.wasmPlayer = null; + this.easyPlayer = null; + this.eventTimer = null; + this.videoEle = null; + this.easyWebrtcPlayer = null; + this.showMessageTimer = null; + this.restartPlayerTimer = null; + if (!this.isStreamH265) return; + this.isStreamH265 = false; + if (this.isTransCoding) { + window.easyPlayerWasmModule = null; + window.easyPlayerWasmKits = null; + } + + this.debounceTimer && clearTimeout(this.debounceTimer); + this.iceConnectionStateTimer && clearTimeout(this.iceConnectionStateTimer); + this.debounceTimer = null; + this.iceConnectionState = null; + this.iceConnectionStateTimer = null; + } + } + +}); + +/***/ }), + +/***/ "UXd7": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = exports; +var BN = __webpack_require__("u/Wk"); +var minAssert = __webpack_require__("tSXQ"); +var minUtils = __webpack_require__("jgf2"); + +utils.assert = minAssert; +utils.toArray = minUtils.toArray; +utils.zero2 = minUtils.zero2; +utils.toHex = minUtils.toHex; +utils.encode = minUtils.encode; + +// Represent num in a w-NAF form +function getNAF(num, w, bits) { + var naf = new Array(Math.max(num.bitLength(), bits) + 1); + naf.fill(0); + + var ws = 1 << (w + 1); + var k = num.clone(); + + for (var i = 0; i < naf.length; i++) { + var z; + var mod = k.andln(ws - 1); + if (k.isOdd()) { + if (mod > (ws >> 1) - 1) + z = (ws >> 1) - mod; + else + z = mod; + k.isubn(z); + } else { + z = 0; + } + + naf[i] = z; + k.iushrn(1); + } + + return naf; +} +utils.getNAF = getNAF; + +// Represent k1, k2 in a Joint Sparse Form +function getJSF(k1, k2) { + var jsf = [ + [], + [], + ]; + + k1 = k1.clone(); + k2 = k2.clone(); + var d1 = 0; + var d2 = 0; + var m8; + while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) { + // First phase + var m14 = (k1.andln(3) + d1) & 3; + var m24 = (k2.andln(3) + d2) & 3; + if (m14 === 3) + m14 = -1; + if (m24 === 3) + m24 = -1; + var u1; + if ((m14 & 1) === 0) { + u1 = 0; + } else { + m8 = (k1.andln(7) + d1) & 7; + if ((m8 === 3 || m8 === 5) && m24 === 2) + u1 = -m14; + else + u1 = m14; + } + jsf[0].push(u1); + + var u2; + if ((m24 & 1) === 0) { + u2 = 0; + } else { + m8 = (k2.andln(7) + d2) & 7; + if ((m8 === 3 || m8 === 5) && m14 === 2) + u2 = -m24; + else + u2 = m24; + } + jsf[1].push(u2); + + // Second phase + if (2 * d1 === u1 + 1) + d1 = 1 - d1; + if (2 * d2 === u2 + 1) + d2 = 1 - d2; + k1.iushrn(1); + k2.iushrn(1); + } + + return jsf; +} +utils.getJSF = getJSF; + +function cachedProperty(obj, name, computer) { + var key = '_' + name; + obj.prototype[name] = function cachedProperty() { + return this[key] !== undefined ? this[key] : + this[key] = computer.call(this); + }; +} +utils.cachedProperty = cachedProperty; + +function parseBytes(bytes) { + return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') : + bytes; +} +utils.parseBytes = parseBytes; + +function intFromLE(bytes) { + return new BN(bytes, 'hex', 'le'); +} +utils.intFromLE = intFromLE; + + + +/***/ }), + +/***/ "UZZ8": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var assert = __webpack_require__("tSXQ"); + +function Cipher(options) { + this.options = options; + + this.type = this.options.type; + this.blockSize = 8; + this._init(); + + this.buffer = new Array(this.blockSize); + this.bufferOff = 0; +} +module.exports = Cipher; + +Cipher.prototype._init = function _init() { + // Might be overrided +}; + +Cipher.prototype.update = function update(data) { + if (data.length === 0) + return []; + + if (this.type === 'decrypt') + return this._updateDecrypt(data); + else + return this._updateEncrypt(data); +}; + +Cipher.prototype._buffer = function _buffer(data, off) { + // Append data to buffer + var min = Math.min(this.buffer.length - this.bufferOff, data.length - off); + for (var i = 0; i < min; i++) + this.buffer[this.bufferOff + i] = data[off + i]; + this.bufferOff += min; + + // Shift next + return min; +}; + +Cipher.prototype._flushBuffer = function _flushBuffer(out, off) { + this._update(this.buffer, 0, out, off); + this.bufferOff = 0; + return this.blockSize; +}; + +Cipher.prototype._updateEncrypt = function _updateEncrypt(data) { + var inputOff = 0; + var outputOff = 0; + + var count = ((this.bufferOff + data.length) / this.blockSize) | 0; + var out = new Array(count * this.blockSize); + + if (this.bufferOff !== 0) { + inputOff += this._buffer(data, inputOff); + + if (this.bufferOff === this.buffer.length) + outputOff += this._flushBuffer(out, outputOff); + } + + // Write blocks + var max = data.length - ((data.length - inputOff) % this.blockSize); + for (; inputOff < max; inputOff += this.blockSize) { + this._update(data, inputOff, out, outputOff); + outputOff += this.blockSize; + } + + // Queue rest + for (; inputOff < data.length; inputOff++, this.bufferOff++) + this.buffer[this.bufferOff] = data[inputOff]; + + return out; +}; + +Cipher.prototype._updateDecrypt = function _updateDecrypt(data) { + var inputOff = 0; + var outputOff = 0; + + var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1; + var out = new Array(count * this.blockSize); + + // TODO(indutny): optimize it, this is far from optimal + for (; count > 0; count--) { + inputOff += this._buffer(data, inputOff); + outputOff += this._flushBuffer(out, outputOff); + } + + // Buffer rest of the input + inputOff += this._buffer(data, inputOff); + + return out; +}; + +Cipher.prototype.final = function final(buffer) { + var first; + if (buffer) + first = this.update(buffer); + + var last; + if (this.type === 'encrypt') + last = this._finalEncrypt(); + else + last = this._finalDecrypt(); + + if (first) + return first.concat(last); + else + return last; +}; + +Cipher.prototype._pad = function _pad(buffer, off) { + if (off === 0) + return false; + + while (off < buffer.length) + buffer[off++] = 0; + + return true; +}; + +Cipher.prototype._finalEncrypt = function _finalEncrypt() { + if (!this._pad(this.buffer, this.bufferOff)) + return []; + + var out = new Array(this.blockSize); + this._update(this.buffer, 0, out, 0); + return out; +}; + +Cipher.prototype._unpad = function _unpad(buffer) { + return buffer; +}; + +Cipher.prototype._finalDecrypt = function _finalDecrypt() { + assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt'); + var out = new Array(this.blockSize); + this._flushBuffer(out, 0); + + return this._unpad(out); +}; + + +/***/ }), + +/***/ "UgYt": +/***/ (function(module, exports) { + +module.exports = {"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}} + +/***/ }), + +/***/ "UjI3": +/***/ (function(module, exports, __webpack_require__) { + +var asn1 = __webpack_require__("uWRE") +var aesid = __webpack_require__("ZUGU") +var fixProc = __webpack_require__("aX9k") +var ciphers = __webpack_require__("pmUU") +var compat = __webpack_require__("uCaM") +var Buffer = __webpack_require__("DLTi").Buffer +module.exports = parseKeys + +function parseKeys (buffer) { + var password + if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) { + password = buffer.passphrase + buffer = buffer.key + } + if (typeof buffer === 'string') { + buffer = Buffer.from(buffer) + } + + var stripped = fixProc(buffer, password) + + var type = stripped.tag + var data = stripped.data + var subtype, ndata + switch (type) { + case 'CERTIFICATE': + ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo + // falls through + case 'PUBLIC KEY': + if (!ndata) { + ndata = asn1.PublicKey.decode(data, 'der') + } + subtype = ndata.algorithm.algorithm.join('.') + switch (subtype) { + case '1.2.840.113549.1.1.1': + return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der') + case '1.2.840.10045.2.1': + ndata.subjectPrivateKey = ndata.subjectPublicKey + return { + type: 'ec', + data: ndata + } + case '1.2.840.10040.4.1': + ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der') + return { + type: 'dsa', + data: ndata.algorithm.params + } + default: throw new Error('unknown key id ' + subtype) + } + // throw new Error('unknown key type ' + type) + case 'ENCRYPTED PRIVATE KEY': + data = asn1.EncryptedPrivateKey.decode(data, 'der') + data = decrypt(data, password) + // falls through + case 'PRIVATE KEY': + ndata = asn1.PrivateKey.decode(data, 'der') + subtype = ndata.algorithm.algorithm.join('.') + switch (subtype) { + case '1.2.840.113549.1.1.1': + return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der') + case '1.2.840.10045.2.1': + return { + curve: ndata.algorithm.curve, + privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey + } + case '1.2.840.10040.4.1': + ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der') + return { + type: 'dsa', + params: ndata.algorithm.params + } + default: throw new Error('unknown key id ' + subtype) + } + // throw new Error('unknown key type ' + type) + case 'RSA PUBLIC KEY': + return asn1.RSAPublicKey.decode(data, 'der') + case 'RSA PRIVATE KEY': + return asn1.RSAPrivateKey.decode(data, 'der') + case 'DSA PRIVATE KEY': + return { + type: 'dsa', + params: asn1.DSAPrivateKey.decode(data, 'der') + } + case 'EC PRIVATE KEY': + data = asn1.ECPrivateKey.decode(data, 'der') + return { + curve: data.parameters.value, + privateKey: data.privateKey + } + default: throw new Error('unknown key type ' + type) + } +} +parseKeys.signature = asn1.signature +function decrypt (data, password) { + var salt = data.algorithm.decrypt.kde.kdeparams.salt + var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10) + var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')] + var iv = data.algorithm.decrypt.cipher.iv + var cipherText = data.subjectPrivateKey + var keylen = parseInt(algo.split('-')[1], 10) / 8 + var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1') + var cipher = ciphers.createDecipheriv(algo, key, iv) + var out = [] + out.push(cipher.update(cipherText)) + out.push(cipher.final()) + return Buffer.concat(out) +} + + +/***/ }), + +/***/ "Upxq": +/***/ (function(module, exports) { + +exports['des-ecb'] = { + key: 8, + iv: 0 +} +exports['des-cbc'] = exports.des = { + key: 8, + iv: 8 +} +exports['des-ede3-cbc'] = exports.des3 = { + key: 24, + iv: 8 +} +exports['des-ede3'] = { + key: 24, + iv: 0 +} +exports['des-ede-cbc'] = { + key: 16, + iv: 8 +} +exports['des-ede'] = { + key: 16, + iv: 0 +} + + +/***/ }), + +/***/ "V0EG": +/***/ (function(module, exports) { + +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + + +/***/ }), + +/***/ "V4m7": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Lithuanian [lt] +//! author : Mindaugas Mozūras : https://github.com/mmozuras + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var units = { + 'm' : 'minutė_minutės_minutę', + 'mm': 'minutės_minučių_minutes', + 'h' : 'valanda_valandos_valandą', + 'hh': 'valandos_valandų_valandas', + 'd' : 'diena_dienos_dieną', + 'dd': 'dienos_dienų_dienas', + 'M' : 'mėnuo_mėnesio_mėnesį', + 'MM': 'mėnesiai_mėnesių_mėnesius', + 'y' : 'metai_metų_metus', + 'yy': 'metai_metų_metus' +}; +function translateSeconds(number, withoutSuffix, key, isFuture) { + if (withoutSuffix) { + return 'kelios sekundės'; + } else { + return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; + } +} +function translateSingular(number, withoutSuffix, key, isFuture) { + return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); +} +function special(number) { + return number % 10 === 0 || (number > 10 && number < 20); +} +function forms(key) { + return units[key].split('_'); +} +function translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + if (number === 1) { + return result + translateSingular(number, withoutSuffix, key[0], isFuture); + } else if (withoutSuffix) { + return result + (special(number) ? forms(key)[1] : forms(key)[0]); + } else { + if (isFuture) { + return result + forms(key)[1]; + } else { + return result + (special(number) ? forms(key)[1] : forms(key)[2]); + } + } +} +var lt = moment.defineLocale('lt', { + months : { + format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'), + standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'), + isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/ + }, + monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), + weekdays : { + format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'), + standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'), + isFormat: /dddd HH:mm/ + }, + weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), + weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'YYYY [m.] MMMM D [d.]', + LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', + l : 'YYYY-MM-DD', + ll : 'YYYY [m.] MMMM D [d.]', + lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' + }, + calendar : { + sameDay : '[Šiandien] LT', + nextDay : '[Rytoj] LT', + nextWeek : 'dddd LT', + lastDay : '[Vakar] LT', + lastWeek : '[Praėjusį] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : 'po %s', + past : 'prieš %s', + s : translateSeconds, + m : translateSingular, + mm : translate, + h : translateSingular, + hh : translate, + d : translateSingular, + dd : translate, + M : translateSingular, + MM : translate, + y : translateSingular, + yy : translate + }, + dayOfMonthOrdinalParse: /\d{1,2}-oji/, + ordinal : function (number) { + return number + '-oji'; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return lt; + +}))); + + +/***/ }), + +/***/ "V61e": +/***/ (function(module, exports, __webpack_require__) { + +var xor = __webpack_require__("EUFM") +var Buffer = __webpack_require__("DLTi").Buffer +var incr32 = __webpack_require__("5zLF") + +function getBlock (self) { + var out = self._cipher.encryptBlockRaw(self._prev) + incr32(self._prev) + return out +} + +var blockSize = 16 +exports.encrypt = function (self, chunk) { + var chunkNum = Math.ceil(chunk.length / blockSize) + var start = self._cache.length + self._cache = Buffer.concat([ + self._cache, + Buffer.allocUnsafe(chunkNum * blockSize) + ]) + for (var i = 0; i < chunkNum; i++) { + var out = getBlock(self) + var offset = start + i * blockSize + self._cache.writeUInt32BE(out[0], offset + 0) + self._cache.writeUInt32BE(out[1], offset + 4) + self._cache.writeUInt32BE(out[2], offset + 8) + self._cache.writeUInt32BE(out[3], offset + 12) + } + var pad = self._cache.slice(0, chunk.length) + self._cache = self._cache.slice(chunk.length) + return xor(chunk, pad) +} + + +/***/ }), + +/***/ "VITF": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Portuguese [pt] +//! author : Jefferson : https://github.com/jalex79 + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var pt = moment.defineLocale('pt', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : 'em %s', + past : 'há %s', + s : 'segundos', + m : 'um minuto', + mm : '%d minutos', + h : 'uma hora', + hh : '%d horas', + d : 'um dia', + dd : '%d dias', + M : 'um mês', + MM : '%d meses', + y : 'um ano', + yy : '%d anos' + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return pt; + +}))); + + +/***/ }), + +/***/ "WBsi": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const encoders = __webpack_require__("J1E3"); +const decoders = __webpack_require__("IhCH"); +const inherits = __webpack_require__("mwrz"); + +const api = exports; + +api.define = function define(name, body) { + return new Entity(name, body); +}; + +function Entity(name, body) { + this.name = name; + this.body = body; + + this.decoders = {}; + this.encoders = {}; +} + +Entity.prototype._createNamed = function createNamed(Base) { + const name = this.name; + + function Generated(entity) { + this._initNamed(entity, name); + } + inherits(Generated, Base); + Generated.prototype._initNamed = function _initNamed(entity, name) { + Base.call(this, entity, name); + }; + + return new Generated(this); +}; + +Entity.prototype._getDecoder = function _getDecoder(enc) { + enc = enc || 'der'; + // Lazily create decoder + if (!this.decoders.hasOwnProperty(enc)) + this.decoders[enc] = this._createNamed(decoders[enc]); + return this.decoders[enc]; +}; + +Entity.prototype.decode = function decode(data, enc, options) { + return this._getDecoder(enc).decode(data, options); +}; + +Entity.prototype._getEncoder = function _getEncoder(enc) { + enc = enc || 'der'; + // Lazily create encoder + if (!this.encoders.hasOwnProperty(enc)) + this.encoders[enc] = this._createNamed(encoders[enc]); + return this.encoders[enc]; +}; + +Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) { + return this._getEncoder(enc).encode(data, reporter); +}; + + +/***/ }), + +/***/ "WLIv": +/***/ (function(module, exports, __webpack_require__) { + +var map = { + "./af": "MZ/r", + "./af.js": "MZ/r", + "./ar": "2SrI", + "./ar-dz": "5K7w", + "./ar-dz.js": "5K7w", + "./ar-kw": "685M", + "./ar-kw.js": "685M", + "./ar-ly": "XmPa", + "./ar-ly.js": "XmPa", + "./ar-ma": "rSD6", + "./ar-ma.js": "rSD6", + "./ar-sa": "KHlb", + "./ar-sa.js": "KHlb", + "./ar-tn": "8IHL", + "./ar-tn.js": "8IHL", + "./ar.js": "2SrI", + "./az": "YOCL", + "./az.js": "YOCL", + "./be": "4aDo", + "./be.js": "4aDo", + "./bg": "hVm5", + "./bg.js": "hVm5", + "./bn": "3SLs", + "./bn.js": "3SLs", + "./bo": "5qzm", + "./bo.js": "5qzm", + "./br": "1+vN", + "./br.js": "1+vN", + "./bs": "CLFx", + "./bs.js": "CLFx", + "./ca": "tQa5", + "./ca.js": "tQa5", + "./cs": "CVPH", + "./cs.js": "CVPH", + "./cv": "WjBq", + "./cv.js": "WjBq", + "./cy": "6fEV", + "./cy.js": "6fEV", + "./da": "dA0k", + "./da.js": "dA0k", + "./de": "PmB6", + "./de-at": "RX7Q", + "./de-at.js": "RX7Q", + "./de-ch": "eoKO", + "./de-ch.js": "eoKO", + "./de.js": "PmB6", + "./dv": "/2GC", + "./dv.js": "/2GC", + "./el": "dqCQ", + "./el.js": "dqCQ", + "./en-au": "9tLW", + "./en-au.js": "9tLW", + "./en-ca": "aVgu", + "./en-ca.js": "aVgu", + "./en-gb": "ZmRN", + "./en-gb.js": "ZmRN", + "./en-ie": "a0aM", + "./en-ie.js": "a0aM", + "./en-nz": "avAl", + "./en-nz.js": "avAl", + "./eo": "F/Pz", + "./eo.js": "F/Pz", + "./es": "Pklo", + "./es-do": "fu1J", + "./es-do.js": "fu1J", + "./es.js": "Pklo", + "./et": "E0Es", + "./et.js": "E0Es", + "./eu": "DAAj", + "./eu.js": "DAAj", + "./fa": "l8vI", + "./fa.js": "l8vI", + "./fi": "oHAo", + "./fi.js": "oHAo", + "./fo": "i5zi", + "./fo.js": "i5zi", + "./fr": "itWY", + "./fr-ca": "r8ui", + "./fr-ca.js": "r8ui", + "./fr-ch": "F+fs", + "./fr-ch.js": "F+fs", + "./fr.js": "itWY", + "./fy": "SWEK", + "./fy.js": "SWEK", + "./gd": "6z9i", + "./gd.js": "6z9i", + "./gl": "uII7", + "./gl.js": "uII7", + "./gom-latn": "lZMt", + "./gom-latn.js": "lZMt", + "./he": "rHed", + "./he.js": "rHed", + "./hi": "B9Ct", + "./hi.js": "B9Ct", + "./hr": "Kscr", + "./hr.js": "Kscr", + "./hu": "0+t1", + "./hu.js": "0+t1", + "./hy-am": "7uVc", + "./hy-am.js": "7uVc", + "./id": "fKUc", + "./id.js": "fKUc", + "./is": "X6sm", + "./is.js": "X6sm", + "./it": "yT5j", + "./it.js": "yT5j", + "./ja": "yBT0", + "./ja.js": "yBT0", + "./jv": "Pbao", + "./jv.js": "Pbao", + "./ka": "z24t", + "./ka.js": "z24t", + "./kk": "PNoM", + "./kk.js": "PNoM", + "./km": "sx5x", + "./km.js": "sx5x", + "./kn": "KEXE", + "./kn.js": "KEXE", + "./ko": "Mpd7", + "./ko.js": "Mpd7", + "./ky": "0Owf", + "./ky.js": "0Owf", + "./lb": "TJQU", + "./lb.js": "TJQU", + "./lo": "/XLp", + "./lo.js": "/XLp", + "./lt": "V4m7", + "./lt.js": "V4m7", + "./lv": "fnIC", + "./lv.js": "fnIC", + "./me": "ERFu", + "./me.js": "ERFu", + "./mi": "XWYz", + "./mi.js": "XWYz", + "./mk": "ta5z", + "./mk.js": "ta5z", + "./ml": "9CN6", + "./ml.js": "9CN6", + "./mr": "jAG7", + "./mr.js": "jAG7", + "./ms": "2IbP", + "./ms-my": "dvkb", + "./ms-my.js": "dvkb", + "./ms.js": "2IbP", + "./my": "smKJ", + "./my.js": "smKJ", + "./nb": "UJSw", + "./nb.js": "UJSw", + "./ne": "sMpF", + "./ne.js": "sMpF", + "./nl": "pCCv", + "./nl-be": "Kdoe", + "./nl-be.js": "Kdoe", + "./nl.js": "pCCv", + "./nn": "qp9e", + "./nn.js": "qp9e", + "./pa-in": "iv9Z", + "./pa-in.js": "iv9Z", + "./pl": "B0bw", + "./pl.js": "B0bw", + "./pt": "VITF", + "./pt-br": "k2Hi", + "./pt-br.js": "k2Hi", + "./pt.js": "VITF", + "./ro": "6Xwq", + "./ro.js": "6Xwq", + "./ru": "5wIR", + "./ru.js": "5wIR", + "./sd": "e8j/", + "./sd.js": "e8j/", + "./se": "f8oB", + "./se.js": "f8oB", + "./si": "cYbR", + "./si.js": "cYbR", + "./sk": "79e1", + "./sk.js": "79e1", + "./sl": "nI9g", + "./sl.js": "nI9g", + "./sq": "GhpG", + "./sq.js": "GhpG", + "./sr": "4SnW", + "./sr-cyrl": "qZQ+", + "./sr-cyrl.js": "qZQ+", + "./sr.js": "4SnW", + "./ss": "sAlL", + "./ss.js": "sAlL", + "./sv": "mrBI", + "./sv.js": "mrBI", + "./sw": "Sa/j", + "./sw.js": "Sa/j", + "./ta": "tcza", + "./ta.js": "tcza", + "./te": "tg83", + "./te.js": "tg83", + "./tet": "1uDJ", + "./tet.js": "1uDJ", + "./th": "yGpx", + "./th.js": "yGpx", + "./tl-ph": "HlKL", + "./tl-ph.js": "HlKL", + "./tlh": "LieX", + "./tlh.js": "LieX", + "./tr": "T4CU", + "./tr.js": "T4CU", + "./tzl": "scLB", + "./tzl.js": "scLB", + "./tzm": "JHAD", + "./tzm-latn": "IRrX", + "./tzm-latn.js": "IRrX", + "./tzm.js": "JHAD", + "./uk": "AfJp", + "./uk.js": "AfJp", + "./ur": "t4nw", + "./ur.js": "t4nw", + "./uz": "87iJ", + "./uz-latn": "C630", + "./uz-latn.js": "C630", + "./uz.js": "87iJ", + "./vi": "LqeL", + "./vi.js": "LqeL", + "./x-pseudo": "iHgk", + "./x-pseudo.js": "iHgk", + "./yo": "pXNo", + "./yo.js": "pXNo", + "./zh-cn": "xL1n", + "./zh-cn.js": "xL1n", + "./zh-hk": "TjCN", + "./zh-hk.js": "TjCN", + "./zh-tw": "lejb", + "./zh-tw.js": "lejb" +}; +function webpackContext(req) { + return __webpack_require__(webpackContextResolve(req)); +}; +function webpackContextResolve(req) { + var id = map[req]; + if(!(id + 1)) // check for number or string + throw new Error("Cannot find module '" + req + "'."); + return id; +}; +webpackContext.keys = function webpackContextKeys() { + return Object.keys(map); +}; +webpackContext.resolve = webpackContextResolve; +module.exports = webpackContext; +webpackContext.id = "WLIv"; + +/***/ }), + +/***/ "WTPY": +/***/ (function(module, exports, __webpack_require__) { + +exports = module.exports = __webpack_require__("y+MR"); +exports.Stream = exports; +exports.Readable = exports; +exports.Writable = __webpack_require__("BMRL"); +exports.Duplex = __webpack_require__("4zZu"); +exports.Transform = __webpack_require__("4mOe"); +exports.PassThrough = __webpack_require__("LHnZ"); +exports.finished = __webpack_require__("h8TZ"); +exports.pipeline = __webpack_require__("Wfcu"); + + +/***/ }), + +/***/ "WXsb": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const inherits = __webpack_require__("mwrz"); + +function Reporter(options) { + this._reporterState = { + obj: null, + path: [], + options: options || {}, + errors: [] + }; +} +exports.Reporter = Reporter; + +Reporter.prototype.isError = function isError(obj) { + return obj instanceof ReporterError; +}; + +Reporter.prototype.save = function save() { + const state = this._reporterState; + + return { obj: state.obj, pathLen: state.path.length }; +}; + +Reporter.prototype.restore = function restore(data) { + const state = this._reporterState; + + state.obj = data.obj; + state.path = state.path.slice(0, data.pathLen); +}; + +Reporter.prototype.enterKey = function enterKey(key) { + return this._reporterState.path.push(key); +}; + +Reporter.prototype.exitKey = function exitKey(index) { + const state = this._reporterState; + + state.path = state.path.slice(0, index - 1); +}; + +Reporter.prototype.leaveKey = function leaveKey(index, key, value) { + const state = this._reporterState; + + this.exitKey(index); + if (state.obj !== null) + state.obj[key] = value; +}; + +Reporter.prototype.path = function path() { + return this._reporterState.path.join('/'); +}; + +Reporter.prototype.enterObject = function enterObject() { + const state = this._reporterState; + + const prev = state.obj; + state.obj = {}; + return prev; +}; + +Reporter.prototype.leaveObject = function leaveObject(prev) { + const state = this._reporterState; + + const now = state.obj; + state.obj = prev; + return now; +}; + +Reporter.prototype.error = function error(msg) { + let err; + const state = this._reporterState; + + const inherited = msg instanceof ReporterError; + if (inherited) { + err = msg; + } else { + err = new ReporterError(state.path.map(function(elem) { + return '[' + JSON.stringify(elem) + ']'; + }).join(''), msg.message || msg, msg.stack); + } + + if (!state.options.partial) + throw err; + + if (!inherited) + state.errors.push(err); + + return err; +}; + +Reporter.prototype.wrapResult = function wrapResult(result) { + const state = this._reporterState; + if (!state.options.partial) + return result; + + return { + result: this.isError(result) ? null : result, + errors: state.errors + }; +}; + +function ReporterError(path, msg) { + this.path = path; + this.rethrow(msg); +} +inherits(ReporterError, Error); + +ReporterError.prototype.rethrow = function rethrow(msg) { + this.message = msg + ' at: ' + (this.path || '(shallow)'); + if (Error.captureStackTrace) + Error.captureStackTrace(this, ReporterError); + + if (!this.stack) { + try { + // IE only adds stack when thrown + throw new Error(this.message); + } catch (e) { + this.stack = e.stack; + } + } + return this; +}; + + +/***/ }), + +/***/ "Wfcu": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Ported from https://github.com/mafintosh/pump with +// permission from the author, Mathias Buus (@mafintosh). + + +var eos; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + callback.apply(void 0, arguments); + }; +} + +var _require$codes = __webpack_require__("DzCi").codes, + ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; + +function noop(err) { + // Rethrow the error if it exists to avoid swallowing it + if (err) throw err; +} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function destroyer(stream, reading, writing, callback) { + callback = once(callback); + var closed = false; + stream.on('close', function () { + closed = true; + }); + if (eos === undefined) eos = __webpack_require__("h8TZ"); + eos(stream, { + readable: reading, + writable: writing + }, function (err) { + if (err) return callback(err); + closed = true; + callback(); + }); + var destroyed = false; + return function (err) { + if (closed) return; + if (destroyed) return; + destroyed = true; // request.destroy just do .end - .abort is what we want + + if (isRequest(stream)) return stream.abort(); + if (typeof stream.destroy === 'function') return stream.destroy(); + callback(err || new ERR_STREAM_DESTROYED('pipe')); + }; +} + +function call(fn) { + fn(); +} + +function pipe(from, to) { + return from.pipe(to); +} + +function popCallback(streams) { + if (!streams.length) return noop; + if (typeof streams[streams.length - 1] !== 'function') return noop; + return streams.pop(); +} + +function pipeline() { + for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { + streams[_key] = arguments[_key]; + } + + var callback = popCallback(streams); + if (Array.isArray(streams[0])) streams = streams[0]; + + if (streams.length < 2) { + throw new ERR_MISSING_ARGS('streams'); + } + + var error; + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1; + var writing = i > 0; + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err; + if (err) destroys.forEach(call); + if (reading) return; + destroys.forEach(call); + callback(error); + }); + }); + return streams.reduce(pipe); +} + +module.exports = pipeline; + +/***/ }), + +/***/ "WjBq": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Chuvash [cv] +//! author : Anatoly Mironov : https://github.com/mirontoli + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var cv = moment.defineLocale('cv', { + months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), + monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), + weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), + weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), + weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', + LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', + LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' + }, + calendar : { + sameDay: '[Паян] LT [сехетре]', + nextDay: '[Ыран] LT [сехетре]', + lastDay: '[Ӗнер] LT [сехетре]', + nextWeek: '[Ҫитес] dddd LT [сехетре]', + lastWeek: '[Иртнӗ] dddd LT [сехетре]', + sameElse: 'L' + }, + relativeTime : { + future : function (output) { + var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; + return output + affix; + }, + past : '%s каялла', + s : 'пӗр-ик ҫеккунт', + m : 'пӗр минут', + mm : '%d минут', + h : 'пӗр сехет', + hh : '%d сехет', + d : 'пӗр кун', + dd : '%d кун', + M : 'пӗр уйӑх', + MM : '%d уйӑх', + y : 'пӗр ҫул', + yy : '%d ҫул' + }, + dayOfMonthOrdinalParse: /\d{1,2}-мӗш/, + ordinal : '%d-мӗш', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return cv; + +}))); + + +/***/ }), + +/***/ "X6sm": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Icelandic [is] +//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +function plural(n) { + if (n % 100 === 11) { + return true; + } else if (n % 10 === 1) { + return false; + } + return true; +} +function translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': + return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; + case 'm': + return withoutSuffix ? 'mínúta' : 'mínútu'; + case 'mm': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); + } else if (withoutSuffix) { + return result + 'mínúta'; + } + return result + 'mínútu'; + case 'hh': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); + } + return result + 'klukkustund'; + case 'd': + if (withoutSuffix) { + return 'dagur'; + } + return isFuture ? 'dag' : 'degi'; + case 'dd': + if (plural(number)) { + if (withoutSuffix) { + return result + 'dagar'; + } + return result + (isFuture ? 'daga' : 'dögum'); + } else if (withoutSuffix) { + return result + 'dagur'; + } + return result + (isFuture ? 'dag' : 'degi'); + case 'M': + if (withoutSuffix) { + return 'mánuður'; + } + return isFuture ? 'mánuð' : 'mánuði'; + case 'MM': + if (plural(number)) { + if (withoutSuffix) { + return result + 'mánuðir'; + } + return result + (isFuture ? 'mánuði' : 'mánuðum'); + } else if (withoutSuffix) { + return result + 'mánuður'; + } + return result + (isFuture ? 'mánuð' : 'mánuði'); + case 'y': + return withoutSuffix || isFuture ? 'ár' : 'ári'; + case 'yy': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); + } + return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); + } +} + +var is = moment.defineLocale('is', { + months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), + weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), + weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'), + weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY [kl.] H:mm', + LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm' + }, + calendar : { + sameDay : '[í dag kl.] LT', + nextDay : '[á morgun kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[í gær kl.] LT', + lastWeek : '[síðasta] dddd [kl.] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'eftir %s', + past : 'fyrir %s síðan', + s : translate, + m : translate, + mm : translate, + h : 'klukkustund', + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return is; + +}))); + + +/***/ }), + +/***/ "XWYz": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Maori [mi] +//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var mi = moment.defineLocale('mi', { + months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'), + monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'), + monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, + monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, + monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, + monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i, + weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'), + weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), + weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [i] HH:mm', + LLLL: 'dddd, D MMMM YYYY [i] HH:mm' + }, + calendar: { + sameDay: '[i teie mahana, i] LT', + nextDay: '[apopo i] LT', + nextWeek: 'dddd [i] LT', + lastDay: '[inanahi i] LT', + lastWeek: 'dddd [whakamutunga i] LT', + sameElse: 'L' + }, + relativeTime: { + future: 'i roto i %s', + past: '%s i mua', + s: 'te hēkona ruarua', + m: 'he meneti', + mm: '%d meneti', + h: 'te haora', + hh: '%d haora', + d: 'he ra', + dd: '%d ra', + M: 'he marama', + MM: '%d marama', + y: 'he tau', + yy: '%d tau' + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return mi; + +}))); + + +/***/ }), + +/***/ "XmPa": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Arabic (Lybia) [ar-ly] +//! author : Ali Hmer: https://github.com/kikoanis + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var symbolMap = { + '1': '1', + '2': '2', + '3': '3', + '4': '4', + '5': '5', + '6': '6', + '7': '7', + '8': '8', + '9': '9', + '0': '0' +}; +var pluralForm = function (n) { + return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; +}; +var plurals = { + s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], + m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], + h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], + d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], + M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], + y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] +}; +var pluralize = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm(number), + str = plurals[u][pluralForm(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; +}; +var months = [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر' +]; + +var arLy = moment.defineLocale('ar-ly', { + months : months, + monthsShort : months, + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'D/\u200FM/\u200FYYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar : { + sameDay: '[اليوم عند الساعة] LT', + nextDay: '[غدًا عند الساعة] LT', + nextWeek: 'dddd [عند الساعة] LT', + lastDay: '[أمس عند الساعة] LT', + lastWeek: 'dddd [عند الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'بعد %s', + past : 'منذ %s', + s : pluralize('s'), + m : pluralize('m'), + mm : pluralize('m'), + h : pluralize('h'), + hh : pluralize('h'), + d : pluralize('d'), + dd : pluralize('d'), + M : pluralize('M'), + MM : pluralize('M'), + y : pluralize('y'), + yy : pluralize('y') + }, + preparse: function (string) { + return string.replace(/\u200f/g, '').replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }).replace(/,/g, '،'); + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +return arLy; + +}))); + + +/***/ }), + +/***/ "Y6fm": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global, process) { + +function oldBrowser () { + throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11') +} +var safeBuffer = __webpack_require__("DLTi") +var randombytes = __webpack_require__("kyRq") +var Buffer = safeBuffer.Buffer +var kBufferMaxLength = safeBuffer.kMaxLength +var crypto = global.crypto || global.msCrypto +var kMaxUint32 = Math.pow(2, 32) - 1 +function assertOffset (offset, length) { + if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare + throw new TypeError('offset must be a number') + } + + if (offset > kMaxUint32 || offset < 0) { + throw new TypeError('offset must be a uint32') + } + + if (offset > kBufferMaxLength || offset > length) { + throw new RangeError('offset out of range') + } +} + +function assertSize (size, offset, length) { + if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare + throw new TypeError('size must be a number') + } + + if (size > kMaxUint32 || size < 0) { + throw new TypeError('size must be a uint32') + } + + if (size + offset > length || size > kBufferMaxLength) { + throw new RangeError('buffer too small') + } +} +if ((crypto && crypto.getRandomValues) || !process.browser) { + exports.randomFill = randomFill + exports.randomFillSync = randomFillSync +} else { + exports.randomFill = oldBrowser + exports.randomFillSync = oldBrowser +} +function randomFill (buf, offset, size, cb) { + if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) { + throw new TypeError('"buf" argument must be a Buffer or Uint8Array') + } + + if (typeof offset === 'function') { + cb = offset + offset = 0 + size = buf.length + } else if (typeof size === 'function') { + cb = size + size = buf.length - offset + } else if (typeof cb !== 'function') { + throw new TypeError('"cb" argument must be a function') + } + assertOffset(offset, buf.length) + assertSize(size, offset, buf.length) + return actualFill(buf, offset, size, cb) +} + +function actualFill (buf, offset, size, cb) { + if (process.browser) { + var ourBuf = buf.buffer + var uint = new Uint8Array(ourBuf, offset, size) + crypto.getRandomValues(uint) + if (cb) { + process.nextTick(function () { + cb(null, buf) + }) + return + } + return buf + } + if (cb) { + randombytes(size, function (err, bytes) { + if (err) { + return cb(err) + } + bytes.copy(buf, offset) + cb(null, buf) + }) + return + } + var bytes = randombytes(size) + bytes.copy(buf, offset) + return buf +} +function randomFillSync (buf, offset, size) { + if (typeof offset === 'undefined') { + offset = 0 + } + if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) { + throw new TypeError('"buf" argument must be a Buffer or Uint8Array') + } + + assertOffset(offset, buf.length) + + if (size === undefined) size = buf.length - offset + + assertSize(size, offset, buf.length) + + return actualFill(buf, offset, size) +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("mFPK"), __webpack_require__("V0EG"))) + +/***/ }), + +/***/ "YHfo": +/***/ (function(module, exports, __webpack_require__) { + +var randomBytes = __webpack_require__("kyRq"); +module.exports = findPrime; +findPrime.simpleSieve = simpleSieve; +findPrime.fermatTest = fermatTest; +var BN = __webpack_require__("u/Wk"); +var TWENTYFOUR = new BN(24); +var MillerRabin = __webpack_require__("xXUF"); +var millerRabin = new MillerRabin(); +var ONE = new BN(1); +var TWO = new BN(2); +var FIVE = new BN(5); +var SIXTEEN = new BN(16); +var EIGHT = new BN(8); +var TEN = new BN(10); +var THREE = new BN(3); +var SEVEN = new BN(7); +var ELEVEN = new BN(11); +var FOUR = new BN(4); +var TWELVE = new BN(12); +var primes = null; + +function _getPrimes() { + if (primes !== null) + return primes; + + var limit = 0x100000; + var res = []; + res[0] = 2; + for (var i = 1, k = 3; k < limit; k += 2) { + var sqrt = Math.ceil(Math.sqrt(k)); + for (var j = 0; j < i && res[j] <= sqrt; j++) + if (k % res[j] === 0) + break; + + if (i !== j && res[j] <= sqrt) + continue; + + res[i++] = k; + } + primes = res; + return res; +} + +function simpleSieve(p) { + var primes = _getPrimes(); + + for (var i = 0; i < primes.length; i++) + if (p.modn(primes[i]) === 0) { + if (p.cmpn(primes[i]) === 0) { + return true; + } else { + return false; + } + } + + return true; +} + +function fermatTest(p) { + var red = BN.mont(p); + return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0; +} + +function findPrime(bits, gen) { + if (bits < 16) { + // this is what openssl does + if (gen === 2 || gen === 5) { + return new BN([0x8c, 0x7b]); + } else { + return new BN([0x8c, 0x27]); + } + } + gen = new BN(gen); + + var num, n2; + + while (true) { + num = new BN(randomBytes(Math.ceil(bits / 8))); + while (num.bitLength() > bits) { + num.ishrn(1); + } + if (num.isEven()) { + num.iadd(ONE); + } + if (!num.testn(1)) { + num.iadd(TWO); + } + if (!gen.cmp(TWO)) { + while (num.mod(TWENTYFOUR).cmp(ELEVEN)) { + num.iadd(FOUR); + } + } else if (!gen.cmp(FIVE)) { + while (num.mod(TEN).cmp(THREE)) { + num.iadd(FOUR); + } + } + n2 = num.shrn(1); + if (simpleSieve(n2) && simpleSieve(num) && + fermatTest(n2) && fermatTest(num) && + millerRabin.test(n2) && millerRabin.test(num)) { + return num; + } + } + +} + + +/***/ }), + +/***/ "YOCL": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Azerbaijani [az] +//! author : topchiyev : https://github.com/topchiyev + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var suffixes = { + 1: '-inci', + 5: '-inci', + 8: '-inci', + 70: '-inci', + 80: '-inci', + 2: '-nci', + 7: '-nci', + 20: '-nci', + 50: '-nci', + 3: '-üncü', + 4: '-üncü', + 100: '-üncü', + 6: '-ncı', + 9: '-uncu', + 10: '-uncu', + 30: '-uncu', + 60: '-ıncı', + 90: '-ıncı' +}; + +var az = moment.defineLocale('az', { + months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'), + monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), + weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), + weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), + weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[bugün saat] LT', + nextDay : '[sabah saat] LT', + nextWeek : '[gələn həftə] dddd [saat] LT', + lastDay : '[dünən] LT', + lastWeek : '[keçən həftə] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s sonra', + past : '%s əvvəl', + s : 'birneçə saniyyə', + m : 'bir dəqiqə', + mm : '%d dəqiqə', + h : 'bir saat', + hh : '%d saat', + d : 'bir gün', + dd : '%d gün', + M : 'bir ay', + MM : '%d ay', + y : 'bir il', + yy : '%d il' + }, + meridiemParse: /gecə|səhər|gündüz|axşam/, + isPM : function (input) { + return /^(gündüz|axşam)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'gecə'; + } else if (hour < 12) { + return 'səhər'; + } else if (hour < 17) { + return 'gündüz'; + } else { + return 'axşam'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, + ordinal : function (number) { + if (number === 0) { // special case for zero + return number + '-ıncı'; + } + var a = number % 10, + b = number % 100 - a, + c = number >= 100 ? 100 : null; + return number + (suffixes[a] || suffixes[b] || suffixes[c]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return az; + +}))); + + +/***/ }), + +/***/ "YQM0": +/***/ (function(module, exports, __webpack_require__) { + +var xor = __webpack_require__("EUFM") + +exports.encrypt = function (self, block) { + var data = xor(block, self._prev) + + self._prev = self._cipher.encryptBlock(data) + return self._prev +} + +exports.decrypt = function (self, block) { + var pad = self._prev + + self._prev = block + var out = self._cipher.decryptBlock(block) + + return xor(out, pad) +} + + +/***/ }), + +/***/ "YlXM": +/***/ (function(module, exports) { + +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + + +/***/ }), + +/***/ "Yt9d": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Buffer = __webpack_require__("QMyh").Buffer; +var util = __webpack_require__(4); + +function copyBuffer(src, target, offset) { + src.copy(target, offset); +} + +module.exports = function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + BufferList.prototype.push = function push(v) { + var entry = { data: v, next: null }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + }; + + BufferList.prototype.unshift = function unshift(v) { + var entry = { data: v, next: this.head }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + }; + + BufferList.prototype.shift = function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + }; + + BufferList.prototype.clear = function clear() { + this.head = this.tail = null; + this.length = 0; + }; + + BufferList.prototype.join = function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) { + ret += s + p.data; + }return ret; + }; + + BufferList.prototype.concat = function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + if (this.length === 1) return this.head.data; + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + return ret; + }; + + return BufferList; +}(); + +if (util && util.inspect && util.inspect.custom) { + module.exports.prototype[util.inspect.custom] = function () { + var obj = util.inspect({ length: this.length }); + return this.constructor.name + ' ' + obj; + }; +} + +/***/ }), + +/***/ "ZUGU": +/***/ (function(module, exports) { + +module.exports = {"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"} + +/***/ }), + +/***/ "Zanr": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const constants = exports; + +// Helper +constants._reverse = function reverse(map) { + const res = {}; + + Object.keys(map).forEach(function(key) { + // Convert key to integer if it is stringified + if ((key | 0) == key) + key = key | 0; + + const value = map[key]; + res[value] = key; + }); + + return res; +}; + +constants.der = __webpack_require__("7ZNp"); + + +/***/ }), + +/***/ "Zdi/": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__("maJs"); +var common = __webpack_require__("P1/4"); + +var rotl32 = utils.rotl32; +var sum32 = utils.sum32; +var sum32_3 = utils.sum32_3; +var sum32_4 = utils.sum32_4; +var BlockHash = common.BlockHash; + +function RIPEMD160() { + if (!(this instanceof RIPEMD160)) + return new RIPEMD160(); + + BlockHash.call(this); + + this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ]; + this.endian = 'little'; +} +utils.inherits(RIPEMD160, BlockHash); +exports.ripemd160 = RIPEMD160; + +RIPEMD160.blockSize = 512; +RIPEMD160.outSize = 160; +RIPEMD160.hmacStrength = 192; +RIPEMD160.padLength = 64; + +RIPEMD160.prototype._update = function update(msg, start) { + var A = this.h[0]; + var B = this.h[1]; + var C = this.h[2]; + var D = this.h[3]; + var E = this.h[4]; + var Ah = A; + var Bh = B; + var Ch = C; + var Dh = D; + var Eh = E; + for (var j = 0; j < 80; j++) { + var T = sum32( + rotl32( + sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)), + s[j]), + E); + A = E; + E = D; + D = rotl32(C, 10); + C = B; + B = T; + T = sum32( + rotl32( + sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)), + sh[j]), + Eh); + Ah = Eh; + Eh = Dh; + Dh = rotl32(Ch, 10); + Ch = Bh; + Bh = T; + } + T = sum32_3(this.h[1], C, Dh); + this.h[1] = sum32_3(this.h[2], D, Eh); + this.h[2] = sum32_3(this.h[3], E, Ah); + this.h[3] = sum32_3(this.h[4], A, Bh); + this.h[4] = sum32_3(this.h[0], B, Ch); + this.h[0] = T; +}; + +RIPEMD160.prototype._digest = function digest(enc) { + if (enc === 'hex') + return utils.toHex32(this.h, 'little'); + else + return utils.split32(this.h, 'little'); +}; + +function f(j, x, y, z) { + if (j <= 15) + return x ^ y ^ z; + else if (j <= 31) + return (x & y) | ((~x) & z); + else if (j <= 47) + return (x | (~y)) ^ z; + else if (j <= 63) + return (x & z) | (y & (~z)); + else + return x ^ (y | (~z)); +} + +function K(j) { + if (j <= 15) + return 0x00000000; + else if (j <= 31) + return 0x5a827999; + else if (j <= 47) + return 0x6ed9eba1; + else if (j <= 63) + return 0x8f1bbcdc; + else + return 0xa953fd4e; +} + +function Kh(j) { + if (j <= 15) + return 0x50a28be6; + else if (j <= 31) + return 0x5c4dd124; + else if (j <= 47) + return 0x6d703ef3; + else if (j <= 63) + return 0x7a6d76e9; + else + return 0x00000000; +} + +var r = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, + 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, + 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, + 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 +]; + +var rh = [ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, + 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, + 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, + 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, + 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 +]; + +var s = [ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, + 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, + 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, + 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, + 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 +]; + +var sh = [ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, + 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, + 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, + 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, + 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 +]; + + +/***/ }), + +/***/ "ZmRN": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : English (United Kingdom) [en-gb] +//! author : Chris Gedrim : https://github.com/chrisgedrim + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var enGb = moment.defineLocale('en-gb', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return enGb; + +}))); + + +/***/ }), + +/***/ "ZpE2": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = __webpack_require__("kyRq") +exports.createHash = exports.Hash = __webpack_require__("kFjB") +exports.createHmac = exports.Hmac = __webpack_require__("OtjJ") + +var algos = __webpack_require__("M+LS") +var algoKeys = Object.keys(algos) +var hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys) +exports.getHashes = function () { + return hashes +} + +var p = __webpack_require__("uCaM") +exports.pbkdf2 = p.pbkdf2 +exports.pbkdf2Sync = p.pbkdf2Sync + +var aes = __webpack_require__("g8jk") + +exports.Cipher = aes.Cipher +exports.createCipher = aes.createCipher +exports.Cipheriv = aes.Cipheriv +exports.createCipheriv = aes.createCipheriv +exports.Decipher = aes.Decipher +exports.createDecipher = aes.createDecipher +exports.Decipheriv = aes.Decipheriv +exports.createDecipheriv = aes.createDecipheriv +exports.getCiphers = aes.getCiphers +exports.listCiphers = aes.listCiphers + +var dh = __webpack_require__("S1A0") + +exports.DiffieHellmanGroup = dh.DiffieHellmanGroup +exports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup +exports.getDiffieHellman = dh.getDiffieHellman +exports.createDiffieHellman = dh.createDiffieHellman +exports.DiffieHellman = dh.DiffieHellman + +var sign = __webpack_require__("PjeN") + +exports.createSign = sign.createSign +exports.Sign = sign.Sign +exports.createVerify = sign.createVerify +exports.Verify = sign.Verify + +exports.createECDH = __webpack_require__("8KD+") + +var publicEncrypt = __webpack_require__("M+L8") + +exports.publicEncrypt = publicEncrypt.publicEncrypt +exports.privateEncrypt = publicEncrypt.privateEncrypt +exports.publicDecrypt = publicEncrypt.publicDecrypt +exports.privateDecrypt = publicEncrypt.privateDecrypt + +// the least I can do is make error messages for the rest of the node.js/crypto api. +// ;[ +// 'createCredentials' +// ].forEach(function (name) { +// exports[name] = function () { +// throw new Error([ +// 'sorry, ' + name + ' is not implemented yet', +// 'we accept pull requests', +// 'https://github.com/crypto-browserify/crypto-browserify' +// ].join('\n')) +// } +// }) + +var rf = __webpack_require__("Y6fm") + +exports.randomFill = rf.randomFill +exports.randomFillSync = rf.randomFillSync + +exports.createCredentials = function () { + throw new Error([ + 'sorry, createCredentials is not implemented yet', + 'we accept pull requests', + 'https://github.com/crypto-browserify/crypto-browserify' + ].join('\n')) +} + +exports.constants = { + 'DH_CHECK_P_NOT_SAFE_PRIME': 2, + 'DH_CHECK_P_NOT_PRIME': 1, + 'DH_UNABLE_TO_CHECK_GENERATOR': 4, + 'DH_NOT_SUITABLE_GENERATOR': 8, + 'NPN_ENABLED': 1, + 'ALPN_ENABLED': 1, + 'RSA_PKCS1_PADDING': 1, + 'RSA_SSLV23_PADDING': 2, + 'RSA_NO_PADDING': 3, + 'RSA_PKCS1_OAEP_PADDING': 4, + 'RSA_X931_PADDING': 5, + 'RSA_PKCS1_PSS_PADDING': 6, + 'POINT_CONVERSION_COMPRESSED': 2, + 'POINT_CONVERSION_UNCOMPRESSED': 4, + 'POINT_CONVERSION_HYBRID': 6 +} + + +/***/ }), + +/***/ "a0aM": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : English (Ireland) [en-ie] +//! author : Chris Cartlidge : https://github.com/chriscartlidge + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var enIe = moment.defineLocale('en-ie', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return enIe; + +}))); + + +/***/ }), + +/***/ "aVgu": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : English (Canada) [en-ca] +//! author : Jonathan Abourbih : https://github.com/jonbca + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var enCa = moment.defineLocale('en-ca', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'YYYY-MM-DD', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } +}); + +return enCa; + +}))); + + +/***/ }), + +/***/ "aX9k": +/***/ (function(module, exports, __webpack_require__) { + +// adapted from https://github.com/apatil/pemstrip +var findProc = /Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m +var startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m +var fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m +var evp = __webpack_require__("gHHA") +var ciphers = __webpack_require__("pmUU") +var Buffer = __webpack_require__("DLTi").Buffer +module.exports = function (okey, password) { + var key = okey.toString() + var match = key.match(findProc) + var decrypted + if (!match) { + var match2 = key.match(fullRegex) + decrypted = Buffer.from(match2[2].replace(/[\r\n]/g, ''), 'base64') + } else { + var suite = 'aes' + match[1] + var iv = Buffer.from(match[2], 'hex') + var cipherText = Buffer.from(match[3].replace(/[\r\n]/g, ''), 'base64') + var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key + var out = [] + var cipher = ciphers.createDecipheriv(suite, cipherKey, iv) + out.push(cipher.update(cipherText)) + out.push(cipher.final()) + decrypted = Buffer.concat(out) + } + var tag = key.match(startRegex)[1] + return { + tag: tag, + data: decrypted + } +} + + +/***/ }), + +/***/ "ae4y": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__("maJs"); + +var SHA512 = __webpack_require__("eQun"); + +function SHA384() { + if (!(this instanceof SHA384)) + return new SHA384(); + + SHA512.call(this); + this.h = [ + 0xcbbb9d5d, 0xc1059ed8, + 0x629a292a, 0x367cd507, + 0x9159015a, 0x3070dd17, + 0x152fecd8, 0xf70e5939, + 0x67332667, 0xffc00b31, + 0x8eb44a87, 0x68581511, + 0xdb0c2e0d, 0x64f98fa7, + 0x47b5481d, 0xbefa4fa4 ]; +} +utils.inherits(SHA384, SHA512); +module.exports = SHA384; + +SHA384.blockSize = 1024; +SHA384.outSize = 384; +SHA384.hmacStrength = 192; +SHA384.padLength = 128; + +SHA384.prototype._digest = function digest(enc) { + if (enc === 'hex') + return utils.toHex32(this.h.slice(0, 12), 'big'); + else + return utils.split32(this.h.slice(0, 12), 'big'); +}; + + +/***/ }), + +/***/ "avAl": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : English (New Zealand) [en-nz] +//! author : Luke McGregor : https://github.com/lukemcgregor + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var enNz = moment.defineLocale('en-nz', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return enNz; + +}))); + + +/***/ }), + +/***/ "boXJ": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +/*<replacement>*/ + +var Buffer = __webpack_require__("DLTi").Buffer; +/*</replacement>*/ + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} + +/***/ }), + +/***/ "bzP+": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const inherits = __webpack_require__("mwrz"); +const Buffer = __webpack_require__("FxzF").Buffer; +const Node = __webpack_require__("6BOp"); + +// Import DER constants +const der = __webpack_require__("7ZNp"); + +function DEREncoder(entity) { + this.enc = 'der'; + this.name = entity.name; + this.entity = entity; + + // Construct base tree + this.tree = new DERNode(); + this.tree._init(entity.body); +} +module.exports = DEREncoder; + +DEREncoder.prototype.encode = function encode(data, reporter) { + return this.tree._encode(data, reporter).join(); +}; + +// Tree methods + +function DERNode(parent) { + Node.call(this, 'der', parent); +} +inherits(DERNode, Node); + +DERNode.prototype._encodeComposite = function encodeComposite(tag, + primitive, + cls, + content) { + const encodedTag = encodeTag(tag, primitive, cls, this.reporter); + + // Short form + if (content.length < 0x80) { + const header = Buffer.alloc(2); + header[0] = encodedTag; + header[1] = content.length; + return this._createEncoderBuffer([ header, content ]); + } + + // Long form + // Count octets required to store length + let lenOctets = 1; + for (let i = content.length; i >= 0x100; i >>= 8) + lenOctets++; + + const header = Buffer.alloc(1 + 1 + lenOctets); + header[0] = encodedTag; + header[1] = 0x80 | lenOctets; + + for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8) + header[i] = j & 0xff; + + return this._createEncoderBuffer([ header, content ]); +}; + +DERNode.prototype._encodeStr = function encodeStr(str, tag) { + if (tag === 'bitstr') { + return this._createEncoderBuffer([ str.unused | 0, str.data ]); + } else if (tag === 'bmpstr') { + const buf = Buffer.alloc(str.length * 2); + for (let i = 0; i < str.length; i++) { + buf.writeUInt16BE(str.charCodeAt(i), i * 2); + } + return this._createEncoderBuffer(buf); + } else if (tag === 'numstr') { + if (!this._isNumstr(str)) { + return this.reporter.error('Encoding of string type: numstr supports ' + + 'only digits and space'); + } + return this._createEncoderBuffer(str); + } else if (tag === 'printstr') { + if (!this._isPrintstr(str)) { + return this.reporter.error('Encoding of string type: printstr supports ' + + 'only latin upper and lower case letters, ' + + 'digits, space, apostrophe, left and rigth ' + + 'parenthesis, plus sign, comma, hyphen, ' + + 'dot, slash, colon, equal sign, ' + + 'question mark'); + } + return this._createEncoderBuffer(str); + } else if (/str$/.test(tag)) { + return this._createEncoderBuffer(str); + } else if (tag === 'objDesc') { + return this._createEncoderBuffer(str); + } else { + return this.reporter.error('Encoding of string type: ' + tag + + ' unsupported'); + } +}; + +DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) { + if (typeof id === 'string') { + if (!values) + return this.reporter.error('string objid given, but no values map found'); + if (!values.hasOwnProperty(id)) + return this.reporter.error('objid not found in values map'); + id = values[id].split(/[\s.]+/g); + for (let i = 0; i < id.length; i++) + id[i] |= 0; + } else if (Array.isArray(id)) { + id = id.slice(); + for (let i = 0; i < id.length; i++) + id[i] |= 0; + } + + if (!Array.isArray(id)) { + return this.reporter.error('objid() should be either array or string, ' + + 'got: ' + JSON.stringify(id)); + } + + if (!relative) { + if (id[1] >= 40) + return this.reporter.error('Second objid identifier OOB'); + id.splice(0, 2, id[0] * 40 + id[1]); + } + + // Count number of octets + let size = 0; + for (let i = 0; i < id.length; i++) { + let ident = id[i]; + for (size++; ident >= 0x80; ident >>= 7) + size++; + } + + const objid = Buffer.alloc(size); + let offset = objid.length - 1; + for (let i = id.length - 1; i >= 0; i--) { + let ident = id[i]; + objid[offset--] = ident & 0x7f; + while ((ident >>= 7) > 0) + objid[offset--] = 0x80 | (ident & 0x7f); + } + + return this._createEncoderBuffer(objid); +}; + +function two(num) { + if (num < 10) + return '0' + num; + else + return num; +} + +DERNode.prototype._encodeTime = function encodeTime(time, tag) { + let str; + const date = new Date(time); + + if (tag === 'gentime') { + str = [ + two(date.getUTCFullYear()), + two(date.getUTCMonth() + 1), + two(date.getUTCDate()), + two(date.getUTCHours()), + two(date.getUTCMinutes()), + two(date.getUTCSeconds()), + 'Z' + ].join(''); + } else if (tag === 'utctime') { + str = [ + two(date.getUTCFullYear() % 100), + two(date.getUTCMonth() + 1), + two(date.getUTCDate()), + two(date.getUTCHours()), + two(date.getUTCMinutes()), + two(date.getUTCSeconds()), + 'Z' + ].join(''); + } else { + this.reporter.error('Encoding ' + tag + ' time is not supported yet'); + } + + return this._encodeStr(str, 'octstr'); +}; + +DERNode.prototype._encodeNull = function encodeNull() { + return this._createEncoderBuffer(''); +}; + +DERNode.prototype._encodeInt = function encodeInt(num, values) { + if (typeof num === 'string') { + if (!values) + return this.reporter.error('String int or enum given, but no values map'); + if (!values.hasOwnProperty(num)) { + return this.reporter.error('Values map doesn\'t contain: ' + + JSON.stringify(num)); + } + num = values[num]; + } + + // Bignum, assume big endian + if (typeof num !== 'number' && !Buffer.isBuffer(num)) { + const numArray = num.toArray(); + if (!num.sign && numArray[0] & 0x80) { + numArray.unshift(0); + } + num = Buffer.from(numArray); + } + + if (Buffer.isBuffer(num)) { + let size = num.length; + if (num.length === 0) + size++; + + const out = Buffer.alloc(size); + num.copy(out); + if (num.length === 0) + out[0] = 0; + return this._createEncoderBuffer(out); + } + + if (num < 0x80) + return this._createEncoderBuffer(num); + + if (num < 0x100) + return this._createEncoderBuffer([0, num]); + + let size = 1; + for (let i = num; i >= 0x100; i >>= 8) + size++; + + const out = new Array(size); + for (let i = out.length - 1; i >= 0; i--) { + out[i] = num & 0xff; + num >>= 8; + } + if(out[0] & 0x80) { + out.unshift(0); + } + + return this._createEncoderBuffer(Buffer.from(out)); +}; + +DERNode.prototype._encodeBool = function encodeBool(value) { + return this._createEncoderBuffer(value ? 0xff : 0); +}; + +DERNode.prototype._use = function use(entity, obj) { + if (typeof entity === 'function') + entity = entity(obj); + return entity._getEncoder('der').tree; +}; + +DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) { + const state = this._baseState; + let i; + if (state['default'] === null) + return false; + + const data = dataBuffer.join(); + if (state.defaultBuffer === undefined) + state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join(); + + if (data.length !== state.defaultBuffer.length) + return false; + + for (i=0; i < data.length; i++) + if (data[i] !== state.defaultBuffer[i]) + return false; + + return true; +}; + +// Utility methods + +function encodeTag(tag, primitive, cls, reporter) { + let res; + + if (tag === 'seqof') + tag = 'seq'; + else if (tag === 'setof') + tag = 'set'; + + if (der.tagByName.hasOwnProperty(tag)) + res = der.tagByName[tag]; + else if (typeof tag === 'number' && (tag | 0) === tag) + res = tag; + else + return reporter.error('Unknown tag: ' + tag); + + if (res >= 0x1f) + return reporter.error('Multi-octet tag encoding unsupported'); + + if (!primitive) + res |= 0x20; + + res |= (der.tagClassByName[cls || 'universal'] << 6); + + return res; +} + + +/***/ }), + +/***/ "cGIK": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +var R = typeof Reflect === 'object' ? Reflect : null +var ReflectApply = R && typeof R.apply === 'function' + ? R.apply + : function ReflectApply(target, receiver, args) { + return Function.prototype.apply.call(target, receiver, args); + } + +var ReflectOwnKeys +if (R && typeof R.ownKeys === 'function') { + ReflectOwnKeys = R.ownKeys +} else if (Object.getOwnPropertySymbols) { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target) + .concat(Object.getOwnPropertySymbols(target)); + }; +} else { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target); + }; +} + +function ProcessEmitWarning(warning) { + if (console && console.warn) console.warn(warning); +} + +var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { + return value !== value; +} + +function EventEmitter() { + EventEmitter.init.call(this); +} +module.exports = EventEmitter; +module.exports.once = once; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._eventsCount = 0; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +var defaultMaxListeners = 10; + +function checkListener(listener) { + if (typeof listener !== 'function') { + throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); + } +} + +Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function() { + return defaultMaxListeners; + }, + set: function(arg) { + if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { + throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); + } + defaultMaxListeners = arg; + } +}); + +EventEmitter.init = function() { + + if (this._events === undefined || + this._events === Object.getPrototypeOf(this)._events) { + this._events = Object.create(null); + this._eventsCount = 0; + } + + this._maxListeners = this._maxListeners || undefined; +}; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { + throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); + } + this._maxListeners = n; + return this; +}; + +function _getMaxListeners(that) { + if (that._maxListeners === undefined) + return EventEmitter.defaultMaxListeners; + return that._maxListeners; +} + +EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return _getMaxListeners(this); +}; + +EventEmitter.prototype.emit = function emit(type) { + var args = []; + for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); + var doError = (type === 'error'); + + var events = this._events; + if (events !== undefined) + doError = (doError && events.error === undefined); + else if (!doError) + return false; + + // If there is no 'error' event listener then throw. + if (doError) { + var er; + if (args.length > 0) + er = args[0]; + if (er instanceof Error) { + // Note: The comments on the `throw` lines are intentional, they show + // up in Node's output if this results in an unhandled exception. + throw er; // Unhandled 'error' event + } + // At least give some kind of context to the user + var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); + err.context = er; + throw err; // Unhandled 'error' event + } + + var handler = events[type]; + + if (handler === undefined) + return false; + + if (typeof handler === 'function') { + ReflectApply(handler, this, args); + } else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + ReflectApply(listeners[i], this, args); + } + + return true; +}; + +function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; + + checkListener(listener); + + events = target._events; + if (events === undefined) { + events = target._events = Object.create(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener !== undefined) { + target.emit('newListener', type, + listener.listener ? listener.listener : listener); + + // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } + + if (existing === undefined) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = + prepend ? [listener, existing] : [existing, listener]; + // If we've already got an array, just append. + } else if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + + // Check for listener leak + m = _getMaxListeners(target); + if (m > 0 && existing.length > m && !existing.warned) { + existing.warned = true; + // No error code for this since it is a Warning + // eslint-disable-next-line no-restricted-syntax + var w = new Error('Possible EventEmitter memory leak detected. ' + + existing.length + ' ' + String(type) + ' listeners ' + + 'added. Use emitter.setMaxListeners() to ' + + 'increase limit'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + ProcessEmitWarning(w); + } + } + + return target; +} + +EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.prependListener = + function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; + +function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + if (arguments.length === 0) + return this.listener.call(this.target); + return this.listener.apply(this.target, arguments); + } +} + +function _onceWrap(target, type, listener) { + var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; + var wrapped = onceWrapper.bind(state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; +} + +EventEmitter.prototype.once = function once(type, listener) { + checkListener(listener); + this.on(type, _onceWrap(this, type, listener)); + return this; +}; + +EventEmitter.prototype.prependOnceListener = + function prependOnceListener(type, listener) { + checkListener(listener); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; + +// Emits a 'removeListener' event if and only if the listener was removed. +EventEmitter.prototype.removeListener = + function removeListener(type, listener) { + var list, events, position, i, originalListener; + + checkListener(listener); + + events = this._events; + if (events === undefined) + return this; + + list = events[type]; + if (list === undefined) + return this; + + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else { + delete events[type]; + if (events.removeListener) + this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + + for (i = list.length - 1; i >= 0; i--) { + if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + } + + if (position < 0) + return this; + + if (position === 0) + list.shift(); + else { + spliceOne(list, position); + } + + if (list.length === 1) + events[type] = list[0]; + + if (events.removeListener !== undefined) + this.emit('removeListener', type, originalListener || listener); + } + + return this; + }; + +EventEmitter.prototype.off = EventEmitter.prototype.removeListener; + +EventEmitter.prototype.removeAllListeners = + function removeAllListeners(type) { + var listeners, events, i; + + events = this._events; + if (events === undefined) + return this; + + // not listening for removeListener, no need to emit + if (events.removeListener === undefined) { + if (arguments.length === 0) { + this._events = Object.create(null); + this._eventsCount = 0; + } else if (events[type] !== undefined) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else + delete events[type]; + } + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = Object.keys(events); + var key; + for (i = 0; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = Object.create(null); + this._eventsCount = 0; + return this; + } + + listeners = events[type]; + + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners !== undefined) { + // LIFO order + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } + } + + return this; + }; + +function _listeners(target, type, unwrap) { + var events = target._events; + + if (events === undefined) + return []; + + var evlistener = events[type]; + if (evlistener === undefined) + return []; + + if (typeof evlistener === 'function') + return unwrap ? [evlistener.listener || evlistener] : [evlistener]; + + return unwrap ? + unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); +} + +EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); +}; + +EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); +}; + +EventEmitter.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); + } +}; + +EventEmitter.prototype.listenerCount = listenerCount; +function listenerCount(type) { + var events = this._events; + + if (events !== undefined) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { + return 1; + } else if (evlistener !== undefined) { + return evlistener.length; + } + } + + return 0; +} + +EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; +}; + +function arrayClone(arr, n) { + var copy = new Array(n); + for (var i = 0; i < n; ++i) + copy[i] = arr[i]; + return copy; +} + +function spliceOne(list, index) { + for (; index + 1 < list.length; index++) + list[index] = list[index + 1]; + list.pop(); +} + +function unwrapListeners(arr) { + var ret = new Array(arr.length); + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + return ret; +} + +function once(emitter, name) { + return new Promise(function (resolve, reject) { + function errorListener(err) { + emitter.removeListener(name, resolver); + reject(err); + } + + function resolver() { + if (typeof emitter.removeListener === 'function') { + emitter.removeListener('error', errorListener); + } + resolve([].slice.call(arguments)); + }; + + eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); + if (name !== 'error') { + addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); + } + }); +} + +function addErrorHandlerIfEventEmitter(emitter, handler, flags) { + if (typeof emitter.on === 'function') { + eventTargetAgnosticAddListener(emitter, 'error', handler, flags); + } +} + +function eventTargetAgnosticAddListener(emitter, name, listener, flags) { + if (typeof emitter.on === 'function') { + if (flags.once) { + emitter.once(name, listener); + } else { + emitter.on(name, listener); + } + } else if (typeof emitter.addEventListener === 'function') { + // EventTarget does not have `error` event semantics like Node + // EventEmitters, we do not listen for `error` events here. + emitter.addEventListener(name, function wrapListener(arg) { + // IE does not have builtin `{ once: true }` support so we + // have to do it manually. + if (flags.once) { + emitter.removeEventListener(name, wrapListener); + } + listener(arg); + }); + } else { + throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); + } +} + + +/***/ }), + +/***/ "cKvS": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const inherits = __webpack_require__("mwrz"); +const Reporter = __webpack_require__("WXsb").Reporter; +const Buffer = __webpack_require__("FxzF").Buffer; + +function DecoderBuffer(base, options) { + Reporter.call(this, options); + if (!Buffer.isBuffer(base)) { + this.error('Input not Buffer'); + return; + } + + this.base = base; + this.offset = 0; + this.length = base.length; +} +inherits(DecoderBuffer, Reporter); +exports.DecoderBuffer = DecoderBuffer; + +DecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) { + if (data instanceof DecoderBuffer) { + return true; + } + + // Or accept compatible API + const isCompatible = typeof data === 'object' && + Buffer.isBuffer(data.base) && + data.constructor.name === 'DecoderBuffer' && + typeof data.offset === 'number' && + typeof data.length === 'number' && + typeof data.save === 'function' && + typeof data.restore === 'function' && + typeof data.isEmpty === 'function' && + typeof data.readUInt8 === 'function' && + typeof data.skip === 'function' && + typeof data.raw === 'function'; + + return isCompatible; +}; + +DecoderBuffer.prototype.save = function save() { + return { offset: this.offset, reporter: Reporter.prototype.save.call(this) }; +}; + +DecoderBuffer.prototype.restore = function restore(save) { + // Return skipped data + const res = new DecoderBuffer(this.base); + res.offset = save.offset; + res.length = this.offset; + + this.offset = save.offset; + Reporter.prototype.restore.call(this, save.reporter); + + return res; +}; + +DecoderBuffer.prototype.isEmpty = function isEmpty() { + return this.offset === this.length; +}; + +DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) { + if (this.offset + 1 <= this.length) + return this.base.readUInt8(this.offset++, true); + else + return this.error(fail || 'DecoderBuffer overrun'); +}; + +DecoderBuffer.prototype.skip = function skip(bytes, fail) { + if (!(this.offset + bytes <= this.length)) + return this.error(fail || 'DecoderBuffer overrun'); + + const res = new DecoderBuffer(this.base); + + // Share reporter state + res._reporterState = this._reporterState; + + res.offset = this.offset; + res.length = this.offset + bytes; + this.offset += bytes; + return res; +}; + +DecoderBuffer.prototype.raw = function raw(save) { + return this.base.slice(save ? save.offset : this.offset, this.length); +}; + +function EncoderBuffer(value, reporter) { + if (Array.isArray(value)) { + this.length = 0; + this.value = value.map(function(item) { + if (!EncoderBuffer.isEncoderBuffer(item)) + item = new EncoderBuffer(item, reporter); + this.length += item.length; + return item; + }, this); + } else if (typeof value === 'number') { + if (!(0 <= value && value <= 0xff)) + return reporter.error('non-byte EncoderBuffer value'); + this.value = value; + this.length = 1; + } else if (typeof value === 'string') { + this.value = value; + this.length = Buffer.byteLength(value); + } else if (Buffer.isBuffer(value)) { + this.value = value; + this.length = value.length; + } else { + return reporter.error('Unsupported type: ' + typeof value); + } +} +exports.EncoderBuffer = EncoderBuffer; + +EncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) { + if (data instanceof EncoderBuffer) { + return true; + } + + // Or accept compatible API + const isCompatible = typeof data === 'object' && + data.constructor.name === 'EncoderBuffer' && + typeof data.length === 'number' && + typeof data.join === 'function'; + + return isCompatible; +}; + +EncoderBuffer.prototype.join = function join(out, offset) { + if (!out) + out = Buffer.alloc(this.length); + if (!offset) + offset = 0; + + if (this.length === 0) + return out; + + if (Array.isArray(this.value)) { + this.value.forEach(function(item) { + item.join(out, offset); + offset += item.length; + }); + } else { + if (typeof this.value === 'number') + out[offset] = this.value; + else if (typeof this.value === 'string') + out.write(this.value, offset); + else if (Buffer.isBuffer(this.value)) + this.value.copy(out, offset); + offset += this.length; + } + + return out; +}; + + +/***/ }), + +/***/ "cYbR": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Sinhalese [si] +//! author : Sampath Sitinamaluwa : https://github.com/sampathsris + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +/*jshint -W100*/ +var si = moment.defineLocale('si', { + months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), + monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), + weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), + weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), + weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'a h:mm', + LTS : 'a h:mm:ss', + L : 'YYYY/MM/DD', + LL : 'YYYY MMMM D', + LLL : 'YYYY MMMM D, a h:mm', + LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' + }, + calendar : { + sameDay : '[අද] LT[ට]', + nextDay : '[හෙට] LT[ට]', + nextWeek : 'dddd LT[ට]', + lastDay : '[ඊයේ] LT[ට]', + lastWeek : '[පසුගිය] dddd LT[ට]', + sameElse : 'L' + }, + relativeTime : { + future : '%sකින්', + past : '%sකට පෙර', + s : 'තත්පර කිහිපය', + m : 'මිනිත්තුව', + mm : 'මිනිත්තු %d', + h : 'පැය', + hh : 'පැය %d', + d : 'දිනය', + dd : 'දින %d', + M : 'මාසය', + MM : 'මාස %d', + y : 'වසර', + yy : 'වසර %d' + }, + dayOfMonthOrdinalParse: /\d{1,2} වැනි/, + ordinal : function (number) { + return number + ' වැනි'; + }, + meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, + isPM : function (input) { + return input === 'ප.ව.' || input === 'පස් වරු'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'ප.ව.' : 'පස් වරු'; + } else { + return isLower ? 'පෙ.ව.' : 'පෙර වරු'; + } + } +}); + +return si; + +}))); + + +/***/ }), + +/***/ "d4gF": +/***/ (function(module, exports, __webpack_require__) { + +!function(e,t){ true?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.VueFullscreen=t():e.VueFullscreen=t()}(this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=5)}([function(e,t,n){"use strict";function i(){var e={},t=!1,n=0,r=arguments.length;for("[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(t=arguments[0],n++);n<r;n++){var l=arguments[n];!function(n){for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t&&"[object Object]"===Object.prototype.toString.call(n[r])?e[r]=i(!0,e[r],n[r]):e[r]=n[r])}(l)}return e}t.a=i},function(e,t){!function(){"use strict";var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},n=void 0!==e&&e.exports,i=function(){for(var e,n=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=0,r=n.length,l={};i<r;i++)if((e=n[i])&&e[1]in t){for(i=0;i<e.length;i++)l[n[0][i]]=e[i];return l}return!1}(),r={change:i.fullscreenchange,error:i.fullscreenerror},l={request:function(e,n){return new Promise(function(r,l){var s=function(){this.off("change",s),r()}.bind(this);this.on("change",s),e=e||t.documentElement;var o=e[i.requestFullscreen](n);o instanceof Promise&&o.then(s).catch(l)}.bind(this))},exit:function(){return new Promise(function(e,n){if(!this.isFullscreen)return void e();var r=function(){this.off("change",r),e()}.bind(this);this.on("change",r);var l=t[i.exitFullscreen]();l instanceof Promise&&l.then(r).catch(n)}.bind(this))},toggle:function(e,t){return this.isFullscreen?this.exit():this.request(e,t)},onchange:function(e){this.on("change",e)},onerror:function(e){this.on("error",e)},on:function(e,n){var i=r[e];i&&t.addEventListener(i,n,!1)},off:function(e,n){var i=r[e];i&&t.removeEventListener(i,n,!1)},raw:i};if(!i)return void(n?e.exports={isEnabled:!1}:window.screenfull={isEnabled:!1});Object.defineProperties(l,{isFullscreen:{get:function(){return Boolean(t[i.fullscreenElement])}},element:{enumerable:!0,get:function(){return t[i.fullscreenElement]}},isEnabled:{enumerable:!0,get:function(){return Boolean(t[i.fullscreenEnabled])}}}),n?e.exports=l:window.screenfull=l}()},function(e,t,n){"use strict";function i(e,t){e.style.position=t.position,e.style.left=t.left,e.style.top=t.top,e.style.width=t.width,e.style.height=t.height}function r(e){var t=e.element;t&&(t.classList.remove(e.options.fullscreenClass),(e.options.teleport||e.options.pageOnly)&&(e.options.teleport&&a&&(a.insertBefore(t,u),a.removeChild(u)),t.__styleCache&&i(t,t.__styleCache)))}var l=n(1),s=n.n(l),o=n(0),c={callback:function(){},fullscreenClass:"fullscreen",pageOnly:!1,teleport:!1},u=void 0,a=void 0,f={options:null,element:null,isFullscreen:!1,isEnabled:s.a.isEnabled,toggle:function(e,t,n){return void 0===n?this.isFullscreen?this.exit():this.request(e,t):n?this.request(e,t):this.exit()},request:function(e,t){var l=this;if(this.isFullscreen)return Promise.resolve();if(e||(e=document.body),this.options=n.i(o.a)({},c,t),e===document.body&&(this.options.teleport=!1),s.a.isEnabled||(this.options.pageOnly=!0),e.classList.add(this.options.fullscreenClass),this.options.teleport||this.options.pageOnly){var f=e.style,h=f.position,p=f.left,d=f.top,m=f.width,v=f.height;e.__styleCache={position:h,left:p,top:d,width:m,height:v},i(e,{position:"fixed",left:"0",top:"0",width:"100%",height:"100%"})}if(this.options.teleport&&(a=e.parentNode)&&(u=document.createComment("fullscreen-token"),a.insertBefore(u,e),document.body.appendChild(e)),this.options.pageOnly){var b=function e(t){"Escape"===t.key&&(document.removeEventListener("keyup",e),l.exit())};return this.isFullscreen=!0,this.element=e,document.removeEventListener("keyup",b),document.addEventListener("keyup",b),this.options.callback&&this.options.callback(this.isFullscreen),Promise.resolve()}var y=function t(){s.a.isFullscreen||(s.a.off("change",t),r(l)),l.isFullscreen=s.a.isFullscreen,l.options.teleport?l.element=e||null:l.element=s.a.element,l.options.callback&&l.options.callback(s.a.isFullscreen)};return s.a.on("change",y),s.a.request(this.options.teleport?document.body:e)},exit:function(){return this.isFullscreen?this.options.pageOnly?(r(this),this.isFullscreen=!1,this.element=null,this.options.callback&&this.options.callback(this.isFullscreen),Promise.resolve()):s.a.exit():Promise.resolve()}};f.support=f.isEnabled,f.getState=function(){return f.isFullscreen},f.enter=f.request,t.a=f},function(e,t,n){"use strict";function i(e,t){var n={};for(var i in e)t.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(e,i)&&(n[i]=e[i]);return n}var r=n(2),l=n(0),s=function(e,t){var s=function(){var e=void 0,s={teleport:t.modifiers.teleport,pageOnly:t.modifiers.pageOnly};if(t.value)if("string"==typeof t.value)e=t.value;else{var o=t.value,c=o.target,u=i(o,["target"]);e=c,s=n.i(l.a)(s,u)}"string"==typeof e&&(e=document.querySelector(e)),r.a.toggle(e,s)};e._onClickFullScreen&&e.removeEventListener("click",e._onClickFullScreen),e.addEventListener("click",s),e._onClickFullScreen=s};t.a=s},function(e,t,n){var i=n(7)(n(6),n(8),null,null);e.exports=i.exports},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(4),r=n.n(i),l=n(2),s=n(3),o=n(1),c=n.n(o),u=n(0);n.d(t,"screenfull",function(){return c.a}),n.d(t,"api",function(){return l.a}),n.d(t,"directive",function(){return s.a}),n.d(t,"component",function(){return r.a}),t.default={install:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.name||"fullscreen";e.component(i,n.i(u.a)(r.a,{name:i})),e.prototype["$"+i]=l.a,e.directive(i,s.a)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(1),r=n.n(i);t.default={props:{value:{type:Boolean,default:!1},fullscreen:{type:Boolean,default:!1},exitOnClickWrapper:{type:Boolean,default:!0},fullscreenClass:{type:String,default:"fullscreen"},pageOnly:{type:Boolean,default:!1},teleport:{type:Boolean,default:!1}},data:function(){return{isFullscreen:!1,isEnabled:!1}},computed:{support:function(){return this.isEnabled},isPageOnly:function(){return this.pageOnly||!r.a.isEnabled},wrapperStyle:function(){return(this.isPageOnly||this.teleport)&&this.isFullscreen?{position:"fixed",left:"0",top:"0",width:"100%",height:"100%"}:void 0}},methods:{toggle:function(e){void 0===e?this.isFullscreen?this.exit():this.request():e?this.request():this.exit()},request:function(){if(this.isPageOnly?(this.isFullscreen=!0,this.onChangeFullScreen(),document.removeEventListener("keyup",this.keypressCallback),document.addEventListener("keyup",this.keypressCallback)):(r.a.off("change",this.fullScreenCallback),r.a.on("change",this.fullScreenCallback),r.a.request(this.teleport?document.body:this.$el)),this.teleport){if(this.$el.parentNode===document.body)return;this.__parentNode=this.$el.parentNode,this.__token=document.createComment("fullscreen-token"),this.__parentNode.insertBefore(this.__token,this.$el),document.body.appendChild(this.$el)}},exit:function(){this.isFullscreen&&(this.isPageOnly?(this.isFullscreen=!1,this.onChangeFullScreen(),document.removeEventListener("keyup",this.keypressCallback)):r.a.exit())},shadeClick:function(e){e.target===this.$el&&this.exitOnClickWrapper&&this.exit()},fullScreenCallback:function(){r.a.isFullscreen||r.a.off("change",this.fullScreenCallback),this.isFullscreen=r.a.isFullscreen,this.onChangeFullScreen()},keypressCallback:function(e){"Escape"===e.key&&this.exit()},onChangeFullScreen:function(){this.isFullscreen||this.teleport&&this.__parentNode&&(this.__parentNode.insertBefore(this.$el,this.__token),this.__parentNode.removeChild(this.__token)),this.$emit("change",this.isFullscreen),this.$emit("update:fullscreen",this.isFullscreen),this.$emit("input",this.isFullscreen)},enter:function(){this.request()},getState:function(){return this.isFullscreen}},watch:{value:function(e){e!==this.isFullscreen&&(e?this.request():this.exit())},fullscreen:function(e){e!==this.isFullscreen&&(e?this.request():this.exit())}},created:function(){this.isEnabled=r.a.isEnabled}}},function(e,t){e.exports=function(e,t,n,i){var r,l=e=e||{},s=typeof e.default;"object"!==s&&"function"!==s||(r=e,l=e.default);var o="function"==typeof l?l.options:l;if(t&&(o.render=t.render,o.staticRenderFns=t.staticRenderFns),n&&(o._scopeId=n),i){var c=Object.create(o.computed||null);Object.keys(i).forEach(function(e){var t=i[e];c[e]=function(){return t}}),o.computed=c}return{esModule:r,exports:l,options:o}}},function(e,t){e.exports={render:function(){var e,t=this,n=t.$createElement;return(t._self._c||n)("div",t._b({ref:"wrapper",class:(e={},e[t.fullscreenClass]=t.isFullscreen,e),style:t.wrapperStyle,on:{click:function(e){return t.shadeClick(e)}}},"div",t.$attrs,!1),[t._t("default")],2)},staticRenderFns:[]}}])}); + +/***/ }), + +/***/ "dA0k": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Danish [da] +//! author : Ulrik Nielsen : https://github.com/mrbase + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var da = moment.defineLocale('da', { + months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'), + weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm' + }, + calendar : { + sameDay : '[i dag kl.] LT', + nextDay : '[i morgen kl.] LT', + nextWeek : 'på dddd [kl.] LT', + lastDay : '[i går kl.] LT', + lastWeek : '[i] dddd[s kl.] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'om %s', + past : '%s siden', + s : 'få sekunder', + m : 'et minut', + mm : '%d minutter', + h : 'en time', + hh : '%d timer', + d : 'en dag', + dd : '%d dage', + M : 'en måned', + MM : '%d måneder', + y : 'et år', + yy : '%d år' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return da; + +}))); + + +/***/ }), + +/***/ "dqCQ": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Greek [el] +//! author : Aggelos Karalias : https://github.com/mehiel + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + +function isFunction(input) { + return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; +} + + +var el = moment.defineLocale('el', { + monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), + monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), + months : function (momentToFormat, format) { + if (!momentToFormat) { + return this._monthsNominativeEl; + } else if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' + return this._monthsGenitiveEl[momentToFormat.month()]; + } else { + return this._monthsNominativeEl[momentToFormat.month()]; + } + }, + monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), + weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), + weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), + weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'μμ' : 'ΜΜ'; + } else { + return isLower ? 'πμ' : 'ΠΜ'; + } + }, + isPM : function (input) { + return ((input + '').toLowerCase()[0] === 'μ'); + }, + meridiemParse : /[ΠΜ]\.?Μ?\.?/i, + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendarEl : { + sameDay : '[Σήμερα {}] LT', + nextDay : '[Αύριο {}] LT', + nextWeek : 'dddd [{}] LT', + lastDay : '[Χθες {}] LT', + lastWeek : function () { + switch (this.day()) { + case 6: + return '[το προηγούμενο] dddd [{}] LT'; + default: + return '[την προηγούμενη] dddd [{}] LT'; + } + }, + sameElse : 'L' + }, + calendar : function (key, mom) { + var output = this._calendarEl[key], + hours = mom && mom.hours(); + if (isFunction(output)) { + output = output.apply(mom); + } + return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); + }, + relativeTime : { + future : 'σε %s', + past : '%s πριν', + s : 'λίγα δευτερόλεπτα', + m : 'ένα λεπτό', + mm : '%d λεπτά', + h : 'μία ώρα', + hh : '%d ώρες', + d : 'μία μέρα', + dd : '%d μέρες', + M : 'ένας μήνας', + MM : '%d μήνες', + y : 'ένας χρόνος', + yy : '%d χρόνια' + }, + dayOfMonthOrdinalParse: /\d{1,2}η/, + ordinal: '%dη', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4st is the first week of the year. + } +}); + +return el; + +}))); + + +/***/ }), + +/***/ "duxV": +/***/ (function(module, exports) { + +/*! (C) Andrea Giammarchi - @WebReflection - Mit Style License */ +(function(e,t){"use strict";function Ht(){var e=wt.splice(0,wt.length);Et=0;while(e.length)e.shift().call(null,e.shift())}function Bt(e,t){for(var n=0,r=e.length;n<r;n++)Jt(e[n],t)}function jt(e){for(var t=0,n=e.length,r;t<n;t++)r=e[t],Pt(r,A[It(r)])}function Ft(e){return function(t){ut(t)&&(Jt(t,e),O.length&&Bt(t.querySelectorAll(O),e))}}function It(e){var t=ht.call(e,"is"),n=e.nodeName.toUpperCase(),r=_.call(L,t?N+t.toUpperCase():T+n);return t&&-1<r&&!qt(n,t)?-1:r}function qt(e,t){return-1<O.indexOf(e+'[is="'+t+'"]')}function Rt(e){var t=e.currentTarget,n=e.attrChange,r=e.attrName,i=e.target,s=e[y]||2,o=e[w]||3;kt&&(!i||i===t)&&t[h]&&r!=="style"&&(e.prevValue!==e.newValue||e.newValue===""&&(n===s||n===o))&&t[h](r,n===s?null:e.prevValue,n===o?null:e.newValue)}function Ut(e){var t=Ft(e);return function(e){wt.push(t,e.target),Et&&clearTimeout(Et),Et=setTimeout(Ht,1)}}function zt(e){Ct&&(Ct=!1,e.currentTarget.removeEventListener(S,zt)),O.length&&Bt((e.target||n).querySelectorAll(O),e.detail===l?l:a),st&&Vt()}function Wt(e,t){var n=this;vt.call(n,e,t),Lt.call(n,{target:n})}function Xt(e,t){nt(e,t),Mt?Mt.observe(e,yt):(Nt&&(e.setAttribute=Wt,e[o]=Ot(e),e[u](x,Lt)),e[u](E,Rt)),e[m]&&kt&&(e.created=!0,e[m](),e.created=!1)}function Vt(){for(var e,t=0,n=at.length;t<n;t++)e=at[t],M.contains(e)||(n--,at.splice(t--,1),Jt(e,l))}function $t(e){throw new Error("A "+e+" type is already registered")}function Jt(e,t){var n,r=It(e),i;-1<r&&(Dt(e,A[r]),r=0,t===a&&!e[a]?(e[l]=!1,e[a]=!0,i="connected",r=1,st&&_.call(at,e)<0&&at.push(e)):t===l&&!e[l]&&(e[a]=!1,e[l]=!0,i="disconnected",r=1),r&&(n=e[t+f]||e[i+f])&&n.call(e))}function Kt(){}function Qt(e,t,r){var i=r&&r[c]||"",o=t.prototype,u=tt(o),a=t.observedAttributes||j,f={prototype:u};ot(u,m,{value:function(){if(Q)Q=!1;else if(!this[W]){this[W]=!0,new t(this),o[m]&&o[m].call(this);var e=G[Z.get(t)];(!V||e.create.length>1)&&Zt(this)}}}),ot(u,h,{value:function(e){-1<_.call(a,e)&&o[h].apply(this,arguments)}}),o[d]&&ot(u,p,{value:o[d]}),o[v]&&ot(u,g,{value:o[v]}),i&&(f[c]=i),e=e.toUpperCase(),G[e]={constructor:t,create:i?[i,et(e)]:[e]},Z.set(t,e),n[s](e.toLowerCase(),f),en(e),Y[e].r()}function Gt(e){var t=G[e.toUpperCase()];return t&&t.constructor}function Yt(e){return typeof e=="string"?e:e&&e.is||""}function Zt(e){var t=e[h],n=t?e.attributes:j,r=n.length,i;while(r--)i=n[r],t.call(e,i.name||i.nodeName,null,i.value||i.nodeValue)}function en(e){return e=e.toUpperCase(),e in Y||(Y[e]={},Y[e].p=new K(function(t){Y[e].r=t})),Y[e].p}function tn(){X&&delete e.customElements,B(e,"customElements",{configurable:!0,value:new Kt}),B(e,"CustomElementRegistry",{configurable:!0,value:Kt});for(var t=function(t){var r=e[t];if(r){e[t]=function(t){var i,s;return t||(t=this),t[W]||(Q=!0,i=G[Z.get(t.constructor)],s=V&&i.create.length===1,t=s?Reflect.construct(r,j,i.constructor):n.createElement.apply(n,i.create),t[W]=!0,Q=!1,s||Zt(t)),t},e[t].prototype=r.prototype;try{r.prototype.constructor=e[t]}catch(i){z=!0,B(r,W,{value:e[t]})}}},r=i.get(/^HTML[A-Z]*[a-z]/),o=r.length;o--;t(r[o]));n.createElement=function(e,t){var n=Yt(t);return n?gt.call(this,e,et(n)):gt.call(this,e)},St||(Tt=!0,n[s](""))}var n=e.document,r=e.Object,i=function(e){var t=/^[A-Z]+[a-z]/,n=function(e){var t=[],n;for(n in s)e.test(n)&&t.push(n);return t},i=function(e,t){t=t.toLowerCase(),t in s||(s[e]=(s[e]||[]).concat(t),s[t]=s[t.toUpperCase()]=e)},s=(r.create||r)(null),o={},u,a,f,l;for(a in e)for(l in e[a]){f=e[a][l],s[l]=f;for(u=0;u<f.length;u++)s[f[u].toLowerCase()]=s[f[u].toUpperCase()]=l}return o.get=function(r){return typeof r=="string"?s[r]||(t.test(r)?[]:""):n(r)},o.set=function(n,r){return t.test(n)?i(n,r):i(r,n),o},o}({collections:{HTMLAllCollection:["all"],HTMLCollection:["forms"],HTMLFormControlsCollection:["elements"],HTMLOptionsCollection:["options"]},elements:{Element:["element"],HTMLAnchorElement:["a"],HTMLAppletElement:["applet"],HTMLAreaElement:["area"],HTMLAttachmentElement:["attachment"],HTMLAudioElement:["audio"],HTMLBRElement:["br"],HTMLBaseElement:["base"],HTMLBodyElement:["body"],HTMLButtonElement:["button"],HTMLCanvasElement:["canvas"],HTMLContentElement:["content"],HTMLDListElement:["dl"],HTMLDataElement:["data"],HTMLDataListElement:["datalist"],HTMLDetailsElement:["details"],HTMLDialogElement:["dialog"],HTMLDirectoryElement:["dir"],HTMLDivElement:["div"],HTMLDocument:["document"],HTMLElement:["element","abbr","address","article","aside","b","bdi","bdo","cite","code","command","dd","dfn","dt","em","figcaption","figure","footer","header","i","kbd","mark","nav","noscript","rp","rt","ruby","s","samp","section","small","strong","sub","summary","sup","u","var","wbr"],HTMLEmbedElement:["embed"],HTMLFieldSetElement:["fieldset"],HTMLFontElement:["font"],HTMLFormElement:["form"],HTMLFrameElement:["frame"],HTMLFrameSetElement:["frameset"],HTMLHRElement:["hr"],HTMLHeadElement:["head"],HTMLHeadingElement:["h1","h2","h3","h4","h5","h6"],HTMLHtmlElement:["html"],HTMLIFrameElement:["iframe"],HTMLImageElement:["img"],HTMLInputElement:["input"],HTMLKeygenElement:["keygen"],HTMLLIElement:["li"],HTMLLabelElement:["label"],HTMLLegendElement:["legend"],HTMLLinkElement:["link"],HTMLMapElement:["map"],HTMLMarqueeElement:["marquee"],HTMLMediaElement:["media"],HTMLMenuElement:["menu"],HTMLMenuItemElement:["menuitem"],HTMLMetaElement:["meta"],HTMLMeterElement:["meter"],HTMLModElement:["del","ins"],HTMLOListElement:["ol"],HTMLObjectElement:["object"],HTMLOptGroupElement:["optgroup"],HTMLOptionElement:["option"],HTMLOutputElement:["output"],HTMLParagraphElement:["p"],HTMLParamElement:["param"],HTMLPictureElement:["picture"],HTMLPreElement:["pre"],HTMLProgressElement:["progress"],HTMLQuoteElement:["blockquote","q","quote"],HTMLScriptElement:["script"],HTMLSelectElement:["select"],HTMLShadowElement:["shadow"],HTMLSlotElement:["slot"],HTMLSourceElement:["source"],HTMLSpanElement:["span"],HTMLStyleElement:["style"],HTMLTableCaptionElement:["caption"],HTMLTableCellElement:["td","th"],HTMLTableColElement:["col","colgroup"],HTMLTableElement:["table"],HTMLTableRowElement:["tr"],HTMLTableSectionElement:["thead","tbody","tfoot"],HTMLTemplateElement:["template"],HTMLTextAreaElement:["textarea"],HTMLTimeElement:["time"],HTMLTitleElement:["title"],HTMLTrackElement:["track"],HTMLUListElement:["ul"],HTMLUnknownElement:["unknown","vhgroupv","vkeygen"],HTMLVideoElement:["video"]},nodes:{Attr:["node"],Audio:["audio"],CDATASection:["node"],CharacterData:["node"],Comment:["#comment"],Document:["#document"],DocumentFragment:["#document-fragment"],DocumentType:["node"],HTMLDocument:["#document"],Image:["img"],Option:["option"],ProcessingInstruction:["node"],ShadowRoot:["#shadow-root"],Text:["#text"],XMLDocument:["xml"]}});typeof t!="object"&&(t={type:t||"auto"});var s="registerElement",o="__"+s+(e.Math.random()*1e5>>0),u="addEventListener",a="attached",f="Callback",l="detached",c="extends",h="attributeChanged"+f,p=a+f,d="connected"+f,v="disconnected"+f,m="created"+f,g=l+f,y="ADDITION",b="MODIFICATION",w="REMOVAL",E="DOMAttrModified",S="DOMContentLoaded",x="DOMSubtreeModified",T="<",N="=",C=/^[A-Z][A-Z0-9]*(?:-[A-Z0-9]+)+$/,k=["ANNOTATION-XML","COLOR-PROFILE","FONT-FACE","FONT-FACE-SRC","FONT-FACE-URI","FONT-FACE-FORMAT","FONT-FACE-NAME","MISSING-GLYPH"],L=[],A=[],O="",M=n.documentElement,_=L.indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},D=r.prototype,P=D.hasOwnProperty,H=D.isPrototypeOf,B=r.defineProperty,j=[],F=r.getOwnPropertyDescriptor,I=r.getOwnPropertyNames,q=r.getPrototypeOf,R=r.setPrototypeOf,U=!!r.__proto__,z=!1,W="__dreCEv1",X=e.customElements,V=!/^force/.test(t.type)&&!!(X&&X.define&&X.get&&X.whenDefined),$=r.create||r,J=e.Map||function(){var t=[],n=[],r;return{get:function(e){return n[_.call(t,e)]},set:function(e,i){r=_.call(t,e),r<0?n[t.push(e)-1]=i:n[r]=i}}},K=e.Promise||function(e){function i(e){n=!0;while(t.length)t.shift()(e)}var t=[],n=!1,r={"catch":function(){return r},then:function(e){return t.push(e),n&&setTimeout(i,1),r}};return e(i),r},Q=!1,G=$(null),Y=$(null),Z=new J,et=function(e){return e.toLowerCase()},tt=r.create||function sn(e){return e?(sn.prototype=e,new sn):this},nt=R||(U?function(e,t){return e.__proto__=t,e}:I&&F?function(){function e(e,t){for(var n,r=I(t),i=0,s=r.length;i<s;i++)n=r[i],P.call(e,n)||B(e,n,F(t,n))}return function(t,n){do e(t,n);while((n=q(n))&&!H.call(n,t));return t}}():function(e,t){for(var n in t)e[n]=t[n];return e}),rt=e.MutationObserver||e.WebKitMutationObserver,it=(e.HTMLElement||e.Element||e.Node).prototype,st=!H.call(it,M),ot=st?function(e,t,n){return e[t]=n.value,e}:B,ut=st?function(e){return e.nodeType===1}:function(e){return H.call(it,e)},at=st&&[],ft=it.attachShadow,lt=it.cloneNode,ct=it.dispatchEvent,ht=it.getAttribute,pt=it.hasAttribute,dt=it.removeAttribute,vt=it.setAttribute,mt=n.createElement,gt=mt,yt=rt&&{attributes:!0,characterData:!0,attributeOldValue:!0},bt=rt||function(e){Nt=!1,M.removeEventListener(E,bt)},wt,Et=0,St=s in n&&!/^force-all/.test(t.type),xt=!0,Tt=!1,Nt=!0,Ct=!0,kt=!0,Lt,At,Ot,Mt,_t,Dt,Pt;St||(R||U?(Dt=function(e,t){H.call(t,e)||Xt(e,t)},Pt=Xt):(Dt=function(e,t){e[o]||(e[o]=r(!0),Xt(e,t))},Pt=Dt),st?(Nt=!1,function(){var e=F(it,u),t=e.value,n=function(e){var t=new CustomEvent(E,{bubbles:!0});t.attrName=e,t.prevValue=ht.call(this,e),t.newValue=null,t[w]=t.attrChange=2,dt.call(this,e),ct.call(this,t)},r=function(e,t){var n=pt.call(this,e),r=n&&ht.call(this,e),i=new CustomEvent(E,{bubbles:!0});vt.call(this,e,t),i.attrName=e,i.prevValue=n?r:null,i.newValue=t,n?i[b]=i.attrChange=1:i[y]=i.attrChange=0,ct.call(this,i)},i=function(e){var t=e.currentTarget,n=t[o],r=e.propertyName,i;n.hasOwnProperty(r)&&(n=n[r],i=new CustomEvent(E,{bubbles:!0}),i.attrName=n.name,i.prevValue=n.value||null,i.newValue=n.value=t[r]||null,i.prevValue==null?i[y]=i.attrChange=0:i[b]=i.attrChange=1,ct.call(t,i))};e.value=function(e,s,u){e===E&&this[h]&&this.setAttribute!==r&&(this[o]={className:{name:"class",value:this.className}},this.setAttribute=r,this.removeAttribute=n,t.call(this,"propertychange",i)),t.call(this,e,s,u)},B(it,u,e)}()):rt||(M[u](E,bt),M.setAttribute(o,1),M.removeAttribute(o),Nt&&(Lt=function(e){var t=this,n,r,i;if(t===e.target){n=t[o],t[o]=r=Ot(t);for(i in r){if(!(i in n))return At(0,t,i,n[i],r[i],y);if(r[i]!==n[i])return At(1,t,i,n[i],r[i],b)}for(i in n)if(!(i in r))return At(2,t,i,n[i],r[i],w)}},At=function(e,t,n,r,i,s){var o={attrChange:e,currentTarget:t,attrName:n,prevValue:r,newValue:i};o[s]=e,Rt(o)},Ot=function(e){for(var t,n,r={},i=e.attributes,s=0,o=i.length;s<o;s++)t=i[s],n=t.name,n!=="setAttribute"&&(r[n]=t.value);return r})),n[s]=function(t,r){p=t.toUpperCase(),xt&&(xt=!1,rt?(Mt=function(e,t){function n(e,t){for(var n=0,r=e.length;n<r;t(e[n++]));}return new rt(function(r){for(var i,s,o,u=0,a=r.length;u<a;u++)i=r[u],i.type==="childList"?(n(i.addedNodes,e),n(i.removedNodes,t)):(s=i.target,kt&&s[h]&&i.attributeName!=="style"&&(o=ht.call(s,i.attributeName),o!==i.oldValue&&s[h](i.attributeName,i.oldValue,o)))})}(Ft(a),Ft(l)),_t=function(e){return Mt.observe(e,{childList:!0,subtree:!0}),e},_t(n),ft&&(it.attachShadow=function(){return _t(ft.apply(this,arguments))})):(wt=[],n[u]("DOMNodeInserted",Ut(a)),n[u]("DOMNodeRemoved",Ut(l))),n[u](S,zt),n[u]("readystatechange",zt),it.cloneNode=function(e){var t=lt.call(this,!!e),n=It(t);return-1<n&&Pt(t,A[n]),e&&O.length&&jt(t.querySelectorAll(O)),t});if(Tt)return Tt=!1;-2<_.call(L,N+p)+_.call(L,T+p)&&$t(t);if(!C.test(p)||-1<_.call(k,p))throw new Error("The type "+t+" is invalid");var i=function(){return o?n.createElement(f,p):n.createElement(f)},s=r||D,o=P.call(s,c),f=o?r[c].toUpperCase():p,p,d;return o&&-1<_.call(L,T+f)&&$t(f),d=L.push((o?N:T)+p)-1,O=O.concat(O.length?",":"",o?f+'[is="'+t.toLowerCase()+'"]':f),i.prototype=A[d]=P.call(s,"prototype")?s.prototype:tt(it),O.length&&Bt(n.querySelectorAll(O),a),i},n.createElement=gt=function(e,t){var r=Yt(t),i=r?mt.call(n,e,et(r)):mt.call(n,e),s=""+e,o=_.call(L,(r?N:T)+(r||s).toUpperCase()),u=-1<o;return r&&(i.setAttribute("is",r=r.toLowerCase()),u&&(u=qt(s.toUpperCase(),r))),kt=!n.createElement.innerHTMLHelper,u&&Pt(i,A[o]),i}),Kt.prototype={constructor:Kt,define:V?function(e,t,n){if(n)Qt(e,t,n);else{var r=e.toUpperCase();G[r]={constructor:t,create:[r]},Z.set(t,r),X.define(e,t)}}:Qt,get:V?function(e){return X.get(e)||Gt(e)}:Gt,whenDefined:V?function(e){return K.race([X.whenDefined(e),en(e)])}:en};if(!X||/^force/.test(t.type))tn();else if(!t.noBuiltIn)try{(function(t,r,i){r[c]="a",t.prototype=tt(HTMLAnchorElement.prototype),t.prototype.constructor=t,e.customElements.define(i,t,r);if(ht.call(n.createElement("a",{is:i}),"is")!==i||V&&ht.call(new t,"is")!==i)throw r})(function on(){return Reflect.construct(HTMLAnchorElement,[],on)},{},"document-register-element-a")}catch(nn){tn()}if(!t.noBuiltIn)try{mt.call(n,"a","a")}catch(rn){et=function(e){return{is:e.toLowerCase()}}}})(window); + +/***/ }), + +/***/ "dvkb": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Malay [ms-my] +//! note : DEPRECATED, the correct one is [ms] +//! author : Weldan Jamili : https://github.com/weldan + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var msMy = moment.defineLocale('ms-my', { + months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), + monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|tengahari|petang|malam/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Esok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kelmarin pukul] LT', + lastWeek : 'dddd [lepas pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lepas', + s : 'beberapa saat', + m : 'seminit', + mm : '%d minit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return msMy; + +}))); + + +/***/ }), + +/***/ "e7RC": +/***/ (function(module, exports) { + +module.exports = "data:font/woff;base64,d09GRgABAAAAAAu8AAsAAAAAEOAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAARAAAAGA8QUzCY21hcAAAAYgAAACxAAACPClWH55nbHlmAAACPAAABzUAAAloxhXGamhlYWQAAAl0AAAALwAAADYgyzh9aGhlYQAACaQAAAAcAAAAJAfeA41obXR4AAAJwAAAAA8AAAAwMAAAAGxvY2EAAAnQAAAAGgAAABoQiA60bWF4cAAACewAAAAfAAAAIAEjAONuYW1lAAAKDAAAAUAAAAJnEKM8sHBvc3QAAAtMAAAAbQAAAJwZ7sqZeJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGFhYJzAwMrAwNTJdIaBgaEfQjO+ZjBi5ACKMrAyM2AFAWmuKQwHnum8/MTc8L+BgYH5DgOQZGBEUcQEAINZDYF4nOWRSw6CQBBEa+TjBxcuDPEQhOPJRTyBKxPCBWABl2FotlwAq6ddaPQG9uRN0pVM96QKQAIgIgWJAfeAg9adqgt6hEPQY1zZn3GiEvvCl36cKqmlkU6GeVlX4ENtpTf1qxynvJ8cl7DdcfIGGfftscMWqf7OpT8m/Fsdw317dZk6bWhmvjQ0Lz8amulUGfQUUhv6VhpDc5XWoOOQzqD3kN5gCpDBYB6YFwPJE/6/RgEAAAB4nH0WbWwU1/HNe3e7e7f3wd7H7u2aO3O7vl2bs+/wfewajD/4ONwEYhtsAhiHJES0SlWgNBhSA5JTfkVYalO1UqUKJSL9SEkqVSWtquAkppUqkaShREqqplIqVVXlorYiSP3HrTvvjlIURb3bN2/2zbx5M/PmY0mA4I8tM0JEEidrSTchoFWVvFL1gnnRQsQSKzlIxcAsQW0YNDMGqRxUK27Npm9vWb67sDwKD/n/Gr1I37t4vTxRLk8c4qCsOio+Zn8/IwvNBbqwMLPg1+A96x4dwYzq9Dpqf2MDV6GtxypdJSapEJeMoB62EId6rQRWHg9NK/zYfGUYhkDLwTDUlZrNUgISbURdJKnppFP3CqiuYNo1l32yxowfMjdZzd9Ym0yc6RDOh+Jmp6L4XXrzz3pXl07zetdvT55sekYB7HqhQM+HILxpwBw08fFpex7YFAYlp8D3lJyf0C1Lh79w6B8c+2RsQwF31Qtc/SAhqx8GCCuSTtJHNpExMolWVDpptaJ2UiWF5qCyZUBtR6DquSNUE2NgOdzJfP3zHI32ogcKFTXVsoleXKcGSldVUwDo1KW7CxkrwJGrpWhWkqL1YDqyzB5dlpOC960dc43G3CIHO0oTpdLELAeQ6CgU3EKBFbPi7FpVFJuXtS4UYYj0UY7M6hKFvU/LUWh+SNeHQ0cXGnMXTjUapy7MNfaWJg5O9pXGHxsvFbmv6jYhMtp8g73NPBIhOnHIAGmQPeQp8k3yC/IO+Qjtb5vTNo09aJRo2kOclIM4pAQP+bxhDCy01DIFUQj+n42fYU22Y2CYx0cO0qLrudWKpmoqBo0oWP1Vswy2o22o9acEMAVcVZHTrTu1Fl8n3ogj4FUgLwryarYVbOnmDgI/o4h7slxFi19Bew2CfTt7e3ce4KA3V83lqpsruVzlS0GJhsIioKiAyFjEVoOSFIwboQD8sPf+hr4c593Md80EJIpsaUGShFiHFBjzM45rFDOwklmvw/hQak0yFmY0FMlAJBPYV6f15p24riZgZY0aiEdE3TktAwvO7IpKwUg8oMV9LShlk8cFURSOi3Hx/SjHoqgF3O7duZ+fjgASqG81m0WQOysFWSAs0FBQDErdQTmYSEmyFIsIb30+//QDLM18uQv26eW1Rq8e68mHouE1obj//UxEEWnJUDFu4Y85xf9JPJ6Ij8prIslhBk+JAaD9jhBQIgOK/rIkbE0VpLCUDm8VpOOI4IO5hGP1RfYRO0JUkiXrSY0Mke1knOzjdcHBP167KKj8kvG2Pbdec/Km6OWA3c8gDAVW0ZggOkgPJjlv3naT+YonliBoOknX01BGgXF5eVVgPyvNznzt5F+ndpvWhl0Pf/nYPw8/4Q3s98935RePvPxGd2Oy0d0C341EllLChc3T+/27S9GUKPl/t9R1cK7FBxP3qRBoUUGzVOode/gLmrZj757jJ24dPNDXp23bcuTp048/Gb2jzPt/674nubsB58F/Y5396UM966/5V3UM38ff9V/lXC8A7LhHgEab0K6bqzfZCiuTDOklW8k29E8rO7QcTfGILoGLb3XXsUWblxVMJzTadvi6W+OuaiXhIHhujhfZGJTBoq8noqLsJCZPb9lyejLhqJHk4eOBjd5L8awTL1er5VhRDoliaHvzmtHX0dFnTN1SuvSOQuzWFL0RthMJOdz93KWfX3quOyx3dYmlK8e+Onvg2+GetVS2j379qB0LxAOqJg7+yL9tFI0lHFcizEg3v5I0AvKVe/1g9dfsTTaMVVUmCtEI8appbExgpa10PlmtV+v5ZB0bVH3bzWf8Jdj+zO9h2535d/yl+XnYvngdGrR+41Tz3etn4Ys3/KU5lCmgzEvsDptCiQYpkTrZjBFFgoBZXdGAl1hQ0ylRcx0XYwIrjodBI+LCcKsPtYJOTcawYo0A4ytxamFhyvLSNAiaynsT+87dH0cNM8pmooblf9yg4xpArRzvzk4c9jayvjHb2fLs7oSD+SMrsuokkrf1gjLxvmWUDHym/xGzO3bjZtOIoiDLoEcHp2PRR2obh47ZMmR7flWeeezE4amxjecbMz/4RrccSSTs5k6xYMnhMB14PdVB5aFnjV7jLUzJX8qBjuRLLV9ewxo98oAvueMsxr3YA2nuWIZeVaw3z0Dh8pkzl/0/0ZlX5udfAXN+xf/4LPzhtXPnXoOeJjkLNomivJ+y59keQglDr4okjHJjre+HLOlBv7qEJJUQVHF4ODQWAud++ebNHCtqSuUOq9fs/+IUO/2LtNy8Waal5gdP0Grzd5TSDc0PXtCLlaLeAnTRcV0H66PXfNX2PDtTNEAvGvTfTQ1OwlwbjjczcAJOX2y/Tej39uLsr7iP1Cnovbrj+oveLhdwd7WoE7SErC6zJ9koWtGJOWS12wQWe5d/aOQ/8w7OdDqXS3MAn95H2Whn+u5KurMzzTIc/g//D3HDy8cAAAB4nGNgZGBgAOI5bJ1a8fw2Xxm4WRhA4N7VX3YI+v98FgbmVCCXg4EJJAoALh4K8AB4nGNgZGBgbvjfwBDDwgACQJKRARXwAABHEgJ1eJxjYWBgYCEBAwAFEAAxAAAAAAAARACmASACTALgA0wDdgPyBBoEhAS0AAB4nGNgZGBg4GG4zsDLAAJMQMwFhAwM/8F8BgAfuAIHAHichZE9bsJAEIWfwZAElChKpDRpVikoEsn8lEipUKCnoAez5ke211ovSNQ5TY6QE+QI6Whzikh52EMDRbza2W/evpkdyQDusIeH8rvnLtnDJbOSK7jAo3CV+pOwT34WrqGJnnCd+qtwAy94E26yY8YOnn/FrIV3YQ+3+BCu4AafwlXqX8I++Vu4hgf8CNep/wo3MPGuhZtoeeHA6qnTczXbqVVo0sik7niO9WITT+2pPNE2X5lUdYPOURrpVNtjm3y76DkXqciaRA15q+PYqMyatQ5dsHQu67fbkehBaBIMYKExhWOcQ2GGHeMKIQxSREV0Z/mY7gU2iFlp/3VP6LbIqR9yhS4CdM5cI7rSwnk6TY4tX+tRdXQrbsuahDSUWs1JYrLiDzzcramE1AMsi6oMfbS5ohN/UMyQ/AHYk29XeJxti0sOgzAQQ8dQmAToYdIbBYmGQdWEKiBRTs932beyn2zK6KKi/zTIkOOBAiUYBhYVajR4Ei/iNQxiPvOZXuYWjm9jkvox9XGyqe80/ETdsYmjaOBBTmO/s9dDuLKN7/3Eq9dp70Qb9Y0jUwAAAA==" + +/***/ }), + +/***/ "e8j/": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Sindhi [sd] +//! author : Narain Sagar : https://github.com/narainsagar + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var months = [ + 'جنوري', + 'فيبروري', + 'مارچ', + 'اپريل', + 'مئي', + 'جون', + 'جولاءِ', + 'آگسٽ', + 'سيپٽمبر', + 'آڪٽوبر', + 'نومبر', + 'ڊسمبر' +]; +var days = [ + 'آچر', + 'سومر', + 'اڱارو', + 'اربع', + 'خميس', + 'جمع', + 'ڇنڇر' +]; + +var sd = moment.defineLocale('sd', { + months : months, + monthsShort : months, + weekdays : days, + weekdaysShort : days, + weekdaysMin : days, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd، D MMMM YYYY HH:mm' + }, + meridiemParse: /صبح|شام/, + isPM : function (input) { + return 'شام' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'صبح'; + } + return 'شام'; + }, + calendar : { + sameDay : '[اڄ] LT', + nextDay : '[سڀاڻي] LT', + nextWeek : 'dddd [اڳين هفتي تي] LT', + lastDay : '[ڪالهه] LT', + lastWeek : '[گزريل هفتي] dddd [تي] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s پوء', + past : '%s اڳ', + s : 'چند سيڪنڊ', + m : 'هڪ منٽ', + mm : '%d منٽ', + h : 'هڪ ڪلاڪ', + hh : '%d ڪلاڪ', + d : 'هڪ ڏينهن', + dd : '%d ڏينهن', + M : 'هڪ مهينو', + MM : '%d مهينا', + y : 'هڪ سال', + yy : '%d سال' + }, + preparse: function (string) { + return string.replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/,/g, '،'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return sd; + +}))); + + +/***/ }), + +/***/ "eACQ": +/***/ (function(module, exports, __webpack_require__) { + +exports = module.exports = __webpack_require__("BkJT")(undefined); +// imports +exports.i(__webpack_require__("jkwA"), ""); + +// module +exports.push([module.i, ".easy-player[data-v-2fd4e013]{position:relative;width:100%;height:100%;background-color:#000}.easy-video-player-inner[data-v-2fd4e013]{-ms-flex:1;flex:1;width:100%;height:100%}.wrapper[data-v-2fd4e013]{height:100%}.block[data-v-2fd4e013],.wrapper[data-v-2fd4e013]{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.block[data-v-2fd4e013]{width:120px;height:120px;background-color:#fff;-ms-flex-direction:column;flex-direction:column}.easy-player-right-menu[data-v-2fd4e013]{width:200px;border:none;font-size:12px;background:rgba(28,28,28,.9);transition:opacity .1s cubic-bezier(0,0,.2,1);font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}.easy-player-right-menu .menu-item[data-v-2fd4e013]{height:38px;line-height:38px;font-weight:700;border-bottom:1px solid hsla(0,0%,100%,.12);display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.easy-player-right-menu .menu-item a[data-v-2fd4e013]{color:#eee;text-decoration:none}.message-view[data-v-2fd4e013]{position:absolute;top:10px;left:10px;z-index:9999;background:rgba(33,33,33,.9);border-radius:4px;color:#fff;font-family:Noto Sans CJK SC DemiLight,Roboto,Segoe UI,Tahoma,Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px}.message-view .title[data-v-2fd4e013]{line-height:30px;border-bottom:1px solid hsla(0,0%,100%,.12);width:240px;text-align:center}.message-view .content[data-v-2fd4e013]{height:200px;width:240px;overflow:hidden;font-size:12px;padding:5px;background:rgba(33,33,33,.9);position:absolute}.message-view .content .message[data-v-2fd4e013]{position:absolute;left:5px}.copy-right[data-v-2fd4e013]{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.easy-player-loading-text[data-v-2fd4e013]{text-align:left;position:absolute;left:12px;bottom:36px;color:hsla(0,0%,100%,.6);font-size:12px;pointer-events:none;opacity:1;transition:opacity 1s cubic-bezier(0,0,.2,1);max-height:200px;overflow:hidden}.video-title[data-v-2fd4e013]{position:absolute;color:#fff;background-color:hsla(0,0%,50%,.5);border-radius:2px;padding:2px 5px;max-width:120px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.video-title-top-right[data-v-2fd4e013]{top:10px;right:10px}.video-title-top-left[data-v-2fd4e013]{top:10px;left:10px}.video-title-bottom-left[data-v-2fd4e013]{left:10px;bottom:30px}.video-title-bottom-right[data-v-2fd4e013]{right:10px;bottom:30px}.vjs-menu-button-popup .vjs-menu[data-v-2fd4e013]{width:4em}.vjs-resolution-button .vjs-resolution-button-staticlabel[data-v-2fd4e013]:before{font-family:iconfont!important;font-size:1.8em;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.vjs-resolution-button .vjs-resolution-button-label[data-v-2fd4e013]{font-size:1em;line-height:3em;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;box-sizing:inherit;font-family:Arial,Helvetica,sans-serif}.vjs-resolution-button ul.vjs-menu-content[data-v-2fd4e013]{width:4em!important}.vjs-resolution-button .vjs-menu[data-v-2fd4e013]{left:0}.vjs-resolution-button .vjs-menu li[data-v-2fd4e013]{text-transform:none;font-size:1em;font-family:Arial,Helvetica,sans-serif}.easy-player-poster[data-v-2fd4e013]{position:absolute;left:0;top:0;right:0;bottom:0;z-index:88;opacity:1;background-size:100% 100%}", ""]); + +// exports + + +/***/ }), + +/***/ "eQun": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__("maJs"); +var common = __webpack_require__("P1/4"); +var assert = __webpack_require__("tSXQ"); + +var rotr64_hi = utils.rotr64_hi; +var rotr64_lo = utils.rotr64_lo; +var shr64_hi = utils.shr64_hi; +var shr64_lo = utils.shr64_lo; +var sum64 = utils.sum64; +var sum64_hi = utils.sum64_hi; +var sum64_lo = utils.sum64_lo; +var sum64_4_hi = utils.sum64_4_hi; +var sum64_4_lo = utils.sum64_4_lo; +var sum64_5_hi = utils.sum64_5_hi; +var sum64_5_lo = utils.sum64_5_lo; + +var BlockHash = common.BlockHash; + +var sha512_K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, + 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, + 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, + 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, + 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, + 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, + 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, + 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, + 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, + 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, + 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, + 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, + 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, + 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, + 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, + 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, + 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, + 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, + 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, + 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, + 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, + 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, + 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, + 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, + 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, + 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, + 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, + 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, + 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, + 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, + 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, + 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, + 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, + 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, + 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, + 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 +]; + +function SHA512() { + if (!(this instanceof SHA512)) + return new SHA512(); + + BlockHash.call(this); + this.h = [ + 0x6a09e667, 0xf3bcc908, + 0xbb67ae85, 0x84caa73b, + 0x3c6ef372, 0xfe94f82b, + 0xa54ff53a, 0x5f1d36f1, + 0x510e527f, 0xade682d1, + 0x9b05688c, 0x2b3e6c1f, + 0x1f83d9ab, 0xfb41bd6b, + 0x5be0cd19, 0x137e2179 ]; + this.k = sha512_K; + this.W = new Array(160); +} +utils.inherits(SHA512, BlockHash); +module.exports = SHA512; + +SHA512.blockSize = 1024; +SHA512.outSize = 512; +SHA512.hmacStrength = 192; +SHA512.padLength = 128; + +SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) { + var W = this.W; + + // 32 x 32bit words + for (var i = 0; i < 32; i++) + W[i] = msg[start + i]; + for (; i < W.length; i += 2) { + var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2 + var c0_lo = g1_512_lo(W[i - 4], W[i - 3]); + var c1_hi = W[i - 14]; // i - 7 + var c1_lo = W[i - 13]; + var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15 + var c2_lo = g0_512_lo(W[i - 30], W[i - 29]); + var c3_hi = W[i - 32]; // i - 16 + var c3_lo = W[i - 31]; + + W[i] = sum64_4_hi( + c0_hi, c0_lo, + c1_hi, c1_lo, + c2_hi, c2_lo, + c3_hi, c3_lo); + W[i + 1] = sum64_4_lo( + c0_hi, c0_lo, + c1_hi, c1_lo, + c2_hi, c2_lo, + c3_hi, c3_lo); + } +}; + +SHA512.prototype._update = function _update(msg, start) { + this._prepareBlock(msg, start); + + var W = this.W; + + var ah = this.h[0]; + var al = this.h[1]; + var bh = this.h[2]; + var bl = this.h[3]; + var ch = this.h[4]; + var cl = this.h[5]; + var dh = this.h[6]; + var dl = this.h[7]; + var eh = this.h[8]; + var el = this.h[9]; + var fh = this.h[10]; + var fl = this.h[11]; + var gh = this.h[12]; + var gl = this.h[13]; + var hh = this.h[14]; + var hl = this.h[15]; + + assert(this.k.length === W.length); + for (var i = 0; i < W.length; i += 2) { + var c0_hi = hh; + var c0_lo = hl; + var c1_hi = s1_512_hi(eh, el); + var c1_lo = s1_512_lo(eh, el); + var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl); + var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl); + var c3_hi = this.k[i]; + var c3_lo = this.k[i + 1]; + var c4_hi = W[i]; + var c4_lo = W[i + 1]; + + var T1_hi = sum64_5_hi( + c0_hi, c0_lo, + c1_hi, c1_lo, + c2_hi, c2_lo, + c3_hi, c3_lo, + c4_hi, c4_lo); + var T1_lo = sum64_5_lo( + c0_hi, c0_lo, + c1_hi, c1_lo, + c2_hi, c2_lo, + c3_hi, c3_lo, + c4_hi, c4_lo); + + c0_hi = s0_512_hi(ah, al); + c0_lo = s0_512_lo(ah, al); + c1_hi = maj64_hi(ah, al, bh, bl, ch, cl); + c1_lo = maj64_lo(ah, al, bh, bl, ch, cl); + + var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo); + var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo); + + hh = gh; + hl = gl; + + gh = fh; + gl = fl; + + fh = eh; + fl = el; + + eh = sum64_hi(dh, dl, T1_hi, T1_lo); + el = sum64_lo(dl, dl, T1_hi, T1_lo); + + dh = ch; + dl = cl; + + ch = bh; + cl = bl; + + bh = ah; + bl = al; + + ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo); + al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo); + } + + sum64(this.h, 0, ah, al); + sum64(this.h, 2, bh, bl); + sum64(this.h, 4, ch, cl); + sum64(this.h, 6, dh, dl); + sum64(this.h, 8, eh, el); + sum64(this.h, 10, fh, fl); + sum64(this.h, 12, gh, gl); + sum64(this.h, 14, hh, hl); +}; + +SHA512.prototype._digest = function digest(enc) { + if (enc === 'hex') + return utils.toHex32(this.h, 'big'); + else + return utils.split32(this.h, 'big'); +}; + +function ch64_hi(xh, xl, yh, yl, zh) { + var r = (xh & yh) ^ ((~xh) & zh); + if (r < 0) + r += 0x100000000; + return r; +} + +function ch64_lo(xh, xl, yh, yl, zh, zl) { + var r = (xl & yl) ^ ((~xl) & zl); + if (r < 0) + r += 0x100000000; + return r; +} + +function maj64_hi(xh, xl, yh, yl, zh) { + var r = (xh & yh) ^ (xh & zh) ^ (yh & zh); + if (r < 0) + r += 0x100000000; + return r; +} + +function maj64_lo(xh, xl, yh, yl, zh, zl) { + var r = (xl & yl) ^ (xl & zl) ^ (yl & zl); + if (r < 0) + r += 0x100000000; + return r; +} + +function s0_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 28); + var c1_hi = rotr64_hi(xl, xh, 2); // 34 + var c2_hi = rotr64_hi(xl, xh, 7); // 39 + + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 0x100000000; + return r; +} + +function s0_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 28); + var c1_lo = rotr64_lo(xl, xh, 2); // 34 + var c2_lo = rotr64_lo(xl, xh, 7); // 39 + + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 0x100000000; + return r; +} + +function s1_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 14); + var c1_hi = rotr64_hi(xh, xl, 18); + var c2_hi = rotr64_hi(xl, xh, 9); // 41 + + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 0x100000000; + return r; +} + +function s1_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 14); + var c1_lo = rotr64_lo(xh, xl, 18); + var c2_lo = rotr64_lo(xl, xh, 9); // 41 + + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 0x100000000; + return r; +} + +function g0_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 1); + var c1_hi = rotr64_hi(xh, xl, 8); + var c2_hi = shr64_hi(xh, xl, 7); + + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 0x100000000; + return r; +} + +function g0_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 1); + var c1_lo = rotr64_lo(xh, xl, 8); + var c2_lo = shr64_lo(xh, xl, 7); + + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 0x100000000; + return r; +} + +function g1_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 19); + var c1_hi = rotr64_hi(xl, xh, 29); // 61 + var c2_hi = shr64_hi(xh, xl, 6); + + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 0x100000000; + return r; +} + +function g1_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 19); + var c1_lo = rotr64_lo(xl, xh, 29); // 61 + var c2_lo = shr64_lo(xh, xl, 6); + + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 0x100000000; + return r; +} + + +/***/ }), + +/***/ "eoKO": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : German (Switzerland) [de-ch] +//! author : sschueller : https://github.com/sschueller + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +// based on: https://www.bk.admin.ch/dokumentation/sprachen/04915/05016/index.html?lang=de# + +function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; +} + +var deCh = moment.defineLocale('de-ch', { + months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort : 'Jan._Febr._März_April_Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.'.split('_'), + monthsParseExact : true, + weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH.mm', + LLLL : 'dddd, D. MMMM YYYY HH.mm' + }, + calendar : { + sameDay: '[heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]' + }, + relativeTime : { + future : 'in %s', + past : 'vor %s', + s : 'ein paar Sekunden', + m : processRelativeTime, + mm : '%d Minuten', + h : processRelativeTime, + hh : '%d Stunden', + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return deCh; + +}))); + + +/***/ }), + +/***/ "evnR": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {var xor = __webpack_require__("EUFM") + +function getBlock (self) { + self._prev = self._cipher.encryptBlock(self._prev) + return self._prev +} + +exports.encrypt = function (self, chunk) { + while (self._cache.length < chunk.length) { + self._cache = Buffer.concat([self._cache, getBlock(self)]) + } + + var pad = self._cache.slice(0, chunk.length) + self._cache = self._cache.slice(chunk.length) + return xor(chunk, pad) +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("NfRg").Buffer)) + +/***/ }), + +/***/ "f8oB": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Northern Sami [se] +//! authors : Bård Rolstad Henriksen : https://github.com/karamell + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + + +var se = moment.defineLocale('se', { + months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'), + monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'), + weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'), + weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), + weekdaysMin : 's_v_m_g_d_b_L'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'MMMM D. [b.] YYYY', + LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm', + LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm' + }, + calendar : { + sameDay: '[otne ti] LT', + nextDay: '[ihttin ti] LT', + nextWeek: 'dddd [ti] LT', + lastDay: '[ikte ti] LT', + lastWeek: '[ovddit] dddd [ti] LT', + sameElse: 'L' + }, + relativeTime : { + future : '%s geažes', + past : 'maŋit %s', + s : 'moadde sekunddat', + m : 'okta minuhta', + mm : '%d minuhtat', + h : 'okta diimmu', + hh : '%d diimmut', + d : 'okta beaivi', + dd : '%d beaivvit', + M : 'okta mánnu', + MM : '%d mánut', + y : 'okta jahki', + yy : '%d jagit' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return se; + +}))); + + +/***/ }), + +/***/ "fCcy": +/***/ (function(module, exports, __webpack_require__) { + +var r; + +module.exports = function rand(len) { + if (!r) + r = new Rand(null); + + return r.generate(len); +}; + +function Rand(rand) { + this.rand = rand; +} +module.exports.Rand = Rand; + +Rand.prototype.generate = function generate(len) { + return this._rand(len); +}; + +// Emulate crypto API using randy +Rand.prototype._rand = function _rand(n) { + if (this.rand.getBytes) + return this.rand.getBytes(n); + + var res = new Uint8Array(n); + for (var i = 0; i < res.length; i++) + res[i] = this.rand.getByte(); + return res; +}; + +if (typeof self === 'object') { + if (self.crypto && self.crypto.getRandomValues) { + // Modern browsers + Rand.prototype._rand = function _rand(n) { + var arr = new Uint8Array(n); + self.crypto.getRandomValues(arr); + return arr; + }; + } else if (self.msCrypto && self.msCrypto.getRandomValues) { + // IE + Rand.prototype._rand = function _rand(n) { + var arr = new Uint8Array(n); + self.msCrypto.getRandomValues(arr); + return arr; + }; + + // Safari's WebWorkers do not have `crypto` + } else if (typeof window === 'object') { + // Old junk + Rand.prototype._rand = function() { + throw new Error('Not implemented yet'); + }; + } +} else { + // Node.js or Web worker with no crypto support + try { + var crypto = __webpack_require__(6); + if (typeof crypto.randomBytes !== 'function') + throw new Error('Not supported'); + + Rand.prototype._rand = function _rand(n) { + return crypto.randomBytes(n); + }; + } catch (e) { + } +} + + +/***/ }), + +/***/ "fKUc": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Indonesian [id] +//! author : Mohammad Satrio Utomo : https://github.com/tyok +//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var id = moment.defineLocale('id', { + months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'), + weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), + weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), + weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|siang|sore|malam/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'siang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sore' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'siang'; + } else if (hours < 19) { + return 'sore'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Besok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kemarin pukul] LT', + lastWeek : 'dddd [lalu pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lalu', + s : 'beberapa detik', + m : 'semenit', + mm : '%d menit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return id; + +}))); + + +/***/ }), + +/***/ "fS0F": +/***/ (function(module, exports, __webpack_require__) { + +// based on the aes implimentation in triple sec +// https://github.com/keybase/triplesec +// which is in turn based on the one from crypto-js +// https://code.google.com/p/crypto-js/ + +var Buffer = __webpack_require__("DLTi").Buffer + +function asUInt32Array (buf) { + if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf) + + var len = (buf.length / 4) | 0 + var out = new Array(len) + + for (var i = 0; i < len; i++) { + out[i] = buf.readUInt32BE(i * 4) + } + + return out +} + +function scrubVec (v) { + for (var i = 0; i < v.length; v++) { + v[i] = 0 + } +} + +function cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) { + var SUB_MIX0 = SUB_MIX[0] + var SUB_MIX1 = SUB_MIX[1] + var SUB_MIX2 = SUB_MIX[2] + var SUB_MIX3 = SUB_MIX[3] + + var s0 = M[0] ^ keySchedule[0] + var s1 = M[1] ^ keySchedule[1] + var s2 = M[2] ^ keySchedule[2] + var s3 = M[3] ^ keySchedule[3] + var t0, t1, t2, t3 + var ksRow = 4 + + for (var round = 1; round < nRounds; round++) { + t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++] + t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++] + t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++] + t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++] + s0 = t0 + s1 = t1 + s2 = t2 + s3 = t3 + } + + t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++] + t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++] + t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++] + t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++] + t0 = t0 >>> 0 + t1 = t1 >>> 0 + t2 = t2 >>> 0 + t3 = t3 >>> 0 + + return [t0, t1, t2, t3] +} + +// AES constants +var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36] +var G = (function () { + // Compute double table + var d = new Array(256) + for (var j = 0; j < 256; j++) { + if (j < 128) { + d[j] = j << 1 + } else { + d[j] = (j << 1) ^ 0x11b + } + } + + var SBOX = [] + var INV_SBOX = [] + var SUB_MIX = [[], [], [], []] + var INV_SUB_MIX = [[], [], [], []] + + // Walk GF(2^8) + var x = 0 + var xi = 0 + for (var i = 0; i < 256; ++i) { + // Compute sbox + var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4) + sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63 + SBOX[x] = sx + INV_SBOX[sx] = x + + // Compute multiplication + var x2 = d[x] + var x4 = d[x2] + var x8 = d[x4] + + // Compute sub bytes, mix columns tables + var t = (d[sx] * 0x101) ^ (sx * 0x1010100) + SUB_MIX[0][x] = (t << 24) | (t >>> 8) + SUB_MIX[1][x] = (t << 16) | (t >>> 16) + SUB_MIX[2][x] = (t << 8) | (t >>> 24) + SUB_MIX[3][x] = t + + // Compute inv sub bytes, inv mix columns tables + t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100) + INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8) + INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16) + INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24) + INV_SUB_MIX[3][sx] = t + + if (x === 0) { + x = xi = 1 + } else { + x = x2 ^ d[d[d[x8 ^ x2]]] + xi ^= d[d[xi]] + } + } + + return { + SBOX: SBOX, + INV_SBOX: INV_SBOX, + SUB_MIX: SUB_MIX, + INV_SUB_MIX: INV_SUB_MIX + } +})() + +function AES (key) { + this._key = asUInt32Array(key) + this._reset() +} + +AES.blockSize = 4 * 4 +AES.keySize = 256 / 8 +AES.prototype.blockSize = AES.blockSize +AES.prototype.keySize = AES.keySize +AES.prototype._reset = function () { + var keyWords = this._key + var keySize = keyWords.length + var nRounds = keySize + 6 + var ksRows = (nRounds + 1) * 4 + + var keySchedule = [] + for (var k = 0; k < keySize; k++) { + keySchedule[k] = keyWords[k] + } + + for (k = keySize; k < ksRows; k++) { + var t = keySchedule[k - 1] + + if (k % keySize === 0) { + t = (t << 8) | (t >>> 24) + t = + (G.SBOX[t >>> 24] << 24) | + (G.SBOX[(t >>> 16) & 0xff] << 16) | + (G.SBOX[(t >>> 8) & 0xff] << 8) | + (G.SBOX[t & 0xff]) + + t ^= RCON[(k / keySize) | 0] << 24 + } else if (keySize > 6 && k % keySize === 4) { + t = + (G.SBOX[t >>> 24] << 24) | + (G.SBOX[(t >>> 16) & 0xff] << 16) | + (G.SBOX[(t >>> 8) & 0xff] << 8) | + (G.SBOX[t & 0xff]) + } + + keySchedule[k] = keySchedule[k - keySize] ^ t + } + + var invKeySchedule = [] + for (var ik = 0; ik < ksRows; ik++) { + var ksR = ksRows - ik + var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)] + + if (ik < 4 || ksR <= 4) { + invKeySchedule[ik] = tt + } else { + invKeySchedule[ik] = + G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^ + G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^ + G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^ + G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]] + } + } + + this._nRounds = nRounds + this._keySchedule = keySchedule + this._invKeySchedule = invKeySchedule +} + +AES.prototype.encryptBlockRaw = function (M) { + M = asUInt32Array(M) + return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds) +} + +AES.prototype.encryptBlock = function (M) { + var out = this.encryptBlockRaw(M) + var buf = Buffer.allocUnsafe(16) + buf.writeUInt32BE(out[0], 0) + buf.writeUInt32BE(out[1], 4) + buf.writeUInt32BE(out[2], 8) + buf.writeUInt32BE(out[3], 12) + return buf +} + +AES.prototype.decryptBlock = function (M) { + M = asUInt32Array(M) + + // swap + var m1 = M[1] + M[1] = M[3] + M[3] = m1 + + var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds) + var buf = Buffer.allocUnsafe(16) + buf.writeUInt32BE(out[0], 0) + buf.writeUInt32BE(out[3], 4) + buf.writeUInt32BE(out[2], 8) + buf.writeUInt32BE(out[1], 12) + return buf +} + +AES.prototype.scrub = function () { + scrubVec(this._keySchedule) + scrubVec(this._invKeySchedule) + scrubVec(this._key) +} + +module.exports.AES = AES + + +/***/ }), + +/***/ "fnIC": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Latvian [lv] +//! author : Kristaps Karlsons : https://github.com/skakri +//! author : Jānis Elmeris : https://github.com/JanisE + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var units = { + 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), + 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), + 'h': 'stundas_stundām_stunda_stundas'.split('_'), + 'hh': 'stundas_stundām_stunda_stundas'.split('_'), + 'd': 'dienas_dienām_diena_dienas'.split('_'), + 'dd': 'dienas_dienām_diena_dienas'.split('_'), + 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + 'y': 'gada_gadiem_gads_gadi'.split('_'), + 'yy': 'gada_gadiem_gads_gadi'.split('_') +}; +/** + * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. + */ +function format(forms, number, withoutSuffix) { + if (withoutSuffix) { + // E.g. "21 minūte", "3 minūtes". + return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3]; + } else { + // E.g. "21 minūtes" as in "pēc 21 minūtes". + // E.g. "3 minūtēm" as in "pēc 3 minūtēm". + return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1]; + } +} +function relativeTimeWithPlural(number, withoutSuffix, key) { + return number + ' ' + format(units[key], number, withoutSuffix); +} +function relativeTimeWithSingular(number, withoutSuffix, key) { + return format(units[key], number, withoutSuffix); +} +function relativeSeconds(number, withoutSuffix) { + return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; +} + +var lv = moment.defineLocale('lv', { + months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), + weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY.', + LL : 'YYYY. [gada] D. MMMM', + LLL : 'YYYY. [gada] D. MMMM, HH:mm', + LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' + }, + calendar : { + sameDay : '[Šodien pulksten] LT', + nextDay : '[Rīt pulksten] LT', + nextWeek : 'dddd [pulksten] LT', + lastDay : '[Vakar pulksten] LT', + lastWeek : '[Pagājušā] dddd [pulksten] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'pēc %s', + past : 'pirms %s', + s : relativeSeconds, + m : relativeTimeWithSingular, + mm : relativeTimeWithPlural, + h : relativeTimeWithSingular, + hh : relativeTimeWithPlural, + d : relativeTimeWithSingular, + dd : relativeTimeWithPlural, + M : relativeTimeWithSingular, + MM : relativeTimeWithPlural, + y : relativeTimeWithSingular, + yy : relativeTimeWithPlural + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return lv; + +}))); + + +/***/ }), + +/***/ "fu1J": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Spanish (Dominican Republic) [es-do] + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'); +var monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); + +var esDo = moment.defineLocale('es-do', { + months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortDot; + } else if (/-MMM-/.test(format)) { + return monthsShort[m.month()]; + } else { + return monthsShortDot[m.month()]; + } + }, + monthsParseExact : true, + weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY h:mm A', + LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A' + }, + calendar : { + sameDay : function () { + return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextDay : function () { + return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastDay : function () { + return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'en %s', + past : 'hace %s', + s : 'unos segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'una hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un año', + yy : '%d años' + }, + dayOfMonthOrdinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return esDo; + +}))); + + +/***/ }), + +/***/ "g38Z": +/***/ (function(module, exports, __webpack_require__) { + +exports = module.exports = __webpack_require__("BkJT")(undefined); +// imports + + +// module +exports.push([module.i, ".video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-modal-dialog,.vjs-button>.vjs-icon-placeholder:before,.vjs-modal-dialog .vjs-modal-dialog-content{position:absolute;top:0;left:0;width:100%;height:100%}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.vjs-button>.vjs-icon-placeholder:before{text-align:center}@font-face{font-family:VideoJS;src:url(data:application/font-woff;charset=utf-8;base64,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) format(\"woff\");font-weight:400;font-style:normal}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-play-control .vjs-icon-placeholder,.vjs-icon-play{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-play-control .vjs-icon-placeholder:before,.vjs-icon-play:before{content:\"\\F101\"}.vjs-icon-play-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play-circle:before{content:\"\\F102\"}.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder,.vjs-icon-pause{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder:before,.vjs-icon-pause:before{content:\"\\F103\"}.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder,.vjs-icon-volume-mute{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder:before,.vjs-icon-volume-mute:before{content:\"\\F104\"}.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder,.vjs-icon-volume-low{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder:before,.vjs-icon-volume-low:before{content:\"\\F105\"}.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder,.vjs-icon-volume-mid{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder:before,.vjs-icon-volume-mid:before{content:\"\\F106\"}.video-js .vjs-mute-control .vjs-icon-placeholder,.vjs-icon-volume-high{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control .vjs-icon-placeholder:before,.vjs-icon-volume-high:before{content:\"\\F107\"}.video-js .vjs-fullscreen-control .vjs-icon-placeholder,.vjs-icon-fullscreen-enter{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-fullscreen-control .vjs-icon-placeholder:before,.vjs-icon-fullscreen-enter:before{content:\"\\F108\"}.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder,.vjs-icon-fullscreen-exit{font-family:VideoJS;font-weight:400;font-style:normal}.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder:before,.vjs-icon-fullscreen-exit:before{content:\"\\F109\"}.vjs-icon-spinner{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-spinner:before{content:\"\\F10A\"}.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js .vjs-subs-caps-button .vjs-icon-placeholder,.video-js .vjs-subtitles-button .vjs-icon-placeholder,.vjs-icon-subtitles{font-family:VideoJS;font-weight:400;font-style:normal}.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js .vjs-subtitles-button .vjs-icon-placeholder:before,.vjs-icon-subtitles:before{content:\"\\F10B\"}.video-js .vjs-captions-button .vjs-icon-placeholder,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder,.vjs-icon-captions{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-captions-button .vjs-icon-placeholder:before,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder:before,.vjs-icon-captions:before{content:\"\\F10C\"}.vjs-icon-hd{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-hd:before{content:\"\\F10D\"}.video-js .vjs-chapters-button .vjs-icon-placeholder,.vjs-icon-chapters{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-chapters-button .vjs-icon-placeholder:before,.vjs-icon-chapters:before{content:\"\\F10E\"}.vjs-icon-downloading{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-downloading:before{content:\"\\F10F\"}.vjs-icon-file-download{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-file-download:before{content:\"\\F110\"}.vjs-icon-file-download-done{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-file-download-done:before{content:\"\\F111\"}.vjs-icon-file-download-off{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-file-download-off:before{content:\"\\F112\"}.vjs-icon-share{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-share:before{content:\"\\F113\"}.vjs-icon-cog{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cog:before{content:\"\\F114\"}.vjs-icon-square{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-square:before{content:\"\\F115\"}.video-js .vjs-play-progress,.video-js .vjs-volume-level,.vjs-icon-circle,.vjs-seek-to-live-control .vjs-icon-placeholder{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-play-progress:before,.video-js .vjs-volume-level:before,.vjs-icon-circle:before,.vjs-seek-to-live-control .vjs-icon-placeholder:before{content:\"\\F116\"}.vjs-icon-circle-outline{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-outline:before{content:\"\\F117\"}.vjs-icon-circle-inner-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-inner-circle:before{content:\"\\F118\"}.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder,.vjs-icon-cancel{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder:before,.vjs-icon-cancel:before{content:\"\\F119\"}.vjs-icon-repeat{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-repeat:before{content:\"\\F11A\"}.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder,.vjs-icon-replay{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder:before,.vjs-icon-replay:before{content:\"\\F11B\"}.video-js .vjs-skip-backward-5 .vjs-icon-placeholder,.vjs-icon-replay-5{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-skip-backward-5 .vjs-icon-placeholder:before,.vjs-icon-replay-5:before{content:\"\\F11C\"}.video-js .vjs-skip-backward-10 .vjs-icon-placeholder,.vjs-icon-replay-10{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-skip-backward-10 .vjs-icon-placeholder:before,.vjs-icon-replay-10:before{content:\"\\F11D\"}.video-js .vjs-skip-backward-30 .vjs-icon-placeholder,.vjs-icon-replay-30{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-skip-backward-30 .vjs-icon-placeholder:before,.vjs-icon-replay-30:before{content:\"\\F11E\"}.video-js .vjs-skip-forward-5 .vjs-icon-placeholder,.vjs-icon-forward-5{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-skip-forward-5 .vjs-icon-placeholder:before,.vjs-icon-forward-5:before{content:\"\\F11F\"}.video-js .vjs-skip-forward-10 .vjs-icon-placeholder,.vjs-icon-forward-10{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-skip-forward-10 .vjs-icon-placeholder:before,.vjs-icon-forward-10:before{content:\"\\F120\"}.video-js .vjs-skip-forward-30 .vjs-icon-placeholder,.vjs-icon-forward-30{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-skip-forward-30 .vjs-icon-placeholder:before,.vjs-icon-forward-30:before{content:\"\\F121\"}.video-js .vjs-audio-button .vjs-icon-placeholder,.vjs-icon-audio{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-audio-button .vjs-icon-placeholder:before,.vjs-icon-audio:before{content:\"\\F122\"}.vjs-icon-next-item{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-next-item:before{content:\"\\F123\"}.vjs-icon-previous-item{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-previous-item:before{content:\"\\F124\"}.vjs-icon-shuffle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-shuffle:before{content:\"\\F125\"}.vjs-icon-cast{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cast:before{content:\"\\F126\"}.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder,.vjs-icon-picture-in-picture-enter{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-picture-in-picture-control .vjs-icon-placeholder:before,.vjs-icon-picture-in-picture-enter:before{content:\"\\F127\"}.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder,.vjs-icon-picture-in-picture-exit{font-family:VideoJS;font-weight:400;font-style:normal}.video-js.vjs-picture-in-picture .vjs-picture-in-picture-control .vjs-icon-placeholder:before,.vjs-icon-picture-in-picture-exit:before{content:\"\\F128\"}.vjs-icon-facebook{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-facebook:before{content:\"\\F129\"}.vjs-icon-linkedin{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-linkedin:before{content:\"\\F12A\"}.vjs-icon-twitter{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-twitter:before{content:\"\\F12B\"}.vjs-icon-tumblr{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-tumblr:before{content:\"\\F12C\"}.vjs-icon-pinterest{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-pinterest:before{content:\"\\F12D\"}.video-js .vjs-descriptions-button .vjs-icon-placeholder,.vjs-icon-audio-description{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-descriptions-button .vjs-icon-placeholder:before,.vjs-icon-audio-description:before{content:\"\\F12E\"}.video-js{display:inline-block;vertical-align:top;box-sizing:border-box;color:#fff;background-color:#000;position:relative;padding:0;font-size:10px;line-height:1;font-weight:400;font-style:normal;font-family:Arial,Helvetica,sans-serif;word-break:normal}.video-js:-moz-full-screen{position:absolute}.video-js:-webkit-full-screen{width:100%!important;height:100%!important}.video-js[tabindex=\"-1\"]{outline:0}.video-js *,.video-js :after,.video-js :before{box-sizing:inherit}.video-js ul{font-family:inherit;font-size:inherit;line-height:inherit;list-style-position:outside;margin:0}.video-js.vjs-1-1,.video-js.vjs-4-3,.video-js.vjs-9-16,.video-js.vjs-16-9,.video-js.vjs-fluid{width:100%;max-width:100%}.video-js.vjs-1-1:not(.vjs-audio-only-mode),.video-js.vjs-4-3:not(.vjs-audio-only-mode),.video-js.vjs-9-16:not(.vjs-audio-only-mode),.video-js.vjs-16-9:not(.vjs-audio-only-mode),.video-js.vjs-fluid:not(.vjs-audio-only-mode){height:0}.video-js.vjs-16-9:not(.vjs-audio-only-mode){padding-top:56.25%}.video-js.vjs-4-3:not(.vjs-audio-only-mode){padding-top:75%}.video-js.vjs-9-16:not(.vjs-audio-only-mode){padding-top:177.7777777778%}.video-js.vjs-1-1:not(.vjs-audio-only-mode){padding-top:100%}.video-js.vjs-fill:not(.vjs-audio-only-mode),.video-js .vjs-tech{width:100%;height:100%}.video-js .vjs-tech{position:absolute;top:0;left:0}.video-js.vjs-audio-only-mode .vjs-tech{display:none}body.vjs-full-window,body.vjs-pip-window{padding:0;margin:0;height:100%}.vjs-full-window .video-js.vjs-fullscreen,body.vjs-pip-window .video-js{position:fixed;overflow:hidden;z-index:1000;left:0;top:0;bottom:0;right:0}.video-js.vjs-fullscreen:not(.vjs-ios-native-fs),body.vjs-pip-window .video-js{width:100%!important;height:100%!important;padding-top:0!important}.video-js.vjs-fullscreen.vjs-user-inactive{cursor:none}.vjs-pip-container .vjs-pip-text{position:absolute;bottom:10%;font-size:2em;background-color:rgba(0,0,0,.7);padding:.5em;text-align:center;width:100%}.vjs-layout-small.vjs-pip-container .vjs-pip-text,.vjs-layout-tiny.vjs-pip-container .vjs-pip-text,.vjs-layout-x-small.vjs-pip-container .vjs-pip-text{bottom:0;font-size:1.4em}.vjs-hidden{display:none!important}.vjs-disabled{opacity:.5;cursor:default}.video-js .vjs-offscreen{height:1px;left:-9999px;position:absolute;top:0;width:1px}.vjs-lock-showing{display:block!important;opacity:1!important;visibility:visible!important}.vjs-no-js{padding:20px;color:#fff;background-color:#000;font-size:18px;font-family:Arial,Helvetica,sans-serif;text-align:center;width:300px;height:150px;margin:0 auto}.vjs-no-js a,.vjs-no-js a:visited{color:#66a8cc}.video-js .vjs-big-play-button{font-size:3em;line-height:1.5em;height:1.63332em;width:3em;display:block;position:absolute;top:50%;left:50%;padding:0;margin-top:-.81666em;margin-left:-1.5em;cursor:pointer;opacity:1;border:.06666em solid #fff;background-color:#2b333f;background-color:rgba(43,51,63,.7);border-radius:.3em;transition:all .4s}.video-js .vjs-big-play-button:focus,.video-js:hover .vjs-big-play-button{border-color:#fff;background-color:#73859f;background-color:rgba(115,133,159,.5);transition:all 0s}.vjs-controls-disabled .vjs-big-play-button,.vjs-error .vjs-big-play-button,.vjs-has-started .vjs-big-play-button,.vjs-using-native-controls .vjs-big-play-button{display:none}.vjs-has-started.vjs-paused.vjs-show-big-play-button-on-pause .vjs-big-play-button{display:block}.video-js button{background:0 0;border:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;text-transform:none;text-decoration:none;transition:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.vjs-control .vjs-button{width:100%;height:100%}.video-js .vjs-control.vjs-close-button{cursor:pointer;height:3em;position:absolute;right:0;top:.5em;z-index:2}.video-js .vjs-modal-dialog{background:rgba(0,0,0,.8);background:linear-gradient(180deg,rgba(0,0,0,.8),hsla(0,0%,100%,0));overflow:auto}.video-js .vjs-modal-dialog>*{box-sizing:border-box}.vjs-modal-dialog .vjs-modal-dialog-content{font-size:1.2em;line-height:1.5;padding:20px 24px;z-index:1}.vjs-menu-button{cursor:pointer}.vjs-menu-button.vjs-disabled{cursor:default}.vjs-workinghover .vjs-menu-button.vjs-disabled:hover .vjs-menu{display:none}.vjs-menu .vjs-menu-content{display:block;padding:0;margin:0;font-family:Arial,Helvetica,sans-serif;overflow:auto}.vjs-menu .vjs-menu-content>*{box-sizing:border-box}.vjs-scrubbing .vjs-control.vjs-menu-button:hover .vjs-menu{display:none}.vjs-menu li{list-style:none;margin:0;padding:.2em 0;line-height:1.4em;font-size:1.2em;text-align:center;text-transform:lowercase}.js-focus-visible .vjs-menu li.vjs-menu-item:hover,.vjs-menu li.vjs-menu-item:focus,.vjs-menu li.vjs-menu-item:hover{background-color:#73859f;background-color:rgba(115,133,159,.5)}.js-focus-visible .vjs-menu li.vjs-selected:hover,.vjs-menu li.vjs-selected,.vjs-menu li.vjs-selected:focus,.vjs-menu li.vjs-selected:hover{background-color:#fff;color:#2b333f}.js-focus-visible .vjs-menu :not(.vjs-selected):focus:not(.focus-visible),.video-js .vjs-menu :not(.vjs-selected):focus:not(:focus-visible){background:0 0}.vjs-menu li.vjs-menu-title{text-align:center;text-transform:uppercase;font-size:1em;line-height:2em;padding:0;margin:0 0 .3em;font-weight:700;cursor:default}.vjs-menu-button-popup .vjs-menu{display:none;position:absolute;bottom:0;width:10em;left:-3em;height:0;margin-bottom:1.5em;border-top-color:rgba(43,51,63,.7)}.vjs-pip-window .vjs-menu-button-popup .vjs-menu{left:unset;right:1em}.vjs-menu-button-popup .vjs-menu .vjs-menu-content{background-color:#2b333f;background-color:rgba(43,51,63,.7);position:absolute;width:100%;bottom:1.5em;max-height:15em}.vjs-layout-tiny .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-x-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:5em}.vjs-layout-small .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:10em}.vjs-layout-medium .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:14em}.vjs-layout-huge .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content,.vjs-layout-x-large .vjs-menu-button-popup .vjs-menu .vjs-menu-content{max-height:25em}.vjs-menu-button-popup .vjs-menu.vjs-lock-showing,.vjs-workinghover .vjs-menu-button-popup.vjs-hover .vjs-menu{display:block}.video-js .vjs-menu-button-inline{transition:all .4s;overflow:hidden}.video-js .vjs-menu-button-inline:before{width:2.222222222em}.video-js .vjs-menu-button-inline.vjs-slider-active,.video-js .vjs-menu-button-inline:focus,.video-js .vjs-menu-button-inline:hover{width:12em}.vjs-menu-button-inline .vjs-menu{opacity:0;height:100%;width:auto;position:absolute;left:4em;top:0;padding:0;margin:0;transition:all .4s}.vjs-menu-button-inline.vjs-slider-active .vjs-menu,.vjs-menu-button-inline:focus .vjs-menu,.vjs-menu-button-inline:hover .vjs-menu{display:block;opacity:1}.vjs-menu-button-inline .vjs-menu-content{width:auto;height:100%;margin:0;overflow:hidden}.video-js .vjs-control-bar{display:none;width:100%;position:absolute;bottom:0;left:0;right:0;height:3em;background-color:#2b333f;background-color:rgba(43,51,63,.7)}.vjs-audio-only-mode .vjs-control-bar,.vjs-has-started .vjs-control-bar{display:flex;visibility:visible;opacity:1;transition:visibility .1s,opacity .1s}.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{visibility:visible;opacity:0;pointer-events:none;transition:visibility 1s,opacity 1s}.vjs-controls-disabled .vjs-control-bar,.vjs-error .vjs-control-bar,.vjs-using-native-controls .vjs-control-bar{display:none!important}.vjs-audio-only-mode.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar,.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{opacity:1;visibility:visible;pointer-events:auto}.video-js .vjs-control{position:relative;text-align:center;margin:0;padding:0;height:100%;width:4em;flex:none}.video-js .vjs-control.vjs-visible-text{width:auto;padding-left:1em;padding-right:1em}.vjs-button>.vjs-icon-placeholder:before{font-size:1.8em;line-height:1.67}.vjs-button>.vjs-icon-placeholder{display:block}.video-js .vjs-control:focus,.video-js .vjs-control:focus:before,.video-js .vjs-control:hover:before{text-shadow:0 0 1em #fff}.video-js :not(.vjs-visible-text)>.vjs-control-text{border:0;clip:rect(0 0 0 0);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.video-js .vjs-custom-control-spacer{display:none}.video-js .vjs-progress-control{cursor:pointer;flex:auto;display:flex;align-items:center;min-width:4em;touch-action:none}.video-js .vjs-progress-control.disabled{cursor:default}.vjs-live .vjs-progress-control{display:none}.vjs-liveui .vjs-progress-control{display:flex;align-items:center}.video-js .vjs-progress-holder{flex:auto;transition:all .2s;height:.3em}.video-js .vjs-progress-control .vjs-progress-holder{margin:0 10px}.video-js .vjs-progress-control:hover .vjs-progress-holder{font-size:1.6666666667em}.video-js .vjs-progress-control:hover .vjs-progress-holder.disabled{font-size:1em}.video-js .vjs-progress-holder .vjs-load-progress,.video-js .vjs-progress-holder .vjs-load-progress div,.video-js .vjs-progress-holder .vjs-play-progress{position:absolute;display:block;height:100%;margin:0;padding:0;width:0}.video-js .vjs-play-progress{background-color:#fff}.video-js .vjs-play-progress:before{font-size:.9em;position:absolute;right:-.5em;line-height:.35em;z-index:1}.video-js .vjs-load-progress{background:rgba(115,133,159,.5)}.video-js .vjs-load-progress div{background:rgba(115,133,159,.75)}.video-js .vjs-time-tooltip{background-color:#fff;background-color:hsla(0,0%,100%,.8);border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px;pointer-events:none;position:absolute;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-progress-holder:focus .vjs-time-tooltip{display:none}.video-js .vjs-progress-control:hover .vjs-progress-holder:focus .vjs-time-tooltip,.video-js .vjs-progress-control:hover .vjs-time-tooltip{display:block;font-size:.6em;visibility:visible}.video-js .vjs-progress-control.disabled:hover .vjs-time-tooltip{font-size:1em}.video-js .vjs-progress-control .vjs-mouse-display{display:none;position:absolute;width:1px;height:100%;background-color:#000;z-index:1}.video-js .vjs-progress-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display{visibility:hidden;opacity:0;transition:visibility 1s,opacity 1s}.vjs-mouse-display .vjs-time-tooltip{color:#fff;background-color:#000;background-color:rgba(0,0,0,.8)}.video-js .vjs-slider{position:relative;cursor:pointer;padding:0;margin:0 .45em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:#73859f;background-color:rgba(115,133,159,.5)}.video-js .vjs-slider.disabled{cursor:default}.video-js .vjs-slider:focus{text-shadow:0 0 1em #fff;box-shadow:0 0 1em #fff}.video-js .vjs-mute-control{cursor:pointer;flex:none}.video-js .vjs-volume-control{cursor:pointer;margin-right:1em;display:flex}.video-js .vjs-volume-control.vjs-volume-horizontal{width:5em}.video-js .vjs-volume-panel .vjs-volume-control{visibility:visible;opacity:0;width:1px;height:1px;margin-left:-1px}.video-js .vjs-volume-panel{transition:width 1s}.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control,.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active,.video-js .vjs-volume-panel .vjs-volume-control:active,.video-js .vjs-volume-panel:active .vjs-volume-control,.video-js .vjs-volume-panel:focus .vjs-volume-control{visibility:visible;opacity:1;position:relative;transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s}.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-horizontal,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-horizontal,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-horizontal{width:5em;height:3em;margin-right:0}.video-js .vjs-volume-panel.vjs-hover .vjs-mute-control~.vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel.vjs-hover .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel .vjs-volume-control.vjs-slider-active.vjs-volume-vertical,.video-js .vjs-volume-panel .vjs-volume-control:active.vjs-volume-vertical,.video-js .vjs-volume-panel:active .vjs-volume-control.vjs-volume-vertical,.video-js .vjs-volume-panel:focus .vjs-volume-control.vjs-volume-vertical{left:-3.5em;transition:left 0s}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js .vjs-volume-panel.vjs-volume-panel-horizontal:active{width:10em;transition:width .1s}.video-js .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-mute-toggle-only{width:4em}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{height:8em;width:3em;left:-3000em;transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s}.video-js .vjs-volume-panel{display:flex}.video-js .vjs-volume-bar{margin:1.35em .45em}.vjs-volume-bar.vjs-slider-horizontal{width:5em;height:.3em}.vjs-volume-bar.vjs-slider-vertical{width:.3em;height:5em;margin:1.35em auto}.video-js .vjs-volume-level{position:absolute;bottom:0;left:0;background-color:#fff}.video-js .vjs-volume-level:before{position:absolute;font-size:.9em;z-index:1}.vjs-slider-vertical .vjs-volume-level{width:.3em}.vjs-slider-vertical .vjs-volume-level:before{top:-.5em;left:-.3em;z-index:1}.vjs-slider-horizontal .vjs-volume-level{height:.3em}.vjs-slider-horizontal .vjs-volume-level:before{line-height:.35em;right:-.5em}.video-js .vjs-volume-panel.vjs-volume-panel-vertical{width:4em}.vjs-volume-bar.vjs-slider-vertical .vjs-volume-level{height:100%}.vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level{width:100%}.video-js .vjs-volume-vertical{width:3em;height:8em;bottom:8em;background-color:#2b333f;background-color:rgba(43,51,63,.7)}.video-js .vjs-volume-horizontal .vjs-menu{left:-2em}.video-js .vjs-volume-tooltip{background-color:#fff;background-color:hsla(0,0%,100%,.8);border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px;pointer-events:none;position:absolute;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-volume-control:hover .vjs-progress-holder:focus .vjs-volume-tooltip,.video-js .vjs-volume-control:hover .vjs-volume-tooltip{display:block;font-size:1em;visibility:visible}.video-js .vjs-volume-vertical:hover .vjs-progress-holder:focus .vjs-volume-tooltip,.video-js .vjs-volume-vertical:hover .vjs-volume-tooltip{left:1em;top:-12px}.video-js .vjs-volume-control.disabled:hover .vjs-volume-tooltip{font-size:1em}.video-js .vjs-volume-control .vjs-mouse-display{display:none;position:absolute;width:100%;height:1px;background-color:#000;z-index:1}.video-js .vjs-volume-horizontal .vjs-mouse-display{width:1px;height:100%}.video-js .vjs-volume-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-volume-control .vjs-mouse-display{visibility:hidden;opacity:0;transition:visibility 1s,opacity 1s}.vjs-mouse-display .vjs-volume-tooltip{color:#fff;background-color:#000;background-color:rgba(0,0,0,.8)}.vjs-poster{display:inline-block;vertical-align:middle;cursor:pointer;margin:0;padding:0;position:absolute;top:0;right:0;bottom:0;left:0;height:100%}.vjs-has-started .vjs-poster,.vjs-using-native-controls .vjs-poster{display:none}.vjs-audio.vjs-has-started .vjs-poster,.vjs-has-started.vjs-audio-poster-mode .vjs-poster,.vjs-pip-container.vjs-has-started .vjs-poster{display:block}.vjs-poster img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.video-js .vjs-live-control{display:flex;align-items:flex-start;flex:auto;font-size:1em;line-height:3em}.video-js.vjs-liveui .vjs-live-control,.video-js:not(.vjs-live) .vjs-live-control{display:none}.video-js .vjs-seek-to-live-control{align-items:center;cursor:pointer;flex:none;display:inline-flex;height:100%;padding-left:.5em;padding-right:.5em;font-size:1em;line-height:3em;width:auto;min-width:4em}.video-js.vjs-live:not(.vjs-liveui) .vjs-seek-to-live-control,.video-js:not(.vjs-live) .vjs-seek-to-live-control{display:none}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge{cursor:auto}.vjs-seek-to-live-control .vjs-icon-placeholder{margin-right:.5em;color:#888}.vjs-seek-to-live-control.vjs-control.vjs-at-live-edge .vjs-icon-placeholder{color:red}.video-js .vjs-time-control{flex:none;font-size:1em;line-height:3em;min-width:2em;width:auto;padding-left:1em;padding-right:1em}.video-js .vjs-current-time,.video-js .vjs-duration,.vjs-live .vjs-time-control,.vjs-live .vjs-time-divider{display:none}.vjs-time-divider{display:none;line-height:3em}.video-js .vjs-play-control{cursor:pointer}.video-js .vjs-play-control .vjs-icon-placeholder{flex:none}.vjs-text-track-display{position:absolute;bottom:3em;left:0;right:0;top:0;pointer-events:none}.video-js.vjs-controls-disabled .vjs-text-track-display,.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display{bottom:1em}.video-js .vjs-text-track{font-size:1.4em;text-align:center;margin-bottom:.1em}.vjs-subtitles{color:#fff}.vjs-captions{color:#fc6}.vjs-tt-cue{display:block}video::-webkit-media-text-track-display{transform:translateY(-3em)}.video-js.vjs-controls-disabled video::-webkit-media-text-track-display,.video-js.vjs-user-inactive.vjs-playing video::-webkit-media-text-track-display{transform:translateY(-1.5em)}.video-js .vjs-picture-in-picture-control{cursor:pointer;flex:none}.video-js.vjs-audio-only-mode .vjs-picture-in-picture-control,.vjs-pip-window .vjs-picture-in-picture-control{display:none}.video-js .vjs-fullscreen-control{cursor:pointer;flex:none}.video-js.vjs-audio-only-mode .vjs-fullscreen-control,.vjs-pip-window .vjs-fullscreen-control{display:none}.vjs-playback-rate .vjs-playback-rate-value,.vjs-playback-rate>.vjs-menu-button{position:absolute;top:0;left:0;width:100%;height:100%}.vjs-playback-rate .vjs-playback-rate-value{pointer-events:none;font-size:1.5em;line-height:2;text-align:center}.vjs-playback-rate .vjs-menu{width:4em;left:0}.vjs-error-display{display:none}.vjs-error .vjs-error-display .vjs-modal-dialog-content{font-size:1.4em;text-align:center}.vjs-error .vjs-error-display:before{color:#fff;content:\"X\";font-family:Arial,Helvetica,sans-serif;font-size:4em;left:0;line-height:1;margin-top:-.5em;position:absolute;text-shadow:.05em .05em .1em #000;text-align:center;top:50%;vertical-align:middle;width:100%}.vjs-loading-spinner{display:none;position:absolute;top:50%;left:50%;margin:-25px 0 0 -25px;opacity:.85;text-align:left;border:6px solid rgba(43,51,63,.7);box-sizing:border-box;background-clip:padding-box;width:50px;height:50px;border-radius:25px;visibility:hidden}.vjs-seeking .vjs-loading-spinner,.vjs-waiting .vjs-loading-spinner{display:block;animation:vjs-spinner-show 0s linear .3s forwards}.vjs-loading-spinner:after,.vjs-loading-spinner:before{content:\"\";position:absolute;margin:-6px;box-sizing:inherit;width:inherit;height:inherit;border-radius:inherit;opacity:1;border:inherit;border-color:transparent;border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:after,.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:before{animation:vjs-spinner-spin 1.1s cubic-bezier(.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite}.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:before{border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:after{border-top-color:#fff;animation-delay:.44s}@keyframes vjs-spinner-show{to{visibility:visible}}@keyframes vjs-spinner-spin{to{transform:rotate(1turn)}}@keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}to{border-top-color:#73859f}}.video-js.vjs-audio-only-mode .vjs-captions-button{display:none}.vjs-chapters-button .vjs-menu ul{width:24em}.video-js.vjs-audio-only-mode .vjs-descriptions-button{display:none}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder{vertical-align:middle;display:inline-block;margin-bottom:-.1em}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{font-family:VideoJS;content:\"\\F10C\";font-size:1.5em;line-height:inherit}.video-js.vjs-audio-only-mode .vjs-subs-caps-button{display:none}.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder{vertical-align:middle;display:inline-block;margin-bottom:-.1em}.video-js .vjs-audio-button+.vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{font-family:VideoJS;content:\" \\F12E\";font-size:1.5em;line-height:inherit}.video-js.vjs-layout-small .vjs-current-time,.video-js.vjs-layout-small .vjs-duration,.video-js.vjs-layout-small .vjs-playback-rate,.video-js.vjs-layout-small .vjs-remaining-time,.video-js.vjs-layout-small .vjs-time-divider,.video-js.vjs-layout-small .vjs-volume-control,.video-js.vjs-layout-tiny .vjs-current-time,.video-js.vjs-layout-tiny .vjs-duration,.video-js.vjs-layout-tiny .vjs-playback-rate,.video-js.vjs-layout-tiny .vjs-remaining-time,.video-js.vjs-layout-tiny .vjs-time-divider,.video-js.vjs-layout-tiny .vjs-volume-control,.video-js.vjs-layout-x-small .vjs-current-time,.video-js.vjs-layout-x-small .vjs-duration,.video-js.vjs-layout-x-small .vjs-playback-rate,.video-js.vjs-layout-x-small .vjs-remaining-time,.video-js.vjs-layout-x-small .vjs-time-divider,.video-js.vjs-layout-x-small .vjs-volume-control{display:none}.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-tiny .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-hover,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:active,.video-js.vjs-layout-x-small .vjs-volume-panel.vjs-volume-panel-horizontal:hover{width:auto}.video-js.vjs-layout-tiny .vjs-progress-control,.video-js.vjs-layout-x-small .vjs-progress-control{display:none}.video-js.vjs-layout-x-small .vjs-custom-control-spacer{flex:auto;display:block}.vjs-modal-dialog.vjs-text-track-settings{background-color:#2b333f;background-color:rgba(43,51,63,.75);color:#fff;height:70%}.vjs-text-track-settings .vjs-modal-dialog-content{display:table}.vjs-text-track-settings .vjs-track-settings-colors,.vjs-text-track-settings .vjs-track-settings-controls,.vjs-text-track-settings .vjs-track-settings-font{display:table-cell}.vjs-text-track-settings .vjs-track-settings-controls{text-align:right;vertical-align:bottom}@supports (display:grid){.vjs-text-track-settings .vjs-modal-dialog-content{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr;padding:20px 24px 0}.vjs-track-settings-controls .vjs-default-button{margin-bottom:20px}.vjs-text-track-settings .vjs-track-settings-controls{grid-column:1/-1}.vjs-layout-small .vjs-text-track-settings .vjs-modal-dialog-content,.vjs-layout-tiny .vjs-text-track-settings .vjs-modal-dialog-content,.vjs-layout-x-small .vjs-text-track-settings .vjs-modal-dialog-content{grid-template-columns:1fr}}.vjs-track-setting>select{margin-right:1em;margin-bottom:.5em}.vjs-text-track-settings fieldset{margin:10px;border:none}.vjs-text-track-settings fieldset span{display:inline-block;padding:0 6px 8px}.vjs-text-track-settings fieldset span>select{max-width:7.3em}.vjs-text-track-settings legend{color:#fff;font-weight:700;font-size:14px}.vjs-text-track-settings .vjs-label{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);margin:0 5px 5px 0;border:0;height:1px;width:1px;overflow:hidden}.vjs-track-settings-controls button:active,.vjs-track-settings-controls button:focus{outline-style:solid;outline-width:medium;background-image:linear-gradient(0deg,#fff 88%,#73859f)}.vjs-track-settings-controls button:hover{color:rgba(43,51,63,.75)}.vjs-track-settings-controls button{background-color:#fff;background-image:linear-gradient(-180deg,#fff 88%,#73859f);color:#2b333f;cursor:pointer;border-radius:2px}.vjs-track-settings-controls .vjs-default-button{margin-right:1em}.vjs-title-bar{background:rgba(0,0,0,.9);background:linear-gradient(180deg,rgba(0,0,0,.9),rgba(0,0,0,.7) 60%,transparent);font-size:1.2em;line-height:1.5;transition:opacity .1s;padding:.666em 1.333em 4em;pointer-events:none;position:absolute;top:0;width:100%}.vjs-title-bar-description,.vjs-title-bar-title{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vjs-title-bar-title{font-weight:700;margin-bottom:.333em}.vjs-playing.vjs-user-inactive .vjs-title-bar{opacity:0;transition:opacity 1s}.video-js .vjs-skip-backward-5,.video-js .vjs-skip-backward-10,.video-js .vjs-skip-backward-30,.video-js .vjs-skip-forward-5,.video-js .vjs-skip-forward-10,.video-js .vjs-skip-forward-30{cursor:pointer}@media print{.video-js>:not(.vjs-tech):not(.vjs-poster){visibility:hidden}}.vjs-resize-manager{position:absolute;top:0;left:0;width:100%;height:100%;border:none;z-index:-1000}.js-focus-visible .video-js :focus:not(.focus-visible),.video-js :focus:not(:focus-visible){outline:0}", ""]); + +// exports + + +/***/ }), + +/***/ "g8jk": +/***/ (function(module, exports, __webpack_require__) { + +var DES = __webpack_require__("T1Xl") +var aes = __webpack_require__("pmUU") +var aesModes = __webpack_require__("4P1X") +var desModes = __webpack_require__("Upxq") +var ebtk = __webpack_require__("gHHA") + +function createCipher (suite, password) { + suite = suite.toLowerCase() + + var keyLen, ivLen + if (aesModes[suite]) { + keyLen = aesModes[suite].key + ivLen = aesModes[suite].iv + } else if (desModes[suite]) { + keyLen = desModes[suite].key * 8 + ivLen = desModes[suite].iv + } else { + throw new TypeError('invalid suite type') + } + + var keys = ebtk(password, false, keyLen, ivLen) + return createCipheriv(suite, keys.key, keys.iv) +} + +function createDecipher (suite, password) { + suite = suite.toLowerCase() + + var keyLen, ivLen + if (aesModes[suite]) { + keyLen = aesModes[suite].key + ivLen = aesModes[suite].iv + } else if (desModes[suite]) { + keyLen = desModes[suite].key * 8 + ivLen = desModes[suite].iv + } else { + throw new TypeError('invalid suite type') + } + + var keys = ebtk(password, false, keyLen, ivLen) + return createDecipheriv(suite, keys.key, keys.iv) +} + +function createCipheriv (suite, key, iv) { + suite = suite.toLowerCase() + if (aesModes[suite]) return aes.createCipheriv(suite, key, iv) + if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite }) + + throw new TypeError('invalid suite type') +} + +function createDecipheriv (suite, key, iv) { + suite = suite.toLowerCase() + if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv) + if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true }) + + throw new TypeError('invalid suite type') +} + +function getCiphers () { + return Object.keys(desModes).concat(aes.getCiphers()) +} + +exports.createCipher = exports.Cipher = createCipher +exports.createCipheriv = exports.Cipheriv = createCipheriv +exports.createDecipher = exports.Decipher = createDecipher +exports.createDecipheriv = exports.Decipheriv = createDecipheriv +exports.listCiphers = exports.getCiphers = getCiphers + + +/***/ }), + +/***/ "gCvn": +/***/ (function(module, exports) { + +module.exports = {"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}} + +/***/ }), + +/***/ "gHHA": +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__("DLTi").Buffer +var MD5 = __webpack_require__("DnPA") + +/* eslint-disable camelcase */ +function EVP_BytesToKey (password, salt, keyBits, ivLen) { + if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary') + if (salt) { + if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary') + if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length') + } + + var keyLen = keyBits / 8 + var key = Buffer.alloc(keyLen) + var iv = Buffer.alloc(ivLen || 0) + var tmp = Buffer.alloc(0) + + while (keyLen > 0 || ivLen > 0) { + var hash = new MD5() + hash.update(tmp) + hash.update(password) + if (salt) hash.update(salt) + tmp = hash.digest() + + var used = 0 + + if (keyLen > 0) { + var keyStart = key.length - keyLen + used = Math.min(keyLen, tmp.length) + tmp.copy(key, keyStart, 0, used) + keyLen -= used + } + + if (used < tmp.length && ivLen > 0) { + var ivStart = iv.length - ivLen + var length = Math.min(ivLen, tmp.length - used) + tmp.copy(iv, ivStart, used, used + length) + ivLen -= length + } + } + + tmp.fill(0) + return { key: key, iv: iv } +} + +module.exports = EVP_BytesToKey + + +/***/ }), + +/***/ "h8TZ": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Ported from https://github.com/mafintosh/end-of-stream with +// permission from the author, Mathias Buus (@mafintosh). + + +var ERR_STREAM_PREMATURE_CLOSE = __webpack_require__("DzCi").codes.ERR_STREAM_PREMATURE_CLOSE; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + callback.apply(this, args); + }; +} + +function noop() {} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function eos(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + callback = once(callback || noop); + var readable = opts.readable || opts.readable !== false && stream.readable; + var writable = opts.writable || opts.writable !== false && stream.writable; + + var onlegacyfinish = function onlegacyfinish() { + if (!stream.writable) onfinish(); + }; + + var writableEnded = stream._writableState && stream._writableState.finished; + + var onfinish = function onfinish() { + writable = false; + writableEnded = true; + if (!readable) callback.call(stream); + }; + + var readableEnded = stream._readableState && stream._readableState.endEmitted; + + var onend = function onend() { + readable = false; + readableEnded = true; + if (!writable) callback.call(stream); + }; + + var onerror = function onerror(err) { + callback.call(stream, err); + }; + + var onclose = function onclose() { + var err; + + if (readable && !readableEnded) { + if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + + if (writable && !writableEnded) { + if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + }; + + var onrequest = function onrequest() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest();else stream.on('request', onrequest); + } else if (writable && !stream._writableState) { + // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + return function () { + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +} + +module.exports = eos; + +/***/ }), + +/***/ "hBSA": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(process) {// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1, +// backported and transplited with Babel, with backwards-compat fixes + +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// resolves . and .. elements in a path array with directory names there +// must be no slashes, empty elements, or device names (c:\) in the array +// (so also no leading and trailing slashes - it does not distinguish +// relative and absolute paths) +function normalizeArray(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} + +// path.resolve([from ...], to) +// posix version +exports.resolve = function() { + var resolvedPath = '', + resolvedAbsolute = false; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : process.cwd(); + + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; +}; + +// path.normalize(path) +// posix version +exports.normalize = function(path) { + var isAbsolute = exports.isAbsolute(path), + trailingSlash = substr(path, -1) === '/'; + + // Normalize the path + path = normalizeArray(filter(path.split('/'), function(p) { + return !!p; + }), !isAbsolute).join('/'); + + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + + return (isAbsolute ? '/' : '') + path; +}; + +// posix version +exports.isAbsolute = function(path) { + return path.charAt(0) === '/'; +}; + +// posix version +exports.join = function() { + var paths = Array.prototype.slice.call(arguments, 0); + return exports.normalize(filter(paths, function(p, index) { + if (typeof p !== 'string') { + throw new TypeError('Arguments to path.join must be strings'); + } + return p; + }).join('/')); +}; + + +// path.relative(from, to) +// posix version +exports.relative = function(from, to) { + from = exports.resolve(from).substr(1); + to = exports.resolve(to).substr(1); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + + return outputParts.join('/'); +}; + +exports.sep = '/'; +exports.delimiter = ':'; + +exports.dirname = function (path) { + if (typeof path !== 'string') path = path + ''; + if (path.length === 0) return '.'; + var code = path.charCodeAt(0); + var hasRoot = code === 47 /*/*/; + var end = -1; + var matchedSlash = true; + for (var i = path.length - 1; i >= 1; --i) { + code = path.charCodeAt(i); + if (code === 47 /*/*/) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? '/' : '.'; + if (hasRoot && end === 1) { + // return '//'; + // Backwards-compat fix: + return '/'; + } + return path.slice(0, end); +}; + +function basename(path) { + if (typeof path !== 'string') path = path + ''; + + var start = 0; + var end = -1; + var matchedSlash = true; + var i; + + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ''; + return path.slice(start, end); +} + +// Uses a mixed approach for backwards-compatibility, as ext behavior changed +// in new Node.js versions, so only basename() above is backported here +exports.basename = function (path, ext) { + var f = basename(path); + if (ext && f.substr(-1 * ext.length) === ext) { + f = f.substr(0, f.length - ext.length); + } + return f; +}; + +exports.extname = function (path) { + if (typeof path !== 'string') path = path + ''; + var startDot = -1; + var startPart = 0; + var end = -1; + var matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + var preDotState = 0; + for (var i = path.length - 1; i >= 0; --i) { + var code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === 46 /*.*/) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) + startDot = i; + else if (preDotState !== 1) + preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if (startDot === -1 || end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ''; + } + return path.slice(startDot, end); +}; + +function filter (xs, f) { + if (xs.filter) return xs.filter(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + if (f(xs[i], i, xs)) res.push(xs[i]); + } + return res; +} + +// String.prototype.substr - negative index don't work in IE8 +var substr = 'ab'.substr(-1) === 'b' + ? function (str, start, len) { return str.substr(start, len) } + : function (str, start, len) { + if (start < 0) start = str.length + start; + return str.substr(start, len); + } +; + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("V0EG"))) + +/***/ }), + +/***/ "hVm5": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Bulgarian [bg] +//! author : Krasen Borisov : https://github.com/kraz + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var bg = moment.defineLocale('bg', { + months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), + monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), + weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), + weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'), + weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'D.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Днес в] LT', + nextDay : '[Утре в] LT', + nextWeek : 'dddd [в] LT', + lastDay : '[Вчера в] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[В изминалата] dddd [в] LT'; + case 1: + case 2: + case 4: + case 5: + return '[В изминалия] dddd [в] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'след %s', + past : 'преди %s', + s : 'няколко секунди', + m : 'минута', + mm : '%d минути', + h : 'час', + hh : '%d часа', + d : 'ден', + dd : '%d дни', + M : 'месец', + MM : '%d месеца', + y : 'година', + yy : '%d години' + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return bg; + +}))); + + +/***/ }), + +/***/ "hsap": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(module) {//! moment.js +//! version : 2.18.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com + +;(function (global, factory) { + true ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + global.moment = factory() +}(this, (function () { 'use strict'; + +var hookCallback; + +function hooks () { + return hookCallback.apply(null, arguments); +} + +// This is done to register the method called with moment() +// without creating circular dependencies. +function setHookCallback (callback) { + hookCallback = callback; +} + +function isArray(input) { + return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; +} + +function isObject(input) { + // IE8 will treat undefined and null as object if it wasn't for + // input != null + return input != null && Object.prototype.toString.call(input) === '[object Object]'; +} + +function isObjectEmpty(obj) { + var k; + for (k in obj) { + // even if its not own property I'd still call it non-empty + return false; + } + return true; +} + +function isUndefined(input) { + return input === void 0; +} + +function isNumber(input) { + return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; +} + +function isDate(input) { + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; +} + +function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; +} + +function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); +} + +function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; +} + +function createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); +} + +function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false, + parsedDateParts : [], + meridiem : null, + rfc2822 : false, + weekdayMismatch : false + }; +} + +function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; +} + +var some; +if (Array.prototype.some) { + some = Array.prototype.some; +} else { + some = function (fun) { + var t = Object(this); + var len = t.length >>> 0; + + for (var i = 0; i < len; i++) { + if (i in t && fun.call(this, t[i], i, t)) { + return true; + } + } + + return false; + }; +} + +var some$1 = some; + +function isValid(m) { + if (m._isValid == null) { + var flags = getParsingFlags(m); + var parsedParts = some$1.call(flags.parsedDateParts, function (i) { + return i != null; + }); + var isNowValid = !isNaN(m._d.getTime()) && + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); + + if (m._strict) { + isNowValid = isNowValid && + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; + } + + if (Object.isFrozen == null || !Object.isFrozen(m)) { + m._isValid = isNowValid; + } + else { + return isNowValid; + } + } + return m._isValid; +} + +function createInvalid (flags) { + var m = createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m), flags); + } + else { + getParsingFlags(m).userInvalidated = true; + } + + return m; +} + +// Plugins that add properties should also add the key here (null value), +// so we can properly clone ourselves. +var momentProperties = hooks.momentProperties = []; + +function copyConfig(to, from) { + var i, prop, val; + + if (!isUndefined(from._isAMomentObject)) { + to._isAMomentObject = from._isAMomentObject; + } + if (!isUndefined(from._i)) { + to._i = from._i; + } + if (!isUndefined(from._f)) { + to._f = from._f; + } + if (!isUndefined(from._l)) { + to._l = from._l; + } + if (!isUndefined(from._strict)) { + to._strict = from._strict; + } + if (!isUndefined(from._tzm)) { + to._tzm = from._tzm; + } + if (!isUndefined(from._isUTC)) { + to._isUTC = from._isUTC; + } + if (!isUndefined(from._offset)) { + to._offset = from._offset; + } + if (!isUndefined(from._pf)) { + to._pf = getParsingFlags(from); + } + if (!isUndefined(from._locale)) { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i = 0; i < momentProperties.length; i++) { + prop = momentProperties[i]; + val = from[prop]; + if (!isUndefined(val)) { + to[prop] = val; + } + } + } + + return to; +} + +var updateInProgress = false; + +// Moment prototype object +function Moment(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + if (!this.isValid()) { + this._d = new Date(NaN); + } + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + hooks.updateOffset(this); + updateInProgress = false; + } +} + +function isMoment (obj) { + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); +} + +function absFloor (number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } +} + +function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + + return value; +} + +// compare two arrays, return the number of differences +function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; +} + +function warn(msg) { + if (hooks.suppressDeprecationWarnings === false && + (typeof console !== 'undefined') && console.warn) { + console.warn('Deprecation warning: ' + msg); + } +} + +function deprecate(msg, fn) { + var firstTime = true; + + return extend(function () { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(null, msg); + } + if (firstTime) { + var args = []; + var arg; + for (var i = 0; i < arguments.length; i++) { + arg = ''; + if (typeof arguments[i] === 'object') { + arg += '\n[' + i + '] '; + for (var key in arguments[0]) { + arg += key + ': ' + arguments[0][key] + ', '; + } + arg = arg.slice(0, -2); // Remove trailing comma and space + } else { + arg = arguments[i]; + } + args.push(arg); + } + warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); +} + +var deprecations = {}; + +function deprecateSimple(name, msg) { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(name, msg); + } + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } +} + +hooks.suppressDeprecationWarnings = false; +hooks.deprecationHandler = null; + +function isFunction(input) { + return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; +} + +function set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + this._config = config; + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. + // TODO: Remove "ordinalParse" fallback in next major release. + this._dayOfMonthOrdinalParseLenient = new RegExp( + (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + + '|' + (/\d{1,2}/).source); +} + +function mergeConfigs(parentConfig, childConfig) { + var res = extend({}, parentConfig), prop; + for (prop in childConfig) { + if (hasOwnProp(childConfig, prop)) { + if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { + res[prop] = {}; + extend(res[prop], parentConfig[prop]); + extend(res[prop], childConfig[prop]); + } else if (childConfig[prop] != null) { + res[prop] = childConfig[prop]; + } else { + delete res[prop]; + } + } + } + for (prop in parentConfig) { + if (hasOwnProp(parentConfig, prop) && + !hasOwnProp(childConfig, prop) && + isObject(parentConfig[prop])) { + // make sure changes to properties don't modify parent config + res[prop] = extend({}, res[prop]); + } + } + return res; +} + +function Locale(config) { + if (config != null) { + this.set(config); + } +} + +var keys; + +if (Object.keys) { + keys = Object.keys; +} else { + keys = function (obj) { + var i, res = []; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + }; +} + +var keys$1 = keys; + +var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' +}; + +function calendar (key, mom, now) { + var output = this._calendar[key] || this._calendar['sameElse']; + return isFunction(output) ? output.call(mom, now) : output; +} + +var defaultLongDateFormat = { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' +}; + +function longDateFormat (key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; + + if (format || !formatUpper) { + return format; + } + + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + + return this._longDateFormat[key]; +} + +var defaultInvalidDate = 'Invalid date'; + +function invalidDate () { + return this._invalidDate; +} + +var defaultOrdinal = '%d'; +var defaultDayOfMonthOrdinalParse = /\d{1,2}/; + +function ordinal (number) { + return this._ordinal.replace('%d', number); +} + +var defaultRelativeTime = { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + ss : '%d seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' +}; + +function relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (isFunction(output)) ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); +} + +function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return isFunction(format) ? format(output) : format.replace(/%s/i, output); +} + +var aliases = {}; + +function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; +} + +function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; +} + +function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; +} + +var priorities = {}; + +function addUnitPriority(unit, priority) { + priorities[unit] = priority; +} + +function getPrioritizedUnits(unitsObj) { + var units = []; + for (var u in unitsObj) { + units.push({unit: u, priority: priorities[u]}); + } + units.sort(function (a, b) { + return a.priority - b.priority; + }); + return units; +} + +function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + set$1(this, unit, value); + hooks.updateOffset(this, keepTime); + return this; + } else { + return get(this, unit); + } + }; +} + +function get (mom, unit) { + return mom.isValid() ? + mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; +} + +function set$1 (mom, unit, value) { + if (mom.isValid()) { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } +} + +// MOMENTS + +function stringGet (units) { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](); + } + return this; +} + + +function stringSet (units, value) { + if (typeof units === 'object') { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units); + for (var i = 0; i < prioritized.length; i++) { + this[prioritized[i].unit](units[prioritized[i].unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); + } + } + return this; +} + +function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; +} + +var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; + +var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; + +var formatFunctions = {}; + +var formatTokenFunctions = {}; + +// token: 'M' +// padded: ['MM', 2] +// ordinal: 'Mo' +// callback: function () { this.month() + 1 } +function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } +} + +function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); +} + +function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = '', i; + for (i = 0; i < length; i++) { + output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; + } + return output; + }; +} + +// format date using native date object +function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } + + format = expandFormat(format, m.localeData()); + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); + + return formatFunctions[format](m); +} + +function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; +} + +var match1 = /\d/; // 0 - 9 +var match2 = /\d\d/; // 00 - 99 +var match3 = /\d{3}/; // 000 - 999 +var match4 = /\d{4}/; // 0000 - 9999 +var match6 = /[+-]?\d{6}/; // -999999 - 999999 +var match1to2 = /\d\d?/; // 0 - 99 +var match3to4 = /\d\d\d\d?/; // 999 - 9999 +var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 +var match1to3 = /\d{1,3}/; // 0 - 999 +var match1to4 = /\d{1,4}/; // 0 - 9999 +var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + +var matchUnsigned = /\d+/; // 0 - inf +var matchSigned = /[+-]?\d+/; // -inf - inf + +var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z +var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z + +var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + +// any word (or two) characters or numbers including two/three word month in arabic. +// includes scottish gaelic two word and hyphenated months +var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; + + +var regexes = {}; + +function addRegexToken (token, regex, strictRegex) { + regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; +} + +function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); +} + +// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript +function unescapeFormat(s) { + return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + })); +} + +function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); +} + +var tokens = {}; + +function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (isNumber(callback)) { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } +} + +function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); +} + +function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } +} + +var YEAR = 0; +var MONTH = 1; +var DATE = 2; +var HOUR = 3; +var MINUTE = 4; +var SECOND = 5; +var MILLISECOND = 6; +var WEEK = 7; +var WEEKDAY = 8; + +var indexOf; + +if (Array.prototype.indexOf) { + indexOf = Array.prototype.indexOf; +} else { + indexOf = function (o) { + // I know + var i; + for (i = 0; i < this.length; ++i) { + if (this[i] === o) { + return i; + } + } + return -1; + }; +} + +var indexOf$1 = indexOf; + +function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); +} + +// FORMATTING + +addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; +}); + +addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); +}); + +addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); +}); + +// ALIASES + +addUnitAlias('month', 'M'); + +// PRIORITY + +addUnitPriority('month', 8); + +// PARSING + +addRegexToken('M', match1to2); +addRegexToken('MM', match1to2, match2); +addRegexToken('MMM', function (isStrict, locale) { + return locale.monthsShortRegex(isStrict); +}); +addRegexToken('MMMM', function (isStrict, locale) { + return locale.monthsRegex(isStrict); +}); + +addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; +}); + +addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; + } +}); + +// LOCALES + +var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; +var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); +function localeMonths (m, format) { + if (!m) { + return isArray(this._months) ? this._months : + this._months['standalone']; + } + return isArray(this._months) ? this._months[m.month()] : + this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; +} + +var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); +function localeMonthsShort (m, format) { + if (!m) { + return isArray(this._monthsShort) ? this._monthsShort : + this._monthsShort['standalone']; + } + return isArray(this._monthsShort) ? this._monthsShort[m.month()] : + this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; +} + +function handleStrictParse(monthName, format, strict) { + var i, ii, mom, llc = monthName.toLocaleLowerCase(); + if (!this._monthsParse) { + // this is not used + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + for (i = 0; i < 12; ++i) { + mom = createUTC([2000, i]); + this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); + this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'MMM') { + ii = indexOf$1.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'MMM') { + ii = indexOf$1.call(this._shortMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._longMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } +} + +function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; + + if (this._monthsParseExact) { + return handleStrictParse.call(this, monthName, format, strict); + } + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + + // TODO: add sorting + // Sorting makes sure if one month (or abbr) is a prefix of another + // see sorting in computeMonthsParse + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } +} + +// MOMENTS + +function setMonth (mom, value) { + var dayOfMonth; + + if (!mom.isValid()) { + // No op + return mom; + } + + if (typeof value === 'string') { + if (/^\d+$/.test(value)) { + value = toInt(value); + } else { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (!isNumber(value)) { + return mom; + } + } + } + + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; +} + +function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + hooks.updateOffset(this, true); + return this; + } else { + return get(this, 'Month'); + } +} + +function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); +} + +var defaultMonthsShortRegex = matchWord; +function monthsShortRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsShortStrictRegex; + } else { + return this._monthsShortRegex; + } + } else { + if (!hasOwnProp(this, '_monthsShortRegex')) { + this._monthsShortRegex = defaultMonthsShortRegex; + } + return this._monthsShortStrictRegex && isStrict ? + this._monthsShortStrictRegex : this._monthsShortRegex; + } +} + +var defaultMonthsRegex = matchWord; +function monthsRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsStrictRegex; + } else { + return this._monthsRegex; + } + } else { + if (!hasOwnProp(this, '_monthsRegex')) { + this._monthsRegex = defaultMonthsRegex; + } + return this._monthsStrictRegex && isStrict ? + this._monthsStrictRegex : this._monthsRegex; + } +} + +function computeMonthsParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var shortPieces = [], longPieces = [], mixedPieces = [], + i, mom; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + shortPieces.push(this.monthsShort(mom, '')); + longPieces.push(this.months(mom, '')); + mixedPieces.push(this.months(mom, '')); + mixedPieces.push(this.monthsShort(mom, '')); + } + // Sorting makes sure if one month (or abbr) is a prefix of another it + // will match the longer piece. + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 12; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + } + for (i = 0; i < 24; i++) { + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._monthsShortRegex = this._monthsRegex; + this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); +} + +// FORMATTING + +addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? '' + y : '+' + y; +}); + +addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; +}); + +addFormatToken(0, ['YYYY', 4], 0, 'year'); +addFormatToken(0, ['YYYYY', 5], 0, 'year'); +addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + +// ALIASES + +addUnitAlias('year', 'y'); + +// PRIORITIES + +addUnitPriority('year', 1); + +// PARSING + +addRegexToken('Y', matchSigned); +addRegexToken('YY', match1to2, match2); +addRegexToken('YYYY', match1to4, match4); +addRegexToken('YYYYY', match1to6, match6); +addRegexToken('YYYYYY', match1to6, match6); + +addParseToken(['YYYYY', 'YYYYYY'], YEAR); +addParseToken('YYYY', function (input, array) { + array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); +}); +addParseToken('YY', function (input, array) { + array[YEAR] = hooks.parseTwoDigitYear(input); +}); +addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); +}); + +// HELPERS + +function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; +} + +function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; +} + +// HOOKS + +hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); +}; + +// MOMENTS + +var getSetYear = makeGetSet('FullYear', true); + +function getIsLeapYear () { + return isLeapYear(this.year()); +} + +function createDate (y, m, d, h, M, s, ms) { + // can't just apply() to create a date: + // https://stackoverflow.com/q/181348 + var date = new Date(y, m, d, h, M, s, ms); + + // the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { + date.setFullYear(y); + } + return date; +} + +function createUTCDate (y) { + var date = new Date(Date.UTC.apply(null, arguments)); + + // the Date.UTC function remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { + date.setUTCFullYear(y); + } + return date; +} + +// start-of-first-week - start-of-year +function firstWeekOffset(year, dow, doy) { + var // first-week day -- which january is always in the first week (4 for iso, 1 for other) + fwd = 7 + dow - doy, + // first-week day local weekday -- which local weekday is fwd + fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; + + return -fwdlw + fwd - 1; +} + +// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday +function dayOfYearFromWeeks(year, week, weekday, dow, doy) { + var localWeekday = (7 + weekday - dow) % 7, + weekOffset = firstWeekOffset(year, dow, doy), + dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, + resYear, resDayOfYear; + + if (dayOfYear <= 0) { + resYear = year - 1; + resDayOfYear = daysInYear(resYear) + dayOfYear; + } else if (dayOfYear > daysInYear(year)) { + resYear = year + 1; + resDayOfYear = dayOfYear - daysInYear(year); + } else { + resYear = year; + resDayOfYear = dayOfYear; + } + + return { + year: resYear, + dayOfYear: resDayOfYear + }; +} + +function weekOfYear(mom, dow, doy) { + var weekOffset = firstWeekOffset(mom.year(), dow, doy), + week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, + resWeek, resYear; + + if (week < 1) { + resYear = mom.year() - 1; + resWeek = week + weeksInYear(resYear, dow, doy); + } else if (week > weeksInYear(mom.year(), dow, doy)) { + resWeek = week - weeksInYear(mom.year(), dow, doy); + resYear = mom.year() + 1; + } else { + resYear = mom.year(); + resWeek = week; + } + + return { + week: resWeek, + year: resYear + }; +} + +function weeksInYear(year, dow, doy) { + var weekOffset = firstWeekOffset(year, dow, doy), + weekOffsetNext = firstWeekOffset(year + 1, dow, doy); + return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; +} + +// FORMATTING + +addFormatToken('w', ['ww', 2], 'wo', 'week'); +addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + +// ALIASES + +addUnitAlias('week', 'w'); +addUnitAlias('isoWeek', 'W'); + +// PRIORITIES + +addUnitPriority('week', 5); +addUnitPriority('isoWeek', 5); + +// PARSING + +addRegexToken('w', match1to2); +addRegexToken('ww', match1to2, match2); +addRegexToken('W', match1to2); +addRegexToken('WW', match1to2, match2); + +addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); +}); + +// HELPERS + +// LOCALES + +function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; +} + +var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. +}; + +function localeFirstDayOfWeek () { + return this._week.dow; +} + +function localeFirstDayOfYear () { + return this._week.doy; +} + +// MOMENTS + +function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); +} + +function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); +} + +// FORMATTING + +addFormatToken('d', 0, 'do', 'day'); + +addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); +}); + +addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); +}); + +addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); +}); + +addFormatToken('e', 0, 0, 'weekday'); +addFormatToken('E', 0, 0, 'isoWeekday'); + +// ALIASES + +addUnitAlias('day', 'd'); +addUnitAlias('weekday', 'e'); +addUnitAlias('isoWeekday', 'E'); + +// PRIORITY +addUnitPriority('day', 11); +addUnitPriority('weekday', 11); +addUnitPriority('isoWeekday', 11); + +// PARSING + +addRegexToken('d', match1to2); +addRegexToken('e', match1to2); +addRegexToken('E', match1to2); +addRegexToken('dd', function (isStrict, locale) { + return locale.weekdaysMinRegex(isStrict); +}); +addRegexToken('ddd', function (isStrict, locale) { + return locale.weekdaysShortRegex(isStrict); +}); +addRegexToken('dddd', function (isStrict, locale) { + return locale.weekdaysRegex(isStrict); +}); + +addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { + var weekday = config._locale.weekdaysParse(input, token, config._strict); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; + } +}); + +addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); +}); + +// HELPERS + +function parseWeekday(input, locale) { + if (typeof input !== 'string') { + return input; + } + + if (!isNaN(input)) { + return parseInt(input, 10); + } + + input = locale.weekdaysParse(input); + if (typeof input === 'number') { + return input; + } + + return null; +} + +function parseIsoWeekday(input, locale) { + if (typeof input === 'string') { + return locale.weekdaysParse(input) % 7 || 7; + } + return isNaN(input) ? null : input; +} + +// LOCALES + +var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); +function localeWeekdays (m, format) { + if (!m) { + return isArray(this._weekdays) ? this._weekdays : + this._weekdays['standalone']; + } + return isArray(this._weekdays) ? this._weekdays[m.day()] : + this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; +} + +var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); +function localeWeekdaysShort (m) { + return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; +} + +var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); +function localeWeekdaysMin (m) { + return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; +} + +function handleStrictParse$1(weekdayName, format, strict) { + var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._shortWeekdaysParse = []; + this._minWeekdaysParse = []; + + for (i = 0; i < 7; ++i) { + mom = createUTC([2000, 1]).day(i); + this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); + this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'dddd') { + ii = indexOf$1.call(this._weekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'dddd') { + ii = indexOf$1.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._minWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } +} + +function localeWeekdaysParse (weekdayName, format, strict) { + var i, mom, regex; + + if (this._weekdaysParseExact) { + return handleStrictParse$1.call(this, weekdayName, format, strict); + } + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._minWeekdaysParse = []; + this._shortWeekdaysParse = []; + this._fullWeekdaysParse = []; + } + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + + mom = createUTC([2000, 1]).day(i); + if (strict && !this._fullWeekdaysParse[i]) { + this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i'); + this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i'); + this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i'); + } + if (!this._weekdaysParse[i]) { + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } +} + +// MOMENTS + +function getSetDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } +} + +function getSetLocaleDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); +} + +function getSetISODayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + + if (input != null) { + var weekday = parseIsoWeekday(input, this.localeData()); + return this.day(this.day() % 7 ? weekday : weekday - 7); + } else { + return this.day() || 7; + } +} + +var defaultWeekdaysRegex = matchWord; +function weekdaysRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysStrictRegex; + } else { + return this._weekdaysRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysRegex')) { + this._weekdaysRegex = defaultWeekdaysRegex; + } + return this._weekdaysStrictRegex && isStrict ? + this._weekdaysStrictRegex : this._weekdaysRegex; + } +} + +var defaultWeekdaysShortRegex = matchWord; +function weekdaysShortRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysShortStrictRegex; + } else { + return this._weekdaysShortRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysShortRegex')) { + this._weekdaysShortRegex = defaultWeekdaysShortRegex; + } + return this._weekdaysShortStrictRegex && isStrict ? + this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + } +} + +var defaultWeekdaysMinRegex = matchWord; +function weekdaysMinRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysMinStrictRegex; + } else { + return this._weekdaysMinRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysMinRegex')) { + this._weekdaysMinRegex = defaultWeekdaysMinRegex; + } + return this._weekdaysMinStrictRegex && isStrict ? + this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + } +} + + +function computeWeekdaysParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], + i, mom, minp, shortp, longp; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, 1]).day(i); + minp = this.weekdaysMin(mom, ''); + shortp = this.weekdaysShort(mom, ''); + longp = this.weekdays(mom, ''); + minPieces.push(minp); + shortPieces.push(shortp); + longPieces.push(longp); + mixedPieces.push(minp); + mixedPieces.push(shortp); + mixedPieces.push(longp); + } + // Sorting makes sure if one weekday (or abbr) is a prefix of another it + // will match the longer piece. + minPieces.sort(cmpLenRev); + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 7; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._weekdaysShortRegex = this._weekdaysRegex; + this._weekdaysMinRegex = this._weekdaysRegex; + + this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); +} + +// FORMATTING + +function hFormat() { + return this.hours() % 12 || 12; +} + +function kFormat() { + return this.hours() || 24; +} + +addFormatToken('H', ['HH', 2], 0, 'hour'); +addFormatToken('h', ['hh', 2], 0, hFormat); +addFormatToken('k', ['kk', 2], 0, kFormat); + +addFormatToken('hmm', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); +}); + +addFormatToken('hmmss', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); +}); + +addFormatToken('Hmm', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2); +}); + +addFormatToken('Hmmss', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); +}); + +function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); +} + +meridiem('a', true); +meridiem('A', false); + +// ALIASES + +addUnitAlias('hour', 'h'); + +// PRIORITY +addUnitPriority('hour', 13); + +// PARSING + +function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; +} + +addRegexToken('a', matchMeridiem); +addRegexToken('A', matchMeridiem); +addRegexToken('H', match1to2); +addRegexToken('h', match1to2); +addRegexToken('k', match1to2); +addRegexToken('HH', match1to2, match2); +addRegexToken('hh', match1to2, match2); +addRegexToken('kk', match1to2, match2); + +addRegexToken('hmm', match3to4); +addRegexToken('hmmss', match5to6); +addRegexToken('Hmm', match3to4); +addRegexToken('Hmmss', match5to6); + +addParseToken(['H', 'HH'], HOUR); +addParseToken(['k', 'kk'], function (input, array, config) { + var kInput = toInt(input); + array[HOUR] = kInput === 24 ? 0 : kInput; +}); +addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; +}); +addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; +}); +addParseToken('hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; +}); +addParseToken('hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; +}); +addParseToken('Hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); +}); +addParseToken('Hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); +}); + +// LOCALES + +function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); +} + +var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; +function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } +} + + +// MOMENTS + +// Setting the hour should keep the time, because the user explicitly +// specified which hour he wants. So trying to maintain the same hour (in +// a new timezone) makes sense. Adding/subtracting hours does not follow +// this rule. +var getSetHour = makeGetSet('Hours', true); + +// months +// week +// weekdays +// meridiem +var baseConfig = { + calendar: defaultCalendar, + longDateFormat: defaultLongDateFormat, + invalidDate: defaultInvalidDate, + ordinal: defaultOrdinal, + dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, + relativeTime: defaultRelativeTime, + + months: defaultLocaleMonths, + monthsShort: defaultLocaleMonthsShort, + + week: defaultLocaleWeek, + + weekdays: defaultLocaleWeekdays, + weekdaysMin: defaultLocaleWeekdaysMin, + weekdaysShort: defaultLocaleWeekdaysShort, + + meridiemParse: defaultLocaleMeridiemParse +}; + +// internal storage for locale config files +var locales = {}; +var localeFamilies = {}; +var globalLocale; + +function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; +} + +// pick the locale from the array +// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each +// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root +function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; +} + +function loadLocale(name) { + var oldLocale = null; + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && (typeof module !== 'undefined') && + module && module.exports) { + try { + oldLocale = globalLocale._abbr; + __webpack_require__("WLIv")("./" + name); + // because defineLocale currently also sets the global locale, we + // want to undo that for lazy loaded locales + getSetGlobalLocale(oldLocale); + } catch (e) { } + } + return locales[name]; +} + +// This function will load locale and then set the global locale. If +// no arguments are passed in, it will simply return the current global +// locale key. +function getSetGlobalLocale (key, values) { + var data; + if (key) { + if (isUndefined(values)) { + data = getLocale(key); + } + else { + data = defineLocale(key, values); + } + + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } + } + + return globalLocale._abbr; +} + +function defineLocale (name, config) { + if (config !== null) { + var parentConfig = baseConfig; + config.abbr = name; + if (locales[name] != null) { + deprecateSimple('defineLocaleOverride', + 'use moment.updateLocale(localeName, config) to change ' + + 'an existing locale. moment.defineLocale(localeName, ' + + 'config) should only be used for creating a new locale ' + + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); + parentConfig = locales[name]._config; + } else if (config.parentLocale != null) { + if (locales[config.parentLocale] != null) { + parentConfig = locales[config.parentLocale]._config; + } else { + if (!localeFamilies[config.parentLocale]) { + localeFamilies[config.parentLocale] = []; + } + localeFamilies[config.parentLocale].push({ + name: name, + config: config + }); + return null; + } + } + locales[name] = new Locale(mergeConfigs(parentConfig, config)); + + if (localeFamilies[name]) { + localeFamilies[name].forEach(function (x) { + defineLocale(x.name, x.config); + }); + } + + // backwards compat for now: also set the locale + // make sure we set the locale AFTER all child locales have been + // created, so we won't end up with the child locale set. + getSetGlobalLocale(name); + + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } +} + +function updateLocale(name, config) { + if (config != null) { + var locale, parentConfig = baseConfig; + // MERGE + if (locales[name] != null) { + parentConfig = locales[name]._config; + } + config = mergeConfigs(parentConfig, config); + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; + + // backwards compat for now: also set the locale + getSetGlobalLocale(name); + } else { + // pass null for config to unupdate, useful for tests + if (locales[name] != null) { + if (locales[name].parentLocale != null) { + locales[name] = locales[name].parentLocale; + } else if (locales[name] != null) { + delete locales[name]; + } + } + } + return locales[name]; +} + +// returns locale data +function getLocale (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return globalLocale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); +} + +function listLocales() { + return keys$1(locales); +} + +function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && getParsingFlags(m).overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + if (getParsingFlags(m)._overflowWeeks && overflow === -1) { + overflow = WEEK; + } + if (getParsingFlags(m)._overflowWeekday && overflow === -1) { + overflow = WEEKDAY; + } + + getParsingFlags(m).overflow = overflow; + } + + return m; +} + +// iso 8601 regex +// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) +var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; +var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; + +var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; + +var isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], + ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], + ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], + ['GGGG-[W]WW', /\d{4}-W\d\d/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + // YYYYMM is NOT allowed by the standard + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/] +]; + +// iso time formats and regexes +var isoTimes = [ + ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], + ['HH:mm:ss', /\d\d:\d\d:\d\d/], + ['HH:mm', /\d\d:\d\d/], + ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], + ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], + ['HHmmss', /\d\d\d\d\d\d/], + ['HHmm', /\d\d\d\d/], + ['HH', /\d\d/] +]; + +var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + +// date from iso format +function configFromISO(config) { + var i, l, + string = config._i, + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + allowTime, dateFormat, timeFormat, tzFormat; + + if (match) { + getParsingFlags(config).iso = true; + + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(match[1])) { + dateFormat = isoDates[i][0]; + allowTime = isoDates[i][2] !== false; + break; + } + } + if (dateFormat == null) { + config._isValid = false; + return; + } + if (match[3]) { + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(match[3])) { + // match[2] should be 'T' or space + timeFormat = (match[2] || ' ') + isoTimes[i][0]; + break; + } + } + if (timeFormat == null) { + config._isValid = false; + return; + } + } + if (!allowTime && timeFormat != null) { + config._isValid = false; + return; + } + if (match[4]) { + if (tzRegex.exec(match[4])) { + tzFormat = 'Z'; + } else { + config._isValid = false; + return; + } + } + config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); + configFromStringAndFormat(config); + } else { + config._isValid = false; + } +} + +// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 +var basicRfcRegex = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/; + +// date and time from ref 2822 format +function configFromRFC2822(config) { + var string, match, dayFormat, + dateFormat, timeFormat, tzFormat; + var timezones = { + ' GMT': ' +0000', + ' EDT': ' -0400', + ' EST': ' -0500', + ' CDT': ' -0500', + ' CST': ' -0600', + ' MDT': ' -0600', + ' MST': ' -0700', + ' PDT': ' -0700', + ' PST': ' -0800' + }; + var military = 'YXWVUTSRQPONZABCDEFGHIKLM'; + var timezone, timezoneIndex; + + string = config._i + .replace(/\([^\)]*\)|[\n\t]/g, ' ') // Remove comments and folding whitespace + .replace(/(\s\s+)/g, ' ') // Replace multiple-spaces with a single space + .replace(/^\s|\s$/g, ''); // Remove leading and trailing spaces + match = basicRfcRegex.exec(string); + + if (match) { + dayFormat = match[1] ? 'ddd' + ((match[1].length === 5) ? ', ' : ' ') : ''; + dateFormat = 'D MMM ' + ((match[2].length > 10) ? 'YYYY ' : 'YY '); + timeFormat = 'HH:mm' + (match[4] ? ':ss' : ''); + + // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. + if (match[1]) { // day of week given + var momentDate = new Date(match[2]); + var momentDay = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][momentDate.getDay()]; + + if (match[1].substr(0,3) !== momentDay) { + getParsingFlags(config).weekdayMismatch = true; + config._isValid = false; + return; + } + } + + switch (match[5].length) { + case 2: // military + if (timezoneIndex === 0) { + timezone = ' +0000'; + } else { + timezoneIndex = military.indexOf(match[5][1].toUpperCase()) - 12; + timezone = ((timezoneIndex < 0) ? ' -' : ' +') + + (('' + timezoneIndex).replace(/^-?/, '0')).match(/..$/)[0] + '00'; + } + break; + case 4: // Zone + timezone = timezones[match[5]]; + break; + default: // UT or +/-9999 + timezone = timezones[' GMT']; + } + match[5] = timezone; + config._i = match.splice(1).join(''); + tzFormat = ' ZZ'; + config._f = dayFormat + dateFormat + timeFormat + tzFormat; + configFromStringAndFormat(config); + getParsingFlags(config).rfc2822 = true; + } else { + config._isValid = false; + } +} + +// date from iso format or fallback +function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } + + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + configFromRFC2822(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + // Final attempt, use Input Fallback + hooks.createFromInputFallback(config); +} + +hooks.createFromInputFallback = deprecate( + 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + + 'discouraged and will be removed in an upcoming major release. Please refer to ' + + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } +); + +// Pick the first defined of two or three arguments. +function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; +} + +function currentDateArray(config) { + // hooks is actually the exported moment object + var nowValue = new Date(hooks.now()); + if (config._useUTC) { + return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; +} + +// convert an array to a date. +// the array should mirror the parameters below +// note: all values past the year are optional and will default to the lowest possible value. +// [year, month, day , hour, minute, second, millisecond] +function configFromArray (config) { + var i, date, input = [], currentDate, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear != null) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { + getParsingFlags(config)._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } +} + +function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + var curWeek = weekOfYear(createLocal(), dow, doy); + + weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); + + // Default to current week. + week = defaults(w.w, curWeek.week); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; + } + } else { + // default to begining of week + weekday = dow; + } + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } +} + +// constant that refers to the ISO standard +hooks.ISO_8601 = function () {}; + +// constant that refers to the RFC 2822 form +hooks.RFC_2822 = function () {}; + +// date from string and format string +function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === hooks.ISO_8601) { + configFromISO(config); + return; + } + if (config._f === hooks.RFC_2822) { + configFromRFC2822(config); + return; + } + config._a = []; + getParsingFlags(config).empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + // console.log('token', token, 'parsedInput', parsedInput, + // 'regex', getParseRegexForToken(token, config)); + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } + else { + getParsingFlags(config).unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (config._a[HOUR] <= 12 && + getParsingFlags(config).bigHour === true && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; + } + + getParsingFlags(config).parsedDateParts = config._a.slice(0); + getParsingFlags(config).meridiem = config._meridiem; + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + + configFromArray(config); + checkOverflow(config); +} + + +function meridiemFixWrap (locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } +} + +// date from string and array of format strings +function configFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); + + if (!isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += getParsingFlags(tempConfig).charsLeftOver; + + //or tokens + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + + getParsingFlags(tempConfig).score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); +} + +function configFromObject(config) { + if (config._d) { + return; + } + + var i = normalizeObjectUnits(config._i); + config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { + return obj && parseInt(obj, 10); + }); + + configFromArray(config); +} + +function createFromConfig (config) { + var res = new Moment(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; +} + +function prepareConfig (config) { + var input = config._i, + format = config._f; + + config._locale = config._locale || getLocale(config._l); + + if (input === null || (format === undefined && input === '')) { + return createInvalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isDate(input)) { + config._d = input; + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (format) { + configFromStringAndFormat(config); + } else { + configFromInput(config); + } + + if (!isValid(config)) { + config._d = null; + } + + return config; +} + +function configFromInput(config) { + var input = config._i; + if (isUndefined(input)) { + config._d = new Date(hooks.now()); + } else if (isDate(input)) { + config._d = new Date(input.valueOf()); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (isObject(input)) { + configFromObject(config); + } else if (isNumber(input)) { + // from milliseconds + config._d = new Date(input); + } else { + hooks.createFromInputFallback(config); + } +} + +function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; + + if (locale === true || locale === false) { + strict = locale; + locale = undefined; + } + + if ((isObject(input) && isObjectEmpty(input)) || + (isArray(input) && input.length === 0)) { + input = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + + return createFromConfig(c); +} + +function createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); +} + +var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return createInvalid(); + } + } +); + +var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return createInvalid(); + } + } +); + +// Pick a moment m from moments so that m[fn](other) is true for all +// other. This relies on the function fn to be transitive. +// +// moments should either be an array of moment objects or an array, whose +// first element is an array of moment objects. +function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (!moments[i].isValid() || moments[i][fn](res)) { + res = moments[i]; + } + } + return res; +} + +// TODO: Use [].sort instead? +function min () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); +} + +function max () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); +} + +var now = function () { + return Date.now ? Date.now() : +(new Date()); +}; + +var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; + +function isDurationValid(m) { + for (var key in m) { + if (!(ordering.indexOf(key) !== -1 && (m[key] == null || !isNaN(m[key])))) { + return false; + } + } + + var unitHasDecimal = false; + for (var i = 0; i < ordering.length; ++i) { + if (m[ordering[i]]) { + if (unitHasDecimal) { + return false; // only allow non-integers for smallest unit + } + if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { + unitHasDecimal = true; + } + } + } + + return true; +} + +function isValid$1() { + return this._isValid; +} + +function createInvalid$1() { + return createDuration(NaN); +} + +function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + this._isValid = isDurationValid(normalizedInput); + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = getLocale(); + + this._bubble(); +} + +function isDuration (obj) { + return obj instanceof Duration; +} + +function absRound (number) { + if (number < 0) { + return Math.round(-1 * number) * -1; + } else { + return Math.round(number); + } +} + +// FORMATTING + +function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + }); +} + +offset('Z', ':'); +offset('ZZ', ''); + +// PARSING + +addRegexToken('Z', matchShortOffset); +addRegexToken('ZZ', matchShortOffset); +addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(matchShortOffset, input); +}); + +// HELPERS + +// timezone chunker +// '+10:00' > ['10', '00'] +// '-1530' > ['-15', '30'] +var chunkOffset = /([\+\-]|\d\d)/gi; + +function offsetFromString(matcher, string) { + var matches = (string || '').match(matcher); + + if (matches === null) { + return null; + } + + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); + + return minutes === 0 ? + 0 : + parts[0] === '+' ? minutes : -minutes; +} + +// Return a moment from input, that is local/utc/zone equivalent to model. +function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); + // Use low-level api, because this fn is low-level api. + res._d.setTime(res._d.valueOf() + diff); + hooks.updateOffset(res, false); + return res; + } else { + return createLocal(input).local(); + } +} + +function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; +} + +// HOOKS + +// This function will be called whenever a moment is mutated. +// It is intended to keep the offset in sync with the timezone. +hooks.updateOffset = function () {}; + +// MOMENTS + +// keepLocalTime = true means only change the timezone, without +// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> +// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset +// +0200, so we adjust the time as needed, to be valid. +// +// Keeping the time actually adds/subtracts (one hour) +// from the actual represented time. That is why we call updateOffset +// a second time. In case it wants us to change the offset again +// _changeInProgress == true case, then we have to adjust, because +// there is no such time in the given timezone. +function getSetOffset (input, keepLocalTime, keepMinutes) { + var offset = this._offset || 0, + localAdjust; + if (!this.isValid()) { + return input != null ? this : NaN; + } + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(matchShortOffset, input); + if (input === null) { + return this; + } + } else if (Math.abs(input) < 16 && !keepMinutes) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addSubtract(this, createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } +} + +function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } +} + +function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); +} + +function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } + } + return this; +} + +function setOffsetToParsedOffset () { + if (this._tzm != null) { + this.utcOffset(this._tzm, false, true); + } else if (typeof this._i === 'string') { + var tZone = offsetFromString(matchOffset, this._i); + if (tZone != null) { + this.utcOffset(tZone); + } + else { + this.utcOffset(0, true); + } + } + return this; +} + +function hasAlignedHourOffset (input) { + if (!this.isValid()) { + return false; + } + input = input ? createLocal(input).utcOffset() : 0; + + return (this.utcOffset() - input) % 60 === 0; +} + +function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); +} + +function isDaylightSavingTimeShifted () { + if (!isUndefined(this._isDSTShifted)) { + return this._isDSTShifted; + } + + var c = {}; + + copyConfig(c, this); + c = prepareConfig(c); + + if (c._a) { + var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); + this._isDSTShifted = this.isValid() && + compareArrays(c._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } + + return this._isDSTShifted; +} + +function isLocal () { + return this.isValid() ? !this._isUTC : false; +} + +function isUtcOffset () { + return this.isValid() ? this._isUTC : false; +} + +function isUtc () { + return this.isValid() ? this._isUTC && this._offset === 0 : false; +} + +// ASP.NET json date format regex +var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; + +// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html +// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere +// and further modified to allow for strings containing both week and day +var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/; + +function createDuration (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + diffRes; + + if (isDuration(input)) { + duration = { + ms : input._milliseconds, + d : input._days, + M : input._months + }; + } else if (isNumber(input)) { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match + }; + } else if (!!(match = isoRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + w : parseIso(match[4], sign), + d : parseIso(match[5], sign), + h : parseIso(match[6], sign), + m : parseIso(match[7], sign), + s : parseIso(match[8], sign) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; +} + +createDuration.fn = Duration.prototype; +createDuration.invalid = createInvalid$1; + +function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; +} + +function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; +} + +function momentsDifference(base, other) { + var res; + if (!(base.isValid() && other.isValid())) { + return {milliseconds: 0, months: 0}; + } + + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; +} + +// TODO: remove 'name' arg after deprecation is removed +function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = createDuration(val, period); + addSubtract(this, dur, direction); + return this; + }; +} + +function addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = absRound(duration._days), + months = absRound(duration._months); + + if (!mom.isValid()) { + // No op + return; + } + + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); + } + if (days) { + set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); + } + if (months) { + setMonth(mom, get(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + hooks.updateOffset(mom, days || months); + } +} + +var add = createAdder(1, 'add'); +var subtract = createAdder(-1, 'subtract'); + +function getCalendarFormat(myMoment, now) { + var diff = myMoment.diff(now, 'days', true); + return diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; +} + +function calendar$1 (time, formats) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + format = hooks.calendarFormat(this, sod) || 'sameElse'; + + var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); + + return this.format(output || this.localeData().calendar(format, this, createLocal(now))); +} + +function clone () { + return new Moment(this); +} + +function isAfter (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() > localInput.valueOf(); + } else { + return localInput.valueOf() < this.clone().startOf(units).valueOf(); + } +} + +function isBefore (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() < localInput.valueOf(); + } else { + return this.clone().endOf(units).valueOf() < localInput.valueOf(); + } +} + +function isBetween (from, to, units, inclusivity) { + inclusivity = inclusivity || '()'; + return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && + (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); +} + +function isSame (input, units) { + var localInput = isMoment(input) ? input : createLocal(input), + inputMs; + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() === localInput.valueOf(); + } else { + inputMs = localInput.valueOf(); + return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); + } +} + +function isSameOrAfter (input, units) { + return this.isSame(input, units) || this.isAfter(input,units); +} + +function isSameOrBefore (input, units) { + return this.isSame(input, units) || this.isBefore(input,units); +} + +function diff (input, units, asFloat) { + var that, + zoneDelta, + delta, output; + + if (!this.isValid()) { + return NaN; + } + + that = cloneWithOffset(input, this); + + if (!that.isValid()) { + return NaN; + } + + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + delta = this - that; + output = units === 'second' ? delta / 1e3 : // 1000 + units === 'minute' ? delta / 6e4 : // 1000 * 60 + units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + delta; + } + return asFloat ? output : absFloor(output); +} + +function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + + //check for negative zero, return zero if negative zero + return -(wholeMonthDiff + adjust) || 0; +} + +hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; +hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; + +function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); +} + +function toISOString() { + if (!this.isValid()) { + return null; + } + var m = this.clone().utc(); + if (m.year() < 0 || m.year() > 9999) { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + if (isFunction(Date.prototype.toISOString)) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); +} + +/** + * Return a human readable representation of a moment that can + * also be evaluated to get a new moment which is the same + * + * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects + */ +function inspect () { + if (!this.isValid()) { + return 'moment.invalid(/* ' + this._i + ' */)'; + } + var func = 'moment'; + var zone = ''; + if (!this.isLocal()) { + func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; + zone = 'Z'; + } + var prefix = '[' + func + '("]'; + var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; + var datetime = '-MM-DD[T]HH:mm:ss.SSS'; + var suffix = zone + '[")]'; + + return this.format(prefix + year + datetime + suffix); +} + +function format (inputString) { + if (!inputString) { + inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; + } + var output = formatMoment(this, inputString); + return this.localeData().postformat(output); +} + +function from (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } +} + +function fromNow (withoutSuffix) { + return this.from(createLocal(), withoutSuffix); +} + +function to (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } +} + +function toNow (withoutSuffix) { + return this.to(createLocal(), withoutSuffix); +} + +// If passed a locale key, it will set the locale for this +// instance. Otherwise, it will return the locale configuration +// variables for this instance. +function locale (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } +} + +var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } +); + +function localeData () { + return this._locale; +} + +function startOf (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + case 'date': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } + if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; +} + +function endOf (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + + // 'date' is an alias for 'day', so it should be considered as such. + if (units === 'date') { + units = 'day'; + } + + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); +} + +function valueOf () { + return this._d.valueOf() - ((this._offset || 0) * 60000); +} + +function unix () { + return Math.floor(this.valueOf() / 1000); +} + +function toDate () { + return new Date(this.valueOf()); +} + +function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; +} + +function toObject () { + var m = this; + return { + years: m.year(), + months: m.month(), + date: m.date(), + hours: m.hours(), + minutes: m.minutes(), + seconds: m.seconds(), + milliseconds: m.milliseconds() + }; +} + +function toJSON () { + // new Date(NaN).toJSON() === null + return this.isValid() ? this.toISOString() : null; +} + +function isValid$2 () { + return isValid(this); +} + +function parsingFlags () { + return extend({}, getParsingFlags(this)); +} + +function invalidAt () { + return getParsingFlags(this).overflow; +} + +function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + }; +} + +// FORMATTING + +addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; +}); + +addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; +}); + +function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); +} + +addWeekYearFormatToken('gggg', 'weekYear'); +addWeekYearFormatToken('ggggg', 'weekYear'); +addWeekYearFormatToken('GGGG', 'isoWeekYear'); +addWeekYearFormatToken('GGGGG', 'isoWeekYear'); + +// ALIASES + +addUnitAlias('weekYear', 'gg'); +addUnitAlias('isoWeekYear', 'GG'); + +// PRIORITY + +addUnitPriority('weekYear', 1); +addUnitPriority('isoWeekYear', 1); + + +// PARSING + +addRegexToken('G', matchSigned); +addRegexToken('g', matchSigned); +addRegexToken('GG', match1to2, match2); +addRegexToken('gg', match1to2, match2); +addRegexToken('GGGG', match1to4, match4); +addRegexToken('gggg', match1to4, match4); +addRegexToken('GGGGG', match1to6, match6); +addRegexToken('ggggg', match1to6, match6); + +addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); +}); + +addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = hooks.parseTwoDigitYear(input); +}); + +// MOMENTS + +function getSetWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy); +} + +function getSetISOWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, this.isoWeek(), this.isoWeekday(), 1, 4); +} + +function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); +} + +function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); +} + +function getSetWeekYearHelper(input, week, weekday, dow, doy) { + var weeksTarget; + if (input == null) { + return weekOfYear(this, dow, doy).year; + } else { + weeksTarget = weeksInYear(input, dow, doy); + if (week > weeksTarget) { + week = weeksTarget; + } + return setWeekAll.call(this, input, week, weekday, dow, doy); + } +} + +function setWeekAll(weekYear, week, weekday, dow, doy) { + var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), + date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); + + this.year(date.getUTCFullYear()); + this.month(date.getUTCMonth()); + this.date(date.getUTCDate()); + return this; +} + +// FORMATTING + +addFormatToken('Q', 0, 'Qo', 'quarter'); + +// ALIASES + +addUnitAlias('quarter', 'Q'); + +// PRIORITY + +addUnitPriority('quarter', 7); + +// PARSING + +addRegexToken('Q', match1); +addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; +}); + +// MOMENTS + +function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); +} + +// FORMATTING + +addFormatToken('D', ['DD', 2], 'Do', 'date'); + +// ALIASES + +addUnitAlias('date', 'D'); + +// PRIOROITY +addUnitPriority('date', 9); + +// PARSING + +addRegexToken('D', match1to2); +addRegexToken('DD', match1to2, match2); +addRegexToken('Do', function (isStrict, locale) { + // TODO: Remove "ordinalParse" fallback in next major release. + return isStrict ? + (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : + locale._dayOfMonthOrdinalParseLenient; +}); + +addParseToken(['D', 'DD'], DATE); +addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0], 10); +}); + +// MOMENTS + +var getSetDayOfMonth = makeGetSet('Date', true); + +// FORMATTING + +addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); + +// ALIASES + +addUnitAlias('dayOfYear', 'DDD'); + +// PRIORITY +addUnitPriority('dayOfYear', 4); + +// PARSING + +addRegexToken('DDD', match1to3); +addRegexToken('DDDD', match3); +addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); +}); + +// HELPERS + +// MOMENTS + +function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); +} + +// FORMATTING + +addFormatToken('m', ['mm', 2], 0, 'minute'); + +// ALIASES + +addUnitAlias('minute', 'm'); + +// PRIORITY + +addUnitPriority('minute', 14); + +// PARSING + +addRegexToken('m', match1to2); +addRegexToken('mm', match1to2, match2); +addParseToken(['m', 'mm'], MINUTE); + +// MOMENTS + +var getSetMinute = makeGetSet('Minutes', false); + +// FORMATTING + +addFormatToken('s', ['ss', 2], 0, 'second'); + +// ALIASES + +addUnitAlias('second', 's'); + +// PRIORITY + +addUnitPriority('second', 15); + +// PARSING + +addRegexToken('s', match1to2); +addRegexToken('ss', match1to2, match2); +addParseToken(['s', 'ss'], SECOND); + +// MOMENTS + +var getSetSecond = makeGetSet('Seconds', false); + +// FORMATTING + +addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); +}); + +addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); +}); + +addFormatToken(0, ['SSS', 3], 0, 'millisecond'); +addFormatToken(0, ['SSSS', 4], 0, function () { + return this.millisecond() * 10; +}); +addFormatToken(0, ['SSSSS', 5], 0, function () { + return this.millisecond() * 100; +}); +addFormatToken(0, ['SSSSSS', 6], 0, function () { + return this.millisecond() * 1000; +}); +addFormatToken(0, ['SSSSSSS', 7], 0, function () { + return this.millisecond() * 10000; +}); +addFormatToken(0, ['SSSSSSSS', 8], 0, function () { + return this.millisecond() * 100000; +}); +addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { + return this.millisecond() * 1000000; +}); + + +// ALIASES + +addUnitAlias('millisecond', 'ms'); + +// PRIORITY + +addUnitPriority('millisecond', 16); + +// PARSING + +addRegexToken('S', match1to3, match1); +addRegexToken('SS', match1to3, match2); +addRegexToken('SSS', match1to3, match3); + +var token; +for (token = 'SSSS'; token.length <= 9; token += 'S') { + addRegexToken(token, matchUnsigned); +} + +function parseMs(input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); +} + +for (token = 'S'; token.length <= 9; token += 'S') { + addParseToken(token, parseMs); +} +// MOMENTS + +var getSetMillisecond = makeGetSet('Milliseconds', false); + +// FORMATTING + +addFormatToken('z', 0, 0, 'zoneAbbr'); +addFormatToken('zz', 0, 0, 'zoneName'); + +// MOMENTS + +function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; +} + +function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; +} + +var proto = Moment.prototype; + +proto.add = add; +proto.calendar = calendar$1; +proto.clone = clone; +proto.diff = diff; +proto.endOf = endOf; +proto.format = format; +proto.from = from; +proto.fromNow = fromNow; +proto.to = to; +proto.toNow = toNow; +proto.get = stringGet; +proto.invalidAt = invalidAt; +proto.isAfter = isAfter; +proto.isBefore = isBefore; +proto.isBetween = isBetween; +proto.isSame = isSame; +proto.isSameOrAfter = isSameOrAfter; +proto.isSameOrBefore = isSameOrBefore; +proto.isValid = isValid$2; +proto.lang = lang; +proto.locale = locale; +proto.localeData = localeData; +proto.max = prototypeMax; +proto.min = prototypeMin; +proto.parsingFlags = parsingFlags; +proto.set = stringSet; +proto.startOf = startOf; +proto.subtract = subtract; +proto.toArray = toArray; +proto.toObject = toObject; +proto.toDate = toDate; +proto.toISOString = toISOString; +proto.inspect = inspect; +proto.toJSON = toJSON; +proto.toString = toString; +proto.unix = unix; +proto.valueOf = valueOf; +proto.creationData = creationData; + +// Year +proto.year = getSetYear; +proto.isLeapYear = getIsLeapYear; + +// Week Year +proto.weekYear = getSetWeekYear; +proto.isoWeekYear = getSetISOWeekYear; + +// Quarter +proto.quarter = proto.quarters = getSetQuarter; + +// Month +proto.month = getSetMonth; +proto.daysInMonth = getDaysInMonth; + +// Week +proto.week = proto.weeks = getSetWeek; +proto.isoWeek = proto.isoWeeks = getSetISOWeek; +proto.weeksInYear = getWeeksInYear; +proto.isoWeeksInYear = getISOWeeksInYear; + +// Day +proto.date = getSetDayOfMonth; +proto.day = proto.days = getSetDayOfWeek; +proto.weekday = getSetLocaleDayOfWeek; +proto.isoWeekday = getSetISODayOfWeek; +proto.dayOfYear = getSetDayOfYear; + +// Hour +proto.hour = proto.hours = getSetHour; + +// Minute +proto.minute = proto.minutes = getSetMinute; + +// Second +proto.second = proto.seconds = getSetSecond; + +// Millisecond +proto.millisecond = proto.milliseconds = getSetMillisecond; + +// Offset +proto.utcOffset = getSetOffset; +proto.utc = setOffsetToUTC; +proto.local = setOffsetToLocal; +proto.parseZone = setOffsetToParsedOffset; +proto.hasAlignedHourOffset = hasAlignedHourOffset; +proto.isDST = isDaylightSavingTime; +proto.isLocal = isLocal; +proto.isUtcOffset = isUtcOffset; +proto.isUtc = isUtc; +proto.isUTC = isUtc; + +// Timezone +proto.zoneAbbr = getZoneAbbr; +proto.zoneName = getZoneName; + +// Deprecations +proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); +proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); +proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); +proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); +proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); + +function createUnix (input) { + return createLocal(input * 1000); +} + +function createInZone () { + return createLocal.apply(null, arguments).parseZone(); +} + +function preParsePostFormat (string) { + return string; +} + +var proto$1 = Locale.prototype; + +proto$1.calendar = calendar; +proto$1.longDateFormat = longDateFormat; +proto$1.invalidDate = invalidDate; +proto$1.ordinal = ordinal; +proto$1.preparse = preParsePostFormat; +proto$1.postformat = preParsePostFormat; +proto$1.relativeTime = relativeTime; +proto$1.pastFuture = pastFuture; +proto$1.set = set; + +// Month +proto$1.months = localeMonths; +proto$1.monthsShort = localeMonthsShort; +proto$1.monthsParse = localeMonthsParse; +proto$1.monthsRegex = monthsRegex; +proto$1.monthsShortRegex = monthsShortRegex; + +// Week +proto$1.week = localeWeek; +proto$1.firstDayOfYear = localeFirstDayOfYear; +proto$1.firstDayOfWeek = localeFirstDayOfWeek; + +// Day of Week +proto$1.weekdays = localeWeekdays; +proto$1.weekdaysMin = localeWeekdaysMin; +proto$1.weekdaysShort = localeWeekdaysShort; +proto$1.weekdaysParse = localeWeekdaysParse; + +proto$1.weekdaysRegex = weekdaysRegex; +proto$1.weekdaysShortRegex = weekdaysShortRegex; +proto$1.weekdaysMinRegex = weekdaysMinRegex; + +// Hours +proto$1.isPM = localeIsPM; +proto$1.meridiem = localeMeridiem; + +function get$1 (format, index, field, setter) { + var locale = getLocale(); + var utc = createUTC().set(setter, index); + return locale[field](utc, format); +} + +function listMonthsImpl (format, index, field) { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + + if (index != null) { + return get$1(format, index, field, 'month'); + } + + var i; + var out = []; + for (i = 0; i < 12; i++) { + out[i] = get$1(format, i, field, 'month'); + } + return out; +} + +// () +// (5) +// (fmt, 5) +// (fmt) +// (true) +// (true, 5) +// (true, fmt, 5) +// (true, fmt) +function listWeekdaysImpl (localeSorted, format, index, field) { + if (typeof localeSorted === 'boolean') { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } else { + format = localeSorted; + index = format; + localeSorted = false; + + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } + + var locale = getLocale(), + shift = localeSorted ? locale._week.dow : 0; + + if (index != null) { + return get$1(format, (index + shift) % 7, field, 'day'); + } + + var i; + var out = []; + for (i = 0; i < 7; i++) { + out[i] = get$1(format, (i + shift) % 7, field, 'day'); + } + return out; +} + +function listMonths (format, index) { + return listMonthsImpl(format, index, 'months'); +} + +function listMonthsShort (format, index) { + return listMonthsImpl(format, index, 'monthsShort'); +} + +function listWeekdays (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); +} + +function listWeekdaysShort (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); +} + +function listWeekdaysMin (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); +} + +getSetGlobalLocale('en', { + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } +}); + +// Side effect imports +hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); +hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); + +var mathAbs = Math.abs; + +function abs () { + var data = this._data; + + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); + + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); + + return this; +} + +function addSubtract$1 (duration, input, value, direction) { + var other = createDuration(input, value); + + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; + + return duration._bubble(); +} + +// supports only 2.0-style add(1, 's') or add(duration) +function add$1 (input, value) { + return addSubtract$1(this, input, value, 1); +} + +// supports only 2.0-style subtract(1, 's') or subtract(duration) +function subtract$1 (input, value) { + return addSubtract$1(this, input, value, -1); +} + +function absCeil (number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } +} + +function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years, monthsFromDays; + + // if we have a mix of positive and negative values, bubble down first + // check: https://github.com/moment/moment/issues/2166 + if (!((milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0))) { + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; + days = 0; + months = 0; + } + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; + + hours = absFloor(minutes / 60); + data.hours = hours % 24; + + days += absFloor(hours / 24); + + // convert days to months + monthsFromDays = absFloor(daysToMonths(days)); + months += monthsFromDays; + days -= absCeil(monthsToDays(monthsFromDays)); + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + + return this; +} + +function daysToMonths (days) { + // 400 years have 146097 days (taking into account leap year rules) + // 400 years have 12 months === 4800 + return days * 4800 / 146097; +} + +function monthsToDays (months) { + // the reverse of daysToMonths + return months * 146097 / 4800; +} + +function as (units) { + if (!this.isValid()) { + return NaN; + } + var days; + var months; + var milliseconds = this._milliseconds; + + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToMonths(days); + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } +} + +// TODO: Use this.as('ms')? +function valueOf$1 () { + if (!this.isValid()) { + return NaN; + } + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); +} + +function makeAs (alias) { + return function () { + return this.as(alias); + }; +} + +var asMilliseconds = makeAs('ms'); +var asSeconds = makeAs('s'); +var asMinutes = makeAs('m'); +var asHours = makeAs('h'); +var asDays = makeAs('d'); +var asWeeks = makeAs('w'); +var asMonths = makeAs('M'); +var asYears = makeAs('y'); + +function get$2 (units) { + units = normalizeUnits(units); + return this.isValid() ? this[units + 's']() : NaN; +} + +function makeGetter(name) { + return function () { + return this.isValid() ? this._data[name] : NaN; + }; +} + +var milliseconds = makeGetter('milliseconds'); +var seconds = makeGetter('seconds'); +var minutes = makeGetter('minutes'); +var hours = makeGetter('hours'); +var days = makeGetter('days'); +var months = makeGetter('months'); +var years = makeGetter('years'); + +function weeks () { + return absFloor(this.days() / 7); +} + +var round = Math.round; +var thresholds = { + ss: 44, // a few seconds to seconds + s : 45, // seconds to minute + m : 45, // minutes to hour + h : 22, // hours to day + d : 26, // days to month + M : 11 // months to year +}; + +// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize +function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); +} + +function relativeTime$1 (posNegDuration, withoutSuffix, locale) { + var duration = createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds <= thresholds.ss && ['s', seconds] || + seconds < thresholds.s && ['ss', seconds] || + minutes <= 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours <= 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days <= 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months <= 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years <= 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); +} + +// This function allows you to set the rounding function for relative time strings +function getSetRelativeTimeRounding (roundingFunction) { + if (roundingFunction === undefined) { + return round; + } + if (typeof(roundingFunction) === 'function') { + round = roundingFunction; + return true; + } + return false; +} + +// This function allows you to set a threshold for relative time strings +function getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + if (threshold === 's') { + thresholds.ss = limit - 1; + } + return true; +} + +function humanize (withSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var locale = this.localeData(); + var output = relativeTime$1(this, !withSuffix, locale); + + if (withSuffix) { + output = locale.pastFuture(+this, output); + } + + return locale.postformat(output); +} + +var abs$1 = Math.abs; + +function toISOString$1() { + // for ISO strings we do not use the normal bubbling rules: + // * milliseconds bubble up until they become hours + // * days do not bubble at all + // * months bubble up until they become years + // This is because there is no context-free conversion between hours and days + // (think of clock changes) + // and also not between days and months (28-31 days per month) + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var seconds = abs$1(this._milliseconds) / 1000; + var days = abs$1(this._days); + var months = abs$1(this._months); + var minutes, hours, years; + + // 3600 seconds -> 60 minutes -> 1 hour + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); + seconds %= 60; + minutes %= 60; + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = years; + var M = months; + var D = days; + var h = hours; + var m = minutes; + var s = seconds; + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (total < 0 ? '-' : '') + + 'P' + + (Y ? Y + 'Y' : '') + + (M ? M + 'M' : '') + + (D ? D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? h + 'H' : '') + + (m ? m + 'M' : '') + + (s ? s + 'S' : ''); +} + +var proto$2 = Duration.prototype; + +proto$2.isValid = isValid$1; +proto$2.abs = abs; +proto$2.add = add$1; +proto$2.subtract = subtract$1; +proto$2.as = as; +proto$2.asMilliseconds = asMilliseconds; +proto$2.asSeconds = asSeconds; +proto$2.asMinutes = asMinutes; +proto$2.asHours = asHours; +proto$2.asDays = asDays; +proto$2.asWeeks = asWeeks; +proto$2.asMonths = asMonths; +proto$2.asYears = asYears; +proto$2.valueOf = valueOf$1; +proto$2._bubble = bubble; +proto$2.get = get$2; +proto$2.milliseconds = milliseconds; +proto$2.seconds = seconds; +proto$2.minutes = minutes; +proto$2.hours = hours; +proto$2.days = days; +proto$2.weeks = weeks; +proto$2.months = months; +proto$2.years = years; +proto$2.humanize = humanize; +proto$2.toISOString = toISOString$1; +proto$2.toString = toISOString$1; +proto$2.toJSON = toISOString$1; +proto$2.locale = locale; +proto$2.localeData = localeData; + +// Deprecations +proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); +proto$2.lang = lang; + +// Side effect imports + +// FORMATTING + +addFormatToken('X', 0, 0, 'unix'); +addFormatToken('x', 0, 0, 'valueOf'); + +// PARSING + +addRegexToken('x', matchSigned); +addRegexToken('X', matchTimestamp); +addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); +}); +addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); +}); + +// Side effect imports + + +hooks.version = '2.18.1'; + +setHookCallback(createLocal); + +hooks.fn = proto; +hooks.min = min; +hooks.max = max; +hooks.now = now; +hooks.utc = createUTC; +hooks.unix = createUnix; +hooks.months = listMonths; +hooks.isDate = isDate; +hooks.locale = getSetGlobalLocale; +hooks.invalid = createInvalid; +hooks.duration = createDuration; +hooks.isMoment = isMoment; +hooks.weekdays = listWeekdays; +hooks.parseZone = createInZone; +hooks.localeData = getLocale; +hooks.isDuration = isDuration; +hooks.monthsShort = listMonthsShort; +hooks.weekdaysMin = listWeekdaysMin; +hooks.defineLocale = defineLocale; +hooks.updateLocale = updateLocale; +hooks.locales = listLocales; +hooks.weekdaysShort = listWeekdaysShort; +hooks.normalizeUnits = normalizeUnits; +hooks.relativeTimeRounding = getSetRelativeTimeRounding; +hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; +hooks.calendarFormat = getCalendarFormat; +hooks.prototype = proto; + +return hooks; + +}))); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("y5YM")(module))) + +/***/ }), + +/***/ "i5zi": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Faroese [fo] +//! author : Ragnar Johannesen : https://github.com/ragnar123 + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var fo = moment.defineLocale('fo', { + months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), + weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'), + weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D. MMMM, YYYY HH:mm' + }, + calendar : { + sameDay : '[Í dag kl.] LT', + nextDay : '[Í morgin kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[Í gjár kl.] LT', + lastWeek : '[síðstu] dddd [kl] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'um %s', + past : '%s síðani', + s : 'fá sekund', + m : 'ein minutt', + mm : '%d minuttir', + h : 'ein tími', + hh : '%d tímar', + d : 'ein dagur', + dd : '%d dagar', + M : 'ein mánaði', + MM : '%d mánaðir', + y : 'eitt ár', + yy : '%d ár' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return fo; + +}))); + + +/***/ }), + +/***/ "iFzV": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {var BN = __webpack_require__("u/Wk"); +var MillerRabin = __webpack_require__("xXUF"); +var millerRabin = new MillerRabin(); +var TWENTYFOUR = new BN(24); +var ELEVEN = new BN(11); +var TEN = new BN(10); +var THREE = new BN(3); +var SEVEN = new BN(7); +var primes = __webpack_require__("YHfo"); +var randomBytes = __webpack_require__("kyRq"); +module.exports = DH; + +function setPublicKey(pub, enc) { + enc = enc || 'utf8'; + if (!Buffer.isBuffer(pub)) { + pub = new Buffer(pub, enc); + } + this._pub = new BN(pub); + return this; +} + +function setPrivateKey(priv, enc) { + enc = enc || 'utf8'; + if (!Buffer.isBuffer(priv)) { + priv = new Buffer(priv, enc); + } + this._priv = new BN(priv); + return this; +} + +var primeCache = {}; +function checkPrime(prime, generator) { + var gen = generator.toString('hex'); + var hex = [gen, prime.toString(16)].join('_'); + if (hex in primeCache) { + return primeCache[hex]; + } + var error = 0; + + if (prime.isEven() || + !primes.simpleSieve || + !primes.fermatTest(prime) || + !millerRabin.test(prime)) { + //not a prime so +1 + error += 1; + + if (gen === '02' || gen === '05') { + // we'd be able to check the generator + // it would fail so +8 + error += 8; + } else { + //we wouldn't be able to test the generator + // so +4 + error += 4; + } + primeCache[hex] = error; + return error; + } + if (!millerRabin.test(prime.shrn(1))) { + //not a safe prime + error += 2; + } + var rem; + switch (gen) { + case '02': + if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) { + // unsuidable generator + error += 8; + } + break; + case '05': + rem = prime.mod(TEN); + if (rem.cmp(THREE) && rem.cmp(SEVEN)) { + // prime mod 10 needs to equal 3 or 7 + error += 8; + } + break; + default: + error += 4; + } + primeCache[hex] = error; + return error; +} + +function DH(prime, generator, malleable) { + this.setGenerator(generator); + this.__prime = new BN(prime); + this._prime = BN.mont(this.__prime); + this._primeLen = prime.length; + this._pub = undefined; + this._priv = undefined; + this._primeCode = undefined; + if (malleable) { + this.setPublicKey = setPublicKey; + this.setPrivateKey = setPrivateKey; + } else { + this._primeCode = 8; + } +} +Object.defineProperty(DH.prototype, 'verifyError', { + enumerable: true, + get: function () { + if (typeof this._primeCode !== 'number') { + this._primeCode = checkPrime(this.__prime, this.__gen); + } + return this._primeCode; + } +}); +DH.prototype.generateKeys = function () { + if (!this._priv) { + this._priv = new BN(randomBytes(this._primeLen)); + } + this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed(); + return this.getPublicKey(); +}; + +DH.prototype.computeSecret = function (other) { + other = new BN(other); + other = other.toRed(this._prime); + var secret = other.redPow(this._priv).fromRed(); + var out = new Buffer(secret.toArray()); + var prime = this.getPrime(); + if (out.length < prime.length) { + var front = new Buffer(prime.length - out.length); + front.fill(0); + out = Buffer.concat([front, out]); + } + return out; +}; + +DH.prototype.getPublicKey = function getPublicKey(enc) { + return formatReturnValue(this._pub, enc); +}; + +DH.prototype.getPrivateKey = function getPrivateKey(enc) { + return formatReturnValue(this._priv, enc); +}; + +DH.prototype.getPrime = function (enc) { + return formatReturnValue(this.__prime, enc); +}; + +DH.prototype.getGenerator = function (enc) { + return formatReturnValue(this._gen, enc); +}; + +DH.prototype.setGenerator = function (gen, enc) { + enc = enc || 'utf8'; + if (!Buffer.isBuffer(gen)) { + gen = new Buffer(gen, enc); + } + this.__gen = gen; + this._gen = new BN(gen); + return this; +}; + +function formatReturnValue(bn, enc) { + var buf = new Buffer(bn.toArray()); + if (!enc) { + return buf; + } else { + return buf.toString(enc); + } +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("NfRg").Buffer)) + +/***/ }), + +/***/ "iHgk": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Pseudo [x-pseudo] +//! author : Andrew Hood : https://github.com/andrewhood125 + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var xPseudo = moment.defineLocale('x-pseudo', { + months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'), + monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'), + monthsParseExact : true, + weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'), + weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), + weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[T~ódá~ý át] LT', + nextDay : '[T~ómó~rró~w át] LT', + nextWeek : 'dddd [át] LT', + lastDay : '[Ý~ést~érdá~ý át] LT', + lastWeek : '[L~ást] dddd [át] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'í~ñ %s', + past : '%s á~gó', + s : 'á ~féw ~sécó~ñds', + m : 'á ~míñ~úté', + mm : '%d m~íñú~tés', + h : 'á~ñ hó~úr', + hh : '%d h~óúrs', + d : 'á ~dáý', + dd : '%d d~áýs', + M : 'á ~móñ~th', + MM : '%d m~óñt~hs', + y : 'á ~ýéár', + yy : '%d ý~éárs' + }, + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return xPseudo; + +}))); + + +/***/ }), + +/***/ "iXrg": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const base = exports; + +base.Reporter = __webpack_require__("WXsb").Reporter; +base.DecoderBuffer = __webpack_require__("cKvS").DecoderBuffer; +base.EncoderBuffer = __webpack_require__("cKvS").EncoderBuffer; +base.Node = __webpack_require__("6BOp"); + + +/***/ }), + +/***/ "itWY": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : French [fr] +//! author : John Fischer : https://github.com/jfroffice + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var fr = moment.defineLocale('fr', { + months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), + monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + monthsParseExact : true, + weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Aujourd’hui à] LT', + nextDay : '[Demain à] LT', + nextWeek : 'dddd [à] LT', + lastDay : '[Hier à] LT', + lastWeek : 'dddd [dernier à] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dans %s', + past : 'il y a %s', + s : 'quelques secondes', + m : 'une minute', + mm : '%d minutes', + h : 'une heure', + hh : '%d heures', + d : 'un jour', + dd : '%d jours', + M : 'un mois', + MM : '%d mois', + y : 'un an', + yy : '%d ans' + }, + dayOfMonthOrdinalParse: /\d{1,2}(er|)/, + ordinal : function (number, period) { + switch (period) { + // TODO: Return 'e' when day of month > 1. Move this case inside + // block for masculine words below. + // See https://github.com/moment/moment/issues/3375 + case 'D': + return number + (number === 1 ? 'er' : ''); + + // Words with masculine grammatical gender: mois, trimestre, jour + default: + case 'M': + case 'Q': + case 'DDD': + case 'd': + return number + (number === 1 ? 'er' : 'e'); + + // Words with feminine grammatical gender: semaine + case 'w': + case 'W': + return number + (number === 1 ? 're' : 'e'); + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return fr; + +}))); + + +/***/ }), + +/***/ "iv9Z": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Punjabi (India) [pa-in] +//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var symbolMap = { + '1': '੧', + '2': '੨', + '3': '੩', + '4': '੪', + '5': '੫', + '6': '੬', + '7': '੭', + '8': '੮', + '9': '੯', + '0': '੦' +}; +var numberMap = { + '੧': '1', + '੨': '2', + '੩': '3', + '੪': '4', + '੫': '5', + '੬': '6', + '੭': '7', + '੮': '8', + '੯': '9', + '੦': '0' +}; + +var paIn = moment.defineLocale('pa-in', { + // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi. + months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), + monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), + weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'), + weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), + weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), + longDateFormat : { + LT : 'A h:mm ਵਜੇ', + LTS : 'A h:mm:ss ਵਜੇ', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm ਵਜੇ', + LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ' + }, + calendar : { + sameDay : '[ਅਜ] LT', + nextDay : '[ਕਲ] LT', + nextWeek : 'dddd, LT', + lastDay : '[ਕਲ] LT', + lastWeek : '[ਪਿਛਲੇ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ਵਿੱਚ', + past : '%s ਪਿਛਲੇ', + s : 'ਕੁਝ ਸਕਿੰਟ', + m : 'ਇਕ ਮਿੰਟ', + mm : '%d ਮਿੰਟ', + h : 'ਇੱਕ ਘੰਟਾ', + hh : '%d ਘੰਟੇ', + d : 'ਇੱਕ ਦਿਨ', + dd : '%d ਦਿਨ', + M : 'ਇੱਕ ਮਹੀਨਾ', + MM : '%d ਮਹੀਨੇ', + y : 'ਇੱਕ ਸਾਲ', + yy : '%d ਸਾਲ' + }, + preparse: function (string) { + return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + // Punjabi notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi. + meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'ਰਾਤ') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'ਸਵੇਰ') { + return hour; + } else if (meridiem === 'ਦੁਪਹਿਰ') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'ਸ਼ਾਮ') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ਰਾਤ'; + } else if (hour < 10) { + return 'ਸਵੇਰ'; + } else if (hour < 17) { + return 'ਦੁਪਹਿਰ'; + } else if (hour < 20) { + return 'ਸ਼ਾਮ'; + } else { + return 'ਰਾਤ'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +return paIn; + +}))); + + +/***/ }), + +/***/ "jAG7": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Marathi [mr] +//! author : Harshad Kale : https://github.com/kalehv +//! author : Vivek Athalye : https://github.com/vnathalye + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' +}; +var numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' +}; + +function relativeTimeMr(number, withoutSuffix, string, isFuture) +{ + var output = ''; + if (withoutSuffix) { + switch (string) { + case 's': output = 'काही सेकंद'; break; + case 'm': output = 'एक मिनिट'; break; + case 'mm': output = '%d मिनिटे'; break; + case 'h': output = 'एक तास'; break; + case 'hh': output = '%d तास'; break; + case 'd': output = 'एक दिवस'; break; + case 'dd': output = '%d दिवस'; break; + case 'M': output = 'एक महिना'; break; + case 'MM': output = '%d महिने'; break; + case 'y': output = 'एक वर्ष'; break; + case 'yy': output = '%d वर्षे'; break; + } + } + else { + switch (string) { + case 's': output = 'काही सेकंदां'; break; + case 'm': output = 'एका मिनिटा'; break; + case 'mm': output = '%d मिनिटां'; break; + case 'h': output = 'एका तासा'; break; + case 'hh': output = '%d तासां'; break; + case 'd': output = 'एका दिवसा'; break; + case 'dd': output = '%d दिवसां'; break; + case 'M': output = 'एका महिन्या'; break; + case 'MM': output = '%d महिन्यां'; break; + case 'y': output = 'एका वर्षा'; break; + case 'yy': output = '%d वर्षां'; break; + } + } + return output.replace(/%d/i, number); +} + +var mr = moment.defineLocale('mr', { + months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), + monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), + monthsParseExact : true, + weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), + longDateFormat : { + LT : 'A h:mm वाजता', + LTS : 'A h:mm:ss वाजता', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm वाजता', + LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता' + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[उद्या] LT', + nextWeek : 'dddd, LT', + lastDay : '[काल] LT', + lastWeek: '[मागील] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future: '%sमध्ये', + past: '%sपूर्वी', + s: relativeTimeMr, + m: relativeTimeMr, + mm: relativeTimeMr, + h: relativeTimeMr, + hh: relativeTimeMr, + d: relativeTimeMr, + dd: relativeTimeMr, + M: relativeTimeMr, + MM: relativeTimeMr, + y: relativeTimeMr, + yy: relativeTimeMr + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'रात्री') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सकाळी') { + return hour; + } else if (meridiem === 'दुपारी') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'सायंकाळी') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'रात्री'; + } else if (hour < 10) { + return 'सकाळी'; + } else if (hour < 17) { + return 'दुपारी'; + } else if (hour < 20) { + return 'सायंकाळी'; + } else { + return 'रात्री'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +return mr; + +}))); + + +/***/ }), + +/***/ "jBRl": +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__("DLTi").Buffer + +function encryptByte (self, byteParam, decrypt) { + var pad = self._cipher.encryptBlock(self._prev) + var out = pad[0] ^ byteParam + + self._prev = Buffer.concat([ + self._prev.slice(1), + Buffer.from([decrypt ? byteParam : out]) + ]) + + return out +} + +exports.encrypt = function (self, chunk, decrypt) { + var len = chunk.length + var out = Buffer.allocUnsafe(len) + var i = -1 + + while (++i < len) { + out[i] = encryptByte(self, chunk[i], decrypt) + } + + return out +} + + +/***/ }), + +/***/ "jgf2": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = exports; + +function toArray(msg, enc) { + if (Array.isArray(msg)) + return msg.slice(); + if (!msg) + return []; + var res = []; + if (typeof msg !== 'string') { + for (var i = 0; i < msg.length; i++) + res[i] = msg[i] | 0; + return res; + } + if (enc === 'hex') { + msg = msg.replace(/[^a-z0-9]+/ig, ''); + if (msg.length % 2 !== 0) + msg = '0' + msg; + for (var i = 0; i < msg.length; i += 2) + res.push(parseInt(msg[i] + msg[i + 1], 16)); + } else { + for (var i = 0; i < msg.length; i++) { + var c = msg.charCodeAt(i); + var hi = c >> 8; + var lo = c & 0xff; + if (hi) + res.push(hi, lo); + else + res.push(lo); + } + } + return res; +} +utils.toArray = toArray; + +function zero2(word) { + if (word.length === 1) + return '0' + word; + else + return word; +} +utils.zero2 = zero2; + +function toHex(msg) { + var res = ''; + for (var i = 0; i < msg.length; i++) + res += zero2(msg[i].toString(16)); + return res; +} +utils.toHex = toHex; + +utils.encode = function encode(arr, enc) { + if (enc === 'hex') + return toHex(arr); + else + return arr; +}; + + +/***/ }), + +/***/ "jkwA": +/***/ (function(module, exports, __webpack_require__) { + +exports = module.exports = __webpack_require__("BkJT")(undefined); +// imports + + +// module +exports.push([module.i, "@font-face{font-family:iconfont;src:url(" + __webpack_require__("zLEk") + ") format(\"woff2\"),url(" + __webpack_require__("e7RC") + ") format(\"woff\"),url(" + __webpack_require__("nj8S") + ") format(\"truetype\")}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-xiangji:before{content:\"\\E62E\"}.icon-luxiang2:before{content:\"\\E777\"}.icon-xiangji1:before{content:\"\\E6E5\"}.icon-luxiang:before{content:\"\\E62C\"}.icon-snapshot:before{content:\"\\E9F2\"}.icon-shengyin1:before{content:\"\\E8C0\"}.icon-xiaoping:before{content:\"\\E8BF\"}.icon-jingyin:before{content:\"\\E8BB\"}.icon-quanping1:before{content:\"\\E8BA\"}.icon-bofang:before{content:\"\\E8AD\"}.icon-zanting:before{content:\"\\E8AB\"}", ""]); + +// exports + + +/***/ }), + +/***/ "jxY5": +/***/ (function(module, exports) { + +module.exports = {"logoGif":"data:image/gif;base64,R0lGODlh1APcAPf/AP77993//232/1n/tyyu/6ba/5D/0v+OstRw//9nUv/b1rvl/0/2/9yK///H2rj7///j7bIF/zD3//+1q9X+///m8v7z78tT//fl/8n/6eX/9t7z/9Xu/6j6//fr/+v/9wPm/6r/3Oq4/5jW/+7H/9X/7vXd//4zGM38/5j4/2q7//7n5HfH/93u/7bd/4fK/+aq/83s//8MV//e6+OX/4b3//8sbcsx/+Xu/1e6/wLr/zT/qP/r53X/xROm///U4/9TisX8/8Xl/wOc/xWU//TV//9omFHL//+oxd3/8rn/4/vm/2bF///Nx/7i3v+0zfP/9/LO/0a2/4rT//9KMv/c5xbs///Uzc3m/y2f//96pP+800Op/8Xr/5XO/70i///Du/P08/+Yif+Ecv+nmhr3/wnm//lv/9bz/+/U///P4Ajt/+ZR/67h/9Tn//8bYP+bvlKu/6v/6cDf/zfD/+7z99b/8/ze///f8OT/7//X6HnQ/////5Xr/5z/2/+l14jj/2Hg//v///+8/f+h/6PS//fu7vbv9P+15g7z/93n/831/9/v+f/T/RuQ//f//+fz98H3//XT9v/7//fm5eOg/4HB///7+/v7//P///zX9Pf7///3+//3//rn6/P7//v7++///8Q/////++v////392L/v/v/++/7//v3//P/++v3//f/++f//+/3///z+//z9/vz//rv/70E4+f3///v9//z8//38+P//+//+v/z//P3//vr//f3///r8/f7+/v39+v7///v8//v6//v7//r9+Pz///v++fz/+L3/+vz//v3++v/+//r6/fz//P7+/v38/vz8//r7+/z//f3+v/v/+f7//vv7/P3+vvv6/Pz/+/3++H7///r+/vr6+/7++v3+/vz9+f/++f3++v7+/vz++fz++vz+//r//vv8+Pz++/z+/rv+/vv9+P3+/vr9+f7+/vr7/Pz+ffz+OP/+/vr+/vr8+H7+/8+e9Pr+/fr58P/487/79nz9/vj9AAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU2REEyNjM4NEMzNDExRUNBNjg3Q0MyNjczMTAwQzQ4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjU2REEyNjM5NEMzNDExRUNBNjg3Q0MyNjczMTAwQzQ4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTZEQTI2MzY0QzM0MTFFQ0E2ODdDQzI2NzMxMDBDNDgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTZEQTI2Mzc0QzM0MTFFQ0E2ODdDQzI2NzMxMDBDNDgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQJBAD/ACwAAAAA1APcAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi/8fT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYo4ogklmiiTRFEcOKKdplhBggwHpjijCzW+NaLMLoIQoEz9mjjj2jlCIIENUigY4z/9XjDGTf0qCKQUHqFIwhmWMHAAwKUQSWMSObnZIpsDMLGF19GaWZXW1qhA5U8lnnmm15x+aKMTsJpJ1dbJkjjnXz26eefgAYq6KCEFmrooYgmquiijDbq6KOQRirppJRWaumlmGaq6aacdurpp6CGKuqopJZq6qmopqrqqqy26uqrsMb/KuustNZq66245qrrrrz26uuvwAYr7LDEFmvsscgmq+yyzDbr7LPQRivttNRWa+212Gar7bbcduvtt+CGK+645JZr7rnopqvuuuy26+678MYr77z01mvvvfjmq+++/Pbr778AByzwwAQXbPDBCCes8MIMN+zwwxBHLPHEFFds8cUYZ6zxxhx37PHHIIcs8sgkl2zyycYRQYQjRKA8xMsvo2zQyiqrbDLMMMtMUM1cSMEyyyLjTAAdPuQs8s81E5EFFzkAEgwfHezBRRYsJw10xDjj7AMBRwgQgCAdBEIHAUVnHXPINS9dM8kwb220zv8kbXPJZsNdEM0uv2333nz3/+3334AHLvjghBdu+OGIJ6744ow37vjjkEcu+eSUV2755ZhnrvnmnHfu+eeghy766KSXbvrpqKde2Qms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DY6NrGQnS9nKWvaymM2sZjfL2c569rOgDa1oR0va0pr2tKhNrWpXy9rWuva1sI2tbGdL29o02va2uM2tbnfL29769rfADa5wh0vc4hr3uMhNrnKXy9zmOve50I2udKdL3epa97rYjWFAAAAh+QQJBAD/ACwAAAAA1APcAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi/8fT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYo4ogklmjiTBFEcOKKeqFAAQUDIoDABTQi0MCNLOYYFwrcBMANjADaeIEoEXwhio2V0KDjkmwF4KSTi/gXgShDFnkGGxHccIGMFzDppVmRUBDAiwGgwF+KRYryxZSEnLHmFzQSqeKXdH4V5osvmunfkTOumaWMNNCAQJ2EehWmiygkCuCWM9aIQKCDFiqpVg8kamkQAt4giqaidDrpp1k9EMSoo0YC6qmoltRBJA88wOoDqcb/KitHKbT6QAetzqrrrhOl0EEHvgLL67DEKlRDCinUcGwKxTbr7D8C1CDAtMo+ay2vDAQSiAQMZHvtt7GaYYYVVkhArhUggKuulyCYAcK771pRBgMCPMAHBTUwYC687rab7roAr+iuDmbs+27ACNPZbr8JN/zlu+46LPHEFFds8cUYZ6zxxhx37PHHIIcs8sgkl2zyySinrPLKLLfs8sswxyzzzDTXbPPNOOes88489+zzz0AHLfTQRBdt9NFIJ6300kw37fTTUEct9dRUV2311VhnrfXWXHft9ddghy322GSXbfbZaKet9tpst+3223DHLffcdNdt991456333nz3/+3334AH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SrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4koRRHDiioIF0EoA+4mCAAIXXDBjA5XAIIIIJEThIwksBhlXAKS0Qgou+cl4gShfRCDKBQ3QoCOPPaaRRhRCZsnWka10ScF9Tl5wQwRsnPHFFzIi0ACOOU7ZgJZwmuVil11yU1+KEdzQ5A1nEDImmjaquSYNlVTyZpyIhkWBNV3igguM96XZZARf2IjjlCSQcCWWiXbqFQWt4BLqo/kFuuSNOe6YqZWceuqqVi5y/4OLrF/md+YNouRaIwKv9voVBY4+yk2tvhZr7EgoyBoANwEQe+yz0GZEQQDUUmBttNhmO1GyzVqLgrbghqsQCtNaS0EQ4qar7j/keotCJOvGq227KNQLr7z4PhsEBfWiEMQD+QZcbCT8vvsAwAIn7Om+/kbyQAcKR4wowUEE4XAHfQgggRlmgCDxxyZGYu/BKdQgQCAcg+AxyCyDmMLDHaTQh8kMWCEBAx1z3PLOGprBQCAMMCCBFWbYLEAAuGhcRscqM20Gz1BH+EAkC8Sccc1WlAFCx1F3beHUB2NcQ80cP+312RTKbHIgRHON9ttwxy333HTXbffdeOet99589//t99+ABy744IQXbvjhiCeu+OKMN+7445BHLvnklFdu+eWYZ6755px37vnnoIcu+uikl2766ainrvrqrLfu+uuwxy777LTXbvvtuOeu++689+7778CLV4gXwdc0BfHF6zSHEELMUYAlyb/UxgILtFEAE9HX5IIbzbvgwvAqZJF9SgV00UUbbYwwwh45EDA+TEJgIYT3w1tiiQrhv1/SAl1Ur/4LTGBCDqTgPv2tZHlzcEEBvGCJHHCBCyqwRBwMKJICVC99e2ACAXxAACkwQQoUTEkOCjG8F6ggDlnIAQrjcD8u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SLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4okovtZKKNbMJ0oDMNJQCQwiiEACCVFEUYQJO5qAwR0YYOABLyakaGRcpDzySCaZxCcKAlAi0ICMNd4YRRppmKBlkBgs0aUHHmBw5JhsZRKKmZmQAh8CF4giygVSzljllUX0uGWQYA5ZBJl8mtUKk0yGEsp7EVwQwRdfRPDklHJWiSOddt7hYxR9ViqWoIGaaV4EnHbK6Rc3sHHGJHwQwsYNiUZww5twSgljJTPC/0BjjZbW+tWfaArqHqeiqHqDonA2AOusNz6qYxp1mpCGrcxyhcqZ0A76HpuifAHnBdgi0Oy2aEFrpq7TRgnlDdyWexYp0YLr3gUwwqitufCOhem3asLHbgPvxqvvrWfSu++/AE+E7reh1BvwwQgj1K+gBSfs8MP/YMqwwRBXvO+KBFNs8cblSiyoxhyHbCvGH0sr8sm1/jlxKK20jAsu3ATADQU0o4BCEJE88EAKKdQggRkgAI3y0BeqPDEpSLfcCswy00zBzTl30HMgVgQdNNFYS0jB0i9zE3MATj99M845P9BBBzX0IQADVkjANghXZy03gx3YDDXOOp99Ns811P8ggACBMMC2FWa4nQIfKTDwM9BWCz334wIG0wopSuNiDcxeO23zInif3YffErRtBtBmQG76gRKjm/TSXsdcM9RmT006CKfXfmAAl2MO9tNik513Cp8Hsjjtthdv/PHIJ6/88sw37/zz0Ecv/fTUV2/99dhnr/323Hfv/ffghy/++OSXb/756Kev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HduyPdu0Xdu2fdu4ndu6vdu83du+/dvAHdzCPdzEXdzGfdzIndzKvdzM3dzO/dzQHd3SPd3UXd3Wfd3Ynd3avd3c3d3eK/3d4B3e4j3e5F3e5n3e6J3e6r3e7N3e7v3e8B3f8j3f9F3f9n3f+D0uAQEAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4okovvaIIJnQh4EHS3ggIy800uiBLLLwgiMvscjSoywepChkXJkI8siK8r0IpIxMAonjk1DiGMuPmcExpH9GHnkkfC/y4oGXYH75ZY06+uhjj1PGgtkTDmyBxJX6aSknlzLG6AEGS4BJZo054ljNk7FgYNkTT2xhqJVw3nekkYI0Ct+dGLwo6Z1MyuhklLFU0+NlhCLRaaL3FblillxGauoSk8Zop5h8ZsrLZUYg/wHHrEi8CWp9ja6oZammYhCFakbAccABWhyA6K3zZTIqqe+ZgIGzzq4GxAFGAGFEscjSx2iWj8BnwrffCqqatTa88QY+RryRrXy5ztksuN+eJsO8MpiLzx9a2GADvTKs656o7rr3bREmEJzavPraoEW65c7rr3u6BtxeGgUXYbG0RuBjLhBaPAyfsnJ2+14aJKdRRBqrXbvwtQd4/N6iErMXRRpRzPwrsMIOa6zLEEe85XskBB30zalpUSuttvK8ns8swie00KtpQejUTyjNHsgxryfC1lyvdoChYG9h9XpYw5wJyGennUkoa4fi9tukhELK3HO3QordrXDDjXNc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37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4okovibIivSl0ksvk6SCSScy1jjjJJNgoiMmMWKSimGvTALAJHxMcsklRiZZJJFIHtlJiv8JwseUfMgXSyqp0NiLiz7O2CWWWH4Z45ODHUkkjjg2maSabE4CZX9UTikIfFdiuSWWnXyJZ5ad9DlJnjJiQpiZSKa55qFqpsnJm/rFSSV8LoIJ5pd60thnJ2PyGItgnBBq5JJohspkkmkymp+UjkIq6aSsrippl24K/2akmbMeaeutnoZqKn6OTgnfnZIC66ONNb7642CdeposJ4geimaVu9qHapzwbbKqB5fVaiSZCnHCCaiXRCttr79Kuglm2l6yKEOFNilufb3O+Z6dkaJrK7PhMpTuu/Q5KmW5W26JbrJGCsrurbHyG9+KVP47byrOQHysZZMkiyQsDeG6rsLwMSwntO5tGXHEmOGLJCelNGQxkhwvzAeqDruXSiy9xELyZfga6a3K9+bbsnsevwxyezXXfLNlzCZdscqzMvvze0ILLa9lu3yyySeCfGL11r248okxSc3sjM2b4qxuxZekrO+yPk+3yiePwP3IJpnMHXcon6zydEJSC/9d2So7biL44FZfvcvhh6/iilEQO+N42Uh7q666DaE9+XSo1L3J3JnQrXXcmWitNSqroLJ3QR5LOTVkguvY+uCC9/IJ4p+4grjteg/V+OMlS97pxgqhLXl0mwuy+Sd1Iw+36KKjIvoqweR+OsOqRx1n9aqvqP20L3O/PVyBYwI7JruIv0kvVad/uyvsIyOU0byb7e3vKs9/JHSPJG93Jvx3Hvr/zvsEKgZIugHSYnp9w173tre9BGpvgUF7xNDS0gtBiM91sNuF4LSGuF3Y7oPsY98qlBEU+DlDFr2bH8rq562lNQcVxhPEI2boudAJ0Hl4cx4Bd7iKHkqvZdlLoBD/H6jA7BFRiGvZxSNch0HBpQJ2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URRNURVdURZtURd9URiNURmdURqtURu9URzNUR3dUR7tUR/9USANUiEdUiItUiM9UiRNUiVdUiZtUid9UiiNUimdUiqtUiu9UizNUi3dUi7tUi/9UjANUzEdUzItUzM9UzRNUzVdUx42bVM3fVM4jVM5nVM6rVM7vVM8zVM93VM+7dP6DAgAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCO50OIxM0hhBALuFBAIS+8oIIKLLzgxYwk0lZAG20UMMIUezCRAxNM7DHFCCN4UaNuMeQTAxZzzFGAF5aowAUXKshYgAsLYJEkFi4cudoCXSyQ4wgvMCGFDwTkwIIXNy4gRBdJhullRZjwwUdmLsyRoopevGBJHFlIkUMWccRYSCEuYGmiEFgsUMBPmAhip52CTGKnpZFeygcmdU4iCCaGlXIJH5dYOsklo47KByh8TGKpqnda/zfCmGT66IMPgRDggxRMsDBkAW0uAKawj87p0KR2YtZilCrEwUUWWXCxRwAB7PFstHHkoIIlLXpxKLAFWLKTq5hiMkmnyLaqrqmtSkoYqpauuy657MZraXVDAOkjAQQM4QMdgTxSAx39ZkGAoL36OuQIwLZBprELpSvIZXNggQWKLhQyQpTQQlslm3meqKUb+XDQAg4tbNCCGzidG6mplUo6ab3ymkpYq67iTG/NyJ46anUFCIGjjj1KMYSuBAQ5xY1YvpkkByajwYgxxmyQD8QHpZvsZRzk48aJibKogrZVFnLliTG4YXIL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xYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOJgKlhSSBtCYBEDBxy0wIExGxhjDC3GtDCibFMUsIAQMayIxgZAGpOMjMnYeGNsXMRRIgteFFKAC0KkmE+LLcRoDDLIrKKllqi4gsoqR45GgBQ5sDDFCDou0EUXK3IApJUy0rLlKl+uQkuYFvHBB2RejPACC3FwUWaTLuwYw5Qt1ijjKllq6Yorn0DqyiafBAPUJHxMIoggk2CC6aeTYJpppp/ygYlhpYR6ySV8sLrqJK6q/9pqppc0lwMTLOQghRS45tiGmmzGgIabMQ5p55yOotKlsng+pOezjHlRQAFevKACF1nkkAUXKrxQyIkuzBGlim64wWILVeIQJzLKtMulK2DuxMememJi6qil5otvpoSVkiqslwAc8KqvwtpqwJgqd+YUufrgMAE57OHrr8G2+aaVWMrpqJefbPPJJ7s0u9Cz0BpGxLY5BJrFtkz00QofFACSA7bbKqkCCy940aSTLvQ8x44pknuuizUKgVOo+Hrq6b6iljoqv4MNHOrUVE+tJ9IGTwJKcUP4QKauBHR9RAcd0PEwmbjuIfEIaBbQxq8L7Lhmj22yeLExaLghskEkl/9sWCFCLDCHCwUUYi222MaBM88/B23u0C3IiOUqyqwC76OPfryJpDZ1+qy9Vusrat+hdiIYJwQXXHXoTLdqHAttjDDFFEzkQIAPRxzhA8QsrO023HIHm4+w574pY5xbfkKnOXsP1LeeiCEaQ+AuFOJFrkoyyXOh4UaZormRa4x5lx9rvsn55wtyfk1Pkwrq6vB/OtgkqEttP6z4I4wv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06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhmzzyiCCC8IEiinycqCImI872SSYnPrLJJiuaiKKJMdL2iSA2nojjikQWaSQmgvRY2ieYmFijiU2WWKKTRhKpZEV8tAjZJ49kAiSONQKpI4pIVkkkko/wgSRQgkzi5ptwugkAH5e8eQmdl3DikwxvAGHEAXAg8cQWDhTKUylZ1snHm4syOsmdKS7q3IxSOimlmDkCiWKJRKq4Ix847nXCqCfc5imKjLniJadOBsmqpmaa/1mmp4/w1GicuLp5K5ycXMITn2/YgM+fcDzxRKFq/LBFTpjU+aiji0Y7SbRZRqvcJ1xOWam2jzRZ5ImxGpllknaRSqpt446bWCY3BknjlK62Gma44arIxy44qZnltPxKS2eubnLyaE4yFMynEUbYYAMQWmgBx8OCPqEFTrr26++01GI87iTHZYLJuzayG6+2sGoKbqynskimXOYmIAYV5qKlAwgzG2Uvi3wchq2J25rI5ZeVdntymWQWjQmSs3YqyNE2SVvxvgDjKrCeNRlsMD4H/IHPG/j42fABgD58EwBx+lvt2WhXW1wmXD6SraVv26jpkEF+S+TJ4toLI1vmjv9KhRhgJNB3qWSZocPhhxelstqErcIutp+0O+WmQVq6Cba73Kg5vSmfyvhMUONaLb92/vtonTsV/MbqNhjhsKCEOpDsDw7Y1O/tF9Ope9rDoRKK5EHTGK+82N4I+eQlq6w0kqM8ckpcpMI8qsw0lyGBFYeDMJS93BO2yeOR82wj8J9cJMiQp2LSeYozYcyvs3Ve4uyuuPZUsLDEwi77Dz/oUcUMtrvT+xJ1pwLq7hKROptwPhEKyIkscjfymNvKZxG8KY17qHpL375iBsMZDnGJkAADBPCAaqVAABIowxoQRzOa6SRd6gpMMC53ORvt7HKCQAVINoGxFamP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Pm3UTm3VXm3Wbm3Xfm3Yjm3Znm3arm3bvm2KCAgAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhn2zChyAooniiioLwgcmIs22SCR+PPLLiiSui+CKMMZ74SIoobgLkkCryYeSRPJYmJCaC/Ijijz8ymaKURJ54Hgg6SIXkYz/6SOWQX6aYI5EttgjUJJfwcckkRk7i5ptvXsLJm5xwAotLekBQwZ7NVOBJBdL40owvhNbiizDC1AKLorA02mhPRx7JZppsqnnkKHxMMopzmNjo5KdDQtmkjmWOyaIgZp2g6gkSrXCNBbDG/2rLNVxhaUaWBHUQBAooUEBBAMBSENSNqC72CCY5OknmsswCGekjPKGZKZxxUrvmJdjOKSdLVVSgp55//hlooIQeemiiizZaiqMV5NRmpPDGG69ynyhbY42jKtuss2WKWapYq64KEQ/DDGPBq9HAWoottmiFpQ4QmzFQBw/s6uuvwOISAFBHlplYv/uG3KypOOaE5pvTVqvtyXKiWeeaLEEg88zg8unLuOUeagujjsLCScM4pSkvm0TLe+Qlx4365Kf4igqk01WWaiqyLnYVcAJiUCEwQ2Ao4LUTYDuxwthjK2AVxDqYkQgDApSRtg4M1FBDCh3U/cADkQQRCQoP+P9kZKnFFpaJyIJI2empI7OYI4447kjTydTSOcmccM5peSecAFCLSnrgQfPnfwIqDc6ECmOLMD3D8orqN1Vq9OvzEmevvkrn+/S9ZOLY4pjEpphV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EQh7GNB5e5d6faf4fs96tV/7+3X4CGB7uI97uZ97uq97u797vM97vd97vu97v/97wA98wR98wi98wz98xE98xV98xm98x398yI98yZ98yq98y798zM98zd98zu98z/980A990R990i990z991E991V991m9913992I992Z992q9927993M993d99u97vfd//feAPfuEffuIvfuM/fuRPfuVffuZvfud/fuiPfumffuqvfuu/fuzPfu3ffu7vfu//fvAPf/Eff/Ivf/M/f/RPf/Vff/Zvf/d/f/iPf/mff/qvf/u/f/zPf/3ff/4HiH8CBxIsaPAgwoQKFzJs6PAhxIgSJ1KsaPEixowaN3Ls6PEjyJAiR5IsafIkypQqV7Js6fIlzJgyZ9KsafMmzpw6d/Ls6fMn0KBChxItavQo0qRKlzLtGRAAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhmzwiyIkn8iEIHyo+wscjj4w42yYorugiipPQiAkrMtJGY41ABomiiSbW2GNpqqQIZJFAgoLJiqCk+CQoR1YkiImQ0fhikEwK6aUgT66oIlCT8DHJmWWmieYkmKw5ySWXTMKJS7a8yYmccObJCSel6AnnmnGWMklPZvJxCYuIJqooos6BYqKKXw4pZJiOngiFigBEdcKmJ0TkRDPEDGPBqLZYUMotwKB6CyfAlAIMn69C/wMMAABgAgAoAABTlA4g6MBrQSkEgQIFFARgLDettEKKssuSEoqzoYSS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O/jwhrl3zolz9ee44l1TdY7BhIkiaaJEISFCBIxKNCpfuFC5Ng3rdZWdgMV1x1qBCSq4oFN/wYTTaUydhyCDjbX3XnzxzUcCh/jB0EADF3wRQQRfVEZDgBUaRaCKEt3UIowxyhiSXjVCdN6NS81oGIf23edhfiiCyN8NEdxwxhlFitIfiTv6xKKTUUo5JZUC2Xilg01VOVePHd4HA5j6DYn/wAWiRIdkdEteEMGWMkHZJpxxyrncgzp9BheEyc2ZVknwwVcEoBv6KOYFRRp5AYgX7JmSZos6+iiklyGFo53mrUZhpFmZsIRkfwJan48woMiffw0gIEqmIHGVKqutuvoqrASR2GSstdp6K6656rorr736+iuwwQo7LLHFGnsssskquyyzzTr7LLTRSjsttdVaey222Wq7LbfdevstuOGKOy655Zp7Lrrpqrsuu+26+y688co7L7312nsvvvnquy+//fr7L8ABCzwwwQUbfDDCCSu8MMMNO/wwxBFLPDHFFVt8McYZa7wxxx17/DHIIYs8Msklm3wyyimrvDLLLbv8VDLMMcs8M80123wzzjnrvDPPPfv8M9BBCz000UUbfTTSSSu9NNNNO/001FFLPTXVVVt9NdZZa7011117/TXYYYs9Ntllm3022mmrvTbbbbv99nABAQAh+QQJBAD/ACwAAAAA1APcAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi/8fT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYoYmGClFgiHygKwoeKj6CIyYiz/XLJKKxcIoiNgoAiyCSngAIKNTDS9oiKJhZp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IkIlGQKWoIgYNaiccyWquCKLI5H4UF0YtjjcbBx2KNGHMOg441kv8tiQX9j9OCSRQ/po2VbdFZlaWbaBRFEDlUhZCQwNLMnUkUTyR2GFV3r5pX7ziSb/0U4AgmlajbRV1AANNDTAJg1n/iYkmEGmdMqYcuq5p3dZGhQan5g1yWFFCDSAAKJvBuoSnV8i5eCikUpKnJ8ENWfmpIbNth5FNyB6gSgXIJqpRpW26FdcpKq66mh9obiamKuxipeNGJhwqwlFpJFGFCT4KoIIMFTiJqgRfBHBDRdEMCtFpra4FLPRStvWq4TNNS1aIpAALLA6Ctvmm4giAOoXx35xxiVn3BABu+22i+1ajToKKbz12gtUrMqVmS9M936Vq6689vortzqCe6go5bKxrijs+juQsw9LPDGpdsKVEMVCYfCObbXiasKuAwc77Lg3fJHsBRmnNMlUGbv8/7KqRp24Wpkw/1TbEhjk/HERRUQh8shvXiAqAjeoHJPNSSvNZ101bfZSv0u3VKuNtwY88LYGh4uAKDCnJDXYYYs9Ntllm3022mmrvTbbbbv9Ntxxyz033XXbfTfeeeu9N999+/034IELPjjhhRt+OOKJK7444407/jjkkUs+OeWVW3455plrvjnnnXv+Oeihiz466aWbfjrqqau+Ouutu/467LHLPjvttdt+O+6567477737/jvwwQs/PPHFG3888skrvzzzzTv/PPTRSz899dVbfz322Wu/Pffde/89+OGLPz755Zt/Pvrpq78+++27/z788cs/P/31238//vnrvyM///37/z8AAyjAARKwgAY8IAITqMAFMrCBDnwgBCMoQeIEBAAh+QQJBAD/ACwAAAAA1APcAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iz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bj30s+ucX5nWXekwNu7cunfz5go7Y0PKvYd3PY3h+EgaMETAoEH8OcHf0BdDhvjo4/Ts2rdzdyxdIU2O3cebNI48JAIYMCqpZ00e9/f3ZXeKl2//Pv78CeMjDL1SP4D/eFAPaiE1QAMNByYY4Gb8MTiUaBON9iCFFVpYmoMGzXTUhe9Fddx5ICHQAAIjNuBeh4NlmOJIHdmEHYsxyjgjVmsZ9VJ9NEL3IYgilXgBkCXqONeKQ2oIk41GKrkkk+A1phJlSTW522EYmCASkF9EEIEoF0QwJVZFLon/pFs5gnkmmjKKqZFLacYWBQlxikACAglteecXs4iCCBtfaHnnl25O9qSbf0kIo6CJKprfmv9INOGimkWRBpxxZoRnBDecIUoEfwYaaUqN6lhbmaCaeup2jU6EKmZSUXUlSDdk2akodbLKWF5ukvrQrb36Ch9PtVW366+JecDLEiBaaQKzJhRBqZwiVJLgjxcIWexIotIYHK/YevstdXjFdBu4c5l3XLPMPlupCMw1d6KJKJa7H6G6NjQvvvmWFdm4u16kb1lRVWnCss8WEQW77k6LIIIA88XQJIg6PDHFFfN7F7kVWzVVYcqm6yylcLbr7nrtabxQxN2evDLL3vr7/2hdkLXsVJXoNlvEupWSMDJzzLFc78xBC72oS6JVZhtlGQ+tVLID35xGyCLv3C4MQf+7NNZZa7011117/TXYYYs9Ntllm3022mmrvTbbbbv9Ntxxyz033XXbfTfeeeu9N999+/034IELPjjhhRt+OOKJK7444407/jjkkUs+OeWVW3455plrvjnnnXv+Oeihiz466aWbfjrqqau+Ouutu/467LHLPjvttdt+O+6567477737/jvwwQs/PPHFG3888skrvzzzzTv/PPTRSz899dVbfz322Wu/Pffde/89+OGLPz755Zt/Pvrpq78+++27/z788cs/P/31238//vnrvxg///37/z8AAyjAARKwgAY8IAITqEDaBQQAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at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/CAIQyjCEZKwhCY8IQpTqMIVsrCFLnwhDGMowxnSsIY2vCEOc6jDHfKwhz78IRCDKMQhErGIRjwiEpOoxCUysYlOfCIUoyjFKVKxila8IhazqMUtcrGLXvwiGMMoxjGSsYxmPCMa06jGNbKxjW58IxzjKMc50rGOdrwjHvOoxz3ysY9+/CMgAynIQRKykIY8JCITqchFMrKRjnwkJCMpyUlSspKWvCQmM6nJTXKyk578JChDKcpRkrKUpjwlKlOpylWyspWufCUsYynLWdKyFpa2vCUuc6nLXfKyl778JTCDKczrBQQAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhgpQoCB8noqiiIJugOOJsfPzCByag8KEiHwDYOAkfwLxIGyYolriiiSsGGeSJKQriY2mgXGLjKDYmaSKSNdrIR5U2ArBkRYI8ouRjJT5iZJRTllmmlWje+KVPabaJ5o5FzugSH07yAaeVd9qJJpBt9uTmn2iewodzVRKJpJMpugmKoIJeeYqJk1xyCVDXEGOLBRZcWooF0NhyCzS3AONpKdCQygkwpQADDADA3MIJqaCU/wIAKKAAUyutt+JKKwA0YnLJLyWC0iUmjwjL4ibPPJJSAK1wQwourUQbLSmtkGKtOKFYG8q2mYTSbbePZCIuuI94KW6X5qLr5bpddslHueuKiWSJQb1rImObmKnvvkgW2e+8Qq6ZE6AEp7kjS28aXPCfOi28sHJYztvmvzdaKcgoglyS8caXNCms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pj41qlOt6lWzutWufjWsYy3rWdO61ra+Na5zretd87rXvv41sIMt7GETu9jGPjayk63sZTO72c5+NrSjLe1pU7va1r42trOt7W1zu9ve/ja4wwgt7nGTu74BAQAh+QQJBAD/ACwAAAAA1APcAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi/8fT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYoYmGP8CGIiSjyoaIgJ6o4Ik8h7MMPPyUkkUQJJbiloomT7Oijij2+SFuJLD7Cooksnqgkkjsu6aKQLe0g5Q4D+LFPBvzYYWMSGnzQ5Qe5eKlBWC2OsqOZP6Z5iZpQVmSkIJA9ImeSgrxJ551JItminksCBWSaPfaY5p98uASKoIH+iCihOyba06CQ/jhKVlOaMsAOpvgRghJKXEkjjltyqUESYtqRVaSRoonqJWvyMQlQwFz/MkkprAJAa60AXAIKALkCAAquv7JaK6uCrPnrr5MYCwooroIiyLKCYNKss3Vicueun6SUiZxybqvKnHNmkkmd3QqybZFGvnkuunami2KRfJyi5Lx5lohiUEeyyNi45NaJ55168pnnknTeu5OgqPqYKMKFrsSwohArPKhOCVfc8FNTZjxAD3LwEYoBPVi6cQ8GGOCHpptyemUGGeDocgZT7bmixWaquiofrV6cUym3Cuvzz0ALm2yywuZ6rK+5snqsrrou6zS01CYZNZ0njcvt1VhnzS25V/vr9b8F0ws22E/61OKJjyQ259hss/0upCfmZPHcLDEK8cMSu+qj3HOj/4qVlANcWqXKLIOaRB6javDlB4zn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X5FajwjqrMD8EeVWELyEJUBGD0SDgFSrYF49pNcB632Ce7VgA/nO13A08qZW/fjfEZP4aLXro/9rSwwTWfCVtrygrj1DiUadifKMd4DMEyy8XvY+AcNIcC8cDnAALRgBCPiQAT7+YIT4cnh2cbGRiqMs5eXyt79TZkpmqSsLnWHWwDG254B125Y/6NjC7N1Cj38MhyBrgcjwtcEBgMDkDtvVrVe+M571iuI89rFCeRbKbNnhAUFH07oesC6iD61oBGdGE2rlKB7Ka94KXzjDG24y495SIw/+udOeXukTZaQ4lX6aJ7KIhSzYwVd2zDbAOkt0PaCFGT38dgaRlvB5f6BjDB/gyJiW3opKLexhE7vYxj42spOt7GUzu9nOfja0oy3taVO72ta+Nrazre1tc7vb3v42uMPMLe5xk7vc5j43utOt7nWzu93ufje84y3vedO73va+N77zre9987vf/v43wAMu8IETvOAGPzjCE67whTO84Q5/OMQjLvGJU7ziFr84xjOu8Y1zvOMe/zjIQy7ykZO85CY/OcpTrvKVs7zlLn85zGMu85nTvOY2vznOc67znfO85z7/OdCDLvShE73oRj860pOu9KUzvelOfzrUoy71qVO96la/OtazrvWtc73rXv862MMu9rGTvexmPzva0672tbO97W5/O9zjLve5BycgACH5BAkEAP8ALAAAAADUA9wAAAj/AP8JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068uPHjyJMrX868ufPn0KNLn069uvXr2LNr3869u/fv4MOL/x9Pvrz58+jTq1/Pvr379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4YcghihiYYKUKAgffDyCIh8noljiiDOFsE8GJSRRAj0aaPDBjjtCsaMGbq0o5JAoTnIJjLQ9YqKSJjZpIoslQhklikim1EMIGfBTYxJ5dJmjOB/kImYuqkCRySOPqPIIFMyEheIoRMa54iiCXLLiJHxMUmVFgqgIGZNQMunkoIOyKCWUfAAlJJ6L5lmko3gy6pKjclZKJJ49WWqonFHt4OkOAxigRAY0bpmjjjyGCQWZZKqiZpqCsP8iSCZZ8QGnprgOeckpKB75EyeXTALAJcQOS+yxyNqp7CWY2GmkkckKCYqyfFxyIgAuumjnk4JM4uQpj6SUSZ8pntInmiUqeWa6KQqarpPukksot06m2KSQJwbVIpWLfXKukvHOKzC3iGbLE6O5PhqpoywhzOjCQy6M8J384pSwpU99asoAOxgQQghKzKhlCVsmcWqOqZLJjKssqylILlNhcvHMK9pZ7Yo8JYsstDofa2yxyA4rNLKg8DHt0ZdMW6cg5oIiiNMDm3jSuH02iSbAVWNdddQDS8l1vSdOCVTYJ4aL2Jlaf632pmwbmhPNGK/0KNyVvt023EZ9+ukAphj/EASKpzxggCkbm9JDDwYY4MfHIIdMapYjl8zlqUl8AGYSTk1LN9zULosTJ8YCgO0lw5ai8yTTPhvs6j0n7frNnRtdretNPy170U7jXqKsJY2L9tXAB3911sFnTTy6ZNMbNpHL7+tiiz4ZuvxhW6MbsNr3Ruk8vs3btHnEeao0ycTfE3lT+UI6pbGnpjQ+I8kkJzF5HjqiumMuq0IBRcuPsNK/kv5TyuZOBKdg0ayAvTKaTX7Wup2xLlk8ayCyqrUwauFOehhMXpNK4r/iWc14acMe2OaVQa/VrSdTgh5h1oU8QTEphP+62iYEgYkUFmpFZENUTSzlMEpRDGcqQV+c/x7mPSEmSn16+4fHSMWPLMFPfibTkZhW5ao0qYIV/vPf1qoGLrMRhVfZmpmzIOUomwkJTgg0I4qKdsSZtG5oOhNdA4cGCgCAYhRIQ9opdrUrUJzCj35kmiChBjUTOY1FJRGeIhfJyOFhDYYiJBi+2rgTtuVrMMRLlwvDRiuLPMJbOGzR8qA0k0qRj3xDYokP55YwVAKRJkakJFrMVLUzqSJW5noXH04BhaHQ6W44dNtFRoGwMdYMRdhyo7GENawIMlCCPQNFBImVx6cdiw92rJaJrPW0E/2xRLlMJPBmFUNHjvORS7oe16SnPUQlL1uX5MmQ4vmX36EzayDZRCg3tf8vmRDJGT9plJ4mAj5ZwiRODEHoW6Agq6vlUoOCUBQwU/kRYNzMVgmE0yRGIRPSIStTJYIaK8QZPHk2L6KZaltgHjEu67X0RSWRWRjDGBPzBZSVFZEdpXY4JI4mlKJygcLWHqo9lFaSeScqmklkhi2MjuKaA3VJsgDQk0B204siedXVQpFSskXPpn5R5LtUMsOZSuklYE0ppaJK0Imx9aBpTUhc4wIF5D20fymqpLk4lZJJ8OoST0XgsF6iMxSG9GlYDUnwMsFVkz7PJ9szaF5m5ch1TYqf/Lxs+m46N4vwtaZzPUho5QLAWHHrFHabksFa4jTXUWuwLbmE6YqFwkL/Oi2R9mzsTk76VaDuZZGzqqkoEYWJlozWYj+8iEJB61u5NtcuRWWXUWG514KBoqbLuhkorsuS0smWqjzZRCFhOhKWoulMutUJb1E4yb5kwp7oguW++tmw5+pklZKNyPjsK7fjEsS/pH1eO3mqWjrRxI7WotZbUSI604muJ6oY73QVi7YzRU+UE86J8+iJl1C891znOp9qOXwSAPP0YfmFSEGZu9mFmFguRH2SG/mpwh0Sa41J666DgeGrnUTYkIkFiXnNe+HHsne4e1mFPUvUyfOpiL8j8eGC7wspTGGkUSlGyXIV8mK5ZK9EPn3JL0YpyJyMAgB1OlZxVSJb0Jmu/yePIGSfevde8wbDsNrrLQ5/+4hQAK/JEpmhwFy05pzOlw+FLvHEJDq+SGXErVbWbIu5DOW7EEpJcIVnlhcizYKusVoXadZTsXkJYKgEAJwwXSnAuxNQyOqqdH7vmVoB0jyzN5h6qfN50TSRl7oLklKbSGQzTBLyAWW/C9MIxSQl6VdSetJV6ZLlxKQKZoRpRxxhhTvBOSkbbhohfr0oxYpmrr1eiyKcwObscpwSAJRi1W/mSf8OG+SPMJals8YzKdW657yc6d+8jgi62mW8gQlqIirK4ZRFEjFFSezbD3k4xBn+4i4bpXIf0EAuPsCMMU2RTJm4IitUkYkPZGReLf/BcMUeAtjIVgqwiLZVjyFSx3WPLyXwfncp4Gxap9XbI7KWNa13a0PIHtrlwYSooAKlyYBLJBRQjzrUSUH1YLQiABABgRlAAIKQABxtEil4JJ0kEcxOfCMPd3ikIn1lAxLRuBWv9FHox6MxhcnjrWqZmlzVJ1VchFCoDeK+/BQRpOPKZmzkLkSCNbqk7fwkOtd5RKKBatHV0fJ2RHAehaVNO+HOWpiIMyZYgQlQlL6Go1DSeOns4fdaAyLBgO+ukVdO660zhZom71Fzj9nmlVBggHpvREiB3vdKneqkaEUrSBEANDRE61zfOkiCLmuIDO9dUfNaocqOQ5lpmYzHXnv/+DaiMDs1e+XOhbZSOH5tMd1PFWOCf95ZNvI0zfuWFXk1t+S2PRXDCYxE8ks4hEbiJjsz5xDNYicAYCQoEXnvBhEWIFukA2+ZdzQIlizblYEaqIHd5DSowwqg8Ajf1CfgUhIe1nqZwA0PQXz4JmvWUzzqNHZkdnZoNUmG905cEy+YtoKhQHXK1wq4gAvcEABDSAFGSAFBsBBbp3USwABbJ30cwQ1SJ3wP8WGZZDX2Yi+AAlEkthAyszyYkGhRpjDHVmU02BASB3dyJxAW5xPW5n53h3d5N0X7Q3/9o1Wygn/CRigpUTSjBBGYcCtvIiRgNCXWglFmNEZFc4ALwXjE/yIsnAB5DggRwABvQCM0dZRHx3I0Geg6nJg7Hcg029VNuPQJJshYqIgLD9F6jSQ8W/SKX6N9+3Zrvsc8h6I2u4ZeD3GEvIgCvhgEkfAAwfgAHVCMgTAQXAd9T2gFEiAAQfAIAsAAZWAGTxh9XVcRRBgAuNAKQ7iK56QiWKMQXCOGC9EtBVNiVRZ+EtMRy8Z237eG/9CGO6Fx+COH7ieHJOcqdWhFHQQwt+Q/ficRdNJOPwcSwaRADjFckzR+CFGANrNRwbJ4PiMskhh5DwENqSY6oEM6mKh5F/iJmriBobhd3+Q0DTVSJHGCjBUKqtgQrTBkrXhOHyRC2hdstVZU7P8EUb+Xk6+4gw0ha1Hng8nng0LIDdyAAgyRjFYwjVzXEcEAdS4IEQUHMAJXk7rHEJsASmGDjnlycz+BbF3pEQ/pbO+ofqIFjz2BjywTf/KXKjxyJqxwCldkPQ1lWo8QZirWTsQGEqqFfi7mcvoVJWlEg8CygMdyErbwbonJagxxCxRIOsDACdMSNJe4gRpoR5bpNGM2Q2PWUCG4lx4RdSupgg1BfLoGk4wEi8A2k8pzhplmKb4XXYRSkz7JEB7WgkA5dVQXClfnEE/4hEB3moC2EC3EJMP5EAlHMFIpPe4YEkXSaOGXjh0BMcyWEluWfmQ5FBpXJmvpcT4CJBCRC4L/8I9awyS9ZH288oclsT2gaRAjhlEUsUuwk2YQISzQsgmPRxKJmZgP6BA6526r9l2rJjoEWoHEUidHYyRPA4qE9EcOSopxdhKkIHWhQJq2GXQsRVmtuEWrqZcC5iJEkZyyKSUAY0K0N05k5xDUx1jWsHxGKYQBQAFI+RBaB4UdwVK3eZwJQTUAQ3gVAY4Jl50JoSJf6Jcg8TBe6ROd0Gj79RE9hJBlKaQGIY82oQFmondlkgs6WniZYC60Fyso+RDuZCsm4W0OAUq4plx1YjSe9xDDMpnEYhKlYAu3wJ8PQacZWYlTMaFSh3WliaHp1Rj2YpMMsaKk0BMoaGEOgU6u/9mQ9LIJYuo8C8eOazepN7GkjcaQ7EhGjapccWeWP8EMa4KlYsIRV8QiL8Qi5/kQJxV4UeY8YhpMjEgRvII70xKJDkE6RjIt+SkSpWABc1oKt/AQ4fBuANqrT8GnU2ehC2Ga/7aliTEoq0h9h7oTE0p9KsqjtYkRJ3V2JVQSTKqpBxOulupZECOuJHGdDYmWN/EBddUyDAUzH6EkRMUrAekQKOIu6ep7CVmkSUV+1vSIEcdAiicStnCwwGoLD+GAAKCwUqGsE+qnDNEK1FeQiPFByBl0UMcTKxqoCaFJ6cIRX2axBNELwUSOTsqk5VoTKpukHvFDnZpTnyqlPPEBTP/WMiUnEkI1VIKAlw1RLyR7Zev1U0WKshWRgJ9ntAdhn4ZZErZgAQdLpw9hAY75bsAwrA+7m1THrApBscZHhY8hrdkadNWqE4kKrQZRPC97i6zaPCuLES2rjsjGcBDjs2MIj1QqE3VVf1VkEnzwauYmlfXyqtITqyjifR3heQqotAYhLMgCDfoJtU+LrAoBDVVrtXuKfBNKAQ5BsYkaGRg7tsZXtjmxog4RCuU0r4dSkJ+0YYU7EnH7lbFrkKv0tso2s0Yqb12aJlh0r+vZJOEUqcsTtJ7VPbnaIt7yEdJ0LIJgagixDMoCpx6FqwZrAVALtReZmFULuVkrlJzrkon/SrqNEbo/Sa0ci6EqulgfMajCJBA1NKLz1YXTqbJyC50U11l+i7sx2xJ1BStl0p58SVQTp5MArKbT0xAydSfrO5nPQhDQkol11DMLSBLWawHEgL0OcQ3CGqzcGxU/mHzB8L0Ti4qtB7pLUsADYajnq2uLGjym6BG7sG1h8wg1VDBtcyLN6RGz2xOYyqQjMZaHm794y64zIYJq0kEroX8k2J6xqVoMp54/JSSMaxHKgjqJh5nLGyygACw+w5EUbMEX7LANocGWCw2lEA1TsY0/2AoivBCt0HonaMJjla0tKL42gQsV28LAgwp8OSg19Mc0FJvwBK70+xM9PD7UGxLG/8Qw6aq/+tJBWPQI8qoS4BglTicQmYBB27ZafMlN8julzgOpyms0qIM6wKCJyXLKxWJHvqCfw3DBwyDGDEHGt3ALwGABaazG27gInQuVHmbHi0G+DIFv+AbMNOGsdZaQJQUS7xvILDJDgFzDMoMwJzLFGrHDPMEJ2HykKLa/hguqBZG3LVF/49l3LuFCiPQPrzaoglRC3uyF74Sv82W7EgEtCLpuSLOJhgm9l5BqJWEBr0wMxCDLC0HGtgANt5zG3ACEQTijDIELvsxYclw1VVhn72XMMxF76Puz9hQSrmAizQzIgZwuk6BPeWLNaFfIPqHNKs1wbheWdwvO/0XEMP8hgljjuyvxUsozm7I4qxuhTwPWEJaE0hRhxRiYNAysq3wADKiGyyYBxsQQyw9xDQd9C9BgC2gsFUQohEHIy+BLoRO9rQpRYca3E2dLvP8QQ2jLrd4i0jLTzCxC1Cnrw4assolMcY1mfjFNszMt0zWxs0ziKjAxQtlnZCIxZjmEr/gi12W3q6QTwRFcgc67Eq9c2cQw1Vh90Fg9FUPY2dyQhC6prBsLGfBSheZV1mabxw2xWGttER8deoGMJ6HXCTKxzTpxyC4bZW6Xwxyhrmfp1zSxRQEEE9qGPbNYEs/grxOHWYwtESFoLNuFLcAw2S/BA8Nw3df9ENFgAdGA1dD/4NRRYYRDGAABANoMIYVgTdpWk7Et6LE1odFR+ZPqKxKBLMre09I8gdt3LRKYIDET7JyODGdaZCKr+hK3l859qNzyzE6wOy3UTRM8YN3NYN1Tzd0WAA3QcA1TYYQxGqOR4BC4INrurRhiW77nJdE7odqFqrZeobLN/RKdwNL2axJ44iwMCOBDDNwyoX8NNROwOLSqdC9nWlQFuxURfuQ8UOHbHQ3QcNlSwYtG+OENwQ27OXVhjcICcTVAqbvxLd8ZitZRwaRLChS4Tc8ZsYBkZOYR4dtTStMpZzUFflDNY2D+JOSKLTZeceQrEOEPMQwWDg3bPRUoYISDTgEP4BAB/6C1ox22Kerl+DbiNGG66Qs8L8wVtp0TMY7f6YrmkeLTVxbgO/Fr7+wRhWQT2dO2tuUVe74CrJ7kDtEM1rvk4A0VQeCLtt4BiK7okH6xjT7MWo7iOoGbrT0QwRN6LS7mZD4J2szS4gMpybS+oK5eW/O3cMG2CZlDYP4UTsDqrO4EfW4B18Dd0aDhUhEJtR4E6P4Qic6nyTfRVznWv87HKU7Mw07s9lTvTzEJ/T0JY17XS8rsKVHFXanmir0oQu3m/LdB1b5/rAo1x60VThDxTnAFD5EN4G7h5F7uQfAAQYDruY58PejuWP4Pf5YJ8q4Tz8pSGJ22wcMHJ58VYk7wLv/x78rO73JTQTIfxf3mYgifEkzzUK4aJIaE4AyRQyHVFWDgBArQBBDBAxe/3YZAFTVQjCkAEQGwfBNKde5+dvf+8jiBgvgmlcJT6VjB73StpOOzpDHOErud2xnB5uHc8yjRs73eFogW1AnJk3DhDRVsvRlfFhSA9cgn8sgZ7zwRDKetqJNuTlph9maf7Noc47S9EpXKeJua43xd5wofFyD97grhyYcLpWzBAxdcwVF/FhSgubxJ+Hp8XrtexKcZEf7SowBj31XRCZig9jnPEpn+75MvN2geLLu/rpifu8Fd925RIu97hllYzUc/+sQQ7tJfFdcIEYEP8itPPSdc+Fr//voyMSsV5vVFD1ziDxX6rvuQb/b7fRLaDDv/fbvFP+r0XeJwofy709x4kkKpxwe2DxD/BA4kWNDgQYQJFS5k2JAhD2LXLEg05NDiRYwZCerQYYajxQCtRJIiqdHkSZQpVV4U1NKlxUcxZYZaWVNhpkc4dWZ8tEmmoEdAfWKyWdRoJ0yTJnWaZNRpwU6cOC2dxOmpRT58Lind2rRmVrBZG4YVe/Wry5dm1a5lGBQT2oxo0U4SxIcVW7xXeQyT2DfvX4McBZuxSIFUK5KHAS9mjFKuIJgyc9JszBOnTI09gQbVHJPPo12V8U7CxJSpaI1RqzK1irrrpK42yWodSxZ1/8PHt3U7flsXMk9MfNCeErRJOChQu5UP3NvXgrflTnWA0LFGgoAyHaczfICCgncKFKKPB5zboeSYlMkbjHk5pkafxX/GLN7y0XqVk1JR7YQfYVTTpLoNANj4mMRAolaajY/awvJPILkYfPDBx37DaBNBJmEluAozxGZCwDzhayJisgHxIo88ok6HRCSogQIGsuNIRRAQSuGBB4LQMZITe3RMrsgkU2/CTHRq76RPBMEEQ87eos+4TXxsSL+lUunPR9U6AVA3Aw+EzSuVFmwQrAkjlHI8UFz6zMK4hAvKpbcwAUUVui6h5synVuBrROjwtEiwRBJZoyOHUMCFFFxEav/FT0YVMvM89DLxsT2ZJDXJFZ/efKS3+uhryZVGByqtNC2l5ERLVHXZrasuwURJTIZme1AVuU4JlUu0ytJol0no4yNNJQUBJc5g77xVoBOSvUjPiCwgpqJjFRJMu8IQIyWUkqK91byG0MvJx0/cw4kUlFxJEsNO63sLw3Ut9VO/TqxMxVQAt+SS1S/DlDVW2/yLUEJtGXtLuOKES6kudImVc9g0QXlkkl4aTXbiEyzaa8RohjEknmyu8bivQ6AJOZpooAHmZGrCAIYalKkBhZpfQPnlmV+ooUYV3abT4aKQEkvMWpJCwfZaUjIJpUijHwklJ0or9fa+gK9C6xGA24r/VErJLluJPkycfDPOTbrGZFNU8IRXXimjOvXUV5RrlSt9+11oX/wIhitqxnxz6ZKV0L1EkL+RE1bOhZGb5EMpJ6aCiokdUmAFyFfwhodsKvfYApKjAQYazlEGBjkAQkdudNJlZuUXVk7Z5JczAzgMW6GvRbpIppk28mlNO1wTb6O4tTprKd3LKRM2UUIl05bGjnNJJcemS5Cyezw73rSlsl7V3b5UqsuUDAwLgDF1Xc/ulqrmHS9gkw+qJmo2VZdhJXuSeVg+WB6PYoqpSECMJrJSQIwEJIBx+KsYQcgABgQ2QYFXYKACHOgEBThBgpGTHOUsd7lrcK5zJwPF54Dx/wsQss5Hhgma7IRmNBQiDXfeAkoL35QroJyvJlMzn0K85a4eZQp4NlnF2NAitq6FDUMJOxEm5GUlKb3CelFpm3IKpJR8neRAclMI3dajt7TIMC8tRMtdbNI+UPBhE5sgnbDm1zXk/CIWE1JcAhrXkCtMcAX64IE3smEIQ0TjGpmDRhhM9seTcRAAoBtk6UgXM1WIsEckDJrQTjg7261QMi7skH20qBLfLWQz9MFhjwQhrvcYxVw92ZQQg6i8sJXyQak44pV6ZL0lRmd7UHRVRmA1NyqSR28Gu+RfKgS1omCja8Fi2MJiRkZM/EIQwHgQAS+SDb58zAIWgEbJSmayQP8GspCG5CbpWAGK0xUPRIgZmiNTSLvbSXKSlaxLL390N9xMspMnQsXtcCLOmuwiE137RNjih8rlAXM88SLovHz0CrWpLTpbeY1SpGjFhEB0PMKhKD7d+ZT2PaaGNRFm8sI2OsK9DBPLwISx1kMxjDiBL9nAXEuhQU0NZhMYACgFAIDBiW4iJ6TgRE448WQt2B3taOjMWu3UaR8sukSgF8WKmix6kM20cJ4nSlKkluqUVA5ljOtiEmmuqpuCUu+gAJJKE5dDy9iY5JZVzOVEfcNLpq7lF6d4k93WIqxfLWyncrpEUsKAtxU0o2PSLBk1bRFTln2ugzIdXcwc+wsMxez/dMnBU8+Aeq1Hzg6SwkPPZj7zQqXGFSPke6pBohqUqZ5IJ5sMSvTUMsZekZJ57EqKIEKjHFayUqw9OgZZO2HW5TAUihsdyxTJxBDjik+XFSWuaIvCiqAQDF1RWssmALCJSwzrF4VDDjUmAYq/OjclmIACOJUpXos85qvoNUhFW5Je+qC2UUYFitbwMkyxmdKfS1JOvKwUC4P2CKFSYSJ5aPklvtmSLAnGpYP8lZW6NBclo+ADcSpJ2reC5YUYJliFO0xRCavlMT4sbVE+wd3Rffdl32WvSTDxzcm2OFZyWa+MBVJRqsGEkqntEWd0mBPo5WWMGToXEJcUNt3oNhWc/1ijj3qrxLKuhzRQPI2C23oQiUbnre0sCoUjDGG7MXfLCyIzcxf05RJLrTfEmkQmqMsWbICCjGlk2MtAAQBF2pghMeNpjfVMWj/L2L1pHoibpHqre8Z3KJn4xF/CZmQjv7ky/v1tgE/0CiVmGrhnJRAUL+FKrGS5vVdejpiNQrXysTNCY05qhcK8y/KF2CynIFb8PitpuaKYpMvYBDAsreeEPAIY33QYsBGiXmOb1r065swnjzUfmQx5E40WMmwhvYlJ3LYx8YpFJwAspWNwAsrixk9DoxhqUhdE1G7LcFFQPWiNZrjMYEmqmEEMZt9UhsSc0sy0/7KL634OZssQKf81wpFshCSTz4GWMbIRXugtM3uT2iJlTIYYbULn89GQxoS2F8PtbjdZwOPGtH8OfKDRkqWWCAkLyv1jatmI2dVjBvOZSWtvVmexMWKsj322qooE4WUeyLQzwUvKzIcTJJnz82LS/wFop//jUd1Caiij9QlS+kTrbn5EP3lslF5MYuNdI03QAZMKAMfiFSK/NKbFTW78TOXkF5kNg9nq4Lq12yYR9s0oVC1zLHb4wqyG8HtRw67mBQtdSqI2W4CBiV6sbGErM2nS6XzeqEPd6VNnSNWdHTVBVFXrFs9Ju+479iXxdzFoj4Xa2Q4it8f+QSe3O7+8RxvbHzfvIC4Kvtf/xApVD6dDj7Dw4FMNT9RoRl1HLmVMzG4WPIOC4KBIBXKQbnk5oS7j6HV40jmvSRd+C2+06AnWSY+eTA3pKbu4tur/8l/XgzvT4j7GhLQHRXRPceVYBovLd6/7ldgyQbCVxYC35dCqIUs9f4oPXHOKeaCG7Ooumam8ZDOjb2K4FquQqPs+Gwq/r7uVooq28pOtTwCVq+C4VPA4tmA9tZMFcHs7TNs08gAFKOIEA2kN2/MS8Mk9/xsfepM1lmAuAiyPpBoPoDiyVGI+rTsXE8Qo6bM+Obm+ZJuE8kIODGQvDdy8XEkvD+ylUDA/n8C6sdm60fuExisKSBM7wGi91lu7/xeMPRkkj0uwwe2pvYRILuViuf4DQtFYN424N7vImyIkj7DBicjalJ4YoyVURCdcBjvpIGo4hB7xBmGwBVvYnM4pBU0shZmSKQ5SLNARnNLBkJ6Sme1bjlbILKJaIS6amviamg7JvC10iKqzuktahXNJxKxTxDHquq5pwppIhY0Tor9gwxZ8w7erPxAxt/1rL/3DvQbzngfxQ1v6Mj4YBcYwQPxYHfngRW+Us1/oJzKqg6KwM5ehBk5YhhOJh5ayAFvYxEDCps05GZu6hJkiJJDKKZ6ilTORHc2KJM6SJHa6uSsULw5MCBoryGg5Hq3rxX7qp0TkxX6ahppIvfz6Nf+zYENZeAUXPKjY44RaOJHvaigcjKhLyIopmpJ02w1qHC1rPMWaiC41ARF9GhtSeoZpa8hPgCyaCUd5YB+beUQ7mRBKIBlbcEdouER59EQP6iB9fMpngEnd8Md/TCfcCb9mCz4+RC/B20pYVMiAwcWuIyVxVMSy7Lp+WgkjEzsPwAtjjIWOHDlxU6KQFEntCaNYMa4ejKg9nMaVrMawkMowOUj8cIVf0EVv9MZPkLNnOEMpYpmXWZnwwo9hEIZpAgYLAIZLZMpsGh1Q3Kan5KlTyLNx0iydsEpW5IxXDD7BZCry2UrQskXxMsNp67rEHCOIfEjHzIhNSIX8asCn0Ej/jpS/2KtLEImKS2ioudFLIGxJ1Fir7rHGrZSNMcMTTGEF3HzInOwnnNxOCsyIc3wZ+/GPYXCpw3rHcGBKmwokUMgumwodAIhAneKmRxgFVogYH2kFzVqa4QnIq1Qq0Fo15Hu412wqADW2VTDL7czOTeiFacOEVTgJVwCi3lTB4JQFuMRQ4ozBg+uRrniN5cyKk2xGdevLlyOL1uS/wBRE5gqVb8DNxjRDcdzJ1ZmZTbBQi5AHmLGZlenQ9biGw6KmzDSZS+REbWpKl7kzPiMdACgcNEojMkIcHykaFRqep4mqr/wJ+8hKpWqhqLuxXeLCFwJLd6qnXzTLsixLitSI/1MSG7aoBriM0w2NQVO5PzskCDxsThOtmx+czrnhu2tkDJmkqKvDyRhl0DHqzk0gRzadQJTxj2iwxJfCzKijUnT6UsBwL69sRTJlKlzUzpxUxONJy4zYhY1jP21Yi2qQBVbVUCeLQUwzzhOZig91KJZLLhIliJbz08VAszw8CU31PXnLCgpD0UFrqhYNGHOYtprBzXBcnTg7MZOghmVILFCQxB+1gFI4rFuIhkqtHZzA1L/oyvRaE0vCVGTop1GdUV7EgYxYkl6AvK5ZC1bN0Lg8kWOoBViV1RPphOQcLr5EyV8dNbzj04KNzpobNEAMzHvjuwGkRXLlHUhABVDYSf9MoJkbDaFFBU+bicxSwI/LLIVboFSnGyrbEde80FQunBqUFQhzMdUF3QUHVQaMmAbSiNd4XQt7ZVVw09cYLIYzAQbYoEPY0EP9u1OClUa/5L0ZArFYmzeofVqHwDcuk6F1+ARUMFVs2IStxQZq2ASavYhDSIWVeRmk1Q131MxSSMqoM9mdaNm18L2VDS24FQg3o81+MtVdWFOL4CffxEijaNVWlZJieAV9PQbDxRNapaWSHIhn3Es9FNgy+csgrLcyk86XDExCKzxCdadt+ISv3YVd+AWv/YSfvIjqc5nqw49oyMxb4ERb+FYj+cC6RdjOxQ0aq92ByARMudEbxYT/T0CGi5gGIxojHC2KWPAAVuWFewWRwtVXdkhcPGFG/juQk9RTyV1aMKPOzCW8Pv1efMPdZL2oT6CZZxjdrXUFRnWIaEDHD5LC6OAcToTdtgVI3b0KMxNTur3fBMUUmGU/jHCGsNlNpxBc5iXcdjDcV8hXP+GEf6UlZ7w97AVAH6RcuhtWm7O5DMu3zotYpjJM0N1aapDWiwgDTFgZ/4AFaJhfYPjYkrXf+3UKmMPdMY1hgUAG3zVV2sQP5pUF5W1LHymGdkDcIeZXHxlarqgKdfMS7sm9gV0O6eRVvGDYzS1Q0WKEEeZarsVJvAkZFoaF+r0dGzaKD9u+uqjhMf6H/13IWr0l4N1gVQ/wAF4A4h55h1o43FrwhUZBYvzDU+9JSeSy4NtwzmwE1CqeRefahRCmGWxYh6gpmS8O40pJY+pkWtxlWUrO4bxdDx/24TmWEjvO13zVY0apiqowkDn0YybO1UIT5OckZMB4Nw4GP0R2rl9AhWfABkONmpOJ5BfeIUrWly+DL0xOY1d4Wd/l5DiWYzo+ESEW5VoA2kY5ldewu1lS2oXAQxCBzt2ItfK55Ldir3Mo3699BvzUliJt4RauX2AO5lcB1Lk910wW3Rv9BL5dDh9e5iUg3FrIV3aI5lBxYLnzEse9PchVUQo22ITmEqodC6eSYm3R5dH9XP8pPRYWnl92Ri3adecZO1hHyd1gdgVFFl0zJI851mcEvuM7luY9jk/GFQgv0b/wgegCdGVfMmRwjrAWOwdsKN9PwIbj9ZNL5AR1duGkC0iOtl24mrFizmSRpmeT1mcM4OdiUOkKOJYDI5Abu+YJfuLoMFYjnGG2SjWajpZfcIXGNOeAgYVOXM+oQ+qkPokNNtD9peSRLkHgvI2TjuOp9hF/iOY7PgaWnub7c6hV9upW9miFRuxCHt+xDucW24VtyOVneIaAOVKbemtviWtgDd+pzaQxNkORxhRjGI+TxgAP6OseqQDAjuarPpY5zOo/XuikZWy3IQtshOLq7DwYkjH/tNZlXXbkaKHHToTfZINrzgbM2+Vtu3m+MT7ml92FCI2OZU5t1XYIBGiABqgM1q7qqvYHbXngJJ5tINTmEylWetMynO7gWhavVcCGz90GatgGbaHHO1tnp0Pu5L7g7f1sp+LoVTjmT1Dk6V6OZcYABL+IBoABEYCB7WaMYojwaC6G1z4WTHiNLiHvmfaR2chtlpzrjp7JFluFbfjtT6Dv4b5HmzLqh9Pv/f5sxWa5QQxmZYDuEixw5ajuBMfuSoCBHq+EBweMd4hw765w2E6KA5vt4orxCmZyFq0o3LBi9nrv+MYGYAyVVKCGQQod4zY299iMF085J1e3GafkABdw/1cI2+U47R1vCASoBBqIcxoI8r+oACL3BQqPGnPLcFuNRtsuNRRVDrJear48PhkjcVeA7134Tkahxy3vcmD7ctkMcz/fSm0M5jM/5l0Q3uhg8+teiOxugFCn87z46wjHc/AOmD2npa4u68Ye83HdbVwiaxkr8RKHbxQ/Fvu+s8ZNtklaH0qfWlfGMACHbpFW8xy37jZnCARAgAt49mZnDH+482LAA7zB8Jg+6Np29WwMdFxxbIQ8vhSNlhJ3BVuHhPq+M9CBdD2T9HFPakDkQvIpdugOatHgawT/dIV49i+IgC94dmmndgjAGwcerphu9TMhs2+H8rY41hbbhlVAhf/4DhhHHJ3Mzm8t7dTk9naHBhJ3zvRjJo8oGHkSKPmFiACU9/cIuAFCuAGVT/lSrwB/qACaT/WoGeg/LlonZuXxieLb8GZCl/F5bzFzRwVXkHhVl0971Gw0DnYntvQyH2NFCHCqd2PUIPmSJ4GTT/l+Z3k2eHmUzwtNkHmyt3be+ZLZPltdTS48UfjnXO+FkGXDQ698IHFUiHh7D9r2tPio09K5d/q7gzBkHVAbRoZVmIYz53TqXoJ8NwGL4HeUf/YIWAx/8AU7rwBfsPmoWYZVHtElR0k/cfvGeNpZfmydc65VIPGIdwUcvxWc2qYdTDpPkWfAD1jBp8Wot+HUR/z/AG8B8sD3ZQd1Z4d2BAh4mrd8s+edEc35z/9z8hD98mjYv0dIh0cvcGB9RC/tdJfP2H84v393juZ4pib8+0UGw1eGM1+POc53fU+IUB91aad5zK+A5L/2rfhjtS80tmcUYwUIPv8GEixo8CDChAUF8eHDsCFEhQYZCqpYUSLGjBo3cuz4z9iqbatCuvJo8iTKgZxAXQLlEkDKmDJnbnwkyGbFRzR38uzpUyLEhoI4WnTo8CfSpDvdrEK2SplTHEpj8vLgAQNWjg1o0NjKdWpCPMUqkK2AByxaiZMm8WHLViPboGmVPgzKZ1Rao3WNEq3o8OLcwBqxgKM1EhwqWoLR/750Se3S4sgpM920OFQy5swZ7V7WKFSv5tA7jRmbpmyVK2WiE8q6ehUDx0owZs+uFNlfWbIzVitd27at57gNeae0K1fp57p+O+q1SFwwLVqnQ656TrNly5fWiT/C6Xw7eLCcOf4FHf48QSGkkSGbbiy81dewN1YSIQKGfRi3c1fYjV4mJnxc0tYkwQn3n2fGReTTXg9RJFBHD1KE4E/jgOTUKuCMQ2FHK10CACh8AMNhZN59RyKKzAXV2WYSQpjiavnggIMx7DmFzHnxYTWfRvjZ92NkePBXBYwmrUWeW8AVaZCCx8mk4IN8eaSXUEuiFEONtDgFjlNWKnQJmCyx5P/lVCYeRSaa/4y3UXkTpimYEC20QFqNTk2jyHmtWZXVRiKQ8OefIgSZmz/+vUnTb3G9aVSTw5n0GaMrOvpoXY+8eGhCQmywAS2krUKLO9u0gOlALrUE4oCTnOISq6uCKUiIbAU4q1EB8hEiKLDeWtEpd/klFIvWWeaghJZFqhyjyu1VHmflkYrSmp4V+2xHcyyw0QsuCMEBt3LSyR4H6OmJwVUc+flnFH8OWhYeelAb028NFbhoowpaCuGvDTaZL7R+PYRJiiO0UQBHC3TRwgZoGLOBMbSYY9ioz4KJ3SQvTTIxmBfDOuAlp0w8CiijnALyKIKUnKyAvobYZsnhGXv/U5sv/zUszVECSyyzK76rIkTBSlSUmzsrtC23MQghhAsFeGEJCyqwYIkXBbgwhxBYuNFtCzTioEy46MXnwRIemBsF2WSTsC5Z/rgrtJF2YbpsvT3H3ShDKSFbN4ptdNGFEAu0McILTDCRAxMsTDFCAQsI0UUM3KKxKWm0gGMMI+9ygl2Y2LE08a2dg9k5rrr6W/KAdl0iyOlAS2kdTjPX/HrNKMPdrIJsJ9gzef6eaftBHLTAgRsxYLFA0l68oEIccajwQiFtaCtEDFfLKecqWCCoJ9hib0RCGlGkkYYkZy8mZFkQrM07m8LNi+nckEra/u4nUTR//BTu3YULA0/B/wITBBBA+OHaoDjocYsDkDNGMtSRD6EBQBAA0BzmOIcrAb3qdKfLFawYEqJelU5usQPMdmAnwtcdK1LwWxD6EhKtFkkohQVxgfCEMIc5JK0QXmBBHLLABR0uzwuFcMHUjoYFq1mPQlXREUdIUIQ0FKGJUUAbBNrlwuA4iVTuO6Hc3ncp+THrRByawgIWUIACjGB/OfABAegwBCkw4QWIK4AAFcc4DjSua0JzySg+BKYHXowtHEsSx3Y1IAyabFcPSR3qBHEK+gmCFbdyWU6ANizXFatBRenZsjK5uikWZIUYoRLephiHp6kgBznMgg6Z0AduNCQSU8jBDnWoPBVY4v94WeBQVcaVRBMUgZdFeOL4yuIP83Hyk8LZohWxODdEJeshJBoCNAkgBSkQYAhopEMgOuCQINTgCATwgTX/RzgW7GEK+0NfS/iACUxYMGSsAkWvWNUxU5UHkQwZUMkCNAlLtvA8/pKZ6mjWnGbdzYR7KeZBjJO7NiH0eTOs4dJyyIUd0tKHUntoIVIkC+xpTyNR6KUJQlqEyMwANxAwy/kwIoOVyoBtBEKh0BwEpXr5DCX77GIoUzQFOJJxDyyQwjWHQAAm7GEEAmuDAPnWBYIhtKlOtZJC2cTIpmorhkhT2vG4oDzmJY6GTIXRRr/GkSiEtKwjXcwM0hbFlCqEpSz/FVq8JpXCXxnHmT6hErO8dNSBjYAFOfBfDsgpMG0xDmlPPSxiURRVjfyzfk0txAhs+AJSWqKyKkCTLHJpFY6kwQQYKKsJIqOGKuhBDz9QgwNUutI34MMGb33XMZGZWJ7kC1iOtRLhBDe4wpnTnLP9LXDPs9jNzOy2wU3TRvUkC44U4bNY8UdoF4OEJzwBCdY9wEDc6tY32AAfWvhDQ+BgBHy84Q3aXSma4irb40LLhJ9hL3zjK98nuU2qrpvvm5LrgdZwdkeeja5gfoCHKsygtKlVrQxs4Fr0vuulcsUvUWwbKQhTuMIWVlN9pVXcCy9Jv/zdSHN3hIE7rGuYxMzI/3nhekwOYwRuumMxjGOM2OF+Unc1lXF4Mpvc5W7EsxhYAlZIHEyTSlEj3W2tS1eMY4LMzrZLfjKUXZrhFjUnyuLaMY81YoJ3/BgrS0BbBU6MESBo4QAH0EKSqxhjlK0IhFZ+M5y9RGOgHCvO28FyljNiAteETciCIR9ZxCwROFiX0NjdWWyXbLOgWEondn40pCnkSTrrLNKrkUUsdsyRPXuAF2HjUWAAHeazZIS6pn6CitXMYih50dKufrVo5qwQuMFaM5nONC+cwRFyLaEqvAD1XPCAG3Zl5AAO2AKykS20Syh5zVpcb62jLe2p1PWKc8vptOeS6Y1mer945oWO2f/Bi1pYxdee3k9uojgDPMygCqT9wWlR64B50/vADZ4yjA2a7X3zOynKpBu0++2T5G57o+DWcWbBrfBy75cX5w4mfyAAgRlQvLSlhXe8HSBvNSwb3zB2kMBDLnJ4sZqSOfP4yH1y61jguuB43m+nW6NwWQA7LWn1RbqjyO4Ck9a08FZDvNXA8Z3F6y0pPzrSX/1vgt446TLhNqZdbnA875gX9bB6zdPCnzCbZeIUd7fFff4DPaAWrhAxutPTrnYoE7Q5Llr02nvCckxjmh2ysDve7653vDsc3B0dH84jru6vk7bnFv8B20qH9rgzvvEVtjZeF21cx5+kGrFwxt3ZEQv/y18e08eY+0aPcfdfayatwxbSSWcg8a8XuMClHbrtHkz52dO+9ra/Pe5zr/vd8773vv898IMv/OETv/jGPz7yk6/85TO/+c5/PvSjL/3pU7/61r8+9rOv/e1zv/ve/z74wy/+8ZO//OY/P/rTr/71s7/97n8//OMv//nTv/72vz/+86///fO///7/PwAGoAAOIAEWoAEeIAImoAIuIAM2oAM+IARGoAROIAVWoAVeIAZmoAZuIAd2oAd+IAiGoAiOIAmWoAmeIAqmoAquIAu2oAu+IAzGoAzOIA3WoA3eIA7moA7uIA/2oA/+IBAGoRAOIREWoREeIRImoRIuIRM2JaETPiEURqEUTiEVVqEVXiEWZqEWbiEXdqEXfiEYhqEYjuH3BQQAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhjwhiIh+C8MHHIyi2WOKIM9mhgQYf5MKMKqpAkUkmqjzSYy6s5OIWH5O0qOIoR6pI5Cgw0paJiYKUaKKUUFaZopVQNllSBkkkMeMHYNaYSy444shKjz2e2eMjp5T4iJBgKSnnnHQeeQmdWlYUJR+QSeknloAGeuWeJgIlZ5F0TqIokYwyOolLoKiIaJ2JVsoTAClSqimKToXATxIldJnHl2COOWaZZfL4yKqPsMJKq6q0/ylrJllNuumtm14CFCiXTHLJr3zc+auwwQp7p4rHIssoJsEWewmvkaIoyCTRogjKlUZikimKj4wSZUqgtEpllONGaSWLg6ILpborDgqltPBaqeS78/IJ1Lb2KpbJqlOyKui/AJ/Ik62aFjnpwfmmZLCjcy7ssKMLJ2wTALhqmiJTIeyTAT8l2NHljDSWaiqOPOLYqiCv+uumvFBMVfHLlCI5J0/AXgLAsDjnrHPOo1zSM84/5yyIt3ciKSy2glwiqLQnlRtwlVRy+6650j4NaItI02uoilcmtq+5/JprdcBV17sJTjArSTCjLEmq6KIRb4qowUXmlHadFxu1w949KP+xzz4chzpqyCJDkQsUUORoZpms+msiK6ecMrXESXl79+V0Dn0nTqU422yvoH/u7M6jE2vss6PwSiySSEaK7bXXemu5lSWxuPKf/N4O9rpYOh0v1kYizfWc255IOdpy5l3Y142L7fTYJ7orvJE2VYxw3Aar9Pb2DMOM8E2Y16n33jv04IffG3ecRB5eEm4qmaiqcmarKbMpiKz3D50/t0qFT/zweKtT0XyGCZvsLGe+SuABefYrX4kudKZTEuuSVzZ3Va0kUxIb9DaIJeAJL3q3Ut5O8MUpwoSCXH5yU+7K1bgWmotZVzPe8LpGE0phr2AqWomkiES3tzHsYQ9rVCf/quc/OQ2FfOV7gCkGYAoDGMAPIVCCFDWmsQxYMQNVvGIGQtU+kY3pRiRDkwoh962ikDBtzGIWAB1YJ5nJyY09q0npFrjAm+2sZ3j0GShSh7o9RuqPREuaIGA3yPwBqna6U6HKdkel53HwXx78n08kOZgWqnB3UaKVRbJmJAAWSiY23CHE4DaptgGRhz9s1A8J9ig5Xu6MRyRfD+QwgB0MwAAhOF8IdmkAjGjAcEAy2SnWVKUWDaWT9fIkRpSmqWRRbCY44wMA7DgsBQLrbZfARDUnkbRncTNTwAoWACblMwIWL2uZklzVBIHBlTFSgxl8JAixtc5IghBe9fIJvkTo/5dPPGJfisygJj2yCQoOypgxwdNPIEYkijQKbq6c2UIyNz7yDaAHTwyJKoq5ThDeC1fs/AizjuXGYyUNlDnribsk107e8aST/MwJLAGzoxY+yU0m4WS8QAGT7/0kiBVplqMiKsGGUPAo5FNJiVYUr3edQqUxy2FJigROJemxlS7Bma968izakUR3n+jJUcU6Vr/s66z+2pdKjMfWKb1ElVjtCRAtssPszUR8DCnrXKDQUa4JTCf41KtJACCzCP7qrVrtySYkVyVE9muggJ1XSF+q0L4AlHn7Ol7TMjXPArbEVnF9qQ/rVpFFMeyuc2JSXiV6l6lNTqaBlZlLtGWnz//pqiXSbOBtR3gtQyJyZaEQK2c1axMZSpUvgtjRZUsUXJhE70qn4EMvcOswQ402tBK5U8RQ+0ajshYvk0NZCYlKT+KipKTN4lVLdNYTTEiOsZMVyQof0dwRAm+SJLTsP/cLUJqg87gq+SFQuEdai8BNRTxNaGUVgkzktuug5tVhYAEME9UlrVgRFgk1D8sTULy3t+1UIX6Hp88F44W/rNoR+NqaYZAI+KcvpusqFfzdhJg4L9GNnuQeMRN6Ru8mk/iZNPmQYJWM81c364mHC8kHVpSEeS8SLomhWmO7WOOfysVyTpBk3JXQraEw/nJGGtZiktBJtROtcl5KpM4MxoT/th6E7c0w7GU7JpknpyBkuJ58yRIPapI3rksoSKFc5VZkVe1qnpQwEdZNznBa2uNhgeXaQ+xOZG7KgsmZvTtlv7DCgvfT9O/KfBBBzilZkdotRSLlQMKq2iQ2Q/KrcfKI3oJizyRB4arqG9k/k1XNcwlGKEJRaMg+5GsozGDYwrYiirAoeKTeiKTB7JMDK0ojakPlW1NrVHxlRWSq2BfifAQnjRwUSk/FLScvLUEVSS5aSmOm2lbNLCEX+SQ3m6bNxMoKIg+Sx19tISmg6mueGDe+VQEBCMwAgo4Qm9g74rVDMLHI5gGs2RIpaPGiPebRWreHG4nYpCXc3dUacSpJ/6iRKkyVuFSVjHmnKDddixnTk0xPIgZ1I6WSFd2JYGpYFLO0hm2W756UiJBODnjjBj5C4Y2YgiDl7Bml5CKEH7vQw876oEnRClIEoxXWaAU3HMJwhTN8I1nPBMQlout3KtuRn4QIvNSYkmkLHSdzW5S0rX33kuB1ot6GyoxMxYyRxc9MZ3LVqxiriovkGGtW9/u2WCQRmZ3xjZqKrjSzW7NnlQIl+tZ3RKKR7wNC69bQehbq4+26S+S5t+82ESY+XcgsKZ1VwYAIsXXdSEVvcNTD7fROkGlQ4HnwuYISMUQIrXa1D3rrXG9FK3ARgABwgwLYR8EDFmJ2CUjACmY4O/9Guv78QUPEn7cLaO54Jyicn4i2KEHltX9KYI7UdXO4DbRB9H8UL36g8C13ePLjKuJCLlHSJhxHEPM0XvGXXw/BTROmJOokgTuneRIxUkM2a0M3TXfmENDwLKZHRzhza3yACQAQKdqCeoJEgnwAX25FEjWFew8RCvsVNskmT+x3NflEVpdXL+VlT5DXO6vyEJFgfUaIfUiIAkoYBEHwAJHwAFDYAR2QAn3AAAxXdgsXfmUgAQJQA5nAByhQAwzwfeGncGbXcA4RCSiAhBQQABDRCsVWUwD1J2ATNYcEEdJTgidhbQMmaSOHEQ7zhyfxdwwGbEUxeF5UJvCDJvsSKz3/IggbFU8nMoQToXlIkxIbF21D40lJkkwtyDUycwrJcif3xhB3smGcgG+lAACc0IENAQobtkCpN4IgiHp/lGe46GGEhG6DdAkANxIxuCpM1xDBaEmLhIOB8jsL1YMz9D8f1FFQg3HEmFzNF3HPF33ShwvccITYtxBmoAMgYAXfZ3YYUX5Zd2zJxX5ucjYJ4UhUgofflCl76IcDtj1bxRHRYjD4F2DcZnJKshRJkAti8j4rdyo4Aj8EmAkEWIDnkj+/CBGuM0PxVy/pxmnBxzV9h0wm1ToQgTMUo4EgAQCr2Iqf5xDAAHQ7ozqzSIunxyuDpIu5uItQci2P8Au1s1zD/7gQpJBcxuh7yEg2kYc2xhVAG/dcTSU9ttcQWLYqcWiNw0YKUAl20ueG3HeF4ZcR3ABxhvYQjMQqEYGUf+UQmyAIMMSAI2GPfWcTnYCWHlFpIGlm/ZhmJ4cU/yeQhHeQiQMFybVyH4A4hwMFn/ZpjAV3aIaHcZZTDugQyERDD6FdVoUsAPAQpTAJH8lhJSGSmPmWBsGBsbaSIqh6tnhrqTMKJ4g1rqc093N0cQeMOOkQNNg4T6JBuvOTmROWgAZAkEcp5waWSPkQKXZZEed8pAB9UEkK2ugQWYiG5Zh2aseVx9hobNeQQYkQk+NZJMGWP8UJ2zNEHVEkvQJR/Fhycv/5j0dhB1BQeO9zOGOSCQIZEarwYFSXmm0SEZ9ITzmlTIo5LSpSb2lpYxSDLK7TkUemNKl4matYCqsomZx5M6VwCasIi6nXksJya970RyVIliqoLaywi2N5Elm2IzmpEK+5X22nSO5kNWUDjYwZFKMGPEtVNrbzbIimMut0bDX4T9AXDNxACtxgDdbHDddHAYvQEg+3dg5xUyqUgAVxora5EOFlEtjpE9ppjx/hNvoYnnNZiFk6FHkgJmICRrlgbBOxKjm2UhXpEPsjjxgkdWVmfDVHn0QmVJpZEA2qOpY5EgeKmZLZoDYDCiUZFWFaaK3gmimWXJHRUTY6hxKHE4T/Nmxq5RAuNJ30iSVimhBlaSL9mRHbgwmZOhNT+jYF6hHapSj7OIj8RxCnyhP/FwrAxHIfwBE+sk7o0jJyl5uSRz2KWS9z+hDRlWq92pg5YwslgaDECgx7SnQJKhVauSOD2hA0uFyRgSWJul8hehOtwJyLihDGyBGuJakFoS32eZ1U+hNruT2h2hHT8p2kWndxqaXkORS/xKrwwwyGAxIm4oLdMqkSORKRNHHBZ50YgWBEVqoLQZm9Mk6RSRLESqx7ipl+OhXLmgnWQKho9ZCN8WCruRBoFXE8ga25p5Q1aKgbQXHz9BCHeZZvw6lAUa7bExJ216nS1q42Zog7IQ6G/4M4ZXKeIhGJuqOvuOqyEIamJ5sRy2ChoECZDzgskTKsC/unDIGgmAkMTvsUWCexFMtf0epVxMhfzbkTaUdsM9g8HgFqXIk0MFta4+oTLPs2IkFK92gShDizW/oTUMCqqFKpHyGJLVir+wq078KV99URqZY01AKsOAMNJHELTaugJCmSENt8xIYLDkEKXIu3iSGtR8q12VoTztd8V+uVHsEuZJkQY5mJKwoSm3q2PfWpk3CubSlp32mqNDsQqYoTUPAmqCJzJOGCSdkQxeMtIoGoaCp1H5FqwkINCcGKFHO0QHe0JGELIsmwDgG1qyi1j1ukkuuscqhikIG5IHtZm/9LE45qpAzxrJf1EaKbMODKYlmjupeWtj3BuvMXEtwkZnBbu/+AvzURpqiiIwE2LmX2QW9qbjXaEBD4sxwRb6SYMN70K3aqM+OksIprCwi6p8TquMoKuaEwdg1BuRubtY0FqTXYtTrxcFvJEBVLiR1BstPCSSmiLXAmPPNLvynrvi4hvzbckTtkMzmMcw3Dae/qEx/wCDqCKiuhl1Ajqc/4tyEhPfnZtx3xkUSGgpgCiwyUMyeYsCJRChSsuIg7vU07tU7xtRvsmnEIwr2rsSMcvjKRldVouUtasWw8czAMJfEoL65FYai7qUCBw3AJMVocvPirvzNhMjhyu6+6Ekv/VSWl2G8+tk8Z2xEX2qQJsU89vBAW2iur98CyJmsnCAqwoLC2cAsULKwOAQtNewtTMZxZx6OTe8bdq7UorLk7ca3KBba+W7EhQXF1fMfJqEZFMl3iqihrubLbcwmuCxK9QiTL7HeDPLv7Ky4mo7t15ycl9KIAnDyUDKvykqvzwo5tSS3Boo8g6MDPcjOrR5mhrLAWwMWj/BCkzAnEaspR8ZRPycEMwXxZhsaR3I4jjAq1bMK4zBA8CbofsQuTMJbgeqELTXMoMgkAi7ItS66t+zbcya8OZDClWKXPPLc6ATmvopeN5xKMVUF9dW74JBLIF8D1csmYfGu+wisxDZq0/8iKYhwSpWABtrDT9MwQ7XzBPf0UwznUpECV+Vxsc2wY3ssQTIllAK0Twwm5cEwQsPkIT523skeWWQ1DMBzRKBGl8TsJ5coJFz0S6ppAf+zR+wfNMyHSJ7NyzgVC5WJ8kqWkEbHI21xq9eLVe1eLtTigJ2isLGELOs3TD/HTCAoMQe0Uxbl1+KyTEYvGUfa9+3XVjCrQUz0QlpTUFeEKRPIImKAtVBXaMgHWPNEJZC3WYr2Hnxos/NrRQTxC9dMjMfGe3dpB24IS11I2T3wlFtsRmpxNSjNODxsThF3Yi50Q0fDTXjwVXReVpEABDgGHy8rP3krVKGbZN2ENmJ25Lf80ElotzDZh2juB2mu5lslMw5u6q3QFWkCsxziRC8OEQtTMEuFVJZpnlibRW0xM0GZr1r4i2DZx3Bag0w+x01yMoF8cFV3X4NE93Y7KsbEcwluLVpztEtzQuTTomrz3FakAv6et2qjt0hHhtuwdVATz3natEu+VYjPRJuyLUOrW3wtRUGo0SF+h0wVe4A8xD6UADQm+4FAhfQ1uDdLdENca4Rc+GMX02wmxsfTFE2+c2ZrNlGXUFeStE+bdCWv5CijBCX7o2i4G2/B9E+noJrQKShB23YN4UGWLwFuh4xYwDBZw2LYA5BQcDc5N5NKHAg6BC+PLvY+x1AvR1Lsm5dX/DakF/QjQuRWTkArnTeIoseWtW9ZTtcyLkt4dx9aE7BKZAOM+wuaY6C1nqubwArjru9FYYQHEMOc87hDXYAGKDQ2EPRW4gAvZ2Ap+3hCAnnbMYN3O+ZtSXmy+WaiNrhUiPsOnndrmHWlvs7QcLSfs3ekt8ThQknRDUkwme1BOfhWsPgzEQOcPEeuzXgp6LhXaeOvcgAu7zhC4wMoPB+wi3DhL3hKwPO+sUu9NwamRbsznjdoqMZlnLelrzelsDRN0GBfCO7zR0+1VMQwQD/HE8BDDcOejXOtSYX3Ut43tvhDvrnX6DhiErhCbPeyFtgrF3jzHfhWYEOkEbxLoTdac/6ALOmSPJw6nBq/WNBGJvgUXWALOqwVCNrkVER/xDyEMthANPH3uUUEB27iNARAJfw7vwybZpMZ7Ia8SEUvlA8F7m7DyVcHvqt3H5s0JnODlKzHwKy63Oo+qB+8S9kPhbmGHoi4Q6sJZW8EDw6D3em/nSk/Y1zAVAeD0bRj1DrGjVC/vvttCWZ8ScJhlDn8QKVwiXM8UIt4JfJ0TZm/2qK3pZnbMyh6wZL72iHmvdU8W9YSH/G0iuIYVPPD6sE/xBb7TFhD4UsGG2Cf1DREAUKl1is/UNtUTxRb5kr9CY8noWEHMY/8TZF32nm9mHz7RMZvzsW3m4zIXd8xx39RR2P9eFa+/ArHvEDtu8bbf9Li/fbvf2OY34adL8sHPE0u5I9rNEBRnSZvwCEAvFZefCmQPEJw6dZrE6d9BhAkVLmTY0OGkS5MkQpzk0KJDPhk18rl4cGPGjiFFjlSYSdDJk49IrmTZ0uXLhCj5CHqEaeVMmYJG1bQJ0+dPkiuEDh05zIKFaBZsGQLa1KlCFFFRUEDxQCQ3UllDhSL11OtXsE5Rohz5yOzZTGG9ZmL7iG3alZvOmpX7SO4mtXlXTiI4sJNer684CRz8CrBFThMnGmz6EWRHx4dhjiUr2fLhS5QFsdyEkzKmSawuj0boZIXpFTyKWriG1NY10qODRJ2NYmT/gKyktnaN3dt3R80jaZ4VBPe3yLdmjZOcS/eRoE2ZzLo6npdvp1QDq5MUTJiT4d8RJYp3ymfSRgAhI293+BylSvbxhaOctJmlIEyeBf2iOZPPL/m8uuK0064YqRnWkGItwK9SiCSIICKxSiTctOKKQQwBC06k5orLcCHlpMsklJZQUQ4TTGqya0WaPoSpr+z+clGhVzrxjjHfBhNvosbO20i9j2acyT37ZsxQEJzqK5IkVgSZ5Dn9xuIDGyNbukIBJww88KikLGCqSphSeOCBDkiqkKutwFTTpQ1D6nA5F0NJTrqXNoFOxRTtlIumFte8iK8YU1mTsE4EA+83xcbr/zFIyBj98L2T/JQPFPeGfAmUITUD5RRQTgKFGkm/4uGo1qLJJtSWBFiJgtzQRPXVhtoEzqzh4HQxRBFfWgUTk07axM4V7RyLOlj/mSS7GNfs7rvvtoNoR45+Ms9Ri9bLUBVZi43tJExkeqmX50Dplj9PBem0225B1dalbIgh1ct1wQqgFa10i7dYz2Yqi1bl1AxGOrdyhekT6O7c82AUn9sElVePxa6TWJRl1tDtgBmvEz4uuURaHzUC8scP+SAy0ntJ689XPnp66Tl08TP35Ukw6RSUSUApWSQeiGntmqSyiSaaa9wt9WdoogHmZ2CAKYUaaJIGBppfqJE6alCwAf/ll2c+CZVVenXLqpWuvd5qK7bkHNGtgNMWsbnnbgZLv2jd5NetNZVDGz6fAHZ5LIUx2QRF/FaR1GG/1jxm4ma3i2jHjX26xNpqqWVQsyXdPgxJKYECNmZQOm8ZxV9kplldyxca9ZqdFYymFGBuUfppp50GYHZgOrfd89t/YeWXXzb5Be/YdABBBzPDJiUT3eQ0e867+eVzZMpTqrz0l/yrTG7ibHURlbXZwguoVc4SFk+/u5WrPkwYBpNwiJXtjuLtOFl8Ihmr/yi9RkE+kjLgqc9LWCTRyikss5PMXIYimf1CXCjahf8O4olhpM4C0LAFNCZ4C1vcohQbLAUnSgH/AFAAgxq3IyEJe3e1zvEueMPTgQ7MMBJW5cZCyntL99g2l+flkE8n658Db4I5JO3rOf2qm4ik8wnt6YomwkIXAv9WQG5VKUYDiZiaDMWs+lWHE5iISGIukUWWOKYi+fNYyKDnQ8DQCiXdego2QicyEoquhI+YB/VW4ItstIZLFayg62zBOkAmLYQlNGEJFahA0YzGDC1cQxlaCAKRoGBeYAvb2JaXHLTgUHqagV6f0BjGzIlkOLWSFNpE5CGvfOITftNT+aDjxPJ9L0MxikX7rPg+TtRCPpdIDEQIAhPHxC1yGhljhqL0ScDoJ0WNa6P58CNHcf0NEwrsFjBKl8cE/5VqgtCgIDBs8TrWCbJ2hEQh756BtWek8xnfIJFeFrnIFuogERKoQSsYIAEdrCGej2zImB5Um6hQQKACDUAAuMENXCTUeMm7JMA6GURkroQywrzIENEiqfDdbThhccUnOvMrdLXybwWTZYAgdtIqgukVK52YfMYzPxyFkZiPuQjkJqefiOYlFdxy5vSaIg9MsIIPI5SjzKA5Tbc5wSgSjEbRurnB2CXtg6AAwAitSk7eXY0V1OihXhi5BgkwwJGLFEkHpkKBAKA1ALhAKC4oKTayMe+G0ouSJ3MKnFCGJCUXlZTZ0EKnvBDMLtB5ImH99iRMaMOkqYhFLVNaJZYy6/8YAfriswpiv4ycp5jDLOORcKKvu4YFWwWciZ30Yq4Fiku1oFgGJgDAxU3UMUAnoO0JWkIJHlxjGEDjEtGaaoGkAUB2TqNGVVN4QlZ86ri86ypghLcGfRJvJQYF2wwb2pYaNu+G7ulkc0OrkImW5Xl0C1UomiMdQajvf0j6lVxiiUDoyCcVNXKs4a6YOJda9pctEePHOouhY34XLGv0la8AY1TeGZWE1KiZbLdT29pmKKi8409vWmiG4e2PbwK+SHhFmcMkVkm7aNPa5ZpYPhT/arO/YWxjdfFYIx3uioeKjxefNRj+dgwi/qUpgCkzYCCeJEpwE5n1NJMv/2hEyJ//pahl7NItbm30MDVDITk792DaUiEBEWbQhHnnUw7HhH9hdoiH3TTeEFdpbWb5xCMIVmLA7OIkk9CTNO2sMt9kp7GNNdzEVoohiNh4xSJ5XGZ7jBHJBSjITfZJTqw3ZCEjKZiRBuKjJx1p7+ZFegpzGZz1Qg1oJo0aSWsaNNIhGQjXVssJIMMKLjGKW5BhDAmgQqq5HBtg+O6QZC7zmHm9EDPj1aJprhIS53IX6QhOMqvcRMye+KtnHqfFe3bfSuEXoF56EQCDzp+PuL0Qmyo6X16pNObqau6cpFtK6Jb0o8vdm1MIC4qZuItlfjGJESoXNJ3jhKB8o+ot0xZDyc2q/yp+zRDoZZrDcJvPsLXVZrb9yi7qBQzBQIPihE3CGXmeNoxnZG2QZ4gvGhtPTIGk2UM3JNzycfdTKGdkR6Pb3XCTebszEmRJl/QyoNiTM+WN50/7bZzLGOQkgBGOf6c6Q+Ws8MHB62uneySvwh6OwtXkZqwbsc2/sswuoI1AsPeiNx33uIuOAfI/Z4iXimGmSAx9nrYjWn8+tt5TPkvpidYc5kfm+835TrLe8Mm9flvR1SwTDgWLK9+gMPllIPwhUCR3d2DmNSejjpCWi3KIUl5XdKLjUbrQ2y6b8HRedsEHaYIdRbHZM7XVdHaQ6zJDNeoiRIBe042ch8eMjs/def/PJphn5KGRvvsmXy4lJgf/OK0cbCvRVXq1YONYACB650Zts8sfRIEppDyZLZ/9zOuVu3btvHSic2w3nyQTFFcLT2Gp88O0/hWysG/sXdTLgux4JB+ZBP5wP3cG2QiIagqZ4wNsiZ7o0SQE9Iyee7ntML8VMZ/Ro5RfgD6wQKFlGKFLoCrSiTr+SCHsy76Ey75/MLLfA7YcsjqMUqUloguPqosVaSe1cAXV85tUaKDLaD0+U5NiQDvZ+xAbS4wTVIhpKcLdc5F2G0CgKLdRIA0THMLLSL+7ILwpbD69CIPXGqfOAYbG47UPvJruC7PvuzyYa7jnoR6sIz3SswvRA73/vwkFYgELFJGmXjgWHJSMjqM/HkQ7pHORTiA5ivC///O2IwyZRJuM8LMM4lPC7XiyYBm99lIFaBMEZQOLDcw3Thg1a4q6KlMgEixBqIu6m8MJMxwiBzoiiUtFNQwW0rPAn0gF1duFbwsLHdRDMOlB2HuFH/yQ+VkckdCxlGOIleu9JHS5RJSMJZM0DHkGKtyPu0hFmtg6+AOKT6GG6sMEaogGMFmBaxAGWyAabnoaDgqnUoAG4TpHEQKFDSyhaeqWTgxDDDkTsomrNZurzSOOzRulUHS6UQQ8vNohFdSWNUQiNfwVj3pBu3hB9vuJv4HFZ7OM1pMFW6ySYqgFkGuH/yqBqcvqCGCcxYQYRvZIMtBqjEcLSLuTuQ/xOoNRRVV6hN6pwF9RhW14iky0HWAAgFKoEgjiraTopj9qGlKLqnOkKuUCIdWaJtvZvsgLQTDBCksakRrCrkxyqA55uboyyZwywfkAyIhaBdITBFVqxbA8SINsRcUCCr/phfeSDFmIhbaUyDUphmOoBdibLCPpP/HgpS4kQmAsRGMqRrE4xsOYOSNBBTtByAp0Q99pL97ZhDpoCqIbodopBQBxESdol6QgGj7yJnByGtYRrtrRQkOqsqX8Mj+xpHmMynrcLudBwB8jQa3UvE0LLa9cRbE0yK0Ly024Q5hwNhSBxbPUi//GaktemEgjqUi6XClfWB9OyJgtijth1LEmJKNg7L1DrB5zq05NozQojA9UkEZIXMzGJL1MwARmBIpUyDdR+5IMWYF30cxugoZAkqqbFCcrI83S3JTKBBNc4AqovK7V3C4dcs2U+ETBxIiRwUq3WQWPMkyPorcXLEs1zIRKdAlMUEtMSIW/ib+3hEserAWLtMhiABOlGQ9FsQiJMLTu7Bjt3A6RbFGJqrTu9IohW0GYzIRPyJpf6R3GZMZNmEmYYLBxukkXcc8EaapSqCBuCsfYQUcQKgWqAqF8UzAq5bmr2c8q4YaxGRGz8Ssbokp8JA4CVT8DRbf920cB+86yjND/VgxPVwwJDIVFteRNWpRIWSjOuARREJ1LNflDivgibXyIadEs9fCRx3GRj/DHRjvQ0wo2STFMXXuGxWyvHW3MOGSJUbu+m3QwBkEQPSqapvqjzmzSm+wcozRVQto+pXzTDGmFpwyY7LLH8eKb4bOoTwTFunM7NA0zBpXQVmwvj/KbSyWJOczQDRVOO/XQW9RTEB1RNQHEE22Ix0G57hxUGD2OYApMc5vOyziyddmGX9kFSaXUxZRUv+lAkthCTf0QQzgKpLAgEnTVLSW2Wz3JXFWPXeW1VdgFsizIhAzXlvA6WNTQSQhOWizOOzXOGUFOPXVWMJGfieiih6BWj8S8/yKcUXgTQHgUjpnDuSVTsuwUwJFslKnTFnDwnU/ABsbc0WeoGqYkiUwdJPYMkGEQhj2aWaeT17Jh1Xq1V8zZyveoV2VgUzY1SGVgiQxVS2nSi4SVBQ9QWBepgHZgVocFEz+liFnUrBSt1osVkuwMzFHsx0UMJrK9Htx7zZsxh1CowGUQT985p154zJUAhl+oneLaRAZpV6UALtjIPp0tm54dTDPV1Q0L3F71mxf0qF7YhGlYCWf4G6W9Pa+w06f1gDylWj+JBhPdQDBCiETJmJP7LwALW7D1O7LV2LxbtxmlHP/Zhk9wBV17yU2ghtldCXlYmnRE1/jYWyUVhnhtqP/ATabB1at8/UToeEGva69h7QhYXKXVy4uErdw1kVrkLIbl9BOs3RGG+FyuBcAAtDmxwLtEPd1JY9SnQ1v/2QQ3klQKixrdvYgQSpplgE72MAoFAQYLiFeofIvg1QvzBbfivVXdTF5M+ISjHYlpMNZN2DjoLU4PeOC4rN5aqIBQmYRS2NztVYxrLUGNOFQXOQWQxVi8Kl8l27sjS1R8Ldn0pYbGpLBPkAeSOATJHLUMyUzgSgoSPJ6o7N+8+F8iDOBbDR+vS95jReBO8BvASFhegGAeLIaKrEgKlpRXIDnxEMSDSBTdo04Rjo3xNcYXLV92G9tRJF709aGT3YWo0TX/ybWIMOAEEfqQa+AjCsrf7NPhGuJhtfDhjwTiW8WB9toFxJ3G7YjeJZ7eJ4ZiVAk0yzI5rSVU6qzY6rA5RgxJjQWSMvYhSKAGr+uddPK3e4mGCipHW6Djy7Nj6ZBBPKbRnJgPz1DQyyM9Dd2EVOBZ31BiJgYTf3Bi6y2GKK5gKs5izx1UifDLkAHf7xXAFB6L0KJdClNfuY2XUfYm+STlqDNl8kplVb5XyODjni3ITegFWo6NO/WAJV6CNcllJ34HX/CHV1mcLuKlhEC5aOWsDcbWEt7iw3gEFP5HZQ4trDEnWS6ZaC5H/M1hqaRXbAYlba6pIHPly9OGX1ncIpYP/6d9YA/AgHPWZV/gZVjZNpiKZ/PQLCtWuetkOZD0DSjxuzO75E+Sh3TSNUFGFeAK5YKu44NO6Gz+WV1tZZxOCNJb3CFmEIv2gCXAaDWpgF32hQro5VCRH0HDkYkwNGI2RO+tjhKeZIZg3e/ahGfoBd7BhvdFFaWRz6ShZqfz0mvuaWkZ3m3mabX+h3395t2Mad8Y6osmiQaAAREQgQaIDXTe6GLAg2KpGRv7wysW5u4VXWMqad8gzI7oJAFThmdgZhWKFyR9HVsgQfNqi7R+a+xc6GrBOc/+hyHezTX+jaEuapLQaxHQawQgjVxG6grwBcEe7PwjOY/QWg/+P8XGEP9Jxme9SGkhI+N+/q5nQOOX/GQNwmzNNiWzGG2fYLKNPQi8m+6e5de5ptPtsGujDom8hgHwhgEagG0nnu0KqG1YETRfDGmtLdSqHt33bmyU5GezvSv1dSM0vhf5DKTMzr7NvhvoBia27rBKc+jsI70h3oUDjo+hxoDu7ogGqAQamHAJh+3Zjm30hpUd+VOtNQ/6BTcWBRPH4FYXlbThfmxHzalfcAVqOG5qgOF14SCl2aDm7p4A/+ybA9r6xumOKu3lPQ6LxgDVFokGKHIj7+vR8AelNu8Mh5WrjWqUi4iQYFHgjo1R2Gf2WMSNhZ4qjxfXxQZs+ARqCOcqcR2oonH//57KG3cJkbTuvBttVyhtxg2QIHfwkUAAPL+AC0AAJL8Mf1hqQG/yV6EZ/EtRzdrtajHULnfCjyBxbGW3ZD7x7/ryFdfkeLkFdGSd5rYbhF5zAFYyVi5utY5zH6fzcrZzkUCAC/gCVt9zCwf0CpiBe7kETMA/xIbkEgxxET/p0UhGrF4IANrxiPry417xSxeuD1KaTecrTyeJNg91YcfmOP+E5G1c+SiCIkgDbY+CkIiACLiBbz8DcAf3CLgMPPjzCvjzKigZQZNn83DvzFoTx7DuRn20SFfUnOoobCj2H2/qzwQkEgRTem92XM3xD2Npad+FIf6ECt0OEnj4vRaB/9deCG+v+Ir/AjbwhzP4Aou3eL3QBDw495DXBHbncHefcsa+qZRXRBP/9R9G+E9yhS8XcyDVls/ESZwMeLYheGcHTOKO9lRWJYXfTWuPj6J2cAwwgZG4AFGIAI4XhQsod3NfcnW/mfmRZ2BO9Phe7JW/nPmuqGzJKVQI8zB/BnCIl5ufnZzMPjA18Bt/9oMX9Z7ucWon88tY4otG9ZDIc6jHc9LAg6X2BwioAD2wekBEbPUotHqOD5vr7dFwbLCHeTQ67n0P83tJ+5z371F6bp7faYO/99PGY34dfbu3jFPXewhvADzn8z63DMBPdwjwh8K/GYjF+g/ny4y4cklpfP+XR8aWr9awjyjKfwbLR/ubnJ3Mvzz02qvO9/yR7bAAU2sc2IVp9zoGwXukH4kGmPDtn/C/T/cKiP3ZvxkLNvSQhvfFt05eF157R3HJ96GUTSfYvXyqugS11/nxa358BXXCBQhBAh/9K2jwIMKEChcybOjwIcSIEv+t2uXq0y6LEzdyNMjLgwcMISXSgFHppMmOKg3iqVDBHwQIelbSrAkR1CQ+OSddygmRD9CgNodyDGqUD9GOgvgsZSrwp8CogpJSrcrwIrZPz1w9s+o1IidgAC4BAADsK9q0CDMJejRwqtq4cuMyDQr3p9OBc/fyPWjx08VdyvpC9PAxJAaJlUT/wGDMmHDLCjH9zSQsdxJmnTon4TVqeehRoYSj2n36UOrSu59X/wv8idqzwaypAgNFduzZ2boXZnrktq3q3cIJHw3eECjq4co3rnJ1MfDygoZBYkgcsbGI7Nkh+5MMszJEGTKiMyyVeSfSh0c5k4c4yigooHwF1kXONOJv+sbbW12FCtUu2/xCDX8dmTWWbbkV+BlbUbm1IIRE1XdfRHlFFWGBLaDSnHObyLbcdCEtIZEIJJhoogiQQdAdHpSFJx6MGJ6nGUQ5AeUThgldEhpycvHxiFN2pQdRfhfmSNU2qwCW1S5HPnSLbaDg5uReDQ40JJVZMjThfgtZaJqWuzln/5FzrrQnC0geLOEBiSeiSNgMeOAxwwxVqPEQjG+8EWOEM2K5pY06hVlQU6GlRVpT9P3pkH5GDtqRKxVx9ck2j+oo5SUJWvpVkb5taimXEqEG5qcLxdBCCzFQ1UKkZWa0SnshqkliFLXWSgJhTziwxRZPPIFEQjAK+wYQg8CBz57CitceZjux55Bmog3Ko7RJKVpfaosyGiSpyy0QQxcLvIDkKklSikqlpf7DiW2XuKugukPl5xZB8WYZakSjdqmuEMa0wAEH+SwwlDHTRMqhRmemOWtEIhQRxcNF4NqXA2pYrMauDuVpBBDC5oiZRNHKB2pohQ4FSqHZJqoto/r92P9eGxx0Ee4CIwwFSXPlAobKJ/YCgClZmNhL1LzdDh2hfRRCldzRBqEKcMBYCFHASi2swiHWu7TAnwdopikRCUUUkUYRkkQB2Usu4QFeQ8qO17TILFM5IbUdJX1t0iq5hRyQ7cUAbrgutDHCHlz40JHV4yS5DWCMm2NvKVH+zIe7ZEl5OeXughJflJsvdV5qqKEsFVOYCGI6f0U6qC/rqNWVLd14y970RELum5CFSjfNwQb/uhGDEELMMfgLcUTkhjHIrKK8Mjm7sgsOBX7kNZsRhW2C2Cac3ZceMEm2dnh66kn7P3GXSi2PKhf0OrUpI5eaSogyVW90XQC/wAKDE87/BBM5SEEARDiQDOWN42rg4NAnomevTCGID5sDAE/cxRMEba6CoBjFjjJ3Cgdi8BSX8KAHSxaVU5xiFPRbTqf2NqovtW6FuXuf++BHPvUUSm64+9IM/7EBgMVAanNwQSEK8YIXsOAFXvBCIQrggjkIIQb5QJUxomiM5V0Nawrkjyx48ZGPSCQKJvjiF4uAtu6siG0MwYcRDqAFI5AvUCP7lJDQVxxFwa5kRlnKSkgnw/bMTAhtKMAIWMAEAhBACkx4wRQKUIA2uGABQugCwDYQRXXQopJVPNgzjHE0nCAoU5XTnCfb1TlPXkIQOzol5SgniFEI4hSmFMToWhmV0dlw/zWqayEuVcY+XfKSfbXMoaEq9DqjDc0FAQOeEFwAyBeoIA45UMELkuiC4GHBDRxAlSSTpzzlHWxrC5IFOKfTRTCGcYwVwINMIHIAOLATCVqgXSqrBUf0xTCOduTSLxsCpNDRp0AvAOQIptA/HxCADgTNAQumMIJFtgF/j7RfDKDGuxZsQB0boAUWaGcbAGDiZ5+MEikrt7lSnvKUGMSgKlm5QVeizJUubaVT2nPLXOpxlzbtpS7rkkNoHUVUw7xdvBbwQ2V6wRIqyEIWuJCFHFgCiS5YYvBi4AZr/guKyfMmhMA5vepBxIsmwAAY0eaSFVUBIr46K7Dg5sajJU2Otv+7o30SVRPX9TM6Q7jrXX3ggyEQlA4CCAIfOhAIOhBgr4XMQQ6YUESFLpShC5gm/mbIQHeNhbKfJAtmKzujDJaUKZNYikplOTpWMsWEoJApvWiKKNK8kI6slV9c80m+YC4tLzMkAm6JwIU4IDWpTOgDUPrABKUiNQ4qUIElLGHEEUjzqS7wQo7AKV2uPqQIGLgDWDGgCbG+JJ0P4VWveAXPtcINb25Nnzzj91PdLYgJU9hDDgprUAIcMpGLxN/MnAg1NGygv8bYQD52ujkHkpRymADFgSeBYEwwOFMVzNQoLGhKPryHlbBcbVRKicfUrZCurhvmelmbF9tda6c89Yz/MJlm4n+wwAtE5K0UlMpUJCoRqkLAglStGbA5OCmLWqWuQyTx1eqY4A7cfckMIOKAJW9hyeNFMflcCdfz7rEmIK4PlRTrv0IecqGNnBnA+sE7SVqSFv5aMZrTDM+eplgqav6HcVmggt0i1wtKpGY+rtmC/7Ygo1mSbjglMuTqXPfIFTDjQpasaAc8Ob0zdOuGqeIyboXpsCzYw0IbOrN85HnMA/RXgN8s6lGTDMrqweGoHZFUhNJ4mkwU3qYAzQtZCBoDS1gCoQnTHZe4JMkPudjFaOdG2ZKaJnQMEnsrnQNMF8Ch9uuC1Iot7WnPjc14UTG1jyaLWEiXF4K+tUiq/0MYCPC61xD5wQ/UgO47qdXU2SZKHRO1iXfTu972VgttTwNDoN6bSrH4t3QFXY81gRsyxSg3HiCiBz2gm+GNfmO/7TZibgkt4ha/OMZP7Ggv7TvjjwI4t2kdEROoaeC41rUvEA6RKiy85Q8ndsbpAySberzmNr94DYm9MmLeHEL/5ja3Be2BeoDk1ro+eMolo/A6VYHljcZRzxPisqm3JepWvzqp881T9WE9QqkAucghcgfDaJFhfHFJ0s8JETrFqQq+ZquNoH71n6qM512/O97jRbeQ7TLvBfo6yCWCAVnUQ4u8GFFf/FEMX6TcFwl/CARmAIE5vX1ow+46t7ClU/+/c77zmyoO37nueeUAHuCCz6Lhvd2XCix+8WqHPDpj8ni2WtvqxQnSCUev+91DSOsNOTa/eT+X0gc9IoM/huGBLBfWt94XEICIZGISkzW7++ZzjKnws6/95eTcnlSO9PYtEwvib5sXAAc00HmB/FhoURbHUH5cKlCLYizeF/VvfAXSTm5ek5vc1N94zXFJ8IUfARagV9DNeaUP+BngXPycA27bMXDbMQDaBPICO2gV6qne2c1fLfhCBzIeCOZfuYngCP4fxFmdXDGgCq4gWiDgvq3W7cEcC9aEA9YgOAFdNQCaVs3arLHf0RXD/AHh/TFeuaVd2lXA/8ndDC4hE7L/YFsl4B3VVROixbbVIMgBnQ7KWha9gnX0hQdyoBDSHwginQg2XspVnr343hSuIRvuXj310k2dYBsmhRX+WznEwh2Ww7aB0wVe4ATmYNglHgcyHhCCoP0ZIiEe4vNRH8jMoSM+IufFUM7tHJZBolXIAvHFQjU8YBXu4c+xgwZaBh4U4gd+YCIaYv7VwiI+mgxaoiu+IizGoizOIi3Woi3eIi7moi7uIi/2oi/+IjAGozAOIzEWozEeIzImozIuIzM2ozM+IzRGozROIzVWozVeIzZmozZuIzd2ozd+IziGoziOIzmWozmeIzqmozquIzu2ozu+IzzGozzOIz3Woz3eoiM+5qM+7iM/9qM//iNABqRADiRBFqRBHiRCJqRCLiRDNqRDPiRERqRETiRFVqRFXiRGZqRGbiRHdqRHfiRIhqRIjiRJlqRJniRKpqRKriRLtqRLviRMxqRMziRN1qRN3iRO5qRO7iRP9qRP/iRQBqVQDiVRFqVRHiVSJqVSLiVTNqVTPiVURqVUTiVVVqVVXiVWZqVWbiVXdqVXfiVY7mNAAAAh+QQJBAD/ACwAAAAA1APcAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi/8fT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYoYmGPCGIiH4LwwccjKp4oyCMjzvTBB7lAocopjzyiiok7PoLjKbm4NUmLKhZpZJEx0pZJiS+aaCKTTkbpopGCJFmSBrnkkokqXOqoCiusqKIjK4+Q6aMgODp5JhRhHenmm3CqaGVFK/IBWShPlgillHxKiaKfJgKl4iQp8jHkkINOoqihiw6JiUuHKiqppIYyOmmjjNq5Eyhxuplioac4lUQuNGZZI5c2iikmK4KAycopT7L/iuaep/Axio9ZFVpokbt2SqWtfFwyyqBAYTLJJcEmqyKyRSLrbLKTjHIJoUXWOqyKwzJrJKLAovjrtytWidKeJ+b4Z7h/8untp1M6mS6KLHp7bq+8yntiUEcy9kgmTebYb58Au/tpulFqqlOlg1bKbcKRHmooS4taeimmDi9sJCg51Wqxr/UqlYcGM4ZsKpckr1rmyazKCiW5un461Ykcx/ymtsvylOwlOEurc87C9iwtzz8/+yy32QJbNLKcDqz0kSmOIm5JfRLMLpTpshy11C4WDGjBRMr5E9OJ8euvv082GTDA667bLh+b4MTwkRNPKrGiLL3d8KUK5x3pw27L/8x0i6MYxc/HGhQeMjOm5lIyl66SSeaPK58tMIxN0SvzwH5TeS1OkwCAc7BCg37z6KH3PO3QoxtZK6es/40tsLW6W5K5Vk/NLsAlykulwGlnTm+hPv192JIv5mh8lGRLfnWLa8trU6YVTyyxpZaqFP3dcm8MN5I2XZu58ENlUIIdSSRROMgiJ14yFDkuqafxZKrZKtotP32U7jHXv+un3mf+PM6fKx3pQCdAZx3rWBwrGuZ85SRQ2C8ktQsY1iT4N63hj2ML9BpPepWiwoTifXkynp76JMISMglrzLOX82iiN4pR727Vsx724pY9veWNbyz8XgWHsg9+8KME5TtfyP9KpTgbZUJxqsgSFKCgxCWyKkeyuh3B3nUijBWFWnDCnBYRNSQTDYlZhHLa6/qnuUnUhIAE9Jkad7aznAWtjZ8r2rIEcYnW2ZEPSUtbn6CmvD76UXJ6DCTvmBe8XxHGhMUr3tgoVxEtwqxrHZSJCxuVPUpRymApmST0sLcthHnyeTr8llAMsI8M/JB8GiDcEGeUEVmp6IRZK1SJhiJG19kLI5OoVQIfJUkA8gEAlTqdopxFTF8CsI0/A90oltkseeEMTXjkwynqKE1bgep2DwSJnyJIQWx6s37MExgHj5S7fPVknIJZkvsUOcJMgGQT4IJZNiFWMWd8LXsUsSEmY/L/JoZca1c+2YFA/2EAJfSwBEAMogaSIBJ1ifNeX7sg2D6ivW4dSyYA/Nw5+cRHKdmMgz6xXGDcJ8J1MnIkWuSViXgJKUwBBYZ00tsZjxQ4htRrnzgRqE5N4QclmBKIduBHStr1zZ68qWkaHAkrvDesonkOJmnE6U0c6FGScNSoHcNqVv3yQUGQtERLUok8A/kSir30hRZhGLJyaM6F1GueNNHpAAzQA4GawgB+CIEfDNASVdRJa7CSKk0yaCSxZqupwAKFGV2S0bV+tGAdfVIhCanVwvolE1/dF4tcgolwTQlFLVXYSym5WIoMU2GlhSpNG+Imneh0BwPogB9MIdcB/8hkXu4CLU4IG6iWOHCZpzjaJRib0dTmJGkump2U3PnRFp1UJ+jECghAYAbqggSziAwFP3uHIpbKULT3bNhFFIYs47rETTV1K5V68tod5IR3sgPl/lq03WUtS7Etaax5b5I7E10Crh3hE3N3srTJWtYq1J1udT+yL+wab8Ax6WLvWmLWnxwwhhZBIKVu21qbbnUnOt2JLsk6WInShBoq4pSyWvJLX24UVk6aHZNmaVTMhdSQVjFDdSXAgDLoGAQcsQYpSBEKIoeiyDc51wpVIlMLTwyX5Y0W3VTbVoXgmC+BLTCH5wvg8xoJaSzRb08wgaYoKbdswbPxOTvslOkmuP+6ZiiDBFIgiBpIwApvVjCQJxIJblCAGwHgRisC/d50EarLIWmyT+KWkWBxcbhUPrCVP7yXLHtrszD5xTgFGxNr2RfRICkupHcSrKqOhGw03mDLDMy9qujYDFYoA3XNwBHM2trWFaHdIhP5oosIQsIp8q5JUMvpmzAaI5zY25S9XOWEvBUwulKbaulVkYUhdljQBPVCOHUtAIzCiigR9ZipKggHnrl4Bu6tzdhcFQVXd88aQUUoMjHvD0L4Ifz6E7lGSLYVUYTMStZ2Ryrsk2RbUiP2HeZ+UYJe1lKaKqUSU0nDuhFW6XHUK/FUsRPSWSNhW0W1OoXI5SXsh3T2WsP/AvdJWny6nvyCFQSTcTs3SllVrzcrCe7IvG+t3YgQL3nJ49OenusQeJ6o45k8uIUNLqmNRPlQL2m4h4lEFQ1AYUmu8tGXunQKMBXvS40m8UpEGpFoWw69I07qQxA4LGAuPCSX8FzLP0pVc5OkhILoOalVmmZbEmlp8vwdr8NFEXvz/MhHHrLiW8H4ADje8Yt4AEqOzHOJKNJsZfNjqh/CB4AjHSVP/gnTm66R037x7SXp59S9FRUakSxVW0KZCUsEY3RbBPDpZfh8JfJPjSMWTrpEPUJAEXdH82EZoJc7AIRvEAAAs/iREuaxFDstS+qt3AC/oyB+gSIHUlXmTZKI/wj/9UcLZjDaKtz4TCTaNY2ncIJSy1FEDH9rzCI+8UUmBeP373gKUAAFkXAS9DaAmAURYiM/eYJ5faR+BqEinQVwoHcpQNEJoYdwlIRxTMZuzvZwSfEBTEQyDaYqsjd+AcMKjfR3ajdsIPUQm4BtHUdTu8N+SSMRnEJMABBuyoeBC+E5oLB8jYUzzud8wQIAoFCEdXQJ05SEoBA7gnRN5faEMpZIBqiA5VeFudUyKdg3Z5dFgqQ2AbN5DPFg9Wd/96d4+rd/uIALgfZ/JkEKj1BvFOcQxNMvVsMiLEKFewQRnYU5JRcSFdgTozcJnDBw1YcoLGZtDbF7TMEMH5BESP8EgiDIbyQoQRSBfrp1EmTnEAC3Li/4J2LkJLUEcl+GRxBBfMYHAH0Yaj0Yd8xHEMT3g7AIQMQ3i8nybd/2X7hIR0rTJ0XIgBjxVQInEJOIh1YIX72jZTV2OU3ohV/4EO3TYGN4f/l3hvvXCtwAaBQQACZBbzt3ZM6YgEDXNgnBTayQigjxa2pWEn/IExQogRxBMctXN3DjcFSnFFjSiI+4OGNCJl/iOMhDQmZmeSgYjGH3d2vHLvgDCub4D+xHR6T4EEVDfDdoEnHHgzqYED4Yi7E4iwEULKDwbdFkRyZSe1HiQHyADVBTQvhGfixZjMYIePPyNY/UfioEk4D3TcH/+IzqNIbciHiL1wq40HjXiAIlYQ07h10QMTa8VnZUFGMsKAiduHLuuGiB6BFzc5Gpp4EIcWVHUSquB4Kp4jiqAAWsgESPAAU4wgc30kcTMZME6WsLBBEBV2oRwW3NZCulsHZy55EnAYRxh5UH8YrFd4QbiQlGSHx0xDpIiIS2+JGOqUflNoMyZzx6txAkVTzw4pKA5CkQFVHn537h9IV52BAkhV31J41myHhnyA1pSAEmgXi2VpludTxMcm8PEUt/AhH00oqNNpU9IYiTApgVEYg4xHBaeRBcSRRJMCNKpDiP+AikEhF3mHlTYpsLEYrAk3paxHnoSHL5BHPOEjty/3k6OIN8JSF3f/kQf4kzgplRikVmsJhMmDCfUElm9tlAsJKfuqQKJ2FCspkQJnV53KQ8ajNBj0QU8SJL+/NITyI1r0SHMecQz9hgpBAMrSBvQ9YK1rCh1+h4gOZn/heA20iA/wmgtIlpFbGH0xlJDbGHkiYS67gTnECBBtcJFDUtjDItGdhsW8mBQJEHXpklr8cMGKEm8feW4uSLRZo1KqcQUPlr3hIqvgaSKjaRDRFArGgSAFAKf5mXDgEMnuN8xDcVJoRv40d0i3FVDaGTj4AKPQGHBSihJKgRfSKOiXgkC7kRMaoTyUaBfgoSeMObHKF66lWPRJEHzMAMUEBEi/9KpBthh8gDLxHxdywqEvOipA7YeZd4EdOyOqyjnscCQINIEp5TCs43qlcapnHXpE6hWcZjposUGWrKEOqkWaTAE0ZGhnIoNvvylguxourGEGSmNOrom+woKX9KUdKTEoQ6aYYqFFZHCkJaRPzJYFGDps6GkL5qeVqjiR1XKKxKJ7r4X5gqd50jnBuxpVz6VA6xigDkpVGhCl8FqyIUGVWTk5plfzxhf7HpEOzUaxsxrANjpwvhDEWyh8U6KS/Vju0Id5eCrlZ5nA3oozyxnDXinKpAIyIBBZnZoJPaLiMxRb64NHkaEcCgi3hER5yHM52jpBZhqqYKAKjKEKYKQFv/OhUOtiS32hAfNH6yamphKIZuuhNwap0IUaYdMUXBOCWTULK4ZKw70Y7ICqOFeFErJ7EFMVFCAQXS6pysUKIfoS4uuzQuOxFUdJvSlrS4GE3q2VjAQKqlALMQOxBBKHfwChU5+wg7yxA9+2A/G5BrKrT7SoBGaxDBwE7YCpcuYo6bMFbB9msksac5IbWCaKN+GJzLRhLNuoG8MhRMxESnEiSYCCgQEViXZqnydJvR9hEq5i1vixCeoyjU11hwG7dc+hBBWJFzaxTyWqt7uxB96y9/65SB+4xDqxNwmrgFkVnKK65TQhCNG3AD84CVCqjGQno+0QkMOwmW64c4ir2a/4u1BCG+OPGVSXR1TNZfWXgQUkRfIYGMbkVtVmmKlUIQRJhGGimoFQGzW7q7/wCmunu3T2FrFOoQ9lavkDGrv/pgb7ivR1m4BeFVIgS2F2F0n0ItsXSFmtpZQxK5UKsTnVCjgjgSgaijWfll9Mh6QJEEY7k4K1F7KMIqVrY27NJQaeMQv6K/cpksvcg6xPdtRigIGemeJMG/pTCzCxGzFSnATlF/j9AKBpyv+zK8wQq8DEzBMmGU9eevJYTFtydOewgoaTOf69sR1wu+x5psakwSVYvGILG5PfqsPcEKqTKWmfAB8hhLEfwuVJQuqJtcrMW0oRZN01KEHHnINiuLAP/wCkUMs0f8EBYgs0HIxE3xwJkAxTzrqlOcwO7SvATBpl4ME0QWmxBMEIj7vtPblFLCwYUyCQR7uQr7EyE8y1ZLwpKbtOQrEMm5EzRydVd3RC4BeAIBTeiSpID7ERaswjY1Ja+sp6FKTceSmEfIkZhwhJ2DxCDhyHH7EJwgyc5HyUwxhpjMt1JcyoahwAoxoQ2sE7RgyXKKwB/xCYcmvSuFjvbZeU17Ek0by9nLCTPqzzpMEZxwCVUZsrnMkDyqE1uXRDryErD0WaGJQo8QrhuxNjj8WSFBi3V0LNVsmIZchNX8S5wAzh9hu7b7EHFbtyStFPyKWdbgEG5Yq+ZcGOj/PI6uGqc5QQo8N9P/gLTahEK8Yp9OC6jIGtAu8Qr+HMIzahKKYnAmbKkHrbU8wT4kcwpJBFXa+pKcSRLROzAX7SLN7HSGMotFWG7kmZ4sYdLb7BCm2s0wi7OEyw0GbJqb/Bh+4oxdvBM6fWueLIzj5woh4Qq/9ghkBk+OMtQk0QnXS4FAgdSzzAmMbBIDbXCcULYSsTEpXMY2sXU6gr4wAXNinDVEIqUUuaK+SEUUbYE1eCiCUArUIBOlYAsmDclHvKU3KxVwOG+4ANPQWNeOUdNHm9c6sQpjKIclxNONBJVhHWFF3dj+/M+RXRKXQKMKB9UJPbEvmhMf0Co6kiN4/xwToc07fe0R5DKy4jQSzvLaNxHbpXAL7f0Qr2DStx0VsDlvcs2zfI3cghGp9No+O0ELPDfeqECHy30Vt3wTzw3dKDGjpxMs1p3dyHndNrElYQIm+h2y5YRbANsS3doQm4DB1asV7O3et/AQwCDftjAV9R0K980Qe31rVLy0wq0TTozXj9C428oUmLC9QJHgSb3gB0TQmZu0FpPZls0SgrAqgrBELHSFOR62AqO65fIVsW0L7g0NDyHbJp3iuF2G2tgQL45rnHzMC1xSg0vAqitCn+AV3KsojC16Po7NI9EJLFt9ct6bEj6+eT4TJkPHR35qyjwT2sqd7pLaVVHltv+Q6A/h3rYLAFweFcFQZInX4gsR5vQW4zbutzvB1+Pd0+NX4FXR5tzbvT2B1EkN2TJ0Osn2xkW+epo9EyNYrW7R4Yk4NX+uFIme64/OELDA6HG7609BZMJOCpSuEDr9wPYKWe+s6TrR2/qtyb6dFZOQCn5K6jxxDD4e3SfxCnQe5Hc+Xq1eqK0GXSdzChcOFoOOtkCbFbpuAcCuEIlu0lguFYqXf67ZEK1AuOf+F3fNxWa+6aaZCb+7EJuAd8cr7Z1A7Qnf2KYO2dquz4W46hG7MEY+1WLyIrUSF1KE2FRjIr/AFbZgAe7u7lnu66UQDVNhhkN27y5OefoKGVOU6WD/xROU1z76zbxrrhUJT+3U7twJ/vAQj6z+q543VPE7sSOPUyZx0ZQQYXTpYuhRYQHREPLE8O4J8eu2O+9R0QqLFwwsvxCtAJuXDvPKnojjt+8pEQz5GoekeeMnqvMJH/c+/9xAbxKloHDT8u35VPSubtRDBUUbDhdOMqy62ZS3XhQin/hWjxAWwN6yjfJSoZqq+fUKEfaU541kT+bpfNw9kbcR8Ql0aDw5bxVxr/Bz7891T5FBPuQY0Um5x7n1uxM+MkJz0e/OqDYlggkmeBUjbwHDsPgHEQ2Nz96QHxVBuX/WQPkJYfn1FsqF8S6djrhonxITmgmj7++71qakH/cL//8TDY/6LbEMA306AGDt49VJRp8TXtcku6/xUqLDfXIr22cVFkAMxDAM9Q/JtgAM8Q4Q0f4NJFjQ4EGECRUuZNjQIK5WrSC2WuTwX6tQGTNttNjR40eQIUWONMhH0MmTHQU9erTyUSaSMT2yzPTyJUiWOXVuYinT50+FnVIJ7dQJ6FGFxzgtXfoK6cdJnS5NvTTJ6U8+WSdlveRwa9asT5GeEkS25SmxadWGRNkW5CaTbduyWlu34zViw/IO62jBFrRbtmxZsFt4IS7ErbjhQmERV0aNoQxPpnw0riA+j1SyXCkIZmWRNHOG5LxT9KNdoCcTLZpK9chXTGNfff3vEv8nqluB8tn6tWtDsCb51LbY9pRm4sljtjXJFpPcXyufC9qkXO0w7Nk7CoYmuJRA62oXLw6AK4jFVqQi5wrf/rVwlB1blv7sPuHpniBRndzE07/Olez7qSgCjRJQoVc6aYoT2l7DjZNJquIEE6x6A8sh4S48kCCUHiFrQxALkqs5kKLD5JHpOgOlLEEmwSZEkbIbhge+LPIrGsFuuQZGmQLgJgAfAzjPIVzUyyQUjnhUMib4SMSws5bqgxFJnZALKRP+HvFvE+pQ5GxJiwrsJBYw/5mNE104OUa5CCGcapIKedOQoeB4g5HFk6wsM7wTUeKDQpFW7Iw/lDABBZRHQKH/Zs+FaHS0RocskNQ7whj1iIIfKQAyEscgO5IUS0NdCL6UioPSMzDxk/KjVTDJpM/+pEOxy+dSE3Ug1ooqMzYGGWywtlKkmgQ3OGW6RE6uMKwzRCjkEuRW5UZ8VqRdBAGFlZZ+aek5QwXB5Fs+FoWWB3LJhbQhSf2CxgLwoF2IAk3hDYBTItVDkhRm3NWX1GkdytMlPWGsKaeaPonpE+q6HPSkb+Hy1uBQhyKQTDBfOdNi63C7bVgAdJFJTt+U1Wo4EJ3tV1/QuGQYRYhH8pbbWQ091NtNMNnkElstJXeFcjvKRtJoLADGgmuuGSyaa6KBJhqmowHmaaihpgYYan75/wWYX6o+1GpqnlGFOHjDDuABx+wlZaOISFHbSHupRHKjmuAeeODSWgoQZbUuw0y+hVeFUaeBfcLSboa5pbVm/hhNJZYxxyyzFot7DSe8Sdqs6jeSQJ5zoa++CtFkvF/jktvnfPoWM29fTv25TUABV9wyV5Bddh46GgZodruzoBRgeC8FGgCACf5pAIIHAJTjD03+0EMx+cVQq20OeDJ4UaiebIcCUDsUtuXeiCa4baqSs39N/jf0p5xVqe8yQxGt4J8QdolQLnlCkacTMWmZx8YZp3jJY0RuNuEphZtwoyAmWWgSoxBZbz4nl+mhzy5aWh2XgNIS5q1udTITxCUEkf8zHs1udrYTBu6gAYvu2OIWpQBAKVzIwuNRTVHMoyENqVFD57HCaqoJAgp8aL0OWCQA3GvbRjQit/Hl5FTz+Rfh7GaSCEpQJHojmb8WFkUQackmcTsKKrjkJfpRJ1Yqqw7/YuG//ykpgBazWC3aMywJLQUYJOlcsoCzrJLJ5WtSpExnuGVBoFQLFJdQxYoy+K0MXuJQveCRE5ywgkc6oSOUGIwF1tWd7gDDFr3rHQuhBgpggLKGoxzlLw7FijJW5gEoCEIPF5ECi1BgbW07ovfEl8RTmYxweeKjT6i4Pib6jUeeER+qkLILCuKvP/WrX4vEGKL+6SKNPFqjxUrhxjf/GjBCmbMQHzA3KjxuiDkn62VhCiVGcvpEHt+KmetGiUhMzBFECnCkIxXgkZ9dg12WFNomN+m7qIVSoKQ81A2ZZ0qEsiKdhelAJFoZCXqhZ3u0PJIt6Ta+XO6SiX4q53L8tNCENDE/ZVoFwHSSll3UzGaIa+bovDUJQAmocdKcJowgx0Y1uQdCTLlNKUYyMjvSKZwHGlFHJ0NGb3kpLfKgBopMxDyZue4S1JjEL+apAKx+xAmGCBq7uOOXUtiCd9CImvGAwYlRUkNmodyaKUFhNZDapQMPoGsNPpI2Wr4tfIBLIoDmQz7y8dKoIbmMkxoiUiyGCBXfm09N6mKzw62u/yWIm4Q27DOmWOjiFTUNEeSqyQ77LGVYECoWYbv5TYXUqYoH0ltcB4uUZ8QqRYn1SetaF1V3DnKQlVvGgcDQBJHQSJ/sClrQLgkMsvJOeKB8GjUAYNC3Wm0TOqzZW9/KClDUpgY1EEBIyoPX7UFGr96LW5UA1qFHtJa2r0XIONeXp5HuKRP2E40gVmGXSdyvpd/ib4vcI5QzbvZxr7jpK9ohoJ2SVp4gqaOdGvKVzQmotewtDE9WNrr9pcVQk9jE80AxiRpSFRTzoLBPBIHQ6JTYI85ar4oH4l5T/UuYS8rEJ6o03xabjnQ24zF1eJPK5GA2FgIGE+QKjE33DAuOEP/yKYORpZs7BueBJzEsUKgsLeZQ0XyjQB1mhNOSDBXWtWuZb8K6FN+1yMytzAOxohTpYpdZV1twtmJbcqziolrEiXcL1UW1iLAMqwWZDeuP4f6oHCETeUnFIDAbkeyeUihZYyGpHLJWm9qhCqjLezvKR8GCujB/ukldHrWor9xa1N35KDmBrP0EgQrD9AKRpLzhJaxKZ49cq6BjVosZdAACEOhgQ7vkM67by5yOQBFK0GIsS/zzCf0dlb+QxcSfOHxp0CzujMfgLIiKcVNYvKIYB4qNpLcJldOKLML22TS2mZSZTUsL1eYDdak/eu8qH7VmY3TViV5kmF9MArrNcx3/AFxjbIfoGq6q0UHDdeBrMxAVgggP6UeBuWxofeKiPPlE/WBtGJvxQaXT3sQkGPmaM2672xv6tpEJvCFOSIVYBfwIb7qp7rCUrLCdJjWofW5vfjUpKz8nOr94nZamLrNL/dESkOuiVkwMXHm/IDHFFaLw6VYm2DpYgwQYUIaGg0DTE7e6QWBcZ4y7axM1+c9/5jsZV5xO7hzexMrrkvJYcLtMLW/0uDd0G8CfO9npjvK63dNuy1zZ50Snt6cZbzKjt4Q4K2H6ljQOCqevRR5trmHwmlx2g3ziGaN/hmTW4vBfc10HZZBACjIhgDIkwuHBNoPYk0NsVVNYzHxrIt5q/0wT+619SzN+yr5h+jKYxpQyeK+G3QXE91rUwu8HirSE3uSR3lgI5+5uT88TP6LWihno9Sa10BUf7+TYeEtarLwgnmEYatzwF8uo4a1BcwL8nwBEmP+FDo+OFIdLhDJYg1+TODsDPRGhsnxLrQ4xJrwJPhzTCWijDtOri1RQHblTPsM4o+Zrvr2LPgKrBV8IEQCQNEzgBOyzOd5goMLLOXGKiwX8qRHBlrggC7NYolxCtRNxqR2cLKPjvspIJi3Skl9guo4LNLH4hVSYIVBAKwDIPLvIv/zbEOvyP4bbuoYTJ7JDwH/YvRgDGAlqlbV7hI6rPPbTkgpMi7gDl2nTQP+7iIXmk4VYkIUyqYDou8MKgBEJgSPU4hyQgTKhkjKdu7Lv6zLQAJ3wEAQb05IyXKYzRMKjCANFYqtDAYYwoIz8o4IEmEIBQbEUe42HE7ZhY47cY69RS7YGJD53+T2N25LKU7+VuC8Na8PKAaE3nENZyMU6PIY7lD4YWYqNwY3e8grNAcKCqJPSIioY/D+LUC/QIDZmNAwzXKZNUD//iy1MeL+0IK6iIQa8oISnkEIp1EQxaIKsUAAxSIAEoAJxxD/iWAarWTgufDF4w4xSfK1TbMYGvMcy2Yj/6LhHZIlGFItUYENMgKnly0VcrMNeFEEe2SnA68OEUEHPaUFjVI7/fPyJn7tIsUiR+BCQI6zGDnNFRyxDW/wJ+kMeUIqnQzCMTGRHd+yIK3gkT+CBbLjJomGa7iiFW4AG5Qol56JEUYIq1/EwFIvG8MCU9FCPIrIljKobaHQJZ5zHjASOfRysVVA/RjxDalwm/ZmGoxg5/krGupDDXJQFXtjFb/u2PHzIByEtDMk+FwQnQdyQqpSJjXxG9dkQLxLJT2jEv1Q/qymkTXiGbTiKGhIeFJwMcfQIShiGa4DMfYIFS7oFC+hJsnoa3mkhSnwaGnKrG4KetuLH2ggAjMiriiKvvvIrJbKzLUTAu1wI1yRNS/EiQMOxv+zKfeM4Z/iJTSjI5Cs5/8NQyFxMSzCpgHZYy1poy18UrQdZsNRSII7swkxjtwxBSoYgOtBANR4BB44rw2cITJEswv6Qrjr4CUWihksIJU6ABsbkRItQAB7AC31KGlvAEUxaoVsIqIEiKP+MLtpUjVlCzfHaq9Wsm8abTjiLTQbsPRVbhf9oOt2cUB0by00AS7s4S7Q0ziWpgGL40G/zhyWxnAmRyJJQIBMtieAgS/sYuqHrNKHTS7kAE1RwBWoMyY6Lnmp8lWdww5AwFOGZmmVoSRB5zHggBqQprr/Iz5+MmqH8z1LamjKRpfASr9RUzQP9q8YrFar0uc04QDrLykdAhaZrxK5cKUz4uJGYhP+CnLbCKE609IA6/FDpKwbmhJHYCMZL8NGCqLTs274QKTUr8zIvk1G32BNl6DjbXKZGJM9feAbMO0ySAIZJECi1CpEVgMz67CqdhAZPzUyoMavjCR5Swi0aYoV/WxLtmahMOJtaIi8/w6gthaJ5HAgGnUiNsrq+ZFSR7I8ybBg1BYldaENMOLi1QEtk5VAl8dC1tFMwuYROiBA4YgjpTNFjrE73GDW00EhRU9BC/MhQsdG/LMIcHcnyzJpNSFWQCIeBohoiPRDhIpqkYZqwAgZY6KQm3cxRUqTlqT9dU1clGaLwctWKKtBYtZuNCqyFcYlatVUvLY5cBb1Fzc2V6kr/b3EFkdg3/oJCpIjTOJ1TX/jQd7jTh7ScSQAAP7QQayUI1QrUGOVWF2VByoBGfVkFG+0wMy1CdLUZSQUJ+rNU6LQPT5BXojkX0OOGWTqShqWMW22viOXCVShTi+1VjmWIVPjNaaPDY+UFWfAAXpBTMPGHYgjZYngHEQUTiCSWFNUcwaNLw2sPUolBwiLUOqk31bLbZSw2OtlLlAEH0XvUMpSueEwFbQQJauAEqhGed7UPHvBGorEAQ6jVIqGlpZ2Mpj2IhQ1Qo7rZCSy0QrOZH8Va/ipLD+jary0TsQ1ZX/AFCNiTPSSW6LS5ygFUl63Lj6HboYM81dpdQv0/7gzD/8L8BP4TXPMEiecSqODZEG+wgNvxi8idR6Sl3MotjMs1u6etXFfITd20GQztiGnohGkzELXIRQ8oX7BdEn+oANWtADzYk3B43WFJiMqZ35OlXRBpWazwMhjc3bw9NfNRUJrtpW3IzXjUWWDYBNixCEOoVOZaTAFZ3nSBXMnNq+ml3od1CIXV3BJjPx7bt5NkiGKtmdk91tIt3yVAXTv1hQpgX0YxIGhtQoTwU95Y2YGAsLlURttdjjBTQP7t4U/zkxYL4I6ihk9YhnOlhv6ouo4QHuGhP+WNYKKZYPFKwwpOi+o9xtes4n/QEjQtuQv1CFnrhN801rToWvM94bBdYf81bl9GsT5olUgFatvYfVu4DQ5OM7HyM7otvTdCtMoZfa1PKGAE7hp58Ih5EKin2ZDmTZfn5cL0mGItXosr5pAs1mKv1Fg+VQhtgKmTO1Yz9gA0Rl81XmE23pMCgsiqOAiK9Cb7tUv9vWEmwdt5o7fc3bmGEOLB8s4O45pL9QhDQKugdQ/ckZQdmUeM8BQqjuTEgw9U/GNlHohpuNoOTtMN+eQlwADUHWUWthSZuw1MuIRfWWUaps4clrBQY60821tnfq06QOJd7ppMDpXbGS5bKGZHjgylfean2F9mNDp9LohPmIRh3bcNKWEM8ABs9ohKEAEYeA080OYZEJW3rIr/z6vhP5xOS/PW2nhljZ6M88NovqWwVNgFReGa88Sb5g2aeq7VY5abf0aKHW7mQ33p7J1mSEwO8wXlhLaIhRYBhlaNh1Zjf4joUAnGCDnBPpWTY2FRhMhoHlGtbc3WdF4IXKYwUAjkX8AGzAudlPYLe0ZAjJAbUHnp3VBAZgSzmX7pT0iphrlp4rDmnW6IBoABuoYBEWgA0AhqNa6CWwEAjamcb6JIQPTDcpawV5ZZuA1phahq9pKHZ+DleGaUn1GXlTbm8UpmspbBT0NFGIzsKrYZWasZjLWPnMaAUJbrSqgEGkhtGshrbdaDW+GVyxnhf6jWuCxsc8btyatHLh0V/8WmMOfhGmxIYGgBmnUpha8GvVbwHszO7LndbFPRG+f+h5GmRs8GjTPGgLhmiAaggQb4bu92baHm61t5EGndU4tWaow+FjrO1jrJLqlGtoZQmbQusV3QWSS2P3cxGkv6i0rhwrORm+aebo+IaX1cZ7I+UwExX+3e7oVAAAi/AAjH68rQa3+AANiGlvMGbFtF0dtu7zoWNXb77aYmcfYqwqoxJbzRp0uCBmGo1QB3aQLPHP1lRkR0buuu2too34PW7o6QcFH4AlGQcNCYATWGAH/I8NjODWntwjj+cFi2S2ydPBMviSofLPzuZX3RJ03apP9GwBiHmxmnceh+EiAm8P9M6AXPHe32MAE3N4EiSAOHiIAICPIvYIMvEHI6pww8SF9/wAMM1xfSmu1lsG3gYO8oZ606QexouXKCYGwKy++sAYV1QBl9CiufbBcwfwkZH/PnftEDr++XPlO3Vg2f9mm6voCCoHNWb/UvuAE2IAROGAQ2uIEvaHVcTwtJwANN4HU9kASUkdb5rYqLJkbdbtG6jW9RRwhIZ6/75mWAFZVh0CRq/3LQI4UtShJPBwkDRztwzWzdZPPw0O43NwGLiIALuIEIUPcbuIAIqPALv3A8+AGHkAF7t/cNAYCqoF+VdTA68Y2OJo7dbY9mt3IEt+8sL2R96Z1MKgVrL7u34XT/Vdx2Bizzw3J0LTbTTejk8GBwhO4ICBeFdifyyoCACkByCMADJV+Ie7/3vxN2P92KVH4wSwOTgQ+P8HMILDl4CtsFbHhn4haVaPgdoreFWnWfuHEsiq85O36vZddnjed46/BaHj9thkCABoBwrKdwynAANfh6B3CALWD5e7cBIwCCN3D50Nr3+VXBqbjtilySm1eO9OJ5zF1YXLvvDtuF+EOZofdJnzT6eUR68Vn6mqtxp0cdAt+ElFomcZ96Brf6heju76Z80HgCsd+CLXgCJECIlrf3N8AHRDgAfPh8GdApk237Y4lLCCsT1WL0jZ6whtj5p3+tX0gpFA/6UNlJ/57UpKPfIjQz/L21+Ow8O3Dvyt50j+yWfIVY7dSuBBho7cqYATyofjyYATVoiHtPe7U/kNmW4cGe40S/X/xNjng7uht3sdvHWWpQeHfZnRfy/cEH/gEXflVG/OiufWXuj8YHiE3/BhIsaPAgwoQKFXrg5cEDBgwLDVYSIQIGRhgTN3I8OKOCvwoQ8OjhKOPkyY4qV3a85HLSJD4xYfLhGJMPzposd/JcKCgn0J5CEf4UZNQox0dHjw5t6vTppk2/pAp8arWprVJagWm96vVrz1CPMj0qmwks2rRqeQLlI0ilW7dM19KdyAFLXYKbdu2NmpflQ4gYPKiEYfGwiL8F8f+AhOC4JEcgWowAUSyUE8yZMmVy3IxzkmWrP4EKGhX6oFG5SDcunXta4YI2iqn++vXpddpSAEoB210KN3CVYskSD278eMG4ON92jLsUOVgsG5AZ45B3WlS+uzBBLyjr4WCJHWGQICGifOLQjCuI9Ad5ohY48uEY6a5w0iWaM0Fv9IzTPlxt6QScc6kl1RpzyLURA4ML5IXDL7tM9Qx3AAoFy269cWUhdMOVNRaHIa7VVoL9FeWaiDwZs+IG1dX1SV98VWXfd+AtodJ55aF32nqNvbcQEkEKmeJAoGiGH0yd3fQfkUQJOOBpRalWokIIUhlcDBx0saWDdG2CzSdTUXP/W5MdacUbABuWeZqHH675Zk8kwnXianBytKIxG2zQQpdqpcJXL3tNY6EsDnmwBGEdiRAFo4ySwCN7PnK0BaVPbPFEmZltlmR/S0IJ52ikvbbUcnX6hGB3i8TA5QIjeClhL89Qs42dC2WVZpq/1ZpXm2Xt+qtPyzHZGZ1XAltQiy3syUELa+3iCqB+EdpQYCqRwGgRUUjyqHohSbqRA5SKW2Yp+W36aUL+8bcriW5ZJsgjyqVmLEJKtdbdll0IEVsbTKi1DTbbbEINhccepBWuwABjsFpifegrwwwLqNK8KEY8EAd6MssBB/mkhcMmruwVKJkAylJotR2RIEkRaRSR/y2k7EHgTxUcOXAzzmvStKlNbR375E958RFvanKhWyWq0C3QxQKxFTDCCFKktck2skpIzcUD6Zbwwll75fCH9Hpd5sTNFTs2QS20wHE+HMSAF1ifuPJnVCWbXGND1r78sglRxAxSBTNwpAbhhDvwpn7DLqSuwUAffdVRzhm9kr3Pddd0G09PsQcLUn/1ySfUbPLMl2NvDYpuXaPtFFkPP7J6rWVzVLGpXgvRsdsMYiGEF1chswuMu2jnSoiFnuyQSlEUYYIJyxfxN3t4cPRD4YQjfhOnE8kOrLDdPz5UqAXGxZKV9k2xgOYs5LC+51ZtA7rA20Q4NgD1g5Ih7KzD+/9w/nBuPxHtxMawLrihCzEQAgL3VYCn0OJZIeuL3e72HeR1JArMu+Dz1BOp6E1PDz/44A/sxJnm+ExiT8rJU4omrKIpZSflM18BXsAEKQzBBz7IARO44JRpyO0XzwiTrNB2i94AAHWq6x9PMgGv/QkQifb536no1L8FuAGBc1iAC1wwBxcssCfGkBvoRCa8CEoQZcm74AWhVwHpbaQKenjjG/sHxV8p54TfC9ZoQnUixa2kNfGyTw2lIAUbBiIFdBgCAaSQAwL4gCe3awEj9JQMY6hDGR4z3f2KaD9QEPF+oPgkKC8BClGKcpR8uIQgUIlKTAiClaIUBChYGUCIcUj/iUq5pZWOgssl5pJUe6yjgGrnxHSVcHZn658LhJDFAjCzAFlcwBxk0xFjrEJ4qwCjAz8xKBGd7GR560gRMGACcWLgDqfxli/YI7iNzKAKbnSnHItpQjuS6CcVQhA9gfk6tvDyJ/vsTiAZeYQaHJIAONzDC9TXkTlkqQVoiGSLWmQO66BNk/cjpUtGOUqXcLSjHYUlKEFxClKacoWgOMopYAnLfwLIlkbBpesqh8+KGe2XrZnSvNw1zMXJE4DH7F8huFgILxC1EM6cgxBi4IYYtI1jzFoRMlbhiqmu4pqukNtenoUMInXTjB1JQznJaYJzFqMC6fQFGycyg7WytX+e/7pj7LyXT2DuUUpSkpdQrARX4NxwkIjMAQtGUIA2LC2pWWKqU1tEzaqCYxvbQMVVQRe6T9QBdtQohScvAQCPZpSkGO2oRj170tGq9KStIe0fLeTSXrK2ta09YVF2ytOgmG1Kw7SEF15gCRZY4gVGTWZS26Y2PBkDGchQRlWlOlXIhvETOGhSV7/JERP4IyIRGWtozKpdX/iDIzOAwHfXGs+crCtr9NRjMNt1V9UMhWg4FdEQFIlDFkxhBIRdWpY4gAY9KZYW/l0FLaoK2ate9Rl8eW7+LLpZzorWswwOLWlBqVKjRPgnoGBFiHbp2g27Fpgr1KlsETLHhARwp1zIAf8XuBAHFnghqAsILseGuyJlRBW5yl1uL561pq7yQhYqGecSrCsey/ijGL4oqy8gwBHHMFnJ+RuxCcM313p+OGjt9aMwLSQFJrygvoN9MYMSq6cV+TfAyUXFNpZ7VWw4sX4A4MRGNVvEzmJizhxd8EtccspL8CHCIi0toE/6C1hmWMMcZu2UEi25UrE3xCLuKU/vhUQiUJoIcWBCFrigAtyOIKhZRCoCsYAFNzRVbTLGwQbc8KauFkol4VwCrIN8mgoYuRjv4C5HROIYfzgZdlCO2KKnfNc87nV2BbLXm5hgX8IKwYBZ2u+Yy2xmAa/ise97BiR2auc4d9aTkzASJib/Ee5YfruUnzzFKEcxSkBPoiiyTM0vUlSWJco0lzitd+TyHbmc6NHKjj7Irw1iVxCPzRGVrjQXAJEJTGc6DptmwQuK+ttPgxoLSj2gC+wki1jEops/hvWhIjLrWh85rQsRia57vbqAX+wU/LajLw2UQjo1Gk4vYHaYObYnxVKTFuNYBThWgQqpfgIczfo30pNuXkhXqUBNzFqls0BpTXshi0KwOKmZJePiroI6FK0Vxzd+sh+/4yGIulF2i6H2I3d3IzJrzHg/828Pk6bY5Bv2S49VgAXkIx9o4EA/WqQOn/9X6EKnBSOUrvjF/4zpJCb206F+8IMkEwtONfXXDcbx/453XCV3aIih0G4ZWhu5FsVo+0Q2KBK3Op7xV9lETnGC7Kwt4Nn8peTRXa/73a+J5QSpcogpnfTNc14lg3FIj0WvGNLX4sgV4Eg6Nxh3PvJ+5gP3Z/Wzr/3t08X3A3F65LkPJ+Jv3PM95gX6lf+XCpi++bV4/kbOqt3p2138xMxpah5RIfvzv//+ny0KdUSx1N//hQj5xYLxnV/6zVr7vcP7QZ8vRGA60V8BCqBNnUgFZqAGip+UUUypZNkGEgnxcZzxycIxoJ90KUYx1AILsiD8TYQESmDcxUQI1gt61VT41aAO7iDadCAJSRoPEkkqjKBKLIHxnN9prGALPmD8Sf+gkc0gAXJg0RDb+AShFV7hk7UeakhODmLhaQwh8RWhCRYK+iXhEh6DL3CEEvqC6bEebelg+MShIJSXF9ahHbKLqNQWBt6hfYDh5qmEB4whL7ADL5hhLbwCC9oDRyxhGz6Zp/AgXVkOH04iJRKJDxrTClUicqSCHyJgRwTiMYwhOhgiIsJCLSwiI8rRI8LhDYKgJr4iLL4GzFHZvqlGFMaiV3QiGL4Cx1WD2BFfKPIiL7wCL8TCKIaGEpbiK5hiLRwDI9aCMLDgK7BhC1LgDtIVLmajNoYG3c2VHN7iNjZFJ8YCGG5cLBzDOabjMfDixqHjyRyjZRSDMyJiKR7iEiL/Ygsy4xK6YQDuoJSEI0AGJFp040x52GgI5F8M4RB2wubpwub94i9WQzqeTCwUYnYh4jq+Aj3Wgil2pDQ+IyykYRZ+BjgipEmepBd245S9HEquBS/q4ghCJOeJnQnGwpBZxkdq5CHS4zL2JCxsJDOKpK9hT0m2pFEeZQai1/Xh1E0VJVIuBEOS4+ZpJMfxolXGwlWiYy/ixhLAwjoeoimWIiyM5VhyJAt2JCwgEUk65VO2pVtmX7ABjV69JVjIAkNy4sbpwis4pEb2ZSeg4yvIAi/WQ3BUwCvMo1k6Y1gu41m2oFCqJVvSpWROJmVWpmVeJmZmpmZuJmd2pmd+JmiG+aZojiZplqZpniZqpqZqriZrtqZrviZsxqZsziZt1qZt3iZu5qZu7iZv9qZv/iZwBqdwDidxFqdxHidyJqdyLidzNqdzPid0Rqd0Tid1Vqd1Xid2Zqd2bid3dqd3fid4hqd4jid5lqd5nid6pqd6rid7tqd7vid8xqd8zid91qd93id+5qd+7id/9qd//ieABqiADiiBFqiBHiiCJqiCLiiDNqiDPiiERqiETiiFVqiFXiiGZqiGbiiHdqiHfiiIhqiIjiiJlqiJniiKpqiKriiLtqiLviiMxqiMziiN1qiN3iiO5qiO7iiP9qiP/iiQBqmQDimRIkdAAAAh+QQJBAD/ACwAAAAA1APcAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi/8fT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYoYmGPCCIIHyamyMeKJwryyYg0ZXLKIzOeIoiNKJbIB42suIXijywC+aMgMNKWiSAlPlKiiUum6OSTK/KBSZEl5XKKKqyUyAorNs6YYpNJQpljWCcGOWSUaJ6ZJh9UVoQkm49lEqaSTT5pp5MomphnnkBN4ueffvIB6KCACjKJS8sM2gmhjAb6Jx+X8ARKmWhSWqmefIziVC6ZQKHKp49kyQqTJdpooql32pnnI1mZWemasFL/Sikoo6x46E+1rnjJiqAIuiukuu4KgK7E+srHKXsKWqall1jaa6W/sijIKDfCedKeeLaYLZ55nqijmcsGiWmy2lo6LotBpclYJkeCieS7TtaZ6pl6OsmToI4Kiu+jk+jb77+CsjTJJY0WbPDAOQkJa5ot8mrtUblgCcWWW2IpaqgYw5vqxvWaOFW0C4sb8shpRrpTv5DWWuuvKKsMrMsrwuzyrjCTvHDDDUd5Lcc894wzvUDWi+3IlAIVZYuJPcKHnEjSOWe8Gs+bs5on5uRovgBn7S++Ugr8J8FcD0owwYT6S3BOuSpsKdBRnmLUBxF/KrecFmN8cZby9jwksg2z/9rU0a6uObXNDB+dK06TAHDJ4sBGu+uvNBeb5sAOP06s5URTfezR1ZY0KqY/hw606IMrHHLpgpfpE6yHyek0nfEqGTWUtEuroopB2sQv1vtGubu+nag0cKNb7441vw/PRC3hr+JMFNy5RC+33I+oIgioglRcfZ151ip1tkETmRTzseJOfsg2La6++o1DSvn5mcJ/upChl9Rt7aSPrr/85Kve09rJswoIUuI62L0uTEwi1SZct8BNPAITd2oe4HRGk6wxal9X+9efVlIwsolteMSj3K1o0r+hHS0oJdAA3D4Avel9ihWgCpUqCvipXHhKFVBwmtC4tUPceawosppfzv8MpS8iogxwZUJWrFC0q5pAan3qG8UlpEjFxi1uFC5bmRWB1T7M3Ux/gxPfSHxGRp+B8YwAfNXq1IgVEIDADG80yQGb1rQjIQkVF1HastYWrpkUL2wHA5TAyIZBD34NhPwiJMpG6EfC5axZgAOKBlTIQhbaMGI3nGEuQgGFjCBpefKS1oqUNhTTFa5qF+FDr7wXslr50XKMo+IUFSfFKE7xliXL1Ch6xUtV+hJzZfJezWCGo9yRBH9nvN/tlsnMHgYuc5H8HxutAkczWNONI0GFIORUQNklCSSbuB/n+BST3jGSJ4MK2ET0ZaxzwoR1CymcT+yQhCR8gJKWzAUzPpX/iVyI5Fs7pJ/RTKmujxxRcD+SSRd7Is9j2ule5vIJAKvixmoyoAYSqGgcPYILUoTiox/NRCi4KUfQcU4QqYCJ1voktoq4T18maySa3MaQIPJECSVIwiR3Wkl9sjAlO9pjuW7EUIRSkCSgUCKsTuFOlbQvgDdRakId2rA1osmqxpTKG7dqBQZ0gAHXrGZHOkqKVngUpI8IhUoAOsEpuaR4LH1U8FzqLz+RcE0NudRO9pHTeup0kvfMRR5cAgruaWtFO0EdYlMyCamiaZcvWei9hoTKMT4Jq4udbEGpaU04YvMj7AqtktglxpVgYmhlcitL4PoTRlkEg/iSqe8askeo/87EDxngRwn6moedJmEmpxIZinIyOO+9NW1aBEBTrwVLaQqtJHby207wKs1oXmWrn/WIaLlZIrW+E4koUq3wMBhXQVrEg2CT7VEV8jOdKGEfud1tHvx6E5Nm9a5BHC5MGrarXgkCFC2R7E74piLoPkm6OqGuZu8rQDiCJK3cdR1NRGfbkmjQrj/hBKEwYkiElVPB7BWlTvzw3gyUwA52KIFO+AbemqCOhLs6BeYCvL4K0wSCeLLfZYt61er2WC/bHW0mbqIm/Tp1UEDRMJIv8sGYvjVNAKDtmW6ygyr3IARKyICJlVDd9sqEjz+sSa+maCsno+SJi1uui8tl443IC/+zpdWJudoMl1Y8IrTcHDJORElOxpI3wxvGCAhj+93NKkScNamyonfQAxKHYKCAIyVMIHgpOrekX5DL7Jlr3JNTELiy/9wxT86FWU3fRaR4ZpebvrSkOj1iE6kUmXhNcmE132QSSt4gRnKNaVubBE39ijNClBmTRe9gAAZoRQ8GsOigBDTMAW4xRSidq4NWy9cMeZauoP1rTvNkE5+2NEYeylBLwVncbEHFdlUtkXa9y11fStEkEAyR04JLeEv2iYb3jeFdE2qu0bYVqBNyWGG7RNGmMACzq8wRSsatnznsFEdy5WWWKG2cE6G0skzoX2BTBBQHPZZT14ftmLAC0ST/kRe992zu/0U0LyNNtUTgBSbZ+SzjlDU1SQKtb1xPYlGc2Aiv1RnwIkp5SDYxdkY4hTcaIWlGn4v3qHqEEZEN/MzhQvdAnmUpgBn1xxAJVLGACsWipghZBo4Xj6cK0cKBl8LlUzlFUh1akIKUFHgvaytawY1W4IIbAQgABQZPgUh0QCQxx/PMDQi1BM6uYxIJL5AYm++e+PxPABd0mv8E4KKvl+DiojLDLfKBHFKsVKKaXd6UdJHQGZwk4rp6TUXZMEpfwt6w4rpEvAgKM48Eilr/ByhAfoneG7+Lv1RlsJtFrWaBrFKosrqBwyQRBJYxv1Obl6u4nbAlOrJnNY9I/yiUlHg82/2jecf73v3+d1wEXvCCj0RI6K5nh7gu3u+mef7nFXnKlnwjPGd5ucYJmSdogKJhT4YmUcYQSPQUM5RDqqAkWGJz14cjFaFEObMSgxN2hzUk9jYJHUNQ/jVzAlYSl6A4jAMR1FBj6kM5luOCj6Nt0IIskzJ8KfIro4ItJWFzJQIRCJQ31xdBS2Qur2cTiuVIYLQxEOE69Idq55d+erd3uOB+3MANFGCFFAASpJBqK6cQTPNurvaDO9IkymRkDnFaZdIvsyYSAcgTncBrQccRIMQJROdU03RozsMUzJALMPRCESgqTXdgPMN2EfF2KTFRD4F7BSclLXJxJv8CgsSCgegSdu2jOCdxgifoYQ4hCCgIRZ74MrjUS5aTfap0I9Nyii1CLTvYakV4ENYXhM+mTEJzSjrXffyDRqnShQhBfnlGf0+YfusnhVMYAIB3hSCBaqFFCg9hR97EarCWEEDYiGsYYi3SLyfRhjsBh//3EIfkJ3Foh5WSV3mYFB/ADH0YgRMIQ7BTI4/XjtUSfAIxLilyZg3oEJCYdamFh7ayNysyjQmBLOyzgCaIgprIEMrliQgJRVLkS2PWOKHTLDZCLdQSL/7YEQnEeg6xCbAYQa4nJgjlLT/xKkHzdsmELeTWEONXQE0oUucXCuq3d1Hod8RohR8RDOVXfw3/0YywExHhlCoQEU7hSGuVxxPa6BGYcHkFSY/WFWInRI6dEjfYk44yQiOhAgWnkAmjQpWzU4YTEUStaJFTAxH08ywR0Sw/0zXceIKNcy2Kc5BpyT6YmJCC0CzDV3x2eXy9t5BW9yOQOAoYeUx1gpMKYX16FI1ByDBppCfpQlB8dCkcA4QPsU10EmHmd3cuiXeXGYVTuJlZCFp4dmcPEVQIhEddyWbcx5STZ2FDmY0+xwkE6BGvwAlko2QrITh5FXpHkQTRAwV86EKj0k8R8YpsposE55W/Ri+haSgngoYVuRCT0HH/pUpiyTj9ZRJxmZQKAQzrMyyb9y+G0ntwiXyQ/6KcSXUKo+BpnpZU/2WKX8kR+yeY0EiYegSLasNDHkkUoJN9PnQn8xlUb1JgDjFak+lRpGCT1hAM1tAKCdp31vB3VliFgTd4aEABKLAIIXFnMeddDcE0SSJpLsUkq4Ju4YR78EgR2KgT/Oaa38gRnXAJGjab4Ah2oCctR5EHuwmVjzAx8Fl9N6JH2EJToVmPDiUtnVdTpxVsIpdKegJy0ukQU4QJLWidbQkpD1EKCjkVjPcQT0OciHGSDCGgcqKhOnGTWqpD7ekQ4iQIz3ibQbKNFnGiOaGirQkSA/OiIBejKyKQh0ZZRpEHocAMvHlDpxA97imLKAKkaJpzOpaat/+5nGZoEUzFS71CDQ/xOGqppyFxnZiqEFDUe1jaoWcqELDzLpExn6eJEOMnoGKKEx5lfg7xCe1CJ+7ppfFEKda4c6upE6/QmrgGEgRoSAUIeyAGelVFFBqgT9LDm9XzYKYIJKewqXs6jiFhOhlZe3zwDBvhMLyUnMJCpSRhl235ELK5OMoFrUzBg6H6D92EJJHhn486mJMpUjxBd6RZU00jO+65JFLCB2vKgPvYnACIeW4KE3L6opk6gL43ErbpryeCdkNho4AqPRH4ASJxckOiRxGBjwr7crMnahlBDVB6IpMampY6sBRxgihorgfRiZg4FWCYrrFaIjuqGLTKXnf/drOrehNkGqAdyqUUYSJoKHvDBmwAmxFwihOu+Ya0GRJvCCgq+xHwtBAVFxSbJLGeYhK383nxNKweMTSRCXkd4TAiS7JoBgzfmrIJixCg0ImWKBXeRH72d0CRUbMJoZJpNa8yh5L3KrR5ZCYViWNTA4m4inlJpqJKy4Yu6o18sKIKyzBSVqxBATe8KT05KxImeaoIYZzTelhf2y0fwXWqVKQGMa4owp3karK7x7ZVyrZpuxQHVLkHsa7pKhhQUqZOA7sx8plxq0NQq6+gBoL7ua/eWaIRcbQ3EZsqygmv8Hs+NzbXwrUHoSZCUY5yY0Mza7mzuIn0866FCrkLgWOe/9u1wzdbW+c41IlmaXa2bVkKDwEMbdmyUhGzPksQ3fSXjlG7m/g6uDsTn3m9BXGvSlKvHAGUHckiOKaGfzS4fhKsupq8yjsSrtm82AkSvpOnjwssQZEEETs9K9GfpEqs28u9G4EzoZpzsyuWwKJtIPecxWd81LmdogsSmAgAbdsQMwy/USG/yyi3kIG/Oam/O2ENdBegACzAHNGP2qKGHVN7p3WUp6WaP/dzQIG8KnoMO6e0Y8O+wup1RzeXxNsSk8ubnUKxtalM9LYj4DJnJ1yIOSaO2jK/FFErvYJpdenCUIRpJwgKmKDFIsG2fGyQKUvDU1G/O/w6c9vGP+w0/v8bE6swxDkJwCFBaY7aQy1ylGlylKrZCZqMui1Bxa65vN8qm7LZb5a7NTE8tCfSRD9Rjp6CSYs8EqaqX5Q8i+ELTijHgLdTtCaafMRix+uztkwqyCSBgqVQwwZJrij7qU6jjCjJw49Bt7v4Oq/8EluYtzU1mWv8EOGkI/ImCDgGvo8wCU0sziexKObMySzhya5ZEg5MMIwLtcBmaVkHFDb0KZ4CxyLBnme5iLYzSlQHEkssbrKYqePbe8Nzly38X8+pXH88EgDACQ9tzAtBwygLAA3tFDNSQMzMEKnqNIdsLzyryDtRzaKVv3TSrx4xVM8mzrpMp5q8yVNsuJwACyb/4cAIqLCZVnIi8xPioApx8wi5QMYuQTtZK1ScQxIa2S3iZie7MK28gtC9BKWL0xKXYKWloJ0PQdE0bNGDfLNystELUb/4PBjEFtKTuROtwIVm/WovEhL98kDwMgmb0NIk8YYvjc4roc6gzM4RLJsMfMQsU4sGMUQ/AaiZMDcxgSrg45V8+xGSrJi0Bc0asTgyNr6P0wsyYdEQbaXiqjhWytVSEYFMCNZeeLOyChllnchnrRPBEGS7myTTbBFNjNIzYdcvHdOf/MAmUQpKi2suWsr7qNNoQtcvoQH8BCpC/RLIlC0d7CQQtInOnc0QscLvLBOlcN1X3boGsdVVDdo5/8wuN7vD3dSuX4Jur7NNQXxn3PXarzbWUJEKL63JuK2ie83XLuq8To0mp3wQkKi1OAGBfjgTPkp7TaPcHqsQmPBmXoHd163dBWHRFX3RTbFuD5GSHo3aBw6vIr0T6h3eu9suXxHf8v0TsYm8r1DfJFELrnnfpBy20GsQQAKCPnFnfpjc+5W17m1ZIO3G87jg2A0MEo4QxVzMNBzkS0F3reAQFg63GF7L1ww7se0S6i1h7P0Ibc0V8B3fMV3iul3Oojyu1Z0R7OTfMC6tOXHPMxSBRqgjRpjhxYljHroVDH7dVfrZRY6lqWYNSt7hoNnkPb6h0swTfD7W553jTQHfWf/+1zhx4sr7ycIzypwApRQ8OeKIdDwBgdUjCDa+FpIN46Zq6Ewx50ZuENi91aOeFJyCZ3rezNwF6n5BWenKeFHeEl5tv1/aTbPeFJ2A6CPuE8egvCauErDQoqN8CWbbtRVsadI7aqCi5nDR6QYBQdKePV1RCrfA4A9hAUM+5FNRfqGw6hxd67kOGLAemc047irR6plA2grhQE7DB0Z8FZPA6yn1E8dw4iWO4jW94j4Hz76jy/e2E2muJFwSF9FN29A47d7s6kgh6g8BCxYd8aeOFCNV8ZnADUoO3iTl55hrEO4ms4Ju2uy21kqC8FSx6yhf7z5RC/j+CqWg79b5ohr/NvH9V8FsijQ7gZVZYj2qYPAH9pPeHPT/Jee2gO0OYQsWve3d7oQX7xDV7NXkveP2GibonhKrUOuzO0e2XhWajOgq3xMtH5u1wBI2PQk0P502768/st81YTfWMxcpQmkQYSIa2cQPpBWlUPTXbgtVeu1GHxUgxZIY3xAkHVpR/+dT/y5VT0Dj/ZNvKztXXhVZjuhTjO/KO/Zk39eyGba7AjBsOok6QfAEPxeYALjE/Q/Snica6c1YYe16z/cOMecAAPuAf36DzxCFP/KOkdpfCoYMjxIHlOugSkePEO/v3fWdEAuVf+Ivj/l5XQqtmQp4DeOdry+fL8IzEYGi3/Ny/yH00h6cauokhYUJ2FoVtmALt3D+tM8Q6F/q6/8UrWCZt78Qub/4fAHtBPE09n8SAAwQjzL9I1jQ4MGCmx49EsRw4SOFjxBOpFjR4kWMGSmm6tSRo0aQIUUSrPXKpMlaI1VW7DSJ00uX4VZO5HOJzyQ+OTPezMlH0EygIR8KYvWIVVCkSZWKxLRJECZBTkdCZQgVqiCsv5Zu5XrLli0LpSyAtBC2VCkAtriuRUoqlFu3ATSSyhQq092BbPXu5asRK1afILE6FJS3b9KHD1UqbOjQYSaGuw5PptixE8dYlJWWPPkqpeaJnC695ORyKU+cNXf2DAx65KmiRH+6pr336f9ThotBYXWKiRWmR3weNa1N+auF4yCjlbJ1lnlxzaSkvw1FYW5dvIahb+du8C9gkIQVd8+YeLxIxpkiDmXYkPzaTrHix3+vsVhnz9yjjXZ5qRMwpWxKTSeMWGutPoQeOWWhU2ZD8EGLbgPOvZE+AQU4hZxi6EJQFkoFQqTAQg45kKAp5ZZbTgQQxKWkc7E6jVrJ7i4Wa9TrO6zCa4wh7Wy8y7yZnNqxocEcc9BGkOaTLzMkDbqvs8+2e2W0l0YLkKecLlmtpyNBHIwoVZqssSncKFTpty+JrIoPUJzCRkyNRCSGRI2isQXFs6KBcyYXSWmFFOsykvFHGvc0VCQcu4z/0LGF9uTxoR5DcmWTTCZkTM3GsPrk0Ik4UtLQWjh75Zh2yOOkk9JSTQqnAbUskDVFEcxFkAWJ5BRBIoWMVaNnFGLFqV8Ycqq32wSh5taDRrRgGLU0mscWaFK0ZUVkBf3TT0BjtAuyUMKs9tuDvjsQo4V2lAhOyB76RKCgPiEyqnevUmgS4DZFtqNYlgT1GJNgOSbK7UhL9RJYkEItyy1z2vU9who6BVzuPhGSsU2Cqgo34IDjEJMLfwEl0j0tIGZOZsmywMRpbYkGGmCigYVlaGABZuaZbQljZpZnBoAaUDz+BROfN6GGGlag2K4VpP1sJVCMWgnFrlAeeZq6p7H7/3FbyLJeCLKG0k23yIUhXipRwdRk11FKBWoUKYcwuQrH4STkw15DlczX0GJgKclfgAMWLVUADL5kkgETJpDFWtUUezusoBIyqaaGvfhCQTi8EJNJ5OFUZM6JAQkYaJtrDphbSAemFGAAoDn1SwAABYDWXQdldto35pCV3aIqDhekW8HFGhS0hfourLNT27xyG040UeHCXhwocZ33zmyQa/xE63XPReoTqnprr1h4M6a7yfjyvXvP+0oKtW/owknVJVSDIpxwm1y9yEA+bPyOIaOfr81deEVkKVABBe4E8YvKVa4ps/tNUyQDp2WJbBhj0UhZ7HQWEzkHAGe5BFpaV/87EIZQhLthhc9qww3etQKFwcsILqZWl6hVbWvIY5R4MJWp7wUnN/7bCo7yp5FyDaZ6NXrEurw2RJWsgjdRscrbrtJEMWHGfIbyhWfWV4z6lCIVVHpJwWYioNTYzyL40x+OvMVD10BkExiSylLc9bPZVc52HKsdK3rRpGwMQ496BAkPwPIV5jhHkGhJ3esMOUJEzg6BrDhgbQKAQhXigoUYCcB0hle8H9Ewee9aXid/iMak+FAw7dkapwqTPIWsZRdx894TrTKcyNiofFPcky/+dUUEVcklnCgFUASUk0mIsSKw+qSX/rIgUNaGDxmKCmTWQo1NRLM3lnPbGn9GDUH/LMNGexwGD4YREuR85U6gG+RZCgkMUKAzkSP0GCN348gA4IIb8YwESKZ2T0weT5M3/F4nB5PMUIprlGbjFCoY1Ri97GKNTGychCTkNhbN8hVMgpMt1xcqBL2ClzB5yUxuwirVvIo1ZfwOQF3jioZEU41IBAo1gGasYNGOjh7jGNBY5M1uejMkK1hOODM4SNWtTnUAcJ3reJZOy9URm7TTHmgC8NSnciMIIZkODImHF03S0GxfIiXcTAoUn/ylmBfZ5NoOlT1IOZMva4wbmawyLLfxYRoPMl8sJkrFi9aiAg8CAKoE5lFW4USYFPGJwsb6IBw97Kua4Z4aA9iX4bSJ/46zm+wlLncsBPFAs5sdSTbKYoFonGxlMBvd6tBJjZmhNoS/yBCH2tkhR1IgABSYZz1Dwrs+Va1qM8JquhIzpL8sJKzBXexKhjsusmKqqYbKBPWC44rDLFNXF7PKJAQxCQTV9a57qsBFj7HXB3H0VNpUyUdRsxNBjLRGtCppcSnzC3dBxLGoOMwmOkbZydKOXvOozwpWoNn/ssg3BYQtbSggWwTbFrFeda9Ijiu9goDNTJwKBVpTata+LNQqDt0EH4hDnroeg6Ji6m4xQlUM8CIIGALzTy9HcrBgGu6wCBpujtYCGB+Ktcbp5bGOw9o8sQansFzyyXI1ExWVRgUi4//jC70UWbvKguI9/qXyCgSMO9wZeTIH5jIFHmDM/TXYwWKFMEHKquU9+XYhCmnuA+s7iQ73ZsNuw8SHuGM+WbxCFoYq8YlTnMsV73KwGQkmSAeNkCEfDsx/4UqDelxY5vEY0kTusT8rHb0dplG+0VSPQpi8F2x4OL8g5Fl3VuCEKrOoZwVEYG1QQAEUvBoFX4ZQotAsZsKSGSTNcwy4rrejiHCPvpRxW+Os4mE4l3kveBYxn4thYl8Uwxcg0ihHJ+HikIBUsOhVGHbXiyOuPNrS4470pC+9PORqBhXrUin3KoyJVWjmF5PwGJRBMQlqHFozqOa3lUHUJlZLmTZBiHX/wTsAIoYM99a4RrSuNTIhxYHLoInx9LCGPRkh0avYbnvEJNxMm1iIWBYjdza0pc2iKvGnFF4EyeBQo2+DkPHb7VUKjsltbpxLWueQJndhirONTUgsQ5+QWBE/vZd8b0KdpMZsbRTgBKhDXdU+azVtHhCEIEQC6yyyNcM18uCB9lps8l0XuwXCZs30oq3VXaOdQR6LkZOcu8+WNoprVIq/lSZwIYExzAsCK29zHdyn6fnN/bnjwm9HFdGUGLuDzm7NAMO+o75E6qCjgKcrAAyqxnLVrZ71Bxx80f/0eoF0XjbxPO8uZTe7SivF0qWkgomYELXGa5OvuPOi5HWHQI1g/yFeK+16fjfxO0FkLnix9rDGPD984XGscHJzxxXqKSLjg279bVAGGxcCwDJqh07oXOEKE6gRKFTRMygomysCSEEHalCjHS+89MY/vV84KX9OBX3J8oXUYEIxmWXSuGqCKNeAu5HjhT2bu2fzBV/AAxtZMdJIBU7INsKpiRgTqZ4gKUYbmx1LHORRrv3JmGiSkOGAK/4Tkh0jjwpjPKHTP08roskAOO8DBctKp/m7CAJjhd+4wYvoOh7MNUgLj37CP05ZBceDCCVbDw2BvaDYBcx5QjrDhAI8QAQ0FH+oOwZ0QBsphV0SjeIriApklS8cEEWDELDjwO9QLNBYnvpYN/+ie7zGu74RzD6+CANqmAQapJ0V+8GJWLUSUj9cI7MJ48O/q7+M8EFQoj4X5D/5Kgy3ubi1aCK3IZw70gwDREDd464KkLYK8IXesxFOmBKBETiMCMP6kTEb+bF0g57jUkPN6KdB7A43hEM4JLrraSzo0oujmh3LooZmIUSCwAQoYDVA3AoQ0AEQWK/jIkKvM7eBIi6TyoQjzBA1ioiGiBy2oDONoxfQyD1eyEQ4ucJO7EQt3MJC+xuNCKxtK0UDSUWHU4rlY8atgMVinAygs0VbfDxatD62oIad4QTKAgaWQxInmKBriAY7gYbRKQUTSZ3TYZmhQifXsawarKPd6Bn/n6nHpNABZFyDZAwJCsAtuLgn3iKUfbIhIok/YDwIZ/SLISwuI0RCOVSjdVGyojs6oIjCpsAczThAWfhGQ4EAFKsAoixHG+EPjtqJ+TlFDCzDBcOxrfgxHqMNlWSRVUCFoIMvfGy8T+iVZ5gUoTmHrQCh1Gk6G6GEYUgHC7iGtfysOzGn1UGq2ZEdiZSpjfkFvGS1XzgK1+BIHViDRPBLkAhJbCFJ3tKn36LH/UkTaFxJ+gtC+/ueimkwVMAEdym6aGqKalwjadqEjwOK4YhCOKMMKgTKPcGDcSxKMXkf0cA7dhy+wBujdlRGmgslw6IV2mBDJDHCT3DDrtzKrtyE/194Btb6BM1JirKsPFDgBGphEQUYBrZky9CyE3FCHdQxLaSqS0TCy2eAgmdQhW/IBZzcijUwAzM4Ro5cAwkQABRggDLgSPQ8RoqogQe4OqwruC6TraiKp955EcPMpMNzzJgzRIxIlMnENazUTErJEGl6CM7chFwMCp1Mhdjki5/8SdOEEzx4B6JUTTGhEpfAhOILLKa8n9nkuuNSvvTyiVGgjeYaPDG5ynzEx15hLcazTPhalewEhmW4Bso4ASA9gZ0ahjyKTtAKp+ZoSOxEJ+1cJ73cS9cAATP4y/UsgzUQzIvogFjjstmCKkhKmulwi91SsyG0NAEtRMg8RAYrvf9VaK6b7EyVWiMy2QRIVAmdJMC+iIVv3FNDQc0OrYAZgJNX6AS864/mnIj5WUqlVC8WWb4ZW4mdc0XKoEdOAQestMVd0Eo5jKbhbBM6nInlXLovRIogDVKQoIQ8asvoVJlAggW4pJnakR3ZqbcQ4hifGU+++MsrxVKMoIDCpAu6GFOrMR4yxSEQbA/hkEeGa0k1DTM+bCw4HUGV2klBqESV6AU5pbMR0wsM5QUPAEcx8Yc/rYAq2BP/EA2XqFCESNQSHSMydMd3RApJCyvaoNRqWYUiQoVn+M1NFc5nAIVP+MyQUC10YhkK2osgpYIEMNWMuAKoozJv4AFvyCPPks7/0AIGmMHYpaNVAJAjy+m8X3iT4kBGkgWJAEAa6gBWfOqtfbK1cTtTNJ3Kr1tTQnQ8odvJB40bgQUiOIvCw+jWb+3TP/WHQN0TCUTKvSMs2ExaiyDDR30PqUwvNOyJUZ1HsoGYVdgFonsGhXpD4fwFaAKaOlgJYrgGb7gGHtAHfyPVUk3YBBiDCcgJMBiDBKACKmhbID2ICQADvm2CJti8Mz1Z/4RZ12DWAr1aAXWFTetMYdkE63K7kEiFKJTc49yLPf1WDxBaca0Af9ADQ6mS0jjXYdK2LzQQdUWQUzDcoNg5xNOx6LG5RysbGBUbcwi6Z4AmTmUtvPyZZ1gJf5yZ/1JYBkPgi4S927zNiKejhBXQBx6gBJgNgGAIU1IgXNBQ3QhBXJjt2oUKHzo70GzrBTpLBchlC0z0AA9Ygj7dXH+AAM/93HQN3dHVNkI70Uad19OYtONyVPwhJpuzv9l9HkhABVb4hGUQGuH82l9YhrkSicqjGdU5jLYFiRVI1WsQhmx43mt5i+mlXsqw3mHCXuqdPmnFWbfZWYvYBQGk0L7wVm893/QlSgjo3ENxH6TsKEQ9mNJljdOlMfutOeZbUcDgEufbQHIBYR7ahoBFYE4VTv4KiUPAhJlZBl6CYIbViBWAzrb0hOd9Eeng4A4m0OT6Din0YoMQQRLGBBOuiP9qotAdXopvNF8PwACRQAAaaIDi8FPOxYP2/dxOGA0qwTaDgM2QMlFGZZFRmLSpJab93d8gVhhnDePaBCiiw92vjSazzAiiOh0bBBFPwGK29AaY9dWR3GAy5gsPzjUxLuVw6d7uFYldoFC3sVa9YOHzlWOQaAAREAEYoIHa8FMIgAA9vhU/zjtEJd1FBSYkeT5BaNGaOzfYdWYgfmapPdzg0shbERq8/FpoqtyMOAQepRkWuWIjBeXADdOnUWVTDmJlQzx0Ngjw5cxq8t6MQGHxPYw3jmP01QgEgAF+5mc7dg088AeBXt89vggZOGgZII9beF/6QbQwHOSmpV8QwV//a6YJR1bm5du5hngwIraIMhWzVYCvbKaGnxEJQ2DOQ0UQcW7LCz5TbvDP/2tntjjliYBFZXVMV+jZauoEea6Pn6zlfM6IBqgEoq4EGPhn0MCDGP7lYMYIhEZo8qCS0bi3CYw52MzhQjYmiYZaI54IuKnoW4EE3GUtasCGNkYWbzLSlhbQlxbTc5bptVBFZUNEuP4Hx4Xnnn4PzI1jWxZqGqjjBqhj2lCDGdADw/4BBzBohMYHG4Dq7ujjv7GJg0jUdbwIp22S4+Ph/6UIum6waOoZkqaGsX2etF7Lsn1eqnnruia8NKXmxlxtvAYOEPnWJcAADAhqjECABkAA3tZt/9pAgidAAuGGgwMgiKd+6jfAByM4gDs45EHQAiDAhzc4bseejGgwCdLYQzBcSoge3aye6BVVmFrr6gShWTEDWJL+hVTI62rhgbL9rOEN3NSO6dWGR3V+xo6ua1dYpp0c4wfB3Nru69xGAFG4AVHg7cE27MNObIt4asaubu4A3Yb+u0TtbqX9bjM0EGbGlUsrD8kE62rBhrwkaf8WG2/gnOiEWW6gmrqob9aW2WZ9bdheqGgaX/KwbRPIcRPQiAgo8Ai4gS/4gguIANeYAc5dXxl26uOuj2ojHFUhCHW0cJp4V8yGFTPscGoWFhCvFnrjmaG55G9phvcGLR890z95If/6dvGgUMWnbbjNhuvMhGcIyeVc5ucLMIgIyHM913MDP4NBuIRBOAMf3/M91wtJ0ANN0IQZ0IQf0IinfpBSQJWltLPAIr5jdsqJNhBSfI9z83BMmb9dgCawFZrnMUj4htkzfyE1T4pEm2vylukBbCME0fEiqHUeF4UviAA2CHJRyPOk5lzOZV+NAAIjMAJ8gJDQJZw+Nr6rvvQ2r49DJrIHuWgb68EbusEEzuZNBxdTL4syF1Cn0S0mXPX76WH0enO4JmH23g445muQ4G1cF4ULQADaQE2BBuaCrggjgAMkgAM4gBBg8ONE/YePCixnF5P9RawULNCuumkewuahKXH/cPGs0PJ2VEfzcSf3Dx4y2Y1k2J69TVjg+qDtJajtd+9t3kZqzTBycY3hfKcI4H4Cmf/38KKfQluGKC9dKq/yrWachU+u1Js/bAZbTODmb2EWt/x2xwx34klzjX+x+waiV2/n2MbV2thrk9eIwG4ArhdsgAZ2l8+ILRh7sv+3Qhscl5NfdsTwTO956AgOdD+IhaCKave6TB1xMEeWYSCG0AILpV9Jpoehp/coMB6j6OEhWlgFWjAG18jMnUzj4gBw2wYJGqiEvy7qeu/Q9S1XjHAAz/98EEn2QtM2THdotm97LqkPaocwXrOV7hCCGIiBBXCNu7+mvL8VYSiLP/p7/2CUkW1R7cEfs9Sf2bi/FTRwhVVI/g0ADWl6/P+G49sGCaPuZ37O/D/l/Iv4fAdQAwaHEHoZnEIzL5xARTgJb/Hm9J/3aBvqjjaI/S6IgTYADVcAbaHZ9mphy7KIFt4nRN8HiEwCM/0raPAgwoQKFzJs6PAhxIgSJzLkI4gPRkESLVq8qJEiyJAi/60qWZLWyJCbVmLahGlXypgLPdD0sGSJRBgidvKUCRJPhaBBZ0BU80MNUjU+lyJMVWrSJaiTpk7iUxUixqx8mHKtqBVj15EeBZH96JDsI0GP0oYF2SVGFyFdFrRluOsXXryg6vJleM2WBVvQbl3ra9gwqUyhBv8SPOz4Md+LWc0+5DgWsmNamksi4wB5pUtMmHphhuiBF00MOCPqJCHCtYjS/4AKrUD04Y/cumVLjOq76lQ+l7ZW/sp7JEetxxOWbQ5RLVqyyw12mbtgQZsRn/NSw0RtOldhpSxAE2wBPHqGpBYzTu9+uuSMEslapvx+pLGTq5AZg9zSpSCYTHPfPzShZpNEr5Gw4IKy+VObbRDpMeGEPxCI0G/AWQVWccpd2NBXF6U3VlkQrQWdWui1cV0bLRawHV7UbCLPhyENU0o0gkFzXo3gJcZYYz0KyVV8FkmUVn1DUsQBMpoZo5l/LLl0oQeyHLgaRCJEsWUUDZbmjy+14SH/oR5VlKmHkMtEFRxww2FlnJIHfSUfeBk599CJaUkH3hTYFTACoDk8tgl3v8QZ0TAWlDIYMDweitmP7T06KUUhbkRfiZQ6RIsxnXLqmWP/sXShLAbSJBEJXG5JgmwVhCnUmA/NUEUVs1YxJFUaUvWmh5PGJ9kp4HnUkX0LoZgpeAX8OcUUe7DwGCaFaspQjsDYAkx50zoW6UDaervQnJc2V+y3/2yQTKedbuDYNC6xhAmpvBzIC6pF2JtGEVG0WoyrQcXq0AwBC6zkJKBUtSFUvGalaUbJEbdcw8g2dOKdfI4wBRNM5MCEFI7p9Qs28JZrUDSl3ALMybaMXNePj3S7/3K54UZErMQwp7vBBjiA2peULn1Caqmo0RsRCfaaYK++pVXA76v+QAQBBDNAgMdtQgJAlVVRPQwinJRqRd/WpXVE7CPPHVs2ejlgLIUPQ0iRgw+GPfPLJzEaCrN40Cy6KMxhtZyJy31/K7PZ4wpeUAs4J75BC0IYBlpLmCgTr5WnoWrC0Zin4WAxvjANAUR4QD016EoOp+skCnOoaZF0ljYuH4/E/lxaepJb2hBuE+BDIIHsTkDufK3iyjauYIPNOX0PVoq1wJRyOFPsuSwQ9NMS/tC4ex6eOAcbcNDCzm198t9/H8py/mlDQxQF5u0X4aDnnlfwb0MQBAWBP6Xjqv+1hqqH7evXVucYJJEoRSYqy1qCJJvcMbBtdKhBCujgAwJkgYFD6IoxIDEOZYCjJIKzxcmYZ63q+UR6gFMgCeN0vbNgSnuC4wAMYwjDukzjE714F2mAJi95SUQSJsBA+0wAv87xy2kPgZD+hoSwDfnPW6BoWNf6Ejtije1IAaoYeHwghd0NgQA5YMEUBNUWbBBqbpvYS98U5TxgOC+FMSGFy+KINjeqMIosNFz18qFHDuSDjzFoi8+kVKPzWclKEikCEIGIuX15rhjvqABEkPgoNiWsQxhJ3eDmJKLIYIpm/wOR7VwIHgKo4G052MMUlNWWXWACG3nZxOE4wbxZQoP/jiMJhRypZ0slrRBE2SOhC2IQAzcMk4/hk4kyNnFDd91wkITkYUQQeQcMUFOISntHMbLJL4i8SiiPAoZwBHGJSzTxW62zzCdjIpkCcoQi0UHLfb6IyimMoAAr0g5TfrGSZxAKG6k43CxpucuQ4HItCRyoEu3oSzxWzwVYEAIWsNAFN+gRCz5ZBSZsCJqV9IiQ51PfQyRBTQzcYQnWxEwFsJnNR3LTF2EKk9cwqTqZZvKcm1QnieoTu9s1JHtzdM8eAGXPFcmFLjJxxSY+QQ1+4kVkgpvlGp+H0IkU1KA/nSqBesmQForycC6YgxAgioUY9JGYI0HGJnaxUXcJyaOx/wCpQ364BGrW46SQSak2awHJh7i0r3sloVanNaxzCnA+ySkLzW7qTkwgkKfLqeeKFiAXsnKgCyMBxyfmVrdNYAMUz6ARQKHBiTVyAhSgAAAATHvacaL2tK4FxThjCwpBqPYUoGAsbA02292ShbGCQOF9qppA6OipdmixXSizp9yITeZrWAWXcyNSQMeurABzkKwQhhkD8LWgBX+MCDJWkdZPbFStmxhQRz0K14bIVTVzlU1ei6HXlvbVF24MrPWaOycoSqYgYBvWYScD4KuKqznATU8BrlOdt8QAhmjgo0SQ8QykbiOp+iTjJ0AbS2AAgMOcQG1rOczh1V4it7JVLf+KTVti04qGLLN1MW1BYdtRwPJDwq2dVXNcXOVylcc+HuxzE4Jf5vySjl5wAXbHCsPutqBT6KIFDoyBjCaZ5BOusPInPqFW8rrLFUOKBSHfKhETLMEDqlFNq2oh31rMl6++qEVf3XiwhfVNv/vVJGKp+Cs7yU6xlVJujwogl7fIEGcbUAennCTlJ5UEFdvI8qOfQd5Jk7EOJIyGh0EMgEu0NrWx3XRsQ13iFaeYt6amLap5+wg0EigYLlOLVWGNIuP+uNaIHWyAg4yQIe86sbu0RBtcANFidm8DnsqPSVyBCmVbGRVa1nJSN4oDJYGZkNUYcz3KPFcs3fUYbGbzXxv/wuY3u/S+Ch3ZnaHoMDtrkorplC5XN0Hg+xSA0DHEWbqepBlamMTR21i2K56xiyxLmlAr0XD1OKzpTW/ataIeNWzHmdtSlzjVFj/1bFlR4wvBOta0bqytQ35rh/k5yLyWk69JSAQiOIII/4iDdYe95MR5yiQlccXwXHHlKz9boz+LE5iDfu2IkLkeHjA6tx+TzW8fw74P+TacnQ7Yc69sbOne76/WeVic3jpAcWowB9CwuHRtht/9XgXAsZzlpPbiE/M+nMJLi1oRp9a0rZV4iUGdWgCcguGmpS1uYxzjv8/WtqoQxMYJBLizUQzkIk9unptjp4vITtco7xX2Ug69/5Vz3uX/eMEcxuqG7xnbU+G1uc7VfuW0JnVyh4pF0GMxdIioJn0IKs2avy11cet+99A7eU2v3lwA51omXYfno2BojNLr2+yNRvsqsLzzzEr6F5beJRtZy+mHQ1ziBbuEIAommts+cTiw5QNsUa3cRzD2Oz3SMXFDCfnjZy+xXf8adQdqKelqvm+cz0IOSEHnFQQLWFeSCdMezVzOpMuU4RxKUErsyZ5EYED6yAsGwJe3fVsxQATUsZmcUd3hnIKd4drI0cdS+FbXOdWjzEH3cIq+jYPNbQPa/duj/duEkZfl5aAOagvw+Vd95J+SdF7ncQETtMID5EAWCKEjcEEOWP+CFyiLC0ThAoBVWIleH3EAFriAtsAeF87eQ1DgDqEGfL1CLZChmnFgB5pbVtCU/rUOroWFWtjf2x2KEGyA85VEB6EC2l2Zs2XZLkDCDgaiINYR5p3FD1bP/yVhyznEHJBVdxlDMkRZC8AMF3LhBHrAMYThGLIZGW7g06VhCs3ZVQxiW+gJzfjWCxnbKiDbKpzDA5IiLMZiVjXXRhwiIg7gDlYi7EnEEsiLlUATZhQDGQ5jLXAgLHBiMabQhgjHu8kiSJAg5QGhM04jNVYj1xQi1zBU9SxiIOpiLEygLBxDIa3XYQhjGb6Ct0GEGR4jLNzXnDWjNfbU2IxFYcWjPd7/Iz724D8AGj56SyykQiXyIi+8Ai98lGzUwjG8gkJ64NOxYxmq4SX1o9lYXQtJpEVepCzqY49hJASmAkDuYkRgIiFl4kEqpEkmo0PUwjEO4wdiI0f22WABGUfOJE2aHAgyBzpJY02Ch0cGZEiKI5ixgxc+xjmapCc6xCvAQlIqJERaxU5GHoB11U5OJVUKTgAZVkVWZY18JOx1gkR4QCwApSwMpWMIo0mSoToq5VI2JTza454hluyooFbOJV3ml0tCl0zW5XsAZCfEQl9+ZSy8gizEQjmQ5WEUZVK240OcZVKyZU2SHDrppWROJiHSGVZonU5SZl/wpV9+Y0jKwiuE/6UElkZCmiQsKCZSMqZjziTYMJdmviZsvke6FUnryI6AZWZsdkUqdAJA6kInvEJfcoIuBGZoDmY1xMJwhqZyjiZmlCYnmOQyKGRCPid1loJCWudZruZMkhxu5qZ3fqdMCN9sxmRbgqdu+uVupifsccI/tqcugmZgwt4xyIZzUudSmiQnUCcnwEIp6CdTKuNN4uM6mSeBFmhbzKb9/VdkGqhjpCdv9mUnRKgu+KZvIqeFVmhoyqdsvMMr2GeHfqhSqiUsPKdC+qd2MiiKpqh5iieLlpyKcsU/RqhfPuhudmZfwt5y5qgH8AYnlIN9/mh+fqiHlihKVo8+viiSJilrrv/bD/4YRsyhkqZET0YocAJnhNJohlbijb7CcdSCcOonmAbpj5YolzZllJ4pmlIl1u1UrZVnmlIEcqone7IncLJnXw4ncQLkfC7HO3DCb47pmJboc+6pLdXjmx4qoiaqoi4qozaqoz4qpEaqpE4qpVaqpV4qpmaqpm4qp3aqp34qqIaqqI4qqZaqqZ4qqqaqqq4qq7aqq74qrMaqrM4qrdaqrd4qruaqru4qr/aqr/4qsAarsA4rsRarsR4rsiarsi4rszarsz4rtEartE4rtVartV4rtmartm4rt3art34ruIaruI4ruZaruZ4ruqaruq4ru7aru74rvMarvM4rvdZqq73eK77mq77uK7/2q7/+K8AGrMAOLMEWrMEeLMImrMIuLMM2rMM+LMRGrMROLMVWrMVeLMZmrMZuLMd2rMd+LMiGrMiOLMmWrMmeLMqmrMquLMu2rMu+LMzGrMzOLM3WrM3eLM7mrKYEBAAh+QQJBAD/ACwAAAAA1APcAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi/8fT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYoYmGPPCLIiSfy8QgfgvCxiYqYjEgTijTywWKKJ6oiiFt8TMLijzba2KIgk+wo42yZCGKiiSeWyCSNStYYpJFHjqRjk4KcAuWWQ3LJYoxgtQhkkGSWKeaYNlZZkZJ8bAUCCGaAEFOJUTrJpZd34khlT5P42GePffoJaJ+XYBLoJJ24xMmhkywa6CWMQjoJpD1eAihPv5RpKYpTdnmjU4+wwoogrGiZ55031tjkj49k1emZoJT/KeuUnd4YJFBo2ugjKKNc0iuZPs4q6yiytniKsGMSS6yQtqaJkpBdpvjjkKnSeiaOqUp7rZncknmmkEF9m1WccMLZUiZJLklnlKe2C6WtPAUKaI+DMnqopH2yVG+fnSBq7799OppvTrkWO62tLSrFio6qmGiqu1tmm+e0U6EpLbIYZ+ysTvRaqiwfxHoMMh8ifzyyxiinDO2eI6mI58HvUiszzNjWrHK3bf5kbVVvxmkFAwJYUa6cJzlp9JLsQnyqxD8SfOi+AP8LCkv8Thp1wFcfSjCzZ2Ji7bScnmKUKlpmosqorKyrtNJAUvtpUxbf7LbKx25cEx8A+EqmpXyT/+z3x3z/GvjIJhPuLbczIx5kqyTZPPfh394MecFy283x4VP1DKcZEtSQggTkkktSKOiWXvojmRy9tqoSc8qsTYzSK2jWfiKqEicCM9ov7QBfclOskksstlAaQPFIw8ennXaJaEP5ZLvPR4ttp0pVfjDN20Y+6yUsx+S3pWQWPuysIQdvfrQleeo4zJRj/DjX5pfp07cJW/UmCFaYIXpJSYYiSOp0QtqdnLSJTTzCgJ844MSy1SzLwUR2UKsd7VbCu0dZDV+QwlegOGGTWWUPbEwLigZYkYmFqaJholJeltaVtlMwiRVQUIXxlBc9TmnrhtfqHq6uV6z36YpIfPAarf9w5kEHvsRGywrSJfTWtyZ+74l9K1/8hDWzE5UEe6tjXxW1yL7z6fAm3MLK0PRnEtQdDXV1ahLj1qQiZnXLijL5U+2CJMGo9YhqubNgBUn2rw4Ky2stWpaYRjEzoOTihDE8G/JEZbTUqSIjLVrR3LblsqGAsG3TKtRFxqS9IB1rJoZjFvjKJKiMBWtTIgMSsToZJEKOglgAsJGWaJU+miFMSqy7peuqBS03Wo9M88PcuIhGEgD+T3UmygRIXjS9Zn1RJXL0EVD6OJFIDQyUsmII+3wiDiiEwoQnVKTyTpELkXjKYE37yRbFJCaQBMt9MrGRyHpSrFp6iie5Cqb8AJP/OgCWKF1KKiMlp5UKmMjxjj/ZndYoosFrxnNvzyRIIXeSBFIcEgqHVEVGUceKcj7rYuzEUU8oqSeTgKJuZVplzlyyrGX1BKXpHMk59XkrembzL6H4p9GOqRJtmQlMLYndNHe3O4tg0FA0kdUkGgKznWggFxj9wCEz2rAPuMSZmBzFTrZYU5QUyWBaOuITbSokQl6xpGTt6k7C6BczujV1ESWJJKklRKBSkFFAUWigLMKJTlzCUYvC5j4XIjGdfIAZuZBqLqCqUVVY9aHsHFNO3lc/faFzpSuBIj1VWllzFhafg92qMPnyT3SZURCh8B69ZFZQquH1J/4C7EX+2qgM/wp2SkytEU74IQ4NfOC3i01sKB57t8hSC4ycfNtLQAE8UWI2JZrliSAICa/GfXattExrTPWiU9OWiCZeA2R177pQnwAWdxy8CCcu0QnZqpZMdk0IA29SAg349rfATSzHmglHwUaOJsCjrlqhG0u+2VRm6YOST24qXQbnxbv9RN1Nvuo215a3J31dFHoxgjWrJeqBZZqaNnVbkxLkQQMn/sB9ibvVyHX2JW6T1k1gaiMRqyS62EUwSR7WX+y+bqQOvktOTYc6ZeJkZeCC5mvN26gmp/cik8rde5WYW5HShB9JyLJ9fWtfXE13tC7ZBP1eTJMk0uu5JvmepQ5MscYpGP/IwNSuEenyCNL1M3UV+QQmagil+ErEuEFUsryAgrtGOSojr8DaJUCxVLHurcpDosk+SmBiLds3CUKJbJxdUsW4KkS8Z1pRkVpkY4o0l2Q9NokTgXxPN9NowaG9XHbxYuc7Gzki6hJgGtllozVGBBOTFPRef6JhQzcaI8Um1IdbgibfMeRdMwkBpUtghzwkwb784AjZlOQwAXLERGzVV/YmAmzssahIwD5RrPzsEE74zZM3bmJPQGHcBNPI11vbtGi9pZdal04iBozkGd0154Uw040psRehNYy7ZWMEg5NyNJVH/GqZKCED06Y0pjGSCReiyGEuRFoAe50Rg7XEhiz/kgj4WkRhZAEPE8CrZqw+dmxVy5snq6y4TJ0n5wWzEn5cvRjThoTvhwzZdKRLeiiWTopQkOLprYi6NVoxdVwEgBtXD4DWsY6CSHDEdP38s8jZxecBolmbaEr4kjHc3vb2dSPotVqjrvrfEY8XJkrYxz4ywI8SbLwiZjNRC8v+8Zql+s/bvDEIJfLyHvLh1J1+POOfeIqak6RvsYwIo9+56MePUmM+InWQYuXikKLI3qePiKqmt85q7RKkuIw1wbT3czPpyYbv+i5EUGFGWyM9E0tnutOhHvWo48L43MAFN7B+dVx4XSNgBz5EjImlXRN8cRJxI5lFonBiZ7i9r+DI/3oZbnnofr7U8kWfTAyQ9wzw3SLoYqSuV3eiWa4pcSs5p6clCsjICTG5iVNuZ0dYTzSA7rREl5B5D7FEvcJEagYKi8Y9l3AKH+NKvAI8J8VDbbMlqHd4CkF/qMJJY3ZZAzZZGogy0nN7eQIR3VVk0Qd8wdd0TzeDrUAKxXeDuKB8ymcNAaARpOCCuucQm5AkdcJnK+Iyz8NA2/dpQBIsJ9F9TIZeuNMR44c7f8VsZ1ZwBLF4MLEDOzAABiAHSqAEFaFRSpI2zvMkavMuQ2eACwFobvgRcxVpD7EJlTctoJYiM8cHMGUplUckKVJ+ChErlGIjAPCES4Q3cVgQsdQrDf9IMr4SiU60PY8HRcgiM6NQdB/BgQ+RRerDRVTURSU4e+cDQim4JZqIEBHWXdGndDE4fDRogzZ4g8Z3fNBnZ6iTWg4BVwGEJQf0gRHDKZsAEdvibCVxKP0CFK8ghVMofv2iYZcAC/ryeYv4D9fVEl7ohQPQAz1AER/QcYJwNqEyjg8zKlpiKoRHdHyYcn82bifBQKl4EC/iMpgkCOw2ENMDSNwjCK3lECgFPk+YN4n4EJMCiYKDgI6IgO8mKyIziYpTeB0oCMPYEEzSOi+DcqL4kMlVjTIxUL7Ueh+5gW/WEEPWSC+ILnYWfK84i7N4gzZ4fNyQEcHgb7fWEGm0Lqr/t4J1aCZPWDWCmBPM2IwcYSjotUT6EivvBGkeaBLZuAM9IAcD0JQScW1bhl+KFVyqwAzfGFxQZTYr5DzRsl0PgVJ0aE/sBBGuF3MsmFxFAhG7MnHHmDcFRpAIyDcKGSt4+VXHQm98U3vc8zU3kokciRGo6BA1ZJEg2EDus4RbU3tD9DWnmIIPoVNu5YKlo3QwKHwzOHw1SIOtEAqtEJMZYZkS5hA3eSKfQBHBOJj/cCZOeIz+Yjvex4wesYxSGHHxdmbGqBCpElYskY3bKAemkI0RsQ8akAQnxmVWmVh/Z5h4onMOAYBphjCDqSfpdo/a1FxZwodoqUSSF5eJeIgO/wEAk6KQ5WmXGQSJiUgmvDJd7jkKFChPpzCfuLR/GlGYNhkzpwiKQJdDC8SaNHGEMbYypjd0vig9k1mZqIMKpMCgqBAMNjiTNQihoWkNybd83EABGIp1zCeaGgGENbkQvMguF/FxN7IinRhEugKgFREo/eJwPGGb6AWjGuF2hnaF0OU1SUlxbPISTemFEvFUiCQqZMMHZEOY2/kuoMAKEQE/LKqaOPIIWtUQ5XYi5YYRQIKU9vkPwNM3JjEJArlmDlGXS4R+TsGJFImmjqGmC0GZ0scTRBaPBmEnTqIR2YJuD7GifnKMLyqbPiGjG/YRhoY7EJibfvILSrmlIkGcEf8hVZkQQ8dTIrkQoiU6hzgyPHnKhS3TajZJb3dnESjFXHxADQsoT3NJEmCKgD95EOcZgVPBpgrxPCYSGdBmmEejizpBCqeDLruYLnTCEbi3pSoqKLDZp8oIqOH3Ea/gdlZYCtDFcrrSEPuYekPxAY3VMDIUjiBhLGEppwahfYpKEWKGVgxRpec2kRmxjyo6pUw1c50Hngi4gGFqlFKxa5N5b+EKGC5DrQxhkpRqE0T2ps+2U6m5EZNwcC2CrguRCsEiRHyKKMn4EzK6rMn6EVLoV6sKEnujhQPhekQhpDH0qKjDYh7BCkoYriHFjiHBOtF5jYS5KX5DqmNql08qEan/CiniKa3zuptPcZP3KnK0OpID2108YZn/ihDctiQeEXqf+mk6Gq0j4S+dMLXHijvLWLEWS35PdlZZmFupQhTepFHHE0MmEayK6p871yWdKLQakZc9sqVek5Bm6hERSJ45yxCgMK93+xRqE4Rtqob5+heq8hD+9E9Fe2feOhAKGrjP1kvYKV4r+rY165ZTW7nKyAlXi7kiEZSXgLUtE7lz+61s6xPWilHhdLTbKiWJK1GvYk42lKcosmcfcYe7sqrMRUiEGImxcnkCCaYECYHkmYBToYZ+G6uAGxnzZauNBKeraJiFu7p/RmGdhQn/1yJP+06MuREvarkSi7ne67ke/xF3hfaOdIQ3iSoUUhVOUAW9HEGdHBmZrssphumydiqqUCsQ2wmBRMJo6emIGWunAkmeD1EKevuqvfizHxe00Pm3y7sTp1O8CXFMdiKoNtRyo3Yi7yQoT4uqlRuxf8qM4NsRx1AKzOisVxS51Ui/FAVVVPVIKgFu6giMZruUdjq6SKvCkFSQ9nsK3DNqnpeI6Gm+I5GAdfkQ61WXewsq6rKlfcu+gpG8FHk0qCsTwbCr0CvBJYIK2xpENNJ/2CJEfgJE/6sREPuiVYteIUyFF8sJ0XDCPgKQPErDOIGVXUmy72hcLON6wSjHSLrAEZxuqAkSeFmJzHUK9DbIEEiIEP+ksCFBxHa7gBCIgEncFHQqCFrcEADFbchrwwhxRlMcE6hgxaZ5NCEByPZokeF1ZqE3CdjJEWVMtd2LxtJIEgDAjDT6ESu6Kef7E3mwWI31qFc1V87CJv55JyLxCbCKEBLTCxorCHwpJpgggYIggYm8aKIKCiY8xGE6yQixs9y8FAFkIpfMEJk8q5CBwwehRoarE6tgWqY1ykZTyhGTbjYCbPaMwYbSyh0htbD8wVbLCcdQEuEQlMBAEo9XSjaZLYZ0UblAQjB2e9cTlrmnzyWazAchMYzMEczlzM48KBFYzRc4CpiwtSMRwPTaEK160lBRhKi1i9zGr42RLexLp6X/mRM/iLjwrLQrS6BDkm4+glRUs723nBOvkLmvENAl8c/j+7mzk9Aogqk8oQFZKbb69dDUIsw8zXMjMa5+fMM0ktEbISSHPM3TLHeTErolUcAOAQx2G69SoTq4KqLrAsGLgc5zWoSfDBNV3HvQezSbULAfoQ098gjAdoSETdEm0cH93BO1UNTeWwsm8Q6dUAq2iaMhMS+7QqUK7RO+jEhOHBLH4iWvsq8owdUwHcFd/NkR0cMnAj6MVtAxQcRE/BBsTabDm2uEW8mbjCVrqy55/RIJhNOYbDSYANbAysqIvRKKPdQ40dhFDQucANkmQdnMWA4iYSmCsn8I2hNPlUiq/5AJGtCRom1Dqn2fz+OcTQJsI8EKk7IMOCHbwttucjnbb03Ku6jb58zJBzF2v+0S1lBkZmSYBqQuX7HcQOHcji3dic2MPNsR2P1uNunDjKsSFxVOTCoTklQrRPfQT7KLB9vVWGHS2cwQADDfJX7bRhPXCuFPmpzfIJ7OadTfLsHX7Ju0fEwVBv4TCA4Lr6DgJVELtkzSHPHgcPyGNzIJaF0Tnf0IVS3euDcTWCJmnXjPYzwVl1AKCVjL8prlAADbUfG84yzXBwwZFg3jSAPYOUGZM/3Sj4DmWtFXHXzgRT3nPl4S0C2FpTDLHjEvRc6EVrYT6XtCuVDeMgVuNoE0Uv/uED4yrjDnFQBAwCXe4AkR6SV+4vWd4g6RU+GswGXZr0Vo3AFauAkKtF0B59zrEwhe1MVwO1KYCiPevqfEsfibKpJuEy0sQ3AR5Vtqj/fm6FhOwEKeEJwglyX+6qBSuKTQq/b9GGV+10gj4y2hoCw4ooSeFDmO6jxO5yoRDneOXu69tBBUjWHZE+EEBbwKF7JKjAVkj3RtFaVAwo9e6wcB6XJp7JTM10Z3Rpyuss8W43AqxXUoQJgA7Uxx7Yzd46/A43VuEkFZ5TYLQUnesdXCEy38CFAQF0+yZ7uwthIpkcXNFfH+7t9sEGD66Hlj70zRgrlNmZx+4wORyf9TtHb/cu7Ki+hb0cG6wNw30dg83+MssYwk3HB0G7nyzrryuxPhZPGZ4FFvgeguPxCMTtjtPhWPTsDAgPLzHsCPPhURhi7JTpJOEnZk/rqmSXYEvxKroDoseEA0rRUdHAs6bxM9z/M/zwl3PgmlEA4OnoVVjmRFazziOBdRImagLo8KRL1KktxMQcDvfvUDTMBZjvVKsauZ8PUMoelu1fK7njTVjhJqr+5MwvZT/xSdAPdtd+A8DwvH4AstYfeA2hH1IuuteTA8kfQNI/gdr94s2PGE3yRYIfLvLvkFwQnwXuxcD4StkOk0vu9MPNedXzSN5OZDS3aELf1QkQpwrwucEAuo/8/ztcD6LMEOJNztwt+kklIpTEX7OoGtx3P7ciH1eyaREZEkve/MYoYN7h787/4QtwAQpQAMBFDq30GECRUuZNjQ4UOIERWqepTJYqZWEv+Fqtgxk0aQIUWOJFnSpEJBKQXxEQQy5SNBMD+epAmS4yOcmR6NfLQJJ0ycMXHWJFrUYadYSJEaZerQVy2oUH01FfmKEyxOWa8a5XNp0teuEkGxJEu1qSqKrFSpNdvWLclPmB7J3dRSZM+6PuvKFfTr7V+QAksNNqiRk+CBhQEvbnjxok2PQxlPpmxU5Uq7El/GFDSzMsmfP0kKqhs0KJ+grj5PVpo01mqTT6PWmgr7YP8prVq5ep10iQ8fib8xA7ct8VHatcWV1yRNN3PInqTz/tqUF9Sn5W453RrMHaQtAJwKFsz+VpVjzxFDWey4s/z71ZdZuoQpND38haFzkvQJ9PLmlfArqrWlBHRqNtqUe4cTq7QCpijfJuEDLM1+K8tAhFiBAidWnsPwQ5j0igkuKDD5RK/qfBIElM6o+dCkUrgrxRbFIhLoMACAqfFFk9Zbz6KMJOJIJ53c4/FI5lSaTyPO7EPyH/ZCM0mQT4L6TyhB5NrlSYlaS4rLf2SLqoLlGswKNwgn7GrC4Hy78MNTWMFJFSjAxO9E0uYykqeUqEuxv01Q2wQUF+10aMYYYwz/TMfByDM0JFVC8TETXDQiJbJQHtX0oSvp2+y+F/WTjCRUHmEJwP+im2tThLzsBMwKpKqlGDKXOyw3ToiaUEIKI1rzTQM/eEROOT1kdbW8qpPLpFVwug6vmET0UxBsjv0nUe5uAemWggh70NqHMpFU3Ey4sbQiIkEF11D5jHXISqC4LDKnzk5C5ZMm60sJk31JYwmTTZGKZeDXuCymmFlpq1W5aHDlJJya1Oytt+AsDPBDVU4ZdlhV1oXtRLx6wu4k6fL0SS5+MQHllxVZGfnRUiyY8RZbviOsFEahgcYWYIDJEWdQeu4ZGmCoAWCZoqEBBZRnlqZm6ZWj3vMzSasO/8VciUhhr8hJyX3kx62JzCm0zn7azNSpPWaqXU+l5FJUd/mc67K6srQ75Uk2MZTgWF4p+MkKEBZ8YeWyMvOSiL8CC/GIBHHzYgw3JvYUtVebK6+eiPpEY0yU9RwTlpfeBBM+CgWTZltktgAkmW8ez+eec5QdFACWvqT2Sy4BRXfdoV5aZahZHhQ2Uqy+2tKw0RVbbFH90/dK6E2tvKlTMWtbJjCrDKrIovDFkrS7VQpqk0lePpJvv2Et5qn1CS9OGNxye4UmxdX8FqJfITcwJjkfOSWX6VXGFZcTWdpMEpRfXG50LKoLi36RMtMdyRYTnODqNBIN15UCFAIJTyly9//B2/XOdyMk4e9WBIpTnMJ8kymepIoXAI20Aj3zah7ZzOY86F0JWAE8SfX0BxHO/ERdL6qOfoZYktGBj19ZSpndVNI5JPFtYOrzRfvcV5xXxO9MsDiJVyTGOCA+jjgY6pAgilUnHk5GJ0WszhHh8glQXO4XUGMiv3z3iHlIMBqps0DNNEIMANAog7LzGe0MibvdQU2EJSThJlixGlJEMhSRhKFGhnSRyNCwhkHMYSfHmEaT+PCTQATKfuwklFIakCadcyImmpgloPDBlXr7EN+q8TckBa6KvqjAFYuDq1TkyiQR2hUogrMS4bwoJR2CCSgpY6IinmiFRKGGK/hVnb7/uBJ8g6JdXZbxIj5aoI8hgcbNGoUzQs6udutUJCPd+QhjfiaSxaMkSCwCNkwyr4am4WQn/+PMHiopbgzJ16i4VCpUmpIqqRjdEh16N9JhYhIDVY4tcXkkXdLKFxCAjzBulZtQ8mpXErkEMpeEIY3hRGMAZcw2qiPNTXwiU2ZxRV8G9YvQzXFpcwQd6DAUznGChAflFORghNYz2sGOE4nMnTsNqdOVpQQUrIhnZVoxz+JRICTjcgy6IrPPG5YSS795XkpYShKyWI9JYlUlj7QHr7YWZaKc0WbKtDkJiQqIYNWQhSyoyEtf4AE/DhMmWkVKMV9hpqTKLJYZz7qYT5wo/6ZFjCtRXMlKqAKPUL+LYHbEaQFiiHMkhkidzrJVinJyUINHjd1ATojCnboSFKpo4An98pmrRvKqWg2JJMfVta62Rz/9TBVmLlPZxy4krSdtnPOQi6EiJZQPqABMoCaRCb5cNqK9Ks/AbtlXWAG2AoEVEGFL4sXffIWkw6HocswYk1O0N7lEQUVMI2vfR6wCMNRwHE5Xxk2ngQKvnS1OaIlhi2H4UUB9gWccV9MKCJOiFcHgLX5QJd/5ImS5GD5IvkakqSgBRS+M4ZcsL2vizpm4u7HoK3i51Ete9lKw+LFFbnAzv5H0RmIAqBgyOQyb9woivmZhL1lMJdArlbV6qP9RUlqbvJKKfGyyVZLmNNtSnRJq1qfZCa04D4whTFCVqs+lCoSvCmEU7C9VGdbIhkFipZewSlQ+wRcpGLOLSTwiz3iN6N1SsRyCySIWvACTP3p56BkY6GGcuIRucswbXklkomkNFYCaMoqU+FCHRfZnp6OnEisD5r6RvW99t8EYecjWnQC4bXGGcY1hECPWGOoLVVm2Gm6YGRetWISaj8vmY1KaSWuWcyai1ZOemEg1JM4bE2U5IVeO8jMDazGhuQSBQ/eSowKqhVYazYlXiYRXOgbjQybkY2UGUdo0Ma6n/blhJ59K001qEmx2kQlS57u++mXMAjULCpVhAhjlXs3/MAxucGLQeo6suPVnuLFrXOCCG2leMLGBbW72ekp81sIXTvTyCJBtwo1NaehE69q5SfwZNoKuNpjwsIRsJ9pAVvn2YbgYkq4oDrEQuQTpkvkhtlnG3e1ycqaNXvShgxo22/gEKlyRb1c83emT2QQwNlG7p0GtdNGwzcGHwYNhKNzWP2ZKAB6OC7NT3MIWv3hD3LzWX4MrpiBXFSvrMplezAXFs0z5yqtt7Sfh4dCGlrmBtMiJSRS2zRH6CsHdLqGukP0zQS/KvD1t+aQPvTikfvrTP7ELzk8mHIP69zImQY37VebrXwc7rac6VYB9xuyzn7ivN952hxz9x6giM5Ko/4zsj/enXotJhUTnwuevxL4yLZYFLwCPJMEPvvACyqK3s4JzLyqOpJD/zYviq6S1CefoZf2PKNudefH9sziuuFfT2990UqOCuouRxyR+sVTfPW013uBB//vv+tfrvbILAAIkwEgwEE0TwOR6O81gO3BRlY8zDaAYuaJ4hE7QrsuahM9ovpbjkuirAAjwBz14EVzBBMXzFcbjgx15PItJt5QYMstwMqCIo4TiJ49zpbnpnM7pD7hJkei4sOxYhXuRP/hzumdAhV3YBPlbDEzIut8JmqqajBVYAR6gwhXAEG6iqo75DAoIAAqgAG6ggAOsOONSwMdast1zwHWJDr2Qi//QEJFQM4riwys+u6zl44W+cj6XMzQQrIARJMGsaLTcAQkdGzeSspDu+xAmy7Tw86HJ65TyQIVV+ASmE8IhzLcq4Te3CINfmIRlWCQC+4spHMUrNJDXYzjJK4ovXEUx9LVTMcOzYsDEirsAQrY5I5u6icOawECJ6oQtmYzmw0M99MBDC8E//JCPSrzD0IhCHClf4b51ew9ILIp2Q43PKCvli0RLZL9LJMIhvDdNpAonpB1MuIQwoAxSnEJaexqGi8LJQAEKgMcvfAAElA9YZClZxB81rJw1QrYqqUGg0Caz4DMmSjltmAznS0gPcLkKMDQIgIBj/JD4SbxGazOd2zn/c4NGF2TEGFQ/ytCX+jAQY/gEqZO/qLvEyAK5TXiGZWsKAMi62hE4rmMMJ1gBJ6jJUgQJT7gGW4gGYOAOHSEaooEdnMEZpKod3/m3nZKqhWu4ygiCeEQBqeyAkMg137KaGYIbkCyulzgyWsQ95cq4YfvKNJpENhyuk0mRWWoKk5slV0LIhOSFheSSGdA2PIBIkJABGYCNQMyKTgg3/NG5sHhG4YjG8phGoig/CqSKszErDNkAIXSFI5S/IZQ/pmu6ZwC9ZxgHppgEQqkd2JkMBbjJm1SAkPCGzxInaBAnGbkZoYFCqAGGLKOjX2jHqXJKyoiEIECB3QyCkAiA3MJK/3zqKk3apCSzR7B0O7EMtts7K1TIhNL4ib3AiR28rLr4xV3Eq4KkJcCIS7kEkxkIwYfEy4jQS/NcjaxQRkfLyItcL0TcSMekRh+6R5Kpj5DkEXW4FyGcRMoktWf4hP/EhsxEhXUoihxJJGDghNR7CzBwgtFUgCYACScYhmj4rArdmZ35SR1hLaRaGtl0Kt+xNdykjAcIgiCIBKoECaxqoaohl6wEKwl8t+RUTmE7Jo9MrnupG+lkwyQanbpoyZOwK0xIBcNsCmGUy+c7Ek2ogLvEgxlQg/LUyzcwz72sjMNLBQ2EiHGTkBVkCDXZobW7jPC7Ucbgp/g8kmRAQlS4zP/IYrr/fL9N2IVv4M4gjc2lMQTGmIArUAAwCIkVuAZxAtQLtQAMLUrWOlDYLCR3miNGPYVWq4wa6ABJDQkKwCrjAa58glGx8qcZ9dLljAjya7v6ohKTwQsdTKJZmr9QKr4MXAxh9AAPWAIweQIHcIAt2IInQAKGoFIpxYc/OAAb4NUqBYxmeAVYwAqr6NKE0Dne2L7ChE/mYjfKmwx4OdMnSQYhZLp7YVNSA71fwIZN6IVTC9KXFBrHgw9vCC1AXU0LqFBbuAWaYa2kWq2kop3MAoVBGZQG+4VnEIRxfRIKCE56Ehewwaevah6ubBf6BKh8xDgyvbi42EG1bKi9SBn/lSMJHZSozvGrv5AFD0BSWeUSB1CDka3VJ3gIKrUBLQCCKT1PyogfD6rIh2DWwQzMZwW6fSwJeYOyybNPa7WTSWzTXfjPUasOnKIOIBWJeXga2eyZmTQQsANUC7gGaNgjnWEUoyqIDT3QovEdpAye//IvKJAHOwHOeZokgk1b9EBY/0io9LPPhWVYk/qxeevUg8CTyarYlGkoTJgGJKrD4uvOj4XVkA28XvIHPMCDiHQIYbUN00vPSeAxh8g5xTlX5fK5RKS1JStSkdA9d1wMM01FA5nEmNqGJCS1TcCpZ/DRUJSIpynXnvkQsFPXaAg7u0WIgJ2nTLCz210Nsvi5/wZ82BlFhVNlorshn7whCVZ1pU6YhLl0Czz82CXAAJGoBBGAAdiYAX8YT/KECF79pcSjyKWaXMG0XIX40h8KUzGVz+HYWaKTN4sxOijj3ITgPbUxh5jCBuqILJxK3abZhc/VCKNBPZ95BwyJ2qm1ADx1JhBoYBCgVAnDqt713bl1CcSc4CT0CVmCKGwiibzR2Av8C+eLVQ+gXpCwXhhI4dUQvBBE3MV1CBsAAnywgcIJX8Qz34kBiyzVUkSkX+WQX9FtiCLbXPGzGHjjNDK7oZ8FF0jYBGyAo12gBj85WmDwW5GgV59R1uWIWqn1BgbWARDQATEGiYC9qkni3QmmjP8eptuc7d28qw++daVJwE6NcAY6xIS/FGG5nF4TlogGgIFKqIQUboDPELztfcgXZgggOAA4gIMDUI5wYDTEm+SGEEw+kFz8eZwdpjXj8mEmQTpNEz/00widyBdQWgenS11VBoVeAB1nEIlDgEKfOcH34IFmAFRA9WIeAmMxlgAGSAQxfuCIgMovJMAKS2PG+N1o5ZT/oFNkTojoEFJXomOJ6EU83mSzkMtYxYA+jogGoAFw/mZCrgxDbsjufQg4QIJcRYJH/qVOEERlZAiJajz1IkwL4ZEiEzqTWi74DeUmE2WVkIhSDiKWOhFqMNpNOOhNyKOQYFoN0mKjOAGJPgH/P321BNZlcNEBMxBjjk4EX+4APhAACSiDNeDoBh5jhaiBB1jpSFjpZ54MZU5DunlpIebFZQmJWHCl4gPMtiBcPgYJBGgABBjqBhhnyoi+Q07khbhVXMXV5RBESb7YZV0cNrFnQcBmARmFwkzfUHo38ys/T9IM53qsT5Di1G1CangEsgUJn9yg2H2LiZ5ooRqGbLBojA4gji4DktaBNdAIFCDAh4Mwml6Mhs29Nn7pT/hgDBQJVuXpnt5jDCjciBjqCxCFCxjqQi5Gf5g+h7DVLbBVB1iOUrDh9FSu8g0OyONq+FDmZT4JU/lqHSJirzw/gfbZuLUTV6AOangas4Zl/5yxILeYaCpIgLiWiNG8ySl0AmfiaI4m4wibp8EGjMIW4guO7oPAszh+SwPhYwwwgW5+iAio7Aj4ggi4gQuIAHIevM2WiFpt79C2FRsuRxzTsNOOCGj0ZNtgbfymDOgJ3uY8q3OwuiZM6KJRjrgW7uEmA60mgzGgAio4cIleiAkAAzBoAgvvU4Di5d987kiy7reAXzYWXg+XY+3CEBI4cRFIcQRgiAhocRdv8RtgA144gxt48Rf/C0lIXB3XBIlQAx//8fLojUnGyH+QmAkx36l+T3w2YgMJ1eYiy7PqnGXAKSmuAwFBcLmWCCeghBXgcn2ghDQuYwn28LbgZwsWcf8PV+wscebyKII0cPM0iAKJgPEv+AIajwBRaPGj5sOG5OyGUIMf+AFA/4HyAIBgGnLF0+EjR20lf5HfVSv4OD8Mg7MPyzCmOdotww8IB4kVqOtXu4a7tluzHXMypwrWfrPqLvWMXUsBgVVY5WagvoA6/4LL/gxD43M/Z4hA33WlXg2onoR3XlY18QpMntkePpJHb+0fTvWFGOh4YbPdpoZe+AX9w5As1whPMDhYs4BQ79TcJfVSZwpEVG1PhfJwr0OJYvPlSMjplWyIGGoEuGzMTu9smzGI0AN8z/f3iOQhB3b6PnIiZ8F7PpJ93m/G6G9Qhdvb3hTQ4W1saN1HQeD/XE7jALBUNA53rqjgNmN2MrfpVtdmWNeIoh75orZ1Wjk0e3+IGdCDKmj5KoCP0Z7k3Ik9yGs8HxapzHV0Zd7C96jbiDC2IFp4TZGHhKZ2asjGY5ndawitbKD4s50kjKeecQcJn496hMDAIH6LwS3h736IBqgEcKaBQLZ18WJSiZgBtE97/BDyiWEciZmYiuE+JClMMFUOJweisxF6TSn63Q5gTZF4C2j6Ca5437p4q6eJmD7z9V0XyNyA1Vh1pM+O5iPcrncIQU7hFK4EW3+H8RqvlHcIJw1PtB8siqTnIj8srPZSjZz7qY90jq9f21YOJniBKXgBJvgMoycUddcU/2+waFx2ehadqcOPGI3374BmlRZwhVVQfvb7hFVogcrAwE1I2uXw2D1294eAgRTffuytDH+glZP3B4m4y4e8y/KiZ68ABiOvZ5sdeGQ3YoP/i7t/CDPV+5AYgQVogwUogAIAiBEjprD4Z/AgwoQKFzJM+CsVNVDUNlFraPEixowaE/IYds2ChWvXNpIsafLkyQChSIVqSQolzJgyZ9K0KIgPH0E3N+rsKehRzaAlk6FyhWrV0VVKPwnNiGkTpqhPm87kxcuDhyVLNsIQQUKEVxFUMfor5susLzwZIfiD4BbC2JkAJl26NGkSH7x682bEixNnXKo4b+bkE/ikz5+CMv9meqTTMdDDC110WbCgQIERe/aw2JNDckKKEqlhkgf69L+OHy1Ey4b6dVBupFi6hG37dkzChTfm9BkZN82jRY+6WvUJqTHYUp9GBd7w6lWtG72SqP71dgWzZitUyFgBwvfvzi3etXv3bl4+lwBj/Jt+fEn3N3/D/5dYZ8ZHjn/qv91FyAJtZLYHEzlIwQQTsFH0CzUM/lJfTc2ExFprEFqYEC601XYhh7bplhNPidHXIUbGCEecUkq5QouCzEGVSoe8yBKdB9OREEUUN5KAXTHaFeOPd9yFR6JBdpm313mGteeekkQqNNhfi1koopQX6cdff7CNYJmAmuVAwBA+EJD/gw+vTRQRRZs4aZInE4I00prjtTJbSy3FeadQTFaJ0X6KjYhnQikKOmiLUEHFFIeyzAjddEXgGIUkO9qWXY89AomRkEI6CcyR6J13V0ZMTgLoQfKxVx+V+UH2CCaIvpZDZywYCCYdNdRAxxC56irZKvJsgw028mBDKkY8uGmLIcTa1kqddSr7LEl6hvjYT9Ai1AItqNCySnHbppjPa8xJpSaHVplbo0YkFCGJo47eVlaPZ3WHqS8V1OvLmpzQlWSSTVrkHl7K3jTwqfD15lNGimF5GxNTTEHglz4EEoiYXOR6mjLYbEMNx9tYu5CE0YCE7Meg4dKsnSWrnJC0GvlW/+3KHLhhkLferhIuVFLt0qGi0PGykbpFCC00j8XUUsw7817kC9Nn4btmXvymN+qSOAWsLJS7oXqfqn7+eRoLBH1poA8+HFgQaqItQ00vYax8kIQf2ULy22PhkklLeIdS99umTtvT1yVzQAvhKb6Ws1QkyggduhlFUYQJJkBeBHZHH12M0hY13XScnJg39XsY+RU6sYX1VjBwB/fE2H6Q1ZdDgbCzMEKCp/3iYIN8/yOhBbb0nqzuQjEbCt54B19ylDu5LOLxqyBDy/PI4JD2uFRzWI2iWP2sURqRe0/5pLWIj3TmDW3O9J1R70X6vwBDezphe+J2n/wMXelnfQRM8f/CHlOMkBlqQIG7B/HtI9eAxpuOF5ThFS8TCrQWk/x1kYO5LngbWAX0npeM00wDcZiw3oUWxyiNRMF7d4hc5cZXi/IxZHO1eFqc9mU19VwiVEyC1iMiKMHbqA4/GGkM4OqHmylk5n8FWADaJPOLTdyONLpbDWtsAacHyoSBmbgiFZ/VsoQx73jG+KIxoJccyTzCg4EbD/ZmNKONpAEDd8CACeB4G6ONrx0w1NwLxXdHJ5UCSexrSAQhaKodvmZgieGibyCUgzYwsg2WWQBoPrHE25XmiSOLhhSzWMUGGk+TpNoiRuinwBaAEYzgOgzioOIMEqVxURuRBAbc6EYTzFH/fOPbYwv1eDRAYQJ0V5vgDQX5IUKCxic4yaEDQ9knH9bniJbpwn/aIBlJ/gITDTIN30CCSVuIzJMwsSIWvYknUF7kPmdU2QZK+cXDfGIS1SNSK9eokTi+MZa0nNQxbPnCjOhzl3gqRdRmaEP3IM90hIGNTgy6uvy8zEIvqAw0uxCDU8blEwLcxDKqGTxi2AKBtgCGBcR5klZwMpkihVqUiLmQZTIzePnYQAvSCca4dHA5giBXh2KhqJ5tJI5LwMBPMVBLfRaDn/0kFV1AN9C/qCxrBAVNYXqSkxz+7TEXagM0Y6DVGHAgMM9IxRKpkQpQBA8k0JhbKUJ6UpKQ9IpX/zznWg2WUt5w7YExvesXNzCWD+YMKk7SqU7lmZE48kIrP63lMV7RjmMUFSP9rEXp9EKXpaLufRFUXlz44JioImwj9+MPh7TKgRiggQMcQMNYeoGJSS7xeBYoxVltUYpoxHUjpHCrW2tLpEBqpIdCrNscTAtTMCJDKMoQxHKi0ou/xgKw28vIHbKyhMIK1TbFyGctXuHPi+gTFpAl1nrUA0JABrOgetKaUOIXVc22lKGJvCpXTYsGmG5gDkL5RS+YyMRfLON414CtbG9BW91i5LZv7SSBL0ROi2y2sw8UQgs40AJSylSvM9nETcXVHOYGVhY99YC5eFFd2IhPu9ptLP93tVsL7z6rLrwpb1N1iN7cwI+zCyWJiOB6GyGUdgPz3UA6UTsTeTxiF6yY5CbGW7fXWgAYsh1wghti4Ec0xqRRrs+CG5LQLWuyC6adsDHS+TwLn2QVk9iEoaKS5Dg1t80e1kh0Q7wV25Q4u8doBz+9W2JN8vZtw9QhYmxsSKmiJFUdikFMgRzmMNKCzCY5xyae0UQmggKnZS1FR2FbCmCAohSlAAUwACBqTgCgLpcAAChSrWpTq1oQoHA1JnTy6lnrJCqsyhKRiFdlKvNaP6vyNf2CPej4EYxgvdGxOLPMkC0PzJNYkLCijZEMZDiPFmPMyCrK6CI1R2UabHbzmzP/ggEQm2vOsCmGiV+Rz4y8wrvtPgaf01NZ8w7SoMkziCFN59SDcRYlLMWElS8UA0VvwNqMNscqro2RdTzjE6lQBZonzaAHvvajngZGKQDA6VKDGtSoFjVdLgEKkau65KBA9ShOfoqfvNrVqWbFrE+BbNxMmcqC2LWvc55zLH1W2D6va5T9ppEG3ziLQpAwKcG4rW25ojgponbTP4GKT6C56lV/iqG8/e1YvCIW1djIuEPcuNeg+xVmfwWKLWJiO2tyfSq1lnplrMMt89vYp8shZk3Ch02wdE0xSMYXCVe4VYBDUEkhPFJcIXWq/0LSkWbiapmITQXK9uKeznjGSU1q/1Fz/tSoXvXIQ2/yVtOa1qwQBCsecXoikYLXjdE57IHdJ5b+3JjFdnCChR4qoGsyuNEO/KCM0nTFf6L4n9gF1a2eSkC1ublf10jYQzzHs5+Y3WeHBbyzKO95r+zPKU2eer0PpYS+XZmJwXCcYqAOwS9dUNtQylGMvw1qNjz5S2SipJ8x+QdmHOMYxzwAaB7ndd7JlZzIHeDolZyrLaDpqd5NOcmBxZ4EKgzt1R7dDRuIXFmftQfveRIHLNoXOU+KFMdwEF/x7cImoCCaPcVN+RXzNV8sgF2IWcVtZBf1Zd9FpJvZxdvoUFHcydiwkZ+94V35hZLC/IRmAUoYFd44DP8KUgzH4hlfw/2CJFWdJEmSN90CMGwhF5aap4nayYVaAYKhyH2cXaTaJWACKKhhAirgq7GCKtwcBL5er+2c7PlJEFUg/fDbYABOEXqTsq1UB6oMERSiRcxBtCEDtRmecSie4qEgJKbgCn6CKxALDMYg9FnFMfBCNYwdaiQW9X1XDlLfK8QblGiS3V2WjembetFEDzkGJiiLzaTIiUyd8X1Cwz3D4+niEpXRPIiULQDA5Qmjxl1CKdRFqR0gq6kaG47cJKAh6bkcrf0EJrCKIFTEmriVBE4gsAWRBWLgwVyZQQSiQohS3RQiOl6EEGzAtGGQEyqecSBfJCafqxBLJzT/V9dhYkYswYxsYjU812vY4NmlXUO0G/W1HYxl0Sl8HxCSX0LVRDXaHsw8izG8X+KV4DO4Qi5KWvExkUVhoTiGpEjGCTkmhDkSIhE4QhZwQRak40UsgBugAQ4oXeEoA7dQoiNW4sfcY/NtBD/ywjHIwj/WICmKotpdXylqX0Im29xFCVVcIOCsDC0cB05GoRTezibg4jmMJFd2JYfoHp8MG7GgI1lmQRZIwR50wF90wB5IgVmSpSEuhCX8jwu4wAIIARYIgV66QN2kAj42l0/KQlBWwyYSJSlmBCwcplI+lVcGhVSdZN0wglLsglF8wja4Qh00pmZu5niA5QQNIrQ4/0IhnmVLxuVI+uVfboQHCCZhCuZtkCInwEJGlAL1cYIpWg1nzkSNbVks5qZv/iZwto/p0NUhnaNomiZX3qMuNFcnqKYsvMJzuqZtgOLZGWVDcIJiUtEGBmfCgB+XcSd4hmduptRvCaLq6I5LeiVP3mNzasRqdh104uBrgCIn6MIOYgQpJqV2uo94/ksO6WF/BqiAhuSHlGc5iuWAksp6xkJ7ZoSMwGcsyOcnvgJ2Vii7VSiF3ib39advMdsfJiiIhmjdlCRCMFt7iSiJsCd7bgQvcF2bSehpHEOFcgJ2ZgSNUuh97idjDiixBRuK/iiQBo9n2gSCBmmHqCiDsmiEuv+oLtyGjFLojV4ohmroh+ambiSGZmWgkW4pl5bOUmrZ7XXphXQCmabCPW4EOzCp171mhepCjWIEjcapfj7QdnKoiZ6imOapnpJInYLp+O0pfJBpJ5hpg2KEB7yCLiRq17EplMamjcYpjVJpgkoVZ1UpoF4qpgpGQ1LqoK3XiWbqaUzCoJYpJ/iloDIoJ7joK9xj1yWqmz4fbODojEJqm9KqrUpqgp7OYIAqr/aqZDSl3PVhpfrqa6SCqBIqTxJqKiwrgw6qqeKjferja5zdjFIomXJCJ6zqqs7qjdrmYjIViBIMsY4ruboiEHqq7a1XuYLGqCLrqTInmcZCKuhCvC7/p32eKZ1Vq63uayfc6rdu6LoGrMBy6b4Fq6kY0sDGhbOOKoOaqZnKK5K2a7auaj3gRrbSaqPKqa3265tqp1+sR8KGrMgaKXl66vhRkG6MbFNgQqm2bLb2ayqkqqDGa7bGQn1yHXCUg7VmLLf2LLZ6UngBrMoOLdH6pr4ZrHzkXdHOxCTEbLKaHXvGLIM2bNQ2qXPIKMdeayeUArbGqajS6CREarKNwtKWrdmeLdqmrdquLdu2rdu+LdzGrdzOLd3Wrd3eLd7mrd7uLd/2rd/+LeAGruAOLuEWruEeLuImruIuLuM2ruM+LuRGruROLuVWruVeLuZmruZuLud2rud+ty7ohq7oji7plq7pni7qpq7qri7rtq7rvi7sxq7szi7t1q7t3i7u5q7u7i7v9q7v/i7wBq/wDi/xFq/xHi/yJq/yLi/zNq/zPi/0Rq/0Ti/1Vq/1Xi/2Zq/2bi/3dq/3fi/4hq/4ji/5lq/5ni/6pq/6ri/7tq/7vi/8xq/8zi/91q/93i/+5q/+7i//9q///i8AB7AADzABF7ABHzACJ7ACLzADN7ADPzAER7AETzAFV7AFX0hAAAAh+QQJBAD/ACwAAAAA1APcAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi/8fT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYoYmGP8CEIHyiaaKIgLJqIyYg0qVjiiTSmKKNbmKB4oo0p7jgJjHiBsFMmLAryyCNFJqnkkjQKAmRJUBS5IpM1NsljkWLtqGKPOl7J4ygpPlkRio9UBQIIZpghZE1EGskikklOqaSOTG7JB1A58jHJnnx2ggmfgAbKiUuccDJJoYfyeckklzTq6CWcQMqooz/u9AuKoNh5YqYt0smiU6wIEqqUcTZZZ4uddrliViruqKWdPNr/+KqVKALFxyUogmmjrnzwCqauowTra68p8hqrsanG2qWWKa24rKmqcklqrFrWyKWsXl7LY1Cu3jmVmuCuCRORR75J5bmmUrntTnzqGei78E7SSaUqRbqnoXwaqm+i+/abLzU5XSLIJMq+KmuTSrlZ5CjonttqqQ9POVWyBisLq8UY84Txxhx37PHHO57Ex4xVtmpyyR+nrLKOQHXr5FNonimBAAysEW5LocCJJJwN9zxnnCrm5K6e7sZrNKMs3bvnoov66zS/+i6a08DaGnwirkqOYtQjp4yMqs/qppvssile4tTK2FbM8Yld83EKTsR+Gfeuc+daLLG4pnxisHV3/3xiSadYi3bJaqONceE+SevtUjGjmaYEHQggQeNqphRKzuXuDDa0pIZ9sU2AFr2n6EfP20m9++Yr7+qms846voAOapPAgz9M1JGZLxm4wj/3/nOPVRqsFLYFwyrlyYVz/GJNhjfv/MclORvt89Qb7lOnIUfluBVpnrkSKjprrjnvReL+ySObZLLJ+kg6W3HwrTJ/9Px7zksvSoXCnijTjPbPP9P7WlT/ZBcjglHrZO4zWVCggKRTNFB3curcKULlQFY8YlSoSqDigFaroiTvcCgi2J/0NLBuealwggAT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LWv8rNeSp9Byq9EC6rDuxqhqLKL67NjSaLq27aG26styrdzOLc0+5v65IQDS7bay7ZeMbdGCrK9ubNnuRsa6LdOSrMmqa64phojpreM+7r3uWk0qn/RNLORmRbpirK/ma6pmbCyk/6rH1ih4iBmNdi7bniyipm5fpOvTepKIxe3lxq7svmpiOOtMQpS7zu5eaG7acqvamm7fdm4qmKpu6EIwHWrpFm5f9K1fKC5w6i70Rq/0Ti/1Vq/1Xi/2Zq/2bi/3dq/3fi/4hq/4ji/5lq/5ni/6pq/6ri/7tq/7vi/8xq/8zi/91q/93i/+5q/+7i//9q///i8AB7AADzABF7ABHzACJ7ACLzADN7ADPzAER7AETzAFV7AFXzAGZ7AGbzAHd7AHfzAIh7AIjzAJl7AJnzAKp7AKrzALt7ALvzAMx7AMzzAN17AN3zAO57AO7zAP97AP/zAQB7EQDzERF7ERHzESJ1qxEi8xEzexEz8xFEexFE8xFVexFV8xFmexFm8xF3exF38xGIexGI8xGZexGZ8xGqexGq8xG7exG78xHMexHM8xHdexHd8xHuexHu8xH/exH/8xIAeyIJNOQAAAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhgpQoCB98nIhiiigK8siINKnI4okyrsjHKW7NaOOOKE4Co1wgBPVIiyYWaWSKNLJo448lsYKkiUgq2SKPUK4oVo1T8qglj0xWZCJUZpgBwpg7PeLik0amWeSTbKp4IlCd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5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhfJRo4oknCsLHiDSdwscoKMZoolt8qKiijCYKwmJTIJhlY4043nhjipOoiMmOJeGo5JIzhsXkkygiWVEogmSyEgggmGFGjwlREAA3AeDSypitkGJmKJlkQkqamTyS5iNwximnnDKVKMiQMuKZ4pIqAtXJJJP8yUknfxZK6KGdDHqoLC7pwkmggAL6Z6CTRnrJJI9iOsmlnfDEiSCXlDgJH6OCMiqpqPJxKalOQelqjHhq/6Wknq/GCFSJMJ6Y64251urrryWmdGeQKP64Z55AzposrE8GlYkgcFqZkpZbbomQlwF8SSYpZZISirehhJsmmmxG22ac0KYr7Up6ClkrrTmmyBOkkiJq772HptLpSoYaikm+h2KaaKKQChooLDmdiuqoDKu6sKgQKwXsxLZKRfHEOu7U68Ucc3xSxyB7/FOVbj5CiklZbmmFAAxYsSWWBKXwwMyRBBEECjijQMHO2X6pLZndgktuuW1mnFK8zCr7I7xKTpLwpP3iS6i++gYaC6EsCfzoo5dsPejXA2uaaaST5hTqpWeryjCogih8YpFGhXzxja3KDSxOv25st8gjLf+7999Jr9hTKI+QG+5IWL5shhUSdFCDBFlimaVAKaTQweUzzxxEJDnjzDO23OAipphjnikum+uaVOzqTNt457Bv84HJk23bVDClUud+KC8qpfJoofXqjii9Bl9yE6AQK+x27FEOBXjHSjEtt/Ty1vT89UqWRD32IdPd0yPQ0nlS4lpKblAHOlPAzfrckGlNt+Gejvqc6NZfpUlLI+2usZgYKUj//auRsVbXtJrgTni5u1os+CW2Bm7NgZGK4O8ANahX2CR2EURew5BXsVvtTRB6u1jcuPcr65HwhEk6IQl9Ar45pSRy5jtIJMCEi9AFTWjxG1q55NSmZ7VQfCNxl53/hPSjI1lkdiZqWBLt5DSZHBBRukAgoaLIkkJ5rV6aChgnLnEp4omNE1u8oNtC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0EAFHZTQQg09lK2/FBOPj00K+xPRSCWdlNJBc2HGOShC6dG66uIsodJAlzKsyvMgDRXVVFVdldVWXX0V1lhlnZXWWm29Fddcdd2V1159/RXYYIUdlthijT0W2WSVXZbZZp19FtpopZ2W2mqtvRbbbLXdlttuvf0W3HDFHZfccs09F9101V2X3XbdfRfeeOWdl9567b0X33z13Zfffv39F+CABR6Y4IINPhiw4YQVXpjhhh1+GOKIJZ6Y4ootvhjjjDXemOOOPf4Y5JBFHpnkkk0+GeWUVV6Z5ZZdfhnmmGWemeaabb4Z55x13pnnnn3+GeighR6a6KKNPhrppJVemummnX4a6qilnprqqq2+Guustd6a6669/hrssMUem+yyzT4b7bTVXpvttt1+G+645Z6b7rrtvhvvvPXem+++/f4b8MAFH5zwwg0/HPHEFV+c8cYdfxzyyCVXNSAAIfkEBQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhgvBhIh+CTMKHiiam+MgkI9J04ow00uhWiSieWOKOOT4So0dmVIYJjYIUeeKQk7CoY44lYpJVBFC6V+OUVFYpFo9LEoljjkwWKciPFVnBwJhWDCTAA5GggAIFFHATQAC44NIKKa3MScqdoeSZZyaZhPLIn4AGCqiXf3opyCNeomjoloYq2qWRPc64o0xZZolliywOeaKKk2CCySSCpAIUBktgYKoJGJigahFpREECCSKI/1AJDQ0gcMGtX7QUSyeTdMLrr71O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\n","loading":"data:image/gif;base64,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4mVP9NkX3VMejKkmQ4RFaEFiL8Bw5JrENAZZZFJKFcOE7gSAHTx0ppILXYHylBBCy9k2W6GMplOgOQcW16gwyjUZ2Qd+neDjdZN2yqhCC3kqKjgDEjYqpRs12syVp7bq6quw0uJmrLTWauutuOaq66689urrr8AGK+ywxBZr7LHIJqvsssw26+yz0EYr7bTUVmvttdhmq+223Hbr7bfghivuuOSWa+656Kar7rrstuvuu/DGK++89NZr77345qvvvvz26++/AAcs8MAEF2zwwQgnrPDCDDfs8MMQRyzxxBRXbPH/xRhnrPHGHHfs8ccghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNds880456zzzjz37PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGet9dZcd+3112CHLfbYZJdt9tlop6322my37fbbcMct99x012333XjnrffefPft99+ABy744IQXbvjhiCeu+OKMN+7445BHLvnklFdu+eWYZ6755px37vnn60rggASglw616BKg7oDprCet+gOqty770KqnPvropM+u+8621666A6vvLrzMqdeO+wRFTGA86sM333ESxUcv/e2opz7BBCIQMYMMIlCgvO3Ai377//i5O29+x8VTnzoF6Ytf/vnwn1y978zHbz/KEiwhwffXTzD6/QCU3/W8NwEKsC+ACAyYPFpkAFJIQAQFBAEFQPC+BFoQXwucx4lGgT0ReNCDFwwhvgQAks+ABEWieGARRLBCEYjwhfQiYXiytBVAhYICH+weDHf4LgEE4ADi+aF4BCCKFa6Qh0hMFzwC4EN4uCA8S2wiEUFhwCRacVtNZKIWfRiALsIjSwuQQQ6aAJ4gepGJ8EijGgWQhCu6sYdp1OIPDQAeF5xxjW/M476kyEQXZNGGegzkHrPYRTROUZCIzFcU1TiARDpSkSnCSgAeSUlIVpJ1GchkJi/JyXhp8v+TnQzlujSphE9mQJSoJJcpNcBKUKbyldkypSY1EBwSbEADstwkLHfJrFxmoJQZYOUGUKCCBbXyl77kpTJ7mUlWCvOYulymNKOVgQ1Y05m4POU0txkta3rTmtrkpjibRctvhnOc6FRWOW+Zzna6853wjKc850nPetrznvjMpz73yc9++vOfAA2oQAdK0IIa9KAITahCF8rQhjr0oRCNqEQn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"} + +/***/ }), + +/***/ "k2Hi": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Portuguese (Brazil) [pt-br] +//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var ptBr = moment.defineLocale('pt-br', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : 'em %s', + past : '%s atrás', + s : 'poucos segundos', + m : 'um minuto', + mm : '%d minutos', + h : 'uma hora', + hh : '%d horas', + d : 'um dia', + dd : '%d dias', + M : 'um mês', + MM : '%d meses', + y : 'um ano', + yy : '%d anos' + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal : '%dº' +}); + +return ptBr; + +}))); + + +/***/ }), + +/***/ "kFjB": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var inherits = __webpack_require__("mwrz") +var MD5 = __webpack_require__("DnPA") +var RIPEMD160 = __webpack_require__("DJz8") +var sha = __webpack_require__("96zr") +var Base = __webpack_require__("onRW") + +function Hash (hash) { + Base.call(this, 'digest') + + this._hash = hash +} + +inherits(Hash, Base) + +Hash.prototype._update = function (data) { + this._hash.update(data) +} + +Hash.prototype._final = function () { + return this._hash.digest() +} + +module.exports = function createHash (alg) { + alg = alg.toLowerCase() + if (alg === 'md5') return new MD5() + if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160() + + return new Hash(sha(alg)) +} + + +/***/ }), + +/***/ "kGlO": +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a <style> tag + +// load the styles +var content = __webpack_require__("NHQf"); +if(typeof content === 'string') content = [[module.i, content, '']]; +// Prepare cssTransformation +var transform; + +var options = {"hmr":true} +options.transform = transform +// add the styles to the DOM +var update = __webpack_require__("uOJK")(content, options); +if(content.locals) module.exports = content.locals; +// Hot Module Replacement +if(false) { + // When the styles change, update the <style> tags + if(!content.locals) { + module.hot.accept("!!../../node_modules/_css-loader@0.28.7@css-loader/index.js!./iconfont.css", function() { + var newContent = require("!!../../node_modules/_css-loader@0.28.7@css-loader/index.js!./iconfont.css"); + if(typeof newContent === 'string') newContent = [[module.id, newContent, '']]; + update(newContent); + }); + } + // When the module is disposed, remove the <style> tags + module.hot.dispose(function() { update(); }); +} + +/***/ }), + +/***/ "kyRq": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global, process) { + +// limit of Crypto.getRandomValues() +// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues +var MAX_BYTES = 65536 + +// Node supports requesting up to this number of bytes +// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48 +var MAX_UINT32 = 4294967295 + +function oldBrowser () { + throw new Error('Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11') +} + +var Buffer = __webpack_require__("DLTi").Buffer +var crypto = global.crypto || global.msCrypto + +if (crypto && crypto.getRandomValues) { + module.exports = randomBytes +} else { + module.exports = oldBrowser +} + +function randomBytes (size, cb) { + // phantomjs needs to throw + if (size > MAX_UINT32) throw new RangeError('requested too many random bytes') + + var bytes = Buffer.allocUnsafe(size) + + if (size > 0) { // getRandomValues fails on IE if size == 0 + if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues + // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues + for (var generated = 0; generated < size; generated += MAX_BYTES) { + // buffer.slice automatically checks if the end is past the end of + // the buffer so we don't have to here + crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES)) + } + } else { + crypto.getRandomValues(bytes) + } + } + + if (typeof cb === 'function') { + return process.nextTick(function () { + cb(null, bytes) + }) + } + + return bytes +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("mFPK"), __webpack_require__("V0EG"))) + +/***/ }), + +/***/ "l8vI": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Persian [fa] +//! author : Ebrahim Byagowi : https://github.com/ebraminio + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var symbolMap = { + '1': '۱', + '2': '۲', + '3': '۳', + '4': '۴', + '5': '۵', + '6': '۶', + '7': '۷', + '8': '۸', + '9': '۹', + '0': '۰' +}; +var numberMap = { + '۱': '1', + '۲': '2', + '۳': '3', + '۴': '4', + '۵': '5', + '۶': '6', + '۷': '7', + '۸': '8', + '۹': '9', + '۰': '0' +}; + +var fa = moment.defineLocale('fa', { + months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + meridiemParse: /قبل از ظهر|بعد از ظهر/, + isPM: function (input) { + return /بعد از ظهر/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'قبل از ظهر'; + } else { + return 'بعد از ظهر'; + } + }, + calendar : { + sameDay : '[امروز ساعت] LT', + nextDay : '[فردا ساعت] LT', + nextWeek : 'dddd [ساعت] LT', + lastDay : '[دیروز ساعت] LT', + lastWeek : 'dddd [پیش] [ساعت] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'در %s', + past : '%s پیش', + s : 'چند ثانیه', + m : 'یک دقیقه', + mm : '%d دقیقه', + h : 'یک ساعت', + hh : '%d ساعت', + d : 'یک روز', + dd : '%d روز', + M : 'یک ماه', + MM : '%d ماه', + y : 'یک سال', + yy : '%d سال' + }, + preparse: function (string) { + return string.replace(/[۰-۹]/g, function (match) { + return numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }).replace(/,/g, '،'); + }, + dayOfMonthOrdinalParse: /\d{1,2}م/, + ordinal : '%dم', + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +return fa; + +}))); + + +/***/ }), + +/***/ "lULs": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__("maJs"); +var common = __webpack_require__("P1/4"); +var shaCommon = __webpack_require__("UOWd"); + +var rotl32 = utils.rotl32; +var sum32 = utils.sum32; +var sum32_5 = utils.sum32_5; +var ft_1 = shaCommon.ft_1; +var BlockHash = common.BlockHash; + +var sha1_K = [ + 0x5A827999, 0x6ED9EBA1, + 0x8F1BBCDC, 0xCA62C1D6 +]; + +function SHA1() { + if (!(this instanceof SHA1)) + return new SHA1(); + + BlockHash.call(this); + this.h = [ + 0x67452301, 0xefcdab89, 0x98badcfe, + 0x10325476, 0xc3d2e1f0 ]; + this.W = new Array(80); +} + +utils.inherits(SHA1, BlockHash); +module.exports = SHA1; + +SHA1.blockSize = 512; +SHA1.outSize = 160; +SHA1.hmacStrength = 80; +SHA1.padLength = 64; + +SHA1.prototype._update = function _update(msg, start) { + var W = this.W; + + for (var i = 0; i < 16; i++) + W[i] = msg[start + i]; + + for(; i < W.length; i++) + W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1); + + var a = this.h[0]; + var b = this.h[1]; + var c = this.h[2]; + var d = this.h[3]; + var e = this.h[4]; + + for (i = 0; i < W.length; i++) { + var s = ~~(i / 20); + var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]); + e = d; + d = c; + c = rotl32(b, 30); + b = a; + a = t; + } + + this.h[0] = sum32(this.h[0], a); + this.h[1] = sum32(this.h[1], b); + this.h[2] = sum32(this.h[2], c); + this.h[3] = sum32(this.h[3], d); + this.h[4] = sum32(this.h[4], e); +}; + +SHA1.prototype._digest = function digest(enc) { + if (enc === 'hex') + return utils.toHex32(this.h, 'big'); + else + return utils.split32(this.h, 'big'); +}; + + +/***/ }), + +/***/ "lZMt": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Konkani Latin script [gom-latn] +//! author : The Discoverer : https://github.com/WikiDiscoverer + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 's': ['thodde secondanim', 'thodde second'], + 'm': ['eka mintan', 'ek minute'], + 'mm': [number + ' mintanim', number + ' mintam'], + 'h': ['eka horan', 'ek hor'], + 'hh': [number + ' horanim', number + ' hor'], + 'd': ['eka disan', 'ek dis'], + 'dd': [number + ' disanim', number + ' dis'], + 'M': ['eka mhoinean', 'ek mhoino'], + 'MM': [number + ' mhoineanim', number + ' mhoine'], + 'y': ['eka vorsan', 'ek voros'], + 'yy': [number + ' vorsanim', number + ' vorsam'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; +} + +var gomLatn = moment.defineLocale('gom-latn', { + months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'), + monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'), + monthsParseExact : true, + weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\'var'.split('_'), + weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), + weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'A h:mm [vazta]', + LTS : 'A h:mm:ss [vazta]', + L : 'DD-MM-YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY A h:mm [vazta]', + LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]', + llll: 'ddd, D MMM YYYY, A h:mm [vazta]' + }, + calendar : { + sameDay: '[Aiz] LT', + nextDay: '[Faleam] LT', + nextWeek: '[Ieta to] dddd[,] LT', + lastDay: '[Kal] LT', + lastWeek: '[Fatlo] dddd[,] LT', + sameElse: 'L' + }, + relativeTime : { + future : '%s', + past : '%s adim', + s : processRelativeTime, + m : processRelativeTime, + mm : processRelativeTime, + h : processRelativeTime, + hh : processRelativeTime, + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + dayOfMonthOrdinalParse : /\d{1,2}(er)/, + ordinal : function (number, period) { + switch (period) { + // the ordinal 'er' only applies to day of the month + case 'D': + return number + 'er'; + default: + case 'M': + case 'Q': + case 'DDD': + case 'd': + case 'w': + case 'W': + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + }, + meridiemParse: /rati|sokalli|donparam|sanje/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'rati') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'sokalli') { + return hour; + } else if (meridiem === 'donparam') { + return hour > 12 ? hour : hour + 12; + } else if (meridiem === 'sanje') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'rati'; + } else if (hour < 12) { + return 'sokalli'; + } else if (hour < 16) { + return 'donparam'; + } else if (hour < 20) { + return 'sanje'; + } else { + return 'rati'; + } + } +}); + +return gomLatn; + +}))); + + +/***/ }), + +/***/ "lejb": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Chinese (Taiwan) [zh-tw] +//! author : Ben : https://github.com/ben-lin +//! author : Chris Lam : https://github.com/hehachris + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var zhTw = moment.defineLocale('zh-tw', { + months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin : '日_一_二_三_四_五_六'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY年MMMD日', + LL : 'YYYY年MMMD日', + LLL : 'YYYY年MMMD日 HH:mm', + LLLL : 'YYYY年MMMD日dddd HH:mm', + l : 'YYYY年MMMD日', + ll : 'YYYY年MMMD日', + lll : 'YYYY年MMMD日 HH:mm', + llll : 'YYYY年MMMD日dddd HH:mm' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, + ordinal : function (number, period) { + switch (period) { + case 'd' : + case 'D' : + case 'DDD' : + return number + '日'; + case 'M' : + return number + '月'; + case 'w' : + case 'W' : + return number + '週'; + default : + return number; + } + }, + relativeTime : { + future : '%s內', + past : '%s前', + s : '幾秒', + m : '1 分鐘', + mm : '%d 分鐘', + h : '1 小時', + hh : '%d 小時', + d : '1 天', + dd : '%d 天', + M : '1 個月', + MM : '%d 個月', + y : '1 年', + yy : '%d 年' + } +}); + +return zhTw; + +}))); + + +/***/ }), + +/***/ "mFPK": +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), + +/***/ "maJs": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var assert = __webpack_require__("tSXQ"); +var inherits = __webpack_require__("mwrz"); + +exports.inherits = inherits; + +function isSurrogatePair(msg, i) { + if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) { + return false; + } + if (i < 0 || i + 1 >= msg.length) { + return false; + } + return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00; +} + +function toArray(msg, enc) { + if (Array.isArray(msg)) + return msg.slice(); + if (!msg) + return []; + var res = []; + if (typeof msg === 'string') { + if (!enc) { + // Inspired by stringToUtf8ByteArray() in closure-library by Google + // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143 + // Apache License 2.0 + // https://github.com/google/closure-library/blob/master/LICENSE + var p = 0; + for (var i = 0; i < msg.length; i++) { + var c = msg.charCodeAt(i); + if (c < 128) { + res[p++] = c; + } else if (c < 2048) { + res[p++] = (c >> 6) | 192; + res[p++] = (c & 63) | 128; + } else if (isSurrogatePair(msg, i)) { + c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF); + res[p++] = (c >> 18) | 240; + res[p++] = ((c >> 12) & 63) | 128; + res[p++] = ((c >> 6) & 63) | 128; + res[p++] = (c & 63) | 128; + } else { + res[p++] = (c >> 12) | 224; + res[p++] = ((c >> 6) & 63) | 128; + res[p++] = (c & 63) | 128; + } + } + } else if (enc === 'hex') { + msg = msg.replace(/[^a-z0-9]+/ig, ''); + if (msg.length % 2 !== 0) + msg = '0' + msg; + for (i = 0; i < msg.length; i += 2) + res.push(parseInt(msg[i] + msg[i + 1], 16)); + } + } else { + for (i = 0; i < msg.length; i++) + res[i] = msg[i] | 0; + } + return res; +} +exports.toArray = toArray; + +function toHex(msg) { + var res = ''; + for (var i = 0; i < msg.length; i++) + res += zero2(msg[i].toString(16)); + return res; +} +exports.toHex = toHex; + +function htonl(w) { + var res = (w >>> 24) | + ((w >>> 8) & 0xff00) | + ((w << 8) & 0xff0000) | + ((w & 0xff) << 24); + return res >>> 0; +} +exports.htonl = htonl; + +function toHex32(msg, endian) { + var res = ''; + for (var i = 0; i < msg.length; i++) { + var w = msg[i]; + if (endian === 'little') + w = htonl(w); + res += zero8(w.toString(16)); + } + return res; +} +exports.toHex32 = toHex32; + +function zero2(word) { + if (word.length === 1) + return '0' + word; + else + return word; +} +exports.zero2 = zero2; + +function zero8(word) { + if (word.length === 7) + return '0' + word; + else if (word.length === 6) + return '00' + word; + else if (word.length === 5) + return '000' + word; + else if (word.length === 4) + return '0000' + word; + else if (word.length === 3) + return '00000' + word; + else if (word.length === 2) + return '000000' + word; + else if (word.length === 1) + return '0000000' + word; + else + return word; +} +exports.zero8 = zero8; + +function join32(msg, start, end, endian) { + var len = end - start; + assert(len % 4 === 0); + var res = new Array(len / 4); + for (var i = 0, k = start; i < res.length; i++, k += 4) { + var w; + if (endian === 'big') + w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3]; + else + w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k]; + res[i] = w >>> 0; + } + return res; +} +exports.join32 = join32; + +function split32(msg, endian) { + var res = new Array(msg.length * 4); + for (var i = 0, k = 0; i < msg.length; i++, k += 4) { + var m = msg[i]; + if (endian === 'big') { + res[k] = m >>> 24; + res[k + 1] = (m >>> 16) & 0xff; + res[k + 2] = (m >>> 8) & 0xff; + res[k + 3] = m & 0xff; + } else { + res[k + 3] = m >>> 24; + res[k + 2] = (m >>> 16) & 0xff; + res[k + 1] = (m >>> 8) & 0xff; + res[k] = m & 0xff; + } + } + return res; +} +exports.split32 = split32; + +function rotr32(w, b) { + return (w >>> b) | (w << (32 - b)); +} +exports.rotr32 = rotr32; + +function rotl32(w, b) { + return (w << b) | (w >>> (32 - b)); +} +exports.rotl32 = rotl32; + +function sum32(a, b) { + return (a + b) >>> 0; +} +exports.sum32 = sum32; + +function sum32_3(a, b, c) { + return (a + b + c) >>> 0; +} +exports.sum32_3 = sum32_3; + +function sum32_4(a, b, c, d) { + return (a + b + c + d) >>> 0; +} +exports.sum32_4 = sum32_4; + +function sum32_5(a, b, c, d, e) { + return (a + b + c + d + e) >>> 0; +} +exports.sum32_5 = sum32_5; + +function sum64(buf, pos, ah, al) { + var bh = buf[pos]; + var bl = buf[pos + 1]; + + var lo = (al + bl) >>> 0; + var hi = (lo < al ? 1 : 0) + ah + bh; + buf[pos] = hi >>> 0; + buf[pos + 1] = lo; +} +exports.sum64 = sum64; + +function sum64_hi(ah, al, bh, bl) { + var lo = (al + bl) >>> 0; + var hi = (lo < al ? 1 : 0) + ah + bh; + return hi >>> 0; +} +exports.sum64_hi = sum64_hi; + +function sum64_lo(ah, al, bh, bl) { + var lo = al + bl; + return lo >>> 0; +} +exports.sum64_lo = sum64_lo; + +function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) { + var carry = 0; + var lo = al; + lo = (lo + bl) >>> 0; + carry += lo < al ? 1 : 0; + lo = (lo + cl) >>> 0; + carry += lo < cl ? 1 : 0; + lo = (lo + dl) >>> 0; + carry += lo < dl ? 1 : 0; + + var hi = ah + bh + ch + dh + carry; + return hi >>> 0; +} +exports.sum64_4_hi = sum64_4_hi; + +function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) { + var lo = al + bl + cl + dl; + return lo >>> 0; +} +exports.sum64_4_lo = sum64_4_lo; + +function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { + var carry = 0; + var lo = al; + lo = (lo + bl) >>> 0; + carry += lo < al ? 1 : 0; + lo = (lo + cl) >>> 0; + carry += lo < cl ? 1 : 0; + lo = (lo + dl) >>> 0; + carry += lo < dl ? 1 : 0; + lo = (lo + el) >>> 0; + carry += lo < el ? 1 : 0; + + var hi = ah + bh + ch + dh + eh + carry; + return hi >>> 0; +} +exports.sum64_5_hi = sum64_5_hi; + +function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { + var lo = al + bl + cl + dl + el; + + return lo >>> 0; +} +exports.sum64_5_lo = sum64_5_lo; + +function rotr64_hi(ah, al, num) { + var r = (al << (32 - num)) | (ah >>> num); + return r >>> 0; +} +exports.rotr64_hi = rotr64_hi; + +function rotr64_lo(ah, al, num) { + var r = (ah << (32 - num)) | (al >>> num); + return r >>> 0; +} +exports.rotr64_lo = rotr64_lo; + +function shr64_hi(ah, al, num) { + return ah >>> num; +} +exports.shr64_hi = shr64_hi; + +function shr64_lo(ah, al, num) { + var r = (ah << (32 - num)) | (al >>> num); + return r >>> 0; +} +exports.shr64_lo = shr64_lo; + + +/***/ }), + +/***/ "mfgY": +/***/ (function(module, exports) { + +module.exports = {"Play":"播放","Pause":"暂停","Current Time":"当前时间","Duration":"时长","Remaining Time":"剩余时间","Stream Type":"媒体流类型","LIVE":"直播","Loaded":"加载完成","Progress":"进度","Fullscreen":"全屏","Non-Fullscreen":"退出全屏","Picture-in-Picture":"画中画","Exit Picture-in-Picture":"退出画中画","Mute":"静音","Unmute":"取消静音","Playback Rate":"播放速度","Subtitles":"字幕","subtitles off":"关闭字幕","Captions":"内嵌字幕","captions off":"关闭内嵌字幕","Chapters":"节目段落","Close Modal Dialog":"关闭弹窗","Descriptions":"描述","descriptions off":"关闭描述","Audio Track":"音轨","You aborted the media playback":"视频播放被终止","A network error caused the media download to fail part-way.":"网络错误导致视频下载中途失败。","The media could not be loaded, either because the server or network failed or because the format is not supported.":"视频因格式不支持或者服务器或网络的问题无法加载。","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"由于视频文件损坏或是该视频使用了你的浏览器不支持的功能,播放终止。","No compatible source was found for this media.":"无法找到此视频兼容的源。","The media is encrypted and we do not have the keys to decrypt it.":"视频已加密,无法解密。","Play Video":"播放视频","Close":"关闭","Modal Window":"弹窗","This is a modal window":"这是一个弹窗","This modal can be closed by pressing the Escape key or activating the close button.":"可以按ESC按键或启用关闭按钮来关闭此弹窗。",", opens captions settings dialog":", 开启标题设置弹窗",", opens subtitles settings dialog":", 开启字幕设置弹窗",", opens descriptions settings dialog":", 开启描述设置弹窗",", selected":", 选择","captions settings":"字幕设定","Audio Player":"音频播放器","Video Player":"视频播放器","Replay":"重新播放","Progress Bar":"进度条","Volume Level":"音量","subtitles settings":"字幕设定","descriptions settings":"描述设定","Text":"文字","White":"白","Black":"黑","Red":"红","Green":"绿","Blue":"蓝","Yellow":"黄","Magenta":"紫红","Cyan":"青","Background":"背景","Window":"窗口","Transparent":"透明","Semi-Transparent":"半透明","Opaque":"不透明","Font Size":"字体尺寸","Text Edge Style":"字体边缘样式","None":"无","Raised":"浮雕","Depressed":"压低","Uniform":"均匀","Dropshadow":"下阴影","Font Family":"字体库","Proportional Sans-Serif":"比例无细体","Monospace Sans-Serif":"单间隔无细体","Proportional Serif":"比例细体","Monospace Serif":"单间隔细体","Casual":"舒适","Script":"手写体","Small Caps":"小型大写字体","Reset":"重置","restore all settings to the default values":"恢复全部设定至预设值","Done":"完成","Caption Settings Dialog":"字幕设定窗口","Beginning of dialog window. Escape will cancel and close the window.":"打开对话窗口。Escape键将取消并关闭对话窗口","End of dialog window.":"结束对话窗口","Seek to live, currently behind live":"尝试直播,当前为延时播放","Seek to live, currently playing live":"尝试直播,当前为实时播放","progress bar timing: currentTime={1} duration={2}":"{1}/{2}","{1} is loading.":"正在加载 {1}。"} + +/***/ }), + +/***/ "mrBI": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Swedish [sv] +//! author : Jens Alm : https://github.com/ulmus + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var sv = moment.defineLocale('sv', { + months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), + weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'), + weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [kl.] HH:mm', + LLLL : 'dddd D MMMM YYYY [kl.] HH:mm', + lll : 'D MMM YYYY HH:mm', + llll : 'ddd D MMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Idag] LT', + nextDay: '[Imorgon] LT', + lastDay: '[Igår] LT', + nextWeek: '[På] dddd LT', + lastWeek: '[I] dddd[s] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : 'för %s sedan', + s : 'några sekunder', + m : 'en minut', + mm : '%d minuter', + h : 'en timme', + hh : '%d timmar', + d : 'en dag', + dd : '%d dagar', + M : 'en månad', + MM : '%d månader', + y : 'ett år', + yy : '%d år' + }, + dayOfMonthOrdinalParse: /\d{1,2}(e|a)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'e' : + (b === 1) ? 'a' : + (b === 2) ? 'a' : + (b === 3) ? 'e' : 'e'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return sv; + +}))); + + +/***/ }), + +/***/ "mwrz": +/***/ (function(module, exports) { + +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) + } + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } + } +} + + +/***/ }), + +/***/ "n1Xs": +/***/ (function(module, exports) { + +module.exports = {"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}} + +/***/ }), + +/***/ "n4Nz": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__("UXd7"); +var BN = __webpack_require__("u/Wk"); +var inherits = __webpack_require__("mwrz"); +var Base = __webpack_require__("qW1i"); + +var assert = utils.assert; + +function ShortCurve(conf) { + Base.call(this, 'short', conf); + + this.a = new BN(conf.a, 16).toRed(this.red); + this.b = new BN(conf.b, 16).toRed(this.red); + this.tinv = this.two.redInvm(); + + this.zeroA = this.a.fromRed().cmpn(0) === 0; + this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0; + + // If the curve is endomorphic, precalculate beta and lambda + this.endo = this._getEndomorphism(conf); + this._endoWnafT1 = new Array(4); + this._endoWnafT2 = new Array(4); +} +inherits(ShortCurve, Base); +module.exports = ShortCurve; + +ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) { + // No efficient endomorphism + if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) + return; + + // Compute beta and lambda, that lambda * P = (beta * Px; Py) + var beta; + var lambda; + if (conf.beta) { + beta = new BN(conf.beta, 16).toRed(this.red); + } else { + var betas = this._getEndoRoots(this.p); + // Choose the smallest beta + beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1]; + beta = beta.toRed(this.red); + } + if (conf.lambda) { + lambda = new BN(conf.lambda, 16); + } else { + // Choose the lambda that is matching selected beta + var lambdas = this._getEndoRoots(this.n); + if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) { + lambda = lambdas[0]; + } else { + lambda = lambdas[1]; + assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0); + } + } + + // Get basis vectors, used for balanced length-two representation + var basis; + if (conf.basis) { + basis = conf.basis.map(function(vec) { + return { + a: new BN(vec.a, 16), + b: new BN(vec.b, 16), + }; + }); + } else { + basis = this._getEndoBasis(lambda); + } + + return { + beta: beta, + lambda: lambda, + basis: basis, + }; +}; + +ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) { + // Find roots of for x^2 + x + 1 in F + // Root = (-1 +- Sqrt(-3)) / 2 + // + var red = num === this.p ? this.red : BN.mont(num); + var tinv = new BN(2).toRed(red).redInvm(); + var ntinv = tinv.redNeg(); + + var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv); + + var l1 = ntinv.redAdd(s).fromRed(); + var l2 = ntinv.redSub(s).fromRed(); + return [ l1, l2 ]; +}; + +ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) { + // aprxSqrt >= sqrt(this.n) + var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2)); + + // 3.74 + // Run EGCD, until r(L + 1) < aprxSqrt + var u = lambda; + var v = this.n.clone(); + var x1 = new BN(1); + var y1 = new BN(0); + var x2 = new BN(0); + var y2 = new BN(1); + + // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n) + var a0; + var b0; + // First vector + var a1; + var b1; + // Second vector + var a2; + var b2; + + var prevR; + var i = 0; + var r; + var x; + while (u.cmpn(0) !== 0) { + var q = v.div(u); + r = v.sub(q.mul(u)); + x = x2.sub(q.mul(x1)); + var y = y2.sub(q.mul(y1)); + + if (!a1 && r.cmp(aprxSqrt) < 0) { + a0 = prevR.neg(); + b0 = x1; + a1 = r.neg(); + b1 = x; + } else if (a1 && ++i === 2) { + break; + } + prevR = r; + + v = u; + u = r; + x2 = x1; + x1 = x; + y2 = y1; + y1 = y; + } + a2 = r.neg(); + b2 = x; + + var len1 = a1.sqr().add(b1.sqr()); + var len2 = a2.sqr().add(b2.sqr()); + if (len2.cmp(len1) >= 0) { + a2 = a0; + b2 = b0; + } + + // Normalize signs + if (a1.negative) { + a1 = a1.neg(); + b1 = b1.neg(); + } + if (a2.negative) { + a2 = a2.neg(); + b2 = b2.neg(); + } + + return [ + { a: a1, b: b1 }, + { a: a2, b: b2 }, + ]; +}; + +ShortCurve.prototype._endoSplit = function _endoSplit(k) { + var basis = this.endo.basis; + var v1 = basis[0]; + var v2 = basis[1]; + + var c1 = v2.b.mul(k).divRound(this.n); + var c2 = v1.b.neg().mul(k).divRound(this.n); + + var p1 = c1.mul(v1.a); + var p2 = c2.mul(v2.a); + var q1 = c1.mul(v1.b); + var q2 = c2.mul(v2.b); + + // Calculate answer + var k1 = k.sub(p1).sub(p2); + var k2 = q1.add(q2).neg(); + return { k1: k1, k2: k2 }; +}; + +ShortCurve.prototype.pointFromX = function pointFromX(x, odd) { + x = new BN(x, 16); + if (!x.red) + x = x.toRed(this.red); + + var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b); + var y = y2.redSqrt(); + if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) + throw new Error('invalid point'); + + // XXX Is there any way to tell if the number is odd without converting it + // to non-red form? + var isOdd = y.fromRed().isOdd(); + if (odd && !isOdd || !odd && isOdd) + y = y.redNeg(); + + return this.point(x, y); +}; + +ShortCurve.prototype.validate = function validate(point) { + if (point.inf) + return true; + + var x = point.x; + var y = point.y; + + var ax = this.a.redMul(x); + var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b); + return y.redSqr().redISub(rhs).cmpn(0) === 0; +}; + +ShortCurve.prototype._endoWnafMulAdd = + function _endoWnafMulAdd(points, coeffs, jacobianResult) { + var npoints = this._endoWnafT1; + var ncoeffs = this._endoWnafT2; + for (var i = 0; i < points.length; i++) { + var split = this._endoSplit(coeffs[i]); + var p = points[i]; + var beta = p._getBeta(); + + if (split.k1.negative) { + split.k1.ineg(); + p = p.neg(true); + } + if (split.k2.negative) { + split.k2.ineg(); + beta = beta.neg(true); + } + + npoints[i * 2] = p; + npoints[i * 2 + 1] = beta; + ncoeffs[i * 2] = split.k1; + ncoeffs[i * 2 + 1] = split.k2; + } + var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult); + + // Clean-up references to points and coefficients + for (var j = 0; j < i * 2; j++) { + npoints[j] = null; + ncoeffs[j] = null; + } + return res; + }; + +function Point(curve, x, y, isRed) { + Base.BasePoint.call(this, curve, 'affine'); + if (x === null && y === null) { + this.x = null; + this.y = null; + this.inf = true; + } else { + this.x = new BN(x, 16); + this.y = new BN(y, 16); + // Force redgomery representation when loading from JSON + if (isRed) { + this.x.forceRed(this.curve.red); + this.y.forceRed(this.curve.red); + } + if (!this.x.red) + this.x = this.x.toRed(this.curve.red); + if (!this.y.red) + this.y = this.y.toRed(this.curve.red); + this.inf = false; + } +} +inherits(Point, Base.BasePoint); + +ShortCurve.prototype.point = function point(x, y, isRed) { + return new Point(this, x, y, isRed); +}; + +ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) { + return Point.fromJSON(this, obj, red); +}; + +Point.prototype._getBeta = function _getBeta() { + if (!this.curve.endo) + return; + + var pre = this.precomputed; + if (pre && pre.beta) + return pre.beta; + + var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y); + if (pre) { + var curve = this.curve; + var endoMul = function(p) { + return curve.point(p.x.redMul(curve.endo.beta), p.y); + }; + pre.beta = beta; + beta.precomputed = { + beta: null, + naf: pre.naf && { + wnd: pre.naf.wnd, + points: pre.naf.points.map(endoMul), + }, + doubles: pre.doubles && { + step: pre.doubles.step, + points: pre.doubles.points.map(endoMul), + }, + }; + } + return beta; +}; + +Point.prototype.toJSON = function toJSON() { + if (!this.precomputed) + return [ this.x, this.y ]; + + return [ this.x, this.y, this.precomputed && { + doubles: this.precomputed.doubles && { + step: this.precomputed.doubles.step, + points: this.precomputed.doubles.points.slice(1), + }, + naf: this.precomputed.naf && { + wnd: this.precomputed.naf.wnd, + points: this.precomputed.naf.points.slice(1), + }, + } ]; +}; + +Point.fromJSON = function fromJSON(curve, obj, red) { + if (typeof obj === 'string') + obj = JSON.parse(obj); + var res = curve.point(obj[0], obj[1], red); + if (!obj[2]) + return res; + + function obj2point(obj) { + return curve.point(obj[0], obj[1], red); + } + + var pre = obj[2]; + res.precomputed = { + beta: null, + doubles: pre.doubles && { + step: pre.doubles.step, + points: [ res ].concat(pre.doubles.points.map(obj2point)), + }, + naf: pre.naf && { + wnd: pre.naf.wnd, + points: [ res ].concat(pre.naf.points.map(obj2point)), + }, + }; + return res; +}; + +Point.prototype.inspect = function inspect() { + if (this.isInfinity()) + return '<EC Point Infinity>'; + return '<EC Point x: ' + this.x.fromRed().toString(16, 2) + + ' y: ' + this.y.fromRed().toString(16, 2) + '>'; +}; + +Point.prototype.isInfinity = function isInfinity() { + return this.inf; +}; + +Point.prototype.add = function add(p) { + // O + P = P + if (this.inf) + return p; + + // P + O = P + if (p.inf) + return this; + + // P + P = 2P + if (this.eq(p)) + return this.dbl(); + + // P + (-P) = O + if (this.neg().eq(p)) + return this.curve.point(null, null); + + // P + Q = O + if (this.x.cmp(p.x) === 0) + return this.curve.point(null, null); + + var c = this.y.redSub(p.y); + if (c.cmpn(0) !== 0) + c = c.redMul(this.x.redSub(p.x).redInvm()); + var nx = c.redSqr().redISub(this.x).redISub(p.x); + var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); + return this.curve.point(nx, ny); +}; + +Point.prototype.dbl = function dbl() { + if (this.inf) + return this; + + // 2P = O + var ys1 = this.y.redAdd(this.y); + if (ys1.cmpn(0) === 0) + return this.curve.point(null, null); + + var a = this.curve.a; + + var x2 = this.x.redSqr(); + var dyinv = ys1.redInvm(); + var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv); + + var nx = c.redSqr().redISub(this.x.redAdd(this.x)); + var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); + return this.curve.point(nx, ny); +}; + +Point.prototype.getX = function getX() { + return this.x.fromRed(); +}; + +Point.prototype.getY = function getY() { + return this.y.fromRed(); +}; + +Point.prototype.mul = function mul(k) { + k = new BN(k, 16); + if (this.isInfinity()) + return this; + else if (this._hasDoubles(k)) + return this.curve._fixedNafMul(this, k); + else if (this.curve.endo) + return this.curve._endoWnafMulAdd([ this ], [ k ]); + else + return this.curve._wnafMul(this, k); +}; + +Point.prototype.mulAdd = function mulAdd(k1, p2, k2) { + var points = [ this, p2 ]; + var coeffs = [ k1, k2 ]; + if (this.curve.endo) + return this.curve._endoWnafMulAdd(points, coeffs); + else + return this.curve._wnafMulAdd(1, points, coeffs, 2); +}; + +Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) { + var points = [ this, p2 ]; + var coeffs = [ k1, k2 ]; + if (this.curve.endo) + return this.curve._endoWnafMulAdd(points, coeffs, true); + else + return this.curve._wnafMulAdd(1, points, coeffs, 2, true); +}; + +Point.prototype.eq = function eq(p) { + return this === p || + this.inf === p.inf && + (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0); +}; + +Point.prototype.neg = function neg(_precompute) { + if (this.inf) + return this; + + var res = this.curve.point(this.x, this.y.redNeg()); + if (_precompute && this.precomputed) { + var pre = this.precomputed; + var negate = function(p) { + return p.neg(); + }; + res.precomputed = { + naf: pre.naf && { + wnd: pre.naf.wnd, + points: pre.naf.points.map(negate), + }, + doubles: pre.doubles && { + step: pre.doubles.step, + points: pre.doubles.points.map(negate), + }, + }; + } + return res; +}; + +Point.prototype.toJ = function toJ() { + if (this.inf) + return this.curve.jpoint(null, null, null); + + var res = this.curve.jpoint(this.x, this.y, this.curve.one); + return res; +}; + +function JPoint(curve, x, y, z) { + Base.BasePoint.call(this, curve, 'jacobian'); + if (x === null && y === null && z === null) { + this.x = this.curve.one; + this.y = this.curve.one; + this.z = new BN(0); + } else { + this.x = new BN(x, 16); + this.y = new BN(y, 16); + this.z = new BN(z, 16); + } + if (!this.x.red) + this.x = this.x.toRed(this.curve.red); + if (!this.y.red) + this.y = this.y.toRed(this.curve.red); + if (!this.z.red) + this.z = this.z.toRed(this.curve.red); + + this.zOne = this.z === this.curve.one; +} +inherits(JPoint, Base.BasePoint); + +ShortCurve.prototype.jpoint = function jpoint(x, y, z) { + return new JPoint(this, x, y, z); +}; + +JPoint.prototype.toP = function toP() { + if (this.isInfinity()) + return this.curve.point(null, null); + + var zinv = this.z.redInvm(); + var zinv2 = zinv.redSqr(); + var ax = this.x.redMul(zinv2); + var ay = this.y.redMul(zinv2).redMul(zinv); + + return this.curve.point(ax, ay); +}; + +JPoint.prototype.neg = function neg() { + return this.curve.jpoint(this.x, this.y.redNeg(), this.z); +}; + +JPoint.prototype.add = function add(p) { + // O + P = P + if (this.isInfinity()) + return p; + + // P + O = P + if (p.isInfinity()) + return this; + + // 12M + 4S + 7A + var pz2 = p.z.redSqr(); + var z2 = this.z.redSqr(); + var u1 = this.x.redMul(pz2); + var u2 = p.x.redMul(z2); + var s1 = this.y.redMul(pz2.redMul(p.z)); + var s2 = p.y.redMul(z2.redMul(this.z)); + + var h = u1.redSub(u2); + var r = s1.redSub(s2); + if (h.cmpn(0) === 0) { + if (r.cmpn(0) !== 0) + return this.curve.jpoint(null, null, null); + else + return this.dbl(); + } + + var h2 = h.redSqr(); + var h3 = h2.redMul(h); + var v = u1.redMul(h2); + + var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); + var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); + var nz = this.z.redMul(p.z).redMul(h); + + return this.curve.jpoint(nx, ny, nz); +}; + +JPoint.prototype.mixedAdd = function mixedAdd(p) { + // O + P = P + if (this.isInfinity()) + return p.toJ(); + + // P + O = P + if (p.isInfinity()) + return this; + + // 8M + 3S + 7A + var z2 = this.z.redSqr(); + var u1 = this.x; + var u2 = p.x.redMul(z2); + var s1 = this.y; + var s2 = p.y.redMul(z2).redMul(this.z); + + var h = u1.redSub(u2); + var r = s1.redSub(s2); + if (h.cmpn(0) === 0) { + if (r.cmpn(0) !== 0) + return this.curve.jpoint(null, null, null); + else + return this.dbl(); + } + + var h2 = h.redSqr(); + var h3 = h2.redMul(h); + var v = u1.redMul(h2); + + var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); + var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); + var nz = this.z.redMul(h); + + return this.curve.jpoint(nx, ny, nz); +}; + +JPoint.prototype.dblp = function dblp(pow) { + if (pow === 0) + return this; + if (this.isInfinity()) + return this; + if (!pow) + return this.dbl(); + + var i; + if (this.curve.zeroA || this.curve.threeA) { + var r = this; + for (i = 0; i < pow; i++) + r = r.dbl(); + return r; + } + + // 1M + 2S + 1A + N * (4S + 5M + 8A) + // N = 1 => 6M + 6S + 9A + var a = this.curve.a; + var tinv = this.curve.tinv; + + var jx = this.x; + var jy = this.y; + var jz = this.z; + var jz4 = jz.redSqr().redSqr(); + + // Reuse results + var jyd = jy.redAdd(jy); + for (i = 0; i < pow; i++) { + var jx2 = jx.redSqr(); + var jyd2 = jyd.redSqr(); + var jyd4 = jyd2.redSqr(); + var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); + + var t1 = jx.redMul(jyd2); + var nx = c.redSqr().redISub(t1.redAdd(t1)); + var t2 = t1.redISub(nx); + var dny = c.redMul(t2); + dny = dny.redIAdd(dny).redISub(jyd4); + var nz = jyd.redMul(jz); + if (i + 1 < pow) + jz4 = jz4.redMul(jyd4); + + jx = nx; + jz = nz; + jyd = dny; + } + + return this.curve.jpoint(jx, jyd.redMul(tinv), jz); +}; + +JPoint.prototype.dbl = function dbl() { + if (this.isInfinity()) + return this; + + if (this.curve.zeroA) + return this._zeroDbl(); + else if (this.curve.threeA) + return this._threeDbl(); + else + return this._dbl(); +}; + +JPoint.prototype._zeroDbl = function _zeroDbl() { + var nx; + var ny; + var nz; + // Z = 1 + if (this.zOne) { + // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html + // #doubling-mdbl-2007-bl + // 1M + 5S + 14A + + // XX = X1^2 + var xx = this.x.redSqr(); + // YY = Y1^2 + var yy = this.y.redSqr(); + // YYYY = YY^2 + var yyyy = yy.redSqr(); + // S = 2 * ((X1 + YY)^2 - XX - YYYY) + var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); + s = s.redIAdd(s); + // M = 3 * XX + a; a = 0 + var m = xx.redAdd(xx).redIAdd(xx); + // T = M ^ 2 - 2*S + var t = m.redSqr().redISub(s).redISub(s); + + // 8 * YYYY + var yyyy8 = yyyy.redIAdd(yyyy); + yyyy8 = yyyy8.redIAdd(yyyy8); + yyyy8 = yyyy8.redIAdd(yyyy8); + + // X3 = T + nx = t; + // Y3 = M * (S - T) - 8 * YYYY + ny = m.redMul(s.redISub(t)).redISub(yyyy8); + // Z3 = 2*Y1 + nz = this.y.redAdd(this.y); + } else { + // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html + // #doubling-dbl-2009-l + // 2M + 5S + 13A + + // A = X1^2 + var a = this.x.redSqr(); + // B = Y1^2 + var b = this.y.redSqr(); + // C = B^2 + var c = b.redSqr(); + // D = 2 * ((X1 + B)^2 - A - C) + var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c); + d = d.redIAdd(d); + // E = 3 * A + var e = a.redAdd(a).redIAdd(a); + // F = E^2 + var f = e.redSqr(); + + // 8 * C + var c8 = c.redIAdd(c); + c8 = c8.redIAdd(c8); + c8 = c8.redIAdd(c8); + + // X3 = F - 2 * D + nx = f.redISub(d).redISub(d); + // Y3 = E * (D - X3) - 8 * C + ny = e.redMul(d.redISub(nx)).redISub(c8); + // Z3 = 2 * Y1 * Z1 + nz = this.y.redMul(this.z); + nz = nz.redIAdd(nz); + } + + return this.curve.jpoint(nx, ny, nz); +}; + +JPoint.prototype._threeDbl = function _threeDbl() { + var nx; + var ny; + var nz; + // Z = 1 + if (this.zOne) { + // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html + // #doubling-mdbl-2007-bl + // 1M + 5S + 15A + + // XX = X1^2 + var xx = this.x.redSqr(); + // YY = Y1^2 + var yy = this.y.redSqr(); + // YYYY = YY^2 + var yyyy = yy.redSqr(); + // S = 2 * ((X1 + YY)^2 - XX - YYYY) + var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); + s = s.redIAdd(s); + // M = 3 * XX + a + var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a); + // T = M^2 - 2 * S + var t = m.redSqr().redISub(s).redISub(s); + // X3 = T + nx = t; + // Y3 = M * (S - T) - 8 * YYYY + var yyyy8 = yyyy.redIAdd(yyyy); + yyyy8 = yyyy8.redIAdd(yyyy8); + yyyy8 = yyyy8.redIAdd(yyyy8); + ny = m.redMul(s.redISub(t)).redISub(yyyy8); + // Z3 = 2 * Y1 + nz = this.y.redAdd(this.y); + } else { + // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b + // 3M + 5S + + // delta = Z1^2 + var delta = this.z.redSqr(); + // gamma = Y1^2 + var gamma = this.y.redSqr(); + // beta = X1 * gamma + var beta = this.x.redMul(gamma); + // alpha = 3 * (X1 - delta) * (X1 + delta) + var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta)); + alpha = alpha.redAdd(alpha).redIAdd(alpha); + // X3 = alpha^2 - 8 * beta + var beta4 = beta.redIAdd(beta); + beta4 = beta4.redIAdd(beta4); + var beta8 = beta4.redAdd(beta4); + nx = alpha.redSqr().redISub(beta8); + // Z3 = (Y1 + Z1)^2 - gamma - delta + nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta); + // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2 + var ggamma8 = gamma.redSqr(); + ggamma8 = ggamma8.redIAdd(ggamma8); + ggamma8 = ggamma8.redIAdd(ggamma8); + ggamma8 = ggamma8.redIAdd(ggamma8); + ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8); + } + + return this.curve.jpoint(nx, ny, nz); +}; + +JPoint.prototype._dbl = function _dbl() { + var a = this.curve.a; + + // 4M + 6S + 10A + var jx = this.x; + var jy = this.y; + var jz = this.z; + var jz4 = jz.redSqr().redSqr(); + + var jx2 = jx.redSqr(); + var jy2 = jy.redSqr(); + + var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); + + var jxd4 = jx.redAdd(jx); + jxd4 = jxd4.redIAdd(jxd4); + var t1 = jxd4.redMul(jy2); + var nx = c.redSqr().redISub(t1.redAdd(t1)); + var t2 = t1.redISub(nx); + + var jyd8 = jy2.redSqr(); + jyd8 = jyd8.redIAdd(jyd8); + jyd8 = jyd8.redIAdd(jyd8); + jyd8 = jyd8.redIAdd(jyd8); + var ny = c.redMul(t2).redISub(jyd8); + var nz = jy.redAdd(jy).redMul(jz); + + return this.curve.jpoint(nx, ny, nz); +}; + +JPoint.prototype.trpl = function trpl() { + if (!this.curve.zeroA) + return this.dbl().add(this); + + // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl + // 5M + 10S + ... + + // XX = X1^2 + var xx = this.x.redSqr(); + // YY = Y1^2 + var yy = this.y.redSqr(); + // ZZ = Z1^2 + var zz = this.z.redSqr(); + // YYYY = YY^2 + var yyyy = yy.redSqr(); + // M = 3 * XX + a * ZZ2; a = 0 + var m = xx.redAdd(xx).redIAdd(xx); + // MM = M^2 + var mm = m.redSqr(); + // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM + var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); + e = e.redIAdd(e); + e = e.redAdd(e).redIAdd(e); + e = e.redISub(mm); + // EE = E^2 + var ee = e.redSqr(); + // T = 16*YYYY + var t = yyyy.redIAdd(yyyy); + t = t.redIAdd(t); + t = t.redIAdd(t); + t = t.redIAdd(t); + // U = (M + E)^2 - MM - EE - T + var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t); + // X3 = 4 * (X1 * EE - 4 * YY * U) + var yyu4 = yy.redMul(u); + yyu4 = yyu4.redIAdd(yyu4); + yyu4 = yyu4.redIAdd(yyu4); + var nx = this.x.redMul(ee).redISub(yyu4); + nx = nx.redIAdd(nx); + nx = nx.redIAdd(nx); + // Y3 = 8 * Y1 * (U * (T - U) - E * EE) + var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee))); + ny = ny.redIAdd(ny); + ny = ny.redIAdd(ny); + ny = ny.redIAdd(ny); + // Z3 = (Z1 + E)^2 - ZZ - EE + var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee); + + return this.curve.jpoint(nx, ny, nz); +}; + +JPoint.prototype.mul = function mul(k, kbase) { + k = new BN(k, kbase); + + return this.curve._wnafMul(this, k); +}; + +JPoint.prototype.eq = function eq(p) { + if (p.type === 'affine') + return this.eq(p.toJ()); + + if (this === p) + return true; + + // x1 * z2^2 == x2 * z1^2 + var z2 = this.z.redSqr(); + var pz2 = p.z.redSqr(); + if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) + return false; + + // y1 * z2^3 == y2 * z1^3 + var z3 = z2.redMul(this.z); + var pz3 = pz2.redMul(p.z); + return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0; +}; + +JPoint.prototype.eqXToP = function eqXToP(x) { + var zs = this.z.redSqr(); + var rx = x.toRed(this.curve.red).redMul(zs); + if (this.x.cmp(rx) === 0) + return true; + + var xc = x.clone(); + var t = this.curve.redN.redMul(zs); + for (;;) { + xc.iadd(this.curve.n); + if (xc.cmp(this.curve.p) >= 0) + return false; + + rx.redIAdd(t); + if (this.x.cmp(rx) === 0) + return true; + } +}; + +JPoint.prototype.inspect = function inspect() { + if (this.isInfinity()) + return '<EC JPoint Infinity>'; + return '<EC JPoint x: ' + this.x.toString(16, 2) + + ' y: ' + this.y.toString(16, 2) + + ' z: ' + this.z.toString(16, 2) + '>'; +}; + +JPoint.prototype.isInfinity = function isInfinity() { + // XXX This code assumes that zero is always zero in red + return this.z.cmpn(0) === 0; +}; + + +/***/ }), + +/***/ "nI9g": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Slovenian [sl] +//! author : Robert Sedovšek : https://github.com/sedovsek + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +function processRelativeTime(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': + return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; + case 'm': + return withoutSuffix ? 'ena minuta' : 'eno minuto'; + case 'mm': + if (number === 1) { + result += withoutSuffix ? 'minuta' : 'minuto'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'minute' : 'minutami'; + } else { + result += withoutSuffix || isFuture ? 'minut' : 'minutami'; + } + return result; + case 'h': + return withoutSuffix ? 'ena ura' : 'eno uro'; + case 'hh': + if (number === 1) { + result += withoutSuffix ? 'ura' : 'uro'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'uri' : 'urama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'ure' : 'urami'; + } else { + result += withoutSuffix || isFuture ? 'ur' : 'urami'; + } + return result; + case 'd': + return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; + case 'dd': + if (number === 1) { + result += withoutSuffix || isFuture ? 'dan' : 'dnem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; + } else { + result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; + } + return result; + case 'M': + return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; + case 'MM': + if (number === 1) { + result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; + } else { + result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; + } + return result; + case 'y': + return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; + case 'yy': + if (number === 1) { + result += withoutSuffix || isFuture ? 'leto' : 'letom'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'leti' : 'letoma'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'leta' : 'leti'; + } else { + result += withoutSuffix || isFuture ? 'let' : 'leti'; + } + return result; + } +} + +var sl = moment.defineLocale('sl', { + months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), + monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), + monthsParseExact: true, + weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), + weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), + weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[danes ob] LT', + nextDay : '[jutri ob] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[v] [nedeljo] [ob] LT'; + case 3: + return '[v] [sredo] [ob] LT'; + case 6: + return '[v] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[v] dddd [ob] LT'; + } + }, + lastDay : '[včeraj ob] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + return '[prejšnjo] [nedeljo] [ob] LT'; + case 3: + return '[prejšnjo] [sredo] [ob] LT'; + case 6: + return '[prejšnjo] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prejšnji] dddd [ob] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'čez %s', + past : 'pred %s', + s : processRelativeTime, + m : processRelativeTime, + mm : processRelativeTime, + h : processRelativeTime, + hh : processRelativeTime, + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return sl; + +}))); + + +/***/ }), + +/***/ "nLML": +/***/ (function(module, exports, __webpack_require__) { + +var inherits = __webpack_require__("mwrz") +var SHA512 = __webpack_require__("pZ5O") +var Hash = __webpack_require__("QYQw") +var Buffer = __webpack_require__("DLTi").Buffer + +var W = new Array(160) + +function Sha384 () { + this.init() + this._w = W + + Hash.call(this, 128, 112) +} + +inherits(Sha384, SHA512) + +Sha384.prototype.init = function () { + this._ah = 0xcbbb9d5d + this._bh = 0x629a292a + this._ch = 0x9159015a + this._dh = 0x152fecd8 + this._eh = 0x67332667 + this._fh = 0x8eb44a87 + this._gh = 0xdb0c2e0d + this._hh = 0x47b5481d + + this._al = 0xc1059ed8 + this._bl = 0x367cd507 + this._cl = 0x3070dd17 + this._dl = 0xf70e5939 + this._el = 0xffc00b31 + this._fl = 0x68581511 + this._gl = 0x64f98fa7 + this._hl = 0xbefa4fa4 + + return this +} + +Sha384.prototype._hash = function () { + var H = Buffer.allocUnsafe(48) + + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset) + H.writeInt32BE(l, offset + 4) + } + + writeInt64BE(this._ah, this._al, 0) + writeInt64BE(this._bh, this._bl, 8) + writeInt64BE(this._ch, this._cl, 16) + writeInt64BE(this._dh, this._dl, 24) + writeInt64BE(this._eh, this._el, 32) + writeInt64BE(this._fh, this._fl, 40) + + return H +} + +module.exports = Sha384 + + +/***/ }), + +/***/ "nX6w": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var BN = __webpack_require__("u/Wk"); + +var utils = __webpack_require__("UXd7"); +var assert = utils.assert; + +function Signature(options, enc) { + if (options instanceof Signature) + return options; + + if (this._importDER(options, enc)) + return; + + assert(options.r && options.s, 'Signature without r or s'); + this.r = new BN(options.r, 16); + this.s = new BN(options.s, 16); + if (options.recoveryParam === undefined) + this.recoveryParam = null; + else + this.recoveryParam = options.recoveryParam; +} +module.exports = Signature; + +function Position() { + this.place = 0; +} + +function getLength(buf, p) { + var initial = buf[p.place++]; + if (!(initial & 0x80)) { + return initial; + } + var octetLen = initial & 0xf; + + // Indefinite length or overflow + if (octetLen === 0 || octetLen > 4) { + return false; + } + + var val = 0; + for (var i = 0, off = p.place; i < octetLen; i++, off++) { + val <<= 8; + val |= buf[off]; + val >>>= 0; + } + + // Leading zeroes + if (val <= 0x7f) { + return false; + } + + p.place = off; + return val; +} + +function rmPadding(buf) { + var i = 0; + var len = buf.length - 1; + while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) { + i++; + } + if (i === 0) { + return buf; + } + return buf.slice(i); +} + +Signature.prototype._importDER = function _importDER(data, enc) { + data = utils.toArray(data, enc); + var p = new Position(); + if (data[p.place++] !== 0x30) { + return false; + } + var len = getLength(data, p); + if (len === false) { + return false; + } + if ((len + p.place) !== data.length) { + return false; + } + if (data[p.place++] !== 0x02) { + return false; + } + var rlen = getLength(data, p); + if (rlen === false) { + return false; + } + var r = data.slice(p.place, rlen + p.place); + p.place += rlen; + if (data[p.place++] !== 0x02) { + return false; + } + var slen = getLength(data, p); + if (slen === false) { + return false; + } + if (data.length !== slen + p.place) { + return false; + } + var s = data.slice(p.place, slen + p.place); + if (r[0] === 0) { + if (r[1] & 0x80) { + r = r.slice(1); + } else { + // Leading zeroes + return false; + } + } + if (s[0] === 0) { + if (s[1] & 0x80) { + s = s.slice(1); + } else { + // Leading zeroes + return false; + } + } + + this.r = new BN(r); + this.s = new BN(s); + this.recoveryParam = null; + + return true; +}; + +function constructLength(arr, len) { + if (len < 0x80) { + arr.push(len); + return; + } + var octets = 1 + (Math.log(len) / Math.LN2 >>> 3); + arr.push(octets | 0x80); + while (--octets) { + arr.push((len >>> (octets << 3)) & 0xff); + } + arr.push(len); +} + +Signature.prototype.toDER = function toDER(enc) { + var r = this.r.toArray(); + var s = this.s.toArray(); + + // Pad values + if (r[0] & 0x80) + r = [ 0 ].concat(r); + // Pad values + if (s[0] & 0x80) + s = [ 0 ].concat(s); + + r = rmPadding(r); + s = rmPadding(s); + + while (!s[0] && !(s[1] & 0x80)) { + s = s.slice(1); + } + var arr = [ 0x02 ]; + constructLength(arr, r.length); + arr = arr.concat(r); + arr.push(0x02); + constructLength(arr, s.length); + var backHalf = arr.concat(s); + var res = [ 0x30 ]; + constructLength(res, backHalf.length); + res = res.concat(backHalf); + return utils.encode(res, enc); +}; + + +/***/ }), + +/***/ "nj8S": +/***/ (function(module, exports) { + +module.exports = "data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQiCLJXoAAAE4AAAAVE9TLzI8QUzCAAABjAAAAGBjbWFwKVYfngAAAhwAAAI8Z2x5ZsYVxmoAAAR0AAAJaGhlYWQgyzh9AAAA4AAAADZoaGVhB94DjQAAALwAAAAkaG10eDAAAAAAAAHsAAAAMGxvY2EQiA60AAAEWAAAABptYXhwASMA4wAAARgAAAAgbmFtZRCjPLAAAA3cAAACZ3Bvc3QZ7sqZAAAQRAAAAJwAAQAAA4D/gABcBAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAwAAQAAAAEAAJwGiSpfDzz1AAsEAAAAAADe1fo+AAAAAN7V+j4AAP+fBAADZQAAAAgAAgAAAAAAAAABAAAADADXAA0AAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAQEAAGQAAUAAAKJAswAAACPAokCzAAAAesAMgEIAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAwOYs6fIDgP+AAAAD3ACAAAAAAQAAAAAAAAAAAAAAAAACBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAABQAAAAMAAAAsAAAABAAAAagAAQAAAAAAogADAAEAAAAsAAMACgAAAagABAB2AAAAFAAQAAMABOYs5i7m5ed36Kvorei76MDp8v//AADmLOYu5uXnd+ir6K3ouui/6fL//wAAAAAAAAAAAAAAAAAAAAAAAAABABQAFAAUABQAFAAUABQAFgAYAAAABAABAAMAAgALAAoACQAIAAcABgAFAAABBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAACUAAAAAAAAAAsAAOYsAADmLAAAAAQAAOYuAADmLgAAAAEAAOblAADm5QAAAAMAAOd3AADndwAAAAIAAOirAADoqwAAAAsAAOitAADorQAAAAoAAOi6AADougAAAAkAAOi7AADouwAAAAgAAOi/AADovwAAAAcAAOjAAADowAAAAAYAAOnyAADp8gAAAAUAAAAAAEQApgEgAkwC4ANMA3YD8gQaBIQEtAAAAAQAAAAAA8ADAAAHAA8AHAAoAAABFzMRIREzNwUhByMRIREjBzIeARQOASIuATQ+ARciDgEUHgEzMjY0JgK/QcD8gMBAAUn+7kCdAsydyS9PLy9PXk8vL08vFicWFicWIjExAwCA/YACgIBagP40AcwjL09eTy8vT15PL1oWJywnFjFFMAAAAAAEAAAAAAP/Av8AIgAyADYAPwAAASYGDwE1NC4BIyEiDgEVERQeATMhMj4BPQEXHgE+ATURNCYDFAYjISImNRE0NjMhMhYVEyc1NyUyHgEGIiY0NgPeECIPXiI6I/3DIzoiIjojAj0jOiJeDyIfERH+JBn93xkkJBkCIRkkxnR0/TcaJQEmNSUlAoMJAQo6OCI7IiI7Iv4CIjsiIjsiODoKAREeEQGYER7+EhkjIxkB4hkjIxn+W0feRzAlNSUlNSUAAAAABQAA/9UEAAMrAB8ALQA6AEcAUAAAATIfAjMyFh8CERQGDwEhIiYvARE0Nj8BMzc2PwIXBw4BIycRIREjIiYvAQcyHgEUDgEiLgE0PgEXIg4BFB4BMj4BNC4BJTIWFAYiJjQ2Ap0gFgQuuxYiBgEBHxkI/IAYIwQBHxkIuy4NHQgIDTUFFQzAA1bACxMGN5BGdUVFdYx1RUV1Ri5PLi5PXE8uLk8BEhslJTYlJQMrHQdcHBYHB/2qFyQEAR8aBwJWFyQEAVwZCAIBVWkLDQH91QIqCgltgEV1i3ZFRXaLdUVVLk9bUC0uTl1OLismNSUlNSYAAAsAAP/PA78DNwAMABkAJwA4AEUAUgBjAI8AtQDKANYAAAEiLgE0PgEyHgEUDgEDIg4BFB4BMj4BNC4BByImPQE0PgEeAQ8BFAY3Ii4BNz4BMzIWFAYjIgYHBgUiLgE0PgEyHgEUDgEDIg4BFB4BMj4BNC4BByIuATc+ATMyFhQGIyIGBwYTISImNRE0PgEzITIeARUHNjc2MzIXFhcWFREUBwYjMTMiLwEmJxcwNDEUBgEiBhURFBYzITI2NSc0NjMyFxYfARE0JwYHDgEHBiMiJjU3NCYjBSImPQE0NjsBMhYUBisBIgYdARQGNyMiJjQ2OwEyFhQGAQUtSywsS1lLLCxLLB4zHh4zPDIeHjJnBQgCCQoHAQEHBgQHAwMMJhYFCAgFDxoJBAGlLEssLEtZSywsSy0eMh4eMjwzHh4zWgQIAgMMJhUGCAgGDhsIBEf+GCc2GisYAegYKhkBTj0UEBMOCgMCCQwYAQwYBFc1AjX98g8ZFhIB6BAWBA8MBxkndwsBAwVaTA0IBQwPBBcP/hcFCB0TbwYHBwZvBw8Hzg0GBwcGDQUICAHwLEtYSywsS1hLLAESHjM8Mx0dMzwzHnwIBQMECgYCCQUHBQgoBQsFEhQICwgODAa+LEtYSywsS1hLLAESHjM8Mx0dMzwzHlQFCwUSFAgLCA4MBv0hLyQBVxkvHBosGQ4pIQkNChAJD/6bGAwRBwIuGhYBJTIB2R4R/qkPDxIPQAsQDBM+AwFjBwQBAjEnBgQRDDgRGaMIBkIUJQgKCBUKQgYIbwgKCAgKCAAAAAgAAP+fA9YDZQAWAB0AKgA0AD0ARABOAFcAAAEmJyYnJgYHBgcGFhcWFxY2NzY3NjU0JyEiBzceAQMUDgEiLgE0PgEyHgEDMhcDBgcnNjc2BRMWFxYXISY2EyEyNwcuAQUiJxM2NxcGBwYlAyYnJichFgYDsC5cWnJ05FNRIiMwTEpqbu1iYDc4WP6DJCGMZaO6KEVQRSgoRVBFKJUMDLwUBos8VFj+/LwNFAcI/ukjFiABfSQhjGWjAU8MDLwUBos8VFgBBLwNFAcIARcjFgI3bkpIFxdGVVJvcepbWS0tF0NBZWl3X2EN8hF6/uYoRSgoRVBFKChFAYMB/rogJvFJKSrB/rsZFAcGX8v+qw3yEXqRAQFGICbxSSkqwQFFGRQHBl/LAAAABAAA/9ED6AMvABgALABCAEMAAAEuATc+ARceAhQOAQcGLgE2Nz4BNTYnJgcmND4BFx4BFAYHBiYnLgE2NzY0ASIuAT0BND4BOwE3Nh4BFREUDgEvASMCtBINBwsnElB3QUF3UBInFgwTYm8EOTegDx0nDy8zMy8OKwsJBwcJRP3BGi0bGy0aU+oRJBkbJQ7qUwLPCiYSEgsKKIGisqKBKAoLJCQHLrNucFxZkgopHAILJm15bSYOBA8EFhcHO6b+8BorGrwaKxqzDAMaFf1sExoEC7MAAAAABAAA/8IDvQM+AAUACwARABcAADczFTMRIQEjFSMVIRMzNTM1IRM1IxEhNUPRc/68AURz0AFD8nrK/rx6egFEjMkBRQI1z3b9y8l8AWbP/rx1AAAABgAA/6ID8gNTAAsAGgAuADUAPABOAAAFASY0NjIXARYUBiIBFhUUBxc2JzYmJyYOARQ3FhcWBxQHFz4BNTQuAScmBgcGFhMOAR4BPwEDNTQuAQ8CIyIOAR0BFB4BOwEXFj4BPQEDlPynDRoiDQNaDRoj/tpFAk4XAQE0Lw8oHU9iNzkDLUcmJ0F4URInCwgOCxELFicSE/AZJRFPziMaLhoaLhpU7A4mG1EDWg0iGg38pw0jGgJtO1QODU00OT1uJgsBHSm4L1pdcWJTRzmDRVqkgigLDBISJv1LByUjCwoKAji0FBsCCz14GiwavhosGbYLBBsToAAEAAD/wQO/Az8ABQALABEAFwAANyMRITUjAzM1MzUpARUzFTMRAyMVIREjvXsBJap7e6r+2wJaqHp6qAEieuj+2nwB16x9fawBKf0AfAEmAA0AAP+tA4kDUgACAAMABgAHAAoACwAOAA8AHAAdACkANQA2AAATEQkBMxEJATcRCQEXAwkBJxQeATI+ATQuASIOARUBIgYUFhcWPgE1NCYBIgYUFhcWPgIuASOfAi/90S8CLv3SYAIz/c0CAgIw/dKRGSsyKxkZKzIrGQKMJzY2JxorGDf9qyY3NyYYKxoBGSsaAvX9FwF0AXX9FwF0AXVO/RgBcQF3nf0XAXQBdU8ZKxkZKzIrGRkrGf7oNk01AgEZLBknNv6MN0w2AQEZKzMrGQAAAgAA/8ADYQNAAA8AHwAAASMiBhURFBY7ATI2NRE0JiEjIgYVERQWOwEyNjURNCYBJ1QVHh4VVBUeHgHxVBUeHhVUFR4eA0AfFfzoFR8fFQMYFR8fFfzoFR8fFQMYFR8AAAASAN4AAQAAAAAAAAATAAAAAQAAAAAAAQAIABMAAQAAAAAAAgAHABsAAQAAAAAAAwAIACIAAQAAAAAABAAIACoAAQAAAAAABQALADIAAQAAAAAABgAIAD0AAQAAAAAACgArAEUAAQAAAAAACwATAHAAAwABBAkAAAAmAIMAAwABBAkAAQAQAKkAAwABBAkAAgAOALkAAwABBAkAAwAQAMcAAwABBAkABAAQANcAAwABBAkABQAWAOcAAwABBAkABgAQAP0AAwABBAkACgBWAQ0AAwABBAkACwAmAWNDcmVhdGVkIGJ5IGljb25mb250aWNvbmZvbnRSZWd1bGFyaWNvbmZvbnRpY29uZm9udFZlcnNpb24gMS4waWNvbmZvbnRHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQBDAHIAZQBhAHQAZQBkACAAYgB5ACAAaQBjAG8AbgBmAG8AbgB0AGkAYwBvAG4AZgBvAG4AdABSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdABpAGMAbwBuAGYAbwBuAHQAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQAHeGlhbmdqaQhsdXhpYW5nMgh4aWFuZ2ppMQdsdXhpYW5nCHNuYXBzaG90CXNoZW5neWluMQh4aWFvcGluZwdqaW5neWluCXF1YW5waW5nMQZib2ZhbmcHemFudGluZwAA" + +/***/ }), + +/***/ "nkM1": +/***/ (function(module, exports, __webpack_require__) { + +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ + +var inherits = __webpack_require__("mwrz") +var Sha256 = __webpack_require__("sdPl") +var Hash = __webpack_require__("QYQw") +var Buffer = __webpack_require__("DLTi").Buffer + +var W = new Array(64) + +function Sha224 () { + this.init() + + this._w = W // new Array(64) + + Hash.call(this, 64, 56) +} + +inherits(Sha224, Sha256) + +Sha224.prototype.init = function () { + this._a = 0xc1059ed8 + this._b = 0x367cd507 + this._c = 0x3070dd17 + this._d = 0xf70e5939 + this._e = 0xffc00b31 + this._f = 0x68581511 + this._g = 0x64f98fa7 + this._h = 0xbefa4fa4 + + return this +} + +Sha224.prototype._hash = function () { + var H = Buffer.allocUnsafe(28) + + H.writeInt32BE(this._a, 0) + H.writeInt32BE(this._b, 4) + H.writeInt32BE(this._c, 8) + H.writeInt32BE(this._d, 12) + H.writeInt32BE(this._e, 16) + H.writeInt32BE(this._f, 20) + H.writeInt32BE(this._g, 24) + + return H +} + +module.exports = Sha224 + + +/***/ }), + +/***/ "oCEa": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var BN = __webpack_require__("u/Wk"); +var inherits = __webpack_require__("mwrz"); +var Base = __webpack_require__("qW1i"); + +var utils = __webpack_require__("UXd7"); + +function MontCurve(conf) { + Base.call(this, 'mont', conf); + + this.a = new BN(conf.a, 16).toRed(this.red); + this.b = new BN(conf.b, 16).toRed(this.red); + this.i4 = new BN(4).toRed(this.red).redInvm(); + this.two = new BN(2).toRed(this.red); + this.a24 = this.i4.redMul(this.a.redAdd(this.two)); +} +inherits(MontCurve, Base); +module.exports = MontCurve; + +MontCurve.prototype.validate = function validate(point) { + var x = point.normalize().x; + var x2 = x.redSqr(); + var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x); + var y = rhs.redSqrt(); + + return y.redSqr().cmp(rhs) === 0; +}; + +function Point(curve, x, z) { + Base.BasePoint.call(this, curve, 'projective'); + if (x === null && z === null) { + this.x = this.curve.one; + this.z = this.curve.zero; + } else { + this.x = new BN(x, 16); + this.z = new BN(z, 16); + if (!this.x.red) + this.x = this.x.toRed(this.curve.red); + if (!this.z.red) + this.z = this.z.toRed(this.curve.red); + } +} +inherits(Point, Base.BasePoint); + +MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) { + return this.point(utils.toArray(bytes, enc), 1); +}; + +MontCurve.prototype.point = function point(x, z) { + return new Point(this, x, z); +}; + +MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) { + return Point.fromJSON(this, obj); +}; + +Point.prototype.precompute = function precompute() { + // No-op +}; + +Point.prototype._encode = function _encode() { + return this.getX().toArray('be', this.curve.p.byteLength()); +}; + +Point.fromJSON = function fromJSON(curve, obj) { + return new Point(curve, obj[0], obj[1] || curve.one); +}; + +Point.prototype.inspect = function inspect() { + if (this.isInfinity()) + return '<EC Point Infinity>'; + return '<EC Point x: ' + this.x.fromRed().toString(16, 2) + + ' z: ' + this.z.fromRed().toString(16, 2) + '>'; +}; + +Point.prototype.isInfinity = function isInfinity() { + // XXX This code assumes that zero is always zero in red + return this.z.cmpn(0) === 0; +}; + +Point.prototype.dbl = function dbl() { + // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3 + // 2M + 2S + 4A + + // A = X1 + Z1 + var a = this.x.redAdd(this.z); + // AA = A^2 + var aa = a.redSqr(); + // B = X1 - Z1 + var b = this.x.redSub(this.z); + // BB = B^2 + var bb = b.redSqr(); + // C = AA - BB + var c = aa.redSub(bb); + // X3 = AA * BB + var nx = aa.redMul(bb); + // Z3 = C * (BB + A24 * C) + var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c))); + return this.curve.point(nx, nz); +}; + +Point.prototype.add = function add() { + throw new Error('Not supported on Montgomery curve'); +}; + +Point.prototype.diffAdd = function diffAdd(p, diff) { + // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3 + // 4M + 2S + 6A + + // A = X2 + Z2 + var a = this.x.redAdd(this.z); + // B = X2 - Z2 + var b = this.x.redSub(this.z); + // C = X3 + Z3 + var c = p.x.redAdd(p.z); + // D = X3 - Z3 + var d = p.x.redSub(p.z); + // DA = D * A + var da = d.redMul(a); + // CB = C * B + var cb = c.redMul(b); + // X5 = Z1 * (DA + CB)^2 + var nx = diff.z.redMul(da.redAdd(cb).redSqr()); + // Z5 = X1 * (DA - CB)^2 + var nz = diff.x.redMul(da.redISub(cb).redSqr()); + return this.curve.point(nx, nz); +}; + +Point.prototype.mul = function mul(k) { + var t = k.clone(); + var a = this; // (N / 2) * Q + Q + var b = this.curve.point(null, null); // (N / 2) * Q + var c = this; // Q + + for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1)) + bits.push(t.andln(1)); + + for (var i = bits.length - 1; i >= 0; i--) { + if (bits[i] === 0) { + // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q + a = a.diffAdd(b, c); + // N * Q = 2 * ((N / 2) * Q + Q)) + b = b.dbl(); + } else { + // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q) + b = a.diffAdd(b, c); + // N * Q + Q = 2 * ((N / 2) * Q + Q) + a = a.dbl(); + } + } + return b; +}; + +Point.prototype.mulAdd = function mulAdd() { + throw new Error('Not supported on Montgomery curve'); +}; + +Point.prototype.jumlAdd = function jumlAdd() { + throw new Error('Not supported on Montgomery curve'); +}; + +Point.prototype.eq = function eq(other) { + return this.getX().cmp(other.getX()) === 0; +}; + +Point.prototype.normalize = function normalize() { + this.x = this.x.redMul(this.z.redInvm()); + this.z = this.curve.one; + return this; +}; + +Point.prototype.getX = function getX() { + // Normalize coordinates + this.normalize(); + + return this.x.fromRed(); +}; + + +/***/ }), + +/***/ "oHAo": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Finnish [fi] +//! author : Tarmo Aidantausta : https://github.com/bleadof + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '); +var numbersFuture = [ + 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', + numbersPast[7], numbersPast[8], numbersPast[9] + ]; +function translate(number, withoutSuffix, key, isFuture) { + var result = ''; + switch (key) { + case 's': + return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; + case 'm': + return isFuture ? 'minuutin' : 'minuutti'; + case 'mm': + result = isFuture ? 'minuutin' : 'minuuttia'; + break; + case 'h': + return isFuture ? 'tunnin' : 'tunti'; + case 'hh': + result = isFuture ? 'tunnin' : 'tuntia'; + break; + case 'd': + return isFuture ? 'päivän' : 'päivä'; + case 'dd': + result = isFuture ? 'päivän' : 'päivää'; + break; + case 'M': + return isFuture ? 'kuukauden' : 'kuukausi'; + case 'MM': + result = isFuture ? 'kuukauden' : 'kuukautta'; + break; + case 'y': + return isFuture ? 'vuoden' : 'vuosi'; + case 'yy': + result = isFuture ? 'vuoden' : 'vuotta'; + break; + } + result = verbalNumber(number, isFuture) + ' ' + result; + return result; +} +function verbalNumber(number, isFuture) { + return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; +} + +var fi = moment.defineLocale('fi', { + months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), + monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), + weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), + weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'), + weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD.MM.YYYY', + LL : 'Do MMMM[ta] YYYY', + LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm', + LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', + l : 'D.M.YYYY', + ll : 'Do MMM YYYY', + lll : 'Do MMM YYYY, [klo] HH.mm', + llll : 'ddd, Do MMM YYYY, [klo] HH.mm' + }, + calendar : { + sameDay : '[tänään] [klo] LT', + nextDay : '[huomenna] [klo] LT', + nextWeek : 'dddd [klo] LT', + lastDay : '[eilen] [klo] LT', + lastWeek : '[viime] dddd[na] [klo] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s päästä', + past : '%s sitten', + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return fi; + +}))); + + +/***/ }), + +/***/ "onRW": +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__("DLTi").Buffer +var Transform = __webpack_require__("GMoo").Transform +var StringDecoder = __webpack_require__("boXJ").StringDecoder +var inherits = __webpack_require__("mwrz") + +function CipherBase (hashMode) { + Transform.call(this) + this.hashMode = typeof hashMode === 'string' + if (this.hashMode) { + this[hashMode] = this._finalOrDigest + } else { + this.final = this._finalOrDigest + } + if (this._final) { + this.__final = this._final + this._final = null + } + this._decoder = null + this._encoding = null +} +inherits(CipherBase, Transform) + +CipherBase.prototype.update = function (data, inputEnc, outputEnc) { + if (typeof data === 'string') { + data = Buffer.from(data, inputEnc) + } + + var outData = this._update(data) + if (this.hashMode) return this + + if (outputEnc) { + outData = this._toString(outData, outputEnc) + } + + return outData +} + +CipherBase.prototype.setAutoPadding = function () {} +CipherBase.prototype.getAuthTag = function () { + throw new Error('trying to get auth tag in unsupported state') +} + +CipherBase.prototype.setAuthTag = function () { + throw new Error('trying to set auth tag in unsupported state') +} + +CipherBase.prototype.setAAD = function () { + throw new Error('trying to set aad in unsupported state') +} + +CipherBase.prototype._transform = function (data, _, next) { + var err + try { + if (this.hashMode) { + this._update(data) + } else { + this.push(this._update(data)) + } + } catch (e) { + err = e + } finally { + next(err) + } +} +CipherBase.prototype._flush = function (done) { + var err + try { + this.push(this.__final()) + } catch (e) { + err = e + } + + done(err) +} +CipherBase.prototype._finalOrDigest = function (outputEnc) { + var outData = this.__final() || Buffer.alloc(0) + if (outputEnc) { + outData = this._toString(outData, outputEnc, true) + } + return outData +} + +CipherBase.prototype._toString = function (value, enc, fin) { + if (!this._decoder) { + this._decoder = new StringDecoder(enc) + this._encoding = enc + } + + if (this._encoding !== enc) throw new Error('can\'t switch encodings') + + var out = this._decoder.write(value) + if (fin) { + out += this._decoder.end() + } + + return out +} + +module.exports = CipherBase + + +/***/ }), + +/***/ "pAGj": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Flv265Mixins; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_assets_js_EBML_js__ = __webpack_require__("Nobj"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_assets_js_EBML_js___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_assets_js_EBML_js__); +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + + + +var Flv265Mixins = { + data: function data() { + return { + flv265Ctx: null, + flv265Canvas: null, + flv265VideoEle: null, + flv265Codecs: ['video/x-matroska;codecs=avc1', 'video/webm;codecs=h264', 'video/webm;codecs=avc1', 'video/webm;codecs=vp8', 'video/webm;codecs=vp9'], + flv265Code: null, + flv265Recorder: null, + flv265RecordingChunks: [], + flv265AnimationFrame: null + }; + }, + + methods: { + flv265Snapshot: function flv265Snapshot() { + var canvas = document.createElement('canvas'); + var videoEle = this.$el.querySelector('#' + this._videoId + ' video'); + var width = videoEle.videoWidth, + height = videoEle.videoHeight; + + canvas.width = width; + canvas.height = height; + var ctx = canvas.getContext('2d'); + ctx.drawImage(videoEle, 0, 0, width, height); + // TODO 下载图片 + var date = new Date(); //实例一个时间对象; + var year = date.getFullYear(); //获取系统的年; + var month = date.getMonth() + 1; //获取系统月份,由于月份是从0开始计算,所以要加1 + var day = date.getDate(); //获取系统日 + var hour = date.getHours(); //获取系统时间 + var minute = date.getMinutes(); //分 + var second = date.getSeconds(); //秒 + var fileName = this.recordFileName ? this.recordFileName + '-' + year + month + day + hour + minute + second + '.png' : 'EasyPlayer-' + year + month + day + hour + minute + second + '.png'; + var a_el = document.createElement('a'); + a_el.download = '' + fileName; + canvas.toBlob(function (blob) { + a_el.href = URL.createObjectURL(blob); + a_el.click(); + + canvas = null; + }); + }, + flv265Recording: function flv265Recording() { + var _this = this; + + var active = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'all'; + + if (active) { + for (var index in this.flv265Codecs) { + var code = this.flv265Codecs[parseInt(index)]; + if (!MediaRecorder.isTypeSupported(code)) return; + this.flv265Code = code; + break; + } + if (type === 'all') { + var video_el = this.$el.querySelector('#' + this._videoId + ' video'); + + var video_stream = video_el.captureStream(); + + if (video_el.muted) video_stream = new MediaStream([].concat(_toConsumableArray(video_stream.getVideoTracks()))); + + this.flv265Recorder = new MediaRecorder(video_stream, { mimeType: this.flv265Code }); + + this.flv265Recorder.ondataavailable = function (event) { + return event.data.size > 0 && _this.flv265RecordingChunks.push(event.data); + }; + } else if (type === 'hls_265') { + //TODO hls 265 录像 + this.flv265Canvas = this.$el.querySelector('#' + this._videoId).parentNode.querySelector("canvas"); + this.flv265Ctx = this.flv265Canvas.getContext('2d'); + this.flv265Recorder = new MediaRecorder(this.flv265Canvas.captureStream(), { mimeType: this.flv265Code }); + this.flv265Recorder.ondataavailable = function (event) { + return event.data.size > 0 && _this.flv265RecordingChunks.push(event.data); + }; + } + this.flv265Recorder.onstop = function () { + var new_blob = new Blob(_this.flv265RecordingChunks, { type: 'video/webm;codecs=h264' }); + _this.getSeekableBlob(new_blob, 'video/webm;codecs=h264', function (blob) { + var link = document.createElement('a'); + link.style.display = 'none'; + link.href = window.URL.createObjectURL(blob); + link.download = _this._recordFileName ? _this._recordFileName : _this.recordFileName + '-' + _this.dateFormat(new Date(), "YYYYMMDDhhmmss") + '.mp4'; + document.body.appendChild(link); + link.click(); + link.remove(); + _this.$emit("recording", { type: 'end', data: blob }); + _this.flv265CleanCache(); + }); + }; + this.flv265Recorder.start(); + this.$emit("recording", { type: 'start' }); + } else this.flv265Recorder.stop(); + }, + flv265DrawFrame: function flv265DrawFrame() { + var _this2 = this; + + var _flv265VideoEle = this.flv265VideoEle, + videoWidth = _flv265VideoEle.videoWidth, + videoHeight = _flv265VideoEle.videoHeight; + + this.flv265Ctx.drawImage(this.flv265VideoEle, 0, 0, videoWidth, videoHeight); + this.flv265AnimationFrame = requestAnimationFrame(function () { + return _this2.flv265DrawFrame(); + }); + }, + flv265DownloadRecording: function flv265DownloadRecording() { + cancelAnimationFrame(this.flv265AnimationFrame); + var link = document.createElement('a'); + link.style.display = 'none'; + var fullBlob = new Blob(this.flv265RecordingChunks); + + var downloadUrl = window.URL.createObjectURL(fullBlob); + link.href = downloadUrl; + link.download = this._recordFileName ? this._recordFileName : this.recordFileName + '-' + this.dateFormat(new Date(), "YYYYMMDDhhmmss") + '.mp4'; + document.body.appendChild(link); + link.click(); + link.remove(); + this.flv265CleanCache(); + }, + flv265CleanCache: function flv265CleanCache() { + this.flv265Ctx = null; + this.flv265Canvas = null; + this.flv265VideoEle = null; + this.flv265Recorder = null; + this.flv265Code = null; + this.flv265RecordingChunks = []; + this.flv265AnimationFrame = null; + }, + getSeekableBlob: function getSeekableBlob(inputBlob, mediaType, callback) { + var reader = new __WEBPACK_IMPORTED_MODULE_0_assets_js_EBML_js__["Reader"](); + var decoder = new __WEBPACK_IMPORTED_MODULE_0_assets_js_EBML_js__["Decoder"](); + var tools = __WEBPACK_IMPORTED_MODULE_0_assets_js_EBML_js__["tools"]; + + var fileReader = new FileReader(); + fileReader.onload = function () { + var ebmlElms = decoder.decode(this.result); + ebmlElms.forEach(function (element) { + reader.read(element); + }); + reader.stop(); + var refinedMetadataBuf = tools.makeMetadataSeekable(reader.metadatas, reader.duration, reader.cues); + var body = this.result.slice(reader.metadataSize); + var newBlob = new Blob([refinedMetadataBuf, body], { + type: mediaType + }); + + callback(newBlob); + }; + fileReader.readAsArrayBuffer(inputBlob); + } + } +}; + +/***/ }), + +/***/ "pCCv": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Dutch [nl] +//! author : Joris Röling : https://github.com/jorisroling +//! author : Jacob Middag : https://github.com/middagj + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'); +var monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); + +var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; +var monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + +var nl = moment.defineLocale('nl', { + months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortWithDots; + } else if (/-MMM-/.test(format)) { + return monthsShortWithoutDots[m.month()]; + } else { + return monthsShortWithDots[m.month()]; + } + }, + + monthsRegex: monthsRegex, + monthsShortRegex: monthsRegex, + monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i, + monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, + + monthsParse : monthsParse, + longMonthsParse : monthsParse, + shortMonthsParse : monthsParse, + + weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), + weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[vandaag om] LT', + nextDay: '[morgen om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[gisteren om] LT', + lastWeek: '[afgelopen] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'over %s', + past : '%s geleden', + s : 'een paar seconden', + m : 'één minuut', + mm : '%d minuten', + h : 'één uur', + hh : '%d uur', + d : 'één dag', + dd : '%d dagen', + M : 'één maand', + MM : '%d maanden', + y : 'één jaar', + yy : '%d jaar' + }, + dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return nl; + +}))); + + +/***/ }), + +/***/ "pLtV": +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__("DLTi").Buffer + +module.exports = function (thing, encoding, name) { + if (Buffer.isBuffer(thing)) { + return thing + } else if (typeof thing === 'string') { + return Buffer.from(thing, encoding) + } else if (ArrayBuffer.isView(thing)) { + return Buffer.from(thing.buffer) + } else { + throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView') + } +} + + +/***/ }), + +/***/ "pOqu": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return VideoJsMixins; }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_assets_js_zh_CN_json__ = __webpack_require__("mfgY"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_assets_js_zh_CN_json___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_assets_js_zh_CN_json__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils__ = __webpack_require__("DHvs"); + + + +var VideoJsMixins = { + methods: { + //TODO 配置中文 + initVideoJs: function initVideoJs() { + videojs.addLanguage('zh-CN', __WEBPACK_IMPORTED_MODULE_0_assets_js_zh_CN_json___default.a); + }, + + //TODO 事件绑定 + setPlayerEventListener: function setPlayerEventListener(player) { + var _this = this; + + if (player === null || this.isStreamH265) return; + if (!this.isSafari) { + player.on("loadstart", function () { + return _this.easyPlayerLoadstart(); + }); + player.on("progress", function (e) { + return _this.easyPlayerProgress(e); + }); + player.on("loadedmetadata", function () { + return _this.easyPlayerLoadedmetadata(); + }); + player.on("canplaythrough", function () { + return _this.easyPlayerCanplaythrough(); + }); + player.on("waiting", function () { + return _this.easyPlayerWaiting(); + }); + player.on("play", function (e) { + return _this.easyPlayerPlay(e); + }); + player.on("playing", function () { + return _this.easyPlayerPlaying(); + }); + player.on("pause", function (e) { + return _this.easyPlayerPause(e); + }); + + player.on("ended", function () { + return _this.easyPlayerEnded(); + }); + player.on("error", function () { + return _this.easyPlayerError(); + }); + player.on("seeking", function () { + return _this.easyPlayerSeeking(); + }); + player.on("seeked", function () { + return _this.easyPlayerSeeked(); + }); + player.on("ratechange", function () { + return _this.easyPlayerRatechange(); + }); + + player.on("timeupdate", function () { + return _this.easyPlayerTimeupdate(); + }); + player.on("volumechange", function (e) { + return _this.easyPlayerVolumechange(e); + }); + player.on("stalled", function () { + return _this.easyPlayerStalled(); + }); + player.on("fullscreenchange", function () { + return _this.easyPlayerFullScreenChange(); + }); + setTimeout(function () { + return _this.setFlvPlayerListener(player); + }, 200); + } else { + player = this.$el.querySelector("video"); + player.addEventListener('canplaythrough', function () { + return _this.easyPlayerCanplaythrough(); + }); + } + + if (player.tech_ && player.tech_._emitter) { + player.tech_._emitter.on("FMP4JS_HEVC", function (hev) { + return _this.isStreamH265 = hev; + }); + player.tech_._emitter.on("FMP4JS_RESTART", function () { + return _this.restartPlayer(); + }); + } + }, + setFlvPlayerListener: function setFlvPlayerListener(player) { + var _this2 = this; + + if (player.tech_ && player.tech_.flvPlayer) { + player.tech_.flvPlayer._emitter.on("encoded_265", function () { + _this2.isStreamH265 = true; + _this2.loading = false; + }); + player.tech_.flvPlayer._emitter.on("source_ended", function () { + _this2.easyPlayerEnded(); + }); + player.tech_.flvPlayer._emitter.on("changeFullScreen", function (isFull) { + if (isFull) _this2.fullscreen();else _this2.exitFullscreen(); + }); + + //TODO flv265 事件 + player.tech_.flvPlayer._emitter.on("video_type", function (type) { + if (type.includes('video/mp4;codecs=hvc')) _this2.isStreamH265 = true; + }); + + player.tech_.flvPlayer._emitter.on("snapshot", function (blob) { + return _this2.$emit("snapshot", blob); + }); + + player.tech_.flvPlayer.on(flvjs.Events.STATISTICS_INFO, function (info) { + var decodedFrames = info.decodedFrames; + + if (decodedFrames !== _this2.flvLastFrame) { + _this2.flvLastFrame = decodedFrames; + _this2.flvLastFrameTimer && clearTimeout(_this2.flvLastFrameTimer); + _this2.flvLastFrameTimer = null; + } else { + if (_this2.flvLastFrameTimer || player.paused()) return; + _this2.flvLastFrameTimer = setTimeout(function () { + return _this2.restartPlayer(); + }, 1000 * 10); + } + }); + } + }, + easyPlayerLoadstart: function easyPlayerLoadstart() { + this.pause = false; + this.loading = true; + __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* Log */](this, this.debug, "视频开始加载"); + }, + easyPlayerPlay: function easyPlayerPlay(e) { + __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* Log */](this, this.debug, "视频开始播放"); + this.$emit("play", e); + }, + easyPlayerWaiting: function easyPlayerWaiting() { + __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* Log */](this, this.debug, "等待数据"); + this.startWaitingTime = new Date().getTime(); + }, + easyPlayerCanplaythrough: function easyPlayerCanplaythrough() { + if (this.isFirstPaused) this.isFirstPaused = false; + if (this.loading) this.loading = false; + __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* Log */](this, this.debug, "视频源数据加载完成"); + var vjsPosterEle = this.$el.querySelector('.vjs-poster'); + if (vjsPosterEle) this.$el.querySelector('.vjs-poster').classList = vjsPosterEle.getAttribute("class") + " vjs-poster-animation"; + if (this.isSafari) { + if (this.live) this.$el.querySelector(".vjs-progress-control").style.opacity = 0; + if (this.live) this.$el.querySelector(".vjs-remaining-time").style.opacity = 0; + } + }, + easyPlayerLoadedmetadata: function easyPlayerLoadedmetadata() { + __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* Log */](this, this.debug, "获取资源长度完成", "\u52A0\u8F7D\u65F6\u957F" + (new Date().getTime() - this.startWaitingTime) / 1000 + "s"); + }, + easyPlayerPlaying: function easyPlayerPlaying() { + this.pause = false; + this.playerPlaying = true; + this.isCacheCleanUp = false; //初始化完成关闭表示 + this.restartSnapshot = null; + this.loading = false; + __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* Log */](this, this.debug, "视频播放中"); + }, + easyPlayerProgress: function easyPlayerProgress() { + if (this.videoUrl.includes(".flv")) this.setFLVListener(); + }, + easyPlayerPause: function easyPlayerPause(e) { + __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* Log */](this, this.debug, "暂停事件"); + this.pause = true; + this.$emit("pause", e); + }, + easyPlayerFullScreenChange: function easyPlayerFullScreenChange() { + __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* Log */](this, this.debug, "视频全屏状态"); + }, + easyPlayerEnded: function easyPlayerEnded() { + this.$emit("ended"); + if (this.reconnection) this.restartPlayer(); + __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* Log */](this, this.debug, "视频播放结束"); + }, + easyPlayerError: function easyPlayerError() { + this.loading = false; + this.$emit("error"); + if (this.reconnection) this.restartPlayer(); + __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* Log */](this, this.debug, "加载错误"); + }, + easyPlayerSeeking: function easyPlayerSeeking() { + __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* Log */](this, this.debug, "视频跳转中"); + }, + easyPlayerSeeked: function easyPlayerSeeked() { + __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* Log */](this, this.debug, "视频跳转结束"); + }, + easyPlayerRatechange: function easyPlayerRatechange() { + __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* Log */](this, this.debug, "播放速率改变"); + }, + easyPlayerTimeupdate: function easyPlayerTimeupdate() { + if (this.isStreamH265) return; + if (this.loading) this.loading = false; + var differTime = this.easyPlayer.buffered().end(0) - this.easyPlayer.currentTime(); + // //TODO 处理直播 flv 流延迟过长的问题 + if (this.videoUrl.includes('.flv') && this.live) { + if (differTime < 10) return this.easyPlayer.playbackRate(1); + if (differTime < 30) return this.easyPlayer.playbackRate(1.15); + if (differTime < 60) return this.easyPlayer.playbackRate(1.25); + if (differTime < 120) return this.easyPlayer.playbackRate(1.5); + this.initPlayer(); + } + if (this.easyPlayer && this.easyPlayer.currentTime) this.$emit("timeupdate", this.easyPlayer.currentTime()); + }, + easyPlayerVolumechange: function easyPlayerVolumechange(e) { + __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* Log */](this, this.debug, "音量改变"); + this.playerMuted = this.easyPlayer.muted(); + }, + easyPlayerStalled: function easyPlayerStalled() { + __WEBPACK_IMPORTED_MODULE_1__utils__["a" /* Log */](this, this.debug, "网速异常"); + }, + + //TODO 加载不同分辨率 + loadDefinitionStreams: function loadDefinitionStreams() { + var _this3 = this; + + var player = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + if (!this.videoUrl.includes(".m3u8")) return; //只有m3u8 才会渲染多分辨率 + if (!this.resolution) return; + var resolutionList = this.resolution.split(","); + var srcList = []; + resolutionList.forEach(function (res) { + var src = ''; + if (res === 'yh') src = _this3.videoUrl;else src = _this3.videoUrl.replace(".m3u8", "_" + res + ".m3u8"); + srcList.push({ + src: src, + res: res, + type: 'application/x-mpegURL', + label: _this3.resolutionDict[res] + }); + }); + player.updateSrc(srcList); + this.$nextTick(function () { + _this3.$el.querySelector('.vjs-resolution-button-label').style = "position:absolute;left:10px;top:9px;"; + }); + } + } +}; + +/***/ }), + +/***/ "pXNo": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Yoruba Nigeria [yo] +//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var yo = moment.defineLocale('yo', { + months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'), + monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), + weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), + weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), + weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[Ònì ni] LT', + nextDay : '[Ọ̀la ni] LT', + nextWeek : 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT', + lastDay : '[Àna ni] LT', + lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'ní %s', + past : '%s kọjá', + s : 'ìsẹjú aayá die', + m : 'ìsẹjú kan', + mm : 'ìsẹjú %d', + h : 'wákati kan', + hh : 'wákati %d', + d : 'ọjọ́ kan', + dd : 'ọjọ́ %d', + M : 'osù kan', + MM : 'osù %d', + y : 'ọdún kan', + yy : 'ọdún %d' + }, + dayOfMonthOrdinalParse : /ọjọ́\s\d{1,2}/, + ordinal : 'ọjọ́ %d', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return yo; + +}))); + + +/***/ }), + +/***/ "pZ5O": +/***/ (function(module, exports, __webpack_require__) { + +var inherits = __webpack_require__("mwrz") +var Hash = __webpack_require__("QYQw") +var Buffer = __webpack_require__("DLTi").Buffer + +var K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, + 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, + 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, + 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, + 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, + 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, + 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, + 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, + 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, + 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, + 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, + 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, + 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, + 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, + 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, + 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, + 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, + 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, + 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, + 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, + 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, + 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, + 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, + 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, + 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, + 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, + 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, + 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, + 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, + 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, + 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, + 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, + 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, + 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, + 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, + 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 +] + +var W = new Array(160) + +function Sha512 () { + this.init() + this._w = W + + Hash.call(this, 128, 112) +} + +inherits(Sha512, Hash) + +Sha512.prototype.init = function () { + this._ah = 0x6a09e667 + this._bh = 0xbb67ae85 + this._ch = 0x3c6ef372 + this._dh = 0xa54ff53a + this._eh = 0x510e527f + this._fh = 0x9b05688c + this._gh = 0x1f83d9ab + this._hh = 0x5be0cd19 + + this._al = 0xf3bcc908 + this._bl = 0x84caa73b + this._cl = 0xfe94f82b + this._dl = 0x5f1d36f1 + this._el = 0xade682d1 + this._fl = 0x2b3e6c1f + this._gl = 0xfb41bd6b + this._hl = 0x137e2179 + + return this +} + +function Ch (x, y, z) { + return z ^ (x & (y ^ z)) +} + +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} + +function sigma0 (x, xl) { + return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) +} + +function sigma1 (x, xl) { + return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) +} + +function Gamma0 (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) +} + +function Gamma0l (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) +} + +function Gamma1 (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) +} + +function Gamma1l (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) +} + +function getCarry (a, b) { + return (a >>> 0) < (b >>> 0) ? 1 : 0 +} + +Sha512.prototype._update = function (M) { + var W = this._w + + var ah = this._ah | 0 + var bh = this._bh | 0 + var ch = this._ch | 0 + var dh = this._dh | 0 + var eh = this._eh | 0 + var fh = this._fh | 0 + var gh = this._gh | 0 + var hh = this._hh | 0 + + var al = this._al | 0 + var bl = this._bl | 0 + var cl = this._cl | 0 + var dl = this._dl | 0 + var el = this._el | 0 + var fl = this._fl | 0 + var gl = this._gl | 0 + var hl = this._hl | 0 + + for (var i = 0; i < 32; i += 2) { + W[i] = M.readInt32BE(i * 4) + W[i + 1] = M.readInt32BE(i * 4 + 4) + } + for (; i < 160; i += 2) { + var xh = W[i - 15 * 2] + var xl = W[i - 15 * 2 + 1] + var gamma0 = Gamma0(xh, xl) + var gamma0l = Gamma0l(xl, xh) + + xh = W[i - 2 * 2] + xl = W[i - 2 * 2 + 1] + var gamma1 = Gamma1(xh, xl) + var gamma1l = Gamma1l(xl, xh) + + // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] + var Wi7h = W[i - 7 * 2] + var Wi7l = W[i - 7 * 2 + 1] + + var Wi16h = W[i - 16 * 2] + var Wi16l = W[i - 16 * 2 + 1] + + var Wil = (gamma0l + Wi7l) | 0 + var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0 + Wil = (Wil + gamma1l) | 0 + Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0 + Wil = (Wil + Wi16l) | 0 + Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0 + + W[i] = Wih + W[i + 1] = Wil + } + + for (var j = 0; j < 160; j += 2) { + Wih = W[j] + Wil = W[j + 1] + + var majh = maj(ah, bh, ch) + var majl = maj(al, bl, cl) + + var sigma0h = sigma0(ah, al) + var sigma0l = sigma0(al, ah) + var sigma1h = sigma1(eh, el) + var sigma1l = sigma1(el, eh) + + // t1 = h + sigma1 + ch + K[j] + W[j] + var Kih = K[j] + var Kil = K[j + 1] + + var chh = Ch(eh, fh, gh) + var chl = Ch(el, fl, gl) + + var t1l = (hl + sigma1l) | 0 + var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0 + t1l = (t1l + chl) | 0 + t1h = (t1h + chh + getCarry(t1l, chl)) | 0 + t1l = (t1l + Kil) | 0 + t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0 + t1l = (t1l + Wil) | 0 + t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0 + + // t2 = sigma0 + maj + var t2l = (sigma0l + majl) | 0 + var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0 + + hh = gh + hl = gl + gh = fh + gl = fl + fh = eh + fl = el + el = (dl + t1l) | 0 + eh = (dh + t1h + getCarry(el, dl)) | 0 + dh = ch + dl = cl + ch = bh + cl = bl + bh = ah + bl = al + al = (t1l + t2l) | 0 + ah = (t1h + t2h + getCarry(al, t1l)) | 0 + } + + this._al = (this._al + al) | 0 + this._bl = (this._bl + bl) | 0 + this._cl = (this._cl + cl) | 0 + this._dl = (this._dl + dl) | 0 + this._el = (this._el + el) | 0 + this._fl = (this._fl + fl) | 0 + this._gl = (this._gl + gl) | 0 + this._hl = (this._hl + hl) | 0 + + this._ah = (this._ah + ah + getCarry(this._al, al)) | 0 + this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0 + this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0 + this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0 + this._eh = (this._eh + eh + getCarry(this._el, el)) | 0 + this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0 + this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0 + this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0 +} + +Sha512.prototype._hash = function () { + var H = Buffer.allocUnsafe(64) + + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset) + H.writeInt32BE(l, offset + 4) + } + + writeInt64BE(this._ah, this._al, 0) + writeInt64BE(this._bh, this._bl, 8) + writeInt64BE(this._ch, this._cl, 16) + writeInt64BE(this._dh, this._dl, 24) + writeInt64BE(this._eh, this._el, 32) + writeInt64BE(this._fh, this._fl, 40) + writeInt64BE(this._gh, this._gl, 48) + writeInt64BE(this._hh, this._hl, 56) + + return H +} + +module.exports = Sha512 + + +/***/ }), + +/***/ "pb7G": +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__("LcQ3").Transform + + +/***/ }), + +/***/ "pmUU": +/***/ (function(module, exports, __webpack_require__) { + +var ciphers = __webpack_require__("qWK6") +var deciphers = __webpack_require__("z7O9") +var modes = __webpack_require__("gCvn") + +function getCiphers () { + return Object.keys(modes) +} + +exports.createCipher = exports.Cipher = ciphers.createCipher +exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv +exports.createDecipher = exports.Decipher = deciphers.createDecipher +exports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv +exports.listCiphers = exports.getCiphers = getCiphers + + +/***/ }), + +/***/ "qHGM": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return WasmMixins; }); +var WasmMixins = { + methods: { + //TODO H265 初始化始播放器 + initH265Player: function initH265Player(code, reloadBool) { + var _this = this; + + if (code === 12) { + if (this.videoUrl.indexOf(".m3u8") !== -1) this.destroyPlayer(); + this.$nextTick(function () { + if (_this.videoUrl.indexOf(".m3u8") === -1) _this.destroyPlayer(); + _this.initVideoEle(); + var videoEle = _this.$el.querySelector("video"); + videoEle.parentNode.appendChild(_this.easyPlayerLoadingEle); //解决全屏无法出现loading 的问题 + var video_url = _this.videoUrl; + if (video_url.startsWith("app://.")) video_url = video_url.replace("app://.", _this.remoteHost); + _this.easyPlayer = new flvjs.createPlayer({ + url: video_url, + muted: _this.muted, + hasAudio: _this.hasAudio, + remoteHost: _this.remoteHost, + recordMaxFileSize: _this.recordMaxFileSize + }, { decodeType: flvjs.isSupported() ? 'auto' : 'sort', recordFileName: _this.recordFileName }); + _this.easyPlayer.attachMediaElement(videoEle); + _this.easyPlayer.load(); + _this.easyPlayer.play(); + + // setTimeout(() => this.initWatermark(true), 800) + + setTimeout(function () { + return _this.loading = false; + }, 3500); + //TODO 处理265 hls 播放404 + _this.easyPlayer._emitter.on("source_ended", function () { + _this.easyPlayerEnded(); + }); + _this.easyPlayer._emitter.on("timeupdate", function (currentTime) { + _this.$emit("timeupdate", currentTime); + }); + _this.easyPlayer._emitter.on("changeFullScreen", function (isFull) { + if (isFull) _this.fullscreen();else _this.exitFullscreen(); + }); + //TODO 265 hls 录像回调 + _this.easyPlayer._emitter.on("recording_start", function () { + return _this.flv265Recording(true, "hls_265"); + }); + _this.easyPlayer._emitter.on("recording_end", function () { + return _this.mediaRecorder && _this.flv265Recording(); + }); + _this.easyPlayer._emitter.on("snapshot", function (blob) { + return _this.$emit("snapshot", blob); + }); + }); + } + }, + + //TODO HLS 录像下载 + recordDownload: function recordDownload() { + if (this._recordArrayBuffer.length === 0 || this._recordArrayBuffer.byteLength === 0) return; + var cacheArrayBuffer = this._recordArrayBuffer.slice(0, this._recordOffset); + var aEle = document.createElement('a'); + aEle.style.display = 'none'; + aEle.href = URL.createObjectURL(new Blob([cacheArrayBuffer], { type: 'video/mp4' })); + aEle.download = this.recordFileName.includes(".mp4") ? this.recordFileName : this.recordFileName + "-" + this.dateFormat(new Date(), "YYYYMMDDhhmmss") + ".mp4"; + document.body.appendChild(aEle); + aEle.click(); + window.URL.revokeObjectURL(aEle.href); + document.body.removeChild(aEle); + this._recordOffset = 0; + this._recordArrayBuffer = []; + this._cacheArrayBuffer = []; + }, + _recordingUIChange: function _recordingUIChange() { + this._recording = !this._recording; + this.luXiangEle.title = this._recording ? "关闭录像" : "录像"; + this.luXiangEle.style.color = this._recording ? 'red' : 'white'; + if (this._recording) this._recordFileName = this.recordFileName ? this.recordFileName + ".mp4" : this.dateFormat(new Date(), "YYYYMMDDhhmmss") + ".mp4"; + if (flv265.getFeatureList().nativeMP4H265Playback) this.flv265Recording(this._recording); + }, + wasmFrame2Image: function wasmFrame2Image() { + var _this2 = this; + + var keyframe = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : './channel_1.raw'; + + return new Promise(function (resolve, reject) { + var bufferLength = void 0; + if (keyframe === '') return resolve(""); + if (keyframe.startsWith("app://./")) keyframe = keyframe.replace("app://.", _this2.remoteHost); + if (!keyframe.startsWith("http")) keyframe = "" + _this2.remoteHost + keyframe; + fetch(keyframe, { method: "get", responseType: 'arraybuffer', keepalive: false, headers: { timeout: 10 } }).then(function (data) { + return data.arrayBuffer(); + }).then(function (buffer) { + bufferLength = parseInt(buffer.byteLength || '0'); + buffer = new Uint8Array(buffer); + var mModule = window.easyPlayerWasmModule; + var wasmKits = window.easyPlayerWasmKits; + var offset = mModule._malloc(bufferLength); + resolve(_this2.binaryToImageBase64(buffer, bufferLength, mModule, wasmKits, offset)); + }).catch(function (e) { + console.log("i 帧 加载失败", e); + resolve(""); + }); + }); + }, + binaryToImageBase64: function binaryToImageBase64(buffer, bufferLength, mModule, wasmKits, offset) { + wasmKits.applyMemory(); + mModule.HEAP8.set(buffer, offset); + var n = void 0; + var outImageData = void 0, + b64encoded = void 0; + try { + n = wasmKits.convertFrame2Image(0, offset, bufferLength, wasmKits.yuvData, 0); + mModule._free(offset); + wasmKits.freeMemory(); + outImageData = mModule.HEAPU8.subarray(wasmKits.yuvData, wasmKits.yuvData + n); + /** + * String.fromCharCode.apply(null, array) 显示 Maximum call stack size exceeded + * 超过最大调用堆栈大小 + */ + var chunk = 8 * 1024, + strData = ''; + var i = void 0; + for (i = 0; i < outImageData.length / chunk; i++) { + strData += String.fromCharCode.apply(null, outImageData.slice(i * chunk, (i + 1) * chunk)); + } + strData += String.fromCharCode.apply(null, outImageData.slice(i * chunk)); + b64encoded = btoa(strData); + } catch (e) { + return ''; + } + return "data:image/jpeg;base64," + b64encoded; + } + } +}; + +/***/ }), + +/***/ "qI9I": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + + + +/*<replacement>*/ + +var pna = __webpack_require__("z2li"); +/*</replacement>*/ + +/*<replacement>*/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/*</replacement>*/ + +module.exports = Duplex; + +/*<replacement>*/ +var util = Object.create(__webpack_require__("rcOv")); +util.inherits = __webpack_require__("mwrz"); +/*</replacement>*/ + +var Readable = __webpack_require__("TDlb"); +var Writable = __webpack_require__("y7x+"); + +util.inherits(Duplex, Readable); + +{ + // avoid scope creep, the keys array can then be collected + var keys = objectKeys(Writable.prototype); + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + + Readable.call(this, options); + Writable.call(this, options); + + if (options && options.readable === false) this.readable = false; + + if (options && options.writable === false) this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + + this.once('end', onend); +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; + + // no more data can be written. + // But allow more writes to happen in this tick. + pna.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); + +Duplex.prototype._destroy = function (err, cb) { + this.push(null); + this.end(); + + pna.nextTick(cb, err); +}; + +/***/ }), + +/***/ "qW1i": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var BN = __webpack_require__("u/Wk"); +var utils = __webpack_require__("UXd7"); +var getNAF = utils.getNAF; +var getJSF = utils.getJSF; +var assert = utils.assert; + +function BaseCurve(type, conf) { + this.type = type; + this.p = new BN(conf.p, 16); + + // Use Montgomery, when there is no fast reduction for the prime + this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p); + + // Useful for many curves + this.zero = new BN(0).toRed(this.red); + this.one = new BN(1).toRed(this.red); + this.two = new BN(2).toRed(this.red); + + // Curve configuration, optional + this.n = conf.n && new BN(conf.n, 16); + this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed); + + // Temporary arrays + this._wnafT1 = new Array(4); + this._wnafT2 = new Array(4); + this._wnafT3 = new Array(4); + this._wnafT4 = new Array(4); + + this._bitLength = this.n ? this.n.bitLength() : 0; + + // Generalized Greg Maxwell's trick + var adjustCount = this.n && this.p.div(this.n); + if (!adjustCount || adjustCount.cmpn(100) > 0) { + this.redN = null; + } else { + this._maxwellTrick = true; + this.redN = this.n.toRed(this.red); + } +} +module.exports = BaseCurve; + +BaseCurve.prototype.point = function point() { + throw new Error('Not implemented'); +}; + +BaseCurve.prototype.validate = function validate() { + throw new Error('Not implemented'); +}; + +BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) { + assert(p.precomputed); + var doubles = p._getDoubles(); + + var naf = getNAF(k, 1, this._bitLength); + var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1); + I /= 3; + + // Translate into more windowed form + var repr = []; + var j; + var nafW; + for (j = 0; j < naf.length; j += doubles.step) { + nafW = 0; + for (var l = j + doubles.step - 1; l >= j; l--) + nafW = (nafW << 1) + naf[l]; + repr.push(nafW); + } + + var a = this.jpoint(null, null, null); + var b = this.jpoint(null, null, null); + for (var i = I; i > 0; i--) { + for (j = 0; j < repr.length; j++) { + nafW = repr[j]; + if (nafW === i) + b = b.mixedAdd(doubles.points[j]); + else if (nafW === -i) + b = b.mixedAdd(doubles.points[j].neg()); + } + a = a.add(b); + } + return a.toP(); +}; + +BaseCurve.prototype._wnafMul = function _wnafMul(p, k) { + var w = 4; + + // Precompute window + var nafPoints = p._getNAFPoints(w); + w = nafPoints.wnd; + var wnd = nafPoints.points; + + // Get NAF form + var naf = getNAF(k, w, this._bitLength); + + // Add `this`*(N+1) for every w-NAF index + var acc = this.jpoint(null, null, null); + for (var i = naf.length - 1; i >= 0; i--) { + // Count zeroes + for (var l = 0; i >= 0 && naf[i] === 0; i--) + l++; + if (i >= 0) + l++; + acc = acc.dblp(l); + + if (i < 0) + break; + var z = naf[i]; + assert(z !== 0); + if (p.type === 'affine') { + // J +- P + if (z > 0) + acc = acc.mixedAdd(wnd[(z - 1) >> 1]); + else + acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg()); + } else { + // J +- J + if (z > 0) + acc = acc.add(wnd[(z - 1) >> 1]); + else + acc = acc.add(wnd[(-z - 1) >> 1].neg()); + } + } + return p.type === 'affine' ? acc.toP() : acc; +}; + +BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, + points, + coeffs, + len, + jacobianResult) { + var wndWidth = this._wnafT1; + var wnd = this._wnafT2; + var naf = this._wnafT3; + + // Fill all arrays + var max = 0; + var i; + var j; + var p; + for (i = 0; i < len; i++) { + p = points[i]; + var nafPoints = p._getNAFPoints(defW); + wndWidth[i] = nafPoints.wnd; + wnd[i] = nafPoints.points; + } + + // Comb small window NAFs + for (i = len - 1; i >= 1; i -= 2) { + var a = i - 1; + var b = i; + if (wndWidth[a] !== 1 || wndWidth[b] !== 1) { + naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength); + naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength); + max = Math.max(naf[a].length, max); + max = Math.max(naf[b].length, max); + continue; + } + + var comb = [ + points[a], /* 1 */ + null, /* 3 */ + null, /* 5 */ + points[b], /* 7 */ + ]; + + // Try to avoid Projective points, if possible + if (points[a].y.cmp(points[b].y) === 0) { + comb[1] = points[a].add(points[b]); + comb[2] = points[a].toJ().mixedAdd(points[b].neg()); + } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) { + comb[1] = points[a].toJ().mixedAdd(points[b]); + comb[2] = points[a].add(points[b].neg()); + } else { + comb[1] = points[a].toJ().mixedAdd(points[b]); + comb[2] = points[a].toJ().mixedAdd(points[b].neg()); + } + + var index = [ + -3, /* -1 -1 */ + -1, /* -1 0 */ + -5, /* -1 1 */ + -7, /* 0 -1 */ + 0, /* 0 0 */ + 7, /* 0 1 */ + 5, /* 1 -1 */ + 1, /* 1 0 */ + 3, /* 1 1 */ + ]; + + var jsf = getJSF(coeffs[a], coeffs[b]); + max = Math.max(jsf[0].length, max); + naf[a] = new Array(max); + naf[b] = new Array(max); + for (j = 0; j < max; j++) { + var ja = jsf[0][j] | 0; + var jb = jsf[1][j] | 0; + + naf[a][j] = index[(ja + 1) * 3 + (jb + 1)]; + naf[b][j] = 0; + wnd[a] = comb; + } + } + + var acc = this.jpoint(null, null, null); + var tmp = this._wnafT4; + for (i = max; i >= 0; i--) { + var k = 0; + + while (i >= 0) { + var zero = true; + for (j = 0; j < len; j++) { + tmp[j] = naf[j][i] | 0; + if (tmp[j] !== 0) + zero = false; + } + if (!zero) + break; + k++; + i--; + } + if (i >= 0) + k++; + acc = acc.dblp(k); + if (i < 0) + break; + + for (j = 0; j < len; j++) { + var z = tmp[j]; + p; + if (z === 0) + continue; + else if (z > 0) + p = wnd[j][(z - 1) >> 1]; + else if (z < 0) + p = wnd[j][(-z - 1) >> 1].neg(); + + if (p.type === 'affine') + acc = acc.mixedAdd(p); + else + acc = acc.add(p); + } + } + // Zeroify references + for (i = 0; i < len; i++) + wnd[i] = null; + + if (jacobianResult) + return acc; + else + return acc.toP(); +}; + +function BasePoint(curve, type) { + this.curve = curve; + this.type = type; + this.precomputed = null; +} +BaseCurve.BasePoint = BasePoint; + +BasePoint.prototype.eq = function eq(/*other*/) { + throw new Error('Not implemented'); +}; + +BasePoint.prototype.validate = function validate() { + return this.curve.validate(this); +}; + +BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) { + bytes = utils.toArray(bytes, enc); + + var len = this.p.byteLength(); + + // uncompressed, hybrid-odd, hybrid-even + if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) && + bytes.length - 1 === 2 * len) { + if (bytes[0] === 0x06) + assert(bytes[bytes.length - 1] % 2 === 0); + else if (bytes[0] === 0x07) + assert(bytes[bytes.length - 1] % 2 === 1); + + var res = this.point(bytes.slice(1, 1 + len), + bytes.slice(1 + len, 1 + 2 * len)); + + return res; + } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) && + bytes.length - 1 === len) { + return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03); + } + throw new Error('Unknown point format'); +}; + +BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) { + return this.encode(enc, true); +}; + +BasePoint.prototype._encode = function _encode(compact) { + var len = this.curve.p.byteLength(); + var x = this.getX().toArray('be', len); + + if (compact) + return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x); + + return [ 0x04 ].concat(x, this.getY().toArray('be', len)); +}; + +BasePoint.prototype.encode = function encode(enc, compact) { + return utils.encode(this._encode(compact), enc); +}; + +BasePoint.prototype.precompute = function precompute(power) { + if (this.precomputed) + return this; + + var precomputed = { + doubles: null, + naf: null, + beta: null, + }; + precomputed.naf = this._getNAFPoints(8); + precomputed.doubles = this._getDoubles(4, power); + precomputed.beta = this._getBeta(); + this.precomputed = precomputed; + + return this; +}; + +BasePoint.prototype._hasDoubles = function _hasDoubles(k) { + if (!this.precomputed) + return false; + + var doubles = this.precomputed.doubles; + if (!doubles) + return false; + + return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step); +}; + +BasePoint.prototype._getDoubles = function _getDoubles(step, power) { + if (this.precomputed && this.precomputed.doubles) + return this.precomputed.doubles; + + var doubles = [ this ]; + var acc = this; + for (var i = 0; i < power; i += step) { + for (var j = 0; j < step; j++) + acc = acc.dbl(); + doubles.push(acc); + } + return { + step: step, + points: doubles, + }; +}; + +BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) { + if (this.precomputed && this.precomputed.naf) + return this.precomputed.naf; + + var res = [ this ]; + var max = (1 << wnd) - 1; + var dbl = max === 1 ? null : this.dbl(); + for (var i = 1; i < max; i++) + res[i] = res[i - 1].add(dbl); + return { + wnd: wnd, + points: res, + }; +}; + +BasePoint.prototype._getBeta = function _getBeta() { + return null; +}; + +BasePoint.prototype.dblp = function dblp(k) { + var r = this; + for (var i = 0; i < k; i++) + r = r.dbl(); + return r; +}; + + +/***/ }), + +/***/ "qWK6": +/***/ (function(module, exports, __webpack_require__) { + +var MODES = __webpack_require__("4P1X") +var AuthCipher = __webpack_require__("s+YV") +var Buffer = __webpack_require__("DLTi").Buffer +var StreamCipher = __webpack_require__("GL8g") +var Transform = __webpack_require__("onRW") +var aes = __webpack_require__("fS0F") +var ebtk = __webpack_require__("gHHA") +var inherits = __webpack_require__("mwrz") + +function Cipher (mode, key, iv) { + Transform.call(this) + + this._cache = new Splitter() + this._cipher = new aes.AES(key) + this._prev = Buffer.from(iv) + this._mode = mode + this._autopadding = true +} + +inherits(Cipher, Transform) + +Cipher.prototype._update = function (data) { + this._cache.add(data) + var chunk + var thing + var out = [] + + while ((chunk = this._cache.get())) { + thing = this._mode.encrypt(this, chunk) + out.push(thing) + } + + return Buffer.concat(out) +} + +var PADDING = Buffer.alloc(16, 0x10) + +Cipher.prototype._final = function () { + var chunk = this._cache.flush() + if (this._autopadding) { + chunk = this._mode.encrypt(this, chunk) + this._cipher.scrub() + return chunk + } + + if (!chunk.equals(PADDING)) { + this._cipher.scrub() + throw new Error('data not multiple of block length') + } +} + +Cipher.prototype.setAutoPadding = function (setTo) { + this._autopadding = !!setTo + return this +} + +function Splitter () { + this.cache = Buffer.allocUnsafe(0) +} + +Splitter.prototype.add = function (data) { + this.cache = Buffer.concat([this.cache, data]) +} + +Splitter.prototype.get = function () { + if (this.cache.length > 15) { + var out = this.cache.slice(0, 16) + this.cache = this.cache.slice(16) + return out + } + return null +} + +Splitter.prototype.flush = function () { + var len = 16 - this.cache.length + var padBuff = Buffer.allocUnsafe(len) + + var i = -1 + while (++i < len) { + padBuff.writeUInt8(len, i) + } + + return Buffer.concat([this.cache, padBuff]) +} + +function createCipheriv (suite, password, iv) { + var config = MODES[suite.toLowerCase()] + if (!config) throw new TypeError('invalid suite type') + + if (typeof password === 'string') password = Buffer.from(password) + if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length) + + if (typeof iv === 'string') iv = Buffer.from(iv) + if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length) + + if (config.type === 'stream') { + return new StreamCipher(config.module, password, iv) + } else if (config.type === 'auth') { + return new AuthCipher(config.module, password, iv) + } + + return new Cipher(config.module, password, iv) +} + +function createCipher (suite, password) { + var config = MODES[suite.toLowerCase()] + if (!config) throw new TypeError('invalid suite type') + + var keys = ebtk(password, false, config.key, config.iv) + return createCipheriv(suite, keys.key, keys.iv) +} + +exports.createCipheriv = createCipheriv +exports.createCipher = createCipher + + +/***/ }), + +/***/ "qZQ+": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Serbian Cyrillic [sr-cyrl] +//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var translator = { + words: { //Different grammatical cases + m: ['један минут', 'једне минуте'], + mm: ['минут', 'минуте', 'минута'], + h: ['један сат', 'једног сата'], + hh: ['сат', 'сата', 'сати'], + dd: ['дан', 'дана', 'дана'], + MM: ['месец', 'месеца', 'месеци'], + yy: ['година', 'године', 'година'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + translator.correctGrammaticalCase(number, wordKey); + } + } +}; + +var srCyrl = moment.defineLocale('sr-cyrl', { + months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'), + monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'), + monthsParseExact: true, + weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), + weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), + weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), + weekdaysParseExact : true, + longDateFormat: { + LT: 'H:mm', + LTS : 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + calendar: { + sameDay: '[данас у] LT', + nextDay: '[сутра у] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[у] [недељу] [у] LT'; + case 3: + return '[у] [среду] [у] LT'; + case 6: + return '[у] [суботу] [у] LT'; + case 1: + case 2: + case 4: + case 5: + return '[у] dddd [у] LT'; + } + }, + lastDay : '[јуче у] LT', + lastWeek : function () { + var lastWeekDays = [ + '[прошле] [недеље] [у] LT', + '[прошлог] [понедељка] [у] LT', + '[прошлог] [уторка] [у] LT', + '[прошле] [среде] [у] LT', + '[прошлог] [четвртка] [у] LT', + '[прошлог] [петка] [у] LT', + '[прошле] [суботе] [у] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'за %s', + past : 'пре %s', + s : 'неколико секунди', + m : translator.translate, + mm : translator.translate, + h : translator.translate, + hh : translator.translate, + d : 'дан', + dd : translator.translate, + M : 'месец', + MM : translator.translate, + y : 'годину', + yy : translator.translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return srCyrl; + +}))); + + +/***/ }), + +/***/ "qp9e": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Nynorsk [nn] +//! author : https://github.com/mechuwind + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var nn = moment.defineLocale('nn', { + months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), + weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), + weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY [kl.] H:mm', + LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' + }, + calendar : { + sameDay: '[I dag klokka] LT', + nextDay: '[I morgon klokka] LT', + nextWeek: 'dddd [klokka] LT', + lastDay: '[I går klokka] LT', + lastWeek: '[Føregåande] dddd [klokka] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : '%s sidan', + s : 'nokre sekund', + m : 'eit minutt', + mm : '%d minutt', + h : 'ein time', + hh : '%d timar', + d : 'ein dag', + dd : '%d dagar', + M : 'ein månad', + MM : '%d månader', + y : 'eit år', + yy : '%d år' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return nn; + +}))); + + +/***/ }), + +/***/ "qve+": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var elliptic = exports; + +elliptic.version = __webpack_require__("y76T").version; +elliptic.utils = __webpack_require__("UXd7"); +elliptic.rand = __webpack_require__("fCcy"); +elliptic.curve = __webpack_require__("OJ8B"); +elliptic.curves = __webpack_require__("+wZ5"); + +// Protocols +elliptic.ec = __webpack_require__("BvRH"); +elliptic.eddsa = __webpack_require__("7tYQ"); + + +/***/ }), + +/***/ "r8ui": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : French (Canada) [fr-ca] +//! author : Jonathan Abourbih : https://github.com/jonbca + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var frCa = moment.defineLocale('fr-ca', { + months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), + monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + monthsParseExact : true, + weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Aujourd’hui à] LT', + nextDay : '[Demain à] LT', + nextWeek : 'dddd [à] LT', + lastDay : '[Hier à] LT', + lastWeek : 'dddd [dernier à] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dans %s', + past : 'il y a %s', + s : 'quelques secondes', + m : 'une minute', + mm : '%d minutes', + h : 'une heure', + hh : '%d heures', + d : 'un jour', + dd : '%d jours', + M : 'un mois', + MM : '%d mois', + y : 'un an', + yy : '%d ans' + }, + dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, + ordinal : function (number, period) { + switch (period) { + // Words with masculine grammatical gender: mois, trimestre, jour + default: + case 'M': + case 'Q': + case 'D': + case 'DDD': + case 'd': + return number + (number === 1 ? 'er' : 'e'); + + // Words with feminine grammatical gender: semaine + case 'w': + case 'W': + return number + (number === 1 ? 're' : 'e'); + } + } +}); + +return frCa; + +}))); + + +/***/ }), + +/***/ "rHed": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Hebrew [he] +//! author : Tomer Cohen : https://github.com/tomer +//! author : Moshe Simantov : https://github.com/DevelopmentIL +//! author : Tal Ater : https://github.com/TalAter + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var he = moment.defineLocale('he', { + months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), + monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), + weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), + weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), + weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [ב]MMMM YYYY', + LLL : 'D [ב]MMMM YYYY HH:mm', + LLLL : 'dddd, D [ב]MMMM YYYY HH:mm', + l : 'D/M/YYYY', + ll : 'D MMM YYYY', + lll : 'D MMM YYYY HH:mm', + llll : 'ddd, D MMM YYYY HH:mm' + }, + calendar : { + sameDay : '[היום ב־]LT', + nextDay : '[מחר ב־]LT', + nextWeek : 'dddd [בשעה] LT', + lastDay : '[אתמול ב־]LT', + lastWeek : '[ביום] dddd [האחרון בשעה] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'בעוד %s', + past : 'לפני %s', + s : 'מספר שניות', + m : 'דקה', + mm : '%d דקות', + h : 'שעה', + hh : function (number) { + if (number === 2) { + return 'שעתיים'; + } + return number + ' שעות'; + }, + d : 'יום', + dd : function (number) { + if (number === 2) { + return 'יומיים'; + } + return number + ' ימים'; + }, + M : 'חודש', + MM : function (number) { + if (number === 2) { + return 'חודשיים'; + } + return number + ' חודשים'; + }, + y : 'שנה', + yy : function (number) { + if (number === 2) { + return 'שנתיים'; + } else if (number % 10 === 0 && number !== 10) { + return number + ' שנה'; + } + return number + ' שנים'; + } + }, + meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i, + isPM : function (input) { + return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 5) { + return 'לפנות בוקר'; + } else if (hour < 10) { + return 'בבוקר'; + } else if (hour < 12) { + return isLower ? 'לפנה"צ' : 'לפני הצהריים'; + } else if (hour < 18) { + return isLower ? 'אחה"צ' : 'אחרי הצהריים'; + } else { + return 'בערב'; + } + } +}); + +return he; + +}))); + + +/***/ }), + +/***/ "rSD6": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Arabic (Morocco) [ar-ma] +//! author : ElFadili Yassine : https://github.com/ElFadiliY +//! author : Abdel Said : https://github.com/abdelsaid + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var arMa = moment.defineLocale('ar-ma', { + months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'في %s', + past : 'منذ %s', + s : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +return arMa; + +}))); + + +/***/ }), + +/***/ "rcOv": +/***/ (function(module, exports, __webpack_require__) { + +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. + +function isArray(arg) { + if (Array.isArray) { + return Array.isArray(arg); + } + return objectToString(arg) === '[object Array]'; +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = __webpack_require__("NfRg").Buffer.isBuffer; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +/***/ }), + +/***/ "rdaQ": +/***/ (function(module, exports) { + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var EPlayer = { Player: null, VideoElement: null, BitBuffer: null, Source: {}, Demuxer: {}, Decoder: {}, Renderer: {}, AudioOutput: {}, Now: function Now() { + return window.performance ? window.performance.now() / 1e3 : Date.now() / 1e3; + }, CreateVideoElements: function CreateVideoElements() { + for (var t = document.querySelectorAll(".eplayer"), e = 0; e < t.length; e++) { + new EPlayer.VideoElement(t[e]); + } + }, Fill: function Fill(t, e) { + if (t.fill) t.fill(e);else for (var i = 0; i < t.length; i++) { + t[i] = e; + } + } };"complete" === document.readyState ? EPlayer.CreateVideoElements() : document.addEventListener("DOMContentLoaded", EPlayer.CreateVideoElements), EPlayer.VideoElement = function () { + "use strict"; + var t = function t(e) { + var i = e.dataset.url;if (!i) throw "VideoElement has no `data-url` attribute";var s = function s(t, e) { + for (var i in e) { + t.style[i] = e[i]; + } + };this.container = e, s(this.container, { display: "inline-block", position: "relative", minWidth: "80px", minHeight: "80px" }), this.canvas = document.createElement("canvas"), this.canvas.width = 960, this.canvas.height = 540, s(this.canvas, { display: "block", width: "100%" }), this.container.appendChild(this.canvas), this.playButton = document.createElement("div"), this.playButton.innerHTML = t.PLAY_BUTTON, s(this.playButton, { zIndex: 2, position: "absolute", top: "0", bottom: "0", left: "0", right: "0", maxWidth: "75px", maxHeight: "75px", margin: "auto", opacity: "0.7", cursor: "pointer" }), this.container.appendChild(this.playButton);var r = { canvas: this.canvas };for (var o in e.dataset) { + try { + r[o] = JSON.parse(e.dataset[o]); + } catch (t) { + r[o] = e.dataset[o]; + } + }if (this.player = new EPlayer.Player(i, r), e.playerInstance = this.player, !r.poster || r.autoplay || this.player.options.streaming || (r.decodeFirstFrame = !1, this.poster = new Image(), this.poster.src = r.poster, this.poster.addEventListener("load", this.posterLoaded), s(this.poster, { display: "block", zIndex: 1, position: "absolute", top: 0, left: 0, bottom: 0, right: 0 }), this.container.appendChild(this.poster)), this.player.options.streaming || this.container.addEventListener("click", this.onClick.bind(this)), (r.autoplay || this.player.options.streaming) && (this.playButton.style.display = "none"), this.player.audioOut && !this.player.audioOut.unlocked) { + var n = this.container;(r.autoplay || this.player.options.streaming) && (this.unmuteButton = document.createElement("div"), this.unmuteButton.innerHTML = t.UNMUTE_BUTTON, s(this.unmuteButton, { zIndex: 2, position: "absolute", bottom: "10px", right: "20px", width: "75px", height: "75px", margin: "auto", opacity: "0.7", cursor: "pointer" }), this.container.appendChild(this.unmuteButton), n = this.unmuteButton), this.unlockAudioBound = this.onUnlockAudio.bind(this, n), n.addEventListener("touchstart", this.unlockAudioBound, !1), n.addEventListener("click", this.unlockAudioBound, !0); + } + };return t.prototype.onUnlockAudio = function (t, e) { + this.unmuteButton && (e.preventDefault(), e.stopPropagation()), this.player.audioOut.unlock(function () { + this.unmuteButton && (this.unmuteButton.style.display = "none"), t.removeEventListener("touchstart", this.unlockAudioBound), t.removeEventListener("click", this.unlockAudioBound); + }.bind(this)); + }, t.prototype.onClick = function (t) { + this.player.isPlaying ? (this.player.pause(), this.playButton.style.display = "block") : (this.player.play(), this.playButton.style.display = "none", this.poster && (this.poster.style.display = "none")); + }, t.PLAY_BUTTON = '<svg style="max-width: 75px; max-height: 75px;" viewBox="0 0 200 200" alt="Play video"><circle cx="100" cy="100" r="90" fill="none" stroke-width="15" stroke="#fff"/><polygon points="70, 55 70, 145 145, 100" fill="#fff"/></svg>', t.UNMUTE_BUTTON = '<svg style="max-width: 75px; max-height: 75px;" viewBox="0 0 75 75"><polygon class="audio-speaker" stroke="none" fill="#fff" points="39,13 22,28 6,28 6,47 21,47 39,62 39,13"/><g stroke="#fff" stroke-width="5"><path d="M 49,50 69,26"/><path d="M 69,50 49,26"/></g></svg>', t; +}(), EPlayer.Player = function () { + "use strict"; + var t = function t(_t, e) { + this.options = e || {}, e.source ? (this.source = new e.source(_t, e), e.streaming = !!this.source.streaming) : _t.match(/^wss?:\/\//) ? (this.source = new EPlayer.Source.WebSocket(_t, e), e.streaming = !0) : !1 !== e.progressive ? (this.source = new EPlayer.Source.AjaxProgressive(_t, e), e.streaming = !1) : (this.source = new EPlayer.Source.Ajax(_t, e), e.streaming = !1), this.maxAudioLag = e.maxAudioLag || .25, this.loop = !1 !== e.loop, this.autoplay = !!e.autoplay || e.streaming, this.demuxer = new EPlayer.Demuxer.TS(e), this.source.connect(this.demuxer), !1 !== e.video && (this.video = new EPlayer.Decoder.MPEG1Video(e), this.renderer = !e.disableGl && EPlayer.Renderer.WebGL.IsSupported() ? new EPlayer.Renderer.WebGL(e) : new EPlayer.Renderer.Canvas2D(e), this.demuxer.connect(EPlayer.Demuxer.TS.STREAM.VIDEO_1, this.video), this.video.connect(this.renderer)), !1 !== e.audio && EPlayer.AudioOutput.WebAudio.IsSupported() && (this.audio = new EPlayer.Decoder.MP2Audio(e), this.audioOut = new EPlayer.AudioOutput.WebAudio(e), this.demuxer.connect(EPlayer.Demuxer.TS.STREAM.AUDIO_1, this.audio), this.audio.connect(this.audioOut)), Object.defineProperty(this, "currentTime", { get: this.getCurrentTime, set: this.setCurrentTime }), Object.defineProperty(this, "volume", { get: this.getVolume, set: this.setVolume }), this.unpauseOnShow = !1, !1 !== e.pauseWhenHidden && document.addEventListener("visibilitychange", this.showHide.bind(this)), this.source.start(), this.autoplay && this.play(); + };return t.prototype.showHide = function (t) { + "hidden" === document.visibilityState ? (this.unpauseOnShow = this.wantsToPlay, this.pause()) : this.unpauseOnShow && this.play(); + }, t.prototype.play = function (t) { + this.animationId = requestAnimationFrame(this.update.bind(this)), this.wantsToPlay = !0; + }, t.prototype.pause = function (t) { + cancelAnimationFrame(this.animationId), this.wantsToPlay = !1, this.isPlaying = !1, this.audio && this.audio.canPlay && (this.audioOut.stop(), this.seek(this.currentTime)); + }, t.prototype.getVolume = function () { + return this.audioOut ? this.audioOut.volume : 0; + }, t.prototype.setVolume = function (t) { + this.audioOut && (this.audioOut.volume = t); + }, t.prototype.stop = function (t) { + this.pause(), this.seek(0), this.video && !1 !== this.options.decodeFirstFrame && this.video.decode(); + }, t.prototype.destroy = function () { + this.pause(), this.source.destroy(), this.renderer.destroy(), this.audioOut.destroy(); + }, t.prototype.seek = function (t) { + var e = this.audio && this.audio.canPlay ? this.audio.startTime : this.video.startTime;this.video && this.video.seek(t + e), this.audio && this.audio.seek(t + e), this.startTime = EPlayer.Now() - t; + }, t.prototype.getCurrentTime = function () { + return this.audio && this.audio.canPlay ? this.audio.currentTime - this.audio.startTime : this.video.currentTime - this.video.startTime; + }, t.prototype.setCurrentTime = function (t) { + this.seek(t); + }, t.prototype.update = function () { + if (this.animationId = requestAnimationFrame(this.update.bind(this)), !this.source.established) return void (this.renderer && this.renderer.renderProgress(this.source.progress));this.isPlaying || (this.isPlaying = !0, this.startTime = EPlayer.Now() - this.currentTime), this.options.streaming ? this.updateForStreaming() : this.updateForStaticFile(); + }, t.prototype.updateForStreaming = function () { + if (this.video && this.video.decode(), this.audio) { + var t = !1;do { + this.audioOut.enqueuedTime > this.maxAudioLag && (this.audioOut.resetEnqueuedTime(), this.audioOut.enabled = !1), t = this.audio.decode(); + } while (t);this.audioOut.enabled = !0; + } + }, t.prototype.updateForStaticFile = function () { + var t = !1, + e = 0;if (this.audio && this.audio.canPlay) { + for (; !t && this.audio.decodedTime - this.audio.currentTime < .25;) { + t = !this.audio.decode(); + }this.video && this.video.currentTime < this.audio.currentTime && (t = !this.video.decode()), e = this.demuxer.currentTime - this.audio.currentTime; + } else if (this.video) { + var i = EPlayer.Now() - this.startTime + this.video.startTime, + s = i - this.video.currentTime, + r = 1 / this.video.frameRate;this.video && s > 0 && (s > 2 * r && (this.startTime += s), t = !this.video.decode()), e = this.demuxer.currentTime - i; + }this.source.resume(e), t && this.source.completed && (this.loop ? this.seek(0) : this.pause()); + }, t; +}(), EPlayer.BitBuffer = function () { + "use strict"; + var t = function t(e, i) { + "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)) ? (this.bytes = e instanceof Uint8Array ? e : new Uint8Array(e), this.byteLength = this.bytes.length) : (this.bytes = new Uint8Array(e || 1048576), this.byteLength = 0), this.mode = i || t.MODE.EXPAND, this.index = 0; + };return t.prototype.resize = function (t) { + var e = new Uint8Array(t);0 !== this.byteLength && (this.byteLength = Math.min(this.byteLength, t), e.set(this.bytes, 0, this.byteLength)), this.bytes = e, this.index = Math.min(this.index, this.byteLength << 3); + }, t.prototype.evict = function (t) { + var e = this.index >> 3, + i = this.bytes.length - this.byteLength;if (this.index === this.byteLength << 3 || t > i + e) return this.byteLength = 0, void (this.index = 0);0 !== e && (this.bytes.copyWithin ? this.bytes.copyWithin(0, e, this.byteLength) : this.bytes.set(this.bytes.subarray(e, this.byteLength)), this.byteLength = this.byteLength - e, this.index -= e << 3); + }, t.prototype.write = function (e) { + var i = "object" == _typeof(e[0]), + s = 0, + r = this.bytes.length - this.byteLength;if (i) for (var s = 0, o = 0; o < e.length; o++) { + s += e[o].byteLength; + } else s = e.byteLength;if (s > r) if (this.mode === t.MODE.EXPAND) { + var n = Math.max(2 * this.bytes.length, s - r);this.resize(n); + } else this.evict(s);if (i) for (var o = 0; o < e.length; o++) { + this.appendSingleBuffer(e[o]); + } else this.appendSingleBuffer(e); + }, t.prototype.appendSingleBuffer = function (t) { + t = t instanceof Uint8Array ? t : new Uint8Array(t), this.bytes.set(t, this.byteLength), this.byteLength += t.length; + }, t.prototype.findNextStartCode = function () { + for (var t = this.index + 7 >> 3; t < this.byteLength; t++) { + if (0 == this.bytes[t] && 0 == this.bytes[t + 1] && 1 == this.bytes[t + 2]) return this.index = t + 4 << 3, this.bytes[t + 3]; + }return this.index = this.byteLength << 3, -1; + }, t.prototype.findStartCode = function (t) { + for (var e = 0;;) { + if ((e = this.findNextStartCode()) === t || -1 === e) return e; + }return -1; + }, t.prototype.nextBytesAreStartCode = function () { + var t = this.index + 7 >> 3;return t >= this.byteLength || 0 == this.bytes[t] && 0 == this.bytes[t + 1] && 1 == this.bytes[t + 2]; + }, t.prototype.peek = function (t) { + for (var e = this.index, i = 0; t;) { + var s = this.bytes[e >> 3], + r = 8 - (7 & e), + o = r < t ? r : t, + n = r - o;i = i << o | (s & 255 >> 8 - o << n) >> n, e += o, t -= o; + }return i; + }, t.prototype.read = function (t) { + var e = this.peek(t);return this.index += t, e; + }, t.prototype.skip = function (t) { + return this.index += t; + }, t.prototype.rewind = function (t) { + this.index = Math.max(this.index - t, 0); + }, t.prototype.has = function (t) { + return (this.byteLength << 3) - this.index >= t; + }, t.MODE = { EVICT: 1, EXPAND: 2 }, t; +}(), EPlayer.Source.Ajax = function () { + "use strict"; + var t = function t(_t2, e) { + this.url = _t2, this.destination = null, this.request = null, this.completed = !1, this.established = !1, this.progress = 0; + };return t.prototype.connect = function (t) { + this.destination = t; + }, t.prototype.start = function () { + this.request = new XMLHttpRequest(), this.request.onreadystatechange = function () { + this.request.readyState === this.request.DONE && 200 === this.request.status && this.onLoad(this.request.response); + }.bind(this), this.request.onprogress = this.onProgress.bind(this), this.request.open("GET", this.url), this.request.responseType = "arraybuffer", this.request.send(); + }, t.prototype.resume = function (t) {}, t.prototype.destroy = function () { + this.request.abort(); + }, t.prototype.onProgress = function (t) { + this.progress = t.loaded / t.total; + }, t.prototype.onLoad = function (t) { + this.established = !0, this.completed = !0, this.progress = 1, this.destination && this.destination.write(t); + }, t; +}(), EPlayer.Source.AjaxProgressive = function () { + "use strict"; + var t = function t(_t3, e) { + this.url = _t3, this.destination = null, this.request = null, this.completed = !1, this.established = !1, this.progress = 0, this.fileSize = 0, this.loadedSize = 0, this.chunkSize = e.chunkSize || 1048576, this.isLoading = !1, this.loadStartTime = 0, this.throttled = !1 !== e.throttled, this.aborted = !1; + };return t.prototype.connect = function (t) { + this.destination = t; + }, t.prototype.start = function () { + this.request = new XMLHttpRequest(), this.request.onreadystatechange = function () { + this.request.readyState === this.request.DONE && (this.fileSize = parseInt(this.request.getResponseHeader("Content-Length")), this.loadNextChunk()); + }.bind(this), this.request.onprogress = this.onProgress.bind(this), this.request.open("HEAD", this.url), this.request.send(); + }, t.prototype.resume = function (t) { + if (!this.isLoading && this.throttled) { + 8 * this.loadTime + 2 > t && this.loadNextChunk(); + } + }, t.prototype.destroy = function () { + this.request.abort(), this.aborted = !0; + }, t.prototype.loadNextChunk = function () { + var t = this.loadedSize, + e = Math.min(this.loadedSize + this.chunkSize - 1, this.fileSize - 1);if (t >= this.fileSize || this.aborted) return void (this.completed = !0);this.isLoading = !0, this.loadStartTime = EPlayer.Now(), this.request = new XMLHttpRequest(), this.request.onreadystatechange = function () { + this.request.readyState === this.request.DONE && this.request.status >= 200 && this.request.status < 300 ? this.onChunkLoad(this.request.response) : this.request.readyState === this.request.DONE && this.loadFails++ < 3 && this.loadNextChunk(); + }.bind(this), 0 === t && (this.request.onprogress = this.onProgress.bind(this)), this.request.open("GET", this.url + "?" + t + "-" + e), this.request.setRequestHeader("Range", "bytes=" + t + "-" + e), this.request.responseType = "arraybuffer", this.request.send(); + }, t.prototype.onProgress = function (t) { + this.progress = t.loaded / t.total; + }, t.prototype.onChunkLoad = function (t) { + this.established = !0, this.progress = 1, this.loadedSize += t.byteLength, this.loadFails = 0, this.isLoading = !1, this.destination && this.destination.write(t), this.loadTime = EPlayer.Now() - this.loadStartTime, this.throttled || this.loadNextChunk(); + }, t; +}(), EPlayer.Source.WebSocket = function () { + "use strict"; + var t = function t(_t4, e) { + this.url = _t4, this.options = e, this.socket = null, this.callbacks = { connect: [], data: [] }, this.destination = null, this.reconnectInterval = void 0 !== e.reconnectInterval ? e.reconnectInterval : 5, this.shouldAttemptReconnect = !!this.reconnectInterval, this.completed = !1, this.established = !1, this.progress = 0, this.reconnectTimeoutId = 0; + };return t.prototype.connect = function (t) { + this.destination = t; + }, t.prototype.destroy = function () { + clearTimeout(this.reconnectTimeoutId), this.shouldAttemptReconnect = !1, this.socket.close(); + }, t.prototype.start = function () { + this.shouldAttemptReconnect = !!this.reconnectInterval, this.progress = 0, this.established = !1, this.socket = new WebSocket(this.url, this.options.protocols || null), this.socket.binaryType = "arraybuffer", this.socket.onmessage = this.onMessage.bind(this), this.socket.onopen = this.onOpen.bind(this), this.socket.onerror = this.onClose.bind(this), this.socket.onclose = this.onClose.bind(this); + }, t.prototype.resume = function (t) {}, t.prototype.onOpen = function () { + this.progress = 1, this.established = !0; + }, t.prototype.onClose = function () { + this.shouldAttemptReconnect && (clearTimeout(this.reconnectTimeoutId), this.reconnectTimeoutId = setTimeout(function () { + this.start(); + }.bind(this), 1e3 * this.reconnectInterval)); + }, t.prototype.onMessage = function (t) { + this.destination && this.destination.write(t.data); + }, t; +}(), EPlayer.Demuxer.TS = function () { + "use strict"; + var t = function t(_t5) { + this.bits = null, this.leftoverBytes = null, this.guessVideoFrameEnd = !0, this.pidsToStreamIds = {}, this.pesPacketInfo = {}, this.startTime = 0, this.currentTime = 0; + };return t.prototype.connect = function (t, e) { + this.pesPacketInfo[t] = { destination: e, currentLength: 0, totalLength: 0, pts: 0, buffers: [] }; + }, t.prototype.write = function (t) { + if (this.leftoverBytes) { + var e = t.byteLength + this.leftoverBytes.byteLength;this.bits = new EPlayer.BitBuffer(e), this.bits.write([this.leftoverBytes, t]); + } else this.bits = new EPlayer.BitBuffer(t);for (; this.bits.has(1504) && this.parsePacket();) {}var i = this.bits.byteLength - (this.bits.index >> 3);this.leftoverBytes = i > 0 ? this.bits.bytes.subarray(this.bits.index >> 3) : null; + }, t.prototype.parsePacket = function () { + if (71 !== this.bits.read(8) && !this.resync()) return !1;var t = 187 + (this.bits.index >> 3), + e = (this.bits.read(1), this.bits.read(1)), + i = (this.bits.read(1), this.bits.read(13)), + s = (this.bits.read(2), this.bits.read(2)), + r = (this.bits.read(4), this.pidsToStreamIds[i]);if (e && r) { + var o = this.pesPacketInfo[r];o && o.currentLength && this.packetComplete(o); + }if (1 & s) { + if (2 & s) { + var n = this.bits.read(8);this.bits.skip(n << 3); + }if (e && this.bits.nextBytesAreStartCode()) { + this.bits.skip(24), r = this.bits.read(8), this.pidsToStreamIds[i] = r;var a = this.bits.read(16);this.bits.skip(8);var h = this.bits.read(2);this.bits.skip(6);var d = this.bits.read(8), + c = this.bits.index + (d << 3), + o = this.pesPacketInfo[r];if (o) { + var u = 0;if (2 & h) { + this.bits.skip(4);var p = this.bits.read(3);this.bits.skip(1);var l = this.bits.read(15);this.bits.skip(1);var f = this.bits.read(15);this.bits.skip(1), u = (1073741824 * p + 32768 * l + f) / 9e4, this.currentTime = u, -1 === this.startTime && (this.startTime = u); + }var m = a ? a - d - 3 : 0;this.packetStart(o, u, m); + }this.bits.index = c; + }if (r) { + var o = this.pesPacketInfo[r];if (o) { + var b = this.bits.index >> 3, + T = this.packetAddData(o, b, t), + y = !e && 2 & s;(T || this.guessVideoFrameEnd && y) && this.packetComplete(o); + } + } + }return this.bits.index = t << 3, !0; + }, t.prototype.resync = function () { + if (!this.bits.has(9024)) return !1;for (var t = this.bits.index >> 3, e = 0; e < 187; e++) { + if (71 === this.bits.bytes[t + e]) { + for (var i = !0, s = 1; s < 5; s++) { + if (71 !== this.bits.bytes[t + e + 188 * s]) { + i = !1;break; + } + }if (i) return this.bits.index = t + e + 1 << 3, !0; + } + }return console.warn("EPlayer: Possible garbage data. Skipping."), this.bits.skip(1496), !1; + }, t.prototype.packetStart = function (t, e, i) { + t.totalLength = i, t.currentLength = 0, t.pts = e; + }, t.prototype.packetAddData = function (t, e, i) { + return t.buffers.push(this.bits.bytes.subarray(e, i)), t.currentLength += i - e, 0 !== t.totalLength && t.currentLength >= t.totalLength; + }, t.prototype.packetComplete = function (t) { + t.destination.write(t.pts, t.buffers), t.totalLength = 0, t.currentLength = 0, t.buffers = []; + }, t.STREAM = { PACK_HEADER: 186, SYSTEM_HEADER: 187, PROGRAM_MAP: 188, PRIVATE_1: 189, PADDING: 190, PRIVATE_2: 191, AUDIO_1: 192, VIDEO_1: 224, DIRECTORY: 255 }, t; +}(), EPlayer.Decoder.Base = function () { + "use strict"; + var t = function t(_t6) { + this.destination = null, this.canPlay = !1, this.collectTimestamps = !_t6.streaming, this.timestamps = [], this.timestampIndex = 0, this.startTime = 0, this.decodedTime = 0, Object.defineProperty(this, "currentTime", { get: this.getCurrentTime }); + };return t.prototype.connect = function (t) { + this.destination = t; + }, t.prototype.write = function (t, e) { + this.collectTimestamps && (0 === this.timestamps.length && (this.startTime = t, this.decodedTime = t), this.timestamps.push({ index: this.bits.byteLength << 3, time: t })), this.bits.write(e), this.canPlay = !0; + }, t.prototype.seek = function (t) { + if (this.collectTimestamps) { + this.timestampIndex = 0;for (var e = 0; e < this.timestamps.length && !(this.timestamps[e].time > t); e++) { + this.timestampIndex = e; + }var i = this.timestamps[this.timestampIndex];i ? (this.bits.index = i.index, this.decodedTime = i.time) : (this.bits.index = 0, this.decodedTime = this.startTime); + } + }, t.prototype.decode = function () { + this.advanceDecodedTime(0); + }, t.prototype.advanceDecodedTime = function (t) { + if (this.collectTimestamps) { + for (var e = -1, i = this.timestampIndex; i < this.timestamps.length && !(this.timestamps[i].index > this.bits.index); i++) { + e = i; + }if (-1 !== e && e !== this.timestampIndex) return this.timestampIndex = e, void (this.decodedTime = this.timestamps[this.timestampIndex].time); + }this.decodedTime += t; + }, t.prototype.getCurrentTime = function () { + return this.decodedTime; + }, t; +}(), EPlayer.Decoder.MPEG1Video = function () { + "use strict"; + var t = function t(_t7) { + EPlayer.Decoder.Base.call(this, _t7);var e = _t7.videoBufferSize || 524288, + i = _t7.streaming ? EPlayer.BitBuffer.MODE.EVICT : EPlayer.BitBuffer.MODE.EXPAND;this.bits = new EPlayer.BitBuffer(e, i), this.customIntraQuantMatrix = new Uint8Array(64), this.customNonIntraQuantMatrix = new Uint8Array(64), this.blockData = new Int32Array(64), this.currentFrame = 0, this.decodeFirstFrame = !1 !== _t7.decodeFirstFrame; + };return t.prototype = Object.create(EPlayer.Decoder.Base.prototype), t.prototype.constructor = t, t.prototype.write = function (e, i) { + if (EPlayer.Decoder.Base.prototype.write.call(this, e, i), !this.hasSequenceHeader) { + if (-1 === this.bits.findStartCode(t.START.SEQUENCE)) return !1;this.decodeSequenceHeader(), this.decodeFirstFrame && this.decode(); + } + }, t.prototype.decode = function () { + if (!this.hasSequenceHeader) return !1;if (-1 === this.bits.findStartCode(t.START.PICTURE)) { + this.bits.byteLength, this.bits.index;return !1; + }return this.decodePicture(), this.advanceDecodedTime(1 / this.frameRate), !0; + }, t.prototype.readHuffman = function (t) { + var e = 0;do { + e = t[e + this.bits.read(1)]; + } while (e >= 0 && 0 !== t[e]);return t[e + 2]; + }, t.prototype.frameRate = 30, t.prototype.decodeSequenceHeader = function () { + var e = this.bits.read(12), + i = this.bits.read(12);if (this.bits.skip(4), this.frameRate = t.PICTURE_RATE[this.bits.read(4)], this.bits.skip(30), e === this.width && i === this.height || (this.width = e, this.height = i, this.initBuffers(), this.destination && this.destination.resize(e, i)), this.bits.read(1)) { + for (var s = 0; s < 64; s++) { + this.customIntraQuantMatrix[t.ZIG_ZAG[s]] = this.bits.read(8); + }this.intraQuantMatrix = this.customIntraQuantMatrix; + }if (this.bits.read(1)) { + for (var s = 0; s < 64; s++) { + var r = t.ZIG_ZAG[s];this.customNonIntraQuantMatrix[r] = this.bits.read(8); + }this.nonIntraQuantMatrix = this.customNonIntraQuantMatrix; + }this.hasSequenceHeader = !0; + }, t.prototype.initBuffers = function () { + this.intraQuantMatrix = t.DEFAULT_INTRA_QUANT_MATRIX, this.nonIntraQuantMatrix = t.DEFAULT_NON_INTRA_QUANT_MATRIX, this.mbWidth = this.width + 15 >> 4, this.mbHeight = this.height + 15 >> 4, this.mbSize = this.mbWidth * this.mbHeight, this.codedWidth = this.mbWidth << 4, this.codedHeight = this.mbHeight << 4, this.codedSize = this.codedWidth * this.codedHeight, this.halfWidth = this.mbWidth << 3, this.halfHeight = this.mbHeight << 3, this.currentY = new Uint8ClampedArray(this.codedSize), this.currentY32 = new Uint32Array(this.currentY.buffer), this.currentCr = new Uint8ClampedArray(this.codedSize >> 2), this.currentCr32 = new Uint32Array(this.currentCr.buffer), this.currentCb = new Uint8ClampedArray(this.codedSize >> 2), this.currentCb32 = new Uint32Array(this.currentCb.buffer), this.forwardY = new Uint8ClampedArray(this.codedSize), this.forwardY32 = new Uint32Array(this.forwardY.buffer), this.forwardCr = new Uint8ClampedArray(this.codedSize >> 2), this.forwardCr32 = new Uint32Array(this.forwardCr.buffer), this.forwardCb = new Uint8ClampedArray(this.codedSize >> 2), this.forwardCb32 = new Uint32Array(this.forwardCb.buffer); + }, t.prototype.currentY = null, t.prototype.currentCr = null, t.prototype.currentCb = null, t.prototype.pictureType = 0, t.prototype.forwardY = null, t.prototype.forwardCr = null, t.prototype.forwardCb = null, t.prototype.fullPelForward = !1, t.prototype.forwardFCode = 0, t.prototype.forwardRSize = 0, t.prototype.forwardF = 0, t.prototype.decodePicture = function (e) { + if (this.currentFrame++, this.bits.skip(10), this.pictureType = this.bits.read(3), this.bits.skip(16), !(this.pictureType <= 0 || this.pictureType >= t.PICTURE_TYPE.B)) { + if (this.pictureType === t.PICTURE_TYPE.PREDICTIVE) { + if (this.fullPelForward = this.bits.read(1), this.forwardFCode = this.bits.read(3), 0 === this.forwardFCode) return;this.forwardRSize = this.forwardFCode - 1, this.forwardF = 1 << this.forwardRSize; + }var i = 0;do { + i = this.bits.findNextStartCode(); + } while (i === t.START.EXTENSION || i === t.START.USER_DATA);for (; i >= t.START.SLICE_FIRST && i <= t.START.SLICE_LAST;) { + this.decodeSlice(255 & i), i = this.bits.findNextStartCode(); + }if (-1 !== i && this.bits.rewind(32), this.destination && this.destination.render(this.currentY, this.currentCr, this.currentCb), this.pictureType === t.PICTURE_TYPE.INTRA || this.pictureType === t.PICTURE_TYPE.PREDICTIVE) { + var s = this.forwardY, + r = this.forwardY32, + o = this.forwardCr, + n = this.forwardCr32, + a = this.forwardCb, + h = this.forwardCb32;this.forwardY = this.currentY, this.forwardY32 = this.currentY32, this.forwardCr = this.currentCr, this.forwardCr32 = this.currentCr32, this.forwardCb = this.currentCb, this.forwardCb32 = this.currentCb32, this.currentY = s, this.currentY32 = r, this.currentCr = o, this.currentCr32 = n, this.currentCb = a, this.currentCb32 = h; + } + } + }, t.prototype.quantizerScale = 0, t.prototype.sliceBegin = !1, t.prototype.decodeSlice = function (t) { + for (this.sliceBegin = !0, this.macroblockAddress = (t - 1) * this.mbWidth - 1, this.motionFwH = this.motionFwHPrev = 0, this.motionFwV = this.motionFwVPrev = 0, this.dcPredictorY = 128, this.dcPredictorCr = 128, this.dcPredictorCb = 128, this.quantizerScale = this.bits.read(5); this.bits.read(1);) { + this.bits.skip(8); + }do { + this.decodeMacroblock(); + } while (!this.bits.nextBytesAreStartCode()); + }, t.prototype.macroblockAddress = 0, t.prototype.mbRow = 0, t.prototype.mbCol = 0, t.prototype.macroblockType = 0, t.prototype.macroblockIntra = !1, t.prototype.macroblockMotFw = !1, t.prototype.motionFwH = 0, t.prototype.motionFwV = 0, t.prototype.motionFwHPrev = 0, t.prototype.motionFwVPrev = 0, t.prototype.decodeMacroblock = function () { + for (var e = 0, i = this.readHuffman(t.MACROBLOCK_ADDRESS_INCREMENT); 34 === i;) { + i = this.readHuffman(t.MACROBLOCK_ADDRESS_INCREMENT); + }for (; 35 === i;) { + e += 33, i = this.readHuffman(t.MACROBLOCK_ADDRESS_INCREMENT); + }if (e += i, this.sliceBegin) this.sliceBegin = !1, this.macroblockAddress += e;else { + if (this.macroblockAddress + e >= this.mbSize) return;for (e > 1 && (this.dcPredictorY = 128, this.dcPredictorCr = 128, this.dcPredictorCb = 128, this.pictureType === t.PICTURE_TYPE.PREDICTIVE && (this.motionFwH = this.motionFwHPrev = 0, this.motionFwV = this.motionFwVPrev = 0)); e > 1;) { + this.macroblockAddress++, this.mbRow = this.macroblockAddress / this.mbWidth | 0, this.mbCol = this.macroblockAddress % this.mbWidth, this.copyMacroblock(this.motionFwH, this.motionFwV, this.forwardY, this.forwardCr, this.forwardCb), e--; + }this.macroblockAddress++; + }this.mbRow = this.macroblockAddress / this.mbWidth | 0, this.mbCol = this.macroblockAddress % this.mbWidth;var s = t.MACROBLOCK_TYPE[this.pictureType];this.macroblockType = this.readHuffman(s), this.macroblockIntra = 1 & this.macroblockType, this.macroblockMotFw = 8 & this.macroblockType, 0 != (16 & this.macroblockType) && (this.quantizerScale = this.bits.read(5)), this.macroblockIntra ? (this.motionFwH = this.motionFwHPrev = 0, this.motionFwV = this.motionFwVPrev = 0) : (this.dcPredictorY = 128, this.dcPredictorCr = 128, this.dcPredictorCb = 128, this.decodeMotionVectors(), this.copyMacroblock(this.motionFwH, this.motionFwV, this.forwardY, this.forwardCr, this.forwardCb));for (var r = 0 != (2 & this.macroblockType) ? this.readHuffman(t.CODE_BLOCK_PATTERN) : this.macroblockIntra ? 63 : 0, o = 0, n = 32; o < 6; o++) { + 0 != (r & n) && this.decodeBlock(o), n >>= 1; + } + }, t.prototype.decodeMotionVectors = function () { + var e, + i, + s = 0;this.macroblockMotFw ? (e = this.readHuffman(t.MOTION), 0 !== e && 1 !== this.forwardF ? (s = this.bits.read(this.forwardRSize), i = (Math.abs(e) - 1 << this.forwardRSize) + s + 1, e < 0 && (i = -i)) : i = e, this.motionFwHPrev += i, this.motionFwHPrev > (this.forwardF << 4) - 1 ? this.motionFwHPrev -= this.forwardF << 5 : this.motionFwHPrev < -this.forwardF << 4 && (this.motionFwHPrev += this.forwardF << 5), this.motionFwH = this.motionFwHPrev, this.fullPelForward && (this.motionFwH <<= 1), e = this.readHuffman(t.MOTION), 0 !== e && 1 !== this.forwardF ? (s = this.bits.read(this.forwardRSize), i = (Math.abs(e) - 1 << this.forwardRSize) + s + 1, e < 0 && (i = -i)) : i = e, this.motionFwVPrev += i, this.motionFwVPrev > (this.forwardF << 4) - 1 ? this.motionFwVPrev -= this.forwardF << 5 : this.motionFwVPrev < -this.forwardF << 4 && (this.motionFwVPrev += this.forwardF << 5), this.motionFwV = this.motionFwVPrev, this.fullPelForward && (this.motionFwV <<= 1)) : this.pictureType === t.PICTURE_TYPE.PREDICTIVE && (this.motionFwH = this.motionFwHPrev = 0, this.motionFwV = this.motionFwVPrev = 0); + }, t.prototype.copyMacroblock = function (t, e, i, s, r) { + var o, + n, + a, + h, + d, + c, + u, + p, + l, + f = this.currentY32, + m = this.currentCb32, + b = this.currentCr32;o = this.codedWidth, n = o - 16, a = t >> 1, h = e >> 1, d = 1 == (1 & t), c = 1 == (1 & e), u = ((this.mbRow << 4) + h) * o + (this.mbCol << 4) + a, p = this.mbRow * o + this.mbCol << 2, l = p + (o << 2);var T, y, g, v;if (d) { + if (c) for (; p < l;) { + for (y = i[u] + i[u + o], u++, T = 0; T < 4; T++) { + g = i[u] + i[u + o], u++, v = y + g + 2 >> 2 & 255, y = i[u] + i[u + o], u++, v |= y + g + 2 << 6 & 65280, g = i[u] + i[u + o], u++, v |= y + g + 2 << 14 & 16711680, y = i[u] + i[u + o], u++, v |= y + g + 2 << 22 & 4278190080, f[p++] = v; + }p += n >> 2, u += n - 1; + } else for (; p < l;) { + for (y = i[u++], T = 0; T < 4; T++) { + g = i[u++], v = y + g + 1 >> 1 & 255, y = i[u++], v |= y + g + 1 << 7 & 65280, g = i[u++], v |= y + g + 1 << 15 & 16711680, y = i[u++], v |= y + g + 1 << 23 & 4278190080, f[p++] = v; + }p += n >> 2, u += n - 1; + } + } else if (c) for (; p < l;) { + for (T = 0; T < 4; T++) { + v = i[u] + i[u + o] + 1 >> 1 & 255, u++, v |= i[u] + i[u + o] + 1 << 7 & 65280, u++, v |= i[u] + i[u + o] + 1 << 15 & 16711680, u++, v |= i[u] + i[u + o] + 1 << 23 & 4278190080, u++, f[p++] = v; + }p += n >> 2, u += n; + } else for (; p < l;) { + for (T = 0; T < 4; T++) { + v = i[u], u++, v |= i[u] << 8, u++, v |= i[u] << 16, u++, v |= i[u] << 24, u++, f[p++] = v; + }p += n >> 2, u += n; + }o = this.halfWidth, n = o - 8, a = t / 2 >> 1, h = e / 2 >> 1, d = 1 == (t / 2 & 1), c = 1 == (e / 2 & 1), u = ((this.mbRow << 3) + h) * o + (this.mbCol << 3) + a, p = this.mbRow * o + this.mbCol << 1, l = p + (o << 1);var A, w, E, C, S, x;if (d) { + if (c) for (; p < l;) { + for (A = s[u] + s[u + o], C = r[u] + r[u + o], u++, T = 0; T < 2; T++) { + w = s[u] + s[u + o], S = r[u] + r[u + o], u++, E = A + w + 2 >> 2 & 255, x = C + S + 2 >> 2 & 255, A = s[u] + s[u + o], C = r[u] + r[u + o], u++, E |= A + w + 2 << 6 & 65280, x |= C + S + 2 << 6 & 65280, w = s[u] + s[u + o], S = r[u] + r[u + o], u++, E |= A + w + 2 << 14 & 16711680, x |= C + S + 2 << 14 & 16711680, A = s[u] + s[u + o], C = r[u] + r[u + o], u++, E |= A + w + 2 << 22 & 4278190080, x |= C + S + 2 << 22 & 4278190080, b[p] = E, m[p] = x, p++; + }p += n >> 2, u += n - 1; + } else for (; p < l;) { + for (A = s[u], C = r[u], u++, T = 0; T < 2; T++) { + w = s[u], S = r[u++], E = A + w + 1 >> 1 & 255, x = C + S + 1 >> 1 & 255, A = s[u], C = r[u++], E |= A + w + 1 << 7 & 65280, x |= C + S + 1 << 7 & 65280, w = s[u], S = r[u++], E |= A + w + 1 << 15 & 16711680, x |= C + S + 1 << 15 & 16711680, A = s[u], C = r[u++], E |= A + w + 1 << 23 & 4278190080, x |= C + S + 1 << 23 & 4278190080, b[p] = E, m[p] = x, p++; + }p += n >> 2, u += n - 1; + } + } else if (c) for (; p < l;) { + for (T = 0; T < 2; T++) { + E = s[u] + s[u + o] + 1 >> 1 & 255, x = r[u] + r[u + o] + 1 >> 1 & 255, u++, E |= s[u] + s[u + o] + 1 << 7 & 65280, x |= r[u] + r[u + o] + 1 << 7 & 65280, u++, E |= s[u] + s[u + o] + 1 << 15 & 16711680, x |= r[u] + r[u + o] + 1 << 15 & 16711680, u++, E |= s[u] + s[u + o] + 1 << 23 & 4278190080, x |= r[u] + r[u + o] + 1 << 23 & 4278190080, u++, b[p] = E, m[p] = x, p++; + }p += n >> 2, u += n; + } else for (; p < l;) { + for (T = 0; T < 2; T++) { + E = s[u], x = r[u], u++, E |= s[u] << 8, x |= r[u] << 8, u++, E |= s[u] << 16, x |= r[u] << 16, u++, E |= s[u] << 24, x |= r[u] << 24, u++, b[p] = E, m[p] = x, p++; + }p += n >> 2, u += n; + } + }, t.prototype.dcPredictorY = 0, t.prototype.dcPredictorCr = 0, t.prototype.dcPredictorCb = 0, t.prototype.blockData = null, t.prototype.decodeBlock = function (e) { + var i, + s = 0;if (this.macroblockIntra) { + var r, o;if (e < 4 ? (r = this.dcPredictorY, o = this.readHuffman(t.DCT_DC_SIZE_LUMINANCE)) : (r = 4 === e ? this.dcPredictorCr : this.dcPredictorCb, o = this.readHuffman(t.DCT_DC_SIZE_CHROMINANCE)), o > 0) { + var n = this.bits.read(o);this.blockData[0] = 0 != (n & 1 << o - 1) ? r + n : r + (-1 << o | n + 1); + } else this.blockData[0] = r;e < 4 ? this.dcPredictorY = this.blockData[0] : 4 === e ? this.dcPredictorCr = this.blockData[0] : this.dcPredictorCb = this.blockData[0], this.blockData[0] <<= 8, i = this.intraQuantMatrix, s = 1; + } else i = this.nonIntraQuantMatrix;for (var a = 0;;) { + var h = 0, + d = this.readHuffman(t.DCT_COEFF);if (1 === d && s > 0 && 0 === this.bits.read(1)) break;65535 === d ? (h = this.bits.read(6), a = this.bits.read(8), 0 === a ? a = this.bits.read(8) : 128 === a ? a = this.bits.read(8) - 256 : a > 128 && (a -= 256)) : (h = d >> 8, a = 255 & d, this.bits.read(1) && (a = -a)), s += h;var c = t.ZIG_ZAG[s];s++, a <<= 1, this.macroblockIntra || (a += a < 0 ? -1 : 1), a = a * this.quantizerScale * i[c] >> 4, 0 == (1 & a) && (a -= a > 0 ? 1 : -1), a > 2047 ? a = 2047 : a < -2048 && (a = -2048), this.blockData[c] = a * t.PREMULTIPLIER_MATRIX[c]; + }var u, p, l;e < 4 ? (u = this.currentY, l = this.codedWidth - 8, p = this.mbRow * this.codedWidth + this.mbCol << 4, 0 != (1 & e) && (p += 8), 0 != (2 & e) && (p += this.codedWidth << 3)) : (u = 4 === e ? this.currentCb : this.currentCr, l = (this.codedWidth >> 1) - 8, p = (this.mbRow * this.codedWidth << 2) + (this.mbCol << 3)), this.macroblockIntra ? 1 === s ? (t.CopyValueToDestination(this.blockData[0] + 128 >> 8, u, p, l), this.blockData[0] = 0) : (t.IDCT(this.blockData), t.CopyBlockToDestination(this.blockData, u, p, l), EPlayer.Fill(this.blockData, 0)) : 1 === s ? (t.AddValueToDestination(this.blockData[0] + 128 >> 8, u, p, l), this.blockData[0] = 0) : (t.IDCT(this.blockData), t.AddBlockToDestination(this.blockData, u, p, l), EPlayer.Fill(this.blockData, 0)), s = 0; + }, t.CopyBlockToDestination = function (t, e, i, s) { + for (var r = 0; r < 64; r += 8, i += s + 8) { + e[i + 0] = t[r + 0], e[i + 1] = t[r + 1], e[i + 2] = t[r + 2], e[i + 3] = t[r + 3], e[i + 4] = t[r + 4], e[i + 5] = t[r + 5], e[i + 6] = t[r + 6], e[i + 7] = t[r + 7]; + } + }, t.AddBlockToDestination = function (t, e, i, s) { + for (var r = 0; r < 64; r += 8, i += s + 8) { + e[i + 0] += t[r + 0], e[i + 1] += t[r + 1], e[i + 2] += t[r + 2], e[i + 3] += t[r + 3], e[i + 4] += t[r + 4], e[i + 5] += t[r + 5], e[i + 6] += t[r + 6], e[i + 7] += t[r + 7]; + } + }, t.CopyValueToDestination = function (t, e, i, s) { + for (var r = 0; r < 64; r += 8, i += s + 8) { + e[i + 0] = t, e[i + 1] = t, e[i + 2] = t, e[i + 3] = t, e[i + 4] = t, e[i + 5] = t, e[i + 6] = t, e[i + 7] = t; + } + }, t.AddValueToDestination = function (t, e, i, s) { + for (var r = 0; r < 64; r += 8, i += s + 8) { + e[i + 0] += t, e[i + 1] += t, e[i + 2] += t, e[i + 3] += t, e[i + 4] += t, e[i + 5] += t, e[i + 6] += t, e[i + 7] += t; + } + }, t.IDCT = function (t) { + for (var e, i, s, r, o, n, a, h, d, c, u, p, l, f, m, b, T, y, g = 0; g < 8; ++g) { + e = t[32 + g], i = t[16 + g] + t[48 + g], s = t[40 + g] - t[24 + g], n = t[8 + g] + t[56 + g], a = t[24 + g] + t[40 + g], r = t[8 + g] - t[56 + g], o = n + a, h = t[0 + g], l = (473 * r - 196 * s + 128 >> 8) - o, d = l - (362 * (n - a) + 128 >> 8), c = h - e, u = (362 * (t[16 + g] - t[48 + g]) + 128 >> 8) - i, p = h + e, f = c + u, m = p + i, b = c - u, T = p - i, y = -d - (473 * s + 196 * r + 128 >> 8), t[0 + g] = o + m, t[8 + g] = l + f, t[16 + g] = b - d, t[24 + g] = T - y, t[32 + g] = T + y, t[40 + g] = d + b, t[48 + g] = f - l, t[56 + g] = m - o; + }for (var g = 0; g < 64; g += 8) { + e = t[4 + g], i = t[2 + g] + t[6 + g], s = t[5 + g] - t[3 + g], n = t[1 + g] + t[7 + g], a = t[3 + g] + t[5 + g], r = t[1 + g] - t[7 + g], o = n + a, h = t[0 + g], l = (473 * r - 196 * s + 128 >> 8) - o, d = l - (362 * (n - a) + 128 >> 8), c = h - e, u = (362 * (t[2 + g] - t[6 + g]) + 128 >> 8) - i, p = h + e, f = c + u, m = p + i, b = c - u, T = p - i, y = -d - (473 * s + 196 * r + 128 >> 8), t[0 + g] = o + m + 128 >> 8, t[1 + g] = l + f + 128 >> 8, t[2 + g] = b - d + 128 >> 8, t[3 + g] = T - y + 128 >> 8, t[4 + g] = T + y + 128 >> 8, t[5 + g] = d + b + 128 >> 8, t[6 + g] = f - l + 128 >> 8, t[7 + g] = m - o + 128 >> 8; + } + }, t.PICTURE_RATE = [0, 23.976, 24, 25, 29.97, 30, 50, 59.94, 60, 0, 0, 0, 0, 0, 0, 0], t.ZIG_ZAG = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]), t.DEFAULT_INTRA_QUANT_MATRIX = new Uint8Array([8, 16, 19, 22, 26, 27, 29, 34, 16, 16, 22, 24, 27, 29, 34, 37, 19, 22, 26, 27, 29, 34, 34, 38, 22, 22, 26, 27, 29, 34, 37, 40, 22, 26, 27, 29, 32, 35, 40, 48, 26, 27, 29, 32, 35, 40, 48, 58, 26, 27, 29, 34, 38, 46, 56, 69, 27, 29, 35, 38, 46, 56, 69, 83]), t.DEFAULT_NON_INTRA_QUANT_MATRIX = new Uint8Array([16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]), t.PREMULTIPLIER_MATRIX = new Uint8Array([32, 44, 42, 38, 32, 25, 17, 9, 44, 62, 58, 52, 44, 35, 24, 12, 42, 58, 55, 49, 42, 33, 23, 12, 38, 52, 49, 44, 38, 30, 20, 10, 32, 44, 42, 38, 32, 25, 17, 9, 25, 35, 33, 30, 25, 20, 14, 7, 17, 24, 23, 20, 17, 14, 9, 5, 9, 12, 12, 10, 9, 7, 5, 2]), t.MACROBLOCK_ADDRESS_INCREMENT = new Int16Array([3, 6, 0, 9, 12, 0, 0, 0, 1, 15, 18, 0, 21, 24, 0, 27, 30, 0, 33, 36, 0, 0, 0, 3, 0, 0, 2, 39, 42, 0, 45, 48, 0, 0, 0, 5, 0, 0, 4, 51, 54, 0, 57, 60, 0, 0, 0, 7, 0, 0, 6, 63, 66, 0, 69, 72, 0, 75, 78, 0, 81, 84, 0, -1, 87, 0, -1, 90, 0, 93, 96, 0, 99, 102, 0, 105, 108, 0, 111, 114, 0, 0, 0, 9, 0, 0, 8, 117, 120, 0, 123, 126, 0, 129, 132, 0, 135, 138, 0, 0, 0, 15, 0, 0, 14, 0, 0, 13, 0, 0, 12, 0, 0, 11, 0, 0, 10, 141, -1, 0, -1, 144, 0, 147, 150, 0, 153, 156, 0, 159, 162, 0, 165, 168, 0, 171, 174, 0, 177, 180, 0, 183, -1, 0, -1, 186, 0, 189, 192, 0, 195, 198, 0, 201, 204, 0, 207, 210, 0, 213, 216, 0, 219, 222, 0, 0, 0, 21, 0, 0, 20, 0, 0, 19, 0, 0, 18, 0, 0, 17, 0, 0, 16, 0, 0, 35, 0, 0, 34, 0, 0, 33, 0, 0, 32, 0, 0, 31, 0, 0, 30, 0, 0, 29, 0, 0, 28, 0, 0, 27, 0, 0, 26, 0, 0, 25, 0, 0, 24, 0, 0, 23, 0, 0, 22]), t.MACROBLOCK_TYPE_INTRA = new Int8Array([3, 6, 0, -1, 9, 0, 0, 0, 1, 0, 0, 17]), t.MACROBLOCK_TYPE_PREDICTIVE = new Int8Array([3, 6, 0, 9, 12, 0, 0, 0, 10, 15, 18, 0, 0, 0, 2, 21, 24, 0, 0, 0, 8, 27, 30, 0, 33, 36, 0, -1, 39, 0, 0, 0, 18, 0, 0, 26, 0, 0, 1, 0, 0, 17]), t.MACROBLOCK_TYPE_B = new Int8Array([3, 6, 0, 9, 15, 0, 12, 18, 0, 24, 21, 0, 0, 0, 12, 27, 30, 0, 0, 0, 14, 39, 42, 0, 36, 33, 0, 0, 0, 4, 0, 0, 6, 54, 48, 0, 45, 51, 0, 0, 0, 8, 0, 0, 10, -1, 57, 0, 0, 0, 1, 60, 63, 0, 0, 0, 30, 0, 0, 17, 0, 0, 22, 0, 0, 26]), t.MACROBLOCK_TYPE = [null, t.MACROBLOCK_TYPE_INTRA, t.MACROBLOCK_TYPE_PREDICTIVE, t.MACROBLOCK_TYPE_B], t.CODE_BLOCK_PATTERN = new Int16Array([6, 3, 0, 9, 18, 0, 12, 15, 0, 24, 33, 0, 36, 39, 0, 27, 21, 0, 30, 42, 0, 60, 57, 0, 54, 48, 0, 69, 51, 0, 81, 75, 0, 63, 84, 0, 45, 66, 0, 72, 78, 0, 0, 0, 60, 105, 120, 0, 132, 144, 0, 114, 108, 0, 126, 141, 0, 87, 93, 0, 117, 96, 0, 0, 0, 32, 135, 138, 0, 99, 123, 0, 129, 102, 0, 0, 0, 4, 90, 111, 0, 0, 0, 8, 0, 0, 16, 0, 0, 44, 150, 168, 0, 0, 0, 28, 0, 0, 52, 0, 0, 62, 183, 177, 0, 156, 180, 0, 0, 0, 1, 165, 162, 0, 0, 0, 61, 0, 0, 56, 171, 174, 0, 0, 0, 2, 0, 0, 40, 153, 186, 0, 0, 0, 48, 192, 189, 0, 147, 159, 0, 0, 0, 20, 0, 0, 12, 240, 249, 0, 0, 0, 63, 231, 225, 0, 195, 219, 0, 252, 198, 0, 0, 0, 24, 0, 0, 36, 0, 0, 3, 207, 261, 0, 243, 237, 0, 204, 213, 0, 210, 234, 0, 201, 228, 0, 216, 222, 0, 258, 255, 0, 264, 246, 0, -1, 282, 0, 285, 291, 0, 0, 0, 33, 0, 0, 9, 318, 330, 0, 306, 348, 0, 0, 0, 5, 0, 0, 10, 279, 267, 0, 0, 0, 6, 0, 0, 18, 0, 0, 17, 0, 0, 34, 339, 357, 0, 309, 312, 0, 270, 276, 0, 327, 321, 0, 351, 354, 0, 303, 297, 0, 294, 288, 0, 300, 273, 0, 342, 345, 0, 315, 324, 0, 336, 333, 0, 363, 375, 0, 0, 0, 41, 0, 0, 14, 0, 0, 21, 372, 366, 0, 360, 369, 0, 0, 0, 11, 0, 0, 19, 0, 0, 7, 0, 0, 35, 0, 0, 13, 0, 0, 50, 0, 0, 49, 0, 0, 58, 0, 0, 37, 0, 0, 25, 0, 0, 45, 0, 0, 57, 0, 0, 26, 0, 0, 29, 0, 0, 38, 0, 0, 53, 0, 0, 23, 0, 0, 43, 0, 0, 46, 0, 0, 42, 0, 0, 22, 0, 0, 54, 0, 0, 51, 0, 0, 15, 0, 0, 30, 0, 0, 39, 0, 0, 47, 0, 0, 55, 0, 0, 27, 0, 0, 59, 0, 0, 31]), t.MOTION = new Int16Array([3, 6, 0, 12, 9, 0, 0, 0, 0, 18, 15, 0, 24, 21, 0, 0, 0, -1, 0, 0, 1, 27, 30, 0, 36, 33, 0, 0, 0, 2, 0, 0, -2, 42, 45, 0, 48, 39, 0, 60, 54, 0, 0, 0, 3, 0, 0, -3, 51, 57, 0, -1, 69, 0, 81, 75, 0, 78, 63, 0, 72, 66, 0, 96, 84, 0, 87, 93, 0, -1, 99, 0, 108, 105, 0, 0, 0, -4, 90, 102, 0, 0, 0, 4, 0, 0, -7, 0, 0, 5, 111, 123, 0, 0, 0, -5, 0, 0, 7, 114, 120, 0, 126, 117, 0, 0, 0, -6, 0, 0, 6, 153, 162, 0, 150, 147, 0, 135, 138, 0, 156, 141, 0, 129, 159, 0, 132, 144, 0, 0, 0, 10, 0, 0, 9, 0, 0, 8, 0, 0, -8, 171, 198, 0, 0, 0, -9, 180, 192, 0, 168, 183, 0, 165, 186, 0, 174, 189, 0, 0, 0, -10, 177, 195, 0, 0, 0, 12, 0, 0, 16, 0, 0, 13, 0, 0, 14, 0, 0, 11, 0, 0, 15, 0, 0, -16, 0, 0, -12, 0, 0, -14, 0, 0, -15, 0, 0, -11, 0, 0, -13]), t.DCT_DC_SIZE_LUMINANCE = new Int8Array([6, 3, 0, 18, 15, 0, 9, 12, 0, 0, 0, 1, 0, 0, 2, 27, 24, 0, 21, 30, 0, 0, 0, 0, 36, 33, 0, 0, 0, 4, 0, 0, 3, 39, 42, 0, 0, 0, 5, 0, 0, 6, 48, 45, 0, 51, -1, 0, 0, 0, 7, 0, 0, 8]), t.DCT_DC_SIZE_CHROMINANCE = new Int8Array([6, 3, 0, 12, 9, 0, 18, 15, 0, 24, 21, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 30, 27, 0, 0, 0, 3, 36, 33, 0, 0, 0, 4, 42, 39, 0, 0, 0, 5, 48, 45, 0, 0, 0, 6, 51, -1, 0, 0, 0, 7, 0, 0, 8]), t.DCT_COEFF = new Int32Array([3, 6, 0, 12, 9, 0, 0, 0, 1, 21, 24, 0, 18, 15, 0, 39, 27, 0, 33, 30, 0, 42, 36, 0, 0, 0, 257, 60, 66, 0, 54, 63, 0, 48, 57, 0, 0, 0, 513, 51, 45, 0, 0, 0, 2, 0, 0, 3, 81, 75, 0, 87, 93, 0, 72, 78, 0, 96, 90, 0, 0, 0, 1025, 69, 84, 0, 0, 0, 769, 0, 0, 258, 0, 0, 1793, 0, 0, 65535, 0, 0, 1537, 111, 108, 0, 0, 0, 1281, 105, 102, 0, 117, 114, 0, 99, 126, 0, 120, 123, 0, 156, 150, 0, 162, 159, 0, 144, 147, 0, 129, 135, 0, 138, 132, 0, 0, 0, 2049, 0, 0, 4, 0, 0, 514, 0, 0, 2305, 153, 141, 0, 165, 171, 0, 180, 168, 0, 177, 174, 0, 183, 186, 0, 0, 0, 2561, 0, 0, 3329, 0, 0, 6, 0, 0, 259, 0, 0, 5, 0, 0, 770, 0, 0, 2817, 0, 0, 3073, 228, 225, 0, 201, 210, 0, 219, 213, 0, 234, 222, 0, 216, 231, 0, 207, 192, 0, 204, 189, 0, 198, 195, 0, 243, 261, 0, 273, 240, 0, 246, 237, 0, 249, 258, 0, 279, 276, 0, 252, 255, 0, 270, 282, 0, 264, 267, 0, 0, 0, 515, 0, 0, 260, 0, 0, 7, 0, 0, 1026, 0, 0, 1282, 0, 0, 4097, 0, 0, 3841, 0, 0, 3585, 315, 321, 0, 333, 342, 0, 312, 291, 0, 375, 357, 0, 288, 294, 0, -1, 369, 0, 285, 303, 0, 318, 363, 0, 297, 306, 0, 339, 309, 0, 336, 348, 0, 330, 300, 0, 372, 345, 0, 351, 366, 0, 327, 354, 0, 360, 324, 0, 381, 408, 0, 417, 420, 0, 390, 378, 0, 435, 438, 0, 384, 387, 0, 0, 0, 2050, 396, 402, 0, 465, 462, 0, 0, 0, 8, 411, 399, 0, 429, 432, 0, 453, 414, 0, 426, 423, 0, 0, 0, 10, 0, 0, 9, 0, 0, 11, 0, 0, 5377, 0, 0, 1538, 0, 0, 771, 0, 0, 5121, 0, 0, 1794, 0, 0, 4353, 0, 0, 4609, 0, 0, 4865, 444, 456, 0, 0, 0, 1027, 459, 450, 0, 0, 0, 261, 393, 405, 0, 0, 0, 516, 447, 441, 0, 516, 519, 0, 486, 474, 0, 510, 483, 0, 504, 498, 0, 471, 537, 0, 507, 501, 0, 522, 513, 0, 534, 531, 0, 468, 477, 0, 492, 495, 0, 549, 546, 0, 525, 528, 0, 0, 0, 263, 0, 0, 2562, 0, 0, 2306, 0, 0, 5633, 0, 0, 5889, 0, 0, 6401, 0, 0, 6145, 0, 0, 1283, 0, 0, 772, 0, 0, 13, 0, 0, 12, 0, 0, 14, 0, 0, 15, 0, 0, 517, 0, 0, 6657, 0, 0, 262, 540, 543, 0, 480, 489, 0, 588, 597, 0, 0, 0, 27, 609, 555, 0, 606, 603, 0, 0, 0, 19, 0, 0, 22, 591, 621, 0, 0, 0, 18, 573, 576, 0, 564, 570, 0, 0, 0, 20, 552, 582, 0, 0, 0, 21, 558, 579, 0, 0, 0, 23, 612, 594, 0, 0, 0, 25, 0, 0, 24, 600, 615, 0, 0, 0, 31, 0, 0, 30, 0, 0, 28, 0, 0, 29, 0, 0, 26, 0, 0, 17, 0, 0, 16, 567, 618, 0, 561, 585, 0, 654, 633, 0, 0, 0, 37, 645, 648, 0, 0, 0, 36, 630, 636, 0, 0, 0, 34, 639, 627, 0, 663, 666, 0, 657, 624, 0, 651, 642, 0, 669, 660, 0, 0, 0, 35, 0, 0, 267, 0, 0, 40, 0, 0, 268, 0, 0, 266, 0, 0, 32, 0, 0, 264, 0, 0, 265, 0, 0, 38, 0, 0, 269, 0, 0, 270, 0, 0, 33, 0, 0, 39, 0, 0, 7937, 0, 0, 6913, 0, 0, 7681, 0, 0, 4098, 0, 0, 7425, 0, 0, 7169, 0, 0, 271, 0, 0, 274, 0, 0, 273, 0, 0, 272, 0, 0, 1539, 0, 0, 2818, 0, 0, 3586, 0, 0, 3330, 0, 0, 3074, 0, 0, 3842]), t.PICTURE_TYPE = { INTRA: 1, PREDICTIVE: 2, B: 3 }, t.START = { SEQUENCE: 179, SLICE_FIRST: 1, SLICE_LAST: 175, PICTURE: 0, EXTENSION: 181, USER_DATA: 178 }, t; +}(), EPlayer.Decoder.MP2Audio = function () { + "use strict"; + var t = function t(e) { + EPlayer.Decoder.Base.call(this, e);var i = e.audioBufferSize || 131072, + s = e.streaming ? EPlayer.BitBuffer.MODE.EVICT : EPlayer.BitBuffer.MODE.EXPAND;this.bits = new EPlayer.BitBuffer(i, s), this.left = new Float32Array(1152), this.right = new Float32Array(1152), this.sampleRate = 44100, this.D = new Float32Array(1024), this.D.set(t.SYNTHESIS_WINDOW, 0), this.D.set(t.SYNTHESIS_WINDOW, 512), this.V = new Float32Array(1024), this.U = new Int32Array(32), this.VPos = 0, this.allocation = [new Array(32), new Array(32)], this.scaleFactorInfo = [new Uint8Array(32), new Uint8Array(32)], this.scaleFactor = [new Array(32), new Array(32)], this.sample = [new Array(32), new Array(32)];for (var r = 0; r < 2; r++) { + for (var o = 0; o < 32; o++) { + this.scaleFactor[r][o] = [0, 0, 0], this.sample[r][o] = [0, 0, 0]; + } + } + };return t.prototype = Object.create(EPlayer.Decoder.Base.prototype), t.prototype.constructor = t, t.prototype.decode = function () { + var t = this.bits.index >> 3;if (t >= this.bits.byteLength) return !1;var e = this.decodeFrame(this.left, this.right);return this.bits.index = t + e << 3, !!e && (this.destination && this.destination.play(this.sampleRate, this.left, this.right), this.advanceDecodedTime(this.left.length / this.sampleRate), !0); + }, t.prototype.getCurrentTime = function () { + var t = this.destination ? this.destination.enqueuedTime : 0;return this.decodedTime - t; + }, t.prototype.decodeFrame = function (e, i) { + var s = this.bits.read(11), + r = this.bits.read(2), + o = this.bits.read(2), + n = !this.bits.read(1);if (s !== t.FRAME_SYNC || r !== t.VERSION.MPEG_1 || o !== t.LAYER.II) return 0;var a = this.bits.read(4) - 1;if (a > 13) return 0;var h = this.bits.read(2), + d = t.SAMPLE_RATE[h];if (3 === h) return 0;r === t.VERSION.MPEG_2 && (h += 4, a += 14);var c = this.bits.read(1), + u = (this.bits.read(1), this.bits.read(2)), + p = 0;u === t.MODE.JOINT_STEREO ? p = this.bits.read(2) + 1 << 2 : (this.bits.skip(2), p = u === t.MODE.MONO ? 0 : 32), this.bits.skip(4), n && this.bits.skip(16);var l = t.BIT_RATE[a], + d = t.SAMPLE_RATE[h], + f = 144e3 * l / d + c | 0, + m = 0, + b = 0;if (r === t.VERSION.MPEG_2) m = 2, b = 30;else { + var T = u === t.MODE.MONO ? 0 : 1, + y = t.QUANT_LUT_STEP_1[T][a];m = t.QUANT_LUT_STEP_2[y][h], b = 63 & m, m >>= 6; + }p > b && (p = b);for (var g = 0; g < p; g++) { + this.allocation[0][g] = this.readAllocation(g, m), this.allocation[1][g] = this.readAllocation(g, m); + }for (var g = p; g < b; g++) { + this.allocation[0][g] = this.allocation[1][g] = this.readAllocation(g, m); + }for (var v = u === t.MODE.MONO ? 1 : 2, g = 0; g < b; g++) { + for (A = 0; A < v; A++) { + this.allocation[A][g] && (this.scaleFactorInfo[A][g] = this.bits.read(2)); + }u === t.MODE.MONO && (this.scaleFactorInfo[1][g] = this.scaleFactorInfo[0][g]); + }for (var g = 0; g < b; g++) { + for (var A = 0; A < v; A++) { + if (this.allocation[A][g]) { + var w = this.scaleFactor[A][g];switch (this.scaleFactorInfo[A][g]) {case 0: + w[0] = this.bits.read(6), w[1] = this.bits.read(6), w[2] = this.bits.read(6);break;case 1: + w[0] = w[1] = this.bits.read(6), w[2] = this.bits.read(6);break;case 2: + w[0] = w[1] = w[2] = this.bits.read(6);break;case 3: + w[0] = this.bits.read(6), w[1] = w[2] = this.bits.read(6);} + } + }u === t.MODE.MONO && (this.scaleFactor[1][g][0] = this.scaleFactor[0][g][0], this.scaleFactor[1][g][1] = this.scaleFactor[0][g][1], this.scaleFactor[1][g][2] = this.scaleFactor[0][g][2]); + }for (var E = 0, C = 0; C < 3; C++) { + for (var S = 0; S < 4; S++) { + for (var g = 0; g < p; g++) { + this.readSamples(0, g, C), this.readSamples(1, g, C); + }for (var g = p; g < b; g++) { + this.readSamples(0, g, C), this.sample[1][g][0] = this.sample[0][g][0], this.sample[1][g][1] = this.sample[0][g][1], this.sample[1][g][2] = this.sample[0][g][2]; + }for (var g = b; g < 32; g++) { + this.sample[0][g][0] = 0, this.sample[0][g][1] = 0, this.sample[0][g][2] = 0, this.sample[1][g][0] = 0, this.sample[1][g][1] = 0, this.sample[1][g][2] = 0; + }for (var x = 0; x < 3; x++) { + this.VPos = this.VPos - 64 & 1023;for (var A = 0; A < 2; A++) { + t.MatrixTransform(this.sample[A], x, this.V, this.VPos), EPlayer.Fill(this.U, 0);for (var I = 512 - (this.VPos >> 1), P = this.VPos % 128 >> 1; P < 1024;) { + for (var R = 0; R < 32; ++R) { + this.U[R] += this.D[I++] * this.V[P++]; + }P += 96, I += 32; + }for (P = 1120 - P, I -= 480; P < 1024;) { + for (var R = 0; R < 32; ++R) { + this.U[R] += this.D[I++] * this.V[P++]; + }P += 96, I += 32; + }for (var _ = 0 === A ? e : i, M = 0; M < 32; M++) { + _[E + M] = this.U[M] / 2147418112; + } + }E += 32; + } + } + }return this.sampleRate = d, f; + }, t.prototype.readAllocation = function (e, i) { + var s = t.QUANT_LUT_STEP_3[i][e], + r = t.QUANT_LUT_STEP4[15 & s][this.bits.read(s >> 4)];return r ? t.QUANT_TAB[r - 1] : 0; + }, t.prototype.readSamples = function (e, i, s) { + var r = this.allocation[e][i], + o = this.scaleFactor[e][i][s], + n = this.sample[e][i], + a = 0;if (!r) return void (n[0] = n[1] = n[2] = 0);if (63 === o) o = 0;else { + var h = o / 3 | 0;o = t.SCALEFACTOR_BASE[o % 3] + (1 << h >> 1) >> h; + }var d = r.levels;r.group ? (a = this.bits.read(r.bits), n[0] = a % d, a = a / d | 0, n[1] = a % d, n[2] = a / d | 0) : (n[0] = this.bits.read(r.bits), n[1] = this.bits.read(r.bits), n[2] = this.bits.read(r.bits));var c = 65536 / (d + 1) | 0;d = (d + 1 >> 1) - 1, a = (d - n[0]) * c, n[0] = a * (o >> 12) + (a * (4095 & o) + 2048 >> 12) >> 12, a = (d - n[1]) * c, n[1] = a * (o >> 12) + (a * (4095 & o) + 2048 >> 12) >> 12, a = (d - n[2]) * c, n[2] = a * (o >> 12) + (a * (4095 & o) + 2048 >> 12) >> 12; + }, t.MatrixTransform = function (t, e, i, s) { + var r, o, n, a, h, d, c, u, p, l, f, m, b, T, y, g, v, A, w, E, C, S, x, I, P, R, _, M, k, D, N, F, L;r = t[0][e] + t[31][e], o = .500602998235 * (t[0][e] - t[31][e]), n = t[1][e] + t[30][e], a = .505470959898 * (t[1][e] - t[30][e]), h = t[2][e] + t[29][e], d = .515447309923 * (t[2][e] - t[29][e]), c = t[3][e] + t[28][e], u = .53104259109 * (t[3][e] - t[28][e]), p = t[4][e] + t[27][e], l = .553103896034 * (t[4][e] - t[27][e]), f = t[5][e] + t[26][e], m = .582934968206 * (t[5][e] - t[26][e]), b = t[6][e] + t[25][e], T = .622504123036 * (t[6][e] - t[25][e]), y = t[7][e] + t[24][e], g = .674808341455 * (t[7][e] - t[24][e]), v = t[8][e] + t[23][e], A = .744536271002 * (t[8][e] - t[23][e]), w = t[9][e] + t[22][e], E = .839349645416 * (t[9][e] - t[22][e]), C = t[10][e] + t[21][e], S = .972568237862 * (t[10][e] - t[21][e]), x = t[11][e] + t[20][e], I = 1.16943993343 * (t[11][e] - t[20][e]), P = t[12][e] + t[19][e], R = 1.48416461631 * (t[12][e] - t[19][e]), _ = t[13][e] + t[18][e], M = 2.05778100995 * (t[13][e] - t[18][e]), k = t[14][e] + t[17][e], D = 3.40760841847 * (t[14][e] - t[17][e]), N = t[15][e] + t[16][e], F = 10.1900081235 * (t[15][e] - t[16][e]), L = r + N, N = .502419286188 * (r - N), r = n + k, k = .52249861494 * (n - k), n = h + _, _ = .566944034816 * (h - _), h = c + P, P = .64682178336 * (c - P), c = p + x, x = .788154623451 * (p - x), p = f + C, C = 1.06067768599 * (f - C), f = b + w, w = 1.72244709824 * (b - w), b = y + v, v = 5.10114861869 * (y - v), y = L + b, b = .509795579104 * (L - b), L = r + f, r = .601344886935 * (r - f), f = n + p, p = .899976223136 * (n - p), n = h + c, c = 2.56291544774 * (h - c), h = y + n, y = .541196100146 * (y - n), n = L + f, f = 1.30656296488 * (L - f), L = h + n, h = .707106781187 * (h - n), n = y + f, y = .707106781187 * (y - f), n += y, f = b + c, b = .541196100146 * (b - c), c = r + p, p = 1.30656296488 * (r - p), r = f + c, c = .707106781187 * (f - c), f = b + p, b = .707106781187 * (b - p), f += b, r += f, f += c, c += b, p = N + v, N = .509795579104 * (N - v), v = k + w, k = .601344886935 * (k - w), w = _ + C, C = .899976223136 * (_ - C), _ = P + x, x = 2.56291544774 * (P - x), P = p + _, p = .541196100146 * (p - _), _ = v + w, w = 1.30656296488 * (v - w), v = P + _, _ = .707106781187 * (P - _), P = p + w, w = .707106781187 * (p - w), P += w, p = N + x, N = .541196100146 * (N - x), x = k + C, C = 1.30656296488 * (k - C), k = p + x, x = .707106781187 * (p - x), p = N + C, N = .707106781187 * (N - C), p += N, k += p, p += x, x += N, v += k, k += P, P += p, p += _, _ += x, x += w, w += N, C = o + F, o = .502419286188 * (o - F), F = a + D, a = .52249861494 * (a - D), D = d + M, M = .566944034816 * (d - M), d = u + R, u = .64682178336 * (u - R), R = l + I, l = .788154623451 * (l - I), I = m + S, S = 1.06067768599 * (m - S), m = T + E, E = 1.72244709824 * (T - E), T = g + A, g = 5.10114861869 * (g - A), A = C + T, T = .509795579104 * (C - T), C = F + m, F = .601344886935 * (F - m), m = D + I, I = .899976223136 * (D - I), D = d + R, R = 2.56291544774 * (d - R), d = A + D, A = .541196100146 * (A - D), D = C + m, m = 1.30656296488 * (C - m), C = d + D, D = .707106781187 * (d - D), d = A + m, m = .707106781187 * (A - m), d += m, A = T + R, R = .541196100146 * (T - R), T = F + I, I = 1.30656296488 * (F - I), F = A + T, T = .707106781187 * (A - T), A = R + I, I = .707106781187 * (R - I), A += I, F += A, A += T, R = T + I, T = o + g, o = .509795579104 * (o - g), g = a + E, a = .601344886935 * (a - E), E = M + S, S = .899976223136 * (M - S), M = u + l, l = 2.56291544774 * (u - l), u = T + M, T = .541196100146 * (T - M), M = g + E, E = 1.30656296488 * (g - E), g = u + M, M = .707106781187 * (u - M), u = T + E, E = .707106781187 * (T - E), u += E, T = o + l, o = .541196100146 * (o - l), l = a + S, S = 1.30656296488 * (a - S), a = T + l, l = .707106781187 * (T - l), T = o + S, o = .707106781187 * (o - S), T += o, a += T, T += l, l += o, g += a, a += u, u += T, T += M, M += l, l += E, E += o, C += g, g += F, F += a, a += d, d += u, u += A;A += T, T += D, D += M, M += R, R += l, l += m, m += E, E += I, I += o, i[s + 48] = -L, i[s + 49] = i[s + 47] = -C, i[s + 50] = i[s + 46] = -v, i[s + 51] = i[s + 45] = -g, i[s + 52] = i[s + 44] = -r, i[s + 53] = i[s + 43] = -F, i[s + 54] = i[s + 42] = -k, i[s + 55] = i[s + 41] = -a, i[s + 56] = i[s + 40] = -n, i[s + 57] = i[s + 39] = -d, i[s + 58] = i[s + 38] = -P, i[s + 59] = i[s + 37] = -u, i[s + 60] = i[s + 36] = -f, i[s + 61] = i[s + 35] = -A, i[s + 62] = i[s + 34] = -p, i[s + 63] = i[s + 33] = -T, i[s + 32] = -h, i[s + 0] = h, i[s + 31] = -D, i[s + 1] = D, i[s + 30] = -_, i[s + 2] = _, i[s + 29] = -M, i[s + 3] = M, i[s + 28] = -c, i[s + 4] = c, i[s + 27] = -R, i[s + 5] = R, i[s + 26] = -x, i[s + 6] = x, i[s + 25] = -l, i[s + 7] = l, i[s + 24] = -y, i[s + 8] = y, i[s + 23] = -m, i[s + 9] = m, i[s + 22] = -w, i[s + 10] = w, i[s + 21] = -E, i[s + 11] = E, i[s + 20] = -b, i[s + 12] = b, i[s + 19] = -I, i[s + 13] = I, i[s + 18] = -N, i[s + 14] = N, i[s + 17] = -o, i[s + 15] = o, i[s + 16] = 0; + }, t.FRAME_SYNC = 2047, t.VERSION = { MPEG_2_5: 0, MPEG_2: 2, MPEG_1: 3 }, t.LAYER = { III: 1, II: 2, I: 3 }, t.MODE = { STEREO: 0, JOINT_STEREO: 1, DUAL_CHANNEL: 2, MONO: 3 }, t.SAMPLE_RATE = new Uint16Array([44100, 48e3, 32e3, 0, 22050, 24e3, 16e3, 0]), t.BIT_RATE = new Uint16Array([32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160]), t.SCALEFACTOR_BASE = new Uint32Array([33554432, 26632170, 21137968]), t.SYNTHESIS_WINDOW = new Float32Array([0, -.5, -.5, -.5, -.5, -.5, -.5, -1, -1, -1, -1, -1.5, -1.5, -2, -2, -2.5, -2.5, -3, -3.5, -3.5, -4, -4.5, -5, -5.5, -6.5, -7, -8, -8.5, -9.5, -10.5, -12, -13, -14.5, -15.5, -17.5, -19, -20.5, -22.5, -24.5, -26.5, -29, -31.5, -34, -36.5, -39.5, -42.5, -45.5, -48.5, -52, -55.5, -58.5, -62.5, -66, -69.5, -73.5, -77, -80.5, -84.5, -88, -91.5, -95, -98, -101, -104, 106.5, 109, 111, 112.5, 113.5, 114, 114, 113.5, 112, 110.5, 107.5, 104, 100, 94.5, 88.5, 81.5, 73, 63.5, 53, 41.5, 28.5, 14.5, -1, -18, -36, -55.5, -76.5, -98.5, -122, -147, -173.5, -200.5, -229.5, -259.5, -290.5, -322.5, -355.5, -389.5, -424, -459.5, -495.5, -532, -568.5, -605, -641.5, -678, -714, -749, -783.5, -817, -849, -879.5, -908.5, -935, -959.5, -981, -1000.5, -1016, -1028.5, -1037.5, -1042.5, -1043.5, -1040, -1031.5, 1018.5, 1e3, 976, 946.5, 911, 869.5, 822, 767.5, 707, 640, 565.5, 485, 397, 302.5, 201, 92.5, -22.5, -144, -272.5, -407, -547.5, -694, -846, -1003, -1165, -1331.5, -1502, -1675.5, -1852.5, -2031.5, -2212.5, -2394, -2576.5, -2758.5, -2939.5, -3118.5, -3294.5, -3467.5, -3635.5, -3798.5, -3955, -4104.5, -4245.5, -4377.5, -4499, -4609.5, -4708, -4792.5, -4863.5, -4919, -4958, -4979.5, -4983, -4967.5, -4931.5, -4875, -4796, -4694.5, -4569.5, -4420, -4246, -4046, -3820, -3567, 3287, 2979.5, 2644, 2280.5, 1888, 1467.5, 1018.5, 541, 35, -499, -1061, -1650, -2266.5, -2909, -3577, -4270, -4987.5, -5727.5, -6490, -7274, -8077.5, -8899.5, -9739, -10594.5, -11464.5, -12347, -13241, -14144.5, -15056, -15973.5, -16895.5, -17820, -18744.5, -19668, -20588, -21503, -22410.5, -23308.5, -24195, -25068.5, -25926.5, -26767, -27589, -28389, -29166.5, -29919, -30644.5, -31342, -32009.5, -32645, -33247, -33814.5, -34346, -34839.5, -35295, -35710, -36084.5, -36417.5, -36707.5, -36954, -37156.5, -37315, -37428, -37496, 37519, 37496, 37428, 37315, 37156.5, 36954, 36707.5, 36417.5, 36084.5, 35710, 35295, 34839.5, 34346, 33814.5, 33247, 32645, 32009.5, 31342, 30644.5, 29919, 29166.5, 28389, 27589, 26767, 25926.5, 25068.5, 24195, 23308.5, 22410.5, 21503, 20588, 19668, 18744.5, 17820, 16895.5, 15973.5, 15056, 14144.5, 13241, 12347, 11464.5, 10594.5, 9739, 8899.5, 8077.5, 7274, 6490, 5727.5, 4987.5, 4270, 3577, 2909, 2266.5, 1650, 1061, 499, -35, -541, -1018.5, -1467.5, -1888, -2280.5, -2644, -2979.5, 3287, 3567, 3820, 4046, 4246, 4420, 4569.5, 4694.5, 4796, 4875, 4931.5, 4967.5, 4983, 4979.5, 4958, 4919, 4863.5, 4792.5, 4708, 4609.5, 4499, 4377.5, 4245.5, 4104.5, 3955, 3798.5, 3635.5, 3467.5, 3294.5, 3118.5, 2939.5, 2758.5, 2576.5, 2394, 2212.5, 2031.5, 1852.5, 1675.5, 1502, 1331.5, 1165, 1003, 846, 694, 547.5, 407, 272.5, 144, 22.5, -92.5, -201, -302.5, -397, -485, -565.5, -640, -707, -767.5, -822, -869.5, -911, -946.5, -976, -1e3, 1018.5, 1031.5, 1040, 1043.5, 1042.5, 1037.5, 1028.5, 1016, 1000.5, 981, 959.5, 935, 908.5, 879.5, 849, 817, 783.5, 749, 714, 678, 641.5, 605, 568.5, 532, 495.5, 459.5, 424, 389.5, 355.5, 322.5, 290.5, 259.5, 229.5, 200.5, 173.5, 147, 122, 98.5, 76.5, 55.5, 36, 18, 1, -14.5, -28.5, -41.5, -53, -63.5, -73, -81.5, -88.5, -94.5, -100, -104, -107.5, -110.5, -112, -113.5, -114, -114, -113.5, -112.5, -111, -109, 106.5, 104, 101, 98, 95, 91.5, 88, 84.5, 80.5, 77, 73.5, 69.5, 66, 62.5, 58.5, 55.5, 52, 48.5, 45.5, 42.5, 39.5, 36.5, 34, 31.5, 29, 26.5, 24.5, 22.5, 20.5, 19, 17.5, 15.5, 14.5, 13, 12, 10.5, 9.5, 8.5, 8, 7, 6.5, 5.5, 5, 4.5, 4, 3.5, 3.5, 3, 2.5, 2.5, 2, 2, 1.5, 1.5, 1, 1, 1, 1, .5, .5, .5, .5, .5, .5]), t.QUANT_LUT_STEP_1 = [[0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2], [0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2]], t.QUANT_TAB = { A: 91, B: 94, C: 8, D: 12 }, t.QUANT_LUT_STEP_2 = [[t.QUANT_TAB.C, t.QUANT_TAB.C, t.QUANT_TAB.D], [t.QUANT_TAB.A, t.QUANT_TAB.A, t.QUANT_TAB.A], [t.QUANT_TAB.B, t.QUANT_TAB.A, t.QUANT_TAB.B]], t.QUANT_LUT_STEP_3 = [[68, 68, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52], [67, 67, 67, 66, 66, 66, 66, 66, 66, 66, 66, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 32, 32, 32, 32, 32, 32, 32], [69, 69, 69, 69, 52, 52, 52, 52, 52, 52, 52, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36]], t.QUANT_LUT_STEP4 = [[0, 1, 2, 17], [0, 1, 2, 3, 4, 5, 6, 17], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17], [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]], t.QUANT_TAB = [{ levels: 3, group: 1, bits: 5 }, { levels: 5, group: 1, bits: 7 }, { levels: 7, group: 0, bits: 3 }, { levels: 9, group: 1, bits: 10 }, { levels: 15, group: 0, bits: 4 }, { levels: 31, group: 0, bits: 5 }, { levels: 63, group: 0, bits: 6 }, { levels: 127, group: 0, bits: 7 }, { levels: 255, group: 0, bits: 8 }, { levels: 511, group: 0, bits: 9 }, { levels: 1023, group: 0, bits: 10 }, { levels: 2047, group: 0, bits: 11 }, { levels: 4095, group: 0, bits: 12 }, { levels: 8191, group: 0, bits: 13 }, { levels: 16383, group: 0, bits: 14 }, { levels: 32767, group: 0, bits: 15 }, { levels: 65535, group: 0, bits: 16 }], t; +}(), EPlayer.Renderer.WebGL = function () { + "use strict"; + var t = function t(e) { + this.canvas = e.canvas || document.createElement("canvas"), this.width = this.canvas.width, this.height = this.canvas.height, this.enabled = !0;var i = { preserveDrawingBuffer: !!e.preserveDrawingBuffer, alpha: !1, depth: !1, stencil: !1, antialias: !1 };if (this.gl = this.canvas.getContext("webgl", i) || this.canvas.getContext("experimental-webgl", i), !this.gl) throw new Error("Failed to get WebGL Context");var s = this.gl, + r = null;this.vertexBuffer = s.createBuffer();var o = new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]);s.bindBuffer(s.ARRAY_BUFFER, this.vertexBuffer), s.bufferData(s.ARRAY_BUFFER, o, s.STATIC_DRAW), this.program = this.createProgram(t.SHADER.VERTEX_IDENTITY, t.SHADER.FRAGMENT_YCRCB_TO_RGBA), r = s.getAttribLocation(this.program, "vertex"), s.enableVertexAttribArray(r), s.vertexAttribPointer(r, 2, s.FLOAT, !1, 0, 0), this.textureY = this.createTexture(0, "textureY"), this.textureCb = this.createTexture(1, "textureCb"), this.textureCr = this.createTexture(2, "textureCr"), this.loadingProgram = this.createProgram(t.SHADER.VERTEX_IDENTITY, t.SHADER.FRAGMENT_LOADING), r = s.getAttribLocation(this.loadingProgram, "vertex"), s.enableVertexAttribArray(r), s.vertexAttribPointer(r, 2, s.FLOAT, !1, 0, 0), this.shouldCreateUnclampedViews = !this.allowsClampedTextureData(); + };return t.prototype.destroy = function () { + var t = this.gl;t.deleteTexture(this.textureY), t.deleteTexture(this.textureCb), t.deleteTexture(this.textureCr), t.deleteProgram(this.program), t.deleteProgram(this.loadingProgram), t.deleteBuffer(this.vertexBuffer); + }, t.prototype.resize = function (t, e) { + this.width = 0 | t, this.height = 0 | e, this.canvas.width = this.width, this.canvas.height = this.height, this.gl.useProgram(this.program), this.gl.viewport(0, 0, this.width, this.height); + }, t.prototype.createTexture = function (t, e) { + var i = this.gl, + s = i.createTexture();return i.bindTexture(i.TEXTURE_2D, s), i.texParameteri(i.TEXTURE_2D, i.TEXTURE_MAG_FILTER, i.LINEAR), i.texParameteri(i.TEXTURE_2D, i.TEXTURE_MIN_FILTER, i.LINEAR), i.texParameteri(i.TEXTURE_2D, i.TEXTURE_WRAP_S, i.CLAMP_TO_EDGE), i.texParameteri(i.TEXTURE_2D, i.TEXTURE_WRAP_T, i.CLAMP_TO_EDGE), i.uniform1i(i.getUniformLocation(this.program, e), t), s; + }, t.prototype.createProgram = function (t, e) { + var i = this.gl, + s = i.createProgram();return i.attachShader(s, this.compileShader(i.VERTEX_SHADER, t)), i.attachShader(s, this.compileShader(i.FRAGMENT_SHADER, e)), i.linkProgram(s), i.useProgram(s), s; + }, t.prototype.compileShader = function (t, e) { + var i = this.gl, + s = i.createShader(t);if (i.shaderSource(s, e), i.compileShader(s), !i.getShaderParameter(s, i.COMPILE_STATUS)) throw new Error(i.getShaderInfoLog(s));return s; + }, t.prototype.allowsClampedTextureData = function () { + var t = this.gl, + e = t.createTexture();return t.bindTexture(t.TEXTURE_2D, e), t.texImage2D(t.TEXTURE_2D, 0, t.LUMINANCE, 1, 1, 0, t.LUMINANCE, t.UNSIGNED_BYTE, new Uint8ClampedArray([0])), 0 === t.getError(); + }, t.prototype.renderProgress = function (t) { + var e = this.gl;e.useProgram(this.loadingProgram);var i = e.getUniformLocation(this.loadingProgram, "progress");e.uniform1f(i, t), e.drawArrays(e.TRIANGLE_STRIP, 0, 4); + }, t.prototype.render = function (t, e, i) { + if (this.enabled) { + var s = this.gl, + r = this.width + 15 >> 4 << 4, + o = this.height, + n = r >> 1, + a = o >> 1;this.shouldCreateUnclampedViews && (t = new Uint8Array(t.buffer), e = new Uint8Array(e.buffer), i = new Uint8Array(i.buffer)), s.useProgram(this.program), this.updateTexture(s.TEXTURE0, this.textureY, r, o, t), this.updateTexture(s.TEXTURE1, this.textureCb, n, a, e), this.updateTexture(s.TEXTURE2, this.textureCr, n, a, i), s.drawArrays(s.TRIANGLE_STRIP, 0, 4); + } + }, t.prototype.updateTexture = function (t, e, i, s, r) { + var o = this.gl;o.activeTexture(t), o.bindTexture(o.TEXTURE_2D, e), o.texImage2D(o.TEXTURE_2D, 0, o.LUMINANCE, i, s, 0, o.LUMINANCE, o.UNSIGNED_BYTE, r); + }, t.IsSupported = function () { + try { + if (!window.WebGLRenderingContext) return !1;var t = document.createElement("canvas");return !(!t.getContext("webgl") && !t.getContext("experimental-webgl")); + } catch (t) { + return !1; + } + }, t.SHADER = { FRAGMENT_YCRCB_TO_RGBA: ["precision mediump float;", "uniform sampler2D textureY;", "uniform sampler2D textureCb;", "uniform sampler2D textureCr;", "varying vec2 texCoord;", "mat4 rec601 = mat4(", "1.16438, 0.00000, 1.59603, -0.87079,", "1.16438, -0.39176, -0.81297, 0.52959,", "1.16438, 2.01723, 0.00000, -1.08139,", "0, 0, 0, 1", ");", "void main() {", "float y = texture2D(textureY, texCoord).r;", "float cb = texture2D(textureCb, texCoord).r;", "float cr = texture2D(textureCr, texCoord).r;", "gl_FragColor = vec4(y, cr, cb, 1.0) * rec601;", "}"].join("\n"), FRAGMENT_LOADING: ["precision mediump float;", "uniform float progress;", "varying vec2 texCoord;", "void main() {", "float c = ceil(progress-(1.0-texCoord.y));", "gl_FragColor = vec4(c,c,c,1);", "}"].join("\n"), VERTEX_IDENTITY: ["attribute vec2 vertex;", "varying vec2 texCoord;", "void main() {", "texCoord = vertex;", "gl_Position = vec4((vertex * 2.0 - 1.0) * vec2(1, -1), 0.0, 1.0);", "}"].join("\n") }, t; +}(), EPlayer.Renderer.Canvas2D = function () { + "use strict"; + var t = function t(_t8) { + this.canvas = _t8.canvas || document.createElement("canvas"), this.width = this.canvas.width, this.height = this.canvas.height, this.enabled = !0, this.context = this.canvas.getContext("2d"); + };return t.prototype.destroy = function () {}, t.prototype.resize = function (t, e) { + this.width = 0 | t, this.height = 0 | e, this.canvas.width = this.width, this.canvas.height = this.height, this.imageData = this.context.getImageData(0, 0, this.width, this.height), EPlayer.Fill(this.imageData.data, 255); + }, t.prototype.renderProgress = function (t) { + var e = this.canvas.width, + i = this.canvas.height, + s = this.context;s.fillStyle = "#222", s.fillRect(0, 0, e, i), s.fillStyle = "#fff", s.fillRect(0, i - i * t, e, i * t); + }, t.prototype.render = function (t, e, i) { + this.YCbCrToRGBA(t, e, i, this.imageData.data), this.context.putImageData(this.imageData, 0, 0); + }, t.prototype.YCbCrToRGBA = function (t, e, i, s) { + if (this.enabled) for (var r, o, n, a, h, d = this.width + 15 >> 4 << 4, c = d >> 1, u = 0, p = d, l = d + (d - this.width), f = 0, m = c - (this.width >> 1), b = 0, T = 4 * this.width, y = 4 * this.width, g = this.width >> 1, v = this.height >> 1, A = 0; A < v; A++) { + for (var w = 0; w < g; w++) { + r = e[f], o = i[f], f++, n = r + (103 * r >> 8) - 179, a = (88 * o >> 8) - 44 + (183 * r >> 8) - 91, h = o + (198 * o >> 8) - 227;var E = t[u++], + C = t[u++];s[b] = E + n, s[b + 1] = E - a, s[b + 2] = E + h, s[b + 4] = C + n, s[b + 5] = C - a, s[b + 6] = C + h, b += 8;var S = t[p++], + x = t[p++];s[T] = S + n, s[T + 1] = S - a, s[T + 2] = S + h, s[T + 4] = x + n, s[T + 5] = x - a, s[T + 6] = x + h, T += 8; + }u += l, p += l, b += y, T += y, f += m; + } + }, t; +}(), EPlayer.AudioOutput.WebAudio = function () { + "use strict"; + var t = function t(e) { + this.context = t.CachedContext = t.CachedContext || new (window.AudioContext || window.webkitAudioContext)(), this.gain = this.context.createGain(), this.destination = this.gain, this.gain.connect(this.context.destination), this.context._connections = (this.context._connections || 0) + 1, this.startTime = 0, this.buffer = null, this.wallclockStartTime = 0, this.volume = 1, this.enabled = !0, this.unlocked = !t.NeedsUnlocking(), Object.defineProperty(this, "enqueuedTime", { get: this.getEnqueuedTime }); + };return t.prototype.destroy = function () { + this.gain.disconnect(), 0 === --this.context._connections && (this.context.close(), t.CachedContext = null); + }, t.prototype.play = function (t, e, i) { + if (this.enabled) { + if (!this.unlocked) { + var s = EPlayer.Now();return this.wallclockStartTime < s && (this.wallclockStartTime = s), void (this.wallclockStartTime += e.length / t); + }this.gain.gain.value = this.volume;var r = this.context.createBuffer(2, e.length, t);r.getChannelData(0).set(e), r.getChannelData(1).set(i);var o = this.context.createBufferSource();o.buffer = r, o.connect(this.destination);var n = this.context.currentTime, + a = r.duration;this.startTime < n && (this.startTime = n, this.wallclockStartTime = EPlayer.Now()), o.start(this.startTime), this.startTime += a, this.wallclockStartTime += a; + } + }, t.prototype.stop = function () { + this.gain.gain.value = 0; + }, t.prototype.getEnqueuedTime = function () { + return Math.max(this.wallclockStartTime - EPlayer.Now(), 0); + }, t.prototype.resetEnqueuedTime = function () { + this.startTime = this.context.currentTime, this.wallclockStartTime = EPlayer.Now(); + }, t.prototype.unlock = function (t) { + if (this.unlocked) return void (t && t());this.unlockCallback = t;var e = this.context.createBuffer(1, 1, 22050), + i = this.context.createBufferSource();i.buffer = e, i.connect(this.destination), i.start(0), setTimeout(this.checkIfUnlocked.bind(this, i, 0), 0); + }, t.prototype.checkIfUnlocked = function (t, e) { + t.playbackState === t.PLAYING_STATE || t.playbackState === t.FINISHED_STATE ? (this.unlocked = !0, this.unlockCallback && (this.unlockCallback(), this.unlockCallback = null)) : e < 10 && setTimeout(this.checkIfUnlocked.bind(this, t, e + 1), 100); + }, t.NeedsUnlocking = function () { + return (/iPhone|iPad|iPod/i.test(navigator.userAgent) + ); + }, t.IsSupported = function () { + return window.AudioContext || window.webkitAudioContext; + }, t.CachedContext = null, t; +}(); + +/*** EXPORTS FROM exports-loader ***/ +module.exports = EPlayer; + +/***/ }), + +/***/ "rfI5": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__("maJs"); +var assert = __webpack_require__("tSXQ"); + +function Hmac(hash, key, enc) { + if (!(this instanceof Hmac)) + return new Hmac(hash, key, enc); + this.Hash = hash; + this.blockSize = hash.blockSize / 8; + this.outSize = hash.outSize / 8; + this.inner = null; + this.outer = null; + + this._init(utils.toArray(key, enc)); +} +module.exports = Hmac; + +Hmac.prototype._init = function init(key) { + // Shorten key, if needed + if (key.length > this.blockSize) + key = new this.Hash().update(key).digest(); + assert(key.length <= this.blockSize); + + // Add padding to key + for (var i = key.length; i < this.blockSize; i++) + key.push(0); + + for (i = 0; i < key.length; i++) + key[i] ^= 0x36; + this.inner = new this.Hash().update(key); + + // 0x36 ^ 0x5c = 0x6a + for (i = 0; i < key.length; i++) + key[i] ^= 0x6a; + this.outer = new this.Hash().update(key); +}; + +Hmac.prototype.update = function update(msg, enc) { + this.inner.update(msg, enc); + return this; +}; + +Hmac.prototype.digest = function digest(enc) { + this.outer.update(this.inner.digest()); + return this.outer.digest(enc); +}; + + +/***/ }), + +/***/ "riO0": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.readUInt32BE = function readUInt32BE(bytes, off) { + var res = (bytes[0 + off] << 24) | + (bytes[1 + off] << 16) | + (bytes[2 + off] << 8) | + bytes[3 + off]; + return res >>> 0; +}; + +exports.writeUInt32BE = function writeUInt32BE(bytes, value, off) { + bytes[0 + off] = value >>> 24; + bytes[1 + off] = (value >>> 16) & 0xff; + bytes[2 + off] = (value >>> 8) & 0xff; + bytes[3 + off] = value & 0xff; +}; + +exports.ip = function ip(inL, inR, out, off) { + var outL = 0; + var outR = 0; + + for (var i = 6; i >= 0; i -= 2) { + for (var j = 0; j <= 24; j += 8) { + outL <<= 1; + outL |= (inR >>> (j + i)) & 1; + } + for (var j = 0; j <= 24; j += 8) { + outL <<= 1; + outL |= (inL >>> (j + i)) & 1; + } + } + + for (var i = 6; i >= 0; i -= 2) { + for (var j = 1; j <= 25; j += 8) { + outR <<= 1; + outR |= (inR >>> (j + i)) & 1; + } + for (var j = 1; j <= 25; j += 8) { + outR <<= 1; + outR |= (inL >>> (j + i)) & 1; + } + } + + out[off + 0] = outL >>> 0; + out[off + 1] = outR >>> 0; +}; + +exports.rip = function rip(inL, inR, out, off) { + var outL = 0; + var outR = 0; + + for (var i = 0; i < 4; i++) { + for (var j = 24; j >= 0; j -= 8) { + outL <<= 1; + outL |= (inR >>> (j + i)) & 1; + outL <<= 1; + outL |= (inL >>> (j + i)) & 1; + } + } + for (var i = 4; i < 8; i++) { + for (var j = 24; j >= 0; j -= 8) { + outR <<= 1; + outR |= (inR >>> (j + i)) & 1; + outR <<= 1; + outR |= (inL >>> (j + i)) & 1; + } + } + + out[off + 0] = outL >>> 0; + out[off + 1] = outR >>> 0; +}; + +exports.pc1 = function pc1(inL, inR, out, off) { + var outL = 0; + var outR = 0; + + // 7, 15, 23, 31, 39, 47, 55, 63 + // 6, 14, 22, 30, 39, 47, 55, 63 + // 5, 13, 21, 29, 39, 47, 55, 63 + // 4, 12, 20, 28 + for (var i = 7; i >= 5; i--) { + for (var j = 0; j <= 24; j += 8) { + outL <<= 1; + outL |= (inR >> (j + i)) & 1; + } + for (var j = 0; j <= 24; j += 8) { + outL <<= 1; + outL |= (inL >> (j + i)) & 1; + } + } + for (var j = 0; j <= 24; j += 8) { + outL <<= 1; + outL |= (inR >> (j + i)) & 1; + } + + // 1, 9, 17, 25, 33, 41, 49, 57 + // 2, 10, 18, 26, 34, 42, 50, 58 + // 3, 11, 19, 27, 35, 43, 51, 59 + // 36, 44, 52, 60 + for (var i = 1; i <= 3; i++) { + for (var j = 0; j <= 24; j += 8) { + outR <<= 1; + outR |= (inR >> (j + i)) & 1; + } + for (var j = 0; j <= 24; j += 8) { + outR <<= 1; + outR |= (inL >> (j + i)) & 1; + } + } + for (var j = 0; j <= 24; j += 8) { + outR <<= 1; + outR |= (inL >> (j + i)) & 1; + } + + out[off + 0] = outL >>> 0; + out[off + 1] = outR >>> 0; +}; + +exports.r28shl = function r28shl(num, shift) { + return ((num << shift) & 0xfffffff) | (num >>> (28 - shift)); +}; + +var pc2table = [ + // inL => outL + 14, 11, 17, 4, 27, 23, 25, 0, + 13, 22, 7, 18, 5, 9, 16, 24, + 2, 20, 12, 21, 1, 8, 15, 26, + + // inR => outR + 15, 4, 25, 19, 9, 1, 26, 16, + 5, 11, 23, 8, 12, 7, 17, 0, + 22, 3, 10, 14, 6, 20, 27, 24 +]; + +exports.pc2 = function pc2(inL, inR, out, off) { + var outL = 0; + var outR = 0; + + var len = pc2table.length >>> 1; + for (var i = 0; i < len; i++) { + outL <<= 1; + outL |= (inL >>> pc2table[i]) & 0x1; + } + for (var i = len; i < pc2table.length; i++) { + outR <<= 1; + outR |= (inR >>> pc2table[i]) & 0x1; + } + + out[off + 0] = outL >>> 0; + out[off + 1] = outR >>> 0; +}; + +exports.expand = function expand(r, out, off) { + var outL = 0; + var outR = 0; + + outL = ((r & 1) << 5) | (r >>> 27); + for (var i = 23; i >= 15; i -= 4) { + outL <<= 6; + outL |= (r >>> i) & 0x3f; + } + for (var i = 11; i >= 3; i -= 4) { + outR |= (r >>> i) & 0x3f; + outR <<= 6; + } + outR |= ((r & 0x1f) << 1) | (r >>> 31); + + out[off + 0] = outL >>> 0; + out[off + 1] = outR >>> 0; +}; + +var sTable = [ + 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, + 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, + 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, + 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, + + 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, + 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, + 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, + 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, + + 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, + 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, + 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, + 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, + + 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, + 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, + 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, + 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, + + 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, + 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, + 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, + 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, + + 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, + 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, + 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, + 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, + + 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, + 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, + 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, + 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, + + 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, + 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, + 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, + 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11 +]; + +exports.substitute = function substitute(inL, inR) { + var out = 0; + for (var i = 0; i < 4; i++) { + var b = (inL >>> (18 - i * 6)) & 0x3f; + var sb = sTable[i * 0x40 + b]; + + out <<= 4; + out |= sb; + } + for (var i = 0; i < 4; i++) { + var b = (inR >>> (18 - i * 6)) & 0x3f; + var sb = sTable[4 * 0x40 + i * 0x40 + b]; + + out <<= 4; + out |= sb; + } + return out >>> 0; +}; + +var permuteTable = [ + 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, + 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7 +]; + +exports.permute = function permute(num) { + var out = 0; + for (var i = 0; i < permuteTable.length; i++) { + out <<= 1; + out |= (num >>> permuteTable[i]) & 0x1; + } + return out >>> 0; +}; + +exports.padSplit = function padSplit(num, size, group) { + var str = num.toString(2); + while (str.length < size) + str = '0' + str; + + var out = []; + for (var i = 0; i < size; i += group) + out.push(str.slice(i, i + group)); + return out.join(' '); +}; + + +/***/ }), + +/***/ "rrHa": +/***/ (function(module, exports, __webpack_require__) { + +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS PUB 180-1 + * Version 2.1a Copyright Paul Johnston 2000 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ + +var inherits = __webpack_require__("mwrz") +var Hash = __webpack_require__("QYQw") +var Buffer = __webpack_require__("DLTi").Buffer + +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +] + +var W = new Array(80) + +function Sha1 () { + this.init() + this._w = W + + Hash.call(this, 64, 56) +} + +inherits(Sha1, Hash) + +Sha1.prototype.init = function () { + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 + + return this +} + +function rotl1 (num) { + return (num << 1) | (num >>> 31) +} + +function rotl5 (num) { + return (num << 5) | (num >>> 27) +} + +function rotl30 (num) { + return (num << 30) | (num >>> 2) +} + +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d +} + +Sha1.prototype._update = function (M) { + var W = this._w + + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]) + + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20) + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 + + e = d + d = c + c = rotl30(b) + b = a + a = t + } + + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 +} + +Sha1.prototype._hash = function () { + var H = Buffer.allocUnsafe(20) + + H.writeInt32BE(this._a | 0, 0) + H.writeInt32BE(this._b | 0, 4) + H.writeInt32BE(this._c | 0, 8) + H.writeInt32BE(this._d | 0, 12) + H.writeInt32BE(this._e | 0, 16) + + return H +} + +module.exports = Sha1 + + +/***/ }), + +/***/ "s+YV": +/***/ (function(module, exports, __webpack_require__) { + +var aes = __webpack_require__("fS0F") +var Buffer = __webpack_require__("DLTi").Buffer +var Transform = __webpack_require__("onRW") +var inherits = __webpack_require__("mwrz") +var GHASH = __webpack_require__("/gF+") +var xor = __webpack_require__("EUFM") +var incr32 = __webpack_require__("5zLF") + +function xorTest (a, b) { + var out = 0 + if (a.length !== b.length) out++ + + var len = Math.min(a.length, b.length) + for (var i = 0; i < len; ++i) { + out += (a[i] ^ b[i]) + } + + return out +} + +function calcIv (self, iv, ck) { + if (iv.length === 12) { + self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])]) + return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])]) + } + var ghash = new GHASH(ck) + var len = iv.length + var toPad = len % 16 + ghash.update(iv) + if (toPad) { + toPad = 16 - toPad + ghash.update(Buffer.alloc(toPad, 0)) + } + ghash.update(Buffer.alloc(8, 0)) + var ivBits = len * 8 + var tail = Buffer.alloc(8) + tail.writeUIntBE(ivBits, 0, 8) + ghash.update(tail) + self._finID = ghash.state + var out = Buffer.from(self._finID) + incr32(out) + return out +} +function StreamCipher (mode, key, iv, decrypt) { + Transform.call(this) + + var h = Buffer.alloc(4, 0) + + this._cipher = new aes.AES(key) + var ck = this._cipher.encryptBlock(h) + this._ghash = new GHASH(ck) + iv = calcIv(this, iv, ck) + + this._prev = Buffer.from(iv) + this._cache = Buffer.allocUnsafe(0) + this._secCache = Buffer.allocUnsafe(0) + this._decrypt = decrypt + this._alen = 0 + this._len = 0 + this._mode = mode + + this._authTag = null + this._called = false +} + +inherits(StreamCipher, Transform) + +StreamCipher.prototype._update = function (chunk) { + if (!this._called && this._alen) { + var rump = 16 - (this._alen % 16) + if (rump < 16) { + rump = Buffer.alloc(rump, 0) + this._ghash.update(rump) + } + } + + this._called = true + var out = this._mode.encrypt(this, chunk) + if (this._decrypt) { + this._ghash.update(chunk) + } else { + this._ghash.update(out) + } + this._len += chunk.length + return out +} + +StreamCipher.prototype._final = function () { + if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data') + + var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID)) + if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data') + + this._authTag = tag + this._cipher.scrub() +} + +StreamCipher.prototype.getAuthTag = function getAuthTag () { + if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state') + + return this._authTag +} + +StreamCipher.prototype.setAuthTag = function setAuthTag (tag) { + if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state') + + this._authTag = tag +} + +StreamCipher.prototype.setAAD = function setAAD (buf) { + if (this._called) throw new Error('Attempting to set AAD in unsupported state') + + this._ghash.update(buf) + this._alen += buf.length +} + +module.exports = StreamCipher + + +/***/ }), + +/***/ "sAlL": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : siSwati [ss] +//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + + +var ss = moment.defineLocale('ss', { + months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'), + monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), + weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'), + weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), + weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[Namuhla nga] LT', + nextDay : '[Kusasa nga] LT', + nextWeek : 'dddd [nga] LT', + lastDay : '[Itolo nga] LT', + lastWeek : 'dddd [leliphelile] [nga] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'nga %s', + past : 'wenteka nga %s', + s : 'emizuzwana lomcane', + m : 'umzuzu', + mm : '%d emizuzu', + h : 'lihora', + hh : '%d emahora', + d : 'lilanga', + dd : '%d emalanga', + M : 'inyanga', + MM : '%d tinyanga', + y : 'umnyaka', + yy : '%d iminyaka' + }, + meridiemParse: /ekuseni|emini|entsambama|ebusuku/, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'ekuseni'; + } else if (hours < 15) { + return 'emini'; + } else if (hours < 19) { + return 'entsambama'; + } else { + return 'ebusuku'; + } + }, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'ekuseni') { + return hour; + } else if (meridiem === 'emini') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') { + if (hour === 0) { + return 0; + } + return hour + 12; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}/, + ordinal : '%d', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return ss; + +}))); + + +/***/ }), + +/***/ "sHTV": +/***/ (function(module, exports) { + +module.exports = "data:font/woff;base64,d09GRgABAAAAAASwAAsAAAAABwAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFY9JUk9Y21hcAAAAYAAAABLAAABcOfXt7dnbHlmAAABzAAAAPkAAAEIO5HVdGhlYWQAAALIAAAALwAAADYXkug7aGhlYQAAAvgAAAAeAAAAJAj1BLpobXR4AAADGAAAAAgAAAAICTcAAGxvY2EAAAMgAAAABgAAAAYAhAAAbWF4cAAAAygAAAAgAAAAIAERAGBuYW1lAAADSAAAAUUAAAJtPlT+fXBvc3QAAASQAAAAIAAAADHm7Ml9eJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2BkmcM4gYGVgYOpk+kMAwNDP4RmfM1gxMjBwMDEwMrMgBUEpLmmMDg8W/9sPXPD/waGGOYGhgagMCNIDgArIA3deJxjYGBgZWBgYAZiHSBmYWBgDGFgZAABP6AoI1icmYELLM7CoARWwwISf7b+/38YCeSzgEkGRjaGUcADJmWgPHBYQTADIwDU5wwlAHicHYtBSsNAGIX/N9NYnMVIOtOGplSIgWRXRxFdFJqI0BxAsBKhWSQ7F4J7V84FXHStK5c9gRfwCp7BE6itTtx873+P7yeP6PfJC/gdBXRIUyrokghxmsTRwR5iia6/jyCa4cyfgOsdNyepP8MUxxmiYOBy0Pec5iwnOWeC1B2uSrT/ulVOT5LO68uVkNtdKa6fTcZYZjraZEDGQ/X9qYfAUK+lWOBjIeRahZv35pFzW9e2ZbFkbFn8Ew8XUinZgotSiBL50ebW5EBu2Mqc/3zpMNRspUeiLMVI3zDb1JYxWzd2e49qXlRAVcwrvKE3VmrcI6I/6dgx8wAAAHicY2BkYGAA4pl/1zyO57f5ysDNwgACN9cFySPo/xNZxZnzgVwOBiaQKABRNwruAHicY2BkYGBu+N/AEMNqzgAErOIMjAyogAkATkoCuwAABAAAAAU3AAAAAAAAAIQAAAABAAAAAgBUAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAeJxlj01OwzAQhV/6B6QSqqhgh+QFYgEo/RGrblhUavdddN+mTpsqiSPHrdQDcB6OwAk4AtyAO/BIJ5s2lsffvHljTwDc4Acejt8t95E9XDI7cg0XuBeuU38QbpBfhJto41W4Rf1N2MczpsJtdGF5g9e4YvaEd2EPHXwI13CNT+E69S/hBvlbuIk7/Aq30PHqwj7mXle4jUcv9sdWL5xeqeVBxaHJIpM5v4KZXu+Sha3S6pxrW8QmU4OgX0lTnWlb3VPs10PnIhVZk6oJqzpJjMqt2erQBRvn8lGvF4kehCblWGP+tsYCjnEFhSUOjDFCGGSIyujoO1Vm9K+xQ8Jee1Y9zed0WxTU/3OFAQL0z1xTurLSeTpPgT1fG1J1dCtuy56UNJFezUkSskJe1rZUQuoBNmVXjhF6XNGJPyhnSP8ACVpuyAAAAHicY2BigAAuBuyAiZGJkZmBvSAzuaS0KJWBAQAUyAMZ" + +/***/ }), + +/***/ "sMpF": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Nepalese [ne] +//! author : suvash : https://github.com/suvash + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' +}; +var numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' +}; + +var ne = moment.defineLocale('ne', { + months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), + monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), + monthsParseExact : true, + weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), + weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), + weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'Aको h:mm बजे', + LTS : 'Aको h:mm:ss बजे', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, Aको h:mm बजे', + LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे' + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiemParse: /राति|बिहान|दिउँसो|साँझ/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'राति') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'बिहान') { + return hour; + } else if (meridiem === 'दिउँसो') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'साँझ') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 3) { + return 'राति'; + } else if (hour < 12) { + return 'बिहान'; + } else if (hour < 16) { + return 'दिउँसो'; + } else if (hour < 20) { + return 'साँझ'; + } else { + return 'राति'; + } + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[भोलि] LT', + nextWeek : '[आउँदो] dddd[,] LT', + lastDay : '[हिजो] LT', + lastWeek : '[गएको] dddd[,] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%sमा', + past : '%s अगाडि', + s : 'केही क्षण', + m : 'एक मिनेट', + mm : '%d मिनेट', + h : 'एक घण्टा', + hh : '%d घण्टा', + d : 'एक दिन', + dd : '%d दिन', + M : 'एक महिना', + MM : '%d महिना', + y : 'एक बर्ष', + yy : '%d बर्ष' + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +return ne; + +}))); + + +/***/ }), + +/***/ "scLB": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Talossan [tzl] +//! author : Robin van der Vliet : https://github.com/robin0van0der0v +//! author : Iustì Canun + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +// After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. +// This is currently too difficult (maybe even impossible) to add. +var tzl = moment.defineLocale('tzl', { + months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), + monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), + weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), + weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), + weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM [dallas] YYYY', + LLL : 'D. MMMM [dallas] YYYY HH.mm', + LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm' + }, + meridiemParse: /d\'o|d\'a/i, + isPM : function (input) { + return 'd\'o' === input.toLowerCase(); + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'd\'o' : 'D\'O'; + } else { + return isLower ? 'd\'a' : 'D\'A'; + } + }, + calendar : { + sameDay : '[oxhi à] LT', + nextDay : '[demà à] LT', + nextWeek : 'dddd [à] LT', + lastDay : '[ieiri à] LT', + lastWeek : '[sür el] dddd [lasteu à] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'osprei %s', + past : 'ja%s', + s : processRelativeTime, + m : processRelativeTime, + mm : processRelativeTime, + h : processRelativeTime, + hh : processRelativeTime, + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 's': ['viensas secunds', '\'iensas secunds'], + 'm': ['\'n míut', '\'iens míut'], + 'mm': [number + ' míuts', '' + number + ' míuts'], + 'h': ['\'n þora', '\'iensa þora'], + 'hh': [number + ' þoras', '' + number + ' þoras'], + 'd': ['\'n ziua', '\'iensa ziua'], + 'dd': [number + ' ziuas', '' + number + ' ziuas'], + 'M': ['\'n mes', '\'iens mes'], + 'MM': [number + ' mesen', '' + number + ' mesen'], + 'y': ['\'n ar', '\'iens ar'], + 'yy': [number + ' ars', '' + number + ' ars'] + }; + return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]); +} + +return tzl; + +}))); + + +/***/ }), + +/***/ "sdPl": +/***/ (function(module, exports, __webpack_require__) { + +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ + +var inherits = __webpack_require__("mwrz") +var Hash = __webpack_require__("QYQw") +var Buffer = __webpack_require__("DLTi").Buffer + +var K = [ + 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, + 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, + 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, + 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, + 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, + 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, + 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, + 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, + 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, + 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, + 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, + 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, + 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, + 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, + 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, + 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 +] + +var W = new Array(64) + +function Sha256 () { + this.init() + + this._w = W // new Array(64) + + Hash.call(this, 64, 56) +} + +inherits(Sha256, Hash) + +Sha256.prototype.init = function () { + this._a = 0x6a09e667 + this._b = 0xbb67ae85 + this._c = 0x3c6ef372 + this._d = 0xa54ff53a + this._e = 0x510e527f + this._f = 0x9b05688c + this._g = 0x1f83d9ab + this._h = 0x5be0cd19 + + return this +} + +function ch (x, y, z) { + return z ^ (x & (y ^ z)) +} + +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} + +function sigma0 (x) { + return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) +} + +function sigma1 (x) { + return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) +} + +function gamma0 (x) { + return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) +} + +function gamma1 (x) { + return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) +} + +Sha256.prototype._update = function (M) { + var W = this._w + + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 + var f = this._f | 0 + var g = this._g | 0 + var h = this._h | 0 + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0 + + for (var j = 0; j < 64; ++j) { + var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0 + var T2 = (sigma0(a) + maj(a, b, c)) | 0 + + h = g + g = f + f = e + e = (d + T1) | 0 + d = c + c = b + b = a + a = (T1 + T2) | 0 + } + + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 + this._f = (f + this._f) | 0 + this._g = (g + this._g) | 0 + this._h = (h + this._h) | 0 +} + +Sha256.prototype._hash = function () { + var H = Buffer.allocUnsafe(32) + + H.writeInt32BE(this._a, 0) + H.writeInt32BE(this._b, 4) + H.writeInt32BE(this._c, 8) + H.writeInt32BE(this._d, 12) + H.writeInt32BE(this._e, 16) + H.writeInt32BE(this._f, 20) + H.writeInt32BE(this._g, 24) + H.writeInt32BE(this._h, 28) + + return H +} + +module.exports = Sha256 + + +/***/ }), + +/***/ "smKJ": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Burmese [my] +//! author : Squar team, mysquar.com +//! author : David Rossellat : https://github.com/gholadr +//! author : Tin Aung Lin : https://github.com/thanyawzinmin + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var symbolMap = { + '1': '၁', + '2': '၂', + '3': '၃', + '4': '၄', + '5': '၅', + '6': '၆', + '7': '၇', + '8': '၈', + '9': '၉', + '0': '၀' +}; +var numberMap = { + '၁': '1', + '၂': '2', + '၃': '3', + '၄': '4', + '၅': '5', + '၆': '6', + '၇': '7', + '၈': '8', + '၉': '9', + '၀': '0' +}; + +var my = moment.defineLocale('my', { + months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), + monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), + weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), + weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[ယနေ.] LT [မှာ]', + nextDay: '[မနက်ဖြန်] LT [မှာ]', + nextWeek: 'dddd LT [မှာ]', + lastDay: '[မနေ.က] LT [မှာ]', + lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', + sameElse: 'L' + }, + relativeTime: { + future: 'လာမည့် %s မှာ', + past: 'လွန်ခဲ့သော %s က', + s: 'စက္ကန်.အနည်းငယ်', + m: 'တစ်မိနစ်', + mm: '%d မိနစ်', + h: 'တစ်နာရီ', + hh: '%d နာရီ', + d: 'တစ်ရက်', + dd: '%d ရက်', + M: 'တစ်လ', + MM: '%d လ', + y: 'တစ်နှစ်', + yy: '%d နှစ်' + }, + preparse: function (string) { + return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 1st is the first week of the year. + } +}); + +return my; + +}))); + + +/***/ }), + +/***/ "sx5x": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Cambodian [km] +//! author : Kruy Vanna : https://github.com/kruyvanna + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var km = moment.defineLocale('km', { + months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), + monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), + weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS : 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[ថ្ងៃនេះ ម៉ោង] LT', + nextDay: '[ស្អែក ម៉ោង] LT', + nextWeek: 'dddd [ម៉ោង] LT', + lastDay: '[ម្សិលមិញ ម៉ោង] LT', + lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', + sameElse: 'L' + }, + relativeTime: { + future: '%sទៀត', + past: '%sមុន', + s: 'ប៉ុន្មានវិនាទី', + m: 'មួយនាទី', + mm: '%d នាទី', + h: 'មួយម៉ោង', + hh: '%d ម៉ោង', + d: 'មួយថ្ងៃ', + dd: '%d ថ្ងៃ', + M: 'មួយខែ', + MM: '%d ខែ', + y: 'មួយឆ្នាំ', + yy: '%d ឆ្នាំ' + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return km; + +}))); + + +/***/ }), + +/***/ "t+7X": +/***/ (function(module, exports, __webpack_require__) { + +var md5 = __webpack_require__("yXLo") +var RIPEMD160 = __webpack_require__("DJz8") +var sha = __webpack_require__("96zr") +var Buffer = __webpack_require__("DLTi").Buffer + +var checkParameters = __webpack_require__("GpZv") +var defaultEncoding = __webpack_require__("xJId") +var toBuffer = __webpack_require__("pLtV") + +var ZEROS = Buffer.alloc(128) +var sizes = { + md5: 16, + sha1: 20, + sha224: 28, + sha256: 32, + sha384: 48, + sha512: 64, + rmd160: 20, + ripemd160: 20 +} + +function Hmac (alg, key, saltLen) { + var hash = getDigest(alg) + var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64 + + if (key.length > blocksize) { + key = hash(key) + } else if (key.length < blocksize) { + key = Buffer.concat([key, ZEROS], blocksize) + } + + var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]) + var opad = Buffer.allocUnsafe(blocksize + sizes[alg]) + for (var i = 0; i < blocksize; i++) { + ipad[i] = key[i] ^ 0x36 + opad[i] = key[i] ^ 0x5C + } + + var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4) + ipad.copy(ipad1, 0, 0, blocksize) + this.ipad1 = ipad1 + this.ipad2 = ipad + this.opad = opad + this.alg = alg + this.blocksize = blocksize + this.hash = hash + this.size = sizes[alg] +} + +Hmac.prototype.run = function (data, ipad) { + data.copy(ipad, this.blocksize) + var h = this.hash(ipad) + h.copy(this.opad, this.blocksize) + return this.hash(this.opad) +} + +function getDigest (alg) { + function shaFunc (data) { + return sha(alg).update(data).digest() + } + function rmd160Func (data) { + return new RIPEMD160().update(data).digest() + } + + if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func + if (alg === 'md5') return md5 + return shaFunc +} + +function pbkdf2 (password, salt, iterations, keylen, digest) { + checkParameters(iterations, keylen) + password = toBuffer(password, defaultEncoding, 'Password') + salt = toBuffer(salt, defaultEncoding, 'Salt') + + digest = digest || 'sha1' + + var hmac = new Hmac(digest, password, salt.length) + + var DK = Buffer.allocUnsafe(keylen) + var block1 = Buffer.allocUnsafe(salt.length + 4) + salt.copy(block1, 0, 0, salt.length) + + var destPos = 0 + var hLen = sizes[digest] + var l = Math.ceil(keylen / hLen) + + for (var i = 1; i <= l; i++) { + block1.writeUInt32BE(i, salt.length) + + var T = hmac.run(block1, hmac.ipad1) + var U = T + + for (var j = 1; j < iterations; j++) { + U = hmac.run(U, hmac.ipad2) + for (var k = 0; k < hLen; k++) T[k] ^= U[k] + } + + T.copy(DK, destPos) + destPos += hLen + } + + return DK +} + +module.exports = pbkdf2 + + +/***/ }), + +/***/ "t2AN": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + + + +module.exports = PassThrough; + +var Transform = __webpack_require__("R09Z"); + +/*<replacement>*/ +var util = Object.create(__webpack_require__("rcOv")); +util.inherits = __webpack_require__("mwrz"); +/*</replacement>*/ + +util.inherits(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; + +/***/ }), + +/***/ "t4nw": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Urdu [ur] +//! author : Sawood Alam : https://github.com/ibnesayeed +//! author : Zack : https://github.com/ZackVision + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var months = [ + 'جنوری', + 'فروری', + 'مارچ', + 'اپریل', + 'مئی', + 'جون', + 'جولائی', + 'اگست', + 'ستمبر', + 'اکتوبر', + 'نومبر', + 'دسمبر' +]; +var days = [ + 'اتوار', + 'پیر', + 'منگل', + 'بدھ', + 'جمعرات', + 'جمعہ', + 'ہفتہ' +]; + +var ur = moment.defineLocale('ur', { + months : months, + monthsShort : months, + weekdays : days, + weekdaysShort : days, + weekdaysMin : days, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd، D MMMM YYYY HH:mm' + }, + meridiemParse: /صبح|شام/, + isPM : function (input) { + return 'شام' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'صبح'; + } + return 'شام'; + }, + calendar : { + sameDay : '[آج بوقت] LT', + nextDay : '[کل بوقت] LT', + nextWeek : 'dddd [بوقت] LT', + lastDay : '[گذشتہ روز بوقت] LT', + lastWeek : '[گذشتہ] dddd [بوقت] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s بعد', + past : '%s قبل', + s : 'چند سیکنڈ', + m : 'ایک منٹ', + mm : '%d منٹ', + h : 'ایک گھنٹہ', + hh : '%d گھنٹے', + d : 'ایک دن', + dd : '%d دن', + M : 'ایک ماہ', + MM : '%d ماہ', + y : 'ایک سال', + yy : '%d سال' + }, + preparse: function (string) { + return string.replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/,/g, '،'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return ur; + +}))); + + +/***/ }), + +/***/ "tQa5": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Catalan [ca] +//! author : Juan G. Hurtado : https://github.com/juanghurtado + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var ca = moment.defineLocale('ca', { + months : { + standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), + format: 'de gener_de febrer_de març_d\'abril_de maig_de juny_de juliol_d\'agost_de setembre_d\'octubre_de novembre_de desembre'.split('_'), + isFormat: /D[oD]?(\s)+MMMM/ + }, + monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'), + monthsParseExact : true, + weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), + weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), + weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : '[el] D MMMM [de] YYYY', + ll : 'D MMM YYYY', + LLL : '[el] D MMMM [de] YYYY [a les] H:mm', + lll : 'D MMM YYYY, H:mm', + LLLL : '[el] dddd D MMMM [de] YYYY [a les] H:mm', + llll : 'ddd D MMM YYYY, H:mm' + }, + calendar : { + sameDay : function () { + return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextDay : function () { + return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastDay : function () { + return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'd\'aquí %s', + past : 'fa %s', + s : 'uns segons', + m : 'un minut', + mm : '%d minuts', + h : 'una hora', + hh : '%d hores', + d : 'un dia', + dd : '%d dies', + M : 'un mes', + MM : '%d mesos', + y : 'un any', + yy : '%d anys' + }, + dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, + ordinal : function (number, period) { + var output = (number === 1) ? 'r' : + (number === 2) ? 'n' : + (number === 3) ? 'r' : + (number === 4) ? 't' : 'è'; + if (period === 'w' || period === 'W') { + output = 'a'; + } + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return ca; + +}))); + + +/***/ }), + +/***/ "tSXQ": +/***/ (function(module, exports) { + +module.exports = assert; + +function assert(val, msg) { + if (!val) + throw new Error(msg || 'Assertion failed'); +} + +assert.equal = function assertEqual(l, r, msg) { + if (l != r) + throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r)); +}; + + +/***/ }), + +/***/ "ta5z": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Macedonian [mk] +//! author : Borislav Mickov : https://github.com/B0k0 + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var mk = moment.defineLocale('mk', { + months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), + monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), + weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), + weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'), + weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'D.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Денес во] LT', + nextDay : '[Утре во] LT', + nextWeek : '[Во] dddd [во] LT', + lastDay : '[Вчера во] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[Изминатата] dddd [во] LT'; + case 1: + case 2: + case 4: + case 5: + return '[Изминатиот] dddd [во] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'после %s', + past : 'пред %s', + s : 'неколку секунди', + m : 'минута', + mm : '%d минути', + h : 'час', + hh : '%d часа', + d : 'ден', + dd : '%d дена', + M : 'месец', + MM : '%d месеци', + y : 'година', + yy : '%d години' + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +return mk; + +}))); + + +/***/ }), + +/***/ "tcza": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Tamil [ta] +//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var symbolMap = { + '1': '௧', + '2': '௨', + '3': '௩', + '4': '௪', + '5': '௫', + '6': '௬', + '7': '௭', + '8': '௮', + '9': '௯', + '0': '௦' +}; +var numberMap = { + '௧': '1', + '௨': '2', + '௩': '3', + '௪': '4', + '௫': '5', + '௬': '6', + '௭': '7', + '௮': '8', + '௯': '9', + '௦': '0' +}; + +var ta = moment.defineLocale('ta', { + months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), + monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), + weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), + weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'), + weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, HH:mm', + LLLL : 'dddd, D MMMM YYYY, HH:mm' + }, + calendar : { + sameDay : '[இன்று] LT', + nextDay : '[நாளை] LT', + nextWeek : 'dddd, LT', + lastDay : '[நேற்று] LT', + lastWeek : '[கடந்த வாரம்] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s இல்', + past : '%s முன்', + s : 'ஒரு சில விநாடிகள்', + m : 'ஒரு நிமிடம்', + mm : '%d நிமிடங்கள்', + h : 'ஒரு மணி நேரம்', + hh : '%d மணி நேரம்', + d : 'ஒரு நாள்', + dd : '%d நாட்கள்', + M : 'ஒரு மாதம்', + MM : '%d மாதங்கள்', + y : 'ஒரு வருடம்', + yy : '%d ஆண்டுகள்' + }, + dayOfMonthOrdinalParse: /\d{1,2}வது/, + ordinal : function (number) { + return number + 'வது'; + }, + preparse: function (string) { + return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + // refer http://ta.wikipedia.org/s/1er1 + meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, + meridiem : function (hour, minute, isLower) { + if (hour < 2) { + return ' யாமம்'; + } else if (hour < 6) { + return ' வைகறை'; // வைகறை + } else if (hour < 10) { + return ' காலை'; // காலை + } else if (hour < 14) { + return ' நண்பகல்'; // நண்பகல் + } else if (hour < 18) { + return ' எற்பாடு'; // எற்பாடு + } else if (hour < 22) { + return ' மாலை'; // மாலை + } else { + return ' யாமம்'; + } + }, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'யாமம்') { + return hour < 2 ? hour : hour + 12; + } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { + return hour; + } else if (meridiem === 'நண்பகல்') { + return hour >= 10 ? hour : hour + 12; + } else { + return hour + 12; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +return ta; + +}))); + + +/***/ }), + +/***/ "tg83": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Telugu [te] +//! author : Krishna Chaitanya Thota : https://github.com/kcthota + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var te = moment.defineLocale('te', { + months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'), + monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'), + monthsParseExact : true, + weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'), + weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), + weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'), + longDateFormat : { + LT : 'A h:mm', + LTS : 'A h:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm', + LLLL : 'dddd, D MMMM YYYY, A h:mm' + }, + calendar : { + sameDay : '[నేడు] LT', + nextDay : '[రేపు] LT', + nextWeek : 'dddd, LT', + lastDay : '[నిన్న] LT', + lastWeek : '[గత] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s లో', + past : '%s క్రితం', + s : 'కొన్ని క్షణాలు', + m : 'ఒక నిమిషం', + mm : '%d నిమిషాలు', + h : 'ఒక గంట', + hh : '%d గంటలు', + d : 'ఒక రోజు', + dd : '%d రోజులు', + M : 'ఒక నెల', + MM : '%d నెలలు', + y : 'ఒక సంవత్సరం', + yy : '%d సంవత్సరాలు' + }, + dayOfMonthOrdinalParse : /\d{1,2}వ/, + ordinal : '%dవ', + meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'రాత్రి') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'ఉదయం') { + return hour; + } else if (meridiem === 'మధ్యాహ్నం') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'సాయంత్రం') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'రాత్రి'; + } else if (hour < 10) { + return 'ఉదయం'; + } else if (hour < 17) { + return 'మధ్యాహ్నం'; + } else if (hour < 20) { + return 'సాయంత్రం'; + } else { + return 'రాత్రి'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +return te; + +}))); + + +/***/ }), + +/***/ "u/Wk": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) { + 'use strict'; + + // Utils + function assert (val, msg) { + if (!val) throw new Error(msg || 'Assertion failed'); + } + + // Could use `inherits` module, but don't want to move from single file + // architecture yet. + function inherits (ctor, superCtor) { + ctor.super_ = superCtor; + var TempCtor = function () {}; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + } + + // BN + + function BN (number, base, endian) { + if (BN.isBN(number)) { + return number; + } + + this.negative = 0; + this.words = null; + this.length = 0; + + // Reduction context + this.red = null; + + if (number !== null) { + if (base === 'le' || base === 'be') { + endian = base; + base = 10; + } + + this._init(number || 0, base || 10, endian || 'be'); + } + } + if (typeof module === 'object') { + module.exports = BN; + } else { + exports.BN = BN; + } + + BN.BN = BN; + BN.wordSize = 26; + + var Buffer; + try { + if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') { + Buffer = window.Buffer; + } else { + Buffer = __webpack_require__(5).Buffer; + } + } catch (e) { + } + + BN.isBN = function isBN (num) { + if (num instanceof BN) { + return true; + } + + return num !== null && typeof num === 'object' && + num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); + }; + + BN.max = function max (left, right) { + if (left.cmp(right) > 0) return left; + return right; + }; + + BN.min = function min (left, right) { + if (left.cmp(right) < 0) return left; + return right; + }; + + BN.prototype._init = function init (number, base, endian) { + if (typeof number === 'number') { + return this._initNumber(number, base, endian); + } + + if (typeof number === 'object') { + return this._initArray(number, base, endian); + } + + if (base === 'hex') { + base = 16; + } + assert(base === (base | 0) && base >= 2 && base <= 36); + + number = number.toString().replace(/\s+/g, ''); + var start = 0; + if (number[0] === '-') { + start++; + this.negative = 1; + } + + if (start < number.length) { + if (base === 16) { + this._parseHex(number, start, endian); + } else { + this._parseBase(number, base, start); + if (endian === 'le') { + this._initArray(this.toArray(), base, endian); + } + } + } + }; + + BN.prototype._initNumber = function _initNumber (number, base, endian) { + if (number < 0) { + this.negative = 1; + number = -number; + } + if (number < 0x4000000) { + this.words = [ number & 0x3ffffff ]; + this.length = 1; + } else if (number < 0x10000000000000) { + this.words = [ + number & 0x3ffffff, + (number / 0x4000000) & 0x3ffffff + ]; + this.length = 2; + } else { + assert(number < 0x20000000000000); // 2 ^ 53 (unsafe) + this.words = [ + number & 0x3ffffff, + (number / 0x4000000) & 0x3ffffff, + 1 + ]; + this.length = 3; + } + + if (endian !== 'le') return; + + // Reverse the bytes + this._initArray(this.toArray(), base, endian); + }; + + BN.prototype._initArray = function _initArray (number, base, endian) { + // Perhaps a Uint8Array + assert(typeof number.length === 'number'); + if (number.length <= 0) { + this.words = [ 0 ]; + this.length = 1; + return this; + } + + this.length = Math.ceil(number.length / 3); + this.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + this.words[i] = 0; + } + + var j, w; + var off = 0; + if (endian === 'be') { + for (i = number.length - 1, j = 0; i >= 0; i -= 3) { + w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16); + this.words[j] |= (w << off) & 0x3ffffff; + this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; + off += 24; + if (off >= 26) { + off -= 26; + j++; + } + } + } else if (endian === 'le') { + for (i = 0, j = 0; i < number.length; i += 3) { + w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16); + this.words[j] |= (w << off) & 0x3ffffff; + this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; + off += 24; + if (off >= 26) { + off -= 26; + j++; + } + } + } + return this.strip(); + }; + + function parseHex4Bits (string, index) { + var c = string.charCodeAt(index); + // 'A' - 'F' + if (c >= 65 && c <= 70) { + return c - 55; + // 'a' - 'f' + } else if (c >= 97 && c <= 102) { + return c - 87; + // '0' - '9' + } else { + return (c - 48) & 0xf; + } + } + + function parseHexByte (string, lowerBound, index) { + var r = parseHex4Bits(string, index); + if (index - 1 >= lowerBound) { + r |= parseHex4Bits(string, index - 1) << 4; + } + return r; + } + + BN.prototype._parseHex = function _parseHex (number, start, endian) { + // Create possibly bigger array to ensure that it fits the number + this.length = Math.ceil((number.length - start) / 6); + this.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + this.words[i] = 0; + } + + // 24-bits chunks + var off = 0; + var j = 0; + + var w; + if (endian === 'be') { + for (i = number.length - 1; i >= start; i -= 2) { + w = parseHexByte(number, start, i) << off; + this.words[j] |= w & 0x3ffffff; + if (off >= 18) { + off -= 18; + j += 1; + this.words[j] |= w >>> 26; + } else { + off += 8; + } + } + } else { + var parseLength = number.length - start; + for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) { + w = parseHexByte(number, start, i) << off; + this.words[j] |= w & 0x3ffffff; + if (off >= 18) { + off -= 18; + j += 1; + this.words[j] |= w >>> 26; + } else { + off += 8; + } + } + } + + this.strip(); + }; + + function parseBase (str, start, end, mul) { + var r = 0; + var len = Math.min(str.length, end); + for (var i = start; i < len; i++) { + var c = str.charCodeAt(i) - 48; + + r *= mul; + + // 'a' + if (c >= 49) { + r += c - 49 + 0xa; + + // 'A' + } else if (c >= 17) { + r += c - 17 + 0xa; + + // '0' - '9' + } else { + r += c; + } + } + return r; + } + + BN.prototype._parseBase = function _parseBase (number, base, start) { + // Initialize as zero + this.words = [ 0 ]; + this.length = 1; + + // Find length of limb in base + for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) { + limbLen++; + } + limbLen--; + limbPow = (limbPow / base) | 0; + + var total = number.length - start; + var mod = total % limbLen; + var end = Math.min(total, total - mod) + start; + + var word = 0; + for (var i = start; i < end; i += limbLen) { + word = parseBase(number, i, i + limbLen, base); + + this.imuln(limbPow); + if (this.words[0] + word < 0x4000000) { + this.words[0] += word; + } else { + this._iaddn(word); + } + } + + if (mod !== 0) { + var pow = 1; + word = parseBase(number, i, number.length, base); + + for (i = 0; i < mod; i++) { + pow *= base; + } + + this.imuln(pow); + if (this.words[0] + word < 0x4000000) { + this.words[0] += word; + } else { + this._iaddn(word); + } + } + + this.strip(); + }; + + BN.prototype.copy = function copy (dest) { + dest.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + dest.words[i] = this.words[i]; + } + dest.length = this.length; + dest.negative = this.negative; + dest.red = this.red; + }; + + BN.prototype.clone = function clone () { + var r = new BN(null); + this.copy(r); + return r; + }; + + BN.prototype._expand = function _expand (size) { + while (this.length < size) { + this.words[this.length++] = 0; + } + return this; + }; + + // Remove leading `0` from `this` + BN.prototype.strip = function strip () { + while (this.length > 1 && this.words[this.length - 1] === 0) { + this.length--; + } + return this._normSign(); + }; + + BN.prototype._normSign = function _normSign () { + // -0 = 0 + if (this.length === 1 && this.words[0] === 0) { + this.negative = 0; + } + return this; + }; + + BN.prototype.inspect = function inspect () { + return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>'; + }; + + /* + + var zeros = []; + var groupSizes = []; + var groupBases = []; + + var s = ''; + var i = -1; + while (++i < BN.wordSize) { + zeros[i] = s; + s += '0'; + } + groupSizes[0] = 0; + groupSizes[1] = 0; + groupBases[0] = 0; + groupBases[1] = 0; + var base = 2 - 1; + while (++base < 36 + 1) { + var groupSize = 0; + var groupBase = 1; + while (groupBase < (1 << BN.wordSize) / base) { + groupBase *= base; + groupSize += 1; + } + groupSizes[base] = groupSize; + groupBases[base] = groupBase; + } + + */ + + var zeros = [ + '', + '0', + '00', + '000', + '0000', + '00000', + '000000', + '0000000', + '00000000', + '000000000', + '0000000000', + '00000000000', + '000000000000', + '0000000000000', + '00000000000000', + '000000000000000', + '0000000000000000', + '00000000000000000', + '000000000000000000', + '0000000000000000000', + '00000000000000000000', + '000000000000000000000', + '0000000000000000000000', + '00000000000000000000000', + '000000000000000000000000', + '0000000000000000000000000' + ]; + + var groupSizes = [ + 0, 0, + 25, 16, 12, 11, 10, 9, 8, + 8, 7, 7, 7, 7, 6, 6, + 6, 6, 6, 6, 6, 5, 5, + 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5 + ]; + + var groupBases = [ + 0, 0, + 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, + 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, + 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, + 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, + 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176 + ]; + + BN.prototype.toString = function toString (base, padding) { + base = base || 10; + padding = padding | 0 || 1; + + var out; + if (base === 16 || base === 'hex') { + out = ''; + var off = 0; + var carry = 0; + for (var i = 0; i < this.length; i++) { + var w = this.words[i]; + var word = (((w << off) | carry) & 0xffffff).toString(16); + carry = (w >>> (24 - off)) & 0xffffff; + if (carry !== 0 || i !== this.length - 1) { + out = zeros[6 - word.length] + word + out; + } else { + out = word + out; + } + off += 2; + if (off >= 26) { + off -= 26; + i--; + } + } + if (carry !== 0) { + out = carry.toString(16) + out; + } + while (out.length % padding !== 0) { + out = '0' + out; + } + if (this.negative !== 0) { + out = '-' + out; + } + return out; + } + + if (base === (base | 0) && base >= 2 && base <= 36) { + // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base)); + var groupSize = groupSizes[base]; + // var groupBase = Math.pow(base, groupSize); + var groupBase = groupBases[base]; + out = ''; + var c = this.clone(); + c.negative = 0; + while (!c.isZero()) { + var r = c.modn(groupBase).toString(base); + c = c.idivn(groupBase); + + if (!c.isZero()) { + out = zeros[groupSize - r.length] + r + out; + } else { + out = r + out; + } + } + if (this.isZero()) { + out = '0' + out; + } + while (out.length % padding !== 0) { + out = '0' + out; + } + if (this.negative !== 0) { + out = '-' + out; + } + return out; + } + + assert(false, 'Base should be between 2 and 36'); + }; + + BN.prototype.toNumber = function toNumber () { + var ret = this.words[0]; + if (this.length === 2) { + ret += this.words[1] * 0x4000000; + } else if (this.length === 3 && this.words[2] === 0x01) { + // NOTE: at this stage it is known that the top bit is set + ret += 0x10000000000000 + (this.words[1] * 0x4000000); + } else if (this.length > 2) { + assert(false, 'Number can only safely store up to 53 bits'); + } + return (this.negative !== 0) ? -ret : ret; + }; + + BN.prototype.toJSON = function toJSON () { + return this.toString(16); + }; + + BN.prototype.toBuffer = function toBuffer (endian, length) { + assert(typeof Buffer !== 'undefined'); + return this.toArrayLike(Buffer, endian, length); + }; + + BN.prototype.toArray = function toArray (endian, length) { + return this.toArrayLike(Array, endian, length); + }; + + BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) { + var byteLength = this.byteLength(); + var reqLength = length || Math.max(1, byteLength); + assert(byteLength <= reqLength, 'byte array longer than desired length'); + assert(reqLength > 0, 'Requested array length <= 0'); + + this.strip(); + var littleEndian = endian === 'le'; + var res = new ArrayType(reqLength); + + var b, i; + var q = this.clone(); + if (!littleEndian) { + // Assume big-endian + for (i = 0; i < reqLength - byteLength; i++) { + res[i] = 0; + } + + for (i = 0; !q.isZero(); i++) { + b = q.andln(0xff); + q.iushrn(8); + + res[reqLength - i - 1] = b; + } + } else { + for (i = 0; !q.isZero(); i++) { + b = q.andln(0xff); + q.iushrn(8); + + res[i] = b; + } + + for (; i < reqLength; i++) { + res[i] = 0; + } + } + + return res; + }; + + if (Math.clz32) { + BN.prototype._countBits = function _countBits (w) { + return 32 - Math.clz32(w); + }; + } else { + BN.prototype._countBits = function _countBits (w) { + var t = w; + var r = 0; + if (t >= 0x1000) { + r += 13; + t >>>= 13; + } + if (t >= 0x40) { + r += 7; + t >>>= 7; + } + if (t >= 0x8) { + r += 4; + t >>>= 4; + } + if (t >= 0x02) { + r += 2; + t >>>= 2; + } + return r + t; + }; + } + + BN.prototype._zeroBits = function _zeroBits (w) { + // Short-cut + if (w === 0) return 26; + + var t = w; + var r = 0; + if ((t & 0x1fff) === 0) { + r += 13; + t >>>= 13; + } + if ((t & 0x7f) === 0) { + r += 7; + t >>>= 7; + } + if ((t & 0xf) === 0) { + r += 4; + t >>>= 4; + } + if ((t & 0x3) === 0) { + r += 2; + t >>>= 2; + } + if ((t & 0x1) === 0) { + r++; + } + return r; + }; + + // Return number of used bits in a BN + BN.prototype.bitLength = function bitLength () { + var w = this.words[this.length - 1]; + var hi = this._countBits(w); + return (this.length - 1) * 26 + hi; + }; + + function toBitArray (num) { + var w = new Array(num.bitLength()); + + for (var bit = 0; bit < w.length; bit++) { + var off = (bit / 26) | 0; + var wbit = bit % 26; + + w[bit] = (num.words[off] & (1 << wbit)) >>> wbit; + } + + return w; + } + + // Number of trailing zero bits + BN.prototype.zeroBits = function zeroBits () { + if (this.isZero()) return 0; + + var r = 0; + for (var i = 0; i < this.length; i++) { + var b = this._zeroBits(this.words[i]); + r += b; + if (b !== 26) break; + } + return r; + }; + + BN.prototype.byteLength = function byteLength () { + return Math.ceil(this.bitLength() / 8); + }; + + BN.prototype.toTwos = function toTwos (width) { + if (this.negative !== 0) { + return this.abs().inotn(width).iaddn(1); + } + return this.clone(); + }; + + BN.prototype.fromTwos = function fromTwos (width) { + if (this.testn(width - 1)) { + return this.notn(width).iaddn(1).ineg(); + } + return this.clone(); + }; + + BN.prototype.isNeg = function isNeg () { + return this.negative !== 0; + }; + + // Return negative clone of `this` + BN.prototype.neg = function neg () { + return this.clone().ineg(); + }; + + BN.prototype.ineg = function ineg () { + if (!this.isZero()) { + this.negative ^= 1; + } + + return this; + }; + + // Or `num` with `this` in-place + BN.prototype.iuor = function iuor (num) { + while (this.length < num.length) { + this.words[this.length++] = 0; + } + + for (var i = 0; i < num.length; i++) { + this.words[i] = this.words[i] | num.words[i]; + } + + return this.strip(); + }; + + BN.prototype.ior = function ior (num) { + assert((this.negative | num.negative) === 0); + return this.iuor(num); + }; + + // Or `num` with `this` + BN.prototype.or = function or (num) { + if (this.length > num.length) return this.clone().ior(num); + return num.clone().ior(this); + }; + + BN.prototype.uor = function uor (num) { + if (this.length > num.length) return this.clone().iuor(num); + return num.clone().iuor(this); + }; + + // And `num` with `this` in-place + BN.prototype.iuand = function iuand (num) { + // b = min-length(num, this) + var b; + if (this.length > num.length) { + b = num; + } else { + b = this; + } + + for (var i = 0; i < b.length; i++) { + this.words[i] = this.words[i] & num.words[i]; + } + + this.length = b.length; + + return this.strip(); + }; + + BN.prototype.iand = function iand (num) { + assert((this.negative | num.negative) === 0); + return this.iuand(num); + }; + + // And `num` with `this` + BN.prototype.and = function and (num) { + if (this.length > num.length) return this.clone().iand(num); + return num.clone().iand(this); + }; + + BN.prototype.uand = function uand (num) { + if (this.length > num.length) return this.clone().iuand(num); + return num.clone().iuand(this); + }; + + // Xor `num` with `this` in-place + BN.prototype.iuxor = function iuxor (num) { + // a.length > b.length + var a; + var b; + if (this.length > num.length) { + a = this; + b = num; + } else { + a = num; + b = this; + } + + for (var i = 0; i < b.length; i++) { + this.words[i] = a.words[i] ^ b.words[i]; + } + + if (this !== a) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + + this.length = a.length; + + return this.strip(); + }; + + BN.prototype.ixor = function ixor (num) { + assert((this.negative | num.negative) === 0); + return this.iuxor(num); + }; + + // Xor `num` with `this` + BN.prototype.xor = function xor (num) { + if (this.length > num.length) return this.clone().ixor(num); + return num.clone().ixor(this); + }; + + BN.prototype.uxor = function uxor (num) { + if (this.length > num.length) return this.clone().iuxor(num); + return num.clone().iuxor(this); + }; + + // Not ``this`` with ``width`` bitwidth + BN.prototype.inotn = function inotn (width) { + assert(typeof width === 'number' && width >= 0); + + var bytesNeeded = Math.ceil(width / 26) | 0; + var bitsLeft = width % 26; + + // Extend the buffer with leading zeroes + this._expand(bytesNeeded); + + if (bitsLeft > 0) { + bytesNeeded--; + } + + // Handle complete words + for (var i = 0; i < bytesNeeded; i++) { + this.words[i] = ~this.words[i] & 0x3ffffff; + } + + // Handle the residue + if (bitsLeft > 0) { + this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft)); + } + + // And remove leading zeroes + return this.strip(); + }; + + BN.prototype.notn = function notn (width) { + return this.clone().inotn(width); + }; + + // Set `bit` of `this` + BN.prototype.setn = function setn (bit, val) { + assert(typeof bit === 'number' && bit >= 0); + + var off = (bit / 26) | 0; + var wbit = bit % 26; + + this._expand(off + 1); + + if (val) { + this.words[off] = this.words[off] | (1 << wbit); + } else { + this.words[off] = this.words[off] & ~(1 << wbit); + } + + return this.strip(); + }; + + // Add `num` to `this` in-place + BN.prototype.iadd = function iadd (num) { + var r; + + // negative + positive + if (this.negative !== 0 && num.negative === 0) { + this.negative = 0; + r = this.isub(num); + this.negative ^= 1; + return this._normSign(); + + // positive + negative + } else if (this.negative === 0 && num.negative !== 0) { + num.negative = 0; + r = this.isub(num); + num.negative = 1; + return r._normSign(); + } + + // a.length > b.length + var a, b; + if (this.length > num.length) { + a = this; + b = num; + } else { + a = num; + b = this; + } + + var carry = 0; + for (var i = 0; i < b.length; i++) { + r = (a.words[i] | 0) + (b.words[i] | 0) + carry; + this.words[i] = r & 0x3ffffff; + carry = r >>> 26; + } + for (; carry !== 0 && i < a.length; i++) { + r = (a.words[i] | 0) + carry; + this.words[i] = r & 0x3ffffff; + carry = r >>> 26; + } + + this.length = a.length; + if (carry !== 0) { + this.words[this.length] = carry; + this.length++; + // Copy the rest of the words + } else if (a !== this) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + + return this; + }; + + // Add `num` to `this` + BN.prototype.add = function add (num) { + var res; + if (num.negative !== 0 && this.negative === 0) { + num.negative = 0; + res = this.sub(num); + num.negative ^= 1; + return res; + } else if (num.negative === 0 && this.negative !== 0) { + this.negative = 0; + res = num.sub(this); + this.negative = 1; + return res; + } + + if (this.length > num.length) return this.clone().iadd(num); + + return num.clone().iadd(this); + }; + + // Subtract `num` from `this` in-place + BN.prototype.isub = function isub (num) { + // this - (-num) = this + num + if (num.negative !== 0) { + num.negative = 0; + var r = this.iadd(num); + num.negative = 1; + return r._normSign(); + + // -this - num = -(this + num) + } else if (this.negative !== 0) { + this.negative = 0; + this.iadd(num); + this.negative = 1; + return this._normSign(); + } + + // At this point both numbers are positive + var cmp = this.cmp(num); + + // Optimization - zeroify + if (cmp === 0) { + this.negative = 0; + this.length = 1; + this.words[0] = 0; + return this; + } + + // a > b + var a, b; + if (cmp > 0) { + a = this; + b = num; + } else { + a = num; + b = this; + } + + var carry = 0; + for (var i = 0; i < b.length; i++) { + r = (a.words[i] | 0) - (b.words[i] | 0) + carry; + carry = r >> 26; + this.words[i] = r & 0x3ffffff; + } + for (; carry !== 0 && i < a.length; i++) { + r = (a.words[i] | 0) + carry; + carry = r >> 26; + this.words[i] = r & 0x3ffffff; + } + + // Copy rest of the words + if (carry === 0 && i < a.length && a !== this) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + + this.length = Math.max(this.length, i); + + if (a !== this) { + this.negative = 1; + } + + return this.strip(); + }; + + // Subtract `num` from `this` + BN.prototype.sub = function sub (num) { + return this.clone().isub(num); + }; + + function smallMulTo (self, num, out) { + out.negative = num.negative ^ self.negative; + var len = (self.length + num.length) | 0; + out.length = len; + len = (len - 1) | 0; + + // Peel one iteration (compiler can't do it, because of code complexity) + var a = self.words[0] | 0; + var b = num.words[0] | 0; + var r = a * b; + + var lo = r & 0x3ffffff; + var carry = (r / 0x4000000) | 0; + out.words[0] = lo; + + for (var k = 1; k < len; k++) { + // Sum all words with the same `i + j = k` and accumulate `ncarry`, + // note that ncarry could be >= 0x3ffffff + var ncarry = carry >>> 26; + var rword = carry & 0x3ffffff; + var maxJ = Math.min(k, num.length - 1); + for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { + var i = (k - j) | 0; + a = self.words[i] | 0; + b = num.words[j] | 0; + r = a * b + rword; + ncarry += (r / 0x4000000) | 0; + rword = r & 0x3ffffff; + } + out.words[k] = rword | 0; + carry = ncarry | 0; + } + if (carry !== 0) { + out.words[k] = carry | 0; + } else { + out.length--; + } + + return out.strip(); + } + + // TODO(indutny): it may be reasonable to omit it for users who don't need + // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit + // multiplication (like elliptic secp256k1). + var comb10MulTo = function comb10MulTo (self, num, out) { + var a = self.words; + var b = num.words; + var o = out.words; + var c = 0; + var lo; + var mid; + var hi; + var a0 = a[0] | 0; + var al0 = a0 & 0x1fff; + var ah0 = a0 >>> 13; + var a1 = a[1] | 0; + var al1 = a1 & 0x1fff; + var ah1 = a1 >>> 13; + var a2 = a[2] | 0; + var al2 = a2 & 0x1fff; + var ah2 = a2 >>> 13; + var a3 = a[3] | 0; + var al3 = a3 & 0x1fff; + var ah3 = a3 >>> 13; + var a4 = a[4] | 0; + var al4 = a4 & 0x1fff; + var ah4 = a4 >>> 13; + var a5 = a[5] | 0; + var al5 = a5 & 0x1fff; + var ah5 = a5 >>> 13; + var a6 = a[6] | 0; + var al6 = a6 & 0x1fff; + var ah6 = a6 >>> 13; + var a7 = a[7] | 0; + var al7 = a7 & 0x1fff; + var ah7 = a7 >>> 13; + var a8 = a[8] | 0; + var al8 = a8 & 0x1fff; + var ah8 = a8 >>> 13; + var a9 = a[9] | 0; + var al9 = a9 & 0x1fff; + var ah9 = a9 >>> 13; + var b0 = b[0] | 0; + var bl0 = b0 & 0x1fff; + var bh0 = b0 >>> 13; + var b1 = b[1] | 0; + var bl1 = b1 & 0x1fff; + var bh1 = b1 >>> 13; + var b2 = b[2] | 0; + var bl2 = b2 & 0x1fff; + var bh2 = b2 >>> 13; + var b3 = b[3] | 0; + var bl3 = b3 & 0x1fff; + var bh3 = b3 >>> 13; + var b4 = b[4] | 0; + var bl4 = b4 & 0x1fff; + var bh4 = b4 >>> 13; + var b5 = b[5] | 0; + var bl5 = b5 & 0x1fff; + var bh5 = b5 >>> 13; + var b6 = b[6] | 0; + var bl6 = b6 & 0x1fff; + var bh6 = b6 >>> 13; + var b7 = b[7] | 0; + var bl7 = b7 & 0x1fff; + var bh7 = b7 >>> 13; + var b8 = b[8] | 0; + var bl8 = b8 & 0x1fff; + var bh8 = b8 >>> 13; + var b9 = b[9] | 0; + var bl9 = b9 & 0x1fff; + var bh9 = b9 >>> 13; + + out.negative = self.negative ^ num.negative; + out.length = 19; + /* k = 0 */ + lo = Math.imul(al0, bl0); + mid = Math.imul(al0, bh0); + mid = (mid + Math.imul(ah0, bl0)) | 0; + hi = Math.imul(ah0, bh0); + var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0; + w0 &= 0x3ffffff; + /* k = 1 */ + lo = Math.imul(al1, bl0); + mid = Math.imul(al1, bh0); + mid = (mid + Math.imul(ah1, bl0)) | 0; + hi = Math.imul(ah1, bh0); + lo = (lo + Math.imul(al0, bl1)) | 0; + mid = (mid + Math.imul(al0, bh1)) | 0; + mid = (mid + Math.imul(ah0, bl1)) | 0; + hi = (hi + Math.imul(ah0, bh1)) | 0; + var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0; + w1 &= 0x3ffffff; + /* k = 2 */ + lo = Math.imul(al2, bl0); + mid = Math.imul(al2, bh0); + mid = (mid + Math.imul(ah2, bl0)) | 0; + hi = Math.imul(ah2, bh0); + lo = (lo + Math.imul(al1, bl1)) | 0; + mid = (mid + Math.imul(al1, bh1)) | 0; + mid = (mid + Math.imul(ah1, bl1)) | 0; + hi = (hi + Math.imul(ah1, bh1)) | 0; + lo = (lo + Math.imul(al0, bl2)) | 0; + mid = (mid + Math.imul(al0, bh2)) | 0; + mid = (mid + Math.imul(ah0, bl2)) | 0; + hi = (hi + Math.imul(ah0, bh2)) | 0; + var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0; + w2 &= 0x3ffffff; + /* k = 3 */ + lo = Math.imul(al3, bl0); + mid = Math.imul(al3, bh0); + mid = (mid + Math.imul(ah3, bl0)) | 0; + hi = Math.imul(ah3, bh0); + lo = (lo + Math.imul(al2, bl1)) | 0; + mid = (mid + Math.imul(al2, bh1)) | 0; + mid = (mid + Math.imul(ah2, bl1)) | 0; + hi = (hi + Math.imul(ah2, bh1)) | 0; + lo = (lo + Math.imul(al1, bl2)) | 0; + mid = (mid + Math.imul(al1, bh2)) | 0; + mid = (mid + Math.imul(ah1, bl2)) | 0; + hi = (hi + Math.imul(ah1, bh2)) | 0; + lo = (lo + Math.imul(al0, bl3)) | 0; + mid = (mid + Math.imul(al0, bh3)) | 0; + mid = (mid + Math.imul(ah0, bl3)) | 0; + hi = (hi + Math.imul(ah0, bh3)) | 0; + var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0; + w3 &= 0x3ffffff; + /* k = 4 */ + lo = Math.imul(al4, bl0); + mid = Math.imul(al4, bh0); + mid = (mid + Math.imul(ah4, bl0)) | 0; + hi = Math.imul(ah4, bh0); + lo = (lo + Math.imul(al3, bl1)) | 0; + mid = (mid + Math.imul(al3, bh1)) | 0; + mid = (mid + Math.imul(ah3, bl1)) | 0; + hi = (hi + Math.imul(ah3, bh1)) | 0; + lo = (lo + Math.imul(al2, bl2)) | 0; + mid = (mid + Math.imul(al2, bh2)) | 0; + mid = (mid + Math.imul(ah2, bl2)) | 0; + hi = (hi + Math.imul(ah2, bh2)) | 0; + lo = (lo + Math.imul(al1, bl3)) | 0; + mid = (mid + Math.imul(al1, bh3)) | 0; + mid = (mid + Math.imul(ah1, bl3)) | 0; + hi = (hi + Math.imul(ah1, bh3)) | 0; + lo = (lo + Math.imul(al0, bl4)) | 0; + mid = (mid + Math.imul(al0, bh4)) | 0; + mid = (mid + Math.imul(ah0, bl4)) | 0; + hi = (hi + Math.imul(ah0, bh4)) | 0; + var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0; + w4 &= 0x3ffffff; + /* k = 5 */ + lo = Math.imul(al5, bl0); + mid = Math.imul(al5, bh0); + mid = (mid + Math.imul(ah5, bl0)) | 0; + hi = Math.imul(ah5, bh0); + lo = (lo + Math.imul(al4, bl1)) | 0; + mid = (mid + Math.imul(al4, bh1)) | 0; + mid = (mid + Math.imul(ah4, bl1)) | 0; + hi = (hi + Math.imul(ah4, bh1)) | 0; + lo = (lo + Math.imul(al3, bl2)) | 0; + mid = (mid + Math.imul(al3, bh2)) | 0; + mid = (mid + Math.imul(ah3, bl2)) | 0; + hi = (hi + Math.imul(ah3, bh2)) | 0; + lo = (lo + Math.imul(al2, bl3)) | 0; + mid = (mid + Math.imul(al2, bh3)) | 0; + mid = (mid + Math.imul(ah2, bl3)) | 0; + hi = (hi + Math.imul(ah2, bh3)) | 0; + lo = (lo + Math.imul(al1, bl4)) | 0; + mid = (mid + Math.imul(al1, bh4)) | 0; + mid = (mid + Math.imul(ah1, bl4)) | 0; + hi = (hi + Math.imul(ah1, bh4)) | 0; + lo = (lo + Math.imul(al0, bl5)) | 0; + mid = (mid + Math.imul(al0, bh5)) | 0; + mid = (mid + Math.imul(ah0, bl5)) | 0; + hi = (hi + Math.imul(ah0, bh5)) | 0; + var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0; + w5 &= 0x3ffffff; + /* k = 6 */ + lo = Math.imul(al6, bl0); + mid = Math.imul(al6, bh0); + mid = (mid + Math.imul(ah6, bl0)) | 0; + hi = Math.imul(ah6, bh0); + lo = (lo + Math.imul(al5, bl1)) | 0; + mid = (mid + Math.imul(al5, bh1)) | 0; + mid = (mid + Math.imul(ah5, bl1)) | 0; + hi = (hi + Math.imul(ah5, bh1)) | 0; + lo = (lo + Math.imul(al4, bl2)) | 0; + mid = (mid + Math.imul(al4, bh2)) | 0; + mid = (mid + Math.imul(ah4, bl2)) | 0; + hi = (hi + Math.imul(ah4, bh2)) | 0; + lo = (lo + Math.imul(al3, bl3)) | 0; + mid = (mid + Math.imul(al3, bh3)) | 0; + mid = (mid + Math.imul(ah3, bl3)) | 0; + hi = (hi + Math.imul(ah3, bh3)) | 0; + lo = (lo + Math.imul(al2, bl4)) | 0; + mid = (mid + Math.imul(al2, bh4)) | 0; + mid = (mid + Math.imul(ah2, bl4)) | 0; + hi = (hi + Math.imul(ah2, bh4)) | 0; + lo = (lo + Math.imul(al1, bl5)) | 0; + mid = (mid + Math.imul(al1, bh5)) | 0; + mid = (mid + Math.imul(ah1, bl5)) | 0; + hi = (hi + Math.imul(ah1, bh5)) | 0; + lo = (lo + Math.imul(al0, bl6)) | 0; + mid = (mid + Math.imul(al0, bh6)) | 0; + mid = (mid + Math.imul(ah0, bl6)) | 0; + hi = (hi + Math.imul(ah0, bh6)) | 0; + var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0; + w6 &= 0x3ffffff; + /* k = 7 */ + lo = Math.imul(al7, bl0); + mid = Math.imul(al7, bh0); + mid = (mid + Math.imul(ah7, bl0)) | 0; + hi = Math.imul(ah7, bh0); + lo = (lo + Math.imul(al6, bl1)) | 0; + mid = (mid + Math.imul(al6, bh1)) | 0; + mid = (mid + Math.imul(ah6, bl1)) | 0; + hi = (hi + Math.imul(ah6, bh1)) | 0; + lo = (lo + Math.imul(al5, bl2)) | 0; + mid = (mid + Math.imul(al5, bh2)) | 0; + mid = (mid + Math.imul(ah5, bl2)) | 0; + hi = (hi + Math.imul(ah5, bh2)) | 0; + lo = (lo + Math.imul(al4, bl3)) | 0; + mid = (mid + Math.imul(al4, bh3)) | 0; + mid = (mid + Math.imul(ah4, bl3)) | 0; + hi = (hi + Math.imul(ah4, bh3)) | 0; + lo = (lo + Math.imul(al3, bl4)) | 0; + mid = (mid + Math.imul(al3, bh4)) | 0; + mid = (mid + Math.imul(ah3, bl4)) | 0; + hi = (hi + Math.imul(ah3, bh4)) | 0; + lo = (lo + Math.imul(al2, bl5)) | 0; + mid = (mid + Math.imul(al2, bh5)) | 0; + mid = (mid + Math.imul(ah2, bl5)) | 0; + hi = (hi + Math.imul(ah2, bh5)) | 0; + lo = (lo + Math.imul(al1, bl6)) | 0; + mid = (mid + Math.imul(al1, bh6)) | 0; + mid = (mid + Math.imul(ah1, bl6)) | 0; + hi = (hi + Math.imul(ah1, bh6)) | 0; + lo = (lo + Math.imul(al0, bl7)) | 0; + mid = (mid + Math.imul(al0, bh7)) | 0; + mid = (mid + Math.imul(ah0, bl7)) | 0; + hi = (hi + Math.imul(ah0, bh7)) | 0; + var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0; + w7 &= 0x3ffffff; + /* k = 8 */ + lo = Math.imul(al8, bl0); + mid = Math.imul(al8, bh0); + mid = (mid + Math.imul(ah8, bl0)) | 0; + hi = Math.imul(ah8, bh0); + lo = (lo + Math.imul(al7, bl1)) | 0; + mid = (mid + Math.imul(al7, bh1)) | 0; + mid = (mid + Math.imul(ah7, bl1)) | 0; + hi = (hi + Math.imul(ah7, bh1)) | 0; + lo = (lo + Math.imul(al6, bl2)) | 0; + mid = (mid + Math.imul(al6, bh2)) | 0; + mid = (mid + Math.imul(ah6, bl2)) | 0; + hi = (hi + Math.imul(ah6, bh2)) | 0; + lo = (lo + Math.imul(al5, bl3)) | 0; + mid = (mid + Math.imul(al5, bh3)) | 0; + mid = (mid + Math.imul(ah5, bl3)) | 0; + hi = (hi + Math.imul(ah5, bh3)) | 0; + lo = (lo + Math.imul(al4, bl4)) | 0; + mid = (mid + Math.imul(al4, bh4)) | 0; + mid = (mid + Math.imul(ah4, bl4)) | 0; + hi = (hi + Math.imul(ah4, bh4)) | 0; + lo = (lo + Math.imul(al3, bl5)) | 0; + mid = (mid + Math.imul(al3, bh5)) | 0; + mid = (mid + Math.imul(ah3, bl5)) | 0; + hi = (hi + Math.imul(ah3, bh5)) | 0; + lo = (lo + Math.imul(al2, bl6)) | 0; + mid = (mid + Math.imul(al2, bh6)) | 0; + mid = (mid + Math.imul(ah2, bl6)) | 0; + hi = (hi + Math.imul(ah2, bh6)) | 0; + lo = (lo + Math.imul(al1, bl7)) | 0; + mid = (mid + Math.imul(al1, bh7)) | 0; + mid = (mid + Math.imul(ah1, bl7)) | 0; + hi = (hi + Math.imul(ah1, bh7)) | 0; + lo = (lo + Math.imul(al0, bl8)) | 0; + mid = (mid + Math.imul(al0, bh8)) | 0; + mid = (mid + Math.imul(ah0, bl8)) | 0; + hi = (hi + Math.imul(ah0, bh8)) | 0; + var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0; + w8 &= 0x3ffffff; + /* k = 9 */ + lo = Math.imul(al9, bl0); + mid = Math.imul(al9, bh0); + mid = (mid + Math.imul(ah9, bl0)) | 0; + hi = Math.imul(ah9, bh0); + lo = (lo + Math.imul(al8, bl1)) | 0; + mid = (mid + Math.imul(al8, bh1)) | 0; + mid = (mid + Math.imul(ah8, bl1)) | 0; + hi = (hi + Math.imul(ah8, bh1)) | 0; + lo = (lo + Math.imul(al7, bl2)) | 0; + mid = (mid + Math.imul(al7, bh2)) | 0; + mid = (mid + Math.imul(ah7, bl2)) | 0; + hi = (hi + Math.imul(ah7, bh2)) | 0; + lo = (lo + Math.imul(al6, bl3)) | 0; + mid = (mid + Math.imul(al6, bh3)) | 0; + mid = (mid + Math.imul(ah6, bl3)) | 0; + hi = (hi + Math.imul(ah6, bh3)) | 0; + lo = (lo + Math.imul(al5, bl4)) | 0; + mid = (mid + Math.imul(al5, bh4)) | 0; + mid = (mid + Math.imul(ah5, bl4)) | 0; + hi = (hi + Math.imul(ah5, bh4)) | 0; + lo = (lo + Math.imul(al4, bl5)) | 0; + mid = (mid + Math.imul(al4, bh5)) | 0; + mid = (mid + Math.imul(ah4, bl5)) | 0; + hi = (hi + Math.imul(ah4, bh5)) | 0; + lo = (lo + Math.imul(al3, bl6)) | 0; + mid = (mid + Math.imul(al3, bh6)) | 0; + mid = (mid + Math.imul(ah3, bl6)) | 0; + hi = (hi + Math.imul(ah3, bh6)) | 0; + lo = (lo + Math.imul(al2, bl7)) | 0; + mid = (mid + Math.imul(al2, bh7)) | 0; + mid = (mid + Math.imul(ah2, bl7)) | 0; + hi = (hi + Math.imul(ah2, bh7)) | 0; + lo = (lo + Math.imul(al1, bl8)) | 0; + mid = (mid + Math.imul(al1, bh8)) | 0; + mid = (mid + Math.imul(ah1, bl8)) | 0; + hi = (hi + Math.imul(ah1, bh8)) | 0; + lo = (lo + Math.imul(al0, bl9)) | 0; + mid = (mid + Math.imul(al0, bh9)) | 0; + mid = (mid + Math.imul(ah0, bl9)) | 0; + hi = (hi + Math.imul(ah0, bh9)) | 0; + var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0; + w9 &= 0x3ffffff; + /* k = 10 */ + lo = Math.imul(al9, bl1); + mid = Math.imul(al9, bh1); + mid = (mid + Math.imul(ah9, bl1)) | 0; + hi = Math.imul(ah9, bh1); + lo = (lo + Math.imul(al8, bl2)) | 0; + mid = (mid + Math.imul(al8, bh2)) | 0; + mid = (mid + Math.imul(ah8, bl2)) | 0; + hi = (hi + Math.imul(ah8, bh2)) | 0; + lo = (lo + Math.imul(al7, bl3)) | 0; + mid = (mid + Math.imul(al7, bh3)) | 0; + mid = (mid + Math.imul(ah7, bl3)) | 0; + hi = (hi + Math.imul(ah7, bh3)) | 0; + lo = (lo + Math.imul(al6, bl4)) | 0; + mid = (mid + Math.imul(al6, bh4)) | 0; + mid = (mid + Math.imul(ah6, bl4)) | 0; + hi = (hi + Math.imul(ah6, bh4)) | 0; + lo = (lo + Math.imul(al5, bl5)) | 0; + mid = (mid + Math.imul(al5, bh5)) | 0; + mid = (mid + Math.imul(ah5, bl5)) | 0; + hi = (hi + Math.imul(ah5, bh5)) | 0; + lo = (lo + Math.imul(al4, bl6)) | 0; + mid = (mid + Math.imul(al4, bh6)) | 0; + mid = (mid + Math.imul(ah4, bl6)) | 0; + hi = (hi + Math.imul(ah4, bh6)) | 0; + lo = (lo + Math.imul(al3, bl7)) | 0; + mid = (mid + Math.imul(al3, bh7)) | 0; + mid = (mid + Math.imul(ah3, bl7)) | 0; + hi = (hi + Math.imul(ah3, bh7)) | 0; + lo = (lo + Math.imul(al2, bl8)) | 0; + mid = (mid + Math.imul(al2, bh8)) | 0; + mid = (mid + Math.imul(ah2, bl8)) | 0; + hi = (hi + Math.imul(ah2, bh8)) | 0; + lo = (lo + Math.imul(al1, bl9)) | 0; + mid = (mid + Math.imul(al1, bh9)) | 0; + mid = (mid + Math.imul(ah1, bl9)) | 0; + hi = (hi + Math.imul(ah1, bh9)) | 0; + var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0; + w10 &= 0x3ffffff; + /* k = 11 */ + lo = Math.imul(al9, bl2); + mid = Math.imul(al9, bh2); + mid = (mid + Math.imul(ah9, bl2)) | 0; + hi = Math.imul(ah9, bh2); + lo = (lo + Math.imul(al8, bl3)) | 0; + mid = (mid + Math.imul(al8, bh3)) | 0; + mid = (mid + Math.imul(ah8, bl3)) | 0; + hi = (hi + Math.imul(ah8, bh3)) | 0; + lo = (lo + Math.imul(al7, bl4)) | 0; + mid = (mid + Math.imul(al7, bh4)) | 0; + mid = (mid + Math.imul(ah7, bl4)) | 0; + hi = (hi + Math.imul(ah7, bh4)) | 0; + lo = (lo + Math.imul(al6, bl5)) | 0; + mid = (mid + Math.imul(al6, bh5)) | 0; + mid = (mid + Math.imul(ah6, bl5)) | 0; + hi = (hi + Math.imul(ah6, bh5)) | 0; + lo = (lo + Math.imul(al5, bl6)) | 0; + mid = (mid + Math.imul(al5, bh6)) | 0; + mid = (mid + Math.imul(ah5, bl6)) | 0; + hi = (hi + Math.imul(ah5, bh6)) | 0; + lo = (lo + Math.imul(al4, bl7)) | 0; + mid = (mid + Math.imul(al4, bh7)) | 0; + mid = (mid + Math.imul(ah4, bl7)) | 0; + hi = (hi + Math.imul(ah4, bh7)) | 0; + lo = (lo + Math.imul(al3, bl8)) | 0; + mid = (mid + Math.imul(al3, bh8)) | 0; + mid = (mid + Math.imul(ah3, bl8)) | 0; + hi = (hi + Math.imul(ah3, bh8)) | 0; + lo = (lo + Math.imul(al2, bl9)) | 0; + mid = (mid + Math.imul(al2, bh9)) | 0; + mid = (mid + Math.imul(ah2, bl9)) | 0; + hi = (hi + Math.imul(ah2, bh9)) | 0; + var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0; + w11 &= 0x3ffffff; + /* k = 12 */ + lo = Math.imul(al9, bl3); + mid = Math.imul(al9, bh3); + mid = (mid + Math.imul(ah9, bl3)) | 0; + hi = Math.imul(ah9, bh3); + lo = (lo + Math.imul(al8, bl4)) | 0; + mid = (mid + Math.imul(al8, bh4)) | 0; + mid = (mid + Math.imul(ah8, bl4)) | 0; + hi = (hi + Math.imul(ah8, bh4)) | 0; + lo = (lo + Math.imul(al7, bl5)) | 0; + mid = (mid + Math.imul(al7, bh5)) | 0; + mid = (mid + Math.imul(ah7, bl5)) | 0; + hi = (hi + Math.imul(ah7, bh5)) | 0; + lo = (lo + Math.imul(al6, bl6)) | 0; + mid = (mid + Math.imul(al6, bh6)) | 0; + mid = (mid + Math.imul(ah6, bl6)) | 0; + hi = (hi + Math.imul(ah6, bh6)) | 0; + lo = (lo + Math.imul(al5, bl7)) | 0; + mid = (mid + Math.imul(al5, bh7)) | 0; + mid = (mid + Math.imul(ah5, bl7)) | 0; + hi = (hi + Math.imul(ah5, bh7)) | 0; + lo = (lo + Math.imul(al4, bl8)) | 0; + mid = (mid + Math.imul(al4, bh8)) | 0; + mid = (mid + Math.imul(ah4, bl8)) | 0; + hi = (hi + Math.imul(ah4, bh8)) | 0; + lo = (lo + Math.imul(al3, bl9)) | 0; + mid = (mid + Math.imul(al3, bh9)) | 0; + mid = (mid + Math.imul(ah3, bl9)) | 0; + hi = (hi + Math.imul(ah3, bh9)) | 0; + var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0; + w12 &= 0x3ffffff; + /* k = 13 */ + lo = Math.imul(al9, bl4); + mid = Math.imul(al9, bh4); + mid = (mid + Math.imul(ah9, bl4)) | 0; + hi = Math.imul(ah9, bh4); + lo = (lo + Math.imul(al8, bl5)) | 0; + mid = (mid + Math.imul(al8, bh5)) | 0; + mid = (mid + Math.imul(ah8, bl5)) | 0; + hi = (hi + Math.imul(ah8, bh5)) | 0; + lo = (lo + Math.imul(al7, bl6)) | 0; + mid = (mid + Math.imul(al7, bh6)) | 0; + mid = (mid + Math.imul(ah7, bl6)) | 0; + hi = (hi + Math.imul(ah7, bh6)) | 0; + lo = (lo + Math.imul(al6, bl7)) | 0; + mid = (mid + Math.imul(al6, bh7)) | 0; + mid = (mid + Math.imul(ah6, bl7)) | 0; + hi = (hi + Math.imul(ah6, bh7)) | 0; + lo = (lo + Math.imul(al5, bl8)) | 0; + mid = (mid + Math.imul(al5, bh8)) | 0; + mid = (mid + Math.imul(ah5, bl8)) | 0; + hi = (hi + Math.imul(ah5, bh8)) | 0; + lo = (lo + Math.imul(al4, bl9)) | 0; + mid = (mid + Math.imul(al4, bh9)) | 0; + mid = (mid + Math.imul(ah4, bl9)) | 0; + hi = (hi + Math.imul(ah4, bh9)) | 0; + var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0; + w13 &= 0x3ffffff; + /* k = 14 */ + lo = Math.imul(al9, bl5); + mid = Math.imul(al9, bh5); + mid = (mid + Math.imul(ah9, bl5)) | 0; + hi = Math.imul(ah9, bh5); + lo = (lo + Math.imul(al8, bl6)) | 0; + mid = (mid + Math.imul(al8, bh6)) | 0; + mid = (mid + Math.imul(ah8, bl6)) | 0; + hi = (hi + Math.imul(ah8, bh6)) | 0; + lo = (lo + Math.imul(al7, bl7)) | 0; + mid = (mid + Math.imul(al7, bh7)) | 0; + mid = (mid + Math.imul(ah7, bl7)) | 0; + hi = (hi + Math.imul(ah7, bh7)) | 0; + lo = (lo + Math.imul(al6, bl8)) | 0; + mid = (mid + Math.imul(al6, bh8)) | 0; + mid = (mid + Math.imul(ah6, bl8)) | 0; + hi = (hi + Math.imul(ah6, bh8)) | 0; + lo = (lo + Math.imul(al5, bl9)) | 0; + mid = (mid + Math.imul(al5, bh9)) | 0; + mid = (mid + Math.imul(ah5, bl9)) | 0; + hi = (hi + Math.imul(ah5, bh9)) | 0; + var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0; + w14 &= 0x3ffffff; + /* k = 15 */ + lo = Math.imul(al9, bl6); + mid = Math.imul(al9, bh6); + mid = (mid + Math.imul(ah9, bl6)) | 0; + hi = Math.imul(ah9, bh6); + lo = (lo + Math.imul(al8, bl7)) | 0; + mid = (mid + Math.imul(al8, bh7)) | 0; + mid = (mid + Math.imul(ah8, bl7)) | 0; + hi = (hi + Math.imul(ah8, bh7)) | 0; + lo = (lo + Math.imul(al7, bl8)) | 0; + mid = (mid + Math.imul(al7, bh8)) | 0; + mid = (mid + Math.imul(ah7, bl8)) | 0; + hi = (hi + Math.imul(ah7, bh8)) | 0; + lo = (lo + Math.imul(al6, bl9)) | 0; + mid = (mid + Math.imul(al6, bh9)) | 0; + mid = (mid + Math.imul(ah6, bl9)) | 0; + hi = (hi + Math.imul(ah6, bh9)) | 0; + var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0; + w15 &= 0x3ffffff; + /* k = 16 */ + lo = Math.imul(al9, bl7); + mid = Math.imul(al9, bh7); + mid = (mid + Math.imul(ah9, bl7)) | 0; + hi = Math.imul(ah9, bh7); + lo = (lo + Math.imul(al8, bl8)) | 0; + mid = (mid + Math.imul(al8, bh8)) | 0; + mid = (mid + Math.imul(ah8, bl8)) | 0; + hi = (hi + Math.imul(ah8, bh8)) | 0; + lo = (lo + Math.imul(al7, bl9)) | 0; + mid = (mid + Math.imul(al7, bh9)) | 0; + mid = (mid + Math.imul(ah7, bl9)) | 0; + hi = (hi + Math.imul(ah7, bh9)) | 0; + var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0; + w16 &= 0x3ffffff; + /* k = 17 */ + lo = Math.imul(al9, bl8); + mid = Math.imul(al9, bh8); + mid = (mid + Math.imul(ah9, bl8)) | 0; + hi = Math.imul(ah9, bh8); + lo = (lo + Math.imul(al8, bl9)) | 0; + mid = (mid + Math.imul(al8, bh9)) | 0; + mid = (mid + Math.imul(ah8, bl9)) | 0; + hi = (hi + Math.imul(ah8, bh9)) | 0; + var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0; + w17 &= 0x3ffffff; + /* k = 18 */ + lo = Math.imul(al9, bl9); + mid = Math.imul(al9, bh9); + mid = (mid + Math.imul(ah9, bl9)) | 0; + hi = Math.imul(ah9, bh9); + var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0; + w18 &= 0x3ffffff; + o[0] = w0; + o[1] = w1; + o[2] = w2; + o[3] = w3; + o[4] = w4; + o[5] = w5; + o[6] = w6; + o[7] = w7; + o[8] = w8; + o[9] = w9; + o[10] = w10; + o[11] = w11; + o[12] = w12; + o[13] = w13; + o[14] = w14; + o[15] = w15; + o[16] = w16; + o[17] = w17; + o[18] = w18; + if (c !== 0) { + o[19] = c; + out.length++; + } + return out; + }; + + // Polyfill comb + if (!Math.imul) { + comb10MulTo = smallMulTo; + } + + function bigMulTo (self, num, out) { + out.negative = num.negative ^ self.negative; + out.length = self.length + num.length; + + var carry = 0; + var hncarry = 0; + for (var k = 0; k < out.length - 1; k++) { + // Sum all words with the same `i + j = k` and accumulate `ncarry`, + // note that ncarry could be >= 0x3ffffff + var ncarry = hncarry; + hncarry = 0; + var rword = carry & 0x3ffffff; + var maxJ = Math.min(k, num.length - 1); + for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { + var i = k - j; + var a = self.words[i] | 0; + var b = num.words[j] | 0; + var r = a * b; + + var lo = r & 0x3ffffff; + ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0; + lo = (lo + rword) | 0; + rword = lo & 0x3ffffff; + ncarry = (ncarry + (lo >>> 26)) | 0; + + hncarry += ncarry >>> 26; + ncarry &= 0x3ffffff; + } + out.words[k] = rword; + carry = ncarry; + ncarry = hncarry; + } + if (carry !== 0) { + out.words[k] = carry; + } else { + out.length--; + } + + return out.strip(); + } + + function jumboMulTo (self, num, out) { + var fftm = new FFTM(); + return fftm.mulp(self, num, out); + } + + BN.prototype.mulTo = function mulTo (num, out) { + var res; + var len = this.length + num.length; + if (this.length === 10 && num.length === 10) { + res = comb10MulTo(this, num, out); + } else if (len < 63) { + res = smallMulTo(this, num, out); + } else if (len < 1024) { + res = bigMulTo(this, num, out); + } else { + res = jumboMulTo(this, num, out); + } + + return res; + }; + + // Cooley-Tukey algorithm for FFT + // slightly revisited to rely on looping instead of recursion + + function FFTM (x, y) { + this.x = x; + this.y = y; + } + + FFTM.prototype.makeRBT = function makeRBT (N) { + var t = new Array(N); + var l = BN.prototype._countBits(N) - 1; + for (var i = 0; i < N; i++) { + t[i] = this.revBin(i, l, N); + } + + return t; + }; + + // Returns binary-reversed representation of `x` + FFTM.prototype.revBin = function revBin (x, l, N) { + if (x === 0 || x === N - 1) return x; + + var rb = 0; + for (var i = 0; i < l; i++) { + rb |= (x & 1) << (l - i - 1); + x >>= 1; + } + + return rb; + }; + + // Performs "tweedling" phase, therefore 'emulating' + // behaviour of the recursive algorithm + FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) { + for (var i = 0; i < N; i++) { + rtws[i] = rws[rbt[i]]; + itws[i] = iws[rbt[i]]; + } + }; + + FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) { + this.permute(rbt, rws, iws, rtws, itws, N); + + for (var s = 1; s < N; s <<= 1) { + var l = s << 1; + + var rtwdf = Math.cos(2 * Math.PI / l); + var itwdf = Math.sin(2 * Math.PI / l); + + for (var p = 0; p < N; p += l) { + var rtwdf_ = rtwdf; + var itwdf_ = itwdf; + + for (var j = 0; j < s; j++) { + var re = rtws[p + j]; + var ie = itws[p + j]; + + var ro = rtws[p + j + s]; + var io = itws[p + j + s]; + + var rx = rtwdf_ * ro - itwdf_ * io; + + io = rtwdf_ * io + itwdf_ * ro; + ro = rx; + + rtws[p + j] = re + ro; + itws[p + j] = ie + io; + + rtws[p + j + s] = re - ro; + itws[p + j + s] = ie - io; + + /* jshint maxdepth : false */ + if (j !== l) { + rx = rtwdf * rtwdf_ - itwdf * itwdf_; + + itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_; + rtwdf_ = rx; + } + } + } + } + }; + + FFTM.prototype.guessLen13b = function guessLen13b (n, m) { + var N = Math.max(m, n) | 1; + var odd = N & 1; + var i = 0; + for (N = N / 2 | 0; N; N = N >>> 1) { + i++; + } + + return 1 << i + 1 + odd; + }; + + FFTM.prototype.conjugate = function conjugate (rws, iws, N) { + if (N <= 1) return; + + for (var i = 0; i < N / 2; i++) { + var t = rws[i]; + + rws[i] = rws[N - i - 1]; + rws[N - i - 1] = t; + + t = iws[i]; + + iws[i] = -iws[N - i - 1]; + iws[N - i - 1] = -t; + } + }; + + FFTM.prototype.normalize13b = function normalize13b (ws, N) { + var carry = 0; + for (var i = 0; i < N / 2; i++) { + var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + + Math.round(ws[2 * i] / N) + + carry; + + ws[i] = w & 0x3ffffff; + + if (w < 0x4000000) { + carry = 0; + } else { + carry = w / 0x4000000 | 0; + } + } + + return ws; + }; + + FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) { + var carry = 0; + for (var i = 0; i < len; i++) { + carry = carry + (ws[i] | 0); + + rws[2 * i] = carry & 0x1fff; carry = carry >>> 13; + rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13; + } + + // Pad with zeroes + for (i = 2 * len; i < N; ++i) { + rws[i] = 0; + } + + assert(carry === 0); + assert((carry & ~0x1fff) === 0); + }; + + FFTM.prototype.stub = function stub (N) { + var ph = new Array(N); + for (var i = 0; i < N; i++) { + ph[i] = 0; + } + + return ph; + }; + + FFTM.prototype.mulp = function mulp (x, y, out) { + var N = 2 * this.guessLen13b(x.length, y.length); + + var rbt = this.makeRBT(N); + + var _ = this.stub(N); + + var rws = new Array(N); + var rwst = new Array(N); + var iwst = new Array(N); + + var nrws = new Array(N); + var nrwst = new Array(N); + var niwst = new Array(N); + + var rmws = out.words; + rmws.length = N; + + this.convert13b(x.words, x.length, rws, N); + this.convert13b(y.words, y.length, nrws, N); + + this.transform(rws, _, rwst, iwst, N, rbt); + this.transform(nrws, _, nrwst, niwst, N, rbt); + + for (var i = 0; i < N; i++) { + var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; + iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]; + rwst[i] = rx; + } + + this.conjugate(rwst, iwst, N); + this.transform(rwst, iwst, rmws, _, N, rbt); + this.conjugate(rmws, _, N); + this.normalize13b(rmws, N); + + out.negative = x.negative ^ y.negative; + out.length = x.length + y.length; + return out.strip(); + }; + + // Multiply `this` by `num` + BN.prototype.mul = function mul (num) { + var out = new BN(null); + out.words = new Array(this.length + num.length); + return this.mulTo(num, out); + }; + + // Multiply employing FFT + BN.prototype.mulf = function mulf (num) { + var out = new BN(null); + out.words = new Array(this.length + num.length); + return jumboMulTo(this, num, out); + }; + + // In-place Multiplication + BN.prototype.imul = function imul (num) { + return this.clone().mulTo(num, this); + }; + + BN.prototype.imuln = function imuln (num) { + assert(typeof num === 'number'); + assert(num < 0x4000000); + + // Carry + var carry = 0; + for (var i = 0; i < this.length; i++) { + var w = (this.words[i] | 0) * num; + var lo = (w & 0x3ffffff) + (carry & 0x3ffffff); + carry >>= 26; + carry += (w / 0x4000000) | 0; + // NOTE: lo is 27bit maximum + carry += lo >>> 26; + this.words[i] = lo & 0x3ffffff; + } + + if (carry !== 0) { + this.words[i] = carry; + this.length++; + } + + return this; + }; + + BN.prototype.muln = function muln (num) { + return this.clone().imuln(num); + }; + + // `this` * `this` + BN.prototype.sqr = function sqr () { + return this.mul(this); + }; + + // `this` * `this` in-place + BN.prototype.isqr = function isqr () { + return this.imul(this.clone()); + }; + + // Math.pow(`this`, `num`) + BN.prototype.pow = function pow (num) { + var w = toBitArray(num); + if (w.length === 0) return new BN(1); + + // Skip leading zeroes + var res = this; + for (var i = 0; i < w.length; i++, res = res.sqr()) { + if (w[i] !== 0) break; + } + + if (++i < w.length) { + for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) { + if (w[i] === 0) continue; + + res = res.mul(q); + } + } + + return res; + }; + + // Shift-left in-place + BN.prototype.iushln = function iushln (bits) { + assert(typeof bits === 'number' && bits >= 0); + var r = bits % 26; + var s = (bits - r) / 26; + var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r); + var i; + + if (r !== 0) { + var carry = 0; + + for (i = 0; i < this.length; i++) { + var newCarry = this.words[i] & carryMask; + var c = ((this.words[i] | 0) - newCarry) << r; + this.words[i] = c | carry; + carry = newCarry >>> (26 - r); + } + + if (carry) { + this.words[i] = carry; + this.length++; + } + } + + if (s !== 0) { + for (i = this.length - 1; i >= 0; i--) { + this.words[i + s] = this.words[i]; + } + + for (i = 0; i < s; i++) { + this.words[i] = 0; + } + + this.length += s; + } + + return this.strip(); + }; + + BN.prototype.ishln = function ishln (bits) { + // TODO(indutny): implement me + assert(this.negative === 0); + return this.iushln(bits); + }; + + // Shift-right in-place + // NOTE: `hint` is a lowest bit before trailing zeroes + // NOTE: if `extended` is present - it will be filled with destroyed bits + BN.prototype.iushrn = function iushrn (bits, hint, extended) { + assert(typeof bits === 'number' && bits >= 0); + var h; + if (hint) { + h = (hint - (hint % 26)) / 26; + } else { + h = 0; + } + + var r = bits % 26; + var s = Math.min((bits - r) / 26, this.length); + var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); + var maskedWords = extended; + + h -= s; + h = Math.max(0, h); + + // Extended mode, copy masked part + if (maskedWords) { + for (var i = 0; i < s; i++) { + maskedWords.words[i] = this.words[i]; + } + maskedWords.length = s; + } + + if (s === 0) { + // No-op, we should not move anything at all + } else if (this.length > s) { + this.length -= s; + for (i = 0; i < this.length; i++) { + this.words[i] = this.words[i + s]; + } + } else { + this.words[0] = 0; + this.length = 1; + } + + var carry = 0; + for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { + var word = this.words[i] | 0; + this.words[i] = (carry << (26 - r)) | (word >>> r); + carry = word & mask; + } + + // Push carried bits as a mask + if (maskedWords && carry !== 0) { + maskedWords.words[maskedWords.length++] = carry; + } + + if (this.length === 0) { + this.words[0] = 0; + this.length = 1; + } + + return this.strip(); + }; + + BN.prototype.ishrn = function ishrn (bits, hint, extended) { + // TODO(indutny): implement me + assert(this.negative === 0); + return this.iushrn(bits, hint, extended); + }; + + // Shift-left + BN.prototype.shln = function shln (bits) { + return this.clone().ishln(bits); + }; + + BN.prototype.ushln = function ushln (bits) { + return this.clone().iushln(bits); + }; + + // Shift-right + BN.prototype.shrn = function shrn (bits) { + return this.clone().ishrn(bits); + }; + + BN.prototype.ushrn = function ushrn (bits) { + return this.clone().iushrn(bits); + }; + + // Test if n bit is set + BN.prototype.testn = function testn (bit) { + assert(typeof bit === 'number' && bit >= 0); + var r = bit % 26; + var s = (bit - r) / 26; + var q = 1 << r; + + // Fast case: bit is much higher than all existing words + if (this.length <= s) return false; + + // Check bit and return + var w = this.words[s]; + + return !!(w & q); + }; + + // Return only lowers bits of number (in-place) + BN.prototype.imaskn = function imaskn (bits) { + assert(typeof bits === 'number' && bits >= 0); + var r = bits % 26; + var s = (bits - r) / 26; + + assert(this.negative === 0, 'imaskn works only with positive numbers'); + + if (this.length <= s) { + return this; + } + + if (r !== 0) { + s++; + } + this.length = Math.min(s, this.length); + + if (r !== 0) { + var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); + this.words[this.length - 1] &= mask; + } + + return this.strip(); + }; + + // Return only lowers bits of number + BN.prototype.maskn = function maskn (bits) { + return this.clone().imaskn(bits); + }; + + // Add plain number `num` to `this` + BN.prototype.iaddn = function iaddn (num) { + assert(typeof num === 'number'); + assert(num < 0x4000000); + if (num < 0) return this.isubn(-num); + + // Possible sign change + if (this.negative !== 0) { + if (this.length === 1 && (this.words[0] | 0) < num) { + this.words[0] = num - (this.words[0] | 0); + this.negative = 0; + return this; + } + + this.negative = 0; + this.isubn(num); + this.negative = 1; + return this; + } + + // Add without checks + return this._iaddn(num); + }; + + BN.prototype._iaddn = function _iaddn (num) { + this.words[0] += num; + + // Carry + for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) { + this.words[i] -= 0x4000000; + if (i === this.length - 1) { + this.words[i + 1] = 1; + } else { + this.words[i + 1]++; + } + } + this.length = Math.max(this.length, i + 1); + + return this; + }; + + // Subtract plain number `num` from `this` + BN.prototype.isubn = function isubn (num) { + assert(typeof num === 'number'); + assert(num < 0x4000000); + if (num < 0) return this.iaddn(-num); + + if (this.negative !== 0) { + this.negative = 0; + this.iaddn(num); + this.negative = 1; + return this; + } + + this.words[0] -= num; + + if (this.length === 1 && this.words[0] < 0) { + this.words[0] = -this.words[0]; + this.negative = 1; + } else { + // Carry + for (var i = 0; i < this.length && this.words[i] < 0; i++) { + this.words[i] += 0x4000000; + this.words[i + 1] -= 1; + } + } + + return this.strip(); + }; + + BN.prototype.addn = function addn (num) { + return this.clone().iaddn(num); + }; + + BN.prototype.subn = function subn (num) { + return this.clone().isubn(num); + }; + + BN.prototype.iabs = function iabs () { + this.negative = 0; + + return this; + }; + + BN.prototype.abs = function abs () { + return this.clone().iabs(); + }; + + BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) { + var len = num.length + shift; + var i; + + this._expand(len); + + var w; + var carry = 0; + for (i = 0; i < num.length; i++) { + w = (this.words[i + shift] | 0) + carry; + var right = (num.words[i] | 0) * mul; + w -= right & 0x3ffffff; + carry = (w >> 26) - ((right / 0x4000000) | 0); + this.words[i + shift] = w & 0x3ffffff; + } + for (; i < this.length - shift; i++) { + w = (this.words[i + shift] | 0) + carry; + carry = w >> 26; + this.words[i + shift] = w & 0x3ffffff; + } + + if (carry === 0) return this.strip(); + + // Subtraction overflow + assert(carry === -1); + carry = 0; + for (i = 0; i < this.length; i++) { + w = -(this.words[i] | 0) + carry; + carry = w >> 26; + this.words[i] = w & 0x3ffffff; + } + this.negative = 1; + + return this.strip(); + }; + + BN.prototype._wordDiv = function _wordDiv (num, mode) { + var shift = this.length - num.length; + + var a = this.clone(); + var b = num; + + // Normalize + var bhi = b.words[b.length - 1] | 0; + var bhiBits = this._countBits(bhi); + shift = 26 - bhiBits; + if (shift !== 0) { + b = b.ushln(shift); + a.iushln(shift); + bhi = b.words[b.length - 1] | 0; + } + + // Initialize quotient + var m = a.length - b.length; + var q; + + if (mode !== 'mod') { + q = new BN(null); + q.length = m + 1; + q.words = new Array(q.length); + for (var i = 0; i < q.length; i++) { + q.words[i] = 0; + } + } + + var diff = a.clone()._ishlnsubmul(b, 1, m); + if (diff.negative === 0) { + a = diff; + if (q) { + q.words[m] = 1; + } + } + + for (var j = m - 1; j >= 0; j--) { + var qj = (a.words[b.length + j] | 0) * 0x4000000 + + (a.words[b.length + j - 1] | 0); + + // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max + // (0x7ffffff) + qj = Math.min((qj / bhi) | 0, 0x3ffffff); + + a._ishlnsubmul(b, qj, j); + while (a.negative !== 0) { + qj--; + a.negative = 0; + a._ishlnsubmul(b, 1, j); + if (!a.isZero()) { + a.negative ^= 1; + } + } + if (q) { + q.words[j] = qj; + } + } + if (q) { + q.strip(); + } + a.strip(); + + // Denormalize + if (mode !== 'div' && shift !== 0) { + a.iushrn(shift); + } + + return { + div: q || null, + mod: a + }; + }; + + // NOTE: 1) `mode` can be set to `mod` to request mod only, + // to `div` to request div only, or be absent to + // request both div & mod + // 2) `positive` is true if unsigned mod is requested + BN.prototype.divmod = function divmod (num, mode, positive) { + assert(!num.isZero()); + + if (this.isZero()) { + return { + div: new BN(0), + mod: new BN(0) + }; + } + + var div, mod, res; + if (this.negative !== 0 && num.negative === 0) { + res = this.neg().divmod(num, mode); + + if (mode !== 'mod') { + div = res.div.neg(); + } + + if (mode !== 'div') { + mod = res.mod.neg(); + if (positive && mod.negative !== 0) { + mod.iadd(num); + } + } + + return { + div: div, + mod: mod + }; + } + + if (this.negative === 0 && num.negative !== 0) { + res = this.divmod(num.neg(), mode); + + if (mode !== 'mod') { + div = res.div.neg(); + } + + return { + div: div, + mod: res.mod + }; + } + + if ((this.negative & num.negative) !== 0) { + res = this.neg().divmod(num.neg(), mode); + + if (mode !== 'div') { + mod = res.mod.neg(); + if (positive && mod.negative !== 0) { + mod.isub(num); + } + } + + return { + div: res.div, + mod: mod + }; + } + + // Both numbers are positive at this point + + // Strip both numbers to approximate shift value + if (num.length > this.length || this.cmp(num) < 0) { + return { + div: new BN(0), + mod: this + }; + } + + // Very short reduction + if (num.length === 1) { + if (mode === 'div') { + return { + div: this.divn(num.words[0]), + mod: null + }; + } + + if (mode === 'mod') { + return { + div: null, + mod: new BN(this.modn(num.words[0])) + }; + } + + return { + div: this.divn(num.words[0]), + mod: new BN(this.modn(num.words[0])) + }; + } + + return this._wordDiv(num, mode); + }; + + // Find `this` / `num` + BN.prototype.div = function div (num) { + return this.divmod(num, 'div', false).div; + }; + + // Find `this` % `num` + BN.prototype.mod = function mod (num) { + return this.divmod(num, 'mod', false).mod; + }; + + BN.prototype.umod = function umod (num) { + return this.divmod(num, 'mod', true).mod; + }; + + // Find Round(`this` / `num`) + BN.prototype.divRound = function divRound (num) { + var dm = this.divmod(num); + + // Fast case - exact division + if (dm.mod.isZero()) return dm.div; + + var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod; + + var half = num.ushrn(1); + var r2 = num.andln(1); + var cmp = mod.cmp(half); + + // Round down + if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; + + // Round up + return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1); + }; + + BN.prototype.modn = function modn (num) { + assert(num <= 0x3ffffff); + var p = (1 << 26) % num; + + var acc = 0; + for (var i = this.length - 1; i >= 0; i--) { + acc = (p * acc + (this.words[i] | 0)) % num; + } + + return acc; + }; + + // In-place division by number + BN.prototype.idivn = function idivn (num) { + assert(num <= 0x3ffffff); + + var carry = 0; + for (var i = this.length - 1; i >= 0; i--) { + var w = (this.words[i] | 0) + carry * 0x4000000; + this.words[i] = (w / num) | 0; + carry = w % num; + } + + return this.strip(); + }; + + BN.prototype.divn = function divn (num) { + return this.clone().idivn(num); + }; + + BN.prototype.egcd = function egcd (p) { + assert(p.negative === 0); + assert(!p.isZero()); + + var x = this; + var y = p.clone(); + + if (x.negative !== 0) { + x = x.umod(p); + } else { + x = x.clone(); + } + + // A * x + B * y = x + var A = new BN(1); + var B = new BN(0); + + // C * x + D * y = y + var C = new BN(0); + var D = new BN(1); + + var g = 0; + + while (x.isEven() && y.isEven()) { + x.iushrn(1); + y.iushrn(1); + ++g; + } + + var yp = y.clone(); + var xp = x.clone(); + + while (!x.isZero()) { + for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1); + if (i > 0) { + x.iushrn(i); + while (i-- > 0) { + if (A.isOdd() || B.isOdd()) { + A.iadd(yp); + B.isub(xp); + } + + A.iushrn(1); + B.iushrn(1); + } + } + + for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); + if (j > 0) { + y.iushrn(j); + while (j-- > 0) { + if (C.isOdd() || D.isOdd()) { + C.iadd(yp); + D.isub(xp); + } + + C.iushrn(1); + D.iushrn(1); + } + } + + if (x.cmp(y) >= 0) { + x.isub(y); + A.isub(C); + B.isub(D); + } else { + y.isub(x); + C.isub(A); + D.isub(B); + } + } + + return { + a: C, + b: D, + gcd: y.iushln(g) + }; + }; + + // This is reduced incarnation of the binary EEA + // above, designated to invert members of the + // _prime_ fields F(p) at a maximal speed + BN.prototype._invmp = function _invmp (p) { + assert(p.negative === 0); + assert(!p.isZero()); + + var a = this; + var b = p.clone(); + + if (a.negative !== 0) { + a = a.umod(p); + } else { + a = a.clone(); + } + + var x1 = new BN(1); + var x2 = new BN(0); + + var delta = b.clone(); + + while (a.cmpn(1) > 0 && b.cmpn(1) > 0) { + for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1); + if (i > 0) { + a.iushrn(i); + while (i-- > 0) { + if (x1.isOdd()) { + x1.iadd(delta); + } + + x1.iushrn(1); + } + } + + for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); + if (j > 0) { + b.iushrn(j); + while (j-- > 0) { + if (x2.isOdd()) { + x2.iadd(delta); + } + + x2.iushrn(1); + } + } + + if (a.cmp(b) >= 0) { + a.isub(b); + x1.isub(x2); + } else { + b.isub(a); + x2.isub(x1); + } + } + + var res; + if (a.cmpn(1) === 0) { + res = x1; + } else { + res = x2; + } + + if (res.cmpn(0) < 0) { + res.iadd(p); + } + + return res; + }; + + BN.prototype.gcd = function gcd (num) { + if (this.isZero()) return num.abs(); + if (num.isZero()) return this.abs(); + + var a = this.clone(); + var b = num.clone(); + a.negative = 0; + b.negative = 0; + + // Remove common factor of two + for (var shift = 0; a.isEven() && b.isEven(); shift++) { + a.iushrn(1); + b.iushrn(1); + } + + do { + while (a.isEven()) { + a.iushrn(1); + } + while (b.isEven()) { + b.iushrn(1); + } + + var r = a.cmp(b); + if (r < 0) { + // Swap `a` and `b` to make `a` always bigger than `b` + var t = a; + a = b; + b = t; + } else if (r === 0 || b.cmpn(1) === 0) { + break; + } + + a.isub(b); + } while (true); + + return b.iushln(shift); + }; + + // Invert number in the field F(num) + BN.prototype.invm = function invm (num) { + return this.egcd(num).a.umod(num); + }; + + BN.prototype.isEven = function isEven () { + return (this.words[0] & 1) === 0; + }; + + BN.prototype.isOdd = function isOdd () { + return (this.words[0] & 1) === 1; + }; + + // And first word and num + BN.prototype.andln = function andln (num) { + return this.words[0] & num; + }; + + // Increment at the bit position in-line + BN.prototype.bincn = function bincn (bit) { + assert(typeof bit === 'number'); + var r = bit % 26; + var s = (bit - r) / 26; + var q = 1 << r; + + // Fast case: bit is much higher than all existing words + if (this.length <= s) { + this._expand(s + 1); + this.words[s] |= q; + return this; + } + + // Add bit and propagate, if needed + var carry = q; + for (var i = s; carry !== 0 && i < this.length; i++) { + var w = this.words[i] | 0; + w += carry; + carry = w >>> 26; + w &= 0x3ffffff; + this.words[i] = w; + } + if (carry !== 0) { + this.words[i] = carry; + this.length++; + } + return this; + }; + + BN.prototype.isZero = function isZero () { + return this.length === 1 && this.words[0] === 0; + }; + + BN.prototype.cmpn = function cmpn (num) { + var negative = num < 0; + + if (this.negative !== 0 && !negative) return -1; + if (this.negative === 0 && negative) return 1; + + this.strip(); + + var res; + if (this.length > 1) { + res = 1; + } else { + if (negative) { + num = -num; + } + + assert(num <= 0x3ffffff, 'Number is too big'); + + var w = this.words[0] | 0; + res = w === num ? 0 : w < num ? -1 : 1; + } + if (this.negative !== 0) return -res | 0; + return res; + }; + + // Compare two numbers and return: + // 1 - if `this` > `num` + // 0 - if `this` == `num` + // -1 - if `this` < `num` + BN.prototype.cmp = function cmp (num) { + if (this.negative !== 0 && num.negative === 0) return -1; + if (this.negative === 0 && num.negative !== 0) return 1; + + var res = this.ucmp(num); + if (this.negative !== 0) return -res | 0; + return res; + }; + + // Unsigned comparison + BN.prototype.ucmp = function ucmp (num) { + // At this point both numbers have the same sign + if (this.length > num.length) return 1; + if (this.length < num.length) return -1; + + var res = 0; + for (var i = this.length - 1; i >= 0; i--) { + var a = this.words[i] | 0; + var b = num.words[i] | 0; + + if (a === b) continue; + if (a < b) { + res = -1; + } else if (a > b) { + res = 1; + } + break; + } + return res; + }; + + BN.prototype.gtn = function gtn (num) { + return this.cmpn(num) === 1; + }; + + BN.prototype.gt = function gt (num) { + return this.cmp(num) === 1; + }; + + BN.prototype.gten = function gten (num) { + return this.cmpn(num) >= 0; + }; + + BN.prototype.gte = function gte (num) { + return this.cmp(num) >= 0; + }; + + BN.prototype.ltn = function ltn (num) { + return this.cmpn(num) === -1; + }; + + BN.prototype.lt = function lt (num) { + return this.cmp(num) === -1; + }; + + BN.prototype.lten = function lten (num) { + return this.cmpn(num) <= 0; + }; + + BN.prototype.lte = function lte (num) { + return this.cmp(num) <= 0; + }; + + BN.prototype.eqn = function eqn (num) { + return this.cmpn(num) === 0; + }; + + BN.prototype.eq = function eq (num) { + return this.cmp(num) === 0; + }; + + // + // A reduce context, could be using montgomery or something better, depending + // on the `m` itself. + // + BN.red = function red (num) { + return new Red(num); + }; + + BN.prototype.toRed = function toRed (ctx) { + assert(!this.red, 'Already a number in reduction context'); + assert(this.negative === 0, 'red works only with positives'); + return ctx.convertTo(this)._forceRed(ctx); + }; + + BN.prototype.fromRed = function fromRed () { + assert(this.red, 'fromRed works only with numbers in reduction context'); + return this.red.convertFrom(this); + }; + + BN.prototype._forceRed = function _forceRed (ctx) { + this.red = ctx; + return this; + }; + + BN.prototype.forceRed = function forceRed (ctx) { + assert(!this.red, 'Already a number in reduction context'); + return this._forceRed(ctx); + }; + + BN.prototype.redAdd = function redAdd (num) { + assert(this.red, 'redAdd works only with red numbers'); + return this.red.add(this, num); + }; + + BN.prototype.redIAdd = function redIAdd (num) { + assert(this.red, 'redIAdd works only with red numbers'); + return this.red.iadd(this, num); + }; + + BN.prototype.redSub = function redSub (num) { + assert(this.red, 'redSub works only with red numbers'); + return this.red.sub(this, num); + }; + + BN.prototype.redISub = function redISub (num) { + assert(this.red, 'redISub works only with red numbers'); + return this.red.isub(this, num); + }; + + BN.prototype.redShl = function redShl (num) { + assert(this.red, 'redShl works only with red numbers'); + return this.red.shl(this, num); + }; + + BN.prototype.redMul = function redMul (num) { + assert(this.red, 'redMul works only with red numbers'); + this.red._verify2(this, num); + return this.red.mul(this, num); + }; + + BN.prototype.redIMul = function redIMul (num) { + assert(this.red, 'redMul works only with red numbers'); + this.red._verify2(this, num); + return this.red.imul(this, num); + }; + + BN.prototype.redSqr = function redSqr () { + assert(this.red, 'redSqr works only with red numbers'); + this.red._verify1(this); + return this.red.sqr(this); + }; + + BN.prototype.redISqr = function redISqr () { + assert(this.red, 'redISqr works only with red numbers'); + this.red._verify1(this); + return this.red.isqr(this); + }; + + // Square root over p + BN.prototype.redSqrt = function redSqrt () { + assert(this.red, 'redSqrt works only with red numbers'); + this.red._verify1(this); + return this.red.sqrt(this); + }; + + BN.prototype.redInvm = function redInvm () { + assert(this.red, 'redInvm works only with red numbers'); + this.red._verify1(this); + return this.red.invm(this); + }; + + // Return negative clone of `this` % `red modulo` + BN.prototype.redNeg = function redNeg () { + assert(this.red, 'redNeg works only with red numbers'); + this.red._verify1(this); + return this.red.neg(this); + }; + + BN.prototype.redPow = function redPow (num) { + assert(this.red && !num.red, 'redPow(normalNum)'); + this.red._verify1(this); + return this.red.pow(this, num); + }; + + // Prime numbers with efficient reduction + var primes = { + k256: null, + p224: null, + p192: null, + p25519: null + }; + + // Pseudo-Mersenne prime + function MPrime (name, p) { + // P = 2 ^ N - K + this.name = name; + this.p = new BN(p, 16); + this.n = this.p.bitLength(); + this.k = new BN(1).iushln(this.n).isub(this.p); + + this.tmp = this._tmp(); + } + + MPrime.prototype._tmp = function _tmp () { + var tmp = new BN(null); + tmp.words = new Array(Math.ceil(this.n / 13)); + return tmp; + }; + + MPrime.prototype.ireduce = function ireduce (num) { + // Assumes that `num` is less than `P^2` + // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P) + var r = num; + var rlen; + + do { + this.split(r, this.tmp); + r = this.imulK(r); + r = r.iadd(this.tmp); + rlen = r.bitLength(); + } while (rlen > this.n); + + var cmp = rlen < this.n ? -1 : r.ucmp(this.p); + if (cmp === 0) { + r.words[0] = 0; + r.length = 1; + } else if (cmp > 0) { + r.isub(this.p); + } else { + if (r.strip !== undefined) { + // r is BN v4 instance + r.strip(); + } else { + // r is BN v5 instance + r._strip(); + } + } + + return r; + }; + + MPrime.prototype.split = function split (input, out) { + input.iushrn(this.n, 0, out); + }; + + MPrime.prototype.imulK = function imulK (num) { + return num.imul(this.k); + }; + + function K256 () { + MPrime.call( + this, + 'k256', + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f'); + } + inherits(K256, MPrime); + + K256.prototype.split = function split (input, output) { + // 256 = 9 * 26 + 22 + var mask = 0x3fffff; + + var outLen = Math.min(input.length, 9); + for (var i = 0; i < outLen; i++) { + output.words[i] = input.words[i]; + } + output.length = outLen; + + if (input.length <= 9) { + input.words[0] = 0; + input.length = 1; + return; + } + + // Shift by 9 limbs + var prev = input.words[9]; + output.words[output.length++] = prev & mask; + + for (i = 10; i < input.length; i++) { + var next = input.words[i] | 0; + input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22); + prev = next; + } + prev >>>= 22; + input.words[i - 10] = prev; + if (prev === 0 && input.length > 10) { + input.length -= 10; + } else { + input.length -= 9; + } + }; + + K256.prototype.imulK = function imulK (num) { + // K = 0x1000003d1 = [ 0x40, 0x3d1 ] + num.words[num.length] = 0; + num.words[num.length + 1] = 0; + num.length += 2; + + // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390 + var lo = 0; + for (var i = 0; i < num.length; i++) { + var w = num.words[i] | 0; + lo += w * 0x3d1; + num.words[i] = lo & 0x3ffffff; + lo = w * 0x40 + ((lo / 0x4000000) | 0); + } + + // Fast length reduction + if (num.words[num.length - 1] === 0) { + num.length--; + if (num.words[num.length - 1] === 0) { + num.length--; + } + } + return num; + }; + + function P224 () { + MPrime.call( + this, + 'p224', + 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001'); + } + inherits(P224, MPrime); + + function P192 () { + MPrime.call( + this, + 'p192', + 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff'); + } + inherits(P192, MPrime); + + function P25519 () { + // 2 ^ 255 - 19 + MPrime.call( + this, + '25519', + '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed'); + } + inherits(P25519, MPrime); + + P25519.prototype.imulK = function imulK (num) { + // K = 0x13 + var carry = 0; + for (var i = 0; i < num.length; i++) { + var hi = (num.words[i] | 0) * 0x13 + carry; + var lo = hi & 0x3ffffff; + hi >>>= 26; + + num.words[i] = lo; + carry = hi; + } + if (carry !== 0) { + num.words[num.length++] = carry; + } + return num; + }; + + // Exported mostly for testing purposes, use plain name instead + BN._prime = function prime (name) { + // Cached version of prime + if (primes[name]) return primes[name]; + + var prime; + if (name === 'k256') { + prime = new K256(); + } else if (name === 'p224') { + prime = new P224(); + } else if (name === 'p192') { + prime = new P192(); + } else if (name === 'p25519') { + prime = new P25519(); + } else { + throw new Error('Unknown prime ' + name); + } + primes[name] = prime; + + return prime; + }; + + // + // Base reduction engine + // + function Red (m) { + if (typeof m === 'string') { + var prime = BN._prime(m); + this.m = prime.p; + this.prime = prime; + } else { + assert(m.gtn(1), 'modulus must be greater than 1'); + this.m = m; + this.prime = null; + } + } + + Red.prototype._verify1 = function _verify1 (a) { + assert(a.negative === 0, 'red works only with positives'); + assert(a.red, 'red works only with red numbers'); + }; + + Red.prototype._verify2 = function _verify2 (a, b) { + assert((a.negative | b.negative) === 0, 'red works only with positives'); + assert(a.red && a.red === b.red, + 'red works only with red numbers'); + }; + + Red.prototype.imod = function imod (a) { + if (this.prime) return this.prime.ireduce(a)._forceRed(this); + return a.umod(this.m)._forceRed(this); + }; + + Red.prototype.neg = function neg (a) { + if (a.isZero()) { + return a.clone(); + } + + return this.m.sub(a)._forceRed(this); + }; + + Red.prototype.add = function add (a, b) { + this._verify2(a, b); + + var res = a.add(b); + if (res.cmp(this.m) >= 0) { + res.isub(this.m); + } + return res._forceRed(this); + }; + + Red.prototype.iadd = function iadd (a, b) { + this._verify2(a, b); + + var res = a.iadd(b); + if (res.cmp(this.m) >= 0) { + res.isub(this.m); + } + return res; + }; + + Red.prototype.sub = function sub (a, b) { + this._verify2(a, b); + + var res = a.sub(b); + if (res.cmpn(0) < 0) { + res.iadd(this.m); + } + return res._forceRed(this); + }; + + Red.prototype.isub = function isub (a, b) { + this._verify2(a, b); + + var res = a.isub(b); + if (res.cmpn(0) < 0) { + res.iadd(this.m); + } + return res; + }; + + Red.prototype.shl = function shl (a, num) { + this._verify1(a); + return this.imod(a.ushln(num)); + }; + + Red.prototype.imul = function imul (a, b) { + this._verify2(a, b); + return this.imod(a.imul(b)); + }; + + Red.prototype.mul = function mul (a, b) { + this._verify2(a, b); + return this.imod(a.mul(b)); + }; + + Red.prototype.isqr = function isqr (a) { + return this.imul(a, a.clone()); + }; + + Red.prototype.sqr = function sqr (a) { + return this.mul(a, a); + }; + + Red.prototype.sqrt = function sqrt (a) { + if (a.isZero()) return a.clone(); + + var mod3 = this.m.andln(3); + assert(mod3 % 2 === 1); + + // Fast case + if (mod3 === 3) { + var pow = this.m.add(new BN(1)).iushrn(2); + return this.pow(a, pow); + } + + // Tonelli-Shanks algorithm (Totally unoptimized and slow) + // + // Find Q and S, that Q * 2 ^ S = (P - 1) + var q = this.m.subn(1); + var s = 0; + while (!q.isZero() && q.andln(1) === 0) { + s++; + q.iushrn(1); + } + assert(!q.isZero()); + + var one = new BN(1).toRed(this); + var nOne = one.redNeg(); + + // Find quadratic non-residue + // NOTE: Max is such because of generalized Riemann hypothesis. + var lpow = this.m.subn(1).iushrn(1); + var z = this.m.bitLength(); + z = new BN(2 * z * z).toRed(this); + + while (this.pow(z, lpow).cmp(nOne) !== 0) { + z.redIAdd(nOne); + } + + var c = this.pow(z, q); + var r = this.pow(a, q.addn(1).iushrn(1)); + var t = this.pow(a, q); + var m = s; + while (t.cmp(one) !== 0) { + var tmp = t; + for (var i = 0; tmp.cmp(one) !== 0; i++) { + tmp = tmp.redSqr(); + } + assert(i < m); + var b = this.pow(c, new BN(1).iushln(m - i - 1)); + + r = r.redMul(b); + c = b.redSqr(); + t = t.redMul(c); + m = i; + } + + return r; + }; + + Red.prototype.invm = function invm (a) { + var inv = a._invmp(this.m); + if (inv.negative !== 0) { + inv.negative = 0; + return this.imod(inv).redNeg(); + } else { + return this.imod(inv); + } + }; + + Red.prototype.pow = function pow (a, num) { + if (num.isZero()) return new BN(1).toRed(this); + if (num.cmpn(1) === 0) return a.clone(); + + var windowSize = 4; + var wnd = new Array(1 << windowSize); + wnd[0] = new BN(1).toRed(this); + wnd[1] = a; + for (var i = 2; i < wnd.length; i++) { + wnd[i] = this.mul(wnd[i - 1], a); + } + + var res = wnd[0]; + var current = 0; + var currentLen = 0; + var start = num.bitLength() % 26; + if (start === 0) { + start = 26; + } + + for (i = num.length - 1; i >= 0; i--) { + var word = num.words[i]; + for (var j = start - 1; j >= 0; j--) { + var bit = (word >> j) & 1; + if (res !== wnd[0]) { + res = this.sqr(res); + } + + if (bit === 0 && current === 0) { + currentLen = 0; + continue; + } + + current <<= 1; + current |= bit; + currentLen++; + if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue; + + res = this.mul(res, wnd[current]); + currentLen = 0; + current = 0; + } + start = 26; + } + + return res; + }; + + Red.prototype.convertTo = function convertTo (num) { + var r = num.umod(this.m); + + return r === num ? r.clone() : r; + }; + + Red.prototype.convertFrom = function convertFrom (num) { + var res = num.clone(); + res.red = null; + return res; + }; + + // + // Montgomery method engine + // + + BN.mont = function mont (num) { + return new Mont(num); + }; + + function Mont (m) { + Red.call(this, m); + + this.shift = this.m.bitLength(); + if (this.shift % 26 !== 0) { + this.shift += 26 - (this.shift % 26); + } + + this.r = new BN(1).iushln(this.shift); + this.r2 = this.imod(this.r.sqr()); + this.rinv = this.r._invmp(this.m); + + this.minv = this.rinv.mul(this.r).isubn(1).div(this.m); + this.minv = this.minv.umod(this.r); + this.minv = this.r.sub(this.minv); + } + inherits(Mont, Red); + + Mont.prototype.convertTo = function convertTo (num) { + return this.imod(num.ushln(this.shift)); + }; + + Mont.prototype.convertFrom = function convertFrom (num) { + var r = this.imod(num.mul(this.rinv)); + r.red = null; + return r; + }; + + Mont.prototype.imul = function imul (a, b) { + if (a.isZero() || b.isZero()) { + a.words[0] = 0; + a.length = 1; + return a; + } + + var t = a.imul(b); + var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); + var u = t.isub(c).iushrn(this.shift); + var res = u; + + if (u.cmp(this.m) >= 0) { + res = u.isub(this.m); + } else if (u.cmpn(0) < 0) { + res = u.iadd(this.m); + } + + return res._forceRed(this); + }; + + Mont.prototype.mul = function mul (a, b) { + if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); + + var t = a.mul(b); + var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); + var u = t.isub(c).iushrn(this.shift); + var res = u; + if (u.cmp(this.m) >= 0) { + res = u.isub(this.m); + } else if (u.cmpn(0) < 0) { + res = u.iadd(this.m); + } + + return res._forceRed(this); + }; + + Mont.prototype.invm = function invm (a) { + // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R + var res = this.imod(a._invmp(this.m).mul(this.r2)); + return res._forceRed(this); + }; +})(typeof module === 'undefined' || module, this); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("y5YM")(module))) + +/***/ }), + +/***/ "uCaM": +/***/ (function(module, exports, __webpack_require__) { + +exports.pbkdf2 = __webpack_require__("yT9O") +exports.pbkdf2Sync = __webpack_require__("t+7X") + + +/***/ }), + +/***/ "uII7": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Galician [gl] +//! author : Juan G. Hurtado : https://github.com/juanghurtado + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var gl = moment.defineLocale('gl', { + months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'), + monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'), + monthsParseExact: true, + weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), + weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), + weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY H:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' + }, + calendar : { + sameDay : function () { + return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextDay : function () { + return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextWeek : function () { + return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + lastDay : function () { + return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; + }, + lastWeek : function () { + return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : function (str) { + if (str.indexOf('un') === 0) { + return 'n' + str; + } + return 'en ' + str; + }, + past : 'hai %s', + s : 'uns segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'unha hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un ano', + yy : '%d anos' + }, + dayOfMonthOrdinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return gl; + +}))); + + +/***/ }), + +/***/ "uOJK": +/***/ (function(module, exports, __webpack_require__) { + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +var stylesInDom = {}; + +var memoize = function (fn) { + var memo; + + return function () { + if (typeof memo === "undefined") memo = fn.apply(this, arguments); + return memo; + }; +}; + +var isOldIE = memoize(function () { + // Test for IE <= 9 as proposed by Browserhacks + // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 + // Tests for existence of standard globals is to allow style-loader + // to operate correctly into non-standard environments + // @see https://github.com/webpack-contrib/style-loader/issues/177 + return window && document && document.all && !window.atob; +}); + +var getElement = (function (fn) { + var memo = {}; + + return function(selector) { + if (typeof memo[selector] === "undefined") { + var styleTarget = fn.call(this, selector); + // Special case to return head of iframe instead of iframe itself + if (styleTarget instanceof window.HTMLIFrameElement) { + try { + // This will throw an exception if access to iframe is blocked + // due to cross-origin restrictions + styleTarget = styleTarget.contentDocument.head; + } catch(e) { + styleTarget = null; + } + } + memo[selector] = styleTarget; + } + return memo[selector] + }; +})(function (target) { + return document.querySelector(target) +}); + +var singleton = null; +var singletonCounter = 0; +var stylesInsertedAtTop = []; + +var fixUrls = __webpack_require__("udGk"); + +module.exports = function(list, options) { + if (typeof DEBUG !== "undefined" && DEBUG) { + if (typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment"); + } + + options = options || {}; + + options.attrs = typeof options.attrs === "object" ? options.attrs : {}; + + // Force single-tag solution on IE6-9, which has a hard limit on the # of <style> + // tags it will allow on a page + if (!options.singleton) options.singleton = isOldIE(); + + // By default, add <style> tags to the <head> element + if (!options.insertInto) options.insertInto = "head"; + + // By default, add <style> tags to the bottom of the target + if (!options.insertAt) options.insertAt = "bottom"; + + var styles = listToStyles(list, options); + + addStylesToDom(styles, options); + + return function update (newList) { + var mayRemove = []; + + for (var i = 0; i < styles.length; i++) { + var item = styles[i]; + var domStyle = stylesInDom[item.id]; + + domStyle.refs--; + mayRemove.push(domStyle); + } + + if(newList) { + var newStyles = listToStyles(newList, options); + addStylesToDom(newStyles, options); + } + + for (var i = 0; i < mayRemove.length; i++) { + var domStyle = mayRemove[i]; + + if(domStyle.refs === 0) { + for (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j](); + + delete stylesInDom[domStyle.id]; + } + } + }; +}; + +function addStylesToDom (styles, options) { + for (var i = 0; i < styles.length; i++) { + var item = styles[i]; + var domStyle = stylesInDom[item.id]; + + if(domStyle) { + domStyle.refs++; + + for(var j = 0; j < domStyle.parts.length; j++) { + domStyle.parts[j](item.parts[j]); + } + + for(; j < item.parts.length; j++) { + domStyle.parts.push(addStyle(item.parts[j], options)); + } + } else { + var parts = []; + + for(var j = 0; j < item.parts.length; j++) { + parts.push(addStyle(item.parts[j], options)); + } + + stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts}; + } + } +} + +function listToStyles (list, options) { + var styles = []; + var newStyles = {}; + + for (var i = 0; i < list.length; i++) { + var item = list[i]; + var id = options.base ? item[0] + options.base : item[0]; + var css = item[1]; + var media = item[2]; + var sourceMap = item[3]; + var part = {css: css, media: media, sourceMap: sourceMap}; + + if(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]}); + else newStyles[id].parts.push(part); + } + + return styles; +} + +function insertStyleElement (options, style) { + var target = getElement(options.insertInto) + + if (!target) { + throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid."); + } + + var lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1]; + + if (options.insertAt === "top") { + if (!lastStyleElementInsertedAtTop) { + target.insertBefore(style, target.firstChild); + } else if (lastStyleElementInsertedAtTop.nextSibling) { + target.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling); + } else { + target.appendChild(style); + } + stylesInsertedAtTop.push(style); + } else if (options.insertAt === "bottom") { + target.appendChild(style); + } else if (typeof options.insertAt === "object" && options.insertAt.before) { + var nextSibling = getElement(options.insertInto + " " + options.insertAt.before); + target.insertBefore(style, nextSibling); + } else { + throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n"); + } +} + +function removeStyleElement (style) { + if (style.parentNode === null) return false; + style.parentNode.removeChild(style); + + var idx = stylesInsertedAtTop.indexOf(style); + if(idx >= 0) { + stylesInsertedAtTop.splice(idx, 1); + } +} + +function createStyleElement (options) { + var style = document.createElement("style"); + + options.attrs.type = "text/css"; + + addAttrs(style, options.attrs); + insertStyleElement(options, style); + + return style; +} + +function createLinkElement (options) { + var link = document.createElement("link"); + + options.attrs.type = "text/css"; + options.attrs.rel = "stylesheet"; + + addAttrs(link, options.attrs); + insertStyleElement(options, link); + + return link; +} + +function addAttrs (el, attrs) { + Object.keys(attrs).forEach(function (key) { + el.setAttribute(key, attrs[key]); + }); +} + +function addStyle (obj, options) { + var style, update, remove, result; + + // If a transform function was defined, run it on the css + if (options.transform && obj.css) { + result = options.transform(obj.css); + + if (result) { + // If transform returns a value, use that instead of the original css. + // This allows running runtime transformations on the css. + obj.css = result; + } else { + // If the transform function returns a falsy value, don't add this css. + // This allows conditional loading of css + return function() { + // noop + }; + } + } + + if (options.singleton) { + var styleIndex = singletonCounter++; + + style = singleton || (singleton = createStyleElement(options)); + + update = applyToSingletonTag.bind(null, style, styleIndex, false); + remove = applyToSingletonTag.bind(null, style, styleIndex, true); + + } else if ( + obj.sourceMap && + typeof URL === "function" && + typeof URL.createObjectURL === "function" && + typeof URL.revokeObjectURL === "function" && + typeof Blob === "function" && + typeof btoa === "function" + ) { + style = createLinkElement(options); + update = updateLink.bind(null, style, options); + remove = function () { + removeStyleElement(style); + + if(style.href) URL.revokeObjectURL(style.href); + }; + } else { + style = createStyleElement(options); + update = applyToTag.bind(null, style); + remove = function () { + removeStyleElement(style); + }; + } + + update(obj); + + return function updateStyle (newObj) { + if (newObj) { + if ( + newObj.css === obj.css && + newObj.media === obj.media && + newObj.sourceMap === obj.sourceMap + ) { + return; + } + + update(obj = newObj); + } else { + remove(); + } + }; +} + +var replaceText = (function () { + var textStore = []; + + return function (index, replacement) { + textStore[index] = replacement; + + return textStore.filter(Boolean).join('\n'); + }; +})(); + +function applyToSingletonTag (style, index, remove, obj) { + var css = remove ? "" : obj.css; + + if (style.styleSheet) { + style.styleSheet.cssText = replaceText(index, css); + } else { + var cssNode = document.createTextNode(css); + var childNodes = style.childNodes; + + if (childNodes[index]) style.removeChild(childNodes[index]); + + if (childNodes.length) { + style.insertBefore(cssNode, childNodes[index]); + } else { + style.appendChild(cssNode); + } + } +} + +function applyToTag (style, obj) { + var css = obj.css; + var media = obj.media; + + if(media) { + style.setAttribute("media", media) + } + + if(style.styleSheet) { + style.styleSheet.cssText = css; + } else { + while(style.firstChild) { + style.removeChild(style.firstChild); + } + + style.appendChild(document.createTextNode(css)); + } +} + +function updateLink (link, options, obj) { + var css = obj.css; + var sourceMap = obj.sourceMap; + + /* + If convertToAbsoluteUrls isn't defined, but sourcemaps are enabled + and there is no publicPath defined then lets turn convertToAbsoluteUrls + on by default. Otherwise default to the convertToAbsoluteUrls option + directly + */ + var autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap; + + if (options.convertToAbsoluteUrls || autoFixUrls) { + css = fixUrls(css); + } + + if (sourceMap) { + // http://stackoverflow.com/a/26603875 + css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */"; + } + + var blob = new Blob([css], { type: "text/css" }); + + var oldSrc = link.href; + + link.href = URL.createObjectURL(blob); + + if(oldSrc) URL.revokeObjectURL(oldSrc); +} + + +/***/ }), + +/***/ "uWRE": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js +// Fedor, you are amazing. + + +var asn1 = __webpack_require__("3XBS") + +exports.certificate = __webpack_require__("Re/X") + +var RSAPrivateKey = asn1.define('RSAPrivateKey', function () { + this.seq().obj( + this.key('version').int(), + this.key('modulus').int(), + this.key('publicExponent').int(), + this.key('privateExponent').int(), + this.key('prime1').int(), + this.key('prime2').int(), + this.key('exponent1').int(), + this.key('exponent2').int(), + this.key('coefficient').int() + ) +}) +exports.RSAPrivateKey = RSAPrivateKey + +var RSAPublicKey = asn1.define('RSAPublicKey', function () { + this.seq().obj( + this.key('modulus').int(), + this.key('publicExponent').int() + ) +}) +exports.RSAPublicKey = RSAPublicKey + +var PublicKey = asn1.define('SubjectPublicKeyInfo', function () { + this.seq().obj( + this.key('algorithm').use(AlgorithmIdentifier), + this.key('subjectPublicKey').bitstr() + ) +}) +exports.PublicKey = PublicKey + +var AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () { + this.seq().obj( + this.key('algorithm').objid(), + this.key('none').null_().optional(), + this.key('curve').objid().optional(), + this.key('params').seq().obj( + this.key('p').int(), + this.key('q').int(), + this.key('g').int() + ).optional() + ) +}) + +var PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () { + this.seq().obj( + this.key('version').int(), + this.key('algorithm').use(AlgorithmIdentifier), + this.key('subjectPrivateKey').octstr() + ) +}) +exports.PrivateKey = PrivateKeyInfo +var EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () { + this.seq().obj( + this.key('algorithm').seq().obj( + this.key('id').objid(), + this.key('decrypt').seq().obj( + this.key('kde').seq().obj( + this.key('id').objid(), + this.key('kdeparams').seq().obj( + this.key('salt').octstr(), + this.key('iters').int() + ) + ), + this.key('cipher').seq().obj( + this.key('algo').objid(), + this.key('iv').octstr() + ) + ) + ), + this.key('subjectPrivateKey').octstr() + ) +}) + +exports.EncryptedPrivateKey = EncryptedPrivateKeyInfo + +var DSAPrivateKey = asn1.define('DSAPrivateKey', function () { + this.seq().obj( + this.key('version').int(), + this.key('p').int(), + this.key('q').int(), + this.key('g').int(), + this.key('pub_key').int(), + this.key('priv_key').int() + ) +}) +exports.DSAPrivateKey = DSAPrivateKey + +exports.DSAparam = asn1.define('DSAparam', function () { + this.int() +}) + +var ECPrivateKey = asn1.define('ECPrivateKey', function () { + this.seq().obj( + this.key('version').int(), + this.key('privateKey').octstr(), + this.key('parameters').optional().explicit(0).use(ECParameters), + this.key('publicKey').optional().explicit(1).bitstr() + ) +}) +exports.ECPrivateKey = ECPrivateKey + +var ECParameters = asn1.define('ECParameters', function () { + this.choice({ + namedCurve: this.objid() + }) +}) + +exports.signature = asn1.define('signature', function () { + this.seq().obj( + this.key('r').int(), + this.key('s').int() + ) +}) + + +/***/ }), + +/***/ "udGk": +/***/ (function(module, exports) { + + +/** + * When source maps are enabled, `style-loader` uses a link element with a data-uri to + * embed the css on the page. This breaks all relative urls because now they are relative to a + * bundle instead of the current page. + * + * One solution is to only use full urls, but that may be impossible. + * + * Instead, this function "fixes" the relative urls to be absolute according to the current page location. + * + * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command. + * + */ + +module.exports = function (css) { + // get current location + var location = typeof window !== "undefined" && window.location; + + if (!location) { + throw new Error("fixUrls requires window.location"); + } + + // blank or null? + if (!css || typeof css !== "string") { + return css; + } + + var baseUrl = location.protocol + "//" + location.host; + var currentDir = baseUrl + location.pathname.replace(/\/[^\/]*$/, "/"); + + // convert each url(...) + /* + This regular expression is just a way to recursively match brackets within + a string. + + /url\s*\( = Match on the word "url" with any whitespace after it and then a parens + ( = Start a capturing group + (?: = Start a non-capturing group + [^)(] = Match anything that isn't a parentheses + | = OR + \( = Match a start parentheses + (?: = Start another non-capturing groups + [^)(]+ = Match anything that isn't a parentheses + | = OR + \( = Match a start parentheses + [^)(]* = Match anything that isn't a parentheses + \) = Match a end parentheses + ) = End Group + *\) = Match anything and then a close parens + ) = Close non-capturing group + * = Match anything + ) = Close capturing group + \) = Match a close parens + + /gi = Get all matches, not the first. Be case insensitive. + */ + var fixedCss = css.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi, function(fullMatch, origUrl) { + // strip quotes (if they exist) + var unquotedOrigUrl = origUrl + .trim() + .replace(/^"(.*)"$/, function(o, $1){ return $1; }) + .replace(/^'(.*)'$/, function(o, $1){ return $1; }); + + // already a full url? no change + if (/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/)/i.test(unquotedOrigUrl)) { + return fullMatch; + } + + // convert the url to a full url + var newUrl; + + if (unquotedOrigUrl.indexOf("//") === 0) { + //TODO: should we add protocol? + newUrl = unquotedOrigUrl; + } else if (unquotedOrigUrl.indexOf("/") === 0) { + // path should be relative to the base url + newUrl = baseUrl + unquotedOrigUrl; // already starts with '/' + } else { + // path should be relative to current directory + newUrl = currentDir + unquotedOrigUrl.replace(/^\.\//, ""); // Strip leading './' + } + + // send back the fixed url(...) + return "url(" + JSON.stringify(newUrl) + ")"; + }); + + // send back the fixed css + return fixedCss; +}; + + +/***/ }), + +/***/ "vq6N": +/***/ (function(module, exports, __webpack_require__) { + +var parseKeys = __webpack_require__("UjI3") +var mgf = __webpack_require__("IkND") +var xor = __webpack_require__("PeeF") +var BN = __webpack_require__("u/Wk") +var crt = __webpack_require__("2ZN/") +var createHash = __webpack_require__("kFjB") +var withPublic = __webpack_require__("AKP/") +var Buffer = __webpack_require__("DLTi").Buffer + +module.exports = function privateDecrypt (privateKey, enc, reverse) { + var padding + if (privateKey.padding) { + padding = privateKey.padding + } else if (reverse) { + padding = 1 + } else { + padding = 4 + } + + var key = parseKeys(privateKey) + var k = key.modulus.byteLength() + if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) { + throw new Error('decryption error') + } + var msg + if (reverse) { + msg = withPublic(new BN(enc), key) + } else { + msg = crt(enc, key) + } + var zBuffer = Buffer.alloc(k - msg.length) + msg = Buffer.concat([zBuffer, msg], k) + if (padding === 4) { + return oaep(key, msg) + } else if (padding === 1) { + return pkcs1(key, msg, reverse) + } else if (padding === 3) { + return msg + } else { + throw new Error('unknown padding') + } +} + +function oaep (key, msg) { + var k = key.modulus.byteLength() + var iHash = createHash('sha1').update(Buffer.alloc(0)).digest() + var hLen = iHash.length + if (msg[0] !== 0) { + throw new Error('decryption error') + } + var maskedSeed = msg.slice(1, hLen + 1) + var maskedDb = msg.slice(hLen + 1) + var seed = xor(maskedSeed, mgf(maskedDb, hLen)) + var db = xor(maskedDb, mgf(seed, k - hLen - 1)) + if (compare(iHash, db.slice(0, hLen))) { + throw new Error('decryption error') + } + var i = hLen + while (db[i] === 0) { + i++ + } + if (db[i++] !== 1) { + throw new Error('decryption error') + } + return db.slice(i) +} + +function pkcs1 (key, msg, reverse) { + var p1 = msg.slice(0, 2) + var i = 2 + var status = 0 + while (msg[i++] !== 0) { + if (i >= msg.length) { + status++ + break + } + } + var ps = msg.slice(2, i - 1) + + if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) { + status++ + } + if (ps.length < 8) { + status++ + } + if (status) { + throw new Error('decryption error') + } + return msg.slice(i) +} +function compare (a, b) { + a = Buffer.from(a) + b = Buffer.from(b) + var dif = 0 + var len = a.length + if (a.length !== b.length) { + dif++ + len = Math.min(a.length, b.length) + } + var i = -1 + while (++i < len) { + dif += (a[i] ^ b[i]) + } + return dif +} + + +/***/ }), + +/***/ "w4dA": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var assert = __webpack_require__("tSXQ"); +var inherits = __webpack_require__("mwrz"); + +var proto = {}; + +function CBCState(iv) { + assert.equal(iv.length, 8, 'Invalid IV length'); + + this.iv = new Array(8); + for (var i = 0; i < this.iv.length; i++) + this.iv[i] = iv[i]; +} + +function instantiate(Base) { + function CBC(options) { + Base.call(this, options); + this._cbcInit(); + } + inherits(CBC, Base); + + var keys = Object.keys(proto); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + CBC.prototype[key] = proto[key]; + } + + CBC.create = function create(options) { + return new CBC(options); + }; + + return CBC; +} + +exports.instantiate = instantiate; + +proto._cbcInit = function _cbcInit() { + var state = new CBCState(this.options.iv); + this._cbcState = state; +}; + +proto._update = function _update(inp, inOff, out, outOff) { + var state = this._cbcState; + var superProto = this.constructor.super_.prototype; + + var iv = state.iv; + if (this.type === 'encrypt') { + for (var i = 0; i < this.blockSize; i++) + iv[i] ^= inp[inOff + i]; + + superProto._update.call(this, iv, 0, out, outOff); + + for (var i = 0; i < this.blockSize; i++) + iv[i] = out[outOff + i]; + } else { + superProto._update.call(this, inp, inOff, out, outOff); + + for (var i = 0; i < this.blockSize; i++) + out[outOff + i] ^= iv[i]; + + for (var i = 0; i < this.blockSize; i++) + iv[i] = inp[inOff + i]; + } +}; + + +/***/ }), + +/***/ "wjIV": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) { +/** + * Module exports. + */ + +module.exports = deprecate; + +/** + * Mark that a method should not be used. + * Returns a modified function which warns once by default. + * + * If `localStorage.noDeprecation = true` is set, then it is a no-op. + * + * If `localStorage.throwDeprecation = true` is set, then deprecated functions + * will throw an Error when invoked. + * + * If `localStorage.traceDeprecation = true` is set, then deprecated functions + * will invoke `console.trace()` instead of `console.error()`. + * + * @param {Function} fn - the function to deprecate + * @param {String} msg - the string to print to the console when `fn` is invoked + * @returns {Function} a new "deprecated" version of `fn` + * @api public + */ + +function deprecate (fn, msg) { + if (config('noDeprecation')) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (config('throwDeprecation')) { + throw new Error(msg); + } else if (config('traceDeprecation')) { + console.trace(msg); + } else { + console.warn(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +} + +/** + * Checks `localStorage` for boolean values for the given `name`. + * + * @param {String} name + * @returns {Boolean} + * @api private + */ + +function config (name) { + // accessing global.localStorage can trigger a DOMException in sandboxed iframes + try { + if (!global.localStorage) return false; + } catch (_) { + return false; + } + var val = global.localStorage[name]; + if (null == val) return false; + return String(val).toLowerCase() === 'true'; +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("mFPK"))) + +/***/ }), + +/***/ "xJId": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global, process) {var defaultEncoding +/* istanbul ignore next */ +if (global.process && global.process.browser) { + defaultEncoding = 'utf-8' +} else if (global.process && global.process.version) { + var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10) + + defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary' +} else { + defaultEncoding = 'utf-8' +} +module.exports = defaultEncoding + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("mFPK"), __webpack_require__("V0EG"))) + +/***/ }), + +/***/ "xL1n": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Chinese (China) [zh-cn] +//! author : suupic : https://github.com/suupic +//! author : Zeno Zeng : https://github.com/zenozeng + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var zhCn = moment.defineLocale('zh-cn', { + months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'), + weekdaysMin : '日_一_二_三_四_五_六'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY年MMMD日', + LL : 'YYYY年MMMD日', + LLL : 'YYYY年MMMD日Ah点mm分', + LLLL : 'YYYY年MMMD日ddddAh点mm分', + l : 'YYYY年MMMD日', + ll : 'YYYY年MMMD日', + lll : 'YYYY年MMMD日 HH:mm', + llll : 'YYYY年MMMD日dddd HH:mm' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || + meridiem === '上午') { + return hour; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } else { + // '中午' + return hour >= 11 ? hour : hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/, + ordinal : function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + case 'M': + return number + '月'; + case 'w': + case 'W': + return number + '周'; + default: + return number; + } + }, + relativeTime : { + future : '%s内', + past : '%s前', + s : '几秒', + m : '1 分钟', + mm : '%d 分钟', + h : '1 小时', + hh : '%d 小时', + d : '1 天', + dd : '%d 天', + M : '1 个月', + MM : '%d 个月', + y : '1 年', + yy : '%d 年' + }, + week : { + // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return zhCn; + +}))); + + +/***/ }), + +/***/ "xXUF": +/***/ (function(module, exports, __webpack_require__) { + +var bn = __webpack_require__("u/Wk"); +var brorand = __webpack_require__("fCcy"); + +function MillerRabin(rand) { + this.rand = rand || new brorand.Rand(); +} +module.exports = MillerRabin; + +MillerRabin.create = function create(rand) { + return new MillerRabin(rand); +}; + +MillerRabin.prototype._randbelow = function _randbelow(n) { + var len = n.bitLength(); + var min_bytes = Math.ceil(len / 8); + + // Generage random bytes until a number less than n is found. + // This ensures that 0..n-1 have an equal probability of being selected. + do + var a = new bn(this.rand.generate(min_bytes)); + while (a.cmp(n) >= 0); + + return a; +}; + +MillerRabin.prototype._randrange = function _randrange(start, stop) { + // Generate a random number greater than or equal to start and less than stop. + var size = stop.sub(start); + return start.add(this._randbelow(size)); +}; + +MillerRabin.prototype.test = function test(n, k, cb) { + var len = n.bitLength(); + var red = bn.mont(n); + var rone = new bn(1).toRed(red); + + if (!k) + k = Math.max(1, (len / 48) | 0); + + // Find d and s, (n - 1) = (2 ^ s) * d; + var n1 = n.subn(1); + for (var s = 0; !n1.testn(s); s++) {} + var d = n.shrn(s); + + var rn1 = n1.toRed(red); + + var prime = true; + for (; k > 0; k--) { + var a = this._randrange(new bn(2), n1); + if (cb) + cb(a); + + var x = a.toRed(red).redPow(d); + if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) + continue; + + for (var i = 1; i < s; i++) { + x = x.redSqr(); + + if (x.cmp(rone) === 0) + return false; + if (x.cmp(rn1) === 0) + break; + } + + if (i === s) + return false; + } + + return prime; +}; + +MillerRabin.prototype.getDivisor = function getDivisor(n, k) { + var len = n.bitLength(); + var red = bn.mont(n); + var rone = new bn(1).toRed(red); + + if (!k) + k = Math.max(1, (len / 48) | 0); + + // Find d and s, (n - 1) = (2 ^ s) * d; + var n1 = n.subn(1); + for (var s = 0; !n1.testn(s); s++) {} + var d = n.shrn(s); + + var rn1 = n1.toRed(red); + + for (; k > 0; k--) { + var a = this._randrange(new bn(2), n1); + + var g = n.gcd(a); + if (g.cmpn(1) !== 0) + return g; + + var x = a.toRed(red).redPow(d); + if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) + continue; + + for (var i = 1; i < s; i++) { + x = x.redSqr(); + + if (x.cmp(rone) === 0) + return x.fromRed().subn(1).gcd(n); + if (x.cmp(rn1) === 0) + break; + } + + if (i === s) { + x = x.redSqr(); + return x.fromRed().subn(1).gcd(n); + } + } + + return false; +}; + + +/***/ }), + +/***/ "y+MR": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + +module.exports = Readable; +/*<replacement>*/ + +var Duplex; +/*</replacement>*/ + +Readable.ReadableState = ReadableState; +/*<replacement>*/ + +var EE = __webpack_require__("cGIK").EventEmitter; + +var EElistenerCount = function EElistenerCount(emitter, type) { + return emitter.listeners(type).length; +}; +/*</replacement>*/ + +/*<replacement>*/ + + +var Stream = __webpack_require__("IwBp"); +/*</replacement>*/ + + +var Buffer = __webpack_require__("NfRg").Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} +/*<replacement>*/ + + +var debugUtil = __webpack_require__(1); + +var debug; + +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function debug() {}; +} +/*</replacement>*/ + + +var BufferList = __webpack_require__("U8Ka"); + +var destroyImpl = __webpack_require__("Lxgc"); + +var _require = __webpack_require__("zBhI"), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = __webpack_require__("DzCi").codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. + + +var StringDecoder; +var createReadableStreamAsyncIterator; +var from; + +__webpack_require__("mwrz")(Readable, Stream); + +var errorOrDestroy = destroyImpl.errorOrDestroy; +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream, isDuplex) { + Duplex = Duplex || __webpack_require__("4zZu"); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + + this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + + this.sync = true; // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + this.paused = true; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') + + this.autoDestroy = !!options.autoDestroy; // has it been destroyed + + this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s + + this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled + + this.readingMore = false; + this.decoder = null; + this.encoding = null; + + if (options.encoding) { + if (!StringDecoder) StringDecoder = __webpack_require__("boXJ").StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || __webpack_require__("4zZu"); + if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); // legacy + + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined) { + return false; + } + + return this._readableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + } +}); +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; + +Readable.prototype._destroy = function (err, cb) { + cb(err); +}; // Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. + + +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; // Unshift should *always* be something directly out of read() + + +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + debug('readableAddChunk', chunk); + var state = stream._readableState; + + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + + if (er) { + errorOrDestroy(stream, er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); + } else if (state.ended) { + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state.destroyed) { + return false; + } else { + state.reading = false; + + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + maybeReadMore(stream, state); + } + } // We can push more data if we are below the highWaterMark. + // Also, if we have no data yet, we can stand some more bytes. + // This is to work around cases where hwm=0, such as the repl. + + + return !state.ended && (state.length < state.highWaterMark || state.length === 0); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + state.awaitDrain = 0; + stream.emit('data', chunk); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + if (state.needReadable) emitReadable(stream); + } + + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); + } + + return er; +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; // backwards compatibility. + + +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = __webpack_require__("boXJ").StringDecoder; + var decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 + + this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: + + var p = this._readableState.buffer.head; + var content = ''; + + while (p !== null) { + content += decoder.write(p.data); + p = p.next; + } + + this._readableState.buffer.clear(); + + if (content !== '') this._readableState.buffer.push(content); + this._readableState.length = content.length; + return this; +}; // Don't raise the hwm > 1GB + + +var MAX_HWM = 0x40000000; + +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + + return n; +} // This function is designed to be inlinable, so please take care when making +// changes to the function body. + + +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } // If we're asking for more than the current hwm, then raise the hwm. + + + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; // Don't have enough + + if (!state.ended) { + state.needReadable = true; + return 0; + } + + return state.length; +} // you can override either this method, or the async _read(n) below. + + +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + + if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. + + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + // if we need a readable event, then we need to do some reading. + + + var doRead = state.needReadable; + debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some + + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + + + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; // if the length is currently zero, then we *need* a readable event. + + if (state.length === 0) state.needReadable = true; // call internal read method + + this._read(state.highWaterMark); + + state.sync = false; // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = state.length <= state.highWaterMark; + n = 0; + } else { + state.length -= n; + state.awaitDrain = 0; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. + + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + return ret; +}; + +function onEofChunk(stream, state) { + debug('onEofChunk'); + if (state.ended) return; + + if (state.decoder) { + var chunk = state.decoder.end(); + + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + + state.ended = true; + + if (state.sync) { + // if we are sync, wait until next tick to emit the data. + // Otherwise we risk emitting data in the flow() + // the readable code triggers during a read() call + emitReadable(stream); + } else { + // emit 'readable' now to make sure it gets picked up. + state.needReadable = false; + + if (!state.emittedReadable) { + state.emittedReadable = true; + emitReadable_(stream); + } + } +} // Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. + + +function emitReadable(stream) { + var state = stream._readableState; + debug('emitReadable', state.needReadable, state.emittedReadable); + state.needReadable = false; + + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + process.nextTick(emitReadable_, stream); + } +} + +function emitReadable_(stream) { + var state = stream._readableState; + debug('emitReadable_', state.destroyed, state.length, state.ended); + + if (!state.destroyed && (state.length || state.ended)) { + stream.emit('readable'); + state.emittedReadable = false; + } // The stream needs another readable event if + // 1. It is not flowing, as the flow mechanism will take + // care of it. + // 2. It is not ended. + // 3. It is below the highWaterMark, so we can schedule + // another readable later. + + + state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; + flow(stream); +} // at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. + + +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + // Attempt to read more data if we should. + // + // The conditions for reading more data are (one of): + // - Not enough data buffered (state.length < state.highWaterMark). The loop + // is responsible for filling the buffer with enough data if such data + // is available. If highWaterMark is 0 and we are not in the flowing mode + // we should _not_ attempt to buffer any extra data. We'll get more data + // when the stream consumer calls read() instead. + // - No data in the buffer, and the stream is in flowing mode. In this mode + // the loop below is responsible for ensuring read() is called. Failing to + // call read here would abort the flow and there's no other mechanism for + // continuing the flow if the stream consumer has just subscribed to the + // 'data' event. + // + // In addition to the above conditions to keep reading data, the following + // conditions prevent the data from being read: + // - The stream has ended (state.ended). + // - There is already a pending 'read' operation (state.reading). This is a + // case where the the stream has called the implementation defined _read() + // method, but they are processing the call asynchronously and have _not_ + // called push() with new data. In this case we skip performing more + // read()s. The execution ends in this method again after the _read() ends + // up calling push() with more data. + while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { + var len = state.length; + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) // didn't get any data, stop spinning. + break; + } + + state.readingMore = false; +} // abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. + + +Readable.prototype._read = function (n) { + errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + + case 1: + state.pipes = [state.pipes, dest]; + break; + + default: + state.pipes.push(dest); + break; + } + + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); + dest.on('unpipe', onunpipe); + + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + + + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + var cleanedUp = false; + + function cleanup() { + debug('cleanup'); // cleanup event handlers once the pipe is broken + + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + cleanedUp = true; // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + src.on('data', ondata); + + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + debug('dest.write', ret); + + if (ret === false) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + } + + src.pause(); + } + } // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + + + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); + } // Make sure our error handler is attached before userland ones. + + + prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. + + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + + dest.once('close', onclose); + + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } // tell the dest that it's being piped to + + + dest.emit('pipe', src); // start the flow if it hasn't been started already. + + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function pipeOnDrainFunctionResult() { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { + hasUnpiped: false + }; // if we're not piping anywhere, then do nothing. + + if (state.pipesCount === 0) return this; // just one destination. most common case. + + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + if (!dest) dest = state.pipes; // got a match. + + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } // slow case. multiple pipe destinations. + + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { + hasUnpiped: false + }); + } + + return this; + } // try to find the right one. + + + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + dest.emit('unpipe', this, unpipeInfo); + return this; +}; // set up data events if they are asked for +// Ensure readable listeners eventually get something + + +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + var state = this._readableState; + + if (ev === 'data') { + // update readableListening so that resume() may be a no-op + // a few lines down. This is needed to support once('readable'). + state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused + + if (state.flowing !== false) this.resume(); + } else if (ev === 'readable') { + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.flowing = false; + state.emittedReadable = false; + debug('on readable', state.length, state.reading); + + if (state.length) { + emitReadable(this); + } else if (!state.reading) { + process.nextTick(nReadingNextTick, this); + } + } + } + + return res; +}; + +Readable.prototype.addListener = Readable.prototype.on; + +Readable.prototype.removeListener = function (ev, fn) { + var res = Stream.prototype.removeListener.call(this, ev, fn); + + if (ev === 'readable') { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +Readable.prototype.removeAllListeners = function (ev) { + var res = Stream.prototype.removeAllListeners.apply(this, arguments); + + if (ev === 'readable' || ev === undefined) { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +function updateReadableListening(self) { + var state = self._readableState; + state.readableListening = self.listenerCount('readable') > 0; + + if (state.resumeScheduled && !state.paused) { + // flowing needs to be set to true now, otherwise + // the upcoming resume will not flow. + state.flowing = true; // crude way to check if we should resume + } else if (self.listenerCount('data') > 0) { + self.resume(); + } +} + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} // pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. + + +Readable.prototype.resume = function () { + var state = this._readableState; + + if (!state.flowing) { + debug('resume'); // we flow only if there is no one listening + // for readable, but we still have to call + // resume() + + state.flowing = !state.readableListening; + resume(this, state); + } + + state.paused = false; + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + debug('resume', state.reading); + + if (!state.reading) { + stream.read(0); + } + + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + + if (this._readableState.flowing !== false) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + + this._readableState.paused = true; + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + + while (state.flowing && stream.read() !== null) { + ; + } +} // wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. + + +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + stream.on('end', function () { + debug('wrapped end'); + + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode + + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + + if (!ret) { + paused = true; + stream.pause(); + } + }); // proxy all the other methods. + // important when wrapping filters and duplexes. + + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function methodWrap(method) { + return function methodWrapReturnFunction() { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } // proxy certain important events. + + + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } // when we try to consume some more bytes, simply unpause the + // underlying stream. + + + this._read = function (n) { + debug('wrapped _read', n); + + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +if (typeof Symbol === 'function') { + Readable.prototype[Symbol.asyncIterator] = function () { + if (createReadableStreamAsyncIterator === undefined) { + createReadableStreamAsyncIterator = __webpack_require__("2z0l"); + } + + return createReadableStreamAsyncIterator(this); + }; +} + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.highWaterMark; + } +}); +Object.defineProperty(Readable.prototype, 'readableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState && this._readableState.buffer; + } +}); +Object.defineProperty(Readable.prototype, 'readableFlowing', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.flowing; + }, + set: function set(state) { + if (this._readableState) { + this._readableState.flowing = state; + } + } +}); // exposed for testing purposes only. + +Readable._fromList = fromList; +Object.defineProperty(Readable.prototype, 'readableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.length; + } +}); // Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. + +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = state.buffer.consume(n, state.decoder); + } + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + debug('endReadable', state.endEmitted); + + if (!state.endEmitted) { + state.ended = true; + process.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. + + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the writable side is ready for autoDestroy as well + var wState = stream._writableState; + + if (!wState || wState.autoDestroy && wState.finished) { + stream.destroy(); + } + } + } +} + +if (typeof Symbol === 'function') { + Readable.from = function (iterable, opts) { + if (from === undefined) { + from = __webpack_require__("6Dfl"); + } + + return from(Readable, iterable, opts); + }; +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + + return -1; +} +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("mFPK"), __webpack_require__("V0EG"))) + +/***/ }), + +/***/ "y5YM": +/***/ (function(module, exports) { + +module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + if(!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function() { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function() { + return module.i; + } + }); + module.webpackPolyfill = 1; + } + return module; +}; + + +/***/ }), + +/***/ "y76T": +/***/ (function(module, exports) { + +module.exports = {"name":"elliptic","version":"6.5.4","description":"EC cryptography","main":"lib/elliptic.js","files":["lib"],"scripts":{"lint":"eslint lib test","lint:fix":"npm run lint -- --fix","unit":"istanbul test _mocha --reporter=spec test/index.js","test":"npm run lint && npm run unit","version":"grunt dist && git add dist/"},"repository":{"type":"git","url":"git@github.com:indutny/elliptic"},"keywords":["EC","Elliptic","curve","Cryptography"],"author":"Fedor Indutny <fedor@indutny.com>","license":"MIT","bugs":{"url":"https://github.com/indutny/elliptic/issues"},"homepage":"https://github.com/indutny/elliptic","devDependencies":{"brfs":"^2.0.2","coveralls":"^3.1.0","eslint":"^7.6.0","grunt":"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1","istanbul":"^0.4.5","mocha":"^8.0.1"},"dependencies":{"bn.js":"^4.11.9","brorand":"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1","inherits":"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"},"__npminstall_done":true,"_from":"elliptic@6.5.4","_resolved":"https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz"} + +/***/ }), + +/***/ "y7x+": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process, setImmediate, global) {// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + + + +/*<replacement>*/ + +var pna = __webpack_require__("z2li"); +/*</replacement>*/ + +module.exports = Writable; + +/* <replacement> */ +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} + +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* </replacement> */ + +/*<replacement>*/ +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; +/*</replacement>*/ + +/*<replacement>*/ +var Duplex; +/*</replacement>*/ + +Writable.WritableState = WritableState; + +/*<replacement>*/ +var util = Object.create(__webpack_require__("rcOv")); +util.inherits = __webpack_require__("mwrz"); +/*</replacement>*/ + +/*<replacement>*/ +var internalUtil = { + deprecate: __webpack_require__("wjIV") +}; +/*</replacement>*/ + +/*<replacement>*/ +var Stream = __webpack_require__("KSX3"); +/*</replacement>*/ + +/*<replacement>*/ + +var Buffer = __webpack_require__("QMyh").Buffer; +var OurUint8Array = global.Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/*</replacement>*/ + +var destroyImpl = __webpack_require__("/sSn"); + +util.inherits(Writable, Stream); + +function nop() {} + +function WritableState(options, stream) { + Duplex = Duplex || __webpack_require__("qI9I"); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var writableHwm = options.writableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // if _final has been called + this.finalCalled = false; + + // drain event flag. + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // has it been destroyed + this.destroyed = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // when true all writes will be buffered until .uncork() call + this.corked = 0; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + + this.bufferedRequest = null; + this.lastBufferedRequest = null; + + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; + + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; + + // count buffered requests + this.bufferedRequestCount = 0; + + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); + +// Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. +var realHasInstance; +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function (object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function (object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || __webpack_require__("qI9I"); + + // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { + return new Writable(options); + } + + this._writableState = new WritableState(options, this); + + // legacy. + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + + if (typeof options.writev === 'function') this._writev = options.writev; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); +}; + +function writeAfterEnd(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + pna.nextTick(cb, er); +} + +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. +function validChunk(stream, state, chunk, cb) { + var valid = true; + var er = false; + + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + if (er) { + stream.emit('error', er); + pna.nextTick(cb, er); + valid = false; + } + return valid; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + + if (typeof cb !== 'function') cb = nop; + + if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + + return ret; +}; + +Writable.prototype.cork = function () { + var state = this._writableState; + + state.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + + if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + var len = state.objectMode ? 1 : chunk.length; + + state.length += len; + + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + pna.nextTick(cb, er); + // this can emit finish, and it will always happen + // after error + pna.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + // this can emit finish, but finish must + // always follow error + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + + onwriteStateUpdate(state); + + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state); + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + /*<replacement>*/ + asyncWrite(afterWrite, stream, state, finished, cb); + /*</replacement>*/ + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + + var count = 0; + var allBuffers = true; + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + buffer.allBuffers = allBuffers; + + doWrite(stream, state, true, state.length, buffer, '', holder.finish); + + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new Error('_write() is not implemented')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending && !state.finished) endWritable(this, state, cb); +}; + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + if (err) { + stream.emit('error', err); + } + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function') { + state.pendingcb++; + state.finalCalled = true; + pna.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + prefinish(stream, state); + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + } + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); + } + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + if (state.corkedRequestsFree) { + state.corkedRequestsFree.next = corkReq; + } else { + state.corkedRequestsFree = corkReq; + } +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + get: function () { + if (this._writableState === undefined) { + return false; + } + return this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._writableState.destroyed = value; + } +}); + +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; +Writable.prototype._destroy = function (err, cb) { + this.end(); + cb(err); +}; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("V0EG"), __webpack_require__("PKNu").setImmediate, __webpack_require__("mFPK"))) + +/***/ }), + +/***/ "yBT0": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Japanese [ja] +//! author : LI Long : https://github.com/baryon + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var ja = moment.defineLocale('ja', { + months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), + weekdaysShort : '日_月_火_水_木_金_土'.split('_'), + weekdaysMin : '日_月_火_水_木_金_土'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY/MM/DD', + LL : 'YYYY年M月D日', + LLL : 'YYYY年M月D日 HH:mm', + LLLL : 'YYYY年M月D日 HH:mm dddd', + l : 'YYYY/MM/DD', + ll : 'YYYY年M月D日', + lll : 'YYYY年M月D日 HH:mm', + llll : 'YYYY年M月D日 HH:mm dddd' + }, + meridiemParse: /午前|午後/i, + isPM : function (input) { + return input === '午後'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return '午前'; + } else { + return '午後'; + } + }, + calendar : { + sameDay : '[今日] LT', + nextDay : '[明日] LT', + nextWeek : '[来週]dddd LT', + lastDay : '[昨日] LT', + lastWeek : '[前週]dddd LT', + sameElse : 'L' + }, + dayOfMonthOrdinalParse : /\d{1,2}日/, + ordinal : function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + default: + return number; + } + }, + relativeTime : { + future : '%s後', + past : '%s前', + s : '数秒', + m : '1分', + mm : '%d分', + h : '1時間', + hh : '%d時間', + d : '1日', + dd : '%d日', + M : '1ヶ月', + MM : '%dヶ月', + y : '1年', + yy : '%d年' + } +}); + +return ja; + +}))); + + +/***/ }), + +/***/ "yGpx": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Thai [th] +//! author : Kridsada Thanabulpong : https://github.com/sirn + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var th = moment.defineLocale('th', { + months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), + monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'), + monthsParseExact: true, + weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), + weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference + weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY เวลา H:mm', + LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm' + }, + meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, + isPM: function (input) { + return input === 'หลังเที่ยง'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ก่อนเที่ยง'; + } else { + return 'หลังเที่ยง'; + } + }, + calendar : { + sameDay : '[วันนี้ เวลา] LT', + nextDay : '[พรุ่งนี้ เวลา] LT', + nextWeek : 'dddd[หน้า เวลา] LT', + lastDay : '[เมื่อวานนี้ เวลา] LT', + lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'อีก %s', + past : '%sที่แล้ว', + s : 'ไม่กี่วินาที', + m : '1 นาที', + mm : '%d นาที', + h : '1 ชั่วโมง', + hh : '%d ชั่วโมง', + d : '1 วัน', + dd : '%d วัน', + M : '1 เดือน', + MM : '%d เดือน', + y : '1 ปี', + yy : '%d ปี' + } +}); + +return th; + +}))); + + +/***/ }), + +/***/ "yT5j": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Italian [it] +//! author : Lorenzo : https://github.com/aliem +//! author: Mattia Larentis: https://github.com/nostalgiaz + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var it = moment.defineLocale('it', { + months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), + monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), + weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'), + weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'), + weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Oggi alle] LT', + nextDay: '[Domani alle] LT', + nextWeek: 'dddd [alle] LT', + lastDay: '[Ieri alle] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[la scorsa] dddd [alle] LT'; + default: + return '[lo scorso] dddd [alle] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : function (s) { + return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; + }, + past : '%s fa', + s : 'alcuni secondi', + m : 'un minuto', + mm : '%d minuti', + h : 'un\'ora', + hh : '%d ore', + d : 'un giorno', + dd : '%d giorni', + M : 'un mese', + MM : '%d mesi', + y : 'un anno', + yy : '%d anni' + }, + dayOfMonthOrdinalParse : /\d{1,2}º/, + ordinal: '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return it; + +}))); + + +/***/ }), + +/***/ "yT9O": +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {var Buffer = __webpack_require__("DLTi").Buffer + +var checkParameters = __webpack_require__("GpZv") +var defaultEncoding = __webpack_require__("xJId") +var sync = __webpack_require__("t+7X") +var toBuffer = __webpack_require__("pLtV") + +var ZERO_BUF +var subtle = global.crypto && global.crypto.subtle +var toBrowser = { + sha: 'SHA-1', + 'sha-1': 'SHA-1', + sha1: 'SHA-1', + sha256: 'SHA-256', + 'sha-256': 'SHA-256', + sha384: 'SHA-384', + 'sha-384': 'SHA-384', + 'sha-512': 'SHA-512', + sha512: 'SHA-512' +} +var checks = [] +function checkNative (algo) { + if (global.process && !global.process.browser) { + return Promise.resolve(false) + } + if (!subtle || !subtle.importKey || !subtle.deriveBits) { + return Promise.resolve(false) + } + if (checks[algo] !== undefined) { + return checks[algo] + } + ZERO_BUF = ZERO_BUF || Buffer.alloc(8) + var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo) + .then(function () { + return true + }).catch(function () { + return false + }) + checks[algo] = prom + return prom +} +var nextTick +function getNextTick () { + if (nextTick) { + return nextTick + } + if (global.process && global.process.nextTick) { + nextTick = global.process.nextTick + } else if (global.queueMicrotask) { + nextTick = global.queueMicrotask + } else if (global.setImmediate) { + nextTick = global.setImmediate + } else { + nextTick = global.setTimeout + } + return nextTick +} +function browserPbkdf2 (password, salt, iterations, length, algo) { + return subtle.importKey( + 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits'] + ).then(function (key) { + return subtle.deriveBits({ + name: 'PBKDF2', + salt: salt, + iterations: iterations, + hash: { + name: algo + } + }, key, length << 3) + }).then(function (res) { + return Buffer.from(res) + }) +} + +function resolvePromise (promise, callback) { + promise.then(function (out) { + getNextTick()(function () { + callback(null, out) + }) + }, function (e) { + getNextTick()(function () { + callback(e) + }) + }) +} +module.exports = function (password, salt, iterations, keylen, digest, callback) { + if (typeof digest === 'function') { + callback = digest + digest = undefined + } + + digest = digest || 'sha1' + var algo = toBrowser[digest.toLowerCase()] + + if (!algo || typeof global.Promise !== 'function') { + getNextTick()(function () { + var out + try { + out = sync(password, salt, iterations, keylen, digest) + } catch (e) { + return callback(e) + } + callback(null, out) + }) + return + } + + checkParameters(iterations, keylen) + password = toBuffer(password, defaultEncoding, 'Password') + salt = toBuffer(salt, defaultEncoding, 'Salt') + if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2') + + resolvePromise(checkNative(algo).then(function (resp) { + if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo) + + return sync(password, salt, iterations, keylen, digest) + }), callback) +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("mFPK"))) + +/***/ }), + +/***/ "yXLo": +/***/ (function(module, exports, __webpack_require__) { + +var MD5 = __webpack_require__("DnPA") + +module.exports = function (buffer) { + return new MD5().update(buffer).digest() +} + + +/***/ }), + +/***/ "yeH7": +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__("LcQ3").PassThrough + + +/***/ }), + +/***/ "yg5J": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__("UXd7"); +var assert = utils.assert; +var parseBytes = utils.parseBytes; +var cachedProperty = utils.cachedProperty; + +/** +* @param {EDDSA} eddsa - instance +* @param {Object} params - public/private key parameters +* +* @param {Array<Byte>} [params.secret] - secret seed bytes +* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms) +* @param {Array<Byte>} [params.pub] - public key point encoded as bytes +* +*/ +function KeyPair(eddsa, params) { + this.eddsa = eddsa; + this._secret = parseBytes(params.secret); + if (eddsa.isPoint(params.pub)) + this._pub = params.pub; + else + this._pubBytes = parseBytes(params.pub); +} + +KeyPair.fromPublic = function fromPublic(eddsa, pub) { + if (pub instanceof KeyPair) + return pub; + return new KeyPair(eddsa, { pub: pub }); +}; + +KeyPair.fromSecret = function fromSecret(eddsa, secret) { + if (secret instanceof KeyPair) + return secret; + return new KeyPair(eddsa, { secret: secret }); +}; + +KeyPair.prototype.secret = function secret() { + return this._secret; +}; + +cachedProperty(KeyPair, 'pubBytes', function pubBytes() { + return this.eddsa.encodePoint(this.pub()); +}); + +cachedProperty(KeyPair, 'pub', function pub() { + if (this._pubBytes) + return this.eddsa.decodePoint(this._pubBytes); + return this.eddsa.g.mul(this.priv()); +}); + +cachedProperty(KeyPair, 'privBytes', function privBytes() { + var eddsa = this.eddsa; + var hash = this.hash(); + var lastIx = eddsa.encodingLength - 1; + + var a = hash.slice(0, eddsa.encodingLength); + a[0] &= 248; + a[lastIx] &= 127; + a[lastIx] |= 64; + + return a; +}); + +cachedProperty(KeyPair, 'priv', function priv() { + return this.eddsa.decodeInt(this.privBytes()); +}); + +cachedProperty(KeyPair, 'hash', function hash() { + return this.eddsa.hash().update(this.secret()).digest(); +}); + +cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() { + return this.hash().slice(this.eddsa.encodingLength); +}); + +KeyPair.prototype.sign = function sign(message) { + assert(this._secret, 'KeyPair can only verify'); + return this.eddsa.sign(message, this); +}; + +KeyPair.prototype.verify = function verify(message, sig) { + return this.eddsa.verify(message, sig, this); +}; + +KeyPair.prototype.getSecret = function getSecret(enc) { + assert(this._secret, 'KeyPair is public only'); + return utils.encode(this.secret(), enc); +}; + +KeyPair.prototype.getPublic = function getPublic(enc) { + return utils.encode(this.pubBytes(), enc); +}; + +module.exports = KeyPair; + + +/***/ }), + +/***/ "ytBe": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_13_3_0_vue_loader_lib_selector_type_script_index_0_EasyPlayer_vue__ = __webpack_require__("UTjk"); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_13_3_0_vue_loader_lib_template_compiler_index_id_data_v_2fd4e013_hasScoped_true_buble_transforms_node_modules_vue_loader_13_3_0_vue_loader_lib_selector_type_template_index_0_EasyPlayer_vue__ = __webpack_require__("BdQ0"); +function injectStyle (ssrContext) { + __webpack_require__("1J4X") + __webpack_require__("Pi9+") +} +var normalizeComponent = __webpack_require__("46Yf") +/* script */ + +/* template */ + +/* template functional */ + var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = "data-v-2fd4e013" +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_13_3_0_vue_loader_lib_selector_type_script_index_0_EasyPlayer_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_13_3_0_vue_loader_lib_template_compiler_index_id_data_v_2fd4e013_hasScoped_true_buble_transforms_node_modules_vue_loader_13_3_0_vue_loader_lib_selector_type_template_index_0_EasyPlayer_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), + +/***/ "z24t": +/***/ (function(module, exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Georgian [ka] +//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili + +;(function (global, factory) { + true ? factory(__webpack_require__("hsap")) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var ka = moment.defineLocale('ka', { + months : { + standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), + format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') + }, + monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), + weekdays : { + standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), + format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'), + isFormat: /(წინა|შემდეგ)/ + }, + weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), + weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[დღეს] LT[-ზე]', + nextDay : '[ხვალ] LT[-ზე]', + lastDay : '[გუშინ] LT[-ზე]', + nextWeek : '[შემდეგ] dddd LT[-ზე]', + lastWeek : '[წინა] dddd LT-ზე', + sameElse : 'L' + }, + relativeTime : { + future : function (s) { + return (/(წამი|წუთი|საათი|წელი)/).test(s) ? + s.replace(/ი$/, 'ში') : + s + 'ში'; + }, + past : function (s) { + if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { + return s.replace(/(ი|ე)$/, 'ის უკან'); + } + if ((/წელი/).test(s)) { + return s.replace(/წელი$/, 'წლის უკან'); + } + }, + s : 'რამდენიმე წამი', + m : 'წუთი', + mm : '%d წუთი', + h : 'საათი', + hh : '%d საათი', + d : 'დღე', + dd : '%d დღე', + M : 'თვე', + MM : '%d თვე', + y : 'წელი', + yy : '%d წელი' + }, + dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, + ordinal : function (number) { + if (number === 0) { + return number; + } + if (number === 1) { + return number + '-ლი'; + } + if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { + return 'მე-' + number; + } + return number + '-ე'; + }, + week : { + dow : 1, + doy : 7 + } +}); + +return ka; + +}))); + + +/***/ }), + +/***/ "z2li": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { + +if (typeof process === 'undefined' || + !process.version || + process.version.indexOf('v0.') === 0 || + process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { + module.exports = { nextTick: nextTick }; +} else { + module.exports = process +} + +function nextTick(fn, arg1, arg2, arg3) { + if (typeof fn !== 'function') { + throw new TypeError('"callback" argument must be a function'); + } + var len = arguments.length; + var args, i; + switch (len) { + case 0: + case 1: + return process.nextTick(fn); + case 2: + return process.nextTick(function afterTickOne() { + fn.call(null, arg1); + }); + case 3: + return process.nextTick(function afterTickTwo() { + fn.call(null, arg1, arg2); + }); + case 4: + return process.nextTick(function afterTickThree() { + fn.call(null, arg1, arg2, arg3); + }); + default: + args = new Array(len - 1); + i = 0; + while (i < args.length) { + args[i++] = arguments[i]; + } + return process.nextTick(function afterTick() { + fn.apply(null, args); + }); + } +} + + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__("V0EG"))) + +/***/ }), + +/***/ "z7O9": +/***/ (function(module, exports, __webpack_require__) { + +var AuthCipher = __webpack_require__("s+YV") +var Buffer = __webpack_require__("DLTi").Buffer +var MODES = __webpack_require__("4P1X") +var StreamCipher = __webpack_require__("GL8g") +var Transform = __webpack_require__("onRW") +var aes = __webpack_require__("fS0F") +var ebtk = __webpack_require__("gHHA") +var inherits = __webpack_require__("mwrz") + +function Decipher (mode, key, iv) { + Transform.call(this) + + this._cache = new Splitter() + this._last = void 0 + this._cipher = new aes.AES(key) + this._prev = Buffer.from(iv) + this._mode = mode + this._autopadding = true +} + +inherits(Decipher, Transform) + +Decipher.prototype._update = function (data) { + this._cache.add(data) + var chunk + var thing + var out = [] + while ((chunk = this._cache.get(this._autopadding))) { + thing = this._mode.decrypt(this, chunk) + out.push(thing) + } + return Buffer.concat(out) +} + +Decipher.prototype._final = function () { + var chunk = this._cache.flush() + if (this._autopadding) { + return unpad(this._mode.decrypt(this, chunk)) + } else if (chunk) { + throw new Error('data not multiple of block length') + } +} + +Decipher.prototype.setAutoPadding = function (setTo) { + this._autopadding = !!setTo + return this +} + +function Splitter () { + this.cache = Buffer.allocUnsafe(0) +} + +Splitter.prototype.add = function (data) { + this.cache = Buffer.concat([this.cache, data]) +} + +Splitter.prototype.get = function (autoPadding) { + var out + if (autoPadding) { + if (this.cache.length > 16) { + out = this.cache.slice(0, 16) + this.cache = this.cache.slice(16) + return out + } + } else { + if (this.cache.length >= 16) { + out = this.cache.slice(0, 16) + this.cache = this.cache.slice(16) + return out + } + } + + return null +} + +Splitter.prototype.flush = function () { + if (this.cache.length) return this.cache +} + +function unpad (last) { + var padded = last[15] + if (padded < 1 || padded > 16) { + throw new Error('unable to decrypt data') + } + var i = -1 + while (++i < padded) { + if (last[(i + (16 - padded))] !== padded) { + throw new Error('unable to decrypt data') + } + } + if (padded === 16) return + + return last.slice(0, 16 - padded) +} + +function createDecipheriv (suite, password, iv) { + var config = MODES[suite.toLowerCase()] + if (!config) throw new TypeError('invalid suite type') + + if (typeof iv === 'string') iv = Buffer.from(iv) + if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length) + + if (typeof password === 'string') password = Buffer.from(password) + if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length) + + if (config.type === 'stream') { + return new StreamCipher(config.module, password, iv, true) + } else if (config.type === 'auth') { + return new AuthCipher(config.module, password, iv, true) + } + + return new Decipher(config.module, password, iv) +} + +function createDecipher (suite, password) { + var config = MODES[suite.toLowerCase()] + if (!config) throw new TypeError('invalid suite type') + + var keys = ebtk(password, false, config.key, config.iv) + return createDecipheriv(suite, keys.key, keys.iv) +} + +exports.createDecipher = createDecipher +exports.createDecipheriv = createDecipheriv + + +/***/ }), + +/***/ "zBhI": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var ERR_INVALID_OPT_VALUE = __webpack_require__("DzCi").codes.ERR_INVALID_OPT_VALUE; + +function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; +} + +function getHighWaterMark(state, options, duplexKey, isDuplex) { + var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + + if (hwm != null) { + if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { + var name = isDuplex ? duplexKey : 'highWaterMark'; + throw new ERR_INVALID_OPT_VALUE(name, hwm); + } + + return Math.floor(hwm); + } // Default value + + + return state.objectMode ? 16 : 16 * 1024; +} + +module.exports = { + getHighWaterMark: getHighWaterMark +}; + +/***/ }), + +/***/ "zGdw": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.byteLength = byteLength +exports.toByteArray = toByteArray +exports.fromByteArray = fromByteArray + +var lookup = [] +var revLookup = [] +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array + +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i] + revLookup[code.charCodeAt(i)] = i +} + +// Support decoding URL-safe base64 strings, as Node.js does. +// See: https://en.wikipedia.org/wiki/Base64#URL_applications +revLookup['-'.charCodeAt(0)] = 62 +revLookup['_'.charCodeAt(0)] = 63 + +function getLens (b64) { + var len = b64.length + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('=') + if (validLen === -1) validLen = len + + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4) + + return [validLen, placeHoldersLen] +} + +// base64 is 4/3 + up to two characters of the original data +function byteLength (b64) { + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function toByteArray (b64) { + var tmp + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) + + var curByte = 0 + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen + + var i + for (i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)] + arr[curByte++] = (tmp >> 16) & 0xFF + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ) + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1] + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ) + } + + return parts.join('') +} + + +/***/ }), + +/***/ "zLEk": +/***/ (function(module, exports) { + +module.exports = "data:font/woff2;base64,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" + +/***/ }) + +/******/ }); \ No newline at end of file diff --git a/EasyPlayer.wasm b/EasyPlayer.wasm new file mode 100644 index 0000000000000000000000000000000000000000..97b5631598604fcaa869c60006effa939eb994b6 GIT binary patch literal 3034592 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ɶ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%0Ar#d*zf&#?g9-arZ`y`h=;KrPNhoI-0vgjRTYU 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%0DKBWc)38s$hD)sX-OS|%GwYAz~sYc>>t2!p2o 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%0A<sh64rv*uef`Ns6 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�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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html index d28991d8..79490e38 100644 --- a/index.html +++ b/index.html @@ -32,6 +32,11 @@ <script src="/monitor/jquery-1.12.4.min.js"></script> <script src="/monitor/jsencrypt.min.js"></script> <script src="/monitor/jsWebControl-1.0.0.min.js"></script> + + + <!-- easy plaer --> + + <script src="./EasyPlayer-element.min.js"></script> </head> <body> <div id="app"> diff --git a/package.json b/package.json index 5398f127..0592edc4 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ } }, "dependencies": { + "@easydarwin/easyplayer": "^5.1.1", "@ant-design/icons-vue": "^7.0.1", "@icon-park/svg": "^1.4.2", "@iconify/iconify": "^3.1.1", diff --git a/src/components/MapboxMaps/lib/splitpolygon.ts b/src/components/MapboxMaps/lib/splitpolygon.ts index b148e67a..dcc2badf 100644 --- a/src/components/MapboxMaps/lib/splitpolygon.ts +++ b/src/components/MapboxMaps/lib/splitpolygon.ts @@ -15,9 +15,12 @@ export function splitPolygonByLine(line, outerPolygon) { } console.log("************** 分割开始 start **************") + + console.log("第1步:传入的分割线数据",line); console.log("第2步:传入的分割面数据",outerPolygon) + // 处理被分割的面数据坐标小数点保留多少位 let truncatedSplitter = turf.truncate(turf.lineString(outerPolygon.geometry.coordinates[0]), dealOptions); console.log("第3步:分割面转换为线数据",truncatedSplitter); @@ -117,6 +120,8 @@ function getRandomPointInPolygon(polygon) { // 单个面数据分割 export async function splitPolygonByFill(drawPolygon, outerPolygon) { + console.log("outerPolygon",outerPolygon); + return new Promise((resolve,reject)=>{ try{ @@ -124,9 +129,18 @@ export async function splitPolygonByFill(drawPolygon, outerPolygon) { console.log("第2步:传入的被切割面数据",outerPolygon) var polygon1 = turf.polygon(drawPolygon.geometry.coordinates); - var polygon2 = turf.polygon(outerPolygon.geometry.coordinates); + + // 判断被分割的面类型 + var polygon2 = null; + + if(outerPolygon.geometry.type == "MultiPolygon"){ + polygon2 = turf.multiPolygon(outerPolygon.geometry.coordinates); + }else if(outerPolygon.geometry.type == "Polygon"){ + polygon2 = turf.polygon(outerPolygon.geometry.coordinates); + } + - // var intersection = turf.intersect(polygon1, polygon2); + let intersection = turf.intersect(turf.featureCollection([polygon1, polygon2])); console.log("第4步:获取绘制图斑和分割图斑的交集",JSON.stringify(polygon2),JSON.stringify(polygon1),intersection); @@ -134,9 +148,7 @@ export async function splitPolygonByFill(drawPolygon, outerPolygon) { console.log("第3步:获取绘制图斑和分割图斑的差集",difference); let splitAfterFeatures = [intersection,difference]; - setTimeout(function(){ - console.log("splitAfterFeatures9876",splitAfterFeatures); - },3000) + resolve(splitAfterFeatures) }catch(e){ console.log(e); diff --git a/src/views/sys/exception/Converge.vue b/src/views/sys/exception/Converge.vue index 8af4f32b..d49dda67 100644 --- a/src/views/sys/exception/Converge.vue +++ b/src/views/sys/exception/Converge.vue @@ -1,8 +1,17 @@ <template> <div class="statistical" id="bg-pan"> - <Map @onload="handlerOnMapLoad" @handlerGetDetails="handlerGetDetails" style="position: absolute; top: 0px; left: 0px;height: calc( 100vh - 80px);width:100%;z-index:0;" ref="MapboxComponent"></Map> + <Map + @onload="handlerOnMapLoad" + @handlerGetDetails="handlerGetDetails" + style="position: absolute; top: 0px; left: 0px;height: calc( 100vh - 80px);width:100%;z-index:0;" + ref="MapboxComponent" + @showMonitor="showMonitor" + @handlerQueryIntersectTif="handlerQueryIntersectTif" + ></Map> + + <div style="position: absolute; left:60px; bottom: 20px; z-index:1;"> <div :class="`button-item ${buttonSelect == 1? 'button-select': ''}`" style="margin-bottom: 10px" @click="changeLayer(1)">导航地图</div> <div :class="`button-item ${buttonSelect == 2? 'button-select': ''}`" style="margin-bottom: 10px" @click="changeLayer(2)">卫星地图</div> @@ -30,7 +39,25 @@ <ShowInfoModal v-if="showInfoOpen" :showInfoData="showInfoData" /> </div> </a-modal> - + + + <!-- 图层控制 视频监控--> + + <div class="layer-center-container"> + <LayerCenter + @drawPolygon="drawPolygon" + @cancleDrawPolygon="cancleDrawPolygon" + @changeTifLayer="changeTifLayer" + ref="LayerCenterComponent"></LayerCenter> + </div> + + <div class="TC-videoi-container" v-if="showTCLPlayer" v-drag> + <div class="close-button" @click="showTCLPlayer = false;"> + <CloseOutlined></CloseOutlined> + </div> + <Monitor v-if="showTCLPlayer" :play-url="playUrl"></Monitor> + </div> + </div> </template> @@ -128,7 +155,44 @@ break; } } + + + /*图层控制 视频监控*/ + import LayerCenter from './mapComponent/layers/index.vue'; + + // 视频监控 + import Monitor from './mapComponent/monitor/index.vue'; + import {CloseOutlined} from "@ant-design/icons-vue" + + const showTCLPlayer = ref(false); + const playUrl = ref(""); + function showMonitor(info){ + playUrl.value = info.playUrl + showTCLPlayer.value = true; + } + // 历史影像 + + function drawPolygon(state){ + // 调用Map控件中的绘图方法 + MapboxComponent.value.handlerDrawPolygon(); + } + + function cancleDrawPolygon(){ + MapboxComponent.value.handlerDeletePolygon(); + } + + const LayerCenterComponent = ref(); + function handlerQueryIntersectTif(wktStr){ + LayerCenterComponent.value.handlerQueryIntersectTif(wktStr); + } + + + function changeTifLayer(layer){ + console.log("layer",layer); + + MapboxComponent.value.handlerChangeTifLayer(layer); + } </script> <style lang="less" scoped> @@ -263,6 +327,53 @@ } } + + + /**图层控制 视频监控**/ + .layer-center-container{ + width:208px; + position:absolute; + bottom:0px; + left:20px; + z-index:99999; + } + + .TC-videoi-container{ + position: absolute; + bottom:48px; + right:38px; + width:418px; + height:300px; + .close-button{ + width:28px; + height:28px; + background:rgba(0, 0, 0, 0.6); + text-align: center; + line-height:28px; + position:absolute; + top:4px; + right:4px; + z-index:999999; + color:#fff; + cursor:pointer; + } + } + + .selection-button{ + position:absolute; + cursor:pointer; + top:20px; + left:220px; + width:140px; + height:40px; + margin-left:20px; + background-image: url(/map/change-view-btn.png); + background-size:100% 100%; + color:#efefef; + text-align: center; + line-height:46px; + font-size:14px; +} </style> \ No newline at end of file diff --git a/src/views/sys/exception/Converge/MonitoringData.json b/src/views/sys/exception/Converge/MonitoringData.json new file mode 100644 index 00000000..4454b070 --- /dev/null +++ b/src/views/sys/exception/Converge/MonitoringData.json @@ -0,0 +1,16 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [118.429056,35.387537] + }, + "properties": { + "name":"沂南县砖埠镇东岳庄村北可见光", + "playUrl":"http://221.2.83.254:7012/live/37130100181328000001.m3u8" + } + } + ] +} \ No newline at end of file diff --git a/src/views/sys/exception/Converge/index.vue b/src/views/sys/exception/Converge/index.vue index b7750907..3edd2ca7 100644 --- a/src/views/sys/exception/Converge/index.vue +++ b/src/views/sys/exception/Converge/index.vue @@ -42,10 +42,17 @@ mapContainerName.value = "mapContainer-"+generateUUID(); // import { TableOutlined, GlobalOutlined,HomeOutlined} from '@ant-design/icons-vue'; -const emits = defineEmits(["onload","handlerGetDetails"]) +// 图层控制 历史影像 +import { message, Modal } from 'ant-design-vue'; +import U from 'mapbox-gl-utils'; +import {MP} from "./src/MP"; +import { GeojsonToWkt } from './src/WktGeojsonTransform'; + +const emits = defineEmits(["onload","handlerGetDetails","showMonitor","handlerQueryIntersectTif"]) let map:Map; +let mp: any = null; // init map @@ -841,7 +848,9 @@ onMounted(()=>{ mapboxgl.accessToken = MAPBOX_TOKEN; map = initMap(); - + //挂载mapbox-gl-utils + U.init(map); + mp = new MP(map); map.on("load",()=>{ // 添加地形数据 @@ -865,6 +874,9 @@ onMounted(()=>{ getMaskData(); handlerDealStreet(); handlerDealCountry(); + + // 视频监控 + addMonitorLayer(); }) }) @@ -874,8 +886,170 @@ defineExpose({ handlerChangeCounty, // 切换县区 handlerChangeLayerVisible, // 控制图层显示隐藏 handlerLoadPolygon, + handlerDrawPolygon, // 绘制范围 + handlerDeletePolygon, // 取消绘制 + handlerChangeTifLayer, // 图层切换 }); + +/* 图层控制 视频监控*/ + +import MonitoringData from './MonitoringData.json'; + +function addMonitorLayer() { + // 加载监控图标 + map.loadImage('/monitor/monitor.png', function (error, image) { + if (error) throw error; + if (!map.hasImage('monitorIcon')) { + map.addImage('monitorIcon', image); + } + }); + + // 加载监控数据源 + map.addSource('JianKongSource', { + type: 'geojson', + data: MonitoringData, + }); + + // 加载监控图层 + map.addLayer({ + id: 'JianKong', + type: 'symbol', + source: 'JianKongSource', + layout: { + 'icon-image': 'monitorIcon', + 'icon-size': 0.8, + 'text-field': ['get', 'name'], + 'text-size': 12, + 'text-font': ['Open Sans Semibold', 'Arial Unicode MS Bold'], + 'text-offset': [0, 1.6], + 'text-anchor': 'top', + 'text-allow-overlap': false, + visibility: 'none', + }, + paint: { + 'text-color': '#041B36', + 'text-halo-color': '#fff', + 'text-halo-width': 2, + }, + }); + + map.on('click', 'JianKong', (e) => { + // 显示弹窗 + emits('showMonitor', e.features[0].properties); + }); +} + +function handlerDeletePolygon(){ + mp.deleteDraw(); +} +function handlerDrawPolygon (){ + mp.draw('Polygon'); + mp.on('Polygon', function (e) { + Modal.confirm({ + title: '是否查询历史影像?', + onCancel() { + // mp.deleteDraw(); + }, + async onOk() { + let geojson = { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates":[] + } + } + let coordinates = []; + e?.forEach((item, index) => { + coordinates?.push([item.lng, item.lat]); + }); + coordinates.push(coordinates[0]); + geojson.geometry.coordinates[0] = coordinates + let wktStr = GeojsonToWkt(geojson.geometry) + emits("handlerQueryIntersectTif",wktStr) + }, + }); + // emit('mapDraw', 'Polygon', e); + }); +}; + +const tifLayers = ref([]) +function handlerChangeTifLayer(item){ + + if(item.type == 'historyLayer' || item.type == 'speciaLayer'){ + if (item.checked) { // 加载 + if(map.getLayer(item.id)){ + map.setLayoutProperty(item.id, 'visibility', 'visible'); + }else{ + + map.addSource("source"+item.id,{ + type: "raster", + tiles: [ + item.url, + ], + tileSize: 256, + }) + map.addLayer({ + id: item.id, + type: "raster", + source: "source"+item.id, + layout: { + visibility: "visible", + }, + paint: {}, + }) + tifLayers.value.push(item.id); + + map.moveLayer(item.id,"historyLayerFill"); + map.moveLayer(item.id,"historyLayerLine"); + + } + } else { + map.setLayoutProperty(item.id, 'visibility', 'none'); + } + }else if(item.type == "dataLayer"){ + + if(item.id == "Monitor"){ + + if(map.getLayer("JianKong")){ + if (item.checked) { + map.setLayoutProperty("JianKong", 'visibility', 'visible'); + } else { + map.setLayoutProperty("JianKong", 'visibility', 'none'); + } + } + }else if(item.id == "Data"){ + if(map.getLayer("historyLayerLine")){ + if (item.checked) { + map.setLayoutProperty("historyLayerLine", 'visibility', 'visible'); + map.setLayoutProperty("historyLayerFill", 'visibility', 'visible'); + } else { + map.setLayoutProperty("historyLayerLine", 'visibility', 'none'); + map.setLayoutProperty("historyLayerFill", 'visibility', 'none'); + } + } + } + }else if(item.type == "baseLayer"){ + switch(item.id){ + case 1: + handlerChangeLayerVisible('tdt-img-tiles',false) + handlerChangeLayerVisible('tdt-vec-tiles',true) + handlerChangeLayerVisible('countyPanelLayer',false) + break; + case 2: + handlerChangeLayerVisible('tdt-img-tiles',true) + handlerChangeLayerVisible('tdt-vec-tiles',false) + handlerChangeLayerVisible('countyPanelLayer',false) + break; + case 3: + handlerChangeLayerVisible('tdt-img-tiles',false) + handlerChangeLayerVisible('tdt-vec-tiles',false) + handlerChangeLayerVisible('countyPanelLayer',true) + break; + } + } + +} </script> <style type="less" scoped> .map-container{ diff --git a/src/views/sys/exception/Converge/src/MP.ts b/src/views/sys/exception/Converge/src/MP.ts new file mode 100644 index 00000000..28413c67 --- /dev/null +++ b/src/views/sys/exception/Converge/src/MP.ts @@ -0,0 +1,554 @@ +import U from 'mapbox-gl-utils'; +import * as turf from '@turf/turf'; + +type EventType = 'Point' | 'LineString' | 'Polygon'; +interface GenerateGeoJSONDataInterface { + lng: number; + lat: number; +} + +interface FeatureCollection { + type: string; + features: Array<any>; +} + +const CIRCLE_STYLE = { + 'circle-color': '#6495ED', + 'circle-radius': 8, + 'circle-stroke-width': 2, + 'circle-stroke-color': '#ffffff', +}; +const LINE_STYLE = { + 'line-color': '#6495ED', + 'line-width': 3, +}; +const LINE_IS_DRAW_STYLE = { + 'line-dasharray': [2, 2], + 'line-color': '#00FA9A', + 'line-width': 3, +}; +const POLYGON_STYLE = { + 'fill-color': '#FAFAD2', + 'fill-opacity': 0.1, +}; + +function typeOf(obj: any): any { + const toString: any = Object.prototype.toString; + const map: any = { + '[object Boolean]': 'boolean', + '[object Number]': 'number', + '[object String]': 'string', + '[object Function]': 'function', + '[object Array]': 'array', + '[object Date]': 'date', + '[object RegExp]': 'regExp', + '[object Undefined]': 'undefined', + '[object Null]': 'null', + '[object Object]': 'object', + }; + return map[toString.call(obj)]; +} + +function deepClone(data: any): any { + // 获取传入拷贝函数的数据类型 + const type = typeOf(data); + // 定义一个返回any类型的数据 + let reData: any; + // 递归遍历一个array类型数据, + if (type === 'array') { + reData = []; + for (let i = 0; i < data.length; i++) { + reData.push(deepClone(data[i])); + } + } else if (type === 'object') { + //递归遍历一个object类型数据 + reData = {}; + for (const i in data) { + reData[i] = deepClone(data[i]); + } + } else { + // 返回基本数据类型 + return data; + } + // 将any类型的数据return出去,作为deepClone的结果 + return reData; +} + +class BaseMP { + map: any; + listeners: {}; + constructor(map: any) { + this.map = map; + // 初始化mapbox工具类 + U.init(this.map); + this.listeners = {}; + } + + //监听 + on(event: EventType, callback: void) { + console.log('on', event); + this.listeners[event] = callback; + } + + off(event: EventType) { + console.log('off', event); + if (this.listeners[event]) { + delete this.listeners[event]; + } + } + + emit(event: EventType, data: any) { + if (this.listeners[event]) { + this.listeners[event](data); + } + } + + //防抖函数 + debounce = (func: Function, delay: number) => { + let timer: any = null; + return (...args: any) => { + if (timer) clearTimeout(timer); + timer = setTimeout(() => { + func.apply(this, args); + }, delay); + }; + }; + + //切换鼠标样式 + _changeMouseCursor = (cursor: string = 'pointer') => { + this.map.getCanvas().style.cursor = cursor; + }; + + //生成geoJson + _generateGeoJSON(data: GenerateGeoJSONDataInterface[], geometryType: EventType) { + /** + * // 生成点类型的GeoJSON + * var data = [{lng: -122.4194, lat: 37.7749}, {lng: -122.408, lat: 37.791}, {lng: -122.431, lat: 37.769}]; + * var geoJSON = generateGeoJSON(data, "Point"); + * + * // 生成线类型的GeoJSON + * var data = [{lng: -122.4194, lat: 37.7749}, {lng: -122.408, lat: 37.791}, {lng: -122.431, lat: 37.769}]; + * var geoJSON = generateGeoJSON(data, "LineString"); + * + * // 生成面类型的GeoJSON + * var data = [{lng: -122.4194, lat: 37.7749}, {lng: -122.408, lat: 37.791}, {lng: -122.431, lat: 37.769}]; + * var geoJSON = generateGeoJSON(data, "Polygon"); + * **/ + + const featureCollection: FeatureCollection = { + type: 'FeatureCollection', + features: [], + }; + switch (geometryType) { + case 'Point': + for (let i = 0; i < data.length; i++) { + const feature = { + type: 'Feature', + geometry: { + type: geometryType, + coordinates: [data[i].lng, data[i].lat], + }, + properties: {}, + }; + featureCollection.features.push(feature); + } + break; + case 'LineString': + const lineFeature = { + type: 'Feature', + geometry: { + type: geometryType, + coordinates: [], + }, + properties: {}, + }; + for (let i = 0; i < data.length; i++) { + lineFeature['geometry']['coordinates'].push([data[i].lng, data[i].lat]); + } + featureCollection.features.push(lineFeature); + break; + case 'Polygon': + const polygonFeature = { + type: 'Feature', + geometry: { + type: geometryType, + coordinates: [[]], + }, + properties: {}, + }; + for (let i = 0; i < data.length; i++) { + polygonFeature['geometry']['coordinates'][0].push([data[i].lng, data[i].lat]); + } + featureCollection.features.push(polygonFeature); + break; + } + return featureCollection; + } +} + +export class MP extends BaseMP { + drawModelChoose: { LineString: string; Point: string; Polygon: string; DEFAULT: string }; + drawModel: string; + drawLocal: never[]; + drawCurrentId: { + point: string; //点 + line: string; //线 + lastLine: string; //鼠标位置的点 + polygon: string; + }; + currentMouseLocation: null; + correctionMouseLocation: any; + clickCount: number; + clickTimeout: any; + constructor(map) { + super(map); + this.drawModelChoose = { + LineString: 'LineString', + Point: 'Point', + Polygon: 'Polygon', + DEFAULT: 'default', + }; + this.drawModel = this.drawModelChoose.DEFAULT; + this.drawLocal = []; + this.drawCurrentId = { + point: 'current-draw-point', //点 + line: 'current-draw-line', //线 + lastLine: 'current-draw-last-line', //鼠标位置的点 + polygon: 'current-draw-polygon', + }; + this.currentMouseLocation = null; //当前鼠标位置 + this.correctionMouseLocation = null; //校正后的鼠标位置 + this.clickCount = 0; // 定义一个计数器 + this.clickTimeout = null; // 定义一个超时变量 + } + + //添加或更新source + _addOrUpdateSource = (gS, id) => { + if (this.map.getSource(id)) { + this.map.getSource(id).setData(gS); + } else { + this.map.U.addGeoJSON(id, gS); + } + }; + // 添加layer,有则不操作 + _addLayer = (layerId, sourceId, type, style) => { + // 如果图层不存在,添加图层。如果存在,不做操作 + if (!this.map.getLayer(sourceId)) { + switch (type) { + case this.drawModelChoose.Point: + //addCircleLayer + this.map.U.addCircleLayer(layerId, sourceId, style); + break; + case this.drawModelChoose.LineString: + //addLineLayer + this.map.U.addLineLayer(layerId, sourceId, style); + break; + case this.drawModelChoose.Polygon: + //addPolygonLayer + this.map.U.addFillLayer(layerId, sourceId, style); + break; + default: + console.log('layer类型错误'); + } + } + }; + _currentDrawSource = () => { + // currentGSP 点 currentGSL 线 currentGSPL 面 + const currentGSP = this._generateGeoJSON(this.drawLocal, 'Point'); + this._addOrUpdateSource(currentGSP, this.drawCurrentId.point); + + if ( + this.drawModel === this.drawModelChoose.LineString || + this.drawModel === this.drawModelChoose.Polygon + ) { + const currentGSL = this._generateGeoJSON(this.drawLocal, 'LineString'); + this._addOrUpdateSource(currentGSL, this.drawCurrentId.line); + } + if (this.drawModel === this.drawModelChoose.Polygon) { + const lastGSPL = this._generateGeoJSON(this.drawLocal, 'Polygon'); + this._addOrUpdateSource(lastGSPL, this.drawCurrentId.polygon); + } + }; + //绘制当前的layer + _currentDrawLayer = () => { + // 如果是点,直接绘制点 + this._addLayer(this.drawCurrentId.point, this.drawCurrentId.point, 'Point', CIRCLE_STYLE); + // 如果是线,在点的基础上,加上线 + // 如果是面,在线的基础上,加上面 + if ( + this.drawModel === this.drawModelChoose.LineString || + this.drawModel === this.drawModelChoose.Polygon + ) { + this._addLayer(this.drawCurrentId.line, this.drawCurrentId.line, 'LineString', LINE_STYLE); + } + if (this.drawModel === this.drawModelChoose.Polygon) { + this._addLayer( + this.drawCurrentId.polygon, + this.drawCurrentId.polygon, + 'Polygon', + POLYGON_STYLE, + ); + } + }; + + //最后动态的一笔 + _currentDrawLastLine = () => { + if ( + this.drawModel === this.drawModelChoose.LineString || + this.drawModel === this.drawModelChoose.Polygon + ) { + if (!this.drawLocal.length) { + this.map.U.removeLayer(this.drawCurrentId.lastLine); + this.map.U.removeSource(this.drawCurrentId.lastLine); + return false; + } + const startPoint = this.drawLocal[this.drawLocal.length - 1]; + const endPoint = this.getDrawEndPoint(); + + // 添加动态线 + const lastGSL = this._generateGeoJSON([startPoint, endPoint], 'LineString'); + this.crossesLine(this.drawLocal, [startPoint, endPoint]); + this._addOrUpdateSource(lastGSL, this.drawCurrentId.lastLine); + this._addLayer( + this.drawCurrentId.lastLine, + this.drawCurrentId.lastLine, + 'LineString', + LINE_IS_DRAW_STYLE, + ); + } + if (this.drawModel === this.drawModelChoose.Polygon) { + this._currentDrawLastPolygon(); + } + }; + //获取矫正的最后点 + getDrawEndPoint = () => { + let endPoint = null; + if (this.nearlyClientDistant()) { + endPoint = this.correctionMouseLocation; + } else { + endPoint = this.currentMouseLocation; + } + return endPoint; + }; + //最后动态的一笔,跟随面生成 + _currentDrawLastPolygon = () => { + // 添加动态面 + const endPoint = this.getDrawEndPoint(); + const drawLocalCopy = deepClone(this.drawLocal); + drawLocalCopy.push(endPoint); + drawLocalCopy.push(drawLocalCopy[0]); + const lastGSPL = this._generateGeoJSON(drawLocalCopy, 'Polygon'); + this._addOrUpdateSource(lastGSPL, this.drawCurrentId.polygon); + this._addLayer( + this.drawCurrentId.polygon, + this.drawCurrentId.polygon, + 'Polygon', + POLYGON_STYLE, + ); + }; + + //鼠标点击 + clickHandler = (e) => { + const _this = this; + this.clickCount++; // 每次单击事件计数器加1 + if (this.clickCount === 1) { + // 如果是第一次单击 + this.clickTimeout = setTimeout(function () { + // 启动超时变量 + // 单击事件 + _this.clickCount = 0; // 计数器清零 + if (_this.nearlyClientDistant()) { + _this.drawLocal.push(_this.correctionMouseLocation); + // 如果是第一个点,那么就结束绘制 + // todo 画面第一点后结束 + if ( + _this.drawModel === _this.drawModelChoose.Polygon && + _this.correctionMouseLocation === _this.drawLocal[0] + ) { + _this._currentDrawSource(); + _this._currentDrawLayer(); + _this.emit(_this.drawModel, _this.drawLocal); + _this.finishDraw(); + return false; + } else { + _this.drawLocal.pop(); + } + } else { + _this.drawLocal.push(e.lngLat); + } + _this._currentDrawSource(); + _this._currentDrawLayer(); + if (_this.drawModel === _this.drawModelChoose.Point) { + _this.drawIsFinish(); + } + }, 200); // 设置超时时间为300毫秒 + } else { + // 如果不是第一次单击 + clearTimeout(this.clickTimeout); // 清除超时变量 + this.clickCount = 0; // 计数器清零 + // 在这里编写双击事件的操作 + + // 鼠标双击事件 + + if (this.drawModel === this.drawModelChoose.LineString) { + _this.drawLocal.push(e.lngLat); + _this._currentDrawSource(); + _this._currentDrawLayer(); + this.drawIsFinish(); + } + + if (this.drawModel === this.drawModelChoose.Polygon) { + _this.drawLocal.push(e.lngLat); + _this._currentDrawSource(); + _this._currentDrawLayer(); + this.drawIsFinish(); + } + } + }; + //右键点击 + contextmenuHandler = (e) => { + if (this.drawLocal.length < 1) { + return false; + } + this.drawLocal.pop(); + this._currentDrawSource(); + this._currentDrawLayer(); + this._currentDrawLastLine(); + }; + // 鼠标移动 + mousemoveHandler = this.debounce((e) => { + this.currentMouseLocation = e.lngLat; + this._currentDrawLastLine(); + }, 5); + // 判断是否吸附,距离12像素 + nearlyClientDistant = () => { + // 判断屏幕距离,鼠标吸附 + let _this = this; + let mousePoint = [this.currentMouseLocation.lng, this.currentMouseLocation.lat]; + let closestFeature = null; + let closestDistance = Infinity; + let threshold = 10; // 阈值,单位为像素 + // 遍历所有特征,找到距离最近的特征 + let clientPosition = _this.map.project(mousePoint); + this.drawLocal.forEach(function (feature) { + _this.map.project([feature.lng, feature.lat]); + let featurePosition = _this.map.project([feature.lng, feature.lat]); + // 计算两个点在屏幕上的像素距离 + let distance = Math.sqrt( + Math.pow(clientPosition.x - featurePosition.x, 2) + + Math.pow(clientPosition.y - featurePosition.y, 2), + ); + if (distance < closestDistance && distance < threshold) { + closestFeature = feature; + closestDistance = distance; + } + }); + // 如果距离小于阈值,则将标注吸附到特征上 + if (closestFeature) { + this._changeMouseCursor('pointer'); + this.correctionMouseLocation = closestFeature; + return true; + } else { + // console.log('范围外') + this._changeMouseCursor('crosshair'); + return false; + } + }; + // 判断是否相交 true 相交 false 不相交 + crossesLine = (line1, line2) => { + let _this = this; + if (this.drawLocal.length >= 3) { + let _line1 = line1.map((e) => { + return [e.lng, e.lat]; + }); + _line1.pop(); + let _line2 = line2.map((e) => { + return [e.lng, e.lat]; + }); + //判断是否有交叉 + let intersect = turf.lineIntersect(turf.lineString(_line1), turf.lineString(_line2)); + if (intersect.features.length > 0) { + let coordinates = intersect.features[0].geometry.coordinates; + //判断是否交叉在点上 + const isExist = _line1.some( + (item) => item[0] === coordinates[0] && item[1] === coordinates[1], + ); + if (isExist) { + // console.log('no cross,穿过了交点') + _this.map.U.setProperty(this.drawCurrentId.lastLine, 'line-color', '#00FA9A'); + _this.map.on('click', this.clickHandler); + } else { + // console.log('cross') + _this.map.U.setProperty(this.drawCurrentId.lastLine, 'line-color', '#DC143C'); + _this._changeMouseCursor('no-drop'); + _this.map.off('click', this.clickHandler); + } + } else { + // console.log('no cross,不沾边') + _this.map.U.setProperty(this.drawCurrentId.lastLine, 'line-color', '#00FA9A'); + _this.map.on('click', this.clickHandler); + } + } else { + return false; + } + }; + drawStart = () => { + //每次绘制都要初始化数据 + this.drawLocal = []; + this.deleteDraw(); + //禁用鼠标双击放大事件 + this.map.doubleClickZoom.disable(); + this._changeMouseCursor('crosshair'); + this.map.on('click', this.clickHandler); + this.map.on('contextmenu', this.contextmenuHandler); + this.map.on('mousemove', this.mousemoveHandler); + }; + draw = (shape) => { + if(this.drawModelChoose[shape]) { + this.drawModel = this.drawModelChoose[shape]; + this.drawStart(); + } else { + console.log(`暂无${shape}类型`); + } + }; + drawIsFinish = () => { + let _this = this; + this.emit(this.drawModel, this.drawLocal); + this.finishDraw(); + //恢复双击放大功能 + setTimeout(() => { + _this.map.doubleClickZoom.enable(); + }, 10); + }; + // 结束绘制线和面 + finishDraw = () => { + this.map.U.removeSource(this.drawCurrentId.lastLine); + this.map.U.removeLayer(this.drawCurrentId.lastLine); + this.drawModel = this.drawModelChoose.DEFAULT; + this.unDraw(); + }; + unDraw = () => { + // console.log('推出绘制模式'); + this.map.off('click', this.clickHandler); + this.map.off('contextmenu', this.contextmenuHandler); + this.map.off('mousemove', this.mousemoveHandler); + this._changeMouseCursor('pointer'); + this.drawLocal = []; + }; + //删除绘制的内容 + deleteDraw = () => { + this.map.U.removeSource([ + this.drawCurrentId.line, + this.drawCurrentId.point, + this.drawCurrentId.lastLine, + this.drawCurrentId.polygon, + ]); + this.map.U.removeLayer([ + this.drawCurrentId.line, + this.drawCurrentId.point, + this.drawCurrentId.lastLine, + this.drawCurrentId.polygon, + ]); + this.unDraw(); + }; +} diff --git a/src/views/sys/exception/Converge/src/WktGeojsonTransform.ts b/src/views/sys/exception/Converge/src/WktGeojsonTransform.ts new file mode 100644 index 00000000..10a689ed --- /dev/null +++ b/src/views/sys/exception/Converge/src/WktGeojsonTransform.ts @@ -0,0 +1,18 @@ +import WKT from "terraformer-wkt-parser" +import { wktToGeoJSON,geojsonToWKT } from "@terraformer/wkt" + + + +const WktToGeojson = (wktData)=> { + // return WKT.parse(wktData) + return wktToGeoJSON(wktData); +} + +const GeojsonToWkt = (geojsonData)=> { + // return WKT.convert(geojsonData) + console.log("geojsonData",geojsonData) + return geojsonToWKT(geojsonData) +} + + +export {WktToGeojson,GeojsonToWkt} \ No newline at end of file diff --git a/src/views/sys/exception/Converge/src/config.ts b/src/views/sys/exception/Converge/src/config.ts new file mode 100644 index 00000000..f13e49f8 --- /dev/null +++ b/src/views/sys/exception/Converge/src/config.ts @@ -0,0 +1,80 @@ +export enum MapboxConfig { + ACCESS_TOKEN = 'pk.eyJ1IjoieHVqaW5nbGlhbmciLCJhIjoiY2w3bzFzZnZqMjdieTN1cG92N2I1d2huOSJ9.aQqMz4S-cTziUYizIH_gNg', + // ACCESS_TOKEN = "1234", + TDT_TOKEN = 'b6585bc41ee16251dbe6b1af64f375d9', + // add more config options here +} +export const MapboxDefaultStyle = { + glyphs: 'mapbox://fonts/mapbox/{fontstack}/{range}.pbf', + version: 8, + sources: { + 'dianzi': { + type: 'raster', + tiles: [ + `https://t0.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=${MapboxConfig.TDT_TOKEN}`, + ], + tileSize: 256, + minzoom:18, + maxzoom:24, + }, + 'dianzi-biaozhu': { + type: 'raster', + tiles: [ + `https://t0.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=${MapboxConfig.TDT_TOKEN}`, + ], + tileSize: 256, + }, + 'raster-tiles': { + type: 'raster', + tiles: [ + `https://t0.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=${MapboxConfig.TDT_TOKEN}`, + ], + tileSize: 256, + minzoom:0, + maxzoom:18, + }, + }, + layers: [ + { + id: 'dianzi-biaozhu', + type: 'raster', + source: 'dianzi-biaozhu', + layout: { + visibility: 'visible', + }, + },{ + id: 'tdt-img-tiles', + type: 'raster', + source: 'raster-tiles', + minzoom: 0, + maxzoom: 18, + },{ + id: 'dianzi', + type: 'raster', + source: 'dianzi', + layout: { + visibility: 'visible', + }, + minzoom: 18, + maxzoom: 24, + } + ], +}; + +export const MapControlConfig = { + DrawPoint: { + handler: 'handlerDrawPoint', + icon: '/point.png', + title: '绘制点', + }, + DrawLineString: { + handler: 'handlerDrawLineString', + icon: '/line.png', + title: '绘制线', + }, + DrawPolygon: { + handler: 'handlerDrawPolygon', + icon: '/polygon.png', + title: '绘制面', + }, +}; diff --git a/src/views/sys/exception/Converge/src/index.css b/src/views/sys/exception/Converge/src/index.css new file mode 100644 index 00000000..8f6c4764 --- /dev/null +++ b/src/views/sys/exception/Converge/src/index.css @@ -0,0 +1,22 @@ +.mapboxgl-ctrl-logo { + display: none !important; +} +.map-container { + position: relative; +} +.map-box, +.map-container { + width: 100%; + height: 100%; +} +.map-control { + position: absolute; + right: 10px; + top: 10px; + display: flex; +} +.map-control img { + width: 40px; + height: 40px; + cursor: pointer; +} diff --git a/src/views/sys/exception/Converge/src/index.less b/src/views/sys/exception/Converge/src/index.less new file mode 100644 index 00000000..b2a5135a --- /dev/null +++ b/src/views/sys/exception/Converge/src/index.less @@ -0,0 +1,27 @@ +.mapboxgl-ctrl-logo { + display: none !important; +} +.map-container{ + position: relative; +} +.map-box, +.map-container { + width: 100%; + height: 100%; +} + +.map-control { + position: absolute; + right: 10px; + top: 10px; + display: flex; + + img { + width: 40px; + height: 40px; + cursor: pointer; + } + img:hover { + scale: 1.2; + } +} \ No newline at end of file diff --git a/src/views/sys/exception/Converge/src/tool.ts b/src/views/sys/exception/Converge/src/tool.ts new file mode 100644 index 00000000..f9c31c90 --- /dev/null +++ b/src/views/sys/exception/Converge/src/tool.ts @@ -0,0 +1,62 @@ +import { ControlOutlined } from '@ant-design/icons-vue'; +import * as turf from '@turf/turf' + +// js生成UUID +const generateUUID = ()=>{ + + var d = new Date().getTime(); //Timestamp + var d2 = (performance && performance.now && (performance.now()*1000)) || 0; + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = Math.random() * 16; + if(d > 0) { + r = (d + r)%16 | 0; + d = Math.floor(d/16); + } else { + r = (d2 + r)%16 | 0; + d2 = Math.floor(d2/16); + } + return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16); + }); +} + +// js 针对后端post接口参数拼接到url的情况 将json参数转换为 ?key1=value1&key2=value2 +const ObjectToUrl = (obj)=>{ + let params = "?"; + for(let item in obj){ + params+=item+"="+obj[item]+"&" + } + return params; +} + + +// turf获取几何图形的中心 +const getGeometryCenter = (geometry)=>{ + let coordinates = []; + switch(geometry.geometry.type.toUpperCase()){ + case "POINT": + + break; + case "MULTIPOINT": + + break; + case "LINESTRING": + + break; + case "MULTILINESTRING": + + break; + case "POLYGON": + coordinates = geometry.geometry.coordinates + break; + case "MULTIPOLYGON": + coordinates = geometry.geometry.coordinates[0] + break; + } + + // let polygon = turf.polygon(coordinates); + // let center = turf.centerOfMass(polygon); + return [coordinates[0][0][0],coordinates[0][0][1]]; + // return [117.732878836452,35.1320944773393] +} + +export { generateUUID,ObjectToUrl,getGeometryCenter } \ No newline at end of file diff --git a/src/views/sys/exception/VideoSupervision.vue b/src/views/sys/exception/VideoSupervision.vue index 4bef55e8..86de79f4 100644 --- a/src/views/sys/exception/VideoSupervision.vue +++ b/src/views/sys/exception/VideoSupervision.vue @@ -33,7 +33,7 @@ <!-- case list --> <CaseList v-show="false" @handlerLayerButtonClick="handlerLayerButtonClick" @toPosition="toPosition"></CaseList> <!-- uav --> - <UAV v-show="false" @toPosition="toPosition" @handlerUpdateUavLayerData="handlerUpdateUavLayerData" @handlerLayerButtonClick="handlerLayerButtonClick"></UAV> + <!-- <UAV v-show="false" @toPosition="toPosition" @handlerUpdateUavLayerData="handlerUpdateUavLayerData" @handlerLayerButtonClick="handlerLayerButtonClick"></UAV> --> </div> <!-- monitor --> <!-- <Monitor :currentMonitor="monitorInfo" @register="registerModal" /> --> @@ -43,8 +43,17 @@ <div class="close-button" @click="showTCLPlayer = false;"> <CloseOutlined></CloseOutlined> </div> - <TCVideo v-if="showTCLPlayer"></TCVideo> + <TCVideo v-if="showTCLPlayer" :play-url="'12334344'"></TCVideo> </div> + + <!-- layer center --> + + + + </div> + + <div class="layer-center-container"> + <LayerCenter></LayerCenter> </div> <a-modal @@ -62,8 +71,11 @@ </div> </a-modal> + + </template> <script lang="ts" setup> + import ShowInfoModal from '@/views/demo/tiankongdi/curbspotcity/MapList/ShowInfoModal/index.vue'; import SearchComponent from './VideoSupervision/search/index.vue' import Map from './VideoSupervision/map/map.vue'; @@ -82,6 +94,10 @@ import {PlayCircleOutlined,EnvironmentOutlined,CloseOutlined} from "@ant-design/ import { useMessage } from '@/hooks/web/useMessage'; import { useMultipleTabStore } from '@/store/modules/multipleTab'; import { getLoadDroneCaseInfoDetail, getCaseInfoById } from '@/api/tiankongdi/index'; + +import LayerCenter from './VideoSupervision/layers/index.vue'; + + const { t } = useI18n(); const router = useRouter(); const { createConfirm } = useMessage(); @@ -367,4 +383,12 @@ onMounted(() => { cursor:pointer; } } + +.layer-center-container{ + width:208px; + position:absolute; + bottom:20px; + left:20px; + z-index:99999; +} </style> diff --git a/src/views/sys/exception/VideoSupervision/layers/index.vue b/src/views/sys/exception/VideoSupervision/layers/index.vue new file mode 100644 index 00000000..eeba197d --- /dev/null +++ b/src/views/sys/exception/VideoSupervision/layers/index.vue @@ -0,0 +1,223 @@ +<template> + <div class="layer-list-container" > + <div class="title"> + 图层 + </div> + <p class="cate-name">数据图层</p> + <div class="case-list"> + <div class="case-item" v-for="item in dataLayerList" :key="index" > + <img src="/statistical/prove-icon.png" alt="" /> + <a-checkbox v-model:checked="item.checked" @change="layerChange(item)" > + <span style="color:#fff;">{{item.name}}</span> + </a-checkbox> + </div> + </div> + + <p class="cate-name">历史影像</p> + <div class="case-list"> + <div class="case-item" v-for="item in historyLayerList" :key="index" > + <img src="/statistical/prove-icon.png" alt="" /> + <a-checkbox v-model:checked="item.checked" @change="layerChange(item)" > + <span style="color:#fff;">{{item.name}}</span> + </a-checkbox> + </div> + <a-empty v-if="historyLayerList.length <= 0" /> + </div> + + <p class="cate-name">专题图层</p> + + <div class="case-list"> + <div class="case-item" v-for="item in speciaLayerList" :key="index" > + <img src="/statistical/prove-icon.png" alt="" /> + <a-checkbox v-model:checked="item.checked" @change="layerChange(item)" > + <span style="color:#fff;">{{item.name}}</span> + </a-checkbox> + </div> + <a-empty v-if="speciaLayerList.length <= 0" /> + </div> + + + <p class="cate-name">地图底图</p> + <div class="case-list"> + + <a-radio-group v-model:value="baseLayer"> + <div class="case-item" v-for="item in baseLayerList" :key="index" > + <img src="/statistical/prove-icon.png" alt="" /> + <a-radio :value="item.value"> + <span style="color:#fff;">{{item.name}}</span> + </a-radio> + </div> + </a-radio-group> + + </div> + </div> +</template> +<script lang="ts" setup> + import { + defineEmits, + ref, + defineExpose, + } from 'vue' + + import {getIntersectTif } from '@/api/tiankongdi'; + import { useMessage } from '@/hooks/web/useMessage'; + const { createConfirm, createMessage } = useMessage(); + + const dataLayerList = ref([ + { + name:"数据图层", + checked:true, + }, + { + name:"视频监控", + checked:false, + value:"JianKong" + } + ]) + + const historyLayerList = ref([ + { + name:"费县影像图层", + checked:false, + } + ]) + const speciaLayerList = ref([ + { + name:"地类图层", + checked:false, + }, + { + name:"三调图层", + checked:false, + } + ]) + + const baseLayerList = ref([ + { + name:"导航地图", + checked:false, + value:"daohang", + },{ + name:"卫星地图", + checked:false, + value:"weixing", + },{ + name:"白板地图", + checked:false, + value:"baiban", + }, + ]) + + const baseLayer = ref("weixing") + + const emits = defineEmits(['changeTifLayer']) + + const handlerQueryIntersectTif = (wkt:string)=>{ + + let query = { + TargetShape:wkt, + page:1, + limit:10, + key:null + } + + getIntersectTif(query).then(res=>{ + if(res.items.length>0){ + res.items?.forEach((item,index)=>{ + res.items[index].checked = false; + }) + layerList.value = res.items; + }else{ + createMessage.error("当前范围内暂无查询数据!"); + } + }) + } + + + const layerChange = (item)=>{ + emits("changeTifLayer",item); + } + + // 抛出函数 + defineExpose({ + // handlerQueryIntersectTif + }); + +</script> + <style type="less" scoped> + + .layer-list-container { + width: 208px; + min-height: 340px; + background: #041b36; + position: relative; + margin-bottom: 20px; + &::before { + content: ''; + height: 70%; + width: 20px; + position: absolute; + bottom: 5px; + left: 5px; + background: url('/videosupervision/main-left.png'); + background-size: 100% 100%; + } + &::after { + content: ''; + height: 70%; + width: 20px; + position: absolute; + bottom: 5px; + right: 5px; + background: url('/videosupervision/main-right.png'); + background-size: 100% 100%; + } + .title { + width: 100%; + height: 40px; + background-image: url('/videosupervision/title.png'); + background-size: 100% 100%; + line-height: 40px; + text-indent: 18px; + font-size: 18px; + font-weight: bold; + color: #fff; + } + .switch-button { + float: right; + margin-right: 20px; + } + } + .case-list { + padding: 10px 24px; + overflow: auto; + .case-item { + cursor:pointer; + border-bottom: 1px dashed #1d60b4; + color:#fff; + padding: 5px 0; + img { + width: 15px; + margin-right:12px; + } + span { + color: #7ebbff; + margin-left: 10px; + } + } + } + ::v-deep .ant-empty{ + margin-top:110px; + } + ::v-deep .ant-empty-description{ + color:#fff; + } + + .cate-name{ + color:#fff; + padding:12px; + font-size:14px; + margin-bottom:0px; + } + </style> + \ No newline at end of file diff --git a/src/views/sys/exception/VideoSupervision/map/MonitoringData.json b/src/views/sys/exception/VideoSupervision/map/MonitoringData.json new file mode 100644 index 00000000..4454b070 --- /dev/null +++ b/src/views/sys/exception/VideoSupervision/map/MonitoringData.json @@ -0,0 +1,16 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [118.429056,35.387537] + }, + "properties": { + "name":"沂南县砖埠镇东岳庄村北可见光", + "playUrl":"http://221.2.83.254:7012/live/37130100181328000001.m3u8" + } + } + ] +} \ No newline at end of file diff --git a/src/views/sys/exception/VideoSupervision/map/map.vue b/src/views/sys/exception/VideoSupervision/map/map.vue index 92406682..25532a8f 100644 --- a/src/views/sys/exception/VideoSupervision/map/map.vue +++ b/src/views/sys/exception/VideoSupervision/map/map.vue @@ -20,6 +20,8 @@ </div> </template> <script lang="ts" setup> +import MonitoringData from './MonitoringData.json'; + import { TableOutlined, GlobalOutlined,HomeOutlined} from '@ant-design/icons-vue'; import { ref, onMounted, defineExpose, defineEmits } from 'vue'; import { generateUUID } from '@/components/MapboxMaps/src/tool'; @@ -812,18 +814,11 @@ import { TableOutlined, GlobalOutlined,HomeOutlined} from '@ant-design/icons-vue } }); - // // 加载闯 - // map.loadImage('/images/map/warning-car.png', function (error, image) { - // if (error) throw error; - // if (!map.hasImage('warningCarIcon')) { - // map.addImage('warningCarIcon', image); - // } - // }); // 加载监控数据源 map.addSource('JianKongSource', { type: 'geojson', - data: geojson, + data: MonitoringData, }); // 加载监控图层 @@ -1189,7 +1184,6 @@ function handlerChangeTifLayer(item){ // 取消绘制 const handlerDeletePolygon = ()=>{ mp.deleteDraw(); - tifLayers.value?.forEach((item,index)=>{ if(map.getLayer(item)){ map.removeLayer(item); diff --git a/src/views/sys/exception/VideoSupervision/monitor/index.vue b/src/views/sys/exception/VideoSupervision/monitor/index.vue index b48325a3..600aa255 100644 --- a/src/views/sys/exception/VideoSupervision/monitor/index.vue +++ b/src/views/sys/exception/VideoSupervision/monitor/index.vue @@ -5,47 +5,114 @@ 视频监控 </div> <div v-show="isShowPlayer"> - - <div class="close-video-button"> - <CloseOutlined /> - </div> - <video - class="video-container" + class="TCPlayer-video-contaiiner" id="TCPlaeyrContainer" width="235px" height="178px" autoplay preload="auto" playsinline + muted webkit-playsinline ></video> </div> + + <!-- <video id="flv-player" class="video-js vjs-default-skin" controls preload="auto" width="400" height="250" style="position:relative;left:10px;"> + </video> --> + <!-- <EasyPlayer + style="width:900px;height:500px;" + :videoUrl="'http://221.2.83.254:7012/live/37130100181328000001.flv'" + :aspect="'16:9'" + live + :fluent="true" + :autoplay="true" + stretch + ></EasyPlayer> --> + + <!-- <easy-player + video-url="http://221.2.83.254:7012/live/37130100181328000001.m3u8" + :live="true" + :autoplay="true" + style="width:400px;height:250px;" + ></easy-player> --> + </div> </template> <script lang="ts" setup> import {ref,onMounted,onBeforeUnmount} from 'vue'; - - +// import EasyPlayer from '@easydarwin/easyplayer' const isShowPlayer = ref(false); let player = null; function handlerPlayVideo(item){ + isShowPlayer.value = true; if (player) { - player.src("http://221.2.83.254:7012/live/37130100181328000001.flv"); + player.src("http://221.2.83.254:7012/live/37130100181328000001.m3u8"); } else { player = TCPlayer("TCPlaeyrContainer", {}); - player.src("http://221.2.83.254:7012/live/37130100181328000001.flv"); + player.src("http://221.2.83.254:7012/live/37130100181328000001.m3u8"); } + + + // player = videojs('flv-player', { + // techOrder: ['flvjs', 'html5'], // 使用 flv.js 解码器 + // autoplay: true, + // controls: true, + // muted: true, + // preload: 'auto', + // sources: [ + // { + // // src: 'http://221.2.83.254:7012/live/37130100181328000001.flv', // 替换为你的 FLV 视频流地址 + // src:"http://60.213.14.14:8080/live/1.flv", + // type: 'video/x-flv', + // }, + // ], + // }); + + // 检查浏览器是否支持 flv.js + // if (flvjs.isSupported()) { + // alert(123); + // const flvPlayer = flvjs.createPlayer({ + // type: 'flv', + // url: 'http://221.2.83.254:7012/live/37130100181328000001.flv', // 替换为你的 FLV 视频流地址 + // },{ + // enableStashBuffer: false, // 禁用默认缓冲 + // isLive: true, // 启用实时流模式 + // stashInitialSize: , + // }); + + // flvPlayer.attachMediaElement(document.getElementById('flv-player')); + // flvPlayer.load(); + // flvPlayer.play(); + // } else { + // console.error('FLV.js is not supported in this browser.'); + // } + } onMounted(()=>{ + + + // document.getElementById("TCPlaeyrContainer").addEventListener('error', () => { + // console.error('Video playback error occurred.1111111111'); + // player.reload() + // // if (retryCount < maxRetries) { + // // retryCount++; + // // console.log(`Retrying to load video... Attempt ${retryCount}`); + // // reloadVideo(); + // // } else { + // // console.error('Max retries reached. Could not recover video playback.'); + // // alert('视频播放失败,请稍后重试!'); + // // } + // }); + setTimeout(function(){ handlerPlayVideo(123); },1000) @@ -54,7 +121,7 @@ onMounted(()=>{ onBeforeUnmount(()=>{ player.dispose(); - player = null + player = null; }) </script> @@ -66,26 +133,7 @@ onBeforeUnmount(()=>{ height: 300px; background:#041B36; position: relative; - &::before{ - content:""; - height:70%; - width:50px; - position:absolute; - bottom:10px; - left:10px; - background:url("/videosupervision/main-left.png"); - background-size:100% 100%; - } - &::after{ - content:""; - height:70%; - width:50px; - position:absolute; - bottom:10px; - right:10px; - background:url("/videosupervision/main-right.png"); - background-size:100% 100%; - } + .title{ width:100%; height:40px; @@ -143,7 +191,7 @@ onBeforeUnmount(()=>{ } } - .video-container{ + .TCPlayer-video-contaiiner{ width: calc( 100% - 30px); height: calc( 100% - 70px); position:absolute; diff --git a/src/views/sys/exception/VideoSupervision/tiflist/index.vue b/src/views/sys/exception/VideoSupervision/tiflist/index.vue index 0c71601e..1ce8acd8 100644 --- a/src/views/sys/exception/VideoSupervision/tiflist/index.vue +++ b/src/views/sys/exception/VideoSupervision/tiflist/index.vue @@ -1,34 +1,27 @@ <template> - <div class="case-list-container" v-show="tifList.length > 0"> - <div class="title"> - 查询结果 - </div> - <div class="case-list"> - <div class="case-item" v-for="item in tifList" :key="index" > - <img src="/statistical/prove-icon.png" alt="" /> - <a-checkbox v-model:checked="item.checked" @change="layerChange(item)" > - <span>{{item.tifName}}</span> - </a-checkbox> - </div> - <a-empty v-if="tifList.length <= 0" /> + <div class="case-list-container" v-show="tifList.length > 0"> + <div class="title"> + 查询结果 + </div> + <div class="case-list"> + <div class="case-item" v-for="item in tifList" :key="index" > + <img src="/statistical/prove-icon.png" alt="" /> + <a-checkbox v-model:checked="item.checked" @change="layerChange(item)" > + <span>{{item.tifName}}</span> + </a-checkbox> </div> + <a-empty v-if="tifList.length <= 0" /> </div> + </div> </template> <script lang="ts" setup> import { - onMounted, - onUnmounted, - defineProps, defineEmits, - reactive, ref, defineExpose, - watch, - inject, } from 'vue' import {getIntersectTif } from '@/api/tiankongdi'; - import { useMessage } from '@/hooks/web/useMessage'; const { createConfirm, createMessage } = useMessage(); diff --git a/src/views/sys/exception/mapComponent/layers/index.vue b/src/views/sys/exception/mapComponent/layers/index.vue new file mode 100644 index 00000000..05072156 --- /dev/null +++ b/src/views/sys/exception/mapComponent/layers/index.vue @@ -0,0 +1,290 @@ +<template> + <div class="layer-list-container" > + <div class="title"> + 图层资源 + </div> + <div class="layers-container"> + <p class="cate-name">数据图层</p> + <div class="case-list"> + <div class="case-item" v-for="item in dataLayerList" :key="index" > + <img src="/statistical/prove-icon.png" alt="" /> + <a-checkbox v-model:checked="item.checked" @change="layerChange(item,'dataLayer')" > + <span style="color:#fff;">{{item.name}}</span> + </a-checkbox> + </div> + </div> + + <p class="cate-name"> + 历史影像 + <div style="float:right;position:relative;top:-4px;"> + <a-button style="flaot:right;" @click="drawPolygon" v-if="!drawState" size="small" type="primary">查询影像</a-button> + <a-button style="flaot:right;" @click="cancleDrawPolygon" v-else size="small" type="primary">取消查询</a-button> + </div> + </p> + + <div class="case-list"> + <div class="case-item" v-for="item in historyLayerList" :key="index" > + <img src="/statistical/prove-icon.png" alt="" /> + <a-checkbox v-model:checked="item.checked" @change="layerChange(item,'historyLayer')" > + <span style="color:#fff;">{{item.name}}</span> + </a-checkbox> + </div> + <a-empty size="small" :description="'暂无历史影像数据'" v-if="historyLayerList.length <= 0" /> + </div> + + <p class="cate-name">专题图层</p> + + <div class="case-list"> + <div class="case-item" v-for="item in speciaLayerList" :key="index" > + <img src="/statistical/prove-icon.png" alt="" /> + <a-checkbox v-model:checked="item.checked" @change="layerChange(item,'speciaLayer')" > + <span style="color:#fff;">{{item.name}}</span> + </a-checkbox> + </div> + <a-empty size="small" :description="'暂无专题图层数据'" v-if="speciaLayerList.length <= 0" /> + + </div> + + <p class="cate-name">地图底图</p> + <div class="case-list"> + + <a-radio-group v-model:value="baseLayer"> + <div class="case-item" v-for="item in baseLayerList" :key="index" > + <img src="/statistical/prove-icon.png" alt="" /> + <a-radio :value="item.value" @change="layerChange(item,'baseLayer')"> + <span style="color:#fff;">{{item.name}}</span> + </a-radio> + </div> + </a-radio-group> + + </div> + </div> + </div> +</template> +<script lang="ts" setup> + import { + defineEmits, + ref, + defineExpose, + } from 'vue' + + import {getIntersectTif } from '@/api/tiankongdi'; + import { useMessage } from '@/hooks/web/useMessage'; + const { createConfirm, createMessage } = useMessage(); + + const generateUUID = ()=>{ + + var d = new Date().getTime(); //Timestamp + var d2 = (performance && performance.now && (performance.now()*1000)) || 0; + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = Math.random() * 16; + if(d > 0) { + r = (d + r)%16 | 0; + d = Math.floor(d/16); + } else { + r = (d2 + r)%16 | 0; + d2 = Math.floor(d2/16); + } + return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16); + }); + } + + const dataLayerList = ref([ + { + id:"Data", + name:"数据图层", + checked:true, + }, + { + id:"Monitor", + name:"视频监控", + checked:false, + } + ]) + + const historyLayerList = ref([ + // { + // id:generateUUID(), + // name:"费县高清影像", + // url:"http://60.213.14.14:8060/geoserver/feixian/wms?service=WMS&version=1.1.0&request=GetMap&layers=feixian:yingxiang&styles=&bbox={bbox-epsg-3857}&width=256&height=256&srs=EPSG:3857&format=image/png&TRANSPARENT=TRUE", + // checked:false, + // } + ]) + const speciaLayerList = ref([ + // { + // id:generateUUID(), + // name:"地类图层", + // url:"http://60.213.14.14:8060/geoserver/feixian/wms?service=WMS&version=1.1.0&request=GetMap&layers=feixian:yingxiang&styles=&bbox={bbox-epsg-3857}&width=256&height=256&srs=EPSG:3857&format=image/png&TRANSPARENT=TRUE", + // checked:false, + // }, + // { + // id:generateUUID(), + // name:"三调图层", + // url:"http://60.213.14.14:8060/geoserver/feixian/wms?service=WMS&version=1.1.0&request=GetMap&layers=feixian:yingxiang&styles=&bbox={bbox-epsg-3857}&width=256&height=256&srs=EPSG:3857&format=image/png&TRANSPARENT=TRUE", + // checked:false, + // } + ]) + + const baseLayer = ref("2") + + const baseLayerList = ref([ + { + id:1, + name:"导航地图", + checked:false, + value:"1" + },{ + id:2, + name:"卫星地图", + checked:false, + value:"2" + },{ + id:3, + name:"白板地图", + checked:false, + value:"3", + }, + ]) + + + const emits = defineEmits(['changeTifLayer',"drawPolygon","cancleDrawPolygon"]) + + const handlerQueryIntersectTif = (wkt:string)=>{ + + let query = { + TargetShape:wkt, + page:1, + limit:10, + key:null + } + + getIntersectTif(query).then(res=>{ + if(res.items.length>0){ + res.items?.forEach((item,index)=>{ + res.items[index].checked = false; + res.items[index].id = generateUUID(); + res.items[index].url = res.items[index].accessUrl; + }) + historyLayerList.value = res.items; + }else{ + createMessage.error("当前范围内暂无查询数据!"); + } + }) + } + + + const layerChange = (item,type)=>{ + item.type = type; + emits("changeTifLayer",item); + } + + const drawState = ref(false); + + const cancleDrawPolygon = ()=>{ + drawState.value = false; + emits("cancleDrawPolygon") + } + const drawPolygon = (state)=>{ + drawState.value = true; + emits("drawPolygon",state) + } + + // 抛出函数 + defineExpose({ + handlerQueryIntersectTif + }); + + + +</script> + <style type="less" scoped> + + .layer-list-container { + width: 208px; + height: 600px; + background: #041b36; + position: relative; + margin-bottom: 20px; + &::before { + content: ''; + height: 70%; + width: 20px; + position: absolute; + bottom: 5px; + left: 5px; + background: url('/videosupervision/main-left.png'); + background-size: 100% 100%; + } + &::after { + content: ''; + height: 70%; + width: 20px; + position: absolute; + bottom: 5px; + right: 5px; + background: url('/videosupervision/main-right.png'); + background-size: 100% 100%; + } + + .layers-container{ + width:100%; + height: calc( 100% - 60px); + overflow-y:auto; + } + .title { + width: 100%; + height: 40px; + background-image: url('/videosupervision/title.png'); + background-size: 100% 100%; + line-height: 40px; + text-indent: 18px; + font-size: 18px; + font-weight: bold; + color: #fff; + } + .switch-button { + float: right; + margin-right: 20px; + } + } + .case-list { + padding: 10px 24px; + overflow: auto; + .case-item { + cursor:pointer; + border-bottom: 1px dashed #1d60b4; + color:#fff; + padding: 5px 0; + img { + width: 15px; + margin-right:12px; + } + span { + color: #7ebbff; + margin-left: 10px; + } + } + } + ::v-deep .ant-empty-image{ + height:50px; + position:relative; + left:-26px; + } + ::v-deep .ant-empty-description{ + color:#fff; + } + + .cate-name{ + color:#fff; + padding:12px; + font-size:14px; + margin-bottom:0px; + background:rgba(0, 0, 0, 0.2) + } + + ::v-deeep .ant-empty-image img{ + width:50px; + height:50px; + } + </style> + \ No newline at end of file diff --git a/src/views/sys/exception/mapComponent/monitor/index.vue b/src/views/sys/exception/mapComponent/monitor/index.vue new file mode 100644 index 00000000..ef0b21b1 --- /dev/null +++ b/src/views/sys/exception/mapComponent/monitor/index.vue @@ -0,0 +1,156 @@ +<template> + <div class="uav-container"> + <div class="title"> + 视频监控 + </div> + <div v-show="isShowPlayer"> + <video + class="TCPlayer-video-contaiiner" + id="TCPlaeyrContainer" + width="235px" + height="178px" + autoplay + preload="auto" + playsinline + muted + webkit-playsinline + ></video> + </div> + </div> +</template> + + +<script lang="ts" setup> + +import {ref,onMounted,defineProps,onBeforeUnmount} from 'vue'; + +const props = defineProps(["playUrl"]) + +let player = null; + +const isShowPlayer = ref(false); + + +function handlerPlayVideo(item){ + + isShowPlayer.value = true; + + if (player) { + player.src(props.playUrl); + } else { + player = TCPlayer("TCPlaeyrContainer", {}); + player.src(props.playUrl); + } +} + +// 初始化视频控件 +onMounted(()=>{ + setTimeout(function(){ + handlerPlayVideo(123); + },1000) +}) + +// 销毁视频控件 +onBeforeUnmount(()=>{ + player.dispose(); + player = null; +}) + + +</script> + +<style type="less" scoped> + +.uav-container{ + width: 418px; + height: 300px; + background:#041B36; + position: relative; + + .title{ + width:100%; + height:40px; + background-image:url("/videosupervision/title.png"); + background-size:100% 100%; + line-height:40px; + text-indent:18px; + font-size:18px; + font-weight:bold; + color:#fff; + } + .switch-button{ + float:right; + margin-right:20px; + } + .uav-list-container{ + width:100%; + height: calc( 100% - 60px); + overflow:auto; + padding:20px 20px; + position:relative; + z-index:999; + .uav-empty{ + width:100%; + height:100%; + text-align:center; + color:#999; + img{ + width:120px; + margin:40px 0px 18px 0px; + } + } + .uav-item{ + width:100%; + height:40px; + padding:0px 15px; + line-height:40px; + color:#f1f1f1; + display:flex; + background:rgba(0,0,0,0.2); + &:hover{ + background:rgba(0,0,0,0.4); + } + div{ + flex:1; + } + .position{ + max-width:30px; + cursor:pointer; + } + .play{ + max-width:30px; + cursor:pointer; + } + } + } + + .TCPlayer-video-contaiiner{ + width: calc( 100% - 30px); + height: calc( 100% - 70px); + position:absolute; + margin:15px; + top:40px; + right:0px; + z-index:1000; + background:#041B36; + .video-contain { + width: 100%; + height: 100%; + } + + } + .close-video-button{ + position:absolute; + top:40px; + right:10px; + background:rgba(0,0,0,0.3); + z-index:100100; + color:#fff; + padding:10px; + cursor:pointer; + &:hover{ + color:#408eff; + } + } +} +</style> \ No newline at end of file