UNPKG

@l5i/dashjs

Version:

A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers.

3 lines 56 kB
/*! v2.9.2-da8f9429, 2018-10-25T19:36:59Z */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,(b.dashjs||(b.dashjs={})).Protection=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c||a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(){d(this,a)}return e(a,[{key:"extend",value:function(a,b){if(a){var c=!!b&&b.override,d=!!b&&b.publicOnly;for(var e in a)!a.hasOwnProperty(e)||this[e]&&!c||d&&-1===a[e].indexOf("public_")||(this[e]=a[e])}}}]),a}();c.default=f,b.exports=c.default},{}],2:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(){d(this,a)}return e(a,[{key:"extend",value:function(a,b){if(a){var c=!!b&&b.override,d=!!b&&b.publicOnly;for(var e in a)!a.hasOwnProperty(e)||this[e]&&!c||d&&-1===a[e].indexOf("public_")||(this[e]=a[e])}}}]),a}();c.default=f,b.exports=c.default},{}],3:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(){d(this,a),this.init()}return e(a,[{key:"init",value:function(){this.CLEARKEY_KEYSTEM_STRING="org.w3.clearkey",this.WIDEVINE_KEYSTEM_STRING="com.widevine.alpha",this.PLAYREADY_KEYSTEM_STRING="com.microsoft.playready"}}]),a}(),g=new f;c.default=g,b.exports=c.default},{}],4:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(){d(this,a)}return e(a,null,[{key:"findCencContentProtection",value:function(a){for(var b=null,c=0;c<a.length;++c){var d=a[c];"urn:mpeg:dash:mp4protection:2011"===d.schemeIdUri.toLowerCase()&&"cenc"===d.value.toLowerCase()&&(b=d)}return b}},{key:"getPSSHData",value:function(a){var b=8,c=new DataView(a),d=c.getUint8(b);return b+=20,d>0&&(b+=4+16*c.getUint32(b)),b+=4,a.slice(b)}},{key:"getPSSHForKeySystem",value:function(b,c){var d=a.parsePSSHList(c);return d.hasOwnProperty(b.uuid.toLowerCase())?d[b.uuid.toLowerCase()]:null}},{key:"parseInitDataFromContentProtection",value:function(a,b){return"pssh"in a?b.decodeArray(a.pssh.__text).buffer:null}},{key:"parsePSSHList",value:function(a){if(null===a)return[];for(var b=new DataView(a.buffer||a),c=!1,d={},e=0;!c;){var f=void 0,g=void 0,h=void 0,i=void 0,j=e;if(e>=b.buffer.byteLength)break;if(f=b.getUint32(e),g=e+f,e+=4,1886614376===b.getUint32(e))if(e+=4,0===(h=b.getUint8(e))||1===h){e++,e+=3,i="";var k=void 0,l=void 0;for(k=0;k<4;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=4,i+="-",k=0;k<2;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=2,i+="-",k=0;k<2;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=2,i+="-",k=0;k<2;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=2,i+="-",k=0;k<6;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;e+=6,i=i.toLowerCase(),b.getUint32(e),e+=4,d[i]=b.buffer.slice(j,g),e=g}else e=g;else e=g}return d}}]),a}();c.default=f,b.exports=c.default},{}],5:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){var c=null,d=(0,i.default)(e).getInstance();d.setConfig({debug:a.debug,BASE64:a.BASE64}),d.initialize();var f=b(a);return!c&&f&&(c=(0,g.default)(e).create({protectionModel:f,protectionKeyController:d,eventBus:a.eventBus,debug:a.debug,events:a.events,BASE64:a.BASE64,constants:a.constants}),a.capabilities.setEncryptedMediaSupported(!0)),c}function b(a){var b=a.debug,f=b.getLogger(d),g=a.eventBus,h=a.errHandler,i=a.videoModel?a.videoModel.getElement():null;return i&&void 0===i.onencrypted||i&&void 0===i.mediaKeys?c(i,u)?(f.info("EME detected on this user agent! (ProtectionModel_3Feb2014)"),(0,q.default)(e).create({debug:b,eventBus:g,events:a.events,api:c(i,u)})):c(i,t)?(f.info("EME detected on this user agent! (ProtectionModel_01b)"),(0,s.default)(e).create({debug:b,eventBus:g,errHandler:h,events:a.events,api:c(i,t)})):(f.warn("No supported version of EME detected on this user agent! - Attempts to play encrypted content will fail!"),null):(f.info("EME detected on this user agent! (ProtectionModel_21Jan2015)"),(0,o.default)(e).create({debug:b,eventBus:g,events:a.events}))}function c(a,b){for(var c=0;c<b.length;c++){var d=b[c];if("function"==typeof a[d[Object.keys(d)[0]]])return d}return null}var d=void 0,e=this.context;return d={createProtectionSystem:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(7),g=d(f),h=a(8),i=d(h),j=a(6),k=d(j),l=a(13),m=d(l),n=a(15),o=d(n),p=a(16),q=d(p),r=a(14),s=d(r),t=[{generateKeyRequest:"generateKeyRequest",addKey:"addKey",cancelKeyRequest:"cancelKeyRequest",needkey:"needkey",keyerror:"keyerror",keyadded:"keyadded",keymessage:"keymessage"},{generateKeyRequest:"webkitGenerateKeyRequest",addKey:"webkitAddKey",cancelKeyRequest:"webkitCancelKeyRequest",needkey:"webkitneedkey",keyerror:"webkitkeyerror",keyadded:"webkitkeyadded",keymessage:"webkitkeymessage"}],u=[{setMediaKeys:"setMediaKeys",MediaKeys:"MediaKeys",release:"close",needkey:"needkey",error:"keyerror",message:"keymessage",ready:"keyadded",close:"keyclose"},{setMediaKeys:"msSetMediaKeys",MediaKeys:"MSMediaKeys",release:"close",needkey:"msneedkey",error:"mskeyerror",message:"mskeymessage",ready:"mskeyadded",close:"mskeyclose"}];e.__dashjs_factory_name="Protection";var v=dashjs.FactoryMaker.getClassFactory(e);v.events=k.default,v.errors=m.default,dashjs.FactoryMaker.updateClassFactory(e.__dashjs_factory_name,v),c.default=v,b.exports=c.default},{13:13,14:14,15:15,16:16,6:6,7:7,8:8}],6:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(2),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.INTERNAL_KEY_MESSAGE="internalKeyMessage",this.INTERNAL_KEY_SYSTEM_SELECTED="internalKeySystemSelected",this.INTERNAL_KEY_STATUS_CHANGED="internalkeyStatusChanged",this.KEY_ADDED="public_keyAdded",this.KEY_ERROR="public_keyError",this.KEY_MESSAGE="public_keyMessage",this.KEY_SESSION_CLOSED="public_keySessionClosed",this.KEY_SESSION_CREATED="public_keySessionCreated",this.KEY_SESSION_REMOVED="public_keySessionRemoved",this.KEY_STATUSES_CHANGED="public_keyStatusesChanged",this.KEY_SYSTEM_ACCESS_COMPLETE="public_keySystemAccessComplete",this.KEY_SYSTEM_SELECTED="public_keySystemSelected",this.LICENSE_REQUEST_COMPLETE="public_licenseRequestComplete",this.NEED_KEY="needkey",this.PROTECTION_CREATED="public_protectioncreated",this.PROTECTION_DESTROYED="public_protectiondestroyed",this.SERVER_CERTIFICATE_UPDATED="serverCertificateUpdated",this.TEARDOWN_COMPLETE="protectionTeardownComplete",this.VIDEO_ELEMENT_SELECTED="videoElementSelected"}return f(b,a),b}(i.default),k=new j;c.default=k,b.exports=c.default},{2:2}],7:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){P=K.getLogger(O),Q=[],R=[],T="temporary",U=""}function c(){if(!(I&&I.hasOwnProperty("on")&&G&&G.hasOwnProperty("getSupportedKeySystemsFromContentProtection")))throw new Error("Missing config parameter(s)")}function d(a){if(!a)throw new Error("mediaInfo can not be null or undefined");c(),I.on(J.INTERNAL_KEY_MESSAGE,D,this),I.on(J.INTERNAL_KEY_STATUS_CHANGED,C,this),R.push(a);var b=G.getSupportedKeySystemsFromContentProtection(a.contentProtection);b&&b.length>0&&A(b,!0)}function e(a){return G.getSupportedKeySystemsFromContentProtection(a)}function f(a,b){var c=g.default.getPSSHForKeySystem(V,a),d=x(V);if(c){for(var e=H.getAllInitData(),f=0;f<e.length;f++)if(G.initDataEquals(c,e[f]))return void P.warn("DRM: Ignoring initData because we have already seen it!");try{H.createKeySession(c,d,z(V),b)}catch(h){I.trigger(J.KEY_SESSION_CREATED,{data:null,error:new o.default(m.default.KEY_SESSION_CREATED_ERROR_CODE,m.default.KEY_SESSION_CREATED_ERROR_MESSAGE+h.message)})}}else a?H.createKeySession(a,d,z(V),b):I.trigger(J.KEY_SESSION_CREATED,{data:null,error:new o.default(m.default.KEY_SESSION_CREATED_ERROR_CODE,m.default.KEY_SESSION_CREATED_ERROR_MESSAGE+"Selected key system is "+V.systemString+". needkey/encrypted event contains no initData corresponding to that key system!")})}function h(a,b){H.loadKeySession(a,b,z(V))}function j(a){H.removeKeySession(a)}function l(a){H.closeKeySession(a)}function n(a){H.setServerCertificate(a)}function r(a){a?(H.setMediaElement(a),I.on(J.NEED_KEY,E,this)):null===a&&(H.setMediaElement(a),I.off(J.NEED_KEY,E,this))}function s(a){T=a}function t(a){U=a}function u(a){S=a,G.setProtectionData(a)}function v(){H&&H.stop()}function w(){I.off(J.INTERNAL_KEY_MESSAGE,D,this),I.off(J.INTERNAL_KEY_STATUS_CHANGED,C,this),r(null),V=void 0,H&&(H.reset(),H=null),N.forEach(function(a){return clearTimeout(a)}),N=[],R=[]}function x(a){var b=null;if(a){var c=a.systemString;S&&(b=c in S?S[c]:null)}return b}function y(a){var b=x(a),c=[],d=[],e=b&&b.audioRobustness&&b.audioRobustness.length>0?b.audioRobustness:U,f=b&&b.videoRobustness&&b.videoRobustness.length>0?b.videoRobustness:U,g=z(a),h=b&&b.distinctiveIdentifier?b.distinctiveIdentifier:"optional",j=b&&b.persistentState?b.persistentState:"temporary"===g?"optional":"required";return R.forEach(function(a){a.type===M.AUDIO?c.push(new i.default(a.codec,e)):a.type===M.VIDEO&&d.push(new i.default(a.codec,f))}),new k.default(c,d,h,j,[g])}function z(a){var b=x(a);return b&&b.sessionType?b.sessionType:T}function A(a,b){var c=this,d=[],e=void 0;if(V){for(e=0;e<a.length;e++)if(V===a[e].ks){var g=function(){d.push({ks:a[e].ks,configs:[y(V)]});var g=function d(g){I.off(J.KEY_SYSTEM_ACCESS_COMPLETE,d,c),g.error?b||I.trigger(J.KEY_SYSTEM_SELECTED,{error:new o.default(m.default.KEY_SYSTEM_ACCESS_DENIED_ERROR_CODE,m.default.KEY_SYSTEM_ACCESS_DENIED_ERROR_MESSAGE+g.error)}):(P.info("DRM: KeySystem Access Granted"),I.trigger(J.KEY_SYSTEM_SELECTED,{data:g.data}),a[e].sessionId?h(a[e].sessionId,a[e].initData):a[e].initData&&f(a[e].initData,a[e].cdmData))};return I.on(J.KEY_SYSTEM_ACCESS_COMPLETE,g,c),H.requestKeySystemAccess(d),"break"}();if("break"===g)break}}else if(void 0===V){var i;!function(){V=null,Q.push(a);for(var g=0;g<a.length;g++)d.push({ks:a[g].ks,configs:[y(a[g].ks)]});var j=void 0,k=function a(d){I.off(J.KEY_SYSTEM_ACCESS_COMPLETE,a,c),d.error?(V=void 0,I.off(J.INTERNAL_KEY_SYSTEM_SELECTED,i,c),b||I.trigger(J.KEY_SYSTEM_SELECTED,{data:null,error:new o.default(m.default.KEY_SYSTEM_ACCESS_DENIED_ERROR_CODE,m.default.KEY_SYSTEM_ACCESS_DENIED_ERROR_MESSAGE+d.error)})):(j=d.data,P.info("DRM: KeySystem Access Granted ("+j.keySystem.systemString+")! Selecting key system..."),H.selectKeySystem(j))};i=function a(d){if(I.off(J.INTERNAL_KEY_SYSTEM_SELECTED,a,c),I.off(J.KEY_SYSTEM_ACCESS_COMPLETE,k,c),d.error)V=void 0,b||I.trigger(J.KEY_SYSTEM_SELECTED,{data:null,error:new o.default(m.default.KEY_SYSTEM_ACCESS_DENIED_ERROR_CODE,m.default.KEY_SYSTEM_ACCESS_DENIED_ERROR_MESSAGE+"Error selecting key system! -- "+d.error)});else{if(!H)return;V=H.getKeySystem(),I.trigger(J.KEY_SYSTEM_SELECTED,{data:j});var g=x(V);g&&g.serverCertificate&&g.serverCertificate.length>0&&H.setServerCertificate(L.decodeArray(g.serverCertificate).buffer);for(var i=0;i<Q.length;i++)for(e=0;e<Q[i].length;e++)if(V===Q[i][e].ks){if(G.isClearKey(V)&&g&&g.hasOwnProperty("clearkeys")){var l={kids:Object.keys(g.clearkeys)};Q[i][e].initData=(new TextEncoder).encode(JSON.stringify(l))}Q[i][e].sessionId?h(Q[i][e].sessionId,Q[i][e].initData):null!==Q[i][e].initData&&f(Q[i][e].initData,Q[i][e].cdmData);break}}},I.on(J.INTERNAL_KEY_SYSTEM_SELECTED,i,c),I.on(J.KEY_SYSTEM_ACCESS_COMPLETE,k,c),H.requestKeySystemAccess(d)}()}else Q.push(a)}function B(a,b){I.trigger(J.LICENSE_REQUEST_COMPLETE,{data:a,error:b})}function C(a){a.error?I.trigger(J.KEY_STATUSES_CHANGED,{data:null,error:a.error}):P.debug("DRM: key status = "+a.status)}function D(a){P.debug("DRM: onKeyMessage");var b=a.data;I.trigger(J.KEY_MESSAGE,{data:b});var c=b.messageType?b.messageType:"license-request",d=b.message,e=b.sessionToken,f=x(V),h=V?V.systemString:null,i=G.getLicenseServer(V,f,c),j={sessionToken:e,messageType:c};if(!d||0===d.byteLength)return void B(j,new o.default(m.default.MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_CODE,m.default.MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_MESSAGE));if(!i)return P.debug("DRM: License server request not required for this message (type = "+a.data.messageType+"). Session ID = "+e.getSessionID()),void B(j);if(G.isClearKey(V)){var k=G.processClearKeyLicenseRequest(V,f,d);if(k)return P.debug("DRM: ClearKey license request handled by application!"),B(j),void H.updateKeySession(e,k)}var l=new XMLHttpRequest,n=null;if(f&&f.serverURL){var p=f.serverURL;"string"==typeof p&&""!==p?n=p:"object"==typeof p&&p.hasOwnProperty(c)&&(n=p[c])}else f&&f.laURL&&""!==f.laURL?n=f.laURL:(n=V.getLicenseServerURLFromInitData(g.default.getPSSHData(e.initData)))||(n=a.data.laURL);if(!n)return void B(j,new o.default(m.default.MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_CODE,m.default.MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_MESSAGE));var q=function(a,b,c,d){var e=a.response?i.getErrorResponse(a.response,c,d):"NONE";B(b,new o.default(m.default.MEDIA_KEY_MESSAGE_LICENSER_ERROR_CODE,m.default.MEDIA_KEY_MESSAGE_LICENSER_ERROR_MESSAGE+c+' update, XHR complete. status is "'+a.statusText+'" ('+a.status+"), readyState is "+a.readyState+". Response is "+e))};l.open(i.getHTTPMethod(c),n,!0),l.responseType=i.getResponseType(h,c),l.onload=function(){if(H)if(200==this.status){var a=i.getLicenseMessage(this.response,h,c);null!==a?(B(j),H.updateKeySession(e,a)):q(this,j,h,c)}else q(this,j,h,c)},l.onabort=function(){B(j,new o.default(m.default.MEDIA_KEY_MESSAGE_LICENSER_ERROR_CODE,m.default.MEDIA_KEY_MESSAGE_LICENSER_ERROR_MESSAGE+h+' update, XHR aborted. status is "'+this.statusText+'" ('+this.status+"), readyState is "+this.readyState))},l.onerror=function(){B(j,new o.default(m.default.MEDIA_KEY_MESSAGE_LICENSER_ERROR_CODE,m.default.MEDIA_KEY_MESSAGE_LICENSER_ERROR_MESSAGE+h+' update, XHR error. status is "'+this.statusText+'" ('+this.status+"), readyState is "+this.readyState))};var r=function(a){if(a)for(var b in a)"authorization"===b.toLowerCase()&&(l.withCredentials=!0),l.setRequestHeader(b,a[b])};f&&r(f.httpRequestHeaders),r(V.getRequestHeadersFromMessage(d)),f&&"boolean"==typeof f.withCredentials&&(l.withCredentials=f.withCredentials),l.send(V.getLicenseRequestFromMessage(d))}function E(a,b){if(P.debug("DRM: onNeedKey"),"cenc"!==a.key.initDataType)return void P.warn("DRM: Only 'cenc' initData is supported! Ignoring initData of type: "+a.key.initDataType);if(0===R.length&&(P.warn("DRM: onNeedKey called before initializeForMedia, wait until initialized"),(b=void 0===b?1:b+1)<p))return void N.push(setTimeout(function(){E(a,b)},q));var c=a.key.initData;if(ArrayBuffer.isView(c)&&(c=c.buffer),V){var d=g.default.getPSSHForKeySystem(V,c);if(d)for(var e=H.getAllInitData(),f=0;f<e.length;f++)if(G.initDataEquals(d,e[f]))return void P.warn("DRM: Ignoring initData because we have already seen it!")}P.debug("DRM: initData:",String.fromCharCode.apply(null,new Uint8Array(c)));var h=G.getSupportedKeySystems(c,S);if(0===h.length)return void P.debug("DRM: Received needkey event with initData, but we don't support any of the key systems!");A(h,!1)}function F(){return G?G.getKeySystems():[]}a=a||{};var G=a.protectionKeyController,H=a.protectionModel,I=a.eventBus,J=a.events,K=a.debug,L=a.BASE64,M=a.constants,N=[],O=void 0,P=void 0,Q=void 0,R=void 0,S=void 0,T=void 0,U=void 0,V=void 0;return O={initializeForMedia:d,createKeySession:f,loadKeySession:h,removeKeySession:j,closeKeySession:l,setServerCertificate:n,setMediaElement:r,setSessionType:s,setRobustnessLevel:t,setProtectionData:u,getSupportedKeySystemsFromContentProtection:e,getKeySystems:F,stop:v,reset:w},b(),O}Object.defineProperty(c,"__esModule",{value:!0});var f=a(4),g=d(f),h=a(26),i=d(h),j=a(25),k=d(j),l=a(13),m=d(l),n=a(28),o=d(n),p=5,q=500;e.__dashjs_factory_name="ProtectionController",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{13:13,25:25,26:26,28:28,4:4}],8:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){a&&(a.debug&&(v=a.debug,x=v.getLogger(t)),a.BASE64&&(A=a.BASE64))}function b(){z=[];var a=void 0;a=(0,o.default)(r).getInstance({BASE64:A}),z.push(a),a=(0,m.default)(r).getInstance({BASE64:A}),z.push(a),a=(0,i.default)(r).getInstance({BASE64:A}),z.push(a),B=a,a=(0,k.default)(r).getInstance({BASE64:A,debug:v}),z.push(a),C=a}function c(){return z}function d(a){for(var b=0;b<z.length;b++)if(z[b].systemString===a)return z[b];return null}function e(a){return a===B||a===C}function f(a,b){if(a.byteLength===b.byteLength){for(var c=new Uint8Array(a),d=new Uint8Array(b),e=0;e<c.length;e++)if(c[e]!==d[e])return!1;return!0}return!1}function h(a){var b=void 0,c=void 0,d=void 0,e=void 0,f=[];if(a)for(d=0;d<z.length;++d)for(c=z[d],e=0;e<a.length;++e)if(b=a[e],b.schemeIdUri.toLowerCase()===c.schemeIdURI){var g=c.getInitData(b);g?f.push({ks:z[d],initData:g,cdmData:c.getCDMData(),sessionId:c.getSessionId(b)}):this.isClearKey(c)&&f.push({ks:c,initData:null})}return f}function j(a,b){for(var c=[],d=g.default.parsePSSHList(a),e=void 0,f=void 0,h=void 0,i=0;i<z.length;++i)e=z[i],f=e.systemString,h=!b||f in b,e.uuid in d&&h&&c.push({ks:e,initData:d[e.uuid],cdmData:e.getCDMData(),sessionId:e.getSessionId()});return c}function l(a,b,c){if("license-release"===c||"individualization-request"===c)return null;var d=null;return b&&b.hasOwnProperty("drmtoday")?d=(0,q.default)(r).getInstance({BASE64:A}):a.systemString===y.default.WIDEVINE_KEYSTEM_STRING?d=(0,u.default)(r).getInstance():a.systemString===y.default.PLAYREADY_KEYSTEM_STRING?d=(0,s.default)(r).getInstance():a.systemString===y.default.CLEARKEY_KEYSTEM_STRING&&(d=(0,w.default)(r).getInstance()),d}function n(a,b,c){try{return a.getClearKeysFromProtectionData(b,c)}catch(d){return x.error("Failed to retrieve clearkeys from ProtectionData"),null}}function p(a){for(var b=(function(b){var c=null;return a&&(c=b in a?a[b]:null),c}),c=0;c<z.length;c++){var d=z[c];d.hasOwnProperty("init")&&d.init(b(d.systemString))}}var r=this.context,t=void 0,v=void 0,x=void 0,z=void 0,A=void 0,B=void 0,C=void 0;return t={initialize:b,setProtectionData:p,isClearKey:e,initDataEquals:f,getKeySystems:c,getKeySystemBySystemString:d,getSupportedKeySystemsFromContentProtection:h,getSupportedKeySystems:j,getLicenseServer:l,processClearKeyLicenseRequest:n,setConfig:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(4),g=d(f),h=a(9),i=d(h),j=a(11),k=d(j),l=a(12),m=d(l),n=a(10),o=d(n),p=a(18),q=d(p),r=a(19),s=d(r),t=a(20),u=d(t),v=a(17),w=d(v),x=a(3),y=d(x);e.__dashjs_factory_name="ProtectionKeyController",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{10:10,11:11,12:12,17:17,18:18,19:19,20:20,3:3,4:4,9:9}],9:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=null;if(a){for(var d=JSON.parse(String.fromCharCode.apply(null,new Uint8Array(b))),e=[],f=0;f<d.kids.length;f++){var h=d.kids[f],j=a.clearkeys&&a.clearkeys.hasOwnProperty(h)?a.clearkeys[h]:null;if(!j)throw new Error("DRM: ClearKey keyID ("+h+") is not known!");e.push(new g.default(h,j))}c=new i.default(e)}return c}function c(a){return k.default.parseInitDataFromContentProtection(a,l)}function d(){return null}function e(a){return new Uint8Array(a)}function f(){return null}function h(){return null}function j(){return null}a=a||{};var l=a.BASE64;return{uuid:n,schemeIdURI:p,systemString:o,getInitData:c,getRequestHeadersFromMessage:d,getLicenseRequestFromMessage:e,getLicenseServerURLFromInitData:f,getCDMData:h,getSessionId:j,getClearKeysFromProtectionData:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(23),g=d(f),h=a(21),i=d(h),j=a(4),k=d(j),l=a(3),m=d(l),n="e2719d58-a985-b3c9-781a-b030af78d30e",o=m.default.CLEARKEY_KEYSTEM_STRING,p="urn:uuid:"+n;e.__dashjs_factory_name="KeySystemClearKey",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{21:21,23:23,3:3,4:4}],10:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){if(!r||!r.hasOwnProperty("decodeArray")||!r.hasOwnProperty("decodeArray"))throw new Error("Missing config parameter(s)")}function c(a){var b=void 0,c=void 0,d={},e=new DOMParser,f="utf16"===q?new Uint16Array(a):new Uint8Array(a);b=String.fromCharCode.apply(null,f),c=e.parseFromString(b,"application/xml");for(var g=c.getElementsByTagName("name"),h=c.getElementsByTagName("value"),i=0;i<g.length;i++)d[g[i].childNodes[0].nodeValue]=h[i].childNodes[0].nodeValue;return d.hasOwnProperty("Content")&&(d["Content-Type"]=d.Content,delete d.Content),d.hasOwnProperty("Content-Type")||(d["Content-Type"]="text/xml; charset="+q),d}function d(a){var c=null,d=new DOMParser,e="utf16"===q?new Uint16Array(a):new Uint8Array(a);b();var f=String.fromCharCode.apply(null,e),g=d.parseFromString(f,"application/xml");if(g.getElementsByTagName("Challenge")[0]){var h=g.getElementsByTagName("Challenge")[0].childNodes[0].nodeValue;h&&(c=r.decode(h))}else if(g.getElementsByTagName("parsererror").length)return a;return c}function e(a){if(a)for(var b=new DataView(a),c=b.getUint16(4,!0),d=6,e=new DOMParser,f=0;f<c;f++){var g=b.getUint16(d,!0);d+=2;var h=b.getUint16(d,!0);if(d+=2,1===g){var i=a.slice(d,d+h),j=String.fromCharCode.apply(null,new Uint16Array(i)),k=e.parseFromString(j,"application/xml");if(k.getElementsByTagName("LA_URL")[0]){var l=k.getElementsByTagName("LA_URL")[0].childNodes[0].nodeValue;if(l)return l}if(k.getElementsByTagName("LUI_URL")[0]){var m=k.getElementsByTagName("LUI_URL")[0].childNodes[0].nodeValue;if(m)return m}}else d+=h}return null}function f(a){var c=new Uint8Array([112,115,115,104,0,0,0,0]),d=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]),e=0,f=null,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0;if(b(),"pssh"in a)return g.default.parseInitDataFromContentProtection(a,r);if("pro"in a)f=r.decodeArray(a.pro.__text);else{if(!("prheader"in a))return null;f=r.decodeArray(a.prheader.__text)}return h=f.length,i=4+c.length+d.length+4+h,j=new ArrayBuffer(i),k=new Uint8Array(j),l=new DataView(j),l.setUint32(e,i),e+=4,k.set(c,e),e+=c.length,k.set(d,e),e+=d.length,l.setUint32(e,h),e+=4,k.set(f,e),e+=h,k.buffer}function h(a){if("utf8"!==a&&"utf16"!==a)throw new Error("Illegal PlayReady message format! -- "+a);q=a}function i(a){a&&(n=a)}function o(){var a=void 0,c=void 0,d=void 0,e=void 0;if(b(),n&&n.cdmData){for(a=[],e=0;e<n.cdmData.length;++e)a.push(n.cdmData.charCodeAt(e)),a.push(0);for(a=String.fromCharCode.apply(null,a),a=r.encode(a),c=m.replace("%CUSTOMDATA%",a),d=[],e=0;e<c.length;++e)d.push(c.charCodeAt(e)),d.push(0);return new Uint8Array(d).buffer}return null}function p(){return null}a=a||{};var q="utf16",r=a.BASE64;return{uuid:j,schemeIdURI:l,systemString:k,getInitData:f,getRequestHeadersFromMessage:c,getLicenseRequestFromMessage:d,getLicenseServerURLFromInitData:e,getCDMData:o,getSessionId:p,setPlayReadyMessageFormat:h,init:i}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(4),g=d(f),h=a(3),i=d(h),j="9a04f079-9840-4286-ab92-e65be0885f95",k=i.default.PLAYREADY_KEYSTEM_STRING,l="urn:uuid:"+j,m='<PlayReadyCDMData type="LicenseAcquisition"><LicenseAcquisition version="1.0" Proactive="false"><CustomData encoding="base64encoded">%CUSTOMDATA%</CustomData></LicenseAcquisition></PlayReadyCDMData>',n=void 0;e.__dashjs_factory_name="KeySystemPlayReady",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{3:3,4:4}],11:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=null;if(a){for(var d=JSON.parse(String.fromCharCode.apply(null,new Uint8Array(b))),e=[],f=0;f<d.kids.length;f++){var h=d.kids[f],j=a.clearkeys&&a.clearkeys.hasOwnProperty(h)?a.clearkeys[h]:null;if(!j)throw new Error("DRM: ClearKey keyID ("+h+") is not known!");e.push(new g.default(h,j))}c=new i.default(e),q.warn("ClearKey schemeIdURI is using W3C Common PSSH systemID (1077efec-c0b2-4d02-ace3-3c1e52e2fb4b) in Content Protection. See DASH-IF IOP v4.1 section 7.6.2.4")}return c}function c(a){return k.default.parseInitDataFromContentProtection(a,m)}function d(){return null}function e(a){return new Uint8Array(a)}function f(){return null}function h(){return null}function j(){return null}var l=void 0,m=a.BASE64,q=a.debug.getLogger(l);return l={uuid:n,schemeIdURI:p,systemString:o,getInitData:c,getRequestHeadersFromMessage:d,getLicenseRequestFromMessage:e,getLicenseServerURLFromInitData:f,getCDMData:h,getSessionId:j,getClearKeysFromProtectionData:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(23),g=d(f),h=a(21),i=d(h),j=a(4),k=d(j),l=a(3),m=d(l),n="1077efec-c0b2-4d02-ace3-3c1e52e2fb4b",o=m.default.CLEARKEY_KEYSTEM_STRING,p="urn:uuid:"+n;e.__dashjs_factory_name="KeySystemW3CClearKey",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{21:21,23:23,3:3,4:4}],12:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){a&&(m=a)}function c(a){return g.default.parseInitDataFromContentProtection(a,n)}function d(){return null}function e(a){return new Uint8Array(a)}function f(){return null}function h(){return null}function i(a){return m&&m.sessionId?m.sessionId:a&&a.sessionId?a.sessionId:null}a=a||{};var m=null,n=a.BASE64;return{uuid:j,schemeIdURI:l,systemString:k,init:b,getInitData:c,getRequestHeadersFromMessage:d,getLicenseRequestFromMessage:e,getLicenseServerURLFromInitData:f,getCDMData:h,getSessionId:i}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(4),g=d(f),h=a(3),i=d(h),j="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",k=i.default.WIDEVINE_KEYSTEM_STRING,l="urn:uuid:"+j;e.__dashjs_factory_name="KeySystemWidevine",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{3:3,4:4}],13:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(1),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.MEDIA_KEYERR_CODE=100,this.MEDIA_KEYERR_UNKNOWN_CODE=101,this.MEDIA_KEYERR_CLIENT_CODE=102,this.MEDIA_KEYERR_SERVICE_CODE=103,this.MEDIA_KEYERR_OUTPUT_CODE=104,this.MEDIA_KEYERR_HARDWARECHANGE_CODE=105,this.MEDIA_KEYERR_DOMAIN_CODE=106,this.MEDIA_KEY_MESSAGE_ERROR_CODE=107,this.MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_CODE=108,this.SERVER_CERTIFICATE_UPDATED_ERROR_CODE=109,this.KEY_STATUS_CHANGED_EXPIRED_ERROR_CODE=110,this.MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_CODE=111,this.KEY_SYSTEM_ACCESS_DENIED_ERROR_CODE=112,this.KEY_SESSION_CREATED_ERROR_CODE=113,this.MEDIA_KEY_MESSAGE_LICENSER_ERROR_CODE=114,this.MEDIA_KEYERR_UNKNOWN_MESSAGE="An unspecified error occurred. This value is used for errors that don't match any of the other codes.",this.MEDIA_KEYERR_CLIENT_MESSAGE="The Key System could not be installed or updated.",this.MEDIA_KEYERR_SERVICE_MESSAGE="The message passed into update indicated an error from the license service.",this.MEDIA_KEYERR_OUTPUT_MESSAGE="There is no available output device with the required characteristics for the content protection system.",this.MEDIA_KEYERR_HARDWARECHANGE_MESSAGE="A hardware configuration change caused a content protection error.",this.MEDIA_KEYERR_DOMAIN_MESSAGE="An error occurred in a multi-device domain licensing configuration. The most common error is a failure to join the domain.",this.MEDIA_KEY_MESSAGE_ERROR_MESSAGE="Multiple key sessions were creates with a user-agent that does not support sessionIDs!! Unpredictable behavior ahead!",this.MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_MESSAGE="DRM: Empty key message from CDM",this.SERVER_CERTIFICATE_UPDATED_ERROR_MESSAGE="Error updating server certificate -- ",this.KEY_STATUS_CHANGED_EXPIRED_ERROR_MESSAGE="DRM: KeyStatusChange error! -- License has expired",this.MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_MESSAGE="DRM: No license server URL specified!",this.KEY_SYSTEM_ACCESS_DENIED_ERROR_MESSAGE="DRM: KeySystem Access Denied! -- ",this.KEY_SESSION_CREATED_ERROR_MESSAGE="DRM: unable to create session! --",this.MEDIA_KEY_MESSAGE_LICENSER_ERROR_MESSAGE="DRM: licenser error! --"}return f(b,a),b}(i.default),k=new j;c.default=k,b.exports=c.default},{1:1}],14:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){F=B.getLogger(E),G=null,H=null,J=[],K=[],I=(0,g.default)(y).getInstance(),M=v()}function c(){G&&x();for(var a=0;a<K.length;a++)p(K[a]);z.trigger(A.TEARDOWN_COMPLETE)}function d(){return H}function e(){ for(var a=[],b=0;b<J.length;b++)a.push(J[b].initData);for(var b=0;b<K.length;b++)a.push(K[b].initData);return a}function f(a){var b=G;b||(b=document.createElement("video"));for(var c=!1,d=0;d<a.length;d++)for(var e=a[d].ks.systemString,f=a[d].configs,g=null,h=null,i=0;i<f.length;i++){var j=f[i].videoCapabilities;if(j&&0!==j.length){h=[];for(var k=0;k<j.length;k++)""!==b.canPlayType(j[k].contentType,e)&&h.push(j[k])}if(!(!g&&!h||g&&0===g.length||h&&0===h.length)){c=!0;var l=new o.default(g,h),m=I.getKeySystemBySystemString(e);z.trigger(A.KEY_SYSTEM_ACCESS_COMPLETE,{data:new q.default(m,l)});break}}c||z.trigger(A.KEY_SYSTEM_ACCESS_COMPLETE,{error:"Key system access denied! -- No valid audio/video content configurations detected!"})}function h(a){H=a.keySystem,z.trigger(A.INTERNAL_KEY_SYSTEM_SELECTED)}function j(a){G!==a&&(G&&x(),(G=a)&&(G.addEventListener(C.keyerror,M),G.addEventListener(C.needkey,M),G.addEventListener(C.keymessage,M),G.addEventListener(C.keyadded,M),z.trigger(A.VIDEO_ELEMENT_SELECTED)))}function l(a){if(!H)throw new Error("Can not create sessions until you have selected a key system");if(L||0===K.length){var b={sessionID:null,initData:a,getSessionID:function(){return this.sessionID},getExpirationTime:function(){return NaN},getSessionType:function(){return"temporary"}};return J.push(b),G[C.generateKeyRequest](H.systemString,new Uint8Array(a)),b}throw new Error("Multiple sessions not allowed!")}function n(a,b){var c=a.sessionID;if(I.isClearKey(H))for(var d=0;d<b.keyPairs.length;d++)G[C.addKey](H.systemString,b.keyPairs[d].key,b.keyPairs[d].keyID,c);else G[C.addKey](H.systemString,new Uint8Array(b),new Uint8Array(a.initData),c)}function p(a){try{G[C.cancelKeyRequest](H.systemString,a.sessionID)}catch(b){z.trigger(A.KEY_SESSION_CLOSED,{data:null,error:"Error closing session ("+a.sessionID+") "+b.message})}}function r(){}function t(){}function u(){}function v(){return{handleEvent:function(a){var b=null;switch(a.type){case C.needkey:var c=ArrayBuffer.isView(a.initData)?a.initData.buffer:a.initData;z.trigger(A.NEED_KEY,{key:new i.default(c,"cenc")});break;case C.keyerror:if(b=w(K,a.sessionId),b||(b=w(J,a.sessionId)),b){var d=s.default.MEDIA_KEYERR_CODE,e="";switch(a.errorCode.code){case 1:d=s.default.MEDIA_KEYERR_UNKNOWN_CODE,e+="MEDIA_KEYERR_UNKNOWN - "+s.default.MEDIA_KEYERR_UNKNOWN_MESSAGE;break;case 2:d=s.default.MEDIA_KEYERR_CLIENT_CODE,e+="MEDIA_KEYERR_CLIENT - "+s.default.MEDIA_KEYERR_CLIENT_MESSAGE;break;case 3:d=s.default.MEDIA_KEYERR_SERVICE_CODE,e+="MEDIA_KEYERR_SERVICE - "+s.default.MEDIA_KEYERR_SERVICE_MESSAGE;break;case 4:d=s.default.MEDIA_KEYERR_OUTPUT_CODE,e+="MEDIA_KEYERR_OUTPUT - "+s.default.MEDIA_KEYERR_OUTPUT_MESSAGE;break;case 5:d=s.default.MEDIA_KEYERR_HARDWARECHANGE_CODE,e+="MEDIA_KEYERR_HARDWARECHANGE - "+s.default.MEDIA_KEYERR_HARDWARECHANGE_MESSAGE;break;case 6:d=s.default.MEDIA_KEYERR_DOMAIN_CODE,e+="MEDIA_KEYERR_DOMAIN - "+s.default.MEDIA_KEYERR_DOMAIN_MESSAGE}e+=" System Code = "+a.systemCode,z.trigger(A.KEY_ERROR,{data:new k.default(d,e,b)})}else F.error("No session token found for key error");break;case C.keyadded:b=w(K,a.sessionId),b||(b=w(J,a.sessionId)),b?(F.debug("DRM: Key added."),z.trigger(A.KEY_ADDED,{data:b})):F.debug("No session token found for key added");break;case C.keymessage:if(L=null!==a.sessionId&&void 0!==a.sessionId,L?!(b=w(K,a.sessionId))&&J.length>0&&(b=J.shift(),K.push(b),b.sessionID=a.sessionId,z.trigger(A.KEY_SESSION_CREATED,{data:b})):J.length>0&&(b=J.shift(),K.push(b),0!==J.length&&(D.mediaKeyMessageError(s.default.MEDIA_KEY_MESSAGE_ERROR_MESSAGE),D.error(new k.default(s.default.MEDIA_KEY_MESSAGE_ERROR_CODE,s.default.MEDIA_KEY_MESSAGE_ERROR_MESSAGE)))),b){var f=ArrayBuffer.isView(a.message)?a.message.buffer:a.message;b.keyMessage=f,z.trigger(A.INTERNAL_KEY_MESSAGE,{data:new m.default(b,f,a.defaultURL)})}else F.warn("No session token found for key message")}}}}function w(a,b){if(b&&a){for(var c=a.length,d=0;d<c;d++)if(a[d].sessionID==b)return a[d];return null}return null}function x(){G.removeEventListener(C.keyerror,M),G.removeEventListener(C.needkey,M),G.removeEventListener(C.keymessage,M),G.removeEventListener(C.keyadded,M)}a=a||{};var y=this.context,z=a.eventBus,A=a.events,B=a.debug,C=a.api,D=a.errHandler,E=void 0,F=void 0,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0,L=void 0,M=void 0;return E={getAllInitData:e,requestKeySystemAccess:f,getKeySystem:d,selectKeySystem:h,setMediaElement:j,createKeySession:l,updateKeySession:n,closeKeySession:p,setServerCertificate:r,loadKeySession:t,removeKeySession:u,stop:c,reset:c},b(),E}Object.defineProperty(c,"__esModule",{value:!0});var f=a(8),g=d(f),h=a(27),i=d(h),j=a(28),k=d(j),l=a(22),m=d(l),n=a(25),o=d(n),p=a(24),q=d(p),r=a(13),s=d(r);e.__dashjs_factory_name="ProtectionModel_01b",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{13:13,22:22,24:24,25:25,27:27,28:28,8:8}],15:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){H=F.getLogger(G),I=null,J=null,K=null,L=[],N=(0,g.default)(C).getInstance(),M=y()}function c(){var a=L.length,b=void 0;0!==a?function(){for(var c=function(a){z(a),0===L.length&&(J?(J.removeEventListener("encrypted",M),J.setMediaKeys(null).then(function(){D.trigger(E.TEARDOWN_COMPLETE)})):D.trigger(E.TEARDOWN_COMPLETE))},d=0;d<a;d++)b=L[d],function(a){b.session.closed.then(function(){c(a)}),x(b).catch(function(){c(a)})}(b)}():D.trigger(E.TEARDOWN_COMPLETE)}function d(){for(var a=void 0,b=0;b<L.length;b++)a=L[b],a.getUsable()||x(a).catch(function(){z(a)})}function e(){return I}function f(){for(var a=[],b=0;b<L.length;b++)L[b].initData&&a.push(L[b].initData);return a}function h(a){w(a,0)}function j(a){a.mksa.createMediaKeys().then(function(b){I=a.keySystem,K=b,J?J.setMediaKeys(K).then(function(){D.trigger(E.INTERNAL_KEY_SYSTEM_SELECTED)}):D.trigger(E.INTERNAL_KEY_SYSTEM_SELECTED)}).catch(function(){D.trigger(E.INTERNAL_KEY_SYSTEM_SELECTED,{error:"Error selecting keys system ("+a.keySystem.systemString+")! Could not create MediaKeys -- TODO"})})}function l(a){J!==a&&(J&&(J.removeEventListener("encrypted",M),J.setMediaKeys&&J.setMediaKeys(null)),(J=a)&&(J.addEventListener("encrypted",M),J.setMediaKeys&&K&&J.setMediaKeys(K)))}function n(a){if(!I||!K)throw new Error("Can not set server certificate until you have selected a key system");K.setServerCertificate(a).then(function(){H.info("DRM: License server certificate successfully updated."),D.trigger(E.SERVER_CERTIFICATE_UPDATED)}).catch(function(a){D.trigger(E.SERVER_CERTIFICATE_UPDATED,{error:new m.default(k.default.SERVER_CERTIFICATE_UPDATED_ERROR_CODE,k.default.SERVER_CERTIFICATE_UPDATED_ERROR_MESSAGE+a.name)})})}function p(a,b,c){if(!I||!K)throw new Error("Can not create sessions until you have selected a key system");var d=K.createSession(c),e=B(d,a,c),f=this.getKeySystem(),g=f.systemString===s.default.CLEARKEY_KEYSTEM_STRING&&b&&b.clearkeys?"keyids":"cenc";d.generateRequest(g,a).then(function(){H.debug("DRM: Session created. SessionID = "+e.getSessionID()),D.trigger(E.KEY_SESSION_CREATED,{data:e})}).catch(function(a){z(e),D.trigger(E.KEY_SESSION_CREATED,{data:null,error:new m.default(k.default.KEY_SESSION_CREATED_ERROR_CODE,k.default.KEY_SESSION_CREATED_ERROR_MESSAGE+"Error generating key request -- "+a.name)})})}function r(a,b){var c=a.session;N.isClearKey(I)&&(b=b.toJWK()),c.update(b).catch(function(b){D.trigger(E.KEY_ERROR,{data:new m.default(k.default.MEDIA_KEYERR_CODE,"Error sending update() message! "+b.name,a)})})}function t(a,b,c){if(!I||!K)throw new Error("Can not load sessions until you have selected a key system");for(var d=0;d<L.length;d++)if(a===L[d].sessionId)return void H.warn("DRM: Ignoring session ID because we have already seen it!");var e=K.createSession(c),f=B(e,b,c,a);e.load(a).then(function(b){b?(H.debug("DRM: Session loaded. SessionID = "+f.getSessionID()),D.trigger(E.KEY_SESSION_CREATED,{data:f})):(z(f),D.trigger(E.KEY_SESSION_CREATED,{data:null,error:new m.default(k.default.KEY_SESSION_CREATED_ERROR_CODE,k.default.KEY_SESSION_CREATED_ERROR_MESSAGE+"Could not load session! Invalid Session ID ("+a+")")}))}).catch(function(b){z(f),D.trigger(E.KEY_SESSION_CREATED,{data:null,error:new m.default(k.default.KEY_SESSION_CREATED_ERROR_CODE,k.default.KEY_SESSION_CREATED_ERROR_MESSAGE+"Could not load session ("+a+")! "+b.name)})})}function u(a){a.session.remove().then(function(){H.debug("DRM: Session removed. SessionID = "+a.getSessionID()),D.trigger(E.KEY_SESSION_REMOVED,{data:a.getSessionID()})},function(b){D.trigger(E.KEY_SESSION_REMOVED,{data:null,error:"Error removing session ("+a.getSessionID()+"). "+b.name})})}function v(a){x(a).catch(function(b){z(a),D.trigger(E.KEY_SESSION_CLOSED,{data:null,error:"Error closing session ("+a.getSessionID()+") "+b.name})})}function w(a,b){if(void 0===navigator.requestMediaKeySystemAccess||"function"!=typeof navigator.requestMediaKeySystemAccess)return void D.trigger(E.KEY_SYSTEM_ACCESS_COMPLETE,{error:"Insecure origins are not allowed"});!function(b){var c=a[b].ks,d=a[b].configs;navigator.requestMediaKeySystemAccess(c.systemString,d).then(function(a){var b="function"==typeof a.getConfiguration?a.getConfiguration():null,d=new q.default(c,b);d.mksa=a,D.trigger(E.KEY_SYSTEM_ACCESS_COMPLETE,{data:d})}).catch(function(c){++b<a.length?w(a,b):D.trigger(E.KEY_SYSTEM_ACCESS_COMPLETE,{error:"Key system access denied! "+c.message})})}(b)}function x(a){var b=a.session;return b.removeEventListener("keystatuseschange",a),b.removeEventListener("message",a),b.close()}function y(){return{handleEvent:function(a){switch(a.type){case"encrypted":if(a.initData){var b=ArrayBuffer.isView(a.initData)?a.initData.buffer:a.initData;D.trigger(E.NEED_KEY,{key:new i.default(b,a.initDataType)})}}}}}function z(a){for(var b=0;b<L.length;b++)if(L[b]===a){L.splice(b,1);break}}function A(a){var b=void 0,c=void 0;return a&&a.length>0&&(a[0]&&("string"==typeof a[0]?b=a[0]:c=a[0]),a[1]&&("string"==typeof a[1]?b=a[1]:c=a[1])),{status:b,keyId:c}}function B(a,b,c,d){var e={session:a,initData:b,sessionId:d,handleEvent:function(a){switch(a.type){case"keystatuseschange":D.trigger(E.KEY_STATUSES_CHANGED,{data:this}),a.target.keyStatuses.forEach(function(){var a=A(arguments);switch(a.status){case"expired":D.trigger(E.INTERNAL_KEY_STATUS_CHANGED,{error:new m.default(k.default.KEY_STATUS_CHANGED_EXPIRED_ERROR_CODE,k.default.KEY_STATUS_CHANGED_EXPIRED_ERROR_MESSAGE)});break;default:D.trigger(E.INTERNAL_KEY_STATUS_CHANGED,a)}});break;case"message":var b=ArrayBuffer.isView(a.message)?a.message.buffer:a.message;D.trigger(E.INTERNAL_KEY_MESSAGE,{data:new o.default(this,b,void 0,a.messageType)})}},getSessionID:function(){return a.sessionId},getExpirationTime:function(){return a.expiration},getKeyStatuses:function(){return a.keyStatuses},getUsable:function(){var b=!1;return a.keyStatuses.forEach(function(){"usable"===A(arguments).status&&(b=!0)}),b},getSessionType:function(){return c}};return a.addEventListener("keystatuseschange",e),a.addEventListener("message",e),a.closed.then(function(){z(e),H.debug("DRM: Session closed. SessionID = "+e.getSessionID()),D.trigger(E.KEY_SESSION_CLOSED,{data:e.getSessionID()})}),L.push(e),e}a=a||{};var C=this.context,D=a.eventBus,E=a.events,F=a.debug,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0,L=void 0,M=void 0,N=void 0;return G={getAllInitData:f,requestKeySystemAccess:h,getKeySystem:e,selectKeySystem:j,setMediaElement:l,setServerCertificate:n,createKeySession:p,updateKeySession:r,loadKeySession:t,removeKeySession:u,closeKeySession:v,stop:d,reset:c},b(),G}Object.defineProperty(c,"__esModule",{value:!0});var f=a(8),g=d(f),h=a(27),i=d(h),j=a(13),k=d(j),l=a(28),m=d(l),n=a(22),o=d(n),p=a(24),q=d(p),r=a(3),s=d(r);e.__dashjs_factory_name="ProtectionModel_21Jan2015",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{13:13,22:22,24:24,27:27,28:28,3:3,8:8}],16:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){E=B.getLogger(D),F=null,G=null,H=null,I=null,J=[],L=(0,g.default)(y).getInstance(),K=v()}function c(){try{for(var a=0;a<J.length;a++)p(J[a]);F&&F.removeEventListener(C.needkey,K),z.trigger(A.TEARDOWN_COMPLETE)}catch(b){z.trigger(A.TEARDOWN_COMPLETE,{error:"Error tearing down key sessions and MediaKeys! -- "+b.message})}}function d(){return G}function e(){for(var a=[],b=0;b<J.length;b++)a.push(J[b].initData);return a}function f(a){for(var b=!1,c=0;c<a.length;c++)for(var d=a[c].ks.systemString,e=a[c].configs,f=null,g=null,h=0;h<e.length;h++){var i=e[h].audioCapabilities,j=e[h].videoCapabilities;if(i&&0!==i.length){f=[];for(var k=0;k<i.length;k++)window[C.MediaKeys].isTypeSupported(d,i[k].contentType)&&f.push(i[k])}if(j&&0!==j.length){g=[];for(var l=0;l<j.length;l++)window[C.MediaKeys].isTypeSupported(d,j[l].contentType)&&g.push(j[l])}if(!(!f&&!g||f&&0===f.length||g&&0===g.length)){b=!0;var m=new q.default(f,g),n=L.getKeySystemBySystemString(d);z.trigger(A.KEY_SYSTEM_ACCESS_COMPLETE,{data:new s.default(n,m)});break}}b||z.trigger(A.KEY_SYSTEM_ACCESS_COMPLETE,{error:"Key system access denied! -- No valid audio/video content configurations detected!"})}function h(a){try{H=a.mediaKeys=new window[C.MediaKeys](a.keySystem.systemString),G=a.keySystem,I=a,F&&w(),z.trigger(A.INTERNAL_KEY_SYSTEM_SELECTED)}catch(b){z.trigger(A.INTERNAL_KEY_SYSTEM_SELECTED,{error:"Error selecting keys system ("+G.systemString+")! Could not create MediaKeys -- TODO"})}}function j(a){F!==a&&(F&&F.removeEventListener(C.needkey,K),(F=a)&&(F.addEventListener(C.needkey,K),H&&w()))}function l(a,b,c,d){if(!G||!H||!I)throw new Error("Can not create sessions until you have selected a key system");var e=null;if(I.ksConfiguration.videoCapabilities&&I.ksConfiguration.videoCapabilities.length>0&&(e=I.ksConfiguration.videoCapabilities[0]),null===e&&I.ksConfiguration.audioCapabilities&&I.ksConfiguration.audioCapabilities.length>0&&(e=I.ksConfiguration.audioCapabilities[0]),null===e)throw new Error("Can not create sessions for unknown content types.");var f=e.contentType,g=H.createSession(f,new Uint8Array(a),d?new Uint8Array(d):null),h=x(g,a);g.addEventListener(C.error,h),g.addEventListener(C.message,h),g.addEventListener(C.ready,h),g.addEventListener(C.close,h),J.push(h),E.debug("DRM: Session created. SessionID = "+h.getSessionID()),z.trigger(A.KEY_SESSION_CREATED,{data:h})}function n(a,b){var c=a.session;L.isClearKey(G)?c.update(new Uint8Array(b.toJWK())):c.update(new Uint8Array(b))}function p(a){var b=a.session;b.removeEventListener(C.error,a),b.removeEventListener(C.message,a),b.removeEventListener(C.ready,a),b.removeEventListener(C.close,a);for(var c=0;c<J.length;c++)if(J[c]===a){J.splice(c,1);break}b[C.release]()}function r(){}function t(){}function u(){}function v(){return{handleEvent:function(a){switch(a.type){case C.needkey:if(a.initData){var b=ArrayBuffer.isView(a.initData)?a.initData.buffer:a.initData;z.trigger(A.NEED_KEY,{key:new i.default(b,"cenc")})}}}}}function w(){var a=null,b=function(){F.removeEventListener("loadedmetadata",a),F[C.setMediaKeys](H),z.trigger(A.VIDEO_ELEMENT_SELECTED)};F.readyState>=1?b():(a=b.bind(this),F.addEventListener("loadedmetadata",a))}function x(a,b){return{session:a,initData:b,getSessionID:function(){return this.session.sessionId},getExpirationTime:function(){return NaN},getSessionType:function(){return"temporary"},handleEvent:function(a){switch(a.type){case C.error:z.trigger(A.KEY_ERROR,{data:new k.default(m.default.MEDIA_KEYERR_CODE,"KeyError",this)});break;case C.message:var b=ArrayBuffer.isView(a.message)?a.message.buffer:a.message;z.trigger(A.INTERNAL_KEY_MESSAGE,{data:new o.default(this,b,a.destinationURL)});break;case C.ready:E.debug("DRM: Key added."),z.trigger(A.KEY_ADDED);break;case C.close:E.debug("DRM: Session closed. SessionID = "+this.getSessionID()),z.trigger(A.KEY_SESSION_CLOSED,{data:this.getSessionID()})}}}}a=a||{};var y=this.context,z=a.eventBus,A=a.events,B=a.debug,C=a.api,D=void 0,E=void 0,F=void 0,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0,L=void 0;return D={getAllInitData:e,requestKeySystemAccess:f,getKeySystem:d,selectKeySystem:h,setMediaElement:j,createKeySession:l,updateKeySession:n,closeKeySession:p,setServerCertificate:r,loadKeySession:t,removeKeySession:u,stop:c,reset:c},b(),D}Object.defineProperty(c,"__esModule",{value:!0});var f=a(8),g=d(f),h=a(27),i=d(h),j=a(28),k=d(j),l=a(13),m=d(l),n=a(22),o=d(n),p=a(25),q=d(p),r=a(24),s=d(r);e.__dashjs_factory_name="ProtectionModel_3Feb2014",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{13:13,22:22,24:24,25:25,27:27,28:28,8:8}],17:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){var c=JSON.parse(String.fromCharCode.apply(null,new Uint8Array(b)));a+="/?";for(var d=0;d<c.kids.length;d++)a+=c.kids[d]+"&";return a=a.substring(0,a.length-1)}function b(){return"GET"}function c(){return"json"}function d(a){if(!a.hasOwnProperty("keys"))return null;for(var b=[],c=0;c<a.keys.length;c++){var d=a.keys[c],e=d.kid.replace(/=/g,""),f=d.k.replace(/=/g,"");b.push(new g.default(e,f))}return new i.default(b)}function e(a){return String.fromCharCode.apply(null,new Uint8Array(a))}return{getServerURLFromMessage:a,getHTTPMethod:b,getResponseType:c,getLicenseMessage:d,getErrorResponse:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(23),g=d(f),h=a(21),i=d(h);e.__dashjs_factory_name="ClearKey",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{21:21,23:23}],18:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){if(!i||!i.hasOwnProperty("decodeArray"))throw new Error("Missing config parameter(s)")}function c(a){return a}function d(){return"POST"}function e(a){return j[a].responseType}function f(a,c){return b(),j[c].getLicenseMessage(a)}function h(a,b){return j[b].getErrorResponse(a)}a=a||{};var i=a.BASE64,j={};j[g.default.WIDEVINE_KEYSTEM_STRING]={res