[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/media/vendor/mediaelement/js/ -> mediaelement.js (source)

   1  /*!
   2   * MediaElement.js
   3   * http://www.mediaelementjs.com/
   4   *
   5   * Wrapper that mimics native HTML5 MediaElement (audio and video)
   6   * using a variety of technologies (pure JavaScript, Flash, iframe)
   7   *
   8   * Copyright 2010-2017, John Dyer (http://j.hn/)
   9   * License: MIT
  10   *
  11   */(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(_dereq_,module,exports){
  12  
  13  },{}],2:[function(_dereq_,module,exports){
  14  (function (global){
  15  var topLevel = typeof global !== 'undefined' ? global :
  16      typeof window !== 'undefined' ? window : {}
  17  var minDoc = _dereq_(1);
  18  
  19  var doccy;
  20  
  21  if (typeof document !== 'undefined') {
  22      doccy = document;
  23  } else {
  24      doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];
  25  
  26      if (!doccy) {
  27          doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;
  28      }
  29  }
  30  
  31  module.exports = doccy;
  32  
  33  }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
  34  },{"1":1}],3:[function(_dereq_,module,exports){
  35  (function (global){
  36  var win;
  37  
  38  if (typeof window !== "undefined") {
  39      win = window;
  40  } else if (typeof global !== "undefined") {
  41      win = global;
  42  } else if (typeof self !== "undefined"){
  43      win = self;
  44  } else {
  45      win = {};
  46  }
  47  
  48  module.exports = win;
  49  
  50  }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
  51  },{}],4:[function(_dereq_,module,exports){
  52  (function (root) {
  53  
  54    // Store setTimeout reference so promise-polyfill will be unaffected by
  55    // other code modifying setTimeout (like sinon.useFakeTimers())
  56    var setTimeoutFunc = setTimeout;
  57  
  58    function noop() {}
  59    
  60    // Polyfill for Function.prototype.bind
  61    function bind(fn, thisArg) {
  62      return function () {
  63        fn.apply(thisArg, arguments);
  64      };
  65    }
  66  
  67    function Promise(fn) {
  68      if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');
  69      if (typeof fn !== 'function') throw new TypeError('not a function');
  70      this._state = 0;
  71      this._handled = false;
  72      this._value = undefined;
  73      this._deferreds = [];
  74  
  75      doResolve(fn, this);
  76    }
  77  
  78    function handle(self, deferred) {
  79      while (self._state === 3) {
  80        self = self._value;
  81      }
  82      if (self._state === 0) {
  83        self._deferreds.push(deferred);
  84        return;
  85      }
  86      self._handled = true;
  87      Promise._immediateFn(function () {
  88        var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
  89        if (cb === null) {
  90          (self._state === 1 ? resolve : reject)(deferred.promise, self._value);
  91          return;
  92        }
  93        var ret;
  94        try {
  95          ret = cb(self._value);
  96        } catch (e) {
  97          reject(deferred.promise, e);
  98          return;
  99        }
 100        resolve(deferred.promise, ret);
 101      });
 102    }
 103  
 104    function resolve(self, newValue) {
 105      try {
 106        // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
 107        if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');
 108        if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
 109          var then = newValue.then;
 110          if (newValue instanceof Promise) {
 111            self._state = 3;
 112            self._value = newValue;
 113            finale(self);
 114            return;
 115          } else if (typeof then === 'function') {
 116            doResolve(bind(then, newValue), self);
 117            return;
 118          }
 119        }
 120        self._state = 1;
 121        self._value = newValue;
 122        finale(self);
 123      } catch (e) {
 124        reject(self, e);
 125      }
 126    }
 127  
 128    function reject(self, newValue) {
 129      self._state = 2;
 130      self._value = newValue;
 131      finale(self);
 132    }
 133  
 134    function finale(self) {
 135      if (self._state === 2 && self._deferreds.length === 0) {
 136        Promise._immediateFn(function() {
 137          if (!self._handled) {
 138            Promise._unhandledRejectionFn(self._value);
 139          }
 140        });
 141      }
 142  
 143      for (var i = 0, len = self._deferreds.length; i < len; i++) {
 144        handle(self, self._deferreds[i]);
 145      }
 146      self._deferreds = null;
 147    }
 148  
 149    function Handler(onFulfilled, onRejected, promise) {
 150      this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
 151      this.onRejected = typeof onRejected === 'function' ? onRejected : null;
 152      this.promise = promise;
 153    }
 154  
 155    /**
 156     * Take a potentially misbehaving resolver function and make sure
 157     * onFulfilled and onRejected are only called once.
 158     *
 159     * Makes no guarantees about asynchrony.
 160     */
 161    function doResolve(fn, self) {
 162      var done = false;
 163      try {
 164        fn(function (value) {
 165          if (done) return;
 166          done = true;
 167          resolve(self, value);
 168        }, function (reason) {
 169          if (done) return;
 170          done = true;
 171          reject(self, reason);
 172        });
 173      } catch (ex) {
 174        if (done) return;
 175        done = true;
 176        reject(self, ex);
 177      }
 178    }
 179  
 180    Promise.prototype['catch'] = function (onRejected) {
 181      return this.then(null, onRejected);
 182    };
 183  
 184    Promise.prototype.then = function (onFulfilled, onRejected) {
 185      var prom = new (this.constructor)(noop);
 186  
 187      handle(this, new Handler(onFulfilled, onRejected, prom));
 188      return prom;
 189    };
 190  
 191    Promise.all = function (arr) {
 192      var args = Array.prototype.slice.call(arr);
 193  
 194      return new Promise(function (resolve, reject) {
 195        if (args.length === 0) return resolve([]);
 196        var remaining = args.length;
 197  
 198        function res(i, val) {
 199          try {
 200            if (val && (typeof val === 'object' || typeof val === 'function')) {
 201              var then = val.then;
 202              if (typeof then === 'function') {
 203                then.call(val, function (val) {
 204                  res(i, val);
 205                }, reject);
 206                return;
 207              }
 208            }
 209            args[i] = val;
 210            if (--remaining === 0) {
 211              resolve(args);
 212            }
 213          } catch (ex) {
 214            reject(ex);
 215          }
 216        }
 217  
 218        for (var i = 0; i < args.length; i++) {
 219          res(i, args[i]);
 220        }
 221      });
 222    };
 223  
 224    Promise.resolve = function (value) {
 225      if (value && typeof value === 'object' && value.constructor === Promise) {
 226        return value;
 227      }
 228  
 229      return new Promise(function (resolve) {
 230        resolve(value);
 231      });
 232    };
 233  
 234    Promise.reject = function (value) {
 235      return new Promise(function (resolve, reject) {
 236        reject(value);
 237      });
 238    };
 239  
 240    Promise.race = function (values) {
 241      return new Promise(function (resolve, reject) {
 242        for (var i = 0, len = values.length; i < len; i++) {
 243          values[i].then(resolve, reject);
 244        }
 245      });
 246    };
 247  
 248    // Use polyfill for setImmediate for performance gains
 249    Promise._immediateFn = (typeof setImmediate === 'function' && function (fn) { setImmediate(fn); }) ||
 250      function (fn) {
 251        setTimeoutFunc(fn, 0);
 252      };
 253  
 254    Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {
 255      if (typeof console !== 'undefined' && console) {
 256        console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console
 257      }
 258    };
 259  
 260    /**
 261     * Set the immediate function to execute callbacks
 262     * @param fn {function} Function to execute
 263     * @deprecated
 264     */
 265    Promise._setImmediateFn = function _setImmediateFn(fn) {
 266      Promise._immediateFn = fn;
 267    };
 268  
 269    /**
 270     * Change the function to execute on unhandled rejection
 271     * @param {function} fn Function to execute on unhandled rejection
 272     * @deprecated
 273     */
 274    Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {
 275      Promise._unhandledRejectionFn = fn;
 276    };
 277    
 278    if (typeof module !== 'undefined' && module.exports) {
 279      module.exports = Promise;
 280    } else if (!root.Promise) {
 281      root.Promise = Promise;
 282    }
 283  
 284  })(this);
 285  
 286  },{}],5:[function(_dereq_,module,exports){
 287  !function(root, factory) {
 288      "function" == typeof define && define.amd ? // AMD. Register as an anonymous module unless amdModuleId is set
 289      define([], function() {
 290          return root.svg4everybody = factory();
 291      }) : "object" == typeof module && module.exports ? // Node. Does not work with strict CommonJS, but
 292      // only CommonJS-like environments that support module.exports,
 293      // like Node.
 294      module.exports = factory() : root.svg4everybody = factory();
 295  }(this, function() {
 296      /*! svg4everybody v2.1.9 | github.com/jonathantneal/svg4everybody */
 297      function embed(parent, svg, target) {
 298          // if the target exists
 299          if (target) {
 300              // create a document fragment to hold the contents of the target
 301              var fragment = document.createDocumentFragment(), viewBox = !svg.hasAttribute("viewBox") && target.getAttribute("viewBox");
 302              // conditionally set the viewBox on the svg
 303              viewBox && svg.setAttribute("viewBox", viewBox);
 304              // copy the contents of the clone into the fragment
 305              for (// clone the target
 306              var clone = target.cloneNode(!0); clone.childNodes.length; ) {
 307                  fragment.appendChild(clone.firstChild);
 308              }
 309              // append the fragment into the svg
 310              parent.appendChild(fragment);
 311          }
 312      }
 313      function loadreadystatechange(xhr) {
 314          // listen to changes in the request
 315          xhr.onreadystatechange = function() {
 316              // if the request is ready
 317              if (4 === xhr.readyState) {
 318                  // get the cached html document
 319                  var cachedDocument = xhr._cachedDocument;
 320                  // ensure the cached html document based on the xhr response
 321                  cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(""), 
 322                  cachedDocument.body.innerHTML = xhr.responseText, xhr._cachedTarget = {}), // clear the xhr embeds list and embed each item
 323                  xhr._embeds.splice(0).map(function(item) {
 324                      // get the cached target
 325                      var target = xhr._cachedTarget[item.id];
 326                      // ensure the cached target
 327                      target || (target = xhr._cachedTarget[item.id] = cachedDocument.getElementById(item.id)), 
 328                      // embed the target into the svg
 329                      embed(item.parent, item.svg, target);
 330                  });
 331              }
 332          }, // test the ready state change immediately
 333          xhr.onreadystatechange();
 334      }
 335      function svg4everybody(rawopts) {
 336          function oninterval() {
 337              // while the index exists in the live <use> collection
 338              for (// get the cached <use> index
 339              var index = 0; index < uses.length; ) {
 340                  // get the current <use>
 341                  var use = uses[index], parent = use.parentNode, svg = getSVGAncestor(parent), src = use.getAttribute("xlink:href") || use.getAttribute("href");
 342                  if (!src && opts.attributeName && (src = use.getAttribute(opts.attributeName)), 
 343                  svg && src) {
 344                      if (polyfill) {
 345                          if (!opts.validate || opts.validate(src, svg, use)) {
 346                              // remove the <use> element
 347                              parent.removeChild(use);
 348                              // parse the src and get the url and id
 349                              var srcSplit = src.split("#"), url = srcSplit.shift(), id = srcSplit.join("#");
 350                              // if the link is external
 351                              if (url.length) {
 352                                  // get the cached xhr request
 353                                  var xhr = requests[url];
 354                                  // ensure the xhr request exists
 355                                  xhr || (xhr = requests[url] = new XMLHttpRequest(), xhr.open("GET", url), xhr.send(), 
 356                                  xhr._embeds = []), // add the svg and id as an item to the xhr embeds list
 357                                  xhr._embeds.push({
 358                                      parent: parent,
 359                                      svg: svg,
 360                                      id: id
 361                                  }), // prepare the xhr ready state change event
 362                                  loadreadystatechange(xhr);
 363                              } else {
 364                                  // embed the local id into the svg
 365                                  embed(parent, svg, document.getElementById(id));
 366                              }
 367                          } else {
 368                              // increase the index when the previous value was not "valid"
 369                              ++index, ++numberOfSvgUseElementsToBypass;
 370                          }
 371                      }
 372                  } else {
 373                      // increase the index when the previous value was not "valid"
 374                      ++index;
 375                  }
 376              }
 377              // continue the interval
 378              (!uses.length || uses.length - numberOfSvgUseElementsToBypass > 0) && requestAnimationFrame(oninterval, 67);
 379          }
 380          var polyfill, opts = Object(rawopts), newerIEUA = /\bTrident\/[567]\b|\bMSIE (?:9|10)\.0\b/, webkitUA = /\bAppleWebKit\/(\d+)\b/, olderEdgeUA = /\bEdge\/12\.(\d+)\b/, edgeUA = /\bEdge\/.(\d+)\b/, inIframe = window.top !== window.self;
 381          polyfill = "polyfill" in opts ? opts.polyfill : newerIEUA.test(navigator.userAgent) || (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 || (navigator.userAgent.match(webkitUA) || [])[1] < 537 || edgeUA.test(navigator.userAgent) && inIframe;
 382          // create xhr requests object
 383          var requests = {}, requestAnimationFrame = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName("use"), numberOfSvgUseElementsToBypass = 0;
 384          // conditionally start the interval if the polyfill is active
 385          polyfill && oninterval();
 386      }
 387      function getSVGAncestor(node) {
 388          for (var svg = node; "svg" !== svg.nodeName.toLowerCase() && (svg = svg.parentNode); ) {}
 389          return svg;
 390      }
 391      return svg4everybody;
 392  });
 393  },{}],6:[function(_dereq_,module,exports){
 394  'use strict';
 395  
 396  Object.defineProperty(exports, "__esModule", {
 397      value: true
 398  });
 399  
 400  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; };
 401  
 402  var _mejs = _dereq_(8);
 403  
 404  var _mejs2 = _interopRequireDefault(_mejs);
 405  
 406  var _en = _dereq_(10);
 407  
 408  var _general = _dereq_(19);
 409  
 410  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 411  
 412  var i18n = { lang: 'en', en: _en.EN };
 413  
 414  i18n.language = function () {
 415      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
 416          args[_key] = arguments[_key];
 417      }
 418  
 419      if (args !== null && args !== undefined && args.length) {
 420  
 421          if (typeof args[0] !== 'string') {
 422              throw new TypeError('Language code must be a string value');
 423          }
 424  
 425          if (!/^[a-z]{2,3}((\-|_)[a-z]{2})?$/i.test(args[0])) {
 426              throw new TypeError('Language code must have format 2-3 letters and. optionally, hyphen, underscore followed by 2 more letters');
 427          }
 428  
 429          i18n.lang = args[0];
 430  
 431          if (i18n[args[0]] === undefined) {
 432              args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {};
 433              i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN;
 434          } else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') {
 435              i18n[args[0]] = args[1];
 436          }
 437      }
 438  
 439      return i18n.lang;
 440  };
 441  
 442  i18n.t = function (message) {
 443      var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
 444  
 445  
 446      if (typeof message === 'string' && message.length) {
 447  
 448          var str = void 0,
 449              pluralForm = void 0;
 450  
 451          var language = i18n.language();
 452  
 453          var _plural = function _plural(input, number, form) {
 454  
 455              if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') {
 456                  return input;
 457              }
 458  
 459              var _pluralForms = function () {
 460                  return [function () {
 461                      return arguments.length <= 1 ? undefined : arguments[1];
 462                  }, function () {
 463                      return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
 464                  }, function () {
 465                      return (arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
 466                  }, function () {
 467                      if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
 468                          return arguments.length <= 1 ? undefined : arguments[1];
 469                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) {
 470                          return arguments.length <= 2 ? undefined : arguments[2];
 471                      } else {
 472                          return arguments.length <= 3 ? undefined : arguments[3];
 473                      }
 474                  }, function () {
 475                      if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) {
 476                          return arguments.length <= 1 ? undefined : arguments[1];
 477                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) {
 478                          return arguments.length <= 2 ? undefined : arguments[2];
 479                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) {
 480                          return arguments.length <= 3 ? undefined : arguments[3];
 481                      } else {
 482                          return arguments.length <= 4 ? undefined : arguments[4];
 483                      }
 484                  }, function () {
 485                      if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 486                          return arguments.length <= 1 ? undefined : arguments[1];
 487                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 0 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
 488                          return arguments.length <= 2 ? undefined : arguments[2];
 489                      } else {
 490                          return arguments.length <= 3 ? undefined : arguments[3];
 491                      }
 492                  }, function () {
 493                      if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
 494                          return arguments.length <= 1 ? undefined : arguments[1];
 495                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
 496                          return arguments.length <= 2 ? undefined : arguments[2];
 497                      } else {
 498                          return [3];
 499                      }
 500                  }, function () {
 501                      if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
 502                          return arguments.length <= 1 ? undefined : arguments[1];
 503                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
 504                          return arguments.length <= 2 ? undefined : arguments[2];
 505                      } else {
 506                          return arguments.length <= 3 ? undefined : arguments[3];
 507                      }
 508                  }, function () {
 509                      if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 510                          return arguments.length <= 1 ? undefined : arguments[1];
 511                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) {
 512                          return arguments.length <= 2 ? undefined : arguments[2];
 513                      } else {
 514                          return arguments.length <= 3 ? undefined : arguments[3];
 515                      }
 516                  }, function () {
 517                      if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 518                          return arguments.length <= 1 ? undefined : arguments[1];
 519                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
 520                          return arguments.length <= 2 ? undefined : arguments[2];
 521                      } else {
 522                          return arguments.length <= 3 ? undefined : arguments[3];
 523                      }
 524                  }, function () {
 525                      if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) {
 526                          return arguments.length <= 2 ? undefined : arguments[2];
 527                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) {
 528                          return arguments.length <= 3 ? undefined : arguments[3];
 529                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) {
 530                          return arguments.length <= 4 ? undefined : arguments[4];
 531                      } else {
 532                          return arguments.length <= 1 ? undefined : arguments[1];
 533                      }
 534                  }, function () {
 535                      if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 536                          return arguments.length <= 1 ? undefined : arguments[1];
 537                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
 538                          return arguments.length <= 2 ? undefined : arguments[2];
 539                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) {
 540                          return arguments.length <= 3 ? undefined : arguments[3];
 541                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) {
 542                          return arguments.length <= 4 ? undefined : arguments[4];
 543                      } else {
 544                          return arguments.length <= 5 ? undefined : arguments[5];
 545                      }
 546                  }, function () {
 547                      if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
 548                          return arguments.length <= 1 ? undefined : arguments[1];
 549                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 550                          return arguments.length <= 2 ? undefined : arguments[2];
 551                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
 552                          return arguments.length <= 3 ? undefined : arguments[3];
 553                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) {
 554                          return arguments.length <= 4 ? undefined : arguments[4];
 555                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) {
 556                          return arguments.length <= 5 ? undefined : arguments[5];
 557                      } else {
 558                          return arguments.length <= 6 ? undefined : arguments[6];
 559                      }
 560                  }, function () {
 561                      if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 562                          return arguments.length <= 1 ? undefined : arguments[1];
 563                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 11) {
 564                          return arguments.length <= 2 ? undefined : arguments[2];
 565                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
 566                          return arguments.length <= 3 ? undefined : arguments[3];
 567                      } else {
 568                          return arguments.length <= 4 ? undefined : arguments[4];
 569                      }
 570                  }, function () {
 571                      if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) {
 572                          return arguments.length <= 1 ? undefined : arguments[1];
 573                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) {
 574                          return arguments.length <= 2 ? undefined : arguments[2];
 575                      } else {
 576                          return arguments.length <= 3 ? undefined : arguments[3];
 577                      }
 578                  }, function () {
 579                      return (arguments.length <= 0 ? undefined : arguments[0]) !== 11 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
 580                  }, function () {
 581                      if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 582                          return arguments.length <= 1 ? undefined : arguments[1];
 583                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
 584                          return arguments.length <= 2 ? undefined : arguments[2];
 585                      } else {
 586                          return arguments.length <= 3 ? undefined : arguments[3];
 587                      }
 588                  }, function () {
 589                      if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 590                          return arguments.length <= 1 ? undefined : arguments[1];
 591                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
 592                          return arguments.length <= 2 ? undefined : arguments[2];
 593                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) {
 594                          return arguments.length <= 3 ? undefined : arguments[3];
 595                      } else {
 596                          return arguments.length <= 4 ? undefined : arguments[4];
 597                      }
 598                  }, function () {
 599                      return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
 600                  }, function () {
 601                      if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 602                          return arguments.length <= 1 ? undefined : arguments[1];
 603                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
 604                          return arguments.length <= 2 ? undefined : arguments[2];
 605                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) {
 606                          return arguments.length <= 3 ? undefined : arguments[3];
 607                      } else {
 608                          return arguments.length <= 4 ? undefined : arguments[4];
 609                      }
 610                  }, function () {
 611                      if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
 612                          return arguments.length <= 1 ? undefined : arguments[1];
 613                      } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 614                          return arguments.length <= 2 ? undefined : arguments[2];
 615                      } else {
 616                          return arguments.length <= 3 ? undefined : arguments[3];
 617                      }
 618                  }];
 619              }();
 620  
 621              return _pluralForms[form].apply(null, [number].concat(input));
 622          };
 623  
 624          if (i18n[language] !== undefined) {
 625              str = i18n[language][message];
 626              if (pluralParam !== null && typeof pluralParam === 'number') {
 627                  pluralForm = i18n[language]['mejs.plural-form'];
 628                  str = _plural.apply(null, [str, pluralParam, pluralForm]);
 629              }
 630          }
 631  
 632          if (!str && i18n.en) {
 633              str = i18n.en[message];
 634              if (pluralParam !== null && typeof pluralParam === 'number') {
 635                  pluralForm = i18n.en['mejs.plural-form'];
 636                  str = _plural.apply(null, [str, pluralParam, pluralForm]);
 637              }
 638          }
 639  
 640          str = str || message;
 641  
 642          if (pluralParam !== null && typeof pluralParam === 'number') {
 643              str = str.replace('%1', pluralParam);
 644          }
 645  
 646          return (0, _general.escapeHTML)(str);
 647      }
 648  
 649      return message;
 650  };
 651  
 652  _mejs2.default.i18n = i18n;
 653  
 654  if (typeof mejsL10n !== 'undefined') {
 655      _mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings);
 656  }
 657  
 658  exports.default = i18n;
 659  
 660  },{"10":10,"19":19,"8":8}],7:[function(_dereq_,module,exports){
 661  'use strict';
 662  
 663  Object.defineProperty(exports, "__esModule", {
 664      value: true
 665  });
 666  
 667  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; };
 668  
 669  var _window = _dereq_(3);
 670  
 671  var _window2 = _interopRequireDefault(_window);
 672  
 673  var _document = _dereq_(2);
 674  
 675  var _document2 = _interopRequireDefault(_document);
 676  
 677  var _mejs = _dereq_(8);
 678  
 679  var _mejs2 = _interopRequireDefault(_mejs);
 680  
 681  var _general = _dereq_(19);
 682  
 683  var _media2 = _dereq_(20);
 684  
 685  var _renderer = _dereq_(9);
 686  
 687  var _constants = _dereq_(17);
 688  
 689  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 690  
 691  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 692  
 693  var MediaElement = function MediaElement(idOrNode, options, sources) {
 694      var _this = this;
 695  
 696      _classCallCheck(this, MediaElement);
 697  
 698      var t = this;
 699  
 700      sources = Array.isArray(sources) ? sources : null;
 701  
 702      t.defaults = {
 703          renderers: [],
 704  
 705          fakeNodeName: 'div',
 706  
 707          pluginPath: 'build/',
 708  
 709          iconSprite: 'mejs-controls.svg',
 710  
 711          shimScriptAccess: 'sameDomain'
 712      };
 713  
 714      options = Object.assign(t.defaults, options);
 715  
 716      t.mediaElement = _document2.default.createElement(options.fakeNodeName);
 717  
 718      var id = idOrNode,
 719          error = false;
 720  
 721      if (typeof idOrNode === 'string') {
 722          t.mediaElement.originalNode = _document2.default.getElementById(idOrNode);
 723      } else {
 724          t.mediaElement.originalNode = idOrNode;
 725          id = idOrNode.id;
 726      }
 727  
 728      if (t.mediaElement.originalNode === undefined || t.mediaElement.originalNode === null) {
 729          return null;
 730      }
 731  
 732      t.mediaElement.options = options;
 733      id = id || 'mejs_' + Math.random().toString().slice(2);
 734  
 735      t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs');
 736  
 737      var tagName = t.mediaElement.originalNode.tagName.toLowerCase();
 738      if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) {
 739          t.mediaElement.originalNode.setAttribute('preload', 'none');
 740      }
 741  
 742      t.mediaElement.originalNode.setAttribute('tabindex', -1);
 743  
 744      t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode);
 745  
 746      t.mediaElement.appendChild(t.mediaElement.originalNode);
 747  
 748      var processURL = function processURL(url, type) {
 749          if (_window2.default.location.protocol === 'https:' && url.indexOf('http:') === 0 && _constants.IS_IOS && _mejs2.default.html5media.mediaTypes.indexOf(type) > -1) {
 750              var xhr = new XMLHttpRequest();
 751              xhr.onreadystatechange = function () {
 752                  if (this.readyState === 4 && this.status === 200) {
 753                      var _url = _window2.default.URL || _window2.default.webkitURL,
 754                          blobUrl = _url.createObjectURL(this.response);
 755                      t.mediaElement.originalNode.setAttribute('src', blobUrl);
 756                      return blobUrl;
 757                  }
 758                  return url;
 759              };
 760              xhr.open('GET', url);
 761              xhr.responseType = 'blob';
 762              xhr.send();
 763          }
 764  
 765          return url;
 766      };
 767  
 768      var mediaFiles = void 0;
 769      if (sources !== null) {
 770          mediaFiles = sources;
 771      } else if (t.mediaElement.originalNode !== null) {
 772  
 773          mediaFiles = [];
 774          switch (t.mediaElement.originalNode.nodeName.toLowerCase()) {
 775              case 'iframe':
 776                  mediaFiles.push({
 777                      type: '',
 778                      src: t.mediaElement.originalNode.getAttribute('src')
 779                  });
 780                  break;
 781              case 'audio':
 782              case 'video':
 783                  var _sources = t.mediaElement.originalNode.children.length,
 784                      nodeSource = t.mediaElement.originalNode.getAttribute('src');
 785  
 786                  if (nodeSource) {
 787                      var node = t.mediaElement.originalNode,
 788                          type = (0, _media2.formatType)(nodeSource, node.getAttribute('type'));
 789                      mediaFiles.push({
 790                          type: type,
 791                          src: processURL(nodeSource, type)
 792                      });
 793                  }
 794  
 795                  for (var i = 0; i < _sources; i++) {
 796                      var n = t.mediaElement.originalNode.children[i];
 797                      if (n.tagName.toLowerCase() === 'source') {
 798                          var src = n.getAttribute('src'),
 799                              _type = (0, _media2.formatType)(src, n.getAttribute('type'));
 800                          mediaFiles.push({ type: _type, src: processURL(src, _type) });
 801                      }
 802                  }
 803                  break;
 804          }
 805      }
 806  
 807      t.mediaElement.id = id;
 808      t.mediaElement.renderers = {};
 809      t.mediaElement.events = {};
 810      t.mediaElement.promises = [];
 811      t.mediaElement.renderer = null;
 812      t.mediaElement.rendererName = null;
 813  
 814      t.mediaElement.changeRenderer = function (rendererName, mediaFiles) {
 815          var t = _this,
 816              media = Object.keys(mediaFiles[0]).length > 2 ? mediaFiles[0] : mediaFiles[0].src;
 817  
 818          if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) {
 819              t.mediaElement.renderer.pause();
 820              if (t.mediaElement.renderer.stop) {
 821                  t.mediaElement.renderer.stop();
 822              }
 823              t.mediaElement.renderer.show();
 824              t.mediaElement.renderer.setSrc(media);
 825              return true;
 826          }
 827  
 828          if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
 829              t.mediaElement.renderer.pause();
 830              if (t.mediaElement.renderer.stop) {
 831                  t.mediaElement.renderer.stop();
 832              }
 833              t.mediaElement.renderer.hide();
 834          }
 835  
 836          var newRenderer = t.mediaElement.renderers[rendererName],
 837              newRendererType = null;
 838  
 839          if (newRenderer !== undefined && newRenderer !== null) {
 840              newRenderer.show();
 841              newRenderer.setSrc(media);
 842              t.mediaElement.renderer = newRenderer;
 843              t.mediaElement.rendererName = rendererName;
 844              return true;
 845          }
 846  
 847          var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order;
 848  
 849          for (var _i = 0, total = rendererArray.length; _i < total; _i++) {
 850              var index = rendererArray[_i];
 851  
 852              if (index === rendererName) {
 853                  var rendererList = _renderer.renderer.renderers;
 854                  newRendererType = rendererList[index];
 855  
 856                  var renderOptions = Object.assign(newRendererType.options, t.mediaElement.options);
 857                  newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles);
 858                  newRenderer.name = rendererName;
 859  
 860                  t.mediaElement.renderers[newRendererType.name] = newRenderer;
 861                  t.mediaElement.renderer = newRenderer;
 862                  t.mediaElement.rendererName = rendererName;
 863                  newRenderer.show();
 864                  return true;
 865              }
 866          }
 867  
 868          return false;
 869      };
 870  
 871      t.mediaElement.setSize = function (width, height) {
 872          if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
 873              t.mediaElement.renderer.setSize(width, height);
 874          }
 875      };
 876  
 877      t.mediaElement.generateError = function (message, urlList) {
 878          message = message || '';
 879          urlList = Array.isArray(urlList) ? urlList : [];
 880          var event = (0, _general.createEvent)('error', t.mediaElement);
 881          event.message = message;
 882          event.urls = urlList;
 883          t.mediaElement.dispatchEvent(event);
 884          error = true;
 885      };
 886  
 887      var props = _mejs2.default.html5media.properties,
 888          methods = _mejs2.default.html5media.methods,
 889          addProperty = function addProperty(obj, name, onGet, onSet) {
 890          var oldValue = obj[name];
 891          var getFn = function getFn() {
 892              return onGet.apply(obj, [oldValue]);
 893          },
 894              setFn = function setFn(newValue) {
 895              oldValue = onSet.apply(obj, [newValue]);
 896              return oldValue;
 897          };
 898  
 899          Object.defineProperty(obj, name, {
 900              get: getFn,
 901              set: setFn
 902          });
 903      },
 904          assignGettersSetters = function assignGettersSetters(propName) {
 905          if (propName !== 'src') {
 906              var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1),
 907                  getFn = function getFn() {
 908                  return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['get' + capName] === 'function' ? t.mediaElement.renderer['get' + capName]() : null;
 909              },
 910                  setFn = function setFn(value) {
 911                  if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['set' + capName] === 'function') {
 912                      t.mediaElement.renderer['set' + capName](value);
 913                  }
 914              };
 915  
 916              addProperty(t.mediaElement, propName, getFn, setFn);
 917              t.mediaElement['get' + capName] = getFn;
 918              t.mediaElement['set' + capName] = setFn;
 919          }
 920      },
 921          getSrc = function getSrc() {
 922          return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null;
 923      },
 924          setSrc = function setSrc(value) {
 925          var mediaFiles = [];
 926          if (typeof value === 'string') {
 927              mediaFiles.push({
 928                  src: value,
 929                  type: value ? (0, _media2.getTypeFromFile)(value) : ''
 930              });
 931          } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src !== undefined) {
 932              var _src = (0, _media2.absolutizeUrl)(value.src),
 933                  _type2 = value.type,
 934                  media = Object.assign(value, {
 935                  src: _src,
 936                  type: (_type2 === '' || _type2 === null || _type2 === undefined) && _src ? (0, _media2.getTypeFromFile)(_src) : _type2
 937              });
 938              mediaFiles.push(media);
 939          } else if (Array.isArray(value)) {
 940              for (var _i2 = 0, total = value.length; _i2 < total; _i2++) {
 941  
 942                  var _src2 = (0, _media2.absolutizeUrl)(value[_i2].src),
 943                      _type3 = value[_i2].type,
 944                      _media = Object.assign(value[_i2], {
 945                      src: _src2,
 946                      type: (_type3 === '' || _type3 === null || _type3 === undefined) && _src2 ? (0, _media2.getTypeFromFile)(_src2) : _type3
 947                  });
 948                  mediaFiles.push(_media);
 949              }
 950          }
 951  
 952          var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []),
 953              event = void 0;
 954  
 955          if (!t.mediaElement.paused && !(t.mediaElement.src == null || t.mediaElement.src === '')) {
 956              t.mediaElement.pause();
 957              event = (0, _general.createEvent)('pause', t.mediaElement);
 958              t.mediaElement.dispatchEvent(event);
 959          }
 960          t.mediaElement.originalNode.src = mediaFiles[0].src || '';
 961  
 962          if (renderInfo === null && mediaFiles[0].src) {
 963              t.mediaElement.generateError('No renderer found', mediaFiles);
 964              return;
 965          }
 966  
 967          var shouldChangeRenderer = !(mediaFiles[0].src == null || mediaFiles[0].src === '');
 968          return shouldChangeRenderer ? t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles) : null;
 969      },
 970          triggerAction = function triggerAction(methodName, args) {
 971          try {
 972              if (methodName === 'play' && (t.mediaElement.rendererName === 'native_dash' || t.mediaElement.rendererName === 'native_hls' || t.mediaElement.rendererName === 'vimeo_iframe')) {
 973                  var response = t.mediaElement.renderer[methodName](args);
 974                  if (response && typeof response.then === 'function') {
 975                      response.catch(function () {
 976                          if (t.mediaElement.paused) {
 977                              setTimeout(function () {
 978                                  var tmpResponse = t.mediaElement.renderer.play();
 979                                  if (tmpResponse !== undefined) {
 980                                      tmpResponse.catch(function () {
 981                                          if (!t.mediaElement.renderer.paused) {
 982                                              t.mediaElement.renderer.pause();
 983                                          }
 984                                      });
 985                                  }
 986                              }, 150);
 987                          }
 988                      });
 989                  }
 990                  return response;
 991              } else {
 992                  return t.mediaElement.renderer[methodName](args);
 993              }
 994          } catch (e) {
 995              t.mediaElement.generateError(e, mediaFiles);
 996              throw e;
 997          }
 998      },
 999          assignMethods = function assignMethods(methodName) {
1000          t.mediaElement[methodName] = function () {
1001              for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
1002                  args[_key] = arguments[_key];
1003              }
1004  
1005              if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') {
1006                  if (t.mediaElement.promises.length) {
1007                      return Promise.all(t.mediaElement.promises).then(function () {
1008                          return triggerAction(methodName, args);
1009                      }).catch(function (e) {
1010                          t.mediaElement.generateError(e, mediaFiles);
1011                          return Promise.reject(e);
1012                      });
1013                  } else {
1014                      return triggerAction(methodName, args);
1015                  }
1016              }
1017              return null;
1018          };
1019      };
1020  
1021      addProperty(t.mediaElement, 'src', getSrc, setSrc);
1022  
1023      t.mediaElement.getSrc = getSrc;
1024      t.mediaElement.setSrc = setSrc;
1025      for (var _i3 = 0, total = props.length; _i3 < total; _i3++) {
1026          assignGettersSetters(props[_i3]);
1027      }
1028  
1029      for (var _i4 = 0, _total = methods.length; _i4 < _total; _i4++) {
1030          assignMethods(methods[_i4]);
1031      }
1032  
1033      t.mediaElement.addEventListener = function (eventName, callback) {
1034          t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];
1035  
1036          t.mediaElement.events[eventName].push(callback);
1037      };
1038      t.mediaElement.removeEventListener = function (eventName, callback) {
1039          if (!eventName) {
1040              t.mediaElement.events = {};
1041              return true;
1042          }
1043  
1044          var callbacks = t.mediaElement.events[eventName];
1045  
1046          if (!callbacks) {
1047              return true;
1048          }
1049  
1050          if (!callback) {
1051              t.mediaElement.events[eventName] = [];
1052              return true;
1053          }
1054  
1055          for (var _i5 = 0; _i5 < callbacks.length; _i5++) {
1056              if (callbacks[_i5] === callback) {
1057                  t.mediaElement.events[eventName].splice(_i5, 1);
1058                  return true;
1059              }
1060          }
1061          return false;
1062      };
1063  
1064      t.mediaElement.dispatchEvent = function (event) {
1065          var callbacks = t.mediaElement.events[event.type];
1066          if (callbacks) {
1067              for (var _i6 = 0; _i6 < callbacks.length; _i6++) {
1068                  callbacks[_i6].apply(null, [event]);
1069              }
1070          }
1071      };
1072  
1073      t.mediaElement.destroy = function () {
1074          var mediaElement = t.mediaElement.originalNode.cloneNode(true);
1075          var wrapper = t.mediaElement.parentElement;
1076          mediaElement.removeAttribute('id');
1077          mediaElement.remove();
1078          t.mediaElement.remove();
1079          wrapper.appendChild(mediaElement);
1080      };
1081  
1082      if (mediaFiles.length) {
1083          t.mediaElement.src = mediaFiles;
1084      }
1085  
1086      if (t.mediaElement.promises.length) {
1087          Promise.all(t.mediaElement.promises).then(function () {
1088              if (t.mediaElement.options.success) {
1089                  t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
1090              }
1091          }).catch(function () {
1092              if (error && t.mediaElement.options.error) {
1093                  t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
1094              }
1095          });
1096      } else {
1097          if (t.mediaElement.options.success) {
1098              t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
1099          }
1100  
1101          if (error && t.mediaElement.options.error) {
1102              t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
1103          }
1104      }
1105  
1106      return t.mediaElement;
1107  };
1108  
1109  _window2.default.MediaElement = MediaElement;
1110  _mejs2.default.MediaElement = MediaElement;
1111  
1112  exports.default = MediaElement;
1113  
1114  },{"17":17,"19":19,"2":2,"20":20,"3":3,"8":8,"9":9}],8:[function(_dereq_,module,exports){
1115  'use strict';
1116  
1117  Object.defineProperty(exports, "__esModule", {
1118      value: true
1119  });
1120  
1121  var _window = _dereq_(3);
1122  
1123  var _window2 = _interopRequireDefault(_window);
1124  
1125  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1126  
1127  var mejs = {};
1128  
1129  mejs.version = '5.0.4';
1130  
1131  mejs.html5media = {
1132      properties: ['volume', 'src', 'currentTime', 'muted', 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'],
1133      readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
1134  
1135      methods: ['load', 'play', 'pause', 'canPlayType'],
1136  
1137      events: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'progress', 'canplay', 'canplaythrough', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'playing', 'pause', 'waiting', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'volumechange'],
1138  
1139      mediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg', 'video/ogv']
1140  };
1141  
1142  _window2.default.mejs = mejs;
1143  
1144  exports.default = mejs;
1145  
1146  },{"3":3}],9:[function(_dereq_,module,exports){
1147  'use strict';
1148  
1149  Object.defineProperty(exports, "__esModule", {
1150      value: true
1151  });
1152  exports.renderer = undefined;
1153  
1154  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; };
1155  
1156  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; }; }();
1157  
1158  var _mejs = _dereq_(8);
1159  
1160  var _mejs2 = _interopRequireDefault(_mejs);
1161  
1162  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1163  
1164  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1165  
1166  var Renderer = function () {
1167  	function Renderer() {
1168          _classCallCheck(this, Renderer);
1169  
1170          this.renderers = {};
1171          this.order = [];
1172      }
1173  
1174      _createClass(Renderer, [{
1175          key: 'add',
1176          value: function add(renderer) {
1177              if (renderer.name === undefined) {
1178                  throw new TypeError('renderer must contain at least `name` property');
1179              }
1180  
1181              this.renderers[renderer.name] = renderer;
1182              this.order.push(renderer.name);
1183          }
1184      }, {
1185          key: 'select',
1186          value: function select(mediaFiles) {
1187              var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
1188  
1189              var renderersLength = renderers.length;
1190  
1191              renderers = renderers.length ? renderers : this.order;
1192  
1193              if (!renderersLength) {
1194                  var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i],
1195                      rendererRanking = function rendererRanking(renderer) {
1196                      for (var i = 0, total = rendererIndicator.length; i < total; i++) {
1197                          if (rendererIndicator[i].test(renderer)) {
1198                              return i;
1199                          }
1200                      }
1201                      return rendererIndicator.length;
1202                  };
1203  
1204                  renderers.sort(function (a, b) {
1205                      return rendererRanking(a) - rendererRanking(b);
1206                  });
1207              }
1208  
1209              for (var i = 0, total = renderers.length; i < total; i++) {
1210                  var key = renderers[i],
1211                      _renderer = this.renderers[key];
1212  
1213                  if (_renderer !== null && _renderer !== undefined) {
1214                      for (var j = 0, jl = mediaFiles.length; j < jl; j++) {
1215  
1216                          if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) {
1217                              return {
1218                                  rendererName: _renderer.name,
1219                                  src: mediaFiles[j].src
1220                              };
1221                          }
1222                      }
1223                  }
1224              }
1225  
1226              return null;
1227          }
1228      }, {
1229          key: 'order',
1230          set: function set(order) {
1231              if (!Array.isArray(order)) {
1232                  throw new TypeError('order must be an array of strings.');
1233              }
1234  
1235              this._order = order;
1236          },
1237          get: function get() {
1238              return this._order;
1239          }
1240      }, {
1241          key: 'renderers',
1242          set: function set(renderers) {
1243              if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {
1244                  throw new TypeError('renderers must be an array of objects.');
1245              }
1246  
1247              this._renderers = renderers;
1248          },
1249          get: function get() {
1250              return this._renderers;
1251          }
1252      }]);
1253  
1254      return Renderer;
1255  }();
1256  
1257  var renderer = exports.renderer = new Renderer();
1258  
1259  _mejs2.default.Renderers = renderer;
1260  
1261  },{"8":8}],10:[function(_dereq_,module,exports){
1262  'use strict';
1263  
1264  Object.defineProperty(exports, "__esModule", {
1265      value: true
1266  });
1267  var EN = exports.EN = {
1268      'mejs.plural-form': 1,
1269  
1270      'mejs.download-file': 'Download File',
1271  
1272      'mejs.install-flash': 'You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/',
1273  
1274      'mejs.fullscreen': 'Fullscreen',
1275  
1276      'mejs.play': 'Play',
1277      'mejs.pause': 'Pause',
1278  
1279      'mejs.time-slider': 'Time Slider',
1280      'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.',
1281      'mejs.live-broadcast': 'Live Broadcast',
1282  
1283      'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.',
1284      'mejs.unmute': 'Unmute',
1285      'mejs.mute': 'Mute',
1286      'mejs.volume-slider': 'Volume Slider',
1287  
1288      'mejs.video-player': 'Video Player',
1289      'mejs.audio-player': 'Audio Player',
1290  
1291      'mejs.captions-subtitles': 'Captions/Subtitles',
1292      'mejs.captions-chapters': 'Chapters',
1293      'mejs.none': 'None',
1294      'mejs.afrikaans': 'Afrikaans',
1295      'mejs.albanian': 'Albanian',
1296      'mejs.arabic': 'Arabic',
1297      'mejs.belarusian': 'Belarusian',
1298      'mejs.bulgarian': 'Bulgarian',
1299      'mejs.catalan': 'Catalan',
1300      'mejs.chinese': 'Chinese',
1301      'mejs.chinese-simplified': 'Chinese (Simplified)',
1302      'mejs.chinese-traditional': 'Chinese (Traditional)',
1303      'mejs.croatian': 'Croatian',
1304      'mejs.czech': 'Czech',
1305      'mejs.danish': 'Danish',
1306      'mejs.dutch': 'Dutch',
1307      'mejs.english': 'English',
1308      'mejs.estonian': 'Estonian',
1309      'mejs.filipino': 'Filipino',
1310      'mejs.finnish': 'Finnish',
1311      'mejs.french': 'French',
1312      'mejs.galician': 'Galician',
1313      'mejs.german': 'German',
1314      'mejs.greek': 'Greek',
1315      'mejs.haitian-creole': 'Haitian Creole',
1316      'mejs.hebrew': 'Hebrew',
1317      'mejs.hindi': 'Hindi',
1318      'mejs.hungarian': 'Hungarian',
1319      'mejs.icelandic': 'Icelandic',
1320      'mejs.indonesian': 'Indonesian',
1321      'mejs.irish': 'Irish',
1322      'mejs.italian': 'Italian',
1323      'mejs.japanese': 'Japanese',
1324      'mejs.korean': 'Korean',
1325      'mejs.latvian': 'Latvian',
1326      'mejs.lithuanian': 'Lithuanian',
1327      'mejs.macedonian': 'Macedonian',
1328      'mejs.malay': 'Malay',
1329      'mejs.maltese': 'Maltese',
1330      'mejs.norwegian': 'Norwegian',
1331      'mejs.persian': 'Persian',
1332      'mejs.polish': 'Polish',
1333      'mejs.portuguese': 'Portuguese',
1334      'mejs.romanian': 'Romanian',
1335      'mejs.russian': 'Russian',
1336      'mejs.serbian': 'Serbian',
1337      'mejs.slovak': 'Slovak',
1338      'mejs.slovenian': 'Slovenian',
1339      'mejs.spanish': 'Spanish',
1340      'mejs.swahili': 'Swahili',
1341      'mejs.swedish': 'Swedish',
1342      'mejs.tagalog': 'Tagalog',
1343      'mejs.thai': 'Thai',
1344      'mejs.turkish': 'Turkish',
1345      'mejs.ukrainian': 'Ukrainian',
1346      'mejs.vietnamese': 'Vietnamese',
1347      'mejs.welsh': 'Welsh',
1348      'mejs.yiddish': 'Yiddish'
1349  };
1350  
1351  },{}],11:[function(_dereq_,module,exports){
1352  'use strict';
1353  
1354  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; };
1355  
1356  var _window = _dereq_(3);
1357  
1358  var _window2 = _interopRequireDefault(_window);
1359  
1360  var _mejs = _dereq_(8);
1361  
1362  var _mejs2 = _interopRequireDefault(_mejs);
1363  
1364  var _renderer = _dereq_(9);
1365  
1366  var _general = _dereq_(19);
1367  
1368  var _media = _dereq_(20);
1369  
1370  var _constants = _dereq_(17);
1371  
1372  var _dom = _dereq_(18);
1373  
1374  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1375  
1376  var NativeDash = {
1377  
1378      promise: null,
1379  
1380      load: function load(settings) {
1381          if (typeof dashjs !== 'undefined') {
1382              NativeDash.promise = new Promise(function (resolve) {
1383                  resolve();
1384              }).then(function () {
1385                  NativeDash._createPlayer(settings);
1386              });
1387          } else {
1388              settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js';
1389  
1390              NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path);
1391              NativeDash.promise.then(function () {
1392                  NativeDash._createPlayer(settings);
1393              });
1394          }
1395  
1396          return NativeDash.promise;
1397      },
1398  
1399      _createPlayer: function _createPlayer(settings) {
1400          var player = dashjs.MediaPlayer().create();
1401          _window2.default['__ready__' + settings.id](player);
1402          return player;
1403      }
1404  };
1405  
1406  var DashNativeRenderer = {
1407      name: 'native_dash',
1408      options: {
1409          prefix: 'native_dash',
1410          dash: {
1411              path: 'https://cdn.dashjs.org/latest/dash.all.min.js',
1412              debug: false,
1413              drm: {},
1414  
1415              robustnessLevel: ''
1416          }
1417      },
1418  
1419      canPlayType: function canPlayType(type) {
1420          return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1;
1421      },
1422  
1423      create: function create(mediaElement, options, mediaFiles) {
1424  
1425          var originalNode = mediaElement.originalNode,
1426              id = mediaElement.id + '_' + options.prefix,
1427              autoplay = originalNode.autoplay,
1428              children = originalNode.children;
1429  
1430          var node = null,
1431              dashPlayer = null;
1432  
1433          originalNode.removeAttribute('type');
1434          for (var i = 0, total = children.length; i < total; i++) {
1435              children[i].removeAttribute('type');
1436          }
1437  
1438          node = originalNode.cloneNode(true);
1439          options = Object.assign(options, mediaElement.options);
1440  
1441          var props = _mejs2.default.html5media.properties,
1442              events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
1443              return e !== 'error';
1444          }),
1445              attachNativeEvents = function attachNativeEvents(e) {
1446              var event = (0, _general.createEvent)(e.type, mediaElement);
1447              mediaElement.dispatchEvent(event);
1448          },
1449              assignGettersSetters = function assignGettersSetters(propName) {
1450              var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
1451  
1452              node['get' + capName] = function () {
1453                  return dashPlayer !== null ? node[propName] : null;
1454              };
1455  
1456              node['set' + capName] = function (value) {
1457                  if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
1458                      if (propName === 'src') {
1459                          var source = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
1460                          node[propName] = source;
1461                          if (dashPlayer !== null) {
1462                              dashPlayer.reset();
1463                              for (var _i = 0, _total = events.length; _i < _total; _i++) {
1464                                  node.removeEventListener(events[_i], attachNativeEvents);
1465                              }
1466                              dashPlayer = NativeDash._createPlayer({
1467                                  options: options.dash,
1468                                  id: id
1469                              });
1470  
1471                              if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(value.drm) === 'object') {
1472                                  dashPlayer.setProtectionData(value.drm);
1473                                  if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
1474                                      dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
1475                                  }
1476                              }
1477                              dashPlayer.attachSource(source);
1478                              if (autoplay) {
1479                                  dashPlayer.play();
1480                              }
1481                          }
1482                      } else {
1483                          node[propName] = value;
1484                      }
1485                  }
1486              };
1487          };
1488  
1489          for (var _i2 = 0, _total2 = props.length; _i2 < _total2; _i2++) {
1490              assignGettersSetters(props[_i2]);
1491          }
1492  
1493          _window2.default['__ready__' + id] = function (_dashPlayer) {
1494              mediaElement.dashPlayer = dashPlayer = _dashPlayer;
1495  
1496              var dashEvents = dashjs.MediaPlayer.events,
1497                  assignEvents = function assignEvents(eventName) {
1498                  if (eventName === 'loadedmetadata') {
1499                      dashPlayer.initialize();
1500                      dashPlayer.attachView(node);
1501                      dashPlayer.setAutoPlay(false);
1502  
1503                      if (_typeof(options.dash.drm) === 'object' && !_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) {
1504                          dashPlayer.setProtectionData(options.dash.drm);
1505                          if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
1506                              dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
1507                          }
1508                      }
1509                      dashPlayer.attachSource(node.getSrc());
1510                  }
1511  
1512                  node.addEventListener(eventName, attachNativeEvents);
1513              };
1514  
1515              for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
1516                  assignEvents(events[_i3]);
1517              }
1518  
1519              var assignMdashEvents = function assignMdashEvents(e) {
1520                  if (e.type.toLowerCase() === 'error') {
1521                      mediaElement.generateError(e.message, node.src);
1522                      console.error(e);
1523                  } else {
1524                      var _event = (0, _general.createEvent)(e.type, mediaElement);
1525                      _event.data = e;
1526                      mediaElement.dispatchEvent(_event);
1527                  }
1528              };
1529  
1530              for (var eventType in dashEvents) {
1531                  if (dashEvents.hasOwnProperty(eventType)) {
1532                      dashPlayer.on(dashEvents[eventType], function (e) {
1533                          return assignMdashEvents(e);
1534                      });
1535                  }
1536              }
1537          };
1538  
1539          if (mediaFiles && mediaFiles.length > 0) {
1540              for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
1541                  if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
1542                      node.setAttribute('src', mediaFiles[_i4].src);
1543                      if (typeof mediaFiles[_i4].drm !== 'undefined') {
1544                          options.dash.drm = mediaFiles[_i4].drm;
1545                      }
1546                      break;
1547                  }
1548              }
1549          }
1550  
1551          node.setAttribute('id', id);
1552  
1553          originalNode.parentNode.insertBefore(node, originalNode);
1554          originalNode.autoplay = false;
1555          originalNode.style.display = 'none';
1556  
1557          node.setSize = function (width, height) {
1558              node.style.width = width + 'px';
1559              node.style.height = height + 'px';
1560              return node;
1561          };
1562  
1563          node.hide = function () {
1564              node.pause();
1565              node.style.display = 'none';
1566              return node;
1567          };
1568  
1569          node.show = function () {
1570              node.style.display = '';
1571              return node;
1572          };
1573  
1574          node.destroy = function () {
1575              if (dashPlayer !== null) {
1576                  dashPlayer.reset();
1577              }
1578          };
1579  
1580          var event = (0, _general.createEvent)('rendererready', node);
1581          mediaElement.dispatchEvent(event);
1582  
1583          mediaElement.promises.push(NativeDash.load({
1584              options: options.dash,
1585              id: id
1586          }));
1587  
1588          return node;
1589      }
1590  };
1591  
1592  _media.typeChecks.push(function (url) {
1593      return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null;
1594  });
1595  
1596  _renderer.renderer.add(DashNativeRenderer);
1597  
1598  },{"17":17,"18":18,"19":19,"20":20,"3":3,"8":8,"9":9}],12:[function(_dereq_,module,exports){
1599  'use strict';
1600  
1601  Object.defineProperty(exports, "__esModule", {
1602      value: true
1603  });
1604  exports.PluginDetector = undefined;
1605  
1606  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; };
1607  
1608  var _window = _dereq_(3);
1609  
1610  var _window2 = _interopRequireDefault(_window);
1611  
1612  var _document = _dereq_(2);
1613  
1614  var _document2 = _interopRequireDefault(_document);
1615  
1616  var _mejs = _dereq_(8);
1617  
1618  var _mejs2 = _interopRequireDefault(_mejs);
1619  
1620  var _i18n = _dereq_(6);
1621  
1622  var _i18n2 = _interopRequireDefault(_i18n);
1623  
1624  var _renderer = _dereq_(9);
1625  
1626  var _general = _dereq_(19);
1627  
1628  var _constants = _dereq_(17);
1629  
1630  var _media = _dereq_(20);
1631  
1632  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1633  
1634  var PluginDetector = exports.PluginDetector = {
1635      plugins: [],
1636  
1637      hasPluginVersion: function hasPluginVersion(plugin, v) {
1638          var pv = PluginDetector.plugins[plugin];
1639          v[1] = v[1] || 0;
1640          v[2] = v[2] || 0;
1641          return pv[0] > v[0] || pv[0] === v[0] && pv[1] > v[1] || pv[0] === v[0] && pv[1] === v[1] && pv[2] >= v[2];
1642      },
1643  
1644      addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
1645          PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
1646      },
1647  
1648      detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
1649  
1650          var version = [0, 0, 0],
1651              description = void 0,
1652              ax = void 0;
1653  
1654          if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
1655              description = _constants.NAV.plugins[pluginName].description;
1656              if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
1657                  version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.');
1658                  for (var i = 0, total = version.length; i < total; i++) {
1659                      version[i] = parseInt(version[i].match(/\d+/), 10);
1660                  }
1661              }
1662          } else if (_window2.default.ActiveXObject !== undefined) {
1663              try {
1664                  ax = new ActiveXObject(activeX);
1665                  if (ax) {
1666                      version = axDetect(ax);
1667                  }
1668              } catch (e) {
1669                  
1670              }
1671          }
1672          return version;
1673      }
1674  };
1675  
1676  PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
1677      var version = [],
1678          d = ax.GetVariable("$version");
1679  
1680      if (d) {
1681          d = d.split(" ")[1].split(",");
1682          version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
1683      }
1684      return version;
1685  });
1686  
1687  var FlashMediaElementRenderer = {
1688      create: function create(mediaElement, options, mediaFiles) {
1689  
1690          var flash = {};
1691          var isActive = false;
1692  
1693          flash.options = options;
1694          flash.id = mediaElement.id + '_' + flash.options.prefix;
1695          flash.mediaElement = mediaElement;
1696          flash.flashState = {};
1697          flash.flashApi = null;
1698          flash.flashApiStack = [];
1699  
1700          var props = _mejs2.default.html5media.properties,
1701              assignGettersSetters = function assignGettersSetters(propName) {
1702              flash.flashState[propName] = null;
1703  
1704              var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
1705  
1706              flash['get' + capName] = function () {
1707                  if (flash.flashApi !== null) {
1708                      if (typeof flash.flashApi['get_' + propName] === 'function') {
1709                          var value = flash.flashApi['get_' + propName]();
1710  
1711                          if (propName === 'buffered') {
1712                              return {
1713                                  start: function start() {
1714                                      return 0;
1715                                  },
1716                                  end: function end() {
1717                                      return value;
1718                                  },
1719                                  length: 1
1720                              };
1721                          }
1722                          return value;
1723                      } else {
1724                          return null;
1725                      }
1726                  } else {
1727                      return null;
1728                  }
1729              };
1730  
1731              flash['set' + capName] = function (value) {
1732                  if (propName === 'src') {
1733                      value = (0, _media.absolutizeUrl)(value);
1734                  }
1735  
1736                  if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
1737                      try {
1738                          flash.flashApi['set_' + propName](value);
1739                      } catch (e) {
1740                          
1741                      }
1742                  } else {
1743                      flash.flashApiStack.push({
1744                          type: 'set',
1745                          propName: propName,
1746                          value: value
1747                      });
1748                  }
1749              };
1750          };
1751  
1752          for (var i = 0, total = props.length; i < total; i++) {
1753              assignGettersSetters(props[i]);
1754          }
1755  
1756          var methods = _mejs2.default.html5media.methods,
1757              assignMethods = function assignMethods(methodName) {
1758              flash[methodName] = function () {
1759                  if (isActive) {
1760                      if (flash.flashApi !== null) {
1761                          if (flash.flashApi['fire_' + methodName]) {
1762                              try {
1763                                  flash.flashApi['fire_' + methodName]();
1764                              } catch (e) {
1765                                  
1766                              }
1767                          } else {
1768                              
1769                          }
1770                      } else {
1771                          flash.flashApiStack.push({
1772                              type: 'call',
1773                              methodName: methodName
1774                          });
1775                      }
1776                  }
1777              };
1778          };
1779          methods.push('stop');
1780          for (var _i = 0, _total = methods.length; _i < _total; _i++) {
1781              assignMethods(methods[_i]);
1782          }
1783  
1784          var initEvents = ['rendererready'];
1785  
1786          for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
1787              var event = (0, _general.createEvent)(initEvents[_i2], flash);
1788              mediaElement.dispatchEvent(event);
1789          }
1790  
1791          _window2.default['__ready__' + flash.id] = function () {
1792  
1793              flash.flashReady = true;
1794              flash.flashApi = _document2.default.getElementById('__' + flash.id);
1795  
1796              if (flash.flashApiStack.length) {
1797                  for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
1798                      var stackItem = flash.flashApiStack[_i3];
1799  
1800                      if (stackItem.type === 'set') {
1801                          var propName = stackItem.propName,
1802                              capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
1803  
1804                          flash['set' + capName](stackItem.value);
1805                      } else if (stackItem.type === 'call') {
1806                          flash[stackItem.methodName]();
1807                      }
1808                  }
1809              }
1810          };
1811  
1812          _window2.default['__event__' + flash.id] = function (eventName, message) {
1813              var event = (0, _general.createEvent)(eventName, flash);
1814              if (message) {
1815                  try {
1816                      event.data = JSON.parse(message);
1817                      event.details.data = JSON.parse(message);
1818                  } catch (e) {
1819                      event.message = message;
1820                  }
1821              }
1822  
1823              flash.mediaElement.dispatchEvent(event);
1824          };
1825  
1826          flash.flashWrapper = _document2.default.createElement('div');
1827  
1828          if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) {
1829              flash.options.shimScriptAccess = 'sameDomain';
1830          }
1831  
1832          var autoplay = mediaElement.originalNode.autoplay,
1833              flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess, 'preload=' + (mediaElement.originalNode.getAttribute('preload') || '')],
1834              isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video',
1835              flashHeight = isVideo ? mediaElement.originalNode.height : 1,
1836              flashWidth = isVideo ? mediaElement.originalNode.width : 1;
1837  
1838          if (mediaElement.originalNode.getAttribute('src')) {
1839              flashVars.push('src=' + mediaElement.originalNode.getAttribute('src'));
1840          }
1841  
1842          if (flash.options.enablePseudoStreaming === true) {
1843              flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam);
1844              flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType);
1845          }
1846  
1847          if (flash.options.streamDelimiter) {
1848              flashVars.push('streamdelimiter=' + encodeURIComponent(flash.options.streamDelimiter));
1849          }
1850  
1851          if (flash.options.proxyType) {
1852              flashVars.push('proxytype=' + flash.options.proxyType);
1853          }
1854  
1855          mediaElement.appendChild(flash.flashWrapper);
1856          mediaElement.originalNode.style.display = 'none';
1857  
1858          var settings = [];
1859  
1860          if (_constants.IS_IE || _constants.IS_EDGE) {
1861              var specialIEContainer = _document2.default.createElement('div');
1862              flash.flashWrapper.appendChild(specialIEContainer);
1863  
1864              if (_constants.IS_EDGE) {
1865                  settings = ['type="application/x-shockwave-flash"', 'data="' + flash.options.pluginPath + flash.options.filename + '"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '\'"'];
1866              } else {
1867                  settings = ['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"', 'codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
1868              }
1869  
1870              if (!isVideo) {
1871                  settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
1872              }
1873  
1874              specialIEContainer.outerHTML = '<object ' + settings.join(' ') + '>' + ('<param name="movie" value="' + flash.options.pluginPath + flash.options.filename + '?x=' + new Date() + '" />') + ('<param name="flashvars" value="' + flashVars.join('&amp;') + '" />') + '<param name="quality" value="high" />' + '<param name="bgcolor" value="#000000" />' + '<param name="wmode" value="transparent" />' + ('<param name="allowScriptAccess" value="' + flash.options.shimScriptAccess + '" />') + '<param name="allowFullScreen" value="true" />' + ('<div>' + _i18n2.default.t('mejs.install-flash') + '</div>') + '</object>';
1875          } else {
1876  
1877              settings = ['id="__' + flash.id + '"', 'name="__' + flash.id + '"', 'play="true"', 'loop="false"', 'quality="high"', 'bgcolor="#000000"', 'wmode="transparent"', 'allowScriptAccess="' + flash.options.shimScriptAccess + '"', 'allowFullScreen="true"', 'type="application/x-shockwave-flash"', 'pluginspage="//www.macromedia.com/go/getflashplayer"', 'src="' + flash.options.pluginPath + flash.options.filename + '"', 'flashvars="' + flashVars.join('&') + '"'];
1878  
1879              if (isVideo) {
1880                  settings.push('width="' + flashWidth + '"');
1881                  settings.push('height="' + flashHeight + '"');
1882              } else {
1883                  settings.push('style="position: fixed; left: -9999em; top: -9999em;"');
1884              }
1885  
1886              flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>';
1887          }
1888  
1889          flash.flashNode = flash.flashWrapper.lastChild;
1890  
1891          flash.hide = function () {
1892              isActive = false;
1893              if (isVideo) {
1894                  flash.flashNode.style.display = 'none';
1895              }
1896          };
1897          flash.show = function () {
1898              isActive = true;
1899              if (isVideo) {
1900                  flash.flashNode.style.display = '';
1901              }
1902          };
1903          flash.setSize = function (width, height) {
1904              flash.flashNode.style.width = width + 'px';
1905              flash.flashNode.style.height = height + 'px';
1906  
1907              if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') {
1908                  flash.flashApi.fire_setSize(width, height);
1909              }
1910          };
1911  
1912          flash.destroy = function () {
1913              flash.flashNode.remove();
1914          };
1915  
1916          if (mediaFiles && mediaFiles.length > 0) {
1917              for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
1918                  if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
1919                      flash.setSrc(mediaFiles[_i4].src);
1920                      break;
1921                  }
1922              }
1923          }
1924  
1925          return flash;
1926      }
1927  };
1928  
1929  var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
1930  
1931  if (hasFlash) {
1932      _media.typeChecks.push(function (url) {
1933          url = url.toLowerCase();
1934  
1935          if (url.startsWith('rtmp')) {
1936              if (~url.indexOf('.mp3')) {
1937                  return 'audio/rtmp';
1938              } else {
1939                  return 'video/rtmp';
1940              }
1941          } else if (/\.og(a|g)/i.test(url)) {
1942              return 'audio/ogg';
1943          } else if (~url.indexOf('.m3u8')) {
1944              return 'application/x-mpegURL';
1945          } else if (~url.indexOf('.mpd')) {
1946              return 'application/dash+xml';
1947          } else if (~url.indexOf('.flv')) {
1948              return 'video/flv';
1949          } else {
1950              return null;
1951          }
1952      });
1953  
1954      var FlashMediaElementVideoRenderer = {
1955          name: 'flash_video',
1956          options: {
1957              prefix: 'flash_video',
1958              filename: 'mediaelement-flash-video.swf',
1959              enablePseudoStreaming: false,
1960  
1961              pseudoStreamingStartQueryParam: 'start',
1962  
1963              pseudoStreamingType: 'byte',
1964  
1965              proxyType: '',
1966  
1967              streamDelimiter: ''
1968          },
1969  
1970          canPlayType: function canPlayType(type) {
1971              return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase());
1972          },
1973  
1974          create: FlashMediaElementRenderer.create
1975  
1976      };
1977      _renderer.renderer.add(FlashMediaElementVideoRenderer);
1978  
1979      var FlashMediaElementHlsVideoRenderer = {
1980          name: 'flash_hls',
1981          options: {
1982              prefix: 'flash_hls',
1983              filename: 'mediaelement-flash-video-hls.swf'
1984          },
1985  
1986          canPlayType: function canPlayType(type) {
1987              return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase());
1988          },
1989  
1990          create: FlashMediaElementRenderer.create
1991      };
1992      _renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
1993  
1994      var FlashMediaElementMdashVideoRenderer = {
1995          name: 'flash_dash',
1996          options: {
1997              prefix: 'flash_dash',
1998              filename: 'mediaelement-flash-video-mdash.swf'
1999          },
2000  
2001          canPlayType: function canPlayType(type) {
2002              return ~['application/dash+xml'].indexOf(type.toLowerCase());
2003          },
2004  
2005          create: FlashMediaElementRenderer.create
2006      };
2007      _renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
2008  
2009      var FlashMediaElementAudioRenderer = {
2010          name: 'flash_audio',
2011          options: {
2012              prefix: 'flash_audio',
2013              filename: 'mediaelement-flash-audio.swf'
2014          },
2015  
2016          canPlayType: function canPlayType(type) {
2017              return ~['audio/mp3'].indexOf(type.toLowerCase());
2018          },
2019  
2020          create: FlashMediaElementRenderer.create
2021      };
2022      _renderer.renderer.add(FlashMediaElementAudioRenderer);
2023  
2024      var FlashMediaElementAudioOggRenderer = {
2025          name: 'flash_audio_ogg',
2026          options: {
2027              prefix: 'flash_audio_ogg',
2028              filename: 'mediaelement-flash-audio-ogg.swf'
2029          },
2030  
2031          canPlayType: function canPlayType(type) {
2032              return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase());
2033          },
2034  
2035          create: FlashMediaElementRenderer.create
2036      };
2037      _renderer.renderer.add(FlashMediaElementAudioOggRenderer);
2038  }
2039  
2040  },{"17":17,"19":19,"2":2,"20":20,"3":3,"6":6,"8":8,"9":9}],13:[function(_dereq_,module,exports){
2041  'use strict';
2042  
2043  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; };
2044  
2045  var _window = _dereq_(3);
2046  
2047  var _window2 = _interopRequireDefault(_window);
2048  
2049  var _mejs = _dereq_(8);
2050  
2051  var _mejs2 = _interopRequireDefault(_mejs);
2052  
2053  var _renderer = _dereq_(9);
2054  
2055  var _general = _dereq_(19);
2056  
2057  var _constants = _dereq_(17);
2058  
2059  var _media = _dereq_(20);
2060  
2061  var _dom = _dereq_(18);
2062  
2063  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2064  
2065  var NativeFlv = {
2066  
2067      promise: null,
2068  
2069      load: function load(settings) {
2070          if (typeof flvjs !== 'undefined') {
2071              NativeFlv.promise = new Promise(function (resolve) {
2072                  resolve();
2073              }).then(function () {
2074                  NativeFlv._createPlayer(settings);
2075              });
2076          } else {
2077              settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/flv.js@latest';
2078  
2079              NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path);
2080              NativeFlv.promise.then(function () {
2081                  NativeFlv._createPlayer(settings);
2082              });
2083          }
2084  
2085          return NativeFlv.promise;
2086      },
2087  
2088      _createPlayer: function _createPlayer(settings) {
2089          flvjs.LoggingControl.enableDebug = settings.options.debug;
2090          flvjs.LoggingControl.enableVerbose = settings.options.debug;
2091          var player = flvjs.createPlayer(settings.options, settings.configs);
2092          _window2.default['__ready__' + settings.id](player);
2093          return player;
2094      }
2095  };
2096  
2097  var FlvNativeRenderer = {
2098      name: 'native_flv',
2099      options: {
2100          prefix: 'native_flv',
2101          flv: {
2102              path: 'https://cdn.jsdelivr.net/npm/flv.js@latest',
2103  
2104              cors: true,
2105              debug: false
2106          }
2107      },
2108  
2109      canPlayType: function canPlayType(type) {
2110          return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1;
2111      },
2112  
2113      create: function create(mediaElement, options, mediaFiles) {
2114  
2115          var originalNode = mediaElement.originalNode,
2116              id = mediaElement.id + '_' + options.prefix;
2117  
2118          var node = null,
2119              flvPlayer = null;
2120  
2121          node = originalNode.cloneNode(true);
2122          options = Object.assign(options, mediaElement.options);
2123  
2124          var props = _mejs2.default.html5media.properties,
2125              events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
2126              return e !== 'error';
2127          }),
2128              attachNativeEvents = function attachNativeEvents(e) {
2129              var event = (0, _general.createEvent)(e.type, mediaElement);
2130              mediaElement.dispatchEvent(event);
2131          },
2132              assignGettersSetters = function assignGettersSetters(propName) {
2133              var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
2134  
2135              node['get' + capName] = function () {
2136                  return flvPlayer !== null ? node[propName] : null;
2137              };
2138  
2139              node['set' + capName] = function (value) {
2140                  if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
2141                      if (propName === 'src') {
2142                          node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
2143                          if (flvPlayer !== null) {
2144                              var _flvOptions = {};
2145                              _flvOptions.type = 'flv';
2146                              _flvOptions.url = value;
2147                              _flvOptions.cors = options.flv.cors;
2148                              _flvOptions.debug = options.flv.debug;
2149                              _flvOptions.path = options.flv.path;
2150                              var _flvConfigs = options.flv.configs;
2151  
2152                              flvPlayer.destroy();
2153                              for (var i = 0, total = events.length; i < total; i++) {
2154                                  node.removeEventListener(events[i], attachNativeEvents);
2155                              }
2156                              flvPlayer = NativeFlv._createPlayer({
2157                                  options: _flvOptions,
2158                                  configs: _flvConfigs,
2159                                  id: id
2160                              });
2161                              flvPlayer.attachMediaElement(node);
2162                              flvPlayer.load();
2163                          }
2164                      } else {
2165                          node[propName] = value;
2166                      }
2167                  }
2168              };
2169          };
2170  
2171          for (var i = 0, total = props.length; i < total; i++) {
2172              assignGettersSetters(props[i]);
2173          }
2174  
2175          _window2.default['__ready__' + id] = function (_flvPlayer) {
2176              mediaElement.flvPlayer = flvPlayer = _flvPlayer;
2177  
2178              var flvEvents = flvjs.Events,
2179                  assignEvents = function assignEvents(eventName) {
2180                  if (eventName === 'loadedmetadata') {
2181                      flvPlayer.unload();
2182                      flvPlayer.detachMediaElement();
2183                      flvPlayer.attachMediaElement(node);
2184                      flvPlayer.load();
2185                  }
2186  
2187                  node.addEventListener(eventName, attachNativeEvents);
2188              };
2189  
2190              for (var _i = 0, _total = events.length; _i < _total; _i++) {
2191                  assignEvents(events[_i]);
2192              }
2193  
2194              var assignFlvEvents = function assignFlvEvents(name, data) {
2195                  if (name === 'error') {
2196                      var message = data[0] + ': ' + data[1] + ' ' + data[2].msg;
2197                      mediaElement.generateError(message, node.src);
2198                  } else {
2199                      var _event = (0, _general.createEvent)(name, mediaElement);
2200                      _event.data = data;
2201                      mediaElement.dispatchEvent(_event);
2202                  }
2203              };
2204  
2205              var _loop = function _loop(eventType) {
2206                  if (flvEvents.hasOwnProperty(eventType)) {
2207                      flvPlayer.on(flvEvents[eventType], function () {
2208                          for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
2209                              args[_key] = arguments[_key];
2210                          }
2211  
2212                          return assignFlvEvents(flvEvents[eventType], args);
2213                      });
2214                  }
2215              };
2216  
2217              for (var eventType in flvEvents) {
2218                  _loop(eventType);
2219              }
2220          };
2221  
2222          if (mediaFiles && mediaFiles.length > 0) {
2223              for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
2224                  if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
2225                      node.setAttribute('src', mediaFiles[_i2].src);
2226                      break;
2227                  }
2228              }
2229          }
2230  
2231          node.setAttribute('id', id);
2232  
2233          originalNode.parentNode.insertBefore(node, originalNode);
2234          originalNode.autoplay = false;
2235          originalNode.style.display = 'none';
2236  
2237          var flvOptions = {};
2238          flvOptions.type = 'flv';
2239          flvOptions.url = node.src;
2240          flvOptions.cors = options.flv.cors;
2241          flvOptions.debug = options.flv.debug;
2242          flvOptions.path = options.flv.path;
2243          var flvConfigs = options.flv.configs;
2244  
2245          node.setSize = function (width, height) {
2246              node.style.width = width + 'px';
2247              node.style.height = height + 'px';
2248              return node;
2249          };
2250  
2251          node.hide = function () {
2252              if (flvPlayer !== null) {
2253                  flvPlayer.pause();
2254              }
2255              node.style.display = 'none';
2256              return node;
2257          };
2258  
2259          node.show = function () {
2260              node.style.display = '';
2261              return node;
2262          };
2263  
2264          node.destroy = function () {
2265              if (flvPlayer !== null) {
2266                  flvPlayer.destroy();
2267              }
2268          };
2269  
2270          var event = (0, _general.createEvent)('rendererready', node);
2271          mediaElement.dispatchEvent(event);
2272  
2273          mediaElement.promises.push(NativeFlv.load({
2274              options: flvOptions,
2275              configs: flvConfigs,
2276              id: id
2277          }));
2278  
2279          return node;
2280      }
2281  };
2282  
2283  _media.typeChecks.push(function (url) {
2284      return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null;
2285  });
2286  
2287  _renderer.renderer.add(FlvNativeRenderer);
2288  
2289  },{"17":17,"18":18,"19":19,"20":20,"3":3,"8":8,"9":9}],14:[function(_dereq_,module,exports){
2290  'use strict';
2291  
2292  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; };
2293  
2294  var _window = _dereq_(3);
2295  
2296  var _window2 = _interopRequireDefault(_window);
2297  
2298  var _mejs = _dereq_(8);
2299  
2300  var _mejs2 = _interopRequireDefault(_mejs);
2301  
2302  var _renderer = _dereq_(9);
2303  
2304  var _general = _dereq_(19);
2305  
2306  var _constants = _dereq_(17);
2307  
2308  var _media = _dereq_(20);
2309  
2310  var _dom = _dereq_(18);
2311  
2312  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2313  
2314  var NativeHls = {
2315  
2316      promise: null,
2317  
2318      load: function load(settings) {
2319          if (typeof Hls !== 'undefined') {
2320              NativeHls.promise = new Promise(function (resolve) {
2321                  resolve();
2322              }).then(function () {
2323                  NativeHls._createPlayer(settings);
2324              });
2325          } else {
2326              settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/hls.js@latest';
2327  
2328              NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path);
2329              NativeHls.promise.then(function () {
2330                  NativeHls._createPlayer(settings);
2331              });
2332          }
2333  
2334          return NativeHls.promise;
2335      },
2336  
2337      _createPlayer: function _createPlayer(settings) {
2338          var player = new Hls(settings.options);
2339          _window2.default['__ready__' + settings.id](player);
2340          return player;
2341      }
2342  };
2343  
2344  var HlsNativeRenderer = {
2345      name: 'native_hls',
2346      options: {
2347          prefix: 'native_hls',
2348          hls: {
2349              path: 'https://cdn.jsdelivr.net/npm/hls.js@latest',
2350  
2351              autoStartLoad: false,
2352              debug: false
2353          }
2354      },
2355  
2356      canPlayType: function canPlayType(type) {
2357          return _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1;
2358      },
2359  
2360      create: function create(mediaElement, options, mediaFiles) {
2361  
2362          var originalNode = mediaElement.originalNode,
2363              id = mediaElement.id + '_' + options.prefix,
2364              preload = originalNode.getAttribute('preload'),
2365              autoplay = originalNode.autoplay;
2366  
2367          var hlsPlayer = null,
2368              node = null,
2369              index = 0,
2370              total = mediaFiles.length;
2371  
2372          node = originalNode.cloneNode(true);
2373          options = Object.assign(options, mediaElement.options);
2374          options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
2375  
2376          var props = _mejs2.default.html5media.properties,
2377              events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
2378              return e !== 'error';
2379          }),
2380              attachNativeEvents = function attachNativeEvents(e) {
2381              var event = (0, _general.createEvent)(e.type, mediaElement);
2382              mediaElement.dispatchEvent(event);
2383          },
2384              assignGettersSetters = function assignGettersSetters(propName) {
2385              var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
2386  
2387              node['get' + capName] = function () {
2388                  return hlsPlayer !== null ? node[propName] : null;
2389              };
2390  
2391              node['set' + capName] = function (value) {
2392                  if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
2393                      if (propName === 'src') {
2394                          node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
2395                          if (hlsPlayer !== null) {
2396                              hlsPlayer.destroy();
2397                              for (var i = 0, _total = events.length; i < _total; i++) {
2398                                  node.removeEventListener(events[i], attachNativeEvents);
2399                              }
2400                              hlsPlayer = NativeHls._createPlayer({
2401                                  options: options.hls,
2402                                  id: id
2403                              });
2404                              hlsPlayer.loadSource(value);
2405                              hlsPlayer.attachMedia(node);
2406                          }
2407                      } else {
2408                          node[propName] = value;
2409                      }
2410                  }
2411              };
2412          };
2413  
2414          for (var i = 0, _total2 = props.length; i < _total2; i++) {
2415              assignGettersSetters(props[i]);
2416          }
2417  
2418          _window2.default['__ready__' + id] = function (_hlsPlayer) {
2419              mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;
2420              var hlsEvents = Hls.Events,
2421                  assignEvents = function assignEvents(eventName) {
2422                  if (eventName === 'loadedmetadata') {
2423                      var url = mediaElement.originalNode.src;
2424                      hlsPlayer.detachMedia();
2425                      hlsPlayer.loadSource(url);
2426                      hlsPlayer.attachMedia(node);
2427                  }
2428  
2429                  node.addEventListener(eventName, attachNativeEvents);
2430              };
2431  
2432              for (var _i = 0, _total3 = events.length; _i < _total3; _i++) {
2433                  assignEvents(events[_i]);
2434              }
2435  
2436              var recoverDecodingErrorDate = void 0,
2437                  recoverSwapAudioCodecDate = void 0;
2438              var assignHlsEvents = function assignHlsEvents(name, data) {
2439                  if (name === 'hlsError') {
2440                      console.warn(data);
2441                      data = data[1];
2442  
2443                      if (data.fatal) {
2444                          switch (data.type) {
2445                              case 'mediaError':
2446                                  var now = new Date().getTime();
2447                                  if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) {
2448                                      recoverDecodingErrorDate = new Date().getTime();
2449                                      hlsPlayer.recoverMediaError();
2450                                  } else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) {
2451                                      recoverSwapAudioCodecDate = new Date().getTime();
2452                                      console.warn('Attempting to swap Audio Codec and recover from media error');
2453                                      hlsPlayer.swapAudioCodec();
2454                                      hlsPlayer.recoverMediaError();
2455                                  } else {
2456                                      var message = 'Cannot recover, last media error recovery failed';
2457                                      mediaElement.generateError(message, node.src);
2458                                      console.error(message);
2459                                  }
2460                                  break;
2461                              case 'networkError':
2462                                  if (data.details === 'manifestLoadError') {
2463                                      if (index < total && mediaFiles[index + 1] !== undefined) {
2464                                          node.setSrc(mediaFiles[index++].src);
2465                                          node.load();
2466                                          node.play();
2467                                      } else {
2468                                          var _message = 'Network error';
2469                                          mediaElement.generateError(_message, mediaFiles);
2470                                          console.error(_message);
2471                                      }
2472                                  } else {
2473                                      var _message2 = 'Network error';
2474                                      mediaElement.generateError(_message2, mediaFiles);
2475                                      console.error(_message2);
2476                                  }
2477                                  break;
2478                              default:
2479                                  hlsPlayer.destroy();
2480                                  break;
2481                          }
2482                          return;
2483                      }
2484                  }
2485                  var event = (0, _general.createEvent)(name, mediaElement);
2486                  event.data = data;
2487                  mediaElement.dispatchEvent(event);
2488              };
2489  
2490              var _loop = function _loop(eventType) {
2491                  if (hlsEvents.hasOwnProperty(eventType)) {
2492                      hlsPlayer.on(hlsEvents[eventType], function () {
2493                          for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
2494                              args[_key] = arguments[_key];
2495                          }
2496  
2497                          return assignHlsEvents(hlsEvents[eventType], args);
2498                      });
2499                  }
2500              };
2501  
2502              for (var eventType in hlsEvents) {
2503                  _loop(eventType);
2504              }
2505          };
2506  
2507          if (total > 0) {
2508              for (; index < total; index++) {
2509                  if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
2510                      node.setAttribute('src', mediaFiles[index].src);
2511                      break;
2512                  }
2513              }
2514          }
2515  
2516          if (preload !== 'auto' && !autoplay) {
2517              node.addEventListener('play', function () {
2518                  if (hlsPlayer !== null) {
2519                      hlsPlayer.startLoad();
2520                  }
2521              });
2522  
2523              node.addEventListener('pause', function () {
2524                  if (hlsPlayer !== null) {
2525                      hlsPlayer.stopLoad();
2526                  }
2527              });
2528          }
2529  
2530          node.setAttribute('id', id);
2531  
2532          originalNode.parentNode.insertBefore(node, originalNode);
2533          originalNode.autoplay = false;
2534          originalNode.style.display = 'none';
2535  
2536          node.setSize = function (width, height) {
2537              node.style.width = width + 'px';
2538              node.style.height = height + 'px';
2539              return node;
2540          };
2541  
2542          node.hide = function () {
2543              node.pause();
2544              node.style.display = 'none';
2545              return node;
2546          };
2547  
2548          node.show = function () {
2549              node.style.display = '';
2550              return node;
2551          };
2552  
2553          node.destroy = function () {
2554              if (hlsPlayer !== null) {
2555                  hlsPlayer.stopLoad();
2556                  hlsPlayer.destroy();
2557              }
2558          };
2559  
2560          var event = (0, _general.createEvent)('rendererready', node);
2561          mediaElement.dispatchEvent(event);
2562  
2563          mediaElement.promises.push(NativeHls.load({
2564              options: options.hls,
2565              id: id
2566          }));
2567  
2568          return node;
2569      }
2570  };
2571  
2572  _media.typeChecks.push(function (url) {
2573      return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;
2574  });
2575  
2576  _renderer.renderer.add(HlsNativeRenderer);
2577  
2578  },{"17":17,"18":18,"19":19,"20":20,"3":3,"8":8,"9":9}],15:[function(_dereq_,module,exports){
2579  'use strict';
2580  
2581  var _window = _dereq_(3);
2582  
2583  var _window2 = _interopRequireDefault(_window);
2584  
2585  var _document = _dereq_(2);
2586  
2587  var _document2 = _interopRequireDefault(_document);
2588  
2589  var _mejs = _dereq_(8);
2590  
2591  var _mejs2 = _interopRequireDefault(_mejs);
2592  
2593  var _renderer = _dereq_(9);
2594  
2595  var _general = _dereq_(19);
2596  
2597  var _constants = _dereq_(17);
2598  
2599  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2600  
2601  var HtmlMediaElement = {
2602      name: 'html5',
2603      options: {
2604          prefix: 'html5'
2605      },
2606  
2607      canPlayType: function canPlayType(type) {
2608  
2609          var mediaElement = _document2.default.createElement('video');
2610  
2611          if (_constants.IS_ANDROID && /\/mp(3|4)$/i.test(type) || ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) {
2612              return 'yes';
2613          } else if (mediaElement.canPlayType) {
2614              return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, '');
2615          } else {
2616              return '';
2617          }
2618      },
2619  
2620      create: function create(mediaElement, options, mediaFiles) {
2621  
2622          var id = mediaElement.id + '_' + options.prefix;
2623          var isActive = false;
2624  
2625          var node = null;
2626  
2627          if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
2628              node = _document2.default.createElement('audio');
2629              mediaElement.appendChild(node);
2630          } else {
2631              node = mediaElement.originalNode;
2632          }
2633  
2634          node.setAttribute('id', id);
2635  
2636          var props = _mejs2.default.html5media.properties,
2637              assignGettersSetters = function assignGettersSetters(propName) {
2638              var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
2639  
2640              node['get' + capName] = function () {
2641                  return node[propName];
2642              };
2643  
2644              node['set' + capName] = function (value) {
2645                  if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
2646                      node[propName] = value;
2647                  }
2648              };
2649          };
2650  
2651          for (var i = 0, _total = props.length; i < _total; i++) {
2652              assignGettersSetters(props[i]);
2653          }
2654  
2655          var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
2656              return e !== 'error';
2657          }),
2658              assignEvents = function assignEvents(eventName) {
2659              node.addEventListener(eventName, function (e) {
2660                  if (isActive) {
2661                      var _event = (0, _general.createEvent)(e.type, e.target);
2662                      mediaElement.dispatchEvent(_event);
2663                  }
2664              });
2665          };
2666  
2667          for (var _i = 0, _total2 = events.length; _i < _total2; _i++) {
2668              assignEvents(events[_i]);
2669          }
2670  
2671          node.setSize = function (width, height) {
2672              node.style.width = width + 'px';
2673              node.style.height = height + 'px';
2674              return node;
2675          };
2676  
2677          node.hide = function () {
2678              isActive = false;
2679              node.style.display = 'none';
2680  
2681              return node;
2682          };
2683  
2684          node.show = function () {
2685              isActive = true;
2686              node.style.display = '';
2687  
2688              return node;
2689          };
2690  
2691          var index = 0,
2692              total = mediaFiles.length;
2693          if (total > 0) {
2694              for (; index < total; index++) {
2695                  if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
2696                      node.setAttribute('src', mediaFiles[index].src);
2697                      break;
2698                  }
2699              }
2700          }
2701  
2702          node.addEventListener('error', function (e) {
2703              if (e && e.target && e.target.error && e.target.error.code === 4 && isActive) {
2704                  if (index < total && mediaFiles[index + 1] !== undefined) {
2705                      node.src = mediaFiles[index++].src;
2706                      node.load();
2707                      node.play();
2708                  } else {
2709                      mediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles);
2710                  }
2711              }
2712          });
2713  
2714          var event = (0, _general.createEvent)('rendererready', node);
2715          mediaElement.dispatchEvent(event);
2716  
2717          return node;
2718      }
2719  };
2720  
2721  _window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement;
2722  
2723  _renderer.renderer.add(HtmlMediaElement);
2724  
2725  },{"17":17,"19":19,"2":2,"3":3,"8":8,"9":9}],16:[function(_dereq_,module,exports){
2726  'use strict';
2727  
2728  var _window = _dereq_(3);
2729  
2730  var _window2 = _interopRequireDefault(_window);
2731  
2732  var _document = _dereq_(2);
2733  
2734  var _document2 = _interopRequireDefault(_document);
2735  
2736  var _mejs = _dereq_(8);
2737  
2738  var _mejs2 = _interopRequireDefault(_mejs);
2739  
2740  var _renderer = _dereq_(9);
2741  
2742  var _general = _dereq_(19);
2743  
2744  var _media = _dereq_(20);
2745  
2746  var _dom = _dereq_(18);
2747  
2748  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2749  
2750  var YouTubeApi = {
2751      isIframeStarted: false,
2752  
2753      isIframeLoaded: false,
2754  
2755      iframeQueue: [],
2756  
2757      enqueueIframe: function enqueueIframe(settings) {
2758          YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;
2759  
2760          if (YouTubeApi.isLoaded) {
2761              YouTubeApi.createIframe(settings);
2762          } else {
2763              YouTubeApi.loadIframeApi();
2764              YouTubeApi.iframeQueue.push(settings);
2765          }
2766      },
2767  
2768      loadIframeApi: function loadIframeApi() {
2769          if (!YouTubeApi.isIframeStarted) {
2770              (0, _dom.loadScript)('https://www.youtube.com/player_api');
2771              YouTubeApi.isIframeStarted = true;
2772          }
2773      },
2774  
2775      iFrameReady: function iFrameReady() {
2776  
2777          YouTubeApi.isLoaded = true;
2778          YouTubeApi.isIframeLoaded = true;
2779  
2780          while (YouTubeApi.iframeQueue.length > 0) {
2781              var settings = YouTubeApi.iframeQueue.pop();
2782              YouTubeApi.createIframe(settings);
2783          }
2784      },
2785  
2786      createIframe: function createIframe(settings) {
2787          return new YT.Player(settings.containerId, settings);
2788      },
2789  
2790      getYouTubeId: function getYouTubeId(url) {
2791  
2792          var youTubeId = '';
2793  
2794          if (url.indexOf('?') > 0) {
2795              youTubeId = YouTubeApi.getYouTubeIdFromParam(url);
2796  
2797              if (youTubeId === '') {
2798                  youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
2799              }
2800          } else {
2801              youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
2802          }
2803  
2804          var id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1);
2805          youTubeId = id.split('?');
2806          return youTubeId[0];
2807      },
2808  
2809      getYouTubeIdFromParam: function getYouTubeIdFromParam(url) {
2810  
2811          if (url === undefined || url === null || !url.trim().length) {
2812              return null;
2813          }
2814  
2815          var parts = url.split('?'),
2816              parameters = parts[1].split('&');
2817  
2818          var youTubeId = '';
2819  
2820          for (var i = 0, total = parameters.length; i < total; i++) {
2821              var paramParts = parameters[i].split('=');
2822              if (paramParts[0] === 'v') {
2823                  youTubeId = paramParts[1];
2824                  break;
2825              }
2826          }
2827  
2828          return youTubeId;
2829      },
2830  
2831      getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {
2832  
2833          if (url === undefined || url === null || !url.trim().length) {
2834              return null;
2835          }
2836  
2837          var parts = url.split('?');
2838          url = parts[0];
2839          return url.substring(url.lastIndexOf('/') + 1);
2840      },
2841  
2842      getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {
2843          if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) {
2844              return url;
2845          }
2846  
2847          var parts = url.split('/');
2848          parts[2] = parts[2].replace('.com', '-nocookie.com');
2849          return parts.join('/');
2850      }
2851  };
2852  
2853  var YouTubeIframeRenderer = {
2854      name: 'youtube_iframe',
2855  
2856      options: {
2857          prefix: 'youtube_iframe',
2858  
2859          youtube: {
2860              autoplay: 0,
2861              controls: 0,
2862              disablekb: 1,
2863              end: 0,
2864              loop: 0,
2865              modestbranding: 0,
2866              playsinline: 0,
2867              rel: 0,
2868              showinfo: 0,
2869              start: 0,
2870              iv_load_policy: 3,
2871  
2872              nocookie: false,
2873  
2874              imageQuality: null
2875          }
2876      },
2877  
2878      canPlayType: function canPlayType(type) {
2879          return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase());
2880      },
2881  
2882      create: function create(mediaElement, options, mediaFiles) {
2883  
2884          var youtube = {},
2885              apiStack = [],
2886              readyState = 4;
2887  
2888          var youTubeApi = null,
2889              paused = true,
2890              ended = false,
2891              youTubeIframe = null,
2892              volume = 1;
2893  
2894          youtube.options = options;
2895          youtube.id = mediaElement.id + '_' + options.prefix;
2896          youtube.mediaElement = mediaElement;
2897  
2898          var props = _mejs2.default.html5media.properties,
2899              assignGettersSetters = function assignGettersSetters(propName) {
2900  
2901              var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
2902  
2903              youtube['get' + capName] = function () {
2904                  if (youTubeApi !== null) {
2905                      var value = null;
2906  
2907                      switch (propName) {
2908                          case 'currentTime':
2909                              return youTubeApi.getCurrentTime();
2910                          case 'duration':
2911                              return youTubeApi.getDuration();
2912                          case 'volume':
2913                              volume = youTubeApi.getVolume() / 100;
2914                              return volume;
2915                          case 'playbackRate':
2916                              return youTubeApi.getPlaybackRate();
2917                          case 'paused':
2918                              return paused;
2919                          case 'ended':
2920                              return ended;
2921                          case 'muted':
2922                              return youTubeApi.isMuted();
2923                          case 'buffered':
2924                              var percentLoaded = youTubeApi.getVideoLoadedFraction(),
2925                                  duration = youTubeApi.getDuration();
2926                              return {
2927                                  start: function start() {
2928                                      return 0;
2929                                  },
2930                                  end: function end() {
2931                                      return percentLoaded * duration;
2932                                  },
2933                                  length: 1
2934                              };
2935                          case 'src':
2936                              return youTubeApi.getVideoUrl();
2937                          case 'readyState':
2938                              return readyState;
2939                      }
2940  
2941                      return value;
2942                  } else {
2943                      return null;
2944                  }
2945              };
2946  
2947              youtube['set' + capName] = function (value) {
2948                  if (youTubeApi !== null) {
2949                      switch (propName) {
2950                          case 'src':
2951                              var url = typeof value === 'string' ? value : value[0].src,
2952                                  _videoId = YouTubeApi.getYouTubeId(url);
2953  
2954                              if (mediaElement.originalNode.autoplay) {
2955                                  youTubeApi.loadVideoById(_videoId);
2956                              } else {
2957                                  youTubeApi.cueVideoById(_videoId);
2958                              }
2959                              break;
2960                          case 'currentTime':
2961                              youTubeApi.seekTo(value);
2962                              break;
2963                          case 'muted':
2964                              if (value) {
2965                                  youTubeApi.mute();
2966                              } else {
2967                                  youTubeApi.unMute();
2968                              }
2969                              setTimeout(function () {
2970                                  var event = (0, _general.createEvent)('volumechange', youtube);
2971                                  mediaElement.dispatchEvent(event);
2972                              }, 50);
2973                              break;
2974                          case 'volume':
2975                              volume = value;
2976                              youTubeApi.setVolume(value * 100);
2977                              setTimeout(function () {
2978                                  var event = (0, _general.createEvent)('volumechange', youtube);
2979                                  mediaElement.dispatchEvent(event);
2980                              }, 50);
2981                              break;
2982                          case 'playbackRate':
2983                              youTubeApi.setPlaybackRate(value);
2984                              setTimeout(function () {
2985                                  var event = (0, _general.createEvent)('ratechange', youtube);
2986                                  mediaElement.dispatchEvent(event);
2987                              }, 50);
2988                              break;
2989                          case 'readyState':
2990                              var event = (0, _general.createEvent)('canplay', youtube);
2991                              mediaElement.dispatchEvent(event);
2992                              break;
2993                          default:
2994                              
2995                              break;
2996                      }
2997                  } else {
2998                      apiStack.push({ type: 'set', propName: propName, value: value });
2999                  }
3000              };
3001          };
3002  
3003          for (var i = 0, total = props.length; i < total; i++) {
3004              assignGettersSetters(props[i]);
3005          }
3006  
3007          var methods = _mejs2.default.html5media.methods,
3008              assignMethods = function assignMethods(methodName) {
3009              youtube[methodName] = function () {
3010                  if (youTubeApi !== null) {
3011                      switch (methodName) {
3012                          case 'play':
3013                              paused = false;
3014                              return youTubeApi.playVideo();
3015                          case 'pause':
3016                              paused = true;
3017                              return youTubeApi.pauseVideo();
3018                          case 'load':
3019                              return null;
3020                      }
3021                  } else {
3022                      apiStack.push({ type: 'call', methodName: methodName });
3023                  }
3024              };
3025          };
3026  
3027          for (var _i = 0, _total = methods.length; _i < _total; _i++) {
3028              assignMethods(methods[_i]);
3029          }
3030  
3031          var errorHandler = function errorHandler(error) {
3032              var message = '';
3033              switch (error.data) {
3034                  case 2:
3035                      message = 'The request contains an invalid parameter value. Verify that video ID has 11 characters and that contains no invalid characters, such as exclamation points or asterisks.';
3036                      break;
3037                  case 5:
3038                      message = 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.';
3039                      break;
3040                  case 100:
3041                      message = 'The video requested was not found. Either video has been removed or has been marked as private.';
3042                      break;
3043                  case 101:
3044                  case 105:
3045                      message = 'The owner of the requested video does not allow it to be played in embedded players.';
3046                      break;
3047                  default:
3048                      message = 'Unknown error.';
3049                      break;
3050              }
3051              mediaElement.generateError('Code ' + error.data + ': ' + message, mediaFiles);
3052          };
3053  
3054          var youtubeContainer = _document2.default.createElement('div');
3055          youtubeContainer.id = youtube.id;
3056  
3057          if (youtube.options.youtube.nocookie) {
3058              mediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src);
3059          }
3060  
3061          mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode);
3062          mediaElement.originalNode.style.display = 'none';
3063  
3064          var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',
3065              height = isAudio ? '1' : mediaElement.originalNode.height,
3066              width = isAudio ? '1' : mediaElement.originalNode.width,
3067              videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),
3068              youtubeSettings = {
3069              id: youtube.id,
3070              containerId: youtubeContainer.id,
3071              videoId: videoId,
3072              height: height,
3073              width: width,
3074              host: youtube.options.youtube && youtube.options.youtube.nocookie ? 'https://www.youtube-nocookie.com' : undefined,
3075              playerVars: Object.assign({
3076                  controls: 0,
3077                  rel: 0,
3078                  disablekb: 1,
3079                  showinfo: 0,
3080                  modestbranding: 0,
3081                  html5: 1,
3082                  iv_load_policy: 3
3083              }, youtube.options.youtube),
3084              origin: _window2.default.location.host,
3085              events: {
3086                  onReady: function onReady(e) {
3087                      mediaElement.youTubeApi = youTubeApi = e.target;
3088                      mediaElement.youTubeState = {
3089                          paused: true,
3090                          ended: false
3091                      };
3092  
3093                      if (apiStack.length) {
3094                          for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
3095  
3096                              var stackItem = apiStack[_i2];
3097  
3098                              if (stackItem.type === 'set') {
3099                                  var propName = stackItem.propName,
3100                                      capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
3101  
3102                                  youtube['set' + capName](stackItem.value);
3103                              } else if (stackItem.type === 'call') {
3104                                  youtube[stackItem.methodName]();
3105                              }
3106                          }
3107                      }
3108  
3109                      youTubeIframe = youTubeApi.getIframe();
3110  
3111                      if (mediaElement.originalNode.muted) {
3112                          youTubeApi.mute();
3113                      }
3114  
3115                      var events = ['mouseover', 'mouseout'],
3116                          assignEvents = function assignEvents(e) {
3117                          var newEvent = (0, _general.createEvent)(e.type, youtube);
3118                          mediaElement.dispatchEvent(newEvent);
3119                      };
3120  
3121                      for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
3122                          youTubeIframe.addEventListener(events[_i3], assignEvents, false);
3123                      }
3124  
3125                      var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
3126  
3127                      for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) {
3128                          var event = (0, _general.createEvent)(initEvents[_i4], youtube);
3129                          mediaElement.dispatchEvent(event);
3130                      }
3131                  },
3132                  onStateChange: function onStateChange(e) {
3133                      var events = [];
3134  
3135                      switch (e.data) {
3136                          case -1:
3137                              events = ['loadedmetadata'];
3138                              paused = true;
3139                              ended = false;
3140                              break;
3141                          case 0:
3142                              events = ['ended'];
3143                              paused = false;
3144                              ended = !youtube.options.youtube.loop;
3145                              if (!youtube.options.youtube.loop) {
3146                                  youtube.stopInterval();
3147                              }
3148                              break;
3149                          case 1:
3150                              events = ['play', 'playing'];
3151                              paused = false;
3152                              ended = false;
3153                              youtube.startInterval();
3154                              break;
3155                          case 2:
3156                              events = ['pause'];
3157                              paused = true;
3158                              ended = false;
3159                              youtube.stopInterval();
3160                              break;
3161                          case 3:
3162                              events = ['progress'];
3163                              ended = false;
3164                              break;
3165                          case 5:
3166                              events = ['loadeddata', 'loadedmetadata', 'canplay'];
3167                              paused = true;
3168                              ended = false;
3169                              break;
3170                      }
3171  
3172                      for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) {
3173                          var event = (0, _general.createEvent)(events[_i5], youtube);
3174                          mediaElement.dispatchEvent(event);
3175                      }
3176                  },
3177                  onError: function onError(e) {
3178                      return errorHandler(e);
3179                  }
3180              }
3181          };
3182  
3183          if (isAudio || mediaElement.originalNode.hasAttribute('playsinline')) {
3184              youtubeSettings.playerVars.playsinline = 1;
3185          }
3186  
3187          if (mediaElement.originalNode.controls) {
3188              youtubeSettings.playerVars.controls = 1;
3189          }
3190          if (mediaElement.originalNode.autoplay) {
3191              youtubeSettings.playerVars.autoplay = 1;
3192          }
3193          if (mediaElement.originalNode.loop) {
3194              youtubeSettings.playerVars.loop = 1;
3195          }
3196  
3197          if ((youtubeSettings.playerVars.loop && parseInt(youtubeSettings.playerVars.loop, 10) === 1 || mediaElement.originalNode.src.indexOf('loop=') > -1) && !youtubeSettings.playerVars.playlist && mediaElement.originalNode.src.indexOf('playlist=') === -1) {
3198              youtubeSettings.playerVars.playlist = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
3199          }
3200  
3201          YouTubeApi.enqueueIframe(youtubeSettings);
3202  
3203          youtube.onEvent = function (eventName, player, _youTubeState) {
3204              if (_youTubeState !== null && _youTubeState !== undefined) {
3205                  mediaElement.youTubeState = _youTubeState;
3206              }
3207          };
3208  
3209          youtube.setSize = function (width, height) {
3210              if (youTubeApi !== null) {
3211                  youTubeApi.setSize(width, height);
3212              }
3213          };
3214          youtube.hide = function () {
3215              youtube.stopInterval();
3216              youtube.pause();
3217              if (youTubeIframe) {
3218                  youTubeIframe.style.display = 'none';
3219              }
3220          };
3221          youtube.show = function () {
3222              if (youTubeIframe) {
3223                  youTubeIframe.style.display = '';
3224              }
3225          };
3226          youtube.destroy = function () {
3227              youTubeApi.destroy();
3228          };
3229          youtube.interval = null;
3230  
3231          youtube.startInterval = function () {
3232              youtube.interval = setInterval(function () {
3233                  var event = (0, _general.createEvent)('timeupdate', youtube);
3234                  mediaElement.dispatchEvent(event);
3235              }, 250);
3236          };
3237          youtube.stopInterval = function () {
3238              if (youtube.interval) {
3239                  clearInterval(youtube.interval);
3240              }
3241          };
3242          youtube.getPosterUrl = function () {
3243              var quality = options.youtube.imageQuality,
3244                  resolutions = ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'],
3245                  id = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
3246              return quality && resolutions.indexOf(quality) > -1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : '';
3247          };
3248  
3249          return youtube;
3250      }
3251  };
3252  
3253  _window2.default.onYouTubePlayerAPIReady = function () {
3254      YouTubeApi.iFrameReady();
3255  };
3256  
3257  _media.typeChecks.push(function (url) {
3258      return (/\/\/(www\.youtube|youtu\.?be)/i.test(url) ? 'video/x-youtube' : null
3259      );
3260  });
3261  
3262  _renderer.renderer.add(YouTubeIframeRenderer);
3263  
3264  },{"18":18,"19":19,"2":2,"20":20,"3":3,"8":8,"9":9}],17:[function(_dereq_,module,exports){
3265  'use strict';
3266  
3267  Object.defineProperty(exports, "__esModule", {
3268      value: true
3269  });
3270  exports.cancelFullScreen = exports.requestFullScreen = exports.isFullScreen = exports.FULLSCREEN_EVENT_NAME = exports.HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = exports.SUPPORTS_NATIVE_HLS = exports.SUPPORT_PASSIVE_EVENT = exports.SUPPORT_POINTER_EVENTS = exports.HAS_MSE = exports.IS_STOCK_ANDROID = exports.IS_SAFARI = exports.IS_FIREFOX = exports.IS_CHROME = exports.IS_EDGE = exports.IS_IE = exports.IS_ANDROID = exports.IS_IOS = exports.IS_IPOD = exports.IS_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined;
3271  
3272  var _window = _dereq_(3);
3273  
3274  var _window2 = _interopRequireDefault(_window);
3275  
3276  var _document = _dereq_(2);
3277  
3278  var _document2 = _interopRequireDefault(_document);
3279  
3280  var _mejs = _dereq_(8);
3281  
3282  var _mejs2 = _interopRequireDefault(_mejs);
3283  
3284  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3285  
3286  var NAV = exports.NAV = _window2.default.navigator;
3287  var UA = exports.UA = NAV.userAgent.toLowerCase();
3288  var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA) && !_window2.default.MSStream;
3289  var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA) && !_window2.default.MSStream;
3290  var IS_IPOD = exports.IS_IPOD = /ipod/i.test(UA) && !_window2.default.MSStream;
3291  var IS_IOS = exports.IS_IOS = /ipad|iphone|ipod/i.test(UA) && !_window2.default.MSStream;
3292  var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA);
3293  var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName);
3294  var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
3295  var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA);
3296  var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA);
3297  var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME;
3298  var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA);
3299  var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
3300  var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
3301      var element = _document2.default.createElement('x'),
3302          documentElement = _document2.default.documentElement,
3303          getComputedStyle = _window2.default.getComputedStyle;
3304  
3305      if (!('pointerEvents' in element.style)) {
3306          return false;
3307      }
3308  
3309      element.style.pointerEvents = 'auto';
3310      element.style.pointerEvents = 'x';
3311      documentElement.appendChild(element);
3312      var supports = getComputedStyle && (getComputedStyle(element, '') || {}).pointerEvents === 'auto';
3313      element.remove();
3314      return !!supports;
3315  }();
3316  
3317  var SUPPORT_PASSIVE_EVENT = exports.SUPPORT_PASSIVE_EVENT = function () {
3318      var supportsPassive = false;
3319      try {
3320          var opts = Object.defineProperty({}, 'passive', {
3321              get: function get() {
3322                  supportsPassive = true;
3323              }
3324          });
3325          _window2.default.addEventListener('test', null, opts);
3326      } catch (e) {}
3327  
3328      return supportsPassive;
3329  }();
3330  
3331  var html5Elements = ['source', 'track', 'audio', 'video'];
3332  var video = void 0;
3333  
3334  for (var i = 0, total = html5Elements.length; i < total; i++) {
3335      video = _document2.default.createElement(html5Elements[i]);
3336  }
3337  
3338  var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_IE && /edge/i.test(UA);
3339  
3340  var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
3341  
3342  var hasNativeFullscreen = video.requestFullscreen !== undefined;
3343  
3344  if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) {
3345      hasNativeFullscreen = false;
3346      hasiOSFullScreen = false;
3347  }
3348  
3349  var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
3350  var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
3351  var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
3352  var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
3353  var nativeFullScreenEnabled = hasTrueNativeFullScreen;
3354  var fullScreenEventName = '';
3355  var isFullScreen = void 0,
3356      requestFullScreen = void 0,
3357      cancelFullScreen = void 0;
3358  
3359  if (hasMozNativeFullScreen) {
3360      nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
3361  } else if (hasMsNativeFullScreen) {
3362      nativeFullScreenEnabled = _document2.default.msFullscreenEnabled;
3363  }
3364  
3365  if (IS_CHROME) {
3366      hasiOSFullScreen = false;
3367  }
3368  
3369  if (hasTrueNativeFullScreen) {
3370      if (hasWebkitNativeFullScreen) {
3371          fullScreenEventName = 'webkitfullscreenchange';
3372      } else if (hasMozNativeFullScreen) {
3373          fullScreenEventName = 'fullscreenchange';
3374      } else if (hasMsNativeFullScreen) {
3375          fullScreenEventName = 'MSFullscreenChange';
3376      }
3377  
3378      exports.isFullScreen = isFullScreen = function isFullScreen() {
3379          if (hasMozNativeFullScreen) {
3380              return _document2.default.mozFullScreen;
3381          } else if (hasWebkitNativeFullScreen) {
3382              return _document2.default.webkitIsFullScreen;
3383          } else if (hasMsNativeFullScreen) {
3384              return _document2.default.msFullscreenElement !== null;
3385          }
3386      };
3387  
3388      exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
3389          if (hasWebkitNativeFullScreen) {
3390              el.webkitRequestFullScreen();
3391          } else if (hasMozNativeFullScreen) {
3392              el.mozRequestFullScreen();
3393          } else if (hasMsNativeFullScreen) {
3394              el.msRequestFullscreen();
3395          }
3396      };
3397  
3398      exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() {
3399          if (hasWebkitNativeFullScreen) {
3400              _document2.default.webkitCancelFullScreen();
3401          } else if (hasMozNativeFullScreen) {
3402              _document2.default.mozCancelFullScreen();
3403          } else if (hasMsNativeFullScreen) {
3404              _document2.default.msExitFullscreen();
3405          }
3406      };
3407  }
3408  
3409  var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen;
3410  var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen;
3411  var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen;
3412  var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen;
3413  var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
3414  var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
3415  var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
3416  var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
3417  exports.isFullScreen = isFullScreen;
3418  exports.requestFullScreen = requestFullScreen;
3419  exports.cancelFullScreen = cancelFullScreen;
3420  
3421  
3422  _mejs2.default.Features = _mejs2.default.Features || {};
3423  _mejs2.default.Features.isiPad = IS_IPAD;
3424  _mejs2.default.Features.isiPod = IS_IPOD;
3425  _mejs2.default.Features.isiPhone = IS_IPHONE;
3426  _mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad;
3427  _mejs2.default.Features.isAndroid = IS_ANDROID;
3428  _mejs2.default.Features.isIE = IS_IE;
3429  _mejs2.default.Features.isEdge = IS_EDGE;
3430  _mejs2.default.Features.isChrome = IS_CHROME;
3431  _mejs2.default.Features.isFirefox = IS_FIREFOX;
3432  _mejs2.default.Features.isSafari = IS_SAFARI;
3433  _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
3434  _mejs2.default.Features.hasMSE = HAS_MSE;
3435  _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
3436  _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
3437  _mejs2.default.Features.supportsPassiveEvent = SUPPORT_PASSIVE_EVENT;
3438  _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
3439  _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
3440  _mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN;
3441  _mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN;
3442  _mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN;
3443  _mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN;
3444  _mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED;
3445  _mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME;
3446  _mejs2.default.Features.isFullScreen = isFullScreen;
3447  _mejs2.default.Features.requestFullScreen = requestFullScreen;
3448  _mejs2.default.Features.cancelFullScreen = cancelFullScreen;
3449  
3450  },{"2":2,"3":3,"8":8}],18:[function(_dereq_,module,exports){
3451  'use strict';
3452  
3453  Object.defineProperty(exports, "__esModule", {
3454      value: true
3455  });
3456  exports.removeClass = exports.addClass = exports.hasClass = undefined;
3457  exports.loadScript = loadScript;
3458  exports.offset = offset;
3459  exports.toggleClass = toggleClass;
3460  exports.fadeOut = fadeOut;
3461  exports.fadeIn = fadeIn;
3462  exports.siblings = siblings;
3463  exports.visible = visible;
3464  exports.ajax = ajax;
3465  
3466  var _window = _dereq_(3);
3467  
3468  var _window2 = _interopRequireDefault(_window);
3469  
3470  var _document = _dereq_(2);
3471  
3472  var _document2 = _interopRequireDefault(_document);
3473  
3474  var _mejs = _dereq_(8);
3475  
3476  var _mejs2 = _interopRequireDefault(_mejs);
3477  
3478  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3479  
3480  function loadScript(url) {
3481      return new Promise(function (resolve, reject) {
3482          var script = _document2.default.createElement('script');
3483          script.src = url;
3484          script.async = true;
3485          script.onload = function () {
3486              script.remove();
3487              resolve();
3488          };
3489          script.onerror = function () {
3490              script.remove();
3491              reject();
3492          };
3493          _document2.default.head.appendChild(script);
3494      });
3495  }
3496  
3497  function offset(el) {
3498      var rect = el.getBoundingClientRect(),
3499          scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,
3500          scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop;
3501      return { top: rect.top + scrollTop, left: rect.left + scrollLeft };
3502  }
3503  
3504  var hasClassMethod = void 0,
3505      addClassMethod = void 0,
3506      removeClassMethod = void 0;
3507  
3508  if ('classList' in _document2.default.documentElement) {
3509      hasClassMethod = function hasClassMethod(el, className) {
3510          return el.classList !== undefined && el.classList.contains(className);
3511      };
3512      addClassMethod = function addClassMethod(el, className) {
3513          return el.classList.add(className);
3514      };
3515      removeClassMethod = function removeClassMethod(el, className) {
3516          return el.classList.remove(className);
3517      };
3518  } else {
3519      hasClassMethod = function hasClassMethod(el, className) {
3520          return new RegExp('\\b' + className + '\\b').test(el.className);
3521      };
3522      addClassMethod = function addClassMethod(el, className) {
3523          if (!hasClass(el, className)) {
3524              el.className += ' ' + className;
3525          }
3526      };
3527      removeClassMethod = function removeClassMethod(el, className) {
3528          el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), '');
3529      };
3530  }
3531  
3532  var hasClass = exports.hasClass = hasClassMethod;
3533  var addClass = exports.addClass = addClassMethod;
3534  var removeClass = exports.removeClass = removeClassMethod;
3535  
3536  function toggleClass(el, className) {
3537      hasClass(el, className) ? removeClass(el, className) : addClass(el, className);
3538  }
3539  
3540  function fadeOut(el) {
3541      var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
3542      var callback = arguments[2];
3543  
3544      if (!el.style.opacity) {
3545          el.style.opacity = 1;
3546      }
3547  
3548      var start = null;
3549      _window2.default.requestAnimationFrame(function animate(timestamp) {
3550          start = start || timestamp;
3551          var progress = timestamp - start;
3552          var opacity = parseFloat(1 - progress / duration, 2);
3553          el.style.opacity = opacity < 0 ? 0 : opacity;
3554          if (progress > duration) {
3555              if (callback && typeof callback === 'function') {
3556                  callback();
3557              }
3558          } else {
3559              _window2.default.requestAnimationFrame(animate);
3560          }
3561      });
3562  }
3563  
3564  function fadeIn(el) {
3565      var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
3566      var callback = arguments[2];
3567  
3568      if (!el.style.opacity) {
3569          el.style.opacity = 0;
3570      }
3571  
3572      var start = null;
3573      _window2.default.requestAnimationFrame(function animate(timestamp) {
3574          start = start || timestamp;
3575          var progress = timestamp - start;
3576          var opacity = parseFloat(progress / duration, 2);
3577          el.style.opacity = opacity > 1 ? 1 : opacity;
3578          if (progress > duration) {
3579              if (callback && typeof callback === 'function') {
3580                  callback();
3581              }
3582          } else {
3583              _window2.default.requestAnimationFrame(animate);
3584          }
3585      });
3586  }
3587  
3588  function siblings(el, filter) {
3589      var siblings = [];
3590      el = el.parentNode.firstChild;
3591      do {
3592          if (!filter || filter(el)) {
3593              siblings.push(el);
3594          }
3595      } while (el = el.nextSibling);
3596      return siblings;
3597  }
3598  
3599  function visible(elem) {
3600      if (elem.getClientRects !== undefined && elem.getClientRects === 'function') {
3601          return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
3602      }
3603      return !!(elem.offsetWidth || elem.offsetHeight);
3604  }
3605  
3606  function ajax(url, dataType, success, error) {
3607      var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
3608  
3609      var type = 'application/x-www-form-urlencoded; charset=UTF-8',
3610          completed = false,
3611          accept = '*/'.concat('*');
3612  
3613      switch (dataType) {
3614          case 'text':
3615              type = 'text/plain';
3616              break;
3617          case 'json':
3618              type = 'application/json, text/javascript';
3619              break;
3620          case 'html':
3621              type = 'text/html';
3622              break;
3623          case 'xml':
3624              type = 'application/xml, text/xml';
3625              break;
3626      }
3627  
3628      if (type !== 'application/x-www-form-urlencoded') {
3629          accept = type + ', */*; q=0.01';
3630      }
3631  
3632      if (xhr) {
3633          xhr.open('GET', url, true);
3634          xhr.setRequestHeader('Accept', accept);
3635          xhr.onreadystatechange = function () {
3636              if (completed) {
3637                  return;
3638              }
3639  
3640              if (xhr.readyState === 4) {
3641                  if (xhr.status === 200) {
3642                      completed = true;
3643                      var data = void 0;
3644                      switch (dataType) {
3645                          case 'json':
3646                              data = JSON.parse(xhr.responseText);
3647                              break;
3648                          case 'xml':
3649                              data = xhr.responseXML;
3650                              break;
3651                          default:
3652                              data = xhr.responseText;
3653                              break;
3654                      }
3655                      success(data);
3656                  } else if (typeof error === 'function') {
3657                      error(xhr.status);
3658                  }
3659              }
3660          };
3661  
3662          xhr.send();
3663      }
3664  }
3665  
3666  _mejs2.default.Utils = _mejs2.default.Utils || {};
3667  _mejs2.default.Utils.offset = offset;
3668  _mejs2.default.Utils.hasClass = hasClass;
3669  _mejs2.default.Utils.addClass = addClass;
3670  _mejs2.default.Utils.removeClass = removeClass;
3671  _mejs2.default.Utils.toggleClass = toggleClass;
3672  _mejs2.default.Utils.fadeIn = fadeIn;
3673  _mejs2.default.Utils.fadeOut = fadeOut;
3674  _mejs2.default.Utils.siblings = siblings;
3675  _mejs2.default.Utils.visible = visible;
3676  _mejs2.default.Utils.ajax = ajax;
3677  _mejs2.default.Utils.loadScript = loadScript;
3678  
3679  },{"2":2,"3":3,"8":8}],19:[function(_dereq_,module,exports){
3680  'use strict';
3681  
3682  Object.defineProperty(exports, "__esModule", {
3683      value: true
3684  });
3685  exports.escapeHTML = escapeHTML;
3686  exports.debounce = debounce;
3687  exports.isObjectEmpty = isObjectEmpty;
3688  exports.splitEvents = splitEvents;
3689  exports.createEvent = createEvent;
3690  exports.isNodeAfter = isNodeAfter;
3691  exports.isString = isString;
3692  
3693  var _mejs = _dereq_(8);
3694  
3695  var _mejs2 = _interopRequireDefault(_mejs);
3696  
3697  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3698  
3699  function escapeHTML(input) {
3700  
3701      if (typeof input !== 'string') {
3702          throw new Error('Argument passed must be a string');
3703      }
3704  
3705      var map = {
3706          '&': '&amp;',
3707          '<': '&lt;',
3708          '>': '&gt;',
3709          '"': '&quot;'
3710      };
3711  
3712      return input.replace(/[&<>"]/g, function (c) {
3713          return map[c];
3714      });
3715  }
3716  
3717  function debounce(func, wait) {
3718      var _this = this,
3719          _arguments = arguments;
3720  
3721      var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
3722  
3723  
3724      if (typeof func !== 'function') {
3725          throw new Error('First argument must be a function');
3726      }
3727  
3728      if (typeof wait !== 'number') {
3729          throw new Error('Second argument must be a numeric value');
3730      }
3731  
3732      var timeout = void 0;
3733      return function () {
3734          var context = _this,
3735              args = _arguments;
3736          var later = function later() {
3737              timeout = null;
3738              if (!immediate) {
3739                  func.apply(context, args);
3740              }
3741          };
3742          var callNow = immediate && !timeout;
3743          clearTimeout(timeout);
3744          timeout = setTimeout(later, wait);
3745  
3746          if (callNow) {
3747              func.apply(context, args);
3748          }
3749      };
3750  }
3751  
3752  function isObjectEmpty(instance) {
3753      return Object.getOwnPropertyNames(instance).length <= 0;
3754  }
3755  
3756  function splitEvents(events, id) {
3757      var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
3758  
3759      var ret = { d: [], w: [] };
3760      (events || '').split(' ').forEach(function (v) {
3761          var eventName = '' + v + (id ? '.' + id : '');
3762  
3763          if (eventName.startsWith('.')) {
3764              ret.d.push(eventName);
3765              ret.w.push(eventName);
3766          } else {
3767              ret[rwindow.test(v) ? 'w' : 'd'].push(eventName);
3768          }
3769      });
3770  
3771      ret.d = ret.d.join(' ');
3772      ret.w = ret.w.join(' ');
3773      return ret;
3774  }
3775  
3776  function createEvent(eventName, target) {
3777  
3778      if (typeof eventName !== 'string') {
3779          throw new Error('Event name must be a string');
3780      }
3781  
3782      var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i),
3783          detail = {
3784          target: target
3785      };
3786  
3787      if (eventFrags !== null) {
3788          eventName = eventFrags[1];
3789          detail.namespace = eventFrags[2];
3790      }
3791  
3792      return new window.CustomEvent(eventName, {
3793          detail: detail
3794      });
3795  }
3796  
3797  function isNodeAfter(sourceNode, targetNode) {
3798  
3799      return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2);
3800  }
3801  
3802  function isString(value) {
3803      return typeof value === 'string';
3804  }
3805  
3806  _mejs2.default.Utils = _mejs2.default.Utils || {};
3807  _mejs2.default.Utils.escapeHTML = escapeHTML;
3808  _mejs2.default.Utils.debounce = debounce;
3809  _mejs2.default.Utils.isObjectEmpty = isObjectEmpty;
3810  _mejs2.default.Utils.splitEvents = splitEvents;
3811  _mejs2.default.Utils.createEvent = createEvent;
3812  _mejs2.default.Utils.isNodeAfter = isNodeAfter;
3813  _mejs2.default.Utils.isString = isString;
3814  
3815  },{"8":8}],20:[function(_dereq_,module,exports){
3816  'use strict';
3817  
3818  Object.defineProperty(exports, "__esModule", {
3819      value: true
3820  });
3821  exports.typeChecks = undefined;
3822  exports.absolutizeUrl = absolutizeUrl;
3823  exports.formatType = formatType;
3824  exports.getMimeFromType = getMimeFromType;
3825  exports.getTypeFromFile = getTypeFromFile;
3826  exports.getExtension = getExtension;
3827  exports.normalizeExtension = normalizeExtension;
3828  
3829  var _mejs = _dereq_(8);
3830  
3831  var _mejs2 = _interopRequireDefault(_mejs);
3832  
3833  var _general = _dereq_(19);
3834  
3835  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3836  
3837  var typeChecks = exports.typeChecks = [];
3838  
3839  function absolutizeUrl(url) {
3840  
3841      if (typeof url !== 'string') {
3842          throw new Error('`url` argument must be a string');
3843      }
3844  
3845      var el = document.createElement('div');
3846      el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>';
3847      return el.firstChild.href;
3848  }
3849  
3850  function formatType(url) {
3851      var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
3852  
3853      return url && !type ? getTypeFromFile(url) : type;
3854  }
3855  
3856  function getMimeFromType(type) {
3857  
3858      if (typeof type !== 'string') {
3859          throw new Error('`type` argument must be a string');
3860      }
3861  
3862      return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type;
3863  }
3864  
3865  function getTypeFromFile(url) {
3866  
3867      if (typeof url !== 'string') {
3868          throw new Error('`url` argument must be a string');
3869      }
3870  
3871      for (var i = 0, total = typeChecks.length; i < total; i++) {
3872          var type = typeChecks[i](url);
3873  
3874          if (type) {
3875              return type;
3876          }
3877      }
3878  
3879      var ext = getExtension(url),
3880          normalizedExt = normalizeExtension(ext);
3881  
3882      var mime = 'video/mp4';
3883  
3884      if (normalizedExt) {
3885          if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg'].indexOf(normalizedExt)) {
3886              mime = 'video/' + normalizedExt;
3887          } else if ('mov' === normalizedExt) {
3888              mime = 'video/quicktime';
3889          } else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) {
3890              mime = 'audio/' + normalizedExt;
3891          }
3892      }
3893  
3894      return mime;
3895  }
3896  
3897  function getExtension(url) {
3898  
3899      if (typeof url !== 'string') {
3900          throw new Error('`url` argument must be a string');
3901      }
3902  
3903      var baseUrl = url.split('?')[0],
3904          baseName = baseUrl.split('\\').pop().split('/').pop();
3905      return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
3906  }
3907  
3908  function normalizeExtension(extension) {
3909  
3910      if (typeof extension !== 'string') {
3911          throw new Error('`extension` argument must be a string');
3912      }
3913  
3914      switch (extension) {
3915          case 'mp4':
3916          case 'm4v':
3917              return 'mp4';
3918          case 'webm':
3919          case 'webma':
3920          case 'webmv':
3921              return 'webm';
3922          case 'ogg':
3923          case 'oga':
3924          case 'ogv':
3925              return 'ogg';
3926          default:
3927              return extension;
3928      }
3929  }
3930  
3931  _mejs2.default.Utils = _mejs2.default.Utils || {};
3932  _mejs2.default.Utils.typeChecks = typeChecks;
3933  _mejs2.default.Utils.absolutizeUrl = absolutizeUrl;
3934  _mejs2.default.Utils.formatType = formatType;
3935  _mejs2.default.Utils.getMimeFromType = getMimeFromType;
3936  _mejs2.default.Utils.getTypeFromFile = getTypeFromFile;
3937  _mejs2.default.Utils.getExtension = getExtension;
3938  _mejs2.default.Utils.normalizeExtension = normalizeExtension;
3939  
3940  },{"19":19,"8":8}],21:[function(_dereq_,module,exports){
3941  'use strict';
3942  
3943  var _document = _dereq_(2);
3944  
3945  var _document2 = _interopRequireDefault(_document);
3946  
3947  var _promisePolyfill = _dereq_(4);
3948  
3949  var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);
3950  
3951  var _svg4everybody = _dereq_(5);
3952  
3953  var _svg4everybody2 = _interopRequireDefault(_svg4everybody);
3954  
3955  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3956  
3957  (function (arr) {
3958      arr.forEach(function (item) {
3959          if (item.hasOwnProperty('remove')) {
3960              return;
3961          }
3962          Object.defineProperty(item, 'remove', {
3963              configurable: true,
3964              enumerable: true,
3965              writable: true,
3966              value: function remove() {
3967                  this.parentNode.removeChild(this);
3968              }
3969          });
3970      });
3971  })([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
3972  
3973  (function () {
3974  
3975      if (typeof window.CustomEvent === 'function') {
3976          return false;
3977      }
3978  
3979      function CustomEvent(event, params) {
3980          params = params || { bubbles: false, cancelable: false, detail: undefined };
3981          var evt = _document2.default.createEvent('CustomEvent');
3982          evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
3983          return evt;
3984      }
3985  
3986      CustomEvent.prototype = window.Event.prototype;
3987      window.CustomEvent = CustomEvent;
3988  })();
3989  
3990  if (typeof Object.assign !== 'function') {
3991      Object.assign = function (target) {
3992  
3993          if (target === null || target === undefined) {
3994              throw new TypeError('Cannot convert undefined or null to object');
3995          }
3996  
3997          var to = Object(target);
3998  
3999          for (var index = 1, total = arguments.length; index < total; index++) {
4000              var nextSource = arguments[index];
4001  
4002              if (nextSource !== null) {
4003                  for (var nextKey in nextSource) {
4004                      if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
4005                          to[nextKey] = nextSource[nextKey];
4006                      }
4007                  }
4008              }
4009          }
4010          return to;
4011      };
4012  }
4013  
4014  if (!String.prototype.startsWith) {
4015      String.prototype.startsWith = function (searchString, position) {
4016          position = position || 0;
4017          return this.substr(position, searchString.length) === searchString;
4018      };
4019  }
4020  
4021  if (!Element.prototype.matches) {
4022      Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
4023          var matches = (this.document || this.ownerDocument).querySelectorAll(s),
4024              i = matches.length - 1;
4025          while (--i >= 0 && matches.item(i) !== this) {}
4026          return i > -1;
4027      };
4028  }
4029  
4030  if (window.Element && !Element.prototype.closest) {
4031      Element.prototype.closest = function (s) {
4032          var matches = (this.document || this.ownerDocument).querySelectorAll(s),
4033              i = void 0,
4034              el = this;
4035          do {
4036              i = matches.length;
4037              while (--i >= 0 && matches.item(i) !== el) {}
4038          } while (i < 0 && (el = el.parentElement));
4039          return el;
4040      };
4041  }
4042  
4043  (function () {
4044      var lastTime = 0;
4045      var vendors = ['ms', 'moz', 'webkit', 'o'];
4046      for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
4047          window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
4048          window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
4049      }
4050  
4051      if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) {
4052          var currTime = new Date().getTime();
4053          var timeToCall = Math.max(0, 16 - (currTime - lastTime));
4054          var id = window.setTimeout(function () {
4055              callback(currTime + timeToCall);
4056          }, timeToCall);
4057          lastTime = currTime + timeToCall;
4058          return id;
4059      };
4060  
4061      if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {
4062          clearTimeout(id);
4063      };
4064  })();
4065  
4066  if (/firefox/i.test(navigator.userAgent)) {
4067      var getComputedStyle = window.getComputedStyle;
4068      window.getComputedStyle = function (el, pseudoEl) {
4069          var t = getComputedStyle(el, pseudoEl);
4070          return t === null ? { getPropertyValue: function getPropertyValue() {} } : t;
4071      };
4072  }
4073  
4074  if (!window.Promise) {
4075      window.Promise = _promisePolyfill2.default;
4076  }
4077  
4078  (0, _svg4everybody2.default)();
4079  
4080  (function (constructor) {
4081      if (constructor && constructor.prototype && constructor.prototype.children === null) {
4082          Object.defineProperty(constructor.prototype, 'children', {
4083              get: function get() {
4084                  var i = 0,
4085                      node = void 0,
4086                      nodes = this.childNodes,
4087                      children = [];
4088                  while (node = nodes[i++]) {
4089                      if (node.nodeType === 1) {
4090                          children.push(node);
4091                      }
4092                  }
4093                  return children;
4094              }
4095          });
4096      }
4097  })(window.Node || window.Element);
4098  
4099  },{"2":2,"4":4,"5":5}]},{},[21,7,6,10,15,12,11,13,14,16]);


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer