PageSourceSearch

https://canadatattooshows.com/cms2t/res/mediaelement/mediaelement-and-player.js

js canadatattooshows.com collected 2026-10-09 22:41:25 UTC 257,619 bytes, 8,396 lines download raw bytes

vendor: 25,548 bytes, lines 1-702
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 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})({1:[function(_dereq_,module,exports){
12
13},{}],2:[function(_dereq_,module,exports){
14(function (global){
15var topLevel = typeof global !== 'undefined' ? global :
16    typeof window !== 'undefined' ? window : {}
17var minDoc = _dereq_(1);
18
19var doccy;
20
21if (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
31module.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){
36var win;
37
38if (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
48module.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'use strict';
288
289Object.defineProperty(exports, "__esModule", {
290	value: true
291});
292
293var _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; };
294
295var _mejs = _dereq_(7);
296
297var _mejs2 = _interopRequireDefault(_mejs);
298
299var _en = _dereq_(15);
300
301var _general = _dereq_(27);
302
303function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
304
305var i18n = { lang: 'en', en: _en.EN };
306
307i18n.language = function () {
308	for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
309		args[_key] = arguments[_key];
310	}
311
312	if (args !== null && args !== undefined && args.length) {
313
314		if (typeof args[0] !== 'string') {
315			throw new TypeError('Language code must be a string value');
316		}
317
318		if (!/^[a-z]{2}(\-[a-z]{2})?$/i.test(args[0])) {
319			throw new TypeError('Language code must have format `xx` or `xx-xx`');
320		}
321
322		i18n.lang = args[0];
323
324		if (i18n[args[0]] === undefined) {
325			args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {};
326			i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN;
327		} else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') {
328			i18n[args[0]] = args[1];
329		}
330	}
331
332	return i18n.lang;
333};
334
335i18n.t = function (message) {
336	var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
337
338
339	if (typeof message === 'string' && message.length) {
340
341		var str = void 0,
342		    pluralForm = void 0;
343
344		var language = i18n.language();
345
346		var _plural = function _plural(input, number, form) {
347
348			if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') {
349				return input;
350			}
351
352			var _pluralForms = function () {
353				return [function () {
354					return arguments.length <= 1 ? undefined : arguments[1];
355				}, function () {
356					return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
357				}, function () {
358					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];
359				}, function () {
360					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
361						return arguments.length <= 1 ? undefined : arguments[1];
362					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) {
363						return arguments.length <= 2 ? undefined : arguments[2];
364					} else {
365						return arguments.length <= 3 ? undefined : arguments[3];
366					}
367				}, function () {
368					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) {
369						return arguments.length <= 1 ? undefined : arguments[1];
370					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) {
371						return arguments.length <= 2 ? undefined : arguments[2];
372					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) {
373						return arguments.length <= 3 ? undefined : arguments[3];
374					} else {
375						return arguments.length <= 4 ? undefined : arguments[4];
376					}
377				}, function () {
378					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
379						return arguments.length <= 1 ? undefined : arguments[1];
380					} 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) {
381						return arguments.length <= 2 ? undefined : arguments[2];
382					} else {
383						return arguments.length <= 3 ? undefined : arguments[3];
384					}
385				}, function () {
386					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
387						return arguments.length <= 1 ? undefined : arguments[1];
388					} 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)) {
389						return arguments.length <= 2 ? undefined : arguments[2];
390					} else {
391						return [3];
392					}
393				}, function () {
394					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
395						return arguments.length <= 1 ? undefined : arguments[1];
396					} 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)) {
397						return arguments.length <= 2 ? undefined : arguments[2];
398					} else {
399						return arguments.length <= 3 ? undefined : arguments[3];
400					}
401				}, function () {
402					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
403						return arguments.length <= 1 ? undefined : arguments[1];
404					} else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) {
405						return arguments.length <= 2 ? undefined : arguments[2];
406					} else {
407						return arguments.length <= 3 ? undefined : arguments[3];
408					}
409				}, function () {
410					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
411						return arguments.length <= 1 ? undefined : arguments[1];
412					} 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)) {
413						return arguments.length <= 2 ? undefined : arguments[2];
414					} else {
415						return arguments.length <= 3 ? undefined : arguments[3];
416					}
417				}, function () {
418					if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) {
419						return arguments.length <= 2 ? undefined : arguments[2];
420					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) {
421						return arguments.length <= 3 ? undefined : arguments[3];
422					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) {
423						return arguments.length <= 4 ? undefined : arguments[4];
424					} else {
425						return arguments.length <= 1 ? undefined : arguments[1];
426					}
427				}, function () {
428					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
429						return arguments.length <= 1 ? undefined : arguments[1];
430					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
431						return arguments.length <= 2 ? undefined : arguments[2];
432					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) {
433						return arguments.length <= 3 ? undefined : arguments[3];
434					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) {
435						return arguments.length <= 4 ? undefined : arguments[4];
436					} else {
437						return arguments.length <= 5 ? undefined : arguments[5];
438					}
439				}, function () {
440					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
441						return arguments.length <= 1 ? undefined : arguments[1];
442					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
443						return arguments.length <= 2 ? undefined : arguments[2];
444					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
445						return arguments.length <= 3 ? undefined : arguments[3];
446					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) {
447						return arguments.length <= 4 ? undefined : arguments[4];
448					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) {
449						return arguments.length <= 5 ? undefined : arguments[5];
450					} else {
451						return arguments.length <= 6 ? undefined : arguments[6];
452					}
453				}, function () {
454					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
455						return arguments.length <= 1 ? undefined : arguments[1];
456					} 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) {
457						return arguments.length <= 2 ? undefined : arguments[2];
458					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
459						return arguments.length <= 3 ? undefined : arguments[3];
460					} else {
461						return arguments.length <= 4 ? undefined : arguments[4];
462					}
463				}, function () {
464					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) {
465						return arguments.length <= 1 ? undefined : arguments[1];
466					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) {
467						return arguments.length <= 2 ? undefined : arguments[2];
468					} else {
469						return arguments.length <= 3 ? undefined : arguments[3];
470					}
471				}, function () {
472					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];
473				}, function () {
474					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
475						return arguments.length <= 1 ? undefined : arguments[1];
476					} 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)) {
477						return arguments.length <= 2 ? undefined : arguments[2];
478					} else {
479						return arguments.length <= 3 ? undefined : arguments[3];
480					}
481				}, function () {
482					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
483						return arguments.length <= 1 ? undefined : arguments[1];
484					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
485						return arguments.length <= 2 ? undefined : arguments[2];
486					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) {
487						return arguments.length <= 3 ? undefined : arguments[3];
488					} else {
489						return arguments.length <= 4 ? undefined : arguments[4];
490					}
491				}, function () {
492					return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
493				}, function () {
494					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
495						return arguments.length <= 1 ? undefined : arguments[1];
496					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
497						return arguments.length <= 2 ? undefined : arguments[2];
498					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) {
499						return arguments.length <= 3 ? undefined : arguments[3];
500					} else {
501						return arguments.length <= 4 ? undefined : arguments[4];
502					}
503				}, function () {
504					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
505						return arguments.length <= 1 ? undefined : arguments[1];
506					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
507						return arguments.length <= 2 ? undefined : arguments[2];
508					} else {
509						return arguments.length <= 3 ? undefined : arguments[3];
510					}
511				}];
512			}();
513
514			return _pluralForms[form].apply(null, [number].concat(input));
515		};
516
517		if (i18n[language] !== undefined) {
518			str = i18n[language][message];
519			if (pluralParam !== null && typeof pluralParam === 'number') {
520				pluralForm = i18n[language]['mejs.plural-form'];
521				str = _plural.apply(null, [str, pluralParam, pluralForm]);
522			}
523		}
524
525		if (!str && i18n.en) {
526			str = i18n.en[message];
527			if (pluralParam !== null && typeof pluralParam === 'number') {
528				pluralForm = i18n.en['mejs.plural-form'];
529				str = _plural.apply(null, [str, pluralParam, pluralForm]);
530			}
531		}
532
533		str = str || message;
534
535		if (pluralParam !== null && typeof pluralParam === 'number') {
536			str = str.replace('%1', pluralParam);
537		}
538
539		return (0, _general.escapeHTML)(str);
540	}
541
542	return message;
543};
544
545_mejs2.default.i18n = i18n;
546
547if (typeof mejsL10n !== 'undefined') {
548	_mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings);
549}
550
551exports.default = i18n;
552
553},{"15":15,"27":27,"7":7}],6:[function(_dereq_,module,exports){
554'use strict';
555
556Object.defineProperty(exports, "__esModule", {
557	value: true
558});
559
560var _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; };
561
562var _window = _dereq_(3);
563
564var _window2 = _interopRequireDefault(_window);
565
566var _document = _dereq_(2);
567
568var _document2 = _interopRequireDefault(_document);
569
570var _mejs = _dereq_(7);
571
572var _mejs2 = _interopRequireDefault(_mejs);
573
574var _general = _dereq_(27);
575
576var _media2 = _dereq_(28);
577
578var _renderer = _dereq_(8);
579
580var _constants = _dereq_(25);
581
582function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
583
584function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
585
586var MediaElement = function MediaElement(idOrNode, options, sources) {
587	var _this = this;
588
589	_classCallCheck(this, MediaElement);
590
591	var t = this;
592
593	sources = Array.isArray(sources) ? sources : null;
594
595	t.defaults = {
596		renderers: [],
597
598		fakeNodeName: 'mediaelementwrapper',
599
600		pluginPath: 'build/',
601
602		shimScriptAccess: 'sameDomain'
603	};
604
605	options = Object.assign(t.defaults, options);
606
607	t.mediaElement = _document2.default.createElement(options.fakeNodeName);
608
609	var id = idOrNode,
610	    error = false;
611
612	if (typeof idOrNode === 'string') {
613		t.mediaElement.originalNode = _document2.default.getElementById(idOrNode);
614	} else {
615		t.mediaElement.originalNode = idOrNode;
616		id = idOrNode.id;
617	}
618
619	if (t.mediaElement.originalNode === undefined || t.mediaElement.originalNode === null) {
620		return null;
621	}
622
623	t.mediaElement.options = options;
624	id = id || 'mejs_' + Math.random().toString().slice(2);
625
626	t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs');
627
628	var tagName = t.mediaElement.originalNode.tagName.toLowerCase();
629	if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) {
630		t.mediaElement.originalNode.setAttribute('preload', 'none');
631	}
632
633	t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode);
634
635	t.mediaElement.appendChild(t.mediaElement.originalNode);
636
637	var processURL = function processURL(url, type) {
638		if (_window2.default.location.protocol === 'https:' && url.indexOf('http:') === 0 && _constants.IS_IOS && _mejs2.default.html5media.mediaTypes.indexOf(type) > -1) {
639			var xhr = new XMLHttpRequest();
640			xhr.onreadystatechange = function () {
641				if (this.readyState === 4 && this.status === 200) {
642					var _url = _window2.default.URL || _window2.default.webkitURL,
643					    blobUrl = _url.createObjectURL(this.response);
644					t.mediaElement.originalNode.setAttribute('src', blobUrl);
645					return blobUrl;
646				}
647				return url;
648			};
649			xhr.open('GET', url);
650			xhr.responseType = 'blob';
651			xhr.send();
652		}
653
654		return url;
655	};
656
657	var mediaFiles = void 0;
658
659	if (sources !== null) {
660		mediaFiles = sources;
661	} else if (t.mediaElement.originalNode !== null) {
662
663		mediaFiles = [];
664
665		switch (t.mediaElement.originalNode.nodeName.toLowerCase()) {
666			case 'iframe':
667				mediaFiles.push({
668					type: '',
669					src: t.mediaElement.originalNode.getAttribute('src')
670				});
671				break;
672			case 'audio':
673			case 'video':
674				var _sources = t.mediaElement.originalNode.children.length,
675				    nodeSource = t.mediaElement.originalNode.getAttribute('src');
676
677				if (nodeSource) {
678					var node = t.mediaElement.originalNode,
679					    type = (0, _media2.formatType)(nodeSource, node.getAttribute('type'));
680					mediaFiles.push({
681						type: type,
682						src: processURL(nodeSource, type)
683					});
684				}
685
686				for (var i = 0; i < _sources; i++) {
687					var n = t.mediaElement.originalNode.children[i];
688					if (n.tagName.toLowerCase() === 'source') {
689						var src = n.getAttribute('src'),
690						    _type = (0, _media2.formatType)(src, n.getAttribute('type'));
691						mediaFiles.push({ type: _type, src: processURL(src, _type) });
692					}
693				}
694				break;
695		}
696	}
697
698	t.mediaElement.id = id;
699	t.mediaElement.renderers = {};
700	t.mediaElement.events = {};
701	t.mediaElement.promises = [];
702	t.mediaElement.renderer = null;
703	t.mediaElement.rendererName = null;
704
705	t.mediaElement.changeRenderer = function (rendererName, mediaFiles) {
706
707		var t = _this,
708		    media = Object.keys(mediaFiles[0]).length > 2 ? mediaFiles[0] : mediaFiles[0].src;
709
710		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) {
711			t.mediaElement.renderer.pause();
712			if (t.mediaElement.renderer.stop) {
713				t.mediaElement.renderer.stop();
714			}
715			t.mediaElement.renderer.show();
716			t.mediaElement.renderer.setSrc(media);
717			return true;
718		}
719
720		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
721			t.mediaElement.renderer.pause();
722			if (t.mediaElement.renderer.stop) {
723				t.mediaElement.renderer.stop();
724			}
725			t.mediaElement.renderer.hide();
726		}
727
728		var newRenderer = t.mediaElement.renderers[rendererName],
729		    newRendererType = null;
730
731		if (newRenderer !== undefined && newRenderer !== null) {
732			newRenderer.show();
733			newRenderer.setSrc(media);
734			t.mediaElement.renderer = newRenderer;
vendor: 4,488 bytes, lines 735-862
735			t.mediaElement.rendererName = rendererName;
736			return true;
737		}
738
739		var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order;
740
741		for (var _i = 0, total = rendererArray.length; _i < total; _i++) {
742			var index = rendererArray[_i];
743
744			if (index === rendererName) {
745				var rendererList = _renderer.renderer.renderers;
746				newRendererType = rendererList[index];
747
748				var renderOptions = Object.assign(newRendererType.options, t.mediaElement.options);
749				newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles);
750				newRenderer.name = rendererName;
751
752				t.mediaElement.renderers[newRendererType.name] = newRenderer;
753				t.mediaElement.renderer = newRenderer;
754				t.mediaElement.rendererName = rendererName;
755				newRenderer.show();
756				return true;
757			}
758		}
759
760		return false;
761	};
762
763	t.mediaElement.setSize = function (width, height) {
764		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
765			t.mediaElement.renderer.setSize(width, height);
766		}
767	};
768
769	t.mediaElement.generateError = function (message, urlList) {
770		message = message || '';
771		urlList = Array.isArray(urlList) ? urlList : [];
772		var event = (0, _general.createEvent)('error', t.mediaElement);
773		event.message = message;
774		event.urls = urlList;
775		t.mediaElement.dispatchEvent(event);
776		error = true;
777	};
778
779	var props = _mejs2.default.html5media.properties,
780	    methods = _mejs2.default.html5media.methods,
781	    addProperty = function addProperty(obj, name, onGet, onSet) {
782		var oldValue = obj[name];
783		var getFn = function getFn() {
784			return onGet.apply(obj, [oldValue]);
785		},
786		    setFn = function setFn(newValue) {
787			oldValue = onSet.apply(obj, [newValue]);
788			return oldValue;
789		};
790
791		Object.defineProperty(obj, name, {
792			get: getFn,
793			set: setFn
794		});
795	},
796	    assignGettersSetters = function assignGettersSetters(propName) {
797		if (propName !== 'src') {
798
799			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1),
800			    getFn = function getFn() {
801				return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['get' + capName] === 'function' ? t.mediaElement.renderer['get' + capName]() : null;
802			},
803			    setFn = function setFn(value) {
804				if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['set' + capName] === 'function') {
805					t.mediaElement.renderer['set' + capName](value);
806				}
807			};
808
809			addProperty(t.mediaElement, propName, getFn, setFn);
810			t.mediaElement['get' + capName] = getFn;
811			t.mediaElement['set' + capName] = setFn;
812		}
813	},
814	    getSrc = function getSrc() {
815		return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null;
816	},
817	    setSrc = function setSrc(value) {
818		var mediaFiles = [];
819
820		if (typeof value === 'string') {
821			mediaFiles.push({
822				src: value,
823				type: value ? (0, _media2.getTypeFromFile)(value) : ''
824			});
825		} else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src !== undefined) {
826			var _src = (0, _media2.absolutizeUrl)(value.src),
827			    _type2 = value.type,
828			    media = Object.assign(value, {
829				src: _src,
830				type: (_type2 === '' || _type2 === null || _type2 === undefined) && _src ? (0, _media2.getTypeFromFile)(_src) : _type2
831			});
832			mediaFiles.push(media);
833		} else if (Array.isArray(value)) {
834			for (var _i2 = 0, total = value.length; _i2 < total; _i2++) {
835
836				var _src2 = (0, _media2.absolutizeUrl)(value[_i2].src),
837				    _type3 = value[_i2].type,
838				    _media = Object.assign(value[_i2], {
839					src: _src2,
840					type: (_type3 === '' || _type3 === null || _type3 === undefined) && _src2 ? (0, _media2.getTypeFromFile)(_src2) : _type3
841				});
842
843				mediaFiles.push(_media);
844			}
845		}
846
847		var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []),
848		    event = void 0;
849
850		if (!t.mediaElement.paused) {
851			t.mediaElement.pause();
852			event = (0, _general.createEvent)('pause', t.mediaElement);
853			t.mediaElement.dispatchEvent(event);
854		}
855		t.mediaElement.originalNode.src = mediaFiles[0].src || '';
856
857		if (renderInfo === null && mediaFiles[0].src) {
858			t.mediaElement.generateError('No renderer found', mediaFiles);
859			return;
860		}
861
862		return mediaFiles[0].src ? t.mediaElement.changeRenderer(renderInfo.rendererN
862ame, mediaFiles) : null;
863	},
864	    triggerAction = function triggerAction(methodName, args) {
865		try {
866			if (methodName === 'play' && t.mediaElement.rendererName === 'native_dash') {
867				setTimeout(function () {
868					t.mediaElement.renderer[methodName](args);
869				}, 150);
870			} else {
871				t.mediaElement.renderer[methodName](args);
872			}
873		} catch (e) {
874			t.mediaElement.generateError(e, mediaFiles);
875		}
876	},
877	    assignMethods = function assignMethods(methodName) {
878		t.mediaElement[methodName] = function () {
879			for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
880				args[_key] = arguments[_key];
881			}
882
883			if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') {
884				if (t.mediaElement.promises.length) {
885					Promise.all(t.mediaElement.promises).then(function () {
886						triggerAction(methodName, args);
887					}).catch(function (e) {
888						t.mediaElement.generateError(e, mediaFiles);
889					});
890				} else {
891					triggerAction(methodName, args);
892				}
893			}
894			return null;
895		};
896	};
897
898	addProperty(t.mediaElement, 'src', getSrc, setSrc);
899	t.mediaElement.getSrc = getSrc;
900	t.mediaElement.setSrc = setSrc;
901
902	for (var _i3 = 0, total = props.length; _i3 < total; _i3++) {
903		assignGettersSetters(props[_i3]);
904	}
905
906	for (var _i4 = 0, _total = methods.length; _i4 < _total; _i4++) {
907		assignMethods(methods[_i4]);
908	}
909
910	t.mediaElement.addEventListener = function (eventName, callback) {
911		t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];
912
913		t.mediaElement.events[eventName].push(callback);
914	};
915	t.mediaElement.removeEventListener = function (eventName, callback) {
916		if (!eventName) {
917			t.mediaElement.events = {};
918			return true;
919		}
920
921		var callbacks = t.mediaElement.events[eventName];
922
923		if (!callbacks) {
924			return true;
925		}
926
927		if (!callback) {
928			t.mediaElement.events[eventName] = [];
929			return true;
930		}
931
932		for (var _i5 = 0; _i5 < callbacks.length; _i5++) {
933			if (callbacks[_i5] === callback) {
934				t.mediaElement.events[eventName].splice(_i5, 1);
935				return true;
936			}
937		}
938		return false;
939	};
940
941	t.mediaElement.dispatchEvent = function (event) {
942		var callbacks = t.mediaElement.events[event.type];
943		if (callbacks) {
944			for (var _i6 = 0; _i6 < callbacks.length; _i6++) {
945				callbacks[_i6].apply(null, [event]);
946			}
947		}
948	};
949
950	if (mediaFiles.length) {
951		t.mediaElement.src = mediaFiles;
952	}
953
954	if (t.mediaElement.promises.length) {
955		Promise.all(t.mediaElement.promises).then(function () {
956			if (t.mediaElement.options.success) {
957				t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
958			}
959		}).catch(function () {
960			if (error && t.mediaElement.options.error) {
961				t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
962			}
963		});
964	} else {
965		if (t.mediaElement.options.success) {
966			t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
967		}
968
969		if (error && t.mediaElement.options.error) {
970			t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
971		}
972	}
973
974	return t.mediaElement;
975};
976
977_window2.default.MediaElement = MediaElement;
978_mejs2.default.MediaElement = MediaElement;
979
980exports.default = MediaElement;
981
982},{"2":2,"25":25,"27":27,"28":28,"3":3,"7":7,"8":8}],7:[function(_dereq_,module,exports){
983'use strict';
984
985Object.defineProperty(exports, "__esModule", {
986	value: true
987});
988
989var _window = _dereq_(3);
990
991var _window2 = _interopRequireDefault(_window);
992
993function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
994
995var mejs = {};
996
997mejs.version = '4.2.5';
998
999mejs.html5media = {
1000	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'],
1001	readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
1002
1003	methods: ['load', 'play', 'pause', 'canPlayType'],
1004
1005	events: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'progress', 'canplay', 'canplaythrough', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'playing', 'pause', 'waiting', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'volumechange'],
1006
1007	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']
1008};
1009
1010_window2.default.mejs = mejs;
1011
1012exports.default = mejs;
1013
1014},{"3":3}],8:[function(_dereq_,module,exports){
1015'use strict';
1016
1017Object.defineProperty(exports, "__esModule", {
1018	value: true
1019});
1020exports.renderer = undefined;
1021
1022var _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; };
1023
1024var _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; }; }();
1025
1026var _mejs = _dereq_(7);
1027
1028var _mejs2 = _interopRequireDefault(_mejs);
1029
1030function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1031
1032function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1033
1034var Renderer = function () {
vendor: 5,597 bytes, lines 1035-1246
1035	function Renderer() {
1036		_classCallCheck(this, Renderer);
1037
1038		this.renderers = {};
1039		this.order = [];
1040	}
1041
1042	_createClass(Renderer, [{
1043		key: 'add',
1044		value: function add(renderer) {
1045			if (renderer.name === undefined) {
1046				throw new TypeError('renderer must contain at least `name` property');
1047			}
1048
1049			this.renderers[renderer.name] = renderer;
1050			this.order.push(renderer.name);
1051		}
1052	}, {
1053		key: 'select',
1054		value: function select(mediaFiles) {
1055			var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
1056
1057			var renderersLength = renderers.length;
1058
1059			renderers = renderers.length ? renderers : this.order;
1060
1061			if (!renderersLength) {
1062				var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i],
1063				    rendererRanking = function rendererRanking(renderer) {
1064					for (var i = 0, total = rendererIndicator.length; i < total; i++) {
1065						if (rendererIndicator[i].test(renderer)) {
1066							return i;
1067						}
1068					}
1069					return rendererIndicator.length;
1070				};
1071
1072				renderers.sort(function (a, b) {
1073					return rendererRanking(a) - rendererRanking(b);
1074				});
1075			}
1076
1077			for (var i = 0, total = renderers.length; i < total; i++) {
1078				var key = renderers[i],
1079				    _renderer = this.renderers[key];
1080
1081				if (_renderer !== null && _renderer !== undefined) {
1082					for (var j = 0, jl = mediaFiles.length; j < jl; j++) {
1083						if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) {
1084							return {
1085								rendererName: _renderer.name,
1086								src: mediaFiles[j].src
1087							};
1088						}
1089					}
1090				}
1091			}
1092
1093			return null;
1094		}
1095	}, {
1096		key: 'order',
1097		set: function set(order) {
1098			if (!Array.isArray(order)) {
1099				throw new TypeError('order must be an array of strings.');
1100			}
1101
1102			this._order = order;
1103		},
1104		get: function get() {
1105			return this._order;
1106		}
1107	}, {
1108		key: 'renderers',
1109		set: function set(renderers) {
1110			if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {
1111				throw new TypeError('renderers must be an array of objects.');
1112			}
1113
1114			this._renderers = renderers;
1115		},
1116		get: function get() {
1117			return this._renderers;
1118		}
1119	}]);
1120
1121	return Renderer;
1122}();
1123
1124var renderer = exports.renderer = new Renderer();
1125
1126_mejs2.default.Renderers = renderer;
1127
1128},{"7":7}],9:[function(_dereq_,module,exports){
1129'use strict';
1130
1131var _window = _dereq_(3);
1132
1133var _window2 = _interopRequireDefault(_window);
1134
1135var _document = _dereq_(2);
1136
1137var _document2 = _interopRequireDefault(_document);
1138
1139var _i18n = _dereq_(5);
1140
1141var _i18n2 = _interopRequireDefault(_i18n);
1142
1143var _player = _dereq_(16);
1144
1145var _player2 = _interopRequireDefault(_player);
1146
1147var _constants = _dereq_(25);
1148
1149var Features = _interopRequireWildcard(_constants);
1150
1151var _general = _dereq_(27);
1152
1153var _dom = _dereq_(26);
1154
1155var _media = _dereq_(28);
1156
1157function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
1158
1159function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1160
1161Object.assign(_player.config, {
1162	usePluginFullScreen: true,
1163
1164	fullscreenText: null,
1165
1166	useFakeFullscreen: false
1167});
1168
1169Object.assign(_player2.default.prototype, {
1170	isFullScreen: false,
1171
1172	isNativeFullScreen: false,
1173
1174	isInIframe: false,
1175
1176	isPluginClickThroughCreated: false,
1177
1178	fullscreenMode: '',
1179
1180	containerSizeTimeout: null,
1181
1182	buildfullscreen: function buildfullscreen(player) {
1183		if (!player.isVideo) {
1184			return;
1185		}
1186
1187		player.isInIframe = _window2.default.location !== _window2.default.parent.location;
1188
1189		player.detectFullscreenMode();
1190
1191		var t = this,
1192		    fullscreenTitle = (0, _general.isString)(t.options.fullscreenText) ? t.options.fullscreenText : _i18n2.default.t('mejs.fullscreen'),
1193		    fullscreenBtn = _document2.default.createElement('div');
1194
1195		fullscreenBtn.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'fullscreen-button';
1196		fullscreenBtn.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + fullscreenTitle + '" aria-label="' + fullscreenTitle + '" tabindex="0"></button>';
1197		t.addControlElement(fullscreenBtn, 'fullscreen');
1198
1199		fullscreenBtn.addEventListener('click', function () {
1200			var isFullScreen = Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || player.isFullScreen;
1201
1202			if (isFullScreen) {
1203				player.exitFullScreen();
1204			} else {
1205				player.enterFullScreen();
1206			}
1207		});
1208
1209		player.fullscreenBtn = fullscreenBtn;
1210
1211		t.options.keyActions.push({
1212			keys: [70],
1213			action: function action(player, media, key, event) {
1214				if (!event.ctrlKey) {
1215					if (typeof player.enterFullScreen !== 'undefined') {
1216						if (player.isFullScreen) {
1217							player.exitFullScreen();
1218						} else {
1219							player.enterFullScreen();
1220						}
1221					}
1222				}
1223			}
1224		});
1225
1226		t.exitFullscreenCallback = function (e) {
1227			var key = e.which || e.keyCode || 0;
1228			if (key === 27 && (Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || t.isFullScreen)) {
1229				player.exitFullScreen();
1230			}
1231		};
1232
1233		t.globalBind('keydown', t.exitFullscreenCallback);
1234
1235		t.normalHeight = 0;
1236		t.normalWidth = 0;
1237
1238		if (Features.HAS_TRUE_NATIVE_FULLSCREEN) {
1239			var fullscreenChanged = function fullscreenChanged() {
1240				if (player.isFullScreen) {
1241					if (Features.isFullScreen()) {
1242						player.isNativeFullScreen = true;
1243
1244						player.setControlsSize();
1245					} else {
1246						player.isNativeFullScreen = false;
1247
1248						player.exitFullScreen();
1249					}
1250				}
1251			};
1252
1253			player.globalBind(Features.FULLSCREEN_EVENT_NAME, fullscreenChanged);
1254		}
1255	},
1256	cleanfullscreen: function cleanfullscreen(player) {
1257		player.exitFullScreen();
1258		player.globalUnbind('keydown', player.exitFullscreenCallback);
1259	},
1260	detectFullscreenMode: function detectFullscreenMode() {
1261		var t = this,
1262		    isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
1263
1264		var mode = '';
1265
1266		if (Features.HAS_TRUE_NATIVE_FULLSCREEN && isNative) {
1267			mode = 'native-native';
1268		} else if (Features.HAS_TRUE_NATIVE_FULLSCREEN && !isNative) {
1269			mode = 'plugin-native';
1270		} else if (t.usePluginFullScreen && Features.SUPPORT_POINTER_EVENTS) {
1271			mode = 'plugin-click';
1272		}
1273
1274		t.fullscreenMode = mode;
1275		return mode;
1276	},
1277	enterFullScreen: function enterFullScreen() {
1278		var t = this,
1279		    isNative = t.media.rendererName !== null && /(html5|native)/i.test(t.media.rendererName),
1280		    containerStyles = getComputedStyle(t.container);
1281
1282		if (t.options.useFakeFullscreen === false && Features.IS_IOS && Features.HAS_IOS_FULLSCREEN && typeof t.media.originalNode.webkitEnterFullscreen === 'function' && t.media.originalNode.canPlayType((0, _media.getTypeFromFile)(t.media.getSrc()))) {
1283			t.media.originalNode.webkitEnterFullscreen();
1284			return;
1285		}
1286
1287		(0, _dom.addClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
1288		(0, _dom.addClass)(t.container, t.options.classPrefix + 'container-fullscreen');
1289
1290		t.normalHeight = parseFloat(containerStyles.height);
1291		t.normalWidth = parseFloat(containerStyles.width);
1292
1293		if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') {
1294			Features.requestFullScreen(t.container);
1295
1296			if (t.isInIframe) {
1297				setTimeout(function checkFullscreen() {
1298
1299					if (t.isNativeFullScreen) {
1300						var percentErrorMargin = 0.002,
1301						    windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth,
1302						    screenWidth = screen.width,
1303						    absDiff = Math.abs(screenWidth - windowWidth),
1304						    marginError = screenWidth * percentErrorMargin;
1305
1306						if (absDiff > marginError) {
1307							t.exitFullScreen();
1308						} else {
1309							setTimeout(checkFullscreen, 500);
1310						}
1311					}
1312				}, 1000);
1313			}
1314		}
1315
1316		t.container.style.width = '100%';
1317		t.container.style.height = '100%';
1318
1319		t.containerSizeTimeout = setTimeout(function () {
1320			t.container.style.width = '100%';
1321			t.container.style.height = '100%';
1322			t.setControlsSize();
1323		}, 500);
1324
1325		if (isNative) {
1326			t.node.style.width = '100%';
1327			t.node.style.height = '100%';
1328		} else {
1329			var elements = t.container.querySelectorAll('embed, object, video'),
1330			    _total = elements.length;
1331			for (var i = 0; i < _total; i++) {
1332				elements[i].style.width = '100%';
1333				elements[i].style.height = '100%';
1334			}
1335		}
1336
1337		if (t.options.setDimensions && typeof t.media.setSize === 'function') {
1338			t.media.setSize(screen.width, screen.height);
1339		}
1340
1341		var layers = t.layers.children,
1342		    total = layers.length;
1343		for (var _i = 0; _i < total; _i++) {
1344			layers[_i].style.width = '100%';
1345			layers[_i].style.height = '100%';
1346		}
1347
1348		if (t.fullscreenBtn) {
1349			(0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
1350			(0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
1351		}
1352
1353		t.setControlsSize();
1354		t.isFullScreen = true;
1355
1356		var zoomFactor = Math.min(screen.width / t.width, screen.height / t.height),
1357		    captionText = t.container.querySelector('.' + t.options.classPrefix + 'captions-text');
1358		if (captionText) {
1359			captionText.style.fontSize = zoomFactor * 100 + '%';
1360			captionText.style.lineHeight = 'normal';
1361			t.container.querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = '45px';
1362		}
1363		var event = (0, _general.createEvent)('enteredfullscreen', t.container);
1364		t.container.dispatchEvent(event);
1365	},
1366	exitFullScreen: function exitFullScreen() {
1367		var t = this,
1368		    isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererN
1368ame);
1369
1370		clearTimeout(t.containerSizeTimeout);
1371
1372		if (Features.HAS_TRUE_NATIVE_FULLSCREEN && (Features.IS_FULLSCREEN || t.isFullScreen)) {
1373			Features.cancelFullScreen();
1374		}
1375
1376		(0, _dom.removeClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
1377		(0, _dom.removeClass)(t.container, t.options.classPrefix + 'container-fullscreen');
1378
1379		if (t.options.setDimensions) {
1380			t.container.style.width = t.normalWidth + 'px';
1381			t.container.style.height = t.normalHeight + 'px';
1382
1383			if (isNative) {
1384				t.node.style.width = t.normalWidth + 'px';
1385				t.node.style.height = t.normalHeight + 'px';
1386			} else {
1387				var elements = t.container.querySelectorAll('embed, object, video'),
1388				    _total2 = elements.length;
1389				for (var i = 0; i < _total2; i++) {
1390					elements[i].style.width = t.normalWidth + 'px';
1391					elements[i].style.height = t.normalHeight + 'px';
1392				}
1393			}
1394
1395			if (typeof t.media.setSize === 'function') {
1396				t.media.setSize(t.normalWidth, t.normalHeight);
1397			}
1398
1399			var layers = t.layers.children,
1400			    total = layers.length;
1401			for (var _i2 = 0; _i2 < total; _i2++) {
1402				layers[_i2].style.width = t.normalWidth + 'px';
1403				layers[_i2].style.height = t.normalHeight + 'px';
1404			}
1405		}
1406
1407		if (t.fullscreenBtn) {
1408			(0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
1409			(0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
1410		}
1411
1412		t.setControlsSize();
1413		t.isFullScreen = false;
1414
1415		var captionText = t.container.querySelector('.' + t.options.classPrefix + 'captions-text');
1416		if (captionText) {
1417			captionText.style.fontSize = '';
1418			captionText.style.lineHeight = '';
1419			t.container.querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = '';
1420		}
1421		var event = (0, _general.createEvent)('exitedfullscreen', t.container);
1422		t.container.dispatchEvent(event);
1423	}
1424});
1425
1426},{"16":16,"2":2,"25":25,"26":26,"27":27,"28":28,"3":3,"5":5}],10:[function(_dereq_,module,exports){
1427'use strict';
1428
1429var _document = _dereq_(2);
1430
1431var _document2 = _interopRequireDefault(_document);
1432
1433var _player = _dereq_(16);
1434
1435var _player2 = _interopRequireDefault(_player);
1436
1437var _i18n = _dereq_(5);
1438
1439var _i18n2 = _interopRequireDefault(_i18n);
1440
1441var _general = _dereq_(27);
1442
1443var _dom = _dereq_(26);
1444
1445function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1446
1447Object.assign(_player.config, {
1448	playText: null,
1449
1450	pauseText: null
1451});
1452
1453Object.assign(_player2.default.prototype, {
1454	buildplaypause: function buildplaypause(player, controls, layers, media) {
1455		var t = this,
1456		    op = t.options,
1457		    playTitle = (0, _general.isString)(op.playText) ? op.playText : _i18n2.default.t('mejs.play'),
1458		    pauseTitle = (0, _general.isString)(op.pauseText) ? op.pauseText : _i18n2.default.t('mejs.pause'),
1459		    play = _document2.default.createElement('div');
1460
1461		play.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'playpause-button ' + t.options.classPrefix + 'play';
1462		play.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + playTitle + '" aria-label="' + pauseTitle + '" tabindex="0"></button>';
1463		play.addEventListener('click', function () {
1464			if (t.paused) {
1465				t.play();
1466			} else {
1467				t.pause();
1468			}
1469		});
1470
1471		var playBtn = play.querySelector('button');
1472		t.addControlElement(play, 'playpause');
1473
1474		function togglePlayPause(which) {
1475			if ('play' === which) {
1476				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
1477				(0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
1478				(0, _dom.addClass)(play, t.options.classPrefix + 'pause');
1479				playBtn.setAttribute('title', pauseTitle);
1480				playBtn.setAttribute('aria-label', pauseTitle);
1481			} else {
1482
1483				(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
1484				(0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
1485				(0, _dom.addClass)(play, t.options.classPrefix + 'play');
1486				playBtn.setAttribute('title', playTitle);
1487				playBtn.setAttribute('aria-label', playTitle);
1488			}
1489		}
1490
1491		togglePlayPause('pse');
1492
1493		media.addEventListener('loadedmetadata', function () {
1494			if (media.rendererName.indexOf('flash') === -1) {
1495				togglePlayPause('pse');
1496			}
1497		});
1498		media.addEventListener('play', function () {
1499			togglePlayPause('play');
1500		});
1501		media.addEventListener('playing', function () {
1502			togglePlayPause('play');
1503		});
1504		media.addEventListener('pause', function () {
1505			togglePlayPause('pse');
1506		});
1507		media.addEventListener('ended', function () {
1508			if (!player.options.loop) {
1509				(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
1510				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
1511				(0, _dom.addClass)(play, t.options.classPrefix + 'replay');
1512				playBtn.setAttribute('title', playTitle);
1513				playBtn.setAttribute('aria-label', playTitle);
1514			}
1515		});
1516	}
1517});
1518
1519},{"16":16,"2":2,"26":26,"27":27,"5":5}],11:[function(_dereq_,module,exports){
1520'use strict';
1521
1522var _document = _dereq_(2);
1523
1524var _document2 = _interopRequireDefault(_document);
1525
1526var _player = _dereq_(16);
1527
1528var _player2 = _interopRequireDefault(_player);
1529
1530var _i18n = _dereq_(5);
1531
1532var _i18n2 = _interopRequireDefault(_i18n);
1533
1534var _constants = _dereq_(25);
1535
1536var _time = _dereq_(30);
1537
1538var _dom = _dereq_(26);
1539
1540function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1541
1542Object.assign(_player.config, {
1543	enableProgressTooltip: true,
1544
1545	useSmoothHover: true,
1546
1547	forceLive: false
1548});
1549
1550Object.assign(_player2.default.prototype, {
1551	buildprogress: function buildprogress(player, controls, layers, media) {
1552
1553		var lastKeyPressTime = 0,
1554		    mouseIsDown = false,
1555		    startedPaused = false;
1556
1557		var t = this,
1558		    autoRewindInitial = player.options.autoRewind,
1559		    tooltip = player.options.enableProgressTooltip ? '<span class="' + t.options.classPrefix + 'time-float">' + ('<span class="' + t.options.classPrefix + 'time-float-current">00:00</span>') + ('<span class="' + t.options.classPrefix + 'time-float-corner"></span>') + '</span>' : '',
1560		    rail = _document2.default.createElement('div');
1561
1562		rail.className = t.options.classPrefix + 'time-rail';
1563		rail.innerHTML = '<span class="' + t.options.classPrefix + 'time-total ' + t.options.classPrefix + 'time-slider">' + ('<span class="' + t.options.classPrefix + 'time-buffering"></span>') + ('<span class="' + t.options.classPrefix + 'time-loaded"></span>') + ('<span class="' + t.options.classPrefix + 'time-current"></span>') + ('<span class="' + t.options.classPrefix + 'time-hovered no-hover"></span>') + ('<span class="' + t.options.classPrefix + 'time-handle"><span class="' + t.options.classPrefix + 'time-handle-content"></span></span>') + ('' + tooltip) + '</span>';
1564
1565		t.addControlElement(rail, 'progress');
1566
1567		t.options.keyActions.push({
1568			keys: [37, 227],
1569			action: function action(player) {
1570				if (!isNaN(player.duration) && player.duration > 0) {
1571					if (player.isVideo) {
1572						player.showControls();
1573						player.startControlsTimer();
1574					}
1575
1576					player.container.querySelector('.' + _player.config.classPrefix + 'time-total').focus();
1577
1578					var newTime = Math.max(player.currentTime - player.options.defaultSeekBackwardInterval(player), 0);
1579					player.setCurrentTime(newTime);
1580				}
1581			}
1582		}, {
1583			keys: [39, 228],
1584			action: function action(player) {
1585
1586				if (!isNaN(player.duration) && player.duration > 0) {
1587					if (player.isVideo) {
1588						player.showControls();
1589						player.startControlsTimer();
1590					}
1591
1592					player.container.querySelector('.' + _player.config.classPrefix + 'time-total').focus();
1593
1594					var newTime = Math.min(player.currentTime + player.options.defaultSeekForwardInterval(player), player.duration);
1595					player.setCurrentTime(newTime);
1596				}
1597			}
1598		});
1599
1600		t.rail = controls.querySelector('.' + t.options.classPrefix + 'time-rail');
1601		t.total = controls.querySelector('.' + t.options.classPrefix + 'time-total');
1602		t.loaded = controls.querySelector('.' + t.options.classPrefix + 'time-loaded');
1603		t.current = controls.querySelector('.' + t.options.classPrefix + 'time-current');
1604		t.handle = controls.querySelector('.' + t.options.classPrefix + 'time-handle');
1605		t.timefloat = controls.querySelector('.' + t.options.classPrefix + 'time-float');
1606		t.timefloatcurrent = controls.querySelector('.' + t.options.classPrefix + 'time-float-current');
1607		t.slider = controls.querySelector('.' + t.options.classPrefix + 'time-slider');
1608		t.hovered = controls.querySelector('.' + t.options.classPrefix + 'time-hovered');
1609		t.buffer = controls.querySelector('.' + t.options.classPrefix + 'time-buffering');
1610		t.newTime = 0;
1611		t.forcedHandlePause = false;
vendor: 4,258 bytes, lines 1612-1730
1612		t.setTransformStyle = function (element, value) {
1613			element.style.transform = value;
1614			element.style.webkitTransform = value;
1615			element.style.MozTransform = value;
1616			element.style.msTransform = value;
1617			element.style.OTransform = value;
1618		};
1619
1620		t.buffer.style.display = 'none';
1621
1622		var handleMouseMove = function handleMouseMove(e) {
1623			var totalStyles = getComputedStyle(t.total),
1624			    offsetStyles = (0, _dom.offset)(t.total),
1625			    width = t.total.offsetWidth,
1626			    transform = function () {
1627				if (totalStyles.webkitTransform !== undefined) {
1628					return 'webkitTransform';
1629				} else if (totalStyles.mozTransform !== undefined) {
1630					return 'mozTransform ';
1631				} else if (totalStyles.oTransform !== undefined) {
1632					return 'oTransform';
1633				} else if (totalStyles.msTransform !== undefined) {
1634					return 'msTransform';
1635				} else {
1636					return 'transform';
1637				}
1638			}(),
1639			    cssMatrix = function () {
1640				if ('WebKitCSSMatrix' in window) {
1641					return 'WebKitCSSMatrix';
1642				} else if ('MSCSSMatrix' in window) {
1643					return 'MSCSSMatrix';
1644				} else if ('CSSMatrix' in window) {
1645					return 'CSSMatrix';
1646				}
1647			}();
1648
1649			var percentage = 0,
1650			    leftPos = 0,
1651			    pos = 0,
1652			    x = void 0;
1653
1654			if (e.originalEvent && e.originalEvent.changedTouches) {
1655				x = e.originalEvent.changedTouches[0].pageX;
1656			} else if (e.changedTouches) {
1657				x = e.changedTouches[0].pageX;
1658			} else {
1659				x = e.pageX;
1660			}
1661
1662			if (t.getDuration()) {
1663				if (x < offsetStyles.left) {
1664					x = offsetStyles.left;
1665				} else if (x > width + offsetStyles.left) {
1666					x = width + offsetStyles.left;
1667				}
1668
1669				pos = x - offsetStyles.left;
1670				percentage = pos / width;
1671				t.newTime = percentage <= 0.02 ? 0 : percentage * t.getDuration();
1672
1673				if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) {
1674					t.setCurrentRailHandle(t.newTime);
1675					t.updateCurrent(t.newTime);
1676				}
1677
1678				if (!_constants.IS_IOS && !_constants.IS_ANDROID) {
1679					if (pos < 0) {
1680						pos = 0;
1681					}
1682					if (t.options.useSmoothHover && cssMatrix !== null && typeof window[cssMatrix] !== 'undefined') {
1683						var matrix = new window[cssMatrix](getComputedStyle(t.handle)[transform]),
1684						    handleLocation = matrix.m41,
1685						    hoverScaleX = pos / parseFloat(getComputedStyle(t.total).width) - handleLocation / parseFloat(getComputedStyle(t.total).width);
1686
1687						t.hovered.style.left = handleLocation + 'px';
1688						t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')');
1689						t.hovered.setAttribute('pos', pos);
1690
1691						if (hoverScaleX >= 0) {
1692							(0, _dom.removeClass)(t.hovered, 'negative');
1693						} else {
1694							(0, _dom.addClass)(t.hovered, 'negative');
1695						}
1696					}
1697
1698					if (t.timefloat) {
1699						var half = t.timefloat.offsetWidth / 2,
1700						    offsetContainer = mejs.Utils.offset(t.container),
1701						    tooltipStyles = getComputedStyle(t.timefloat);
1702
1703						if (x - offsetContainer.left < t.timefloat.offsetWidth) {
1704							leftPos = half;
1705						} else if (x - offsetContainer.left >= t.container.offsetWidth - half) {
1706							leftPos = t.total.offsetWidth - half;
1707						} else {
1708							leftPos = pos;
1709						}
1710
1711						if ((0, _dom.hasClass)(t.container, t.options.classPrefix + 'long-video')) {
1712							leftPos += parseFloat(tooltipStyles.marginLeft) / 2 + t.timefloat.offsetWidth / 2;
1713						}
1714
1715						t.timefloat.style.left = leftPos + 'px';
1716						t.timefloatcurrent.innerHTML = (0, _time.secondsToTimeCode)(t.newTime, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength);
1717						t.timefloat.style.display = 'block';
1718					}
1719				}
1720			} else if (!_constants.IS_IOS && !_constants.IS_ANDROID && t.timefloat) {
1721				leftPos = t.timefloat.offsetWidth + width >= t.container.offsetWidth ? t.timefloat.offsetWidth / 2 : 0;
1722				t.timefloat.style.left = leftPos + 'px';
1723				t.timefloat.style.left = leftPos + 'px';
1724				t.timefloat.style.display = 'block';
1725			}
1726		},
1727		    updateSlider = function updateSlider() {
1728			var seconds = t.getCurrentTime(),
1729			    timeSliderText = _i18n2.default.t('mejs.time-slider'),
1730			    time = (0, _time.secondsToTimeCode)(seconds, player.options.alwaysShowHours, player.options.showTimeco
1730deFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength),
1731			    duration = t.getDuration();
1732
1733			t.slider.setAttribute('role', 'slider');
1734			t.slider.tabIndex = 0;
1735
1736			if (media.paused) {
1737				t.slider.setAttribute('aria-label', timeSliderText);
1738				t.slider.setAttribute('aria-valuemin', 0);
1739				t.slider.setAttribute('aria-valuemax', duration);
1740				t.slider.setAttribute('aria-valuenow', seconds);
1741				t.slider.setAttribute('aria-valuetext', time);
1742			} else {
1743				t.slider.removeAttribute('aria-label');
1744				t.slider.removeAttribute('aria-valuemin');
1745				t.slider.removeAttribute('aria-valuemax');
1746				t.slider.removeAttribute('aria-valuenow');
1747				t.slider.removeAttribute('aria-valuetext');
1748			}
1749		},
1750		    restartPlayer = function restartPlayer() {
1751			if (new Date() - lastKeyPressTime >= 1000) {
1752				t.play();
1753			}
1754		},
1755		    handleMouseup = function handleMouseup() {
1756			if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) {
1757				t.setCurrentTime(t.newTime);
1758				t.setCurrentRail();
1759				t.updateCurrent(t.newTime);
1760			}
1761			if (t.forcedHandlePause) {
1762				t.slider.focus();
1763				t.play();
1764			}
1765			t.forcedHandlePause = false;
1766		};
1767
1768		t.slider.addEventListener('focus', function () {
1769			player.options.autoRewind = false;
1770		});
1771		t.slider.addEventListener('blur', function () {
1772			player.options.autoRewind = autoRewindInitial;
1773		});
1774		t.slider.addEventListener('keydown', function (e) {
1775			if (new Date() - lastKeyPressTime >= 1000) {
1776				startedPaused = t.paused;
1777			}
1778
1779			if (t.options.keyActions.length) {
1780
1781				var keyCode = e.which || e.keyCode || 0,
1782				    duration = t.getDuration(),
1783				    seekForward = player.options.defaultSeekForwardInterval(media),
1784				    seekBackward = player.options.defaultSeekBackwardInterval(media);
1785
1786				var seekTime = t.getCurrentTime();
1787				var volume = t.container.querySelector('.' + t.options.classPrefix + 'volume-slider');
1788
1789				if (keyCode === 38 || keyCode === 40) {
1790					if (volume) {
1791						volume.style.display = 'block';
1792					}
1793					if (t.isVideo) {
1794						t.showControls();
1795						t.startControlsTimer();
1796					}
1797
1798					var newVolume = keyCode === 38 ? Math.min(t.volume + 0.1, 1) : Math.max(t.volume - 0.1, 0),
1799					    mutePlayer = newVolume <= 0;
1800					t.setVolume(newVolume);
1801					t.setMuted(mutePlayer);
1802					return;
1803				} else {
1804					if (volume) {
1805						volume.style.display = 'none';
1806					}
1807				}
1808
1809				switch (keyCode) {
1810					case 37:
1811						if (t.getDuration() !== Infinity) {
1812							seekTime -= seekBackward;
1813						}
1814						break;
1815					case 39:
1816						if (t.getDuration() !== Infinity) {
1817							seekTime += seekForward;
1818						}
1819						break;
1820					case 36:
1821						seekTime = 0;
1822						break;
1823					case 35:
1824						seekTime = duration;
1825						break;
1826					case 13:
1827					case 32:
1828						if (_constants.IS_FIREFOX) {
1829							if (t.paused) {
1830								t.play();
1831							} else {
1832								t.pause();
1833							}
1834						}
1835						return;
1836					default:
1837						return;
1838				}
1839
1840				seekTime = seekTime < 0 ? 0 : seekTime >= duration ? duration : Math.floor(seekTime);
1841				lastKeyPressTime = new Date();
1842				if (!startedPaused) {
1843					player.pause();
1844				}
1845
1846				if (seekTime < t.getDuration() && !startedPaused) {
1847					setTimeout(restartPlayer, 1100);
1848				}
1849
1850				t.setCurrentTime(seekTime);
1851				player.showControls();
1852
1853				e.preventDefault();
1854				e.stopPropagation();
1855			}
1856		});
1857
1858		var events = ['mousedown', 'touchstart'];
1859
1860		t.slider.addEventListener('dragstart', function () {
1861			return false;
1862		});
1863
1864		for (var i = 0, total = events.length; i < total; i++) {
1865			t.slider.addEventListener(events[i], function (e) {
1866				t.forcedHandlePause = false;
1867				if (t.getDuration() !== Infinity) {
1868					if (e.which === 1 || e.which === 0) {
1869						if (!t.paused) {
1870							t.pause();
1871							t.forcedHandlePause = true;
1872						}
1873
1874						mouseIsDown = true;
1875						handleMouseMove(e);
1876						var endEvents = ['mouseup', 'touchend'];
1877
1878						for (var j = 0, totalEvents = endEvents.length; j < totalEvents; j++) {
1879							t.container.addEventListener(endEvents[j], function (event) {
1880								var target = event.target;
1881								if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
1882									handleMouseMove(event);
1883								}
1884							});
1885						}
1886						t.globalBind('mouseup.dur touchend.dur', function () {
1887							handleMouseup();
1888							mouseIsDown = false;
vendor: 6,406 bytes, lines 1889-2089
1889							if (t.timefloat) {
1890								t.timefloat.style.display = 'none';
1891							}
1892						});
1893					}
1894				}
1895			}, _constants.SUPPORT_PASSIVE_EVENT && events[i] === 'touchstart' ? { passive: true } : false);
1896		}
1897		t.slider.addEventListener('mouseenter', function (e) {
1898			if (e.target === t.slider && t.getDuration() !== Infinity) {
1899				t.container.addEventListener('mousemove', function (event) {
1900					var target = event.target;
1901					if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
1902						handleMouseMove(event);
1903					}
1904				});
1905				if (t.timefloat && !_constants.IS_IOS && !_constants.IS_ANDROID) {
1906					t.timefloat.style.display = 'block';
1907				}
1908				if (t.hovered && !_constants.IS_IOS && !_constants.IS_ANDROID && t.options.useSmoothHover) {
1909					(0, _dom.removeClass)(t.hovered, 'no-hover');
1910				}
1911			}
1912		});
1913		t.slider.addEventListener('mouseleave', function () {
1914			if (t.getDuration() !== Infinity) {
1915				if (!mouseIsDown) {
1916					if (t.timefloat) {
1917						t.timefloat.style.display = 'none';
1918					}
1919					if (t.hovered && t.options.useSmoothHover) {
1920						(0, _dom.addClass)(t.hovered, 'no-hover');
1921					}
1922				}
1923			}
1924		});
1925
1926		t.broadcastCallback = function (e) {
1927			var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast');
1928			if (!t.options.forceLive && t.getDuration() !== Infinity) {
1929				if (broadcast) {
1930					t.slider.style.display = '';
1931					broadcast.remove();
1932				}
1933
1934				player.setProgressRail(e);
1935				if (!t.forcedHandlePause) {
1936					player.setCurrentRail(e);
1937				}
1938				updateSlider();
1939			} else if (!broadcast || t.options.forceLive) {
1940				var label = _document2.default.createElement('span');
1941				label.className = t.options.classPrefix + 'broadcast';
1942				label.innerText = _i18n2.default.t('mejs.live-broadcast');
1943				t.slider.style.display = 'none';
1944				t.rail.appendChild(label);
1945			}
1946		};
1947
1948		media.addEventListener('progress', t.broadcastCallback);
1949		media.addEventListener('timeupdate', t.broadcastCallback);
1950		media.addEventListener('play', function () {
1951			t.buffer.style.display = 'none';
1952		});
1953		media.addEventListener('playing', function () {
1954			t.buffer.style.display = 'none';
1955		});
1956		media.addEventListener('seeking', function () {
1957			t.buffer.style.display = '';
1958		});
1959		media.addEventListener('seeked', function () {
1960			t.buffer.style.display = 'none';
1961		});
1962		media.addEventListener('pause', function () {
1963			t.buffer.style.display = 'none';
1964		});
1965		media.addEventListener('waiting', function () {
1966			t.buffer.style.display = '';
1967		});
1968		media.addEventListener('loadeddata', function () {
1969			t.buffer.style.display = '';
1970		});
1971		media.addEventListener('canplay', function () {
1972			t.buffer.style.display = 'none';
1973		});
1974		media.addEventListener('error', function () {
1975			t.buffer.style.display = 'none';
1976		});
1977
1978		t.container.addEventListener('controlsresize', function (e) {
1979			if (t.getDuration() !== Infinity) {
1980				player.setProgressRail(e);
1981				if (!t.forcedHandlePause) {
1982					player.setCurrentRail(e);
1983				}
1984			}
1985		});
1986	},
1987	cleanprogress: function cleanprogress(player, controls, layers, media) {
1988		media.removeEventListener('progress', player.broadcastCallback);
1989		media.removeEventListener('timeupdate', player.broadcastCallback);
1990		if (player.rail) {
1991			player.rail.remove();
1992		}
1993	},
1994	setProgressRail: function setProgressRail(e) {
1995		var t = this,
1996		    target = e !== undefined ? e.detail.target || e.target : t.media;
1997
1998		var percent = null;
1999
2000		if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && t.getDuration()) {
2001			percent = target.buffered.end(target.buffered.length - 1) / t.getDuration();
2002		} else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) {
2003				percent = target.bufferedBytes / target.bytesTotal;
2004			} else if (e && e.lengthComputable && e.total !== 0) {
2005					percent = e.loaded / e.total;
2006				}
2007
2008		if (percent !== null) {
2009			percent = Math.min(1, Math.max(0, percent));
2010
2011			if (t.loaded) {
2012				t.setTransformStyle(t.loaded, 'scaleX(' + percent + ')');
2013			}
2014		}
2015	},
2016	setCurrentRailHandle: function setCurrentRailHandle(fakeTime) {
2017		var t = this;
2018		t.setCurrentRailMain(t, fakeTime);
2019	},
2020	setCurrentRail: function setCurrentRail() {
2021		var t = this;
2022		t.setCurrentRailMain(t);
2023	},
2024	setCurrentRailMain: function setCurrentRailMain(t, fakeTime) {
2025		if (t.getCurrentTime() !== undefined && t.getDuration()) {
2026			var nTime = typeof fakeTime === 'undefined' ? t.getCurrentTime() : fakeTime;
2027
2028			if (t.total && t.handle) {
2029				var tW = parseFloat(getComputedStyle(t.total).width);
2030
2031				var newWidth = Math.round(tW * nTime / t.getDuration()),
2032				    handlePos = newWidth - Math.round(t.handle.offsetWidth / 2);
2033
2034				handlePos = handlePos < 0 ? 0 : handlePos;
2035				t.setTransformStyle(t.current, 'scaleX(' + newWidth / tW + ')');
2036				t.setTransformStyle(t.handle, 'translateX(' + handlePos + 'px)');
2037
2038				if (t.options.useSmoothHover && !(0, _dom.hasClass)(t.hovered, 'no-hover')) {
2039					var pos = parseInt(t.hovered.getAttribute('pos'));
2040					pos = isNaN(pos) ? 0 : pos;
2041
2042					var hoverScaleX = pos / tW - handlePos / tW;
2043
2044					t.hovered.style.left = handlePos + 'px';
2045					t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')');
2046
2047					if (hoverScaleX >= 0) {
2048						(0, _dom.removeClass)(t.hovered, 'negative');
2049					} else {
2050						(0, _dom.addClass)(t.hovered, 'negative');
2051					}
2052				}
2053			}
2054		}
2055	}
2056});
2057
2058},{"16":16,"2":2,"25":25,"26":26,"30":30,"5":5}],12:[function(_dereq_,module,exports){
2059'use strict';
2060
2061var _document = _dereq_(2);
2062
2063var _document2 = _interopRequireDefault(_document);
2064
2065var _player = _dereq_(16);
2066
2067var _player2 = _interopRequireDefault(_player);
2068
2069var _time = _dereq_(30);
2070
2071var _dom = _dereq_(26);
2072
2073function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2074
2075Object.assign(_player.config, {
2076	duration: 0,
2077
2078	timeAndDurationSeparator: '<span> | </span>'
2079});
2080
2081Object.assign(_player2.default.prototype, {
2082	buildcurrent: function buildcurrent(player, controls, layers, media) {
2083		var t = this,
2084		    time = _document2.default.createElement('div');
2085
2086		time.className = t.options.classPrefix + 'time';
2087		time.setAttribute('role', 'timer');
2088		time.setAttribute('aria-live', 'off');
2089		time.innerHTML = '<span class="' + t.options.classPrefix + 'currenttime">' + (0, _time.secondsToTimeCode)(0, player.options.alwaysShowHours, player.options.showTimeco
2089deFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength) + '</span>';
2090
2091		t.addControlElement(time, 'current');
2092		player.updateCurrent();
2093		t.updateTimeCallback = function () {
2094			if (t.controlsAreVisible) {
2095				player.updateCurrent();
2096			}
2097		};
2098		media.addEventListener('timeupdate', t.updateTimeCallback);
2099	},
2100	cleancurrent: function cleancurrent(player, controls, layers, media) {
2101		media.removeEventListener('timeupdate', player.updateTimeCallback);
2102	},
2103	buildduration: function buildduration(player, controls, layers, media) {
2104		var t = this,
2105		    currTime = controls.lastChild.querySelector('.' + t.options.classPrefix + 'currenttime');
2106
2107		if (currTime) {
2108			controls.querySelector('.' + t.options.classPrefix + 'time').innerHTML += t.options.timeAndDurationSeparator + '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength) + '</span>');
2109		} else {
2110			if (controls.querySelector('.' + t.options.classPrefix + 'currenttime')) {
2111				(0, _dom.addClass)(controls.querySelector('.' + t.options.classPrefix + 'currenttime').parentNode, t.options.classPrefix + 'currenttime-container');
2112			}
2113
2114			var duration = _document2.default.createElement('div');
2115			duration.className = t.options.classPrefix + 'time ' + t.options.classPrefix + 'duration-container';
2116			duration.innerHTML = '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength) + '</span>');
2117
2118			t.addControlElement(duration, 'duration');
2119		}
2120
2121		t.updateDurationCallback = function () {
2122			if (t.controlsAreVisible) {
2123				player.updateDuration();
2124			}
2125		};
2126
2127		media.addEventListener('timeupdate', t.updateDurationCallback);
2128	},
2129	cleanduration: function cleanduration(player, controls, layers, media) {
2130		media.removeEventListener('timeupdate', player.updateDurationCallback);
2131	},
2132	updateCurrent: function updateCurrent() {
2133		var t = this;
2134
2135		var currentTime = t.getCurrentTime();
2136
2137		if (isNaN(currentTime)) {
2138			currentTime = 0;
2139		}
2140
2141		var timecode = (0, _time.secondsToTimeCode)(currentTime, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength);
2142
2143		if (timecode.length > 5) {
2144			(0, _dom.addClass)(t.container, t.options.classPrefix + 'long-video');
2145		} else {
2146			(0, _dom.removeClass)(t.container, t.options.classPrefix + 'long-video');
2147		}
2148
2149		if (t.controls.querySelector('.' + t.options.classPrefix + 'currenttime')) {
2150			t.controls.querySelector('.' + t.options.classPrefix + 'currenttime').innerText = timecode;
2151		}
2152	},
2153	updateDuration: function updateDuration() {
2154		var t = this;
2155
2156		var duration = t.getDuration();
2157
2158		if (isNaN(duration) || duration === Infinity || duration < 0) {
2159			t.media.duration = t.options.duration = duration = 0;
2160		}
2161
2162		if (t.options.duration > 0) {
2163			duration = t.options.duration;
2164		}
2165
2166		var timecode = (0, _time.secondsToTimeCode)(duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength);
2167
2168		if (timecode.length > 5) {
2169			(0, _dom.addClass)(t.container, t.options.classPrefix + 'long-video');
2170		} else {
2171			(0, _dom.removeClass)(t.container, t.options.classPrefix + 'long-video');
2172		}
2173
2174		if (t.controls.querySelector('.' + t.options.classPrefix + 'duration') && duration > 0) {
2175			t.controls.querySelector('.' + t.options.classPrefix + 'duration').innerHTML = timecode;
2176		}
2177	}
2178});
2179
2180},{"16":16,"2":2,"26":26,"30":30}],13:[function(_dereq_,module,exports){
2181'use strict';
2182
2183var _document = _dereq_(2);
2184
2185var _document2 = _interopRequireDefault(_document);
2186
2187var _mejs = _dereq_(7);
2188
2189var _mejs2 = _interopRequireDefault(_mejs);
2190
2191var _i18n = _dereq_(5);
2192
2193var _i18n2 = _interopRequireDefault(_i18n);
2194
2195var _player = _dereq_(16);
2196
2197var _player2 = _interopRequireDefault(_player);
2198
2199var _time = _dereq_(30);
2200
2201var _general = _dereq_(27);
2202
2203var _dom = _dereq_(26);
2204
2205function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2206
2207Object.assign(_player.config, {
2208	startLanguage: '',
2209
2210	tracksText: null,
2211
2212	chaptersText: null,
2213
2214	tracksAriaLive: false,
2215
2216	hideCaptionsButtonWhenEmpty: true,
2217
2218	toggleCaptionsButtonWhenOnlyOne: false,
2219
2220	slidesSelector: ''
2221});
2222
2223Object.assign(_player2.default.prototype, {
2224	hasChapters: false,
2225
2226	buildtracks: function buildtracks(player, controls, layers, media) {
2227
2228		this.findTracks();
2229
2230		if (!player.tracks.length && (!player.trackFiles || !player.trackFiles.length === 0)) {
2231			return;
2232		}
2233
2234		var t = this,
2235		    attr = t.options.tracksAriaLive ? ' role="log" aria-live="assertive" aria-atomic="false"' : '',
2236		    tracksTitle = (0, _general.isString)(t.options.tracksText) ? t.options.tracksText : _i18n2.default.t('mejs.captions-subtitles'),
2237		    chaptersTitle = (0, _general.isString)(t.options.chaptersText) ? t.options.chaptersText : _i18n2.default.t('mejs.captions-chapters'),
2238		    total = player.trackFiles === null ? player.tracks.length : player.trackFiles.length;
2239
2240		if (t.domNode.textTracks) {
2241			for (var i = t.domNode.textTracks.length - 1; i >= 0; i--) {
2242				t.domNode.textTracks[i].mode = 'hidden';
2243			}
2244		}
2245
2246		t.cleartracks(player);
2247
2248		player.captions = _document2.default.createElement('div');
2249		player.captions.className = t.options.classPrefix + 'captions-layer ' + t.options.classPrefix + 'layer';
2250		player.captions.innerHTML = '<div class="' + t.options.classPrefix + 'captions-position ' + t.options.classPrefix + 'captions-position-hover"' + attr + '>' + ('<span class="' + t.options.classPrefix + 'captions-text"></span>') + '</div>';
2251		player.captions.style.display = 'none';
2252		layers.insertBefore(player.captions, layers.firstChild);
2253
2254		player.captionsText = player.captions.querySelector('.' + t.options.classPrefix + 'captions-text');
2255
2256		player.captionsButton = _document2.default.createElement('div');
2257		player.captionsButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'captions-button';
2258		player.captionsButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + tracksTitle + '" aria-label="' + tracksTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'captions-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'captions-selector-list">') + ('<li class="' + t.options.classPrefix + 'captions-selector-list-item">') + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + player.id + '_captions" id="' + player.id + '_captions_none" ') + 'value="none" checked disabled>' + ('<label class="' + t.options.classPrefix + 'captions-selector-label ') + (t.options.classPrefix + 'captions-selected" ') + ('for="' + player.id + '_captions_none">' + _i18n2.default.t('mejs.none') + '</label>') + '</li>' + '</ul>' + '</div>';
2259
2260		t.addControlElement(player.captionsButton, 'tracks');
2261
2262		player.captionsButton.querySelector('.' + t.options.classPrefix + 'captions-selector-input').disabled = false;
2263
2264		player.chaptersButton = _document2.default.createElement('div');
2265		player.chaptersButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'chapters-button';
2266		player.chaptersButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + chaptersTitle + '" aria-label="' + chaptersTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'chapters-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'chapters-selector-list"></ul>') + '</div>';
2267
2268		var subtitleCount = 0;
2269
2270		for (var _i = 0; _i < total; _i++) {
2271			var kind = player.tracks[_i].kind,
2272			    src = player.tracks[_i].src;
2273			if (src.trim()) {
2274				if (kind === 'subtitles' || kind === 'captions') {
2275					subtitleCount++;
2276				} else if (kind === 'chapters' && !controls.querySelector('.' + t.options.classPrefix + 'chapter-selector')) {
2277					player.captionsButton.parentNode.insertBefore(player.chaptersButton, player.captionsButton);
2278				}
2279			}
2280		}
2281
2282		player.trackToLoad = -1;
2283		player.selectedTrack = null;
2284		player.isLoadingTrack = false;
2285
2286		for (var _i2 = 0; _i2 < total; _i2++) {
2287			var _kind = player.tracks[_i2].kind;
2288			if (player.tracks[_i2].src.trim() && (_kind === 'subtitles' || _kind === 'captions')) {
2289				player.addTrackButton(player.tracks[_i2].trackId, player.tracks[_i2].srclang, player.tracks[_i2].label);
2290			}
2291		}
2292
2293		player.loadNextTrack();
2294
2295		var inEvents = ['mouseenter', 'focusin'],
2296		    outEvents = ['mouseleave', 'focusout'];
2297
2298		if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1) {
2299			player.captionsButton.addEventListener('click', function (e) {
2300				var trackId = 'none';
2301				if (player.selectedTrack === null) {
2302					trackId = player.tracks[0].trackId;
2303				}
2304				var keyboard = e.keyCode || e.which;
2305				player.setTrack(trackId, typeof keyboard !== 'undefined');
2306			});
2307		} else {
2308			var labels = player.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selector-label'),
2309			    captions = player.captionsButton.querySelectorAll('input[type=radio]');
2310
2311			for (var _i3 = 0, _total = inEvents.length; _i3 < _total; _i3++) {
2312				player.captionsButton.addEventListener(inEvents[_i3], function () {
2313					(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
2314				});
2315			}
2316
2317			for (var _i4 = 0, _total2 = outEvents.length; _i4 < _total2; _i4++) {
2318				player.captionsButton.addEventListener(outEvents[_i4], function () {
2319					(0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
2320				});
2321			}
2322
2323			for (var _i5 = 0, _total3 = captions.length; _i5 < _total3; _i5++) {
2324				captions[_i5].addEventListener('click', function (e) {
2325					var keyboard = e.keyCode || e.which;
2326					player.setTrack(this.value, typeof keyboard !== 'undefined');
2327				});
2328			}
2329
2330			for (var _i6 = 0, _total4 = labels.length; _i6 < _total4; _i6++) {
2331				labels[_i6].addEventListener('click', function (e) {
2332					var radio = (0, _dom.siblings)(this, function (el) {
2333						return el.tagName === 'INPUT';
2334					})[0],
2335					    event = (0, _general.createEvent)('click', radio);
2336					radio.dispatchEvent(event);
2337					e.preventDefault();
2338				});
2339			}
2340
2341			player.captionsButton.addEventListener('keydown', function (e) {
2342				e.stopPropagation();
2343			});
2344		}
2345
2346		for (var _i7 = 0, _total5 = inEvents.length; _i7 < _total5; _i7++) {
2347			player.chaptersButton.addEventListener(inEvents[_i7], function () {
2348				if (this.querySelector('.' + t.options.classPrefix + 'chapters-selector-list').children.length) {
2349					(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
2350				}
2351			});
2352		}
2353
2354		for (var _i8 = 0, _total6 = outEvents.length; _i8 < _total6; _i8++) {
2355			player.chaptersButton.addEventListener(outEvents[_i8], function () {
2356				(0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
2357			});
2358		}
2359
2360		player.chaptersButton.addEventListener('keydown', function (e) {
2361			e.stopPropagation();
2362		});
2363
2364		if (!player.options.alwaysShowControls) {
2365			player.container.addEventListener('controlsshown', function () {
2366				(0, _dom.addClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2367			});
2368
2369			player.container.addEventListener('controlshidden', function () {
2370				if (!media.paused) {
2371					(0, _dom.removeClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2372				}
2373			});
2374		} else {
2375			(0, _dom.addClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2376		}
2377
2378		media.addEventListener('timeupdate', function () {
2379			player.displayCaptions();
2380		});
2381
2382		if (player.options.slidesSelector !== '') {
2383			player.slidesContainer = _document2.default.querySelectorAll(player.options.slidesSelector);
2384
2385			media.addEventListener('timeupdate', function () {
2386				player.displaySlides();
2387			});
2388		}
2389	},
2390	cleartracks: function cleartracks(player) {
2391		if (player) {
2392			if (player.captions) {
2393				player.captions.remove();
2394			}
2395			if (player.chapters) {
2396				player.chapters.remove();
2397			}
2398			if (player.captionsText) {
2399				player.captionsText.remove();
2400			}
2401			if (player.captionsButton) {
2402				player.captionsButton.remove();
2403			}
2404			if (player.chaptersButton) {
2405				player.chaptersButton.remove();
2406			}
2407		}
2408	},
2409	rebuildtracks: function rebuildtracks() {
2410		var t = this;
2411		t.findTracks();
2412		t.buildtracks(t, t.controls, t.layers, t.media);
2413	},
2414	findTracks: function findTracks() {
2415		var t = this,
2416		    tracktags = t.trackFiles === null ? t.node.querySelectorAll('track') : t.trackFiles,
2417		    total = tracktags.length;
2418
2419		t.tracks = [];
2420		for (var i = 0; i < total; i++) {
2421			var track = tracktags[i],
2422			    srclang = track.getAttribute('srclang').toLowerCase() || '',
2423			    trackId = t.id + '_track_' + i + '_' + track.getAttribute('kind') + '_' + srclang;
2424			t.tracks.push({
2425				trackId: trackId,
2426				srclang: srclang,
2427				src: track.getAttribute('src'),
2428				kind: track.getAttribute('kind'),
2429				label: track.getAttribute('label') || '',
2430				entries: [],
2431				isLoaded: false
2432			});
2433		}
2434	},
2435	setTrack: function setTrack(trackId, setByKeyboard) {
2436
2437		var t = this,
2438		    radios = t.captionsButton.querySelectorAll('input[type="radio"]'),
2439		    captions = t.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selected'),
2440		    track = t.captionsButton.querySelector('input[value="' + trackId + '"]');
2441
2442		for (var i = 0, total = radios.length; i < total; i++) {
2443			radios[i].checked = false;
2444		}
2445
2446		for (var _i9 = 0, _total7 = captions.length; _i9 < _total7; _i9++) {
2447			(0, _dom.removeClass)(captions[_i9], t.options.classPrefix + 'captions-selected');
2448		}
2449
2450		track.checked = true;
2451		var labels = (0, _dom.siblings)(track, function (el) {
2452			return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
2453		});
2454		for (var _i10 = 0, _total8 = labels.length; _i10 < _total8; _i10++) {
2455			(0, _dom.addClass)(labels[_i10], t.options.classPrefix + 'captions-selected');
2456		}
2457
2458		if (trackId === 'none') {
2459			t.selectedTrack = null;
2460			(0, _dom.removeClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
2461		} else {
2462			for (var _i11 = 0, _total9 = t.tracks.length; _i11 < _total9; _i11++) {
2463				var _track = t.tracks[_i11];
2464				if (_track.trackId === trackId) {
2465					if (t.selectedTrack === null) {
2466						(0, _dom.addClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
2467					}
2468					t.selectedTrack = _track;
2469					t.captions.setAttribute('lang', t.selectedTrack.srclang);
2470					t.displayCaptions();
2471					break;
2472				}
2473			}
2474		}
2475
2476		var event = (0, _general.createEvent)('captionschange', t.media);
2477		event.detail.caption = t.selectedTrack;
2478		t.media.dispatchEvent(event);
2479
2480		if (!setByKeyboard) {
2481			setTimeout(function () {
2482				t.container.focus();
2483			}, 500);
2484		}
2485	},
2486	loadNextTrack: function loadNextTrack() {
2487		var t = this;
2488
2489		t.trackToLoad++;
2490		if (t.trackToLoad < t.tracks.length) {
2491			t.isLoadingTrack = true;
2492			t.loadTrack(t.trackToLoad);
2493		} else {
2494			t.isLoadingTrack = false;
2495			t.checkForTracks();
2496		}
2497	},
2498	loadTrack: function loadTrack(index) {
2499		var t = this,
2500		    track = t.tracks[index];
2501
2502		if (track !== undefined && (track.src !== undefined || track.src !== "")) {
2503			(0, _dom.ajax)(track.src, 'text', function (d) {
2504				track.entries = typeof d === 'string' && /<tt\s+xml/ig.exec(d) ? _mejs2.default.TrackFormatParser.dfxp.parse(d) : _mejs2.default.TrackFormatParser.webvtt.parse(d);
2505
2506				track.isLoaded = true;
2507				t.enableTrackButton(track);
2508				t.loadNextTrack();
2509
2510				if (track.kind === 'slides') {
2511					t.setupSlides(track);
2512				} else if (track.kind === 'chapters' && !t.hasChapters) {
2513						t.drawChapters(track);
2514						t.hasChapters = true;
2515					}
2516			}, function () {
2517				t.removeTrackButton(track.trackId);
2518				t.loadNextTrack();
2519			});
2520		}
2521	},
2522	enableTrackButton: function enableTrackButton(track) {
2523		var t = this,
2524		    lang = track.srclang,
2525		    target = _document2.default.getElementById('' + track.trackId);
2526
2527		if (!target) {
2528			return;
2529		}
2530
2531		var label = track.label;
2532
2533		if (label === '') {
2534			label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
2535		}
2536		target.disabled = false;
2537		var targetSiblings = (0, _dom.siblings)(target, function (el) {
2538			return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
2539		});
2540		for (var i = 0, total = targetSiblings.length; i < total; i++) {
2541			targetSiblings[i].innerHTML = label;
2542		}
2543
2544		if (t.options.startLanguage === lang) {
2545			target.checked = true;
2546			var event = (0, _general.createEvent)('click', target);
2547			target.dispatchEvent(event);
2548		}
2549	},
2550	removeTrackButton: function removeTrackButton(trackId) {
2551		var element = _document2.default.getElementById('' + trackId);
2552		if (element) {
2553			var button = element.closest('li');
2554			if (button) {
2555				button.remove();
2556			}
2557		}
2558	},
2559	addTrackButton: function addTrackButton(trackId, lang, label) {
2560		var t = this;
2561		if (label === '') {
2562			label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
2563		}
2564
2565		t.captionsButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'captions-selector-list-item">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_captions" id="' + trackId + '" value="' + trackId + '" disabled>') + ('<label class="' + t.options.classPrefix + 'captions-selector-label"') + ('for="' + trackId + '">' + label + ' (loading)</label>') + '</li>';
2566	},
2567	checkForTracks: function checkForTracks() {
2568		var t = this;
2569
2570		var hasSubtitles = false;
2571
2572		if (t.options.hideCaptionsButtonWhenEmpty) {
2573			for (var i = 0, total = t.tracks.length; i < total; i++) {
2574				var kind = t.tracks[i].kind;
2575				if ((kind === 'subtitles' || kind === 'captions') && t.tracks[i].isLoaded) {
2576					hasSubtitles = true;
2577					break;
2578				}
2579			}
2580
2581			t.captionsButton.style.display = hasSubtitles ? '' : 'none';
2582			t.setControlsSize();
2583		}
2584	},
2585	displayCaptions: function displayCaptions() {
2586		if (this.tracks === undefined) {
2587			return;
2588		}
2589
2590		var t = this,
2591		    track = t.selectedTrack,
2592		    sanitize = function sanitize(html) {
2593			var div = _document2.default.createElement('div');
2594			div.innerHTML = html;
2595
2596			var scripts = div.getElementsByTagName('script');
2597			var i = scripts.length;
2598			while (i--) {
2599				scripts[i].remove();
2600			}
2601
2602			var allElements = div.getElementsByTagName('*');
2603			for (var _i12 = 0, n = allElements.length; _i12 < n; _i12++) {
2604				var attributesObj = allElements[_i12].attributes,
2605				    attributes = Array.prototype.slice.call(attributesObj);
2606
2607				for (var j = 0, total = attributes.length; j < total; j++) {
2608					if (attributes[j].name.startsWith('on') || attributes[j].value.startsWith('javascript')) {
2609						allElements[_i12].remove();
2610					} else if (attributes[j].name === 'style') {
2611						allElements[_i12].removeAttribute(attributes[j].name);
2612					}
2613				}
2614			}
2615			return div.innerHTML;
2616		};
2617
2618		if (track !== null && track.isLoaded) {
2619			var i = t.searchTrackPosition(track.entries, t.media.currentTime);
2620			if (i > -1) {
2621				t.captionsText.innerHTML = sanitize(track.entries[i].text);
2622				t.captionsText.className = t.options.classPrefix + 'captions-text ' + (track.entries[i].identifier || '');
2623				t.captions.style.display = '';
2624				t.captions.style.height = '0px';
2625				return;
2626			}
2627			t.captions.style.display = 'none';
2628		} else {
2629			t.captions.style.display = 'none';
2630		}
2631	},
2632	setupSlides: function setupSlides(track) {
2633		var t = this;
2634		t.slides = track;
2635		t.slides.entries.imgs = [t.slides.entries.length];
2636		t.showSlide(0);
2637	},
2638	showSlide: function showSlide(index) {
2639		var _this = this;
2640
2641		var t = this;
2642
2643		if (t.tracks === undefined || t.slidesContainer === undefined) {
2644			return;
2645		}
2646
2647		var url = t.slides.entries[index].text;
2648
2649		var img = t.slides.entries[index].imgs;
2650
2651		if (img === undefined || img.fadeIn === undefined) {
2652			var image = _document2.default.createElement('img');
2653			image.src = url;
2654			image.addEventListener('load', function () {
2655				var self = _this,
2656				    visible = (0, _dom.siblings)(self, function (el) {
2657					return visible(el);
2658				});
2659				self.style.display = 'none';
2660				t.slidesContainer.innerHTML += self.innerHTML;
2661				(0, _dom.fadeIn)(t.slidesContainer.querySelector(image));
2662				for (var i = 0, total = visible.length; i < total; i++) {
2663					(0, _dom.fadeOut)(visible[i], 400);
2664				}
2665			});
2666			t.slides.entries[index].imgs = img = image;
2667		} else if (!(0, _dom.visible)(img)) {
2668			var _visible = (0, _dom.siblings)(self, function (el) {
2669				return _visible(el);
2670			});
2671			(0, _dom.fadeIn)(t.slidesContainer.querySelector(img));
2672			for (var i = 0, total = _visible.length; i < total; i++) {
2673				(0, _dom.fadeOut)(_visible[i]);
2674			}
2675		}
2676	},
2677	displaySlides: function displaySlides() {
2678		var t = this;
2679
2680		if (this.slides === undefined) {
2681			return;
2682		}
2683
2684		var slides = t.slides,
2685		    i = t.searchTrackPosition(slides.entries, t.media.currentTime);
2686
2687		if (i > -1) {
2688			t.showSlide(i);
2689		}
2690	},
2691	drawChapters: function drawChapters(chapters) {
2692		var t = this,
vendor: 4,190 bytes, lines 2693-2829
2693		    total = chapters.entries.length;
2694
2695		if (!total) {
2696			return;
2697		}
2698
2699		t.chaptersButton.querySelector('ul').innerHTML = '';
2700
2701		for (var i = 0; i < total; i++) {
2702			t.chaptersButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'chapters-selector-list-item" ' + 'role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_chapters" id="' + t.id + '_chapters_' + i + '" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label"') + ('for="' + t.id + '_chapters_' + i + '">' + chapters.entries[i].text + '</label>') + '</li>';
2703		}
2704
2705		var radios = t.chaptersButton.querySelectorAll('input[type="radio"]'),
2706		    labels = t.chaptersButton.querySelectorAll('.' + t.options.classPrefix + 'chapters-selector-label');
2707
2708		for (var _i13 = 0, _total10 = radios.length; _i13 < _total10; _i13++) {
2709			radios[_i13].disabled = false;
2710			radios[_i13].checked = false;
2711			radios[_i13].addEventListener('click', function (e) {
2712				var self = this,
2713				    listItems = t.chaptersButton.querySelectorAll('li'),
2714				    label = (0, _dom.siblings)(self, function (el) {
2715					return (0, _dom.hasClass)(el, t.options.classPrefix + 'chapters-selector-label');
2716				})[0];
2717
2718				self.checked = true;
2719				self.parentNode.setAttribute('aria-checked', true);
2720				(0, _dom.addClass)(label, t.options.classPrefix + 'chapters-selected');
2721				(0, _dom.removeClass)(t.chaptersButton.querySelector('.' + t.options.classPrefix + 'chapters-selected'), t.options.classPrefix + 'chapters-selected');
2722
2723				for (var _i14 = 0, _total11 = listItems.length; _i14 < _total11; _i14++) {
2724					listItems[_i14].setAttribute('aria-checked', false);
2725				}
2726
2727				var keyboard = e.keyCode || e.which;
2728				if (typeof keyboard === 'undefined') {
2729					setTimeout(function () {
2730						t.container.focus();
2731					}, 500);
2732				}
2733
2734				t.media.setCurrentTime(parseFloat(self.value));
2735				if (t.media.paused) {
2736					t.media.play();
2737				}
2738			});
2739		}
2740
2741		for (var _i15 = 0, _total12 = labels.length; _i15 < _total12; _i15++) {
2742			labels[_i15].addEventListener('click', function (e) {
2743				var radio = (0, _dom.siblings)(this, function (el) {
2744					return el.tagName === 'INPUT';
2745				})[0],
2746				    event = (0, _general.createEvent)('click', radio);
2747				radio.dispatchEvent(event);
2748				e.preventDefault();
2749			});
2750		}
2751	},
2752	searchTrackPosition: function searchTrackPosition(tracks, currentTime) {
2753		var lo = 0,
2754		    hi = tracks.length - 1,
2755		    mid = void 0,
2756		    start = void 0,
2757		    stop = void 0;
2758
2759		while (lo <= hi) {
2760			mid = lo + hi >> 1;
2761			start = tracks[mid].start;
2762			stop = tracks[mid].stop;
2763
2764			if (currentTime >= start && currentTime < stop) {
2765				return mid;
2766			} else if (start < currentTime) {
2767				lo = mid + 1;
2768			} else if (start > currentTime) {
2769				hi = mid - 1;
2770			}
2771		}
2772
2773		return -1;
2774	}
2775});
2776
2777_mejs2.default.language = {
2778	codes: {
2779		af: 'mejs.afrikaans',
2780		sq: 'mejs.albanian',
2781		ar: 'mejs.arabic',
2782		be: 'mejs.belarusian',
2783		bg: 'mejs.bulgarian',
2784		ca: 'mejs.catalan',
2785		zh: 'mejs.chinese',
2786		'zh-cn': 'mejs.chinese-simplified',
2787		'zh-tw': 'mejs.chines-traditional',
2788		hr: 'mejs.croatian',
2789		cs: 'mejs.czech',
2790		da: 'mejs.danish',
2791		nl: 'mejs.dutch',
2792		en: 'mejs.english',
2793		et: 'mejs.estonian',
2794		fl: 'mejs.filipino',
2795		fi: 'mejs.finnish',
2796		fr: 'mejs.french',
2797		gl: 'mejs.galician',
2798		de: 'mejs.german',
2799		el: 'mejs.greek',
2800		ht: 'mejs.haitian-creole',
2801		iw: 'mejs.hebrew',
2802		hi: 'mejs.hindi',
2803		hu: 'mejs.hungarian',
2804		is: 'mejs.icelandic',
2805		id: 'mejs.indonesian',
2806		ga: 'mejs.irish',
2807		it: 'mejs.italian',
2808		ja: 'mejs.japanese',
2809		ko: 'mejs.korean',
2810		lv: 'mejs.latvian',
2811		lt: 'mejs.lithuanian',
2812		mk: 'mejs.macedonian',
2813		ms: 'mejs.malay',
2814		mt: 'mejs.maltese',
2815		no: 'mejs.norwegian',
2816		fa: 'mejs.persian',
2817		pl: 'mejs.polish',
2818		pt: 'mejs.portuguese',
2819		ro: 'mejs.romanian',
2820		ru: 'mejs.russian',
2821		sr: 'mejs.serbian',
2822		sk: 'mejs.slovak',
2823		sl: 'mejs.slovenian',
2824		es: 'mejs.spanish',
2825		sw: 'mejs.swahili',
2826		sv: 'mejs.swedish',
2827		tl: 'mejs.tagalog',
2828		th: 'mejs.thai',
2829		tr: 'mejs.turkish',
2830		uk: 'mejs.ukrainian',
2831		vi: 'mejs.vietnamese',
2832		cy: 'mejs.welsh',
2833		yi: 'mejs.yiddish'
2834	}
2835};
2836
2837_mejs2.default.TrackFormatParser = {
2838	webvtt: {
2839		pattern: /^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,
2840
2841		parse: function parse(trackText) {
2842			var lines = trackText.split(/\r?\n/),
2843			    entries = [];
2844
2845			var timecode = void 0,
2846			    text = void 0,
2847			    identifier = void 0;
2848
2849			for (var i = 0, total = lines.length; i < total; i++) {
2850				timecode = this.pattern.exec(lines[i]);
2851
2852				if (timecode && i < lines.length) {
2853					if (i - 1 >= 0 && lines[i - 1] !== '') {
2854						identifier = lines[i - 1];
2855					}
2856					i++;
2857
2858					text = lines[i];
2859					i++;
2860					while (lines[i] !== '' && i < lines.length) {
2861						text = text + '\n' + lines[i];
2862						i++;
2863					}
2864					text = text.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
2865					entries.push({
2866						identifier: identifier,
2867						start: (0, _time.convertSMPTEtoSeconds)(timecode[1]) === 0 ? 0.200 : (0, _time.convertSMPTEtoSeconds)(timecode[1]),
2868						stop: (0, _time.convertSMPTEtoSeconds)(timecode[3]),
2869						text: text,
2870						settings: timecode[5]
2871					});
2872				}
2873				identifier = '';
2874			}
2875			return entries;
2876		}
2877	},
2878
2879	dfxp: {
2880		parse: function parse(trackText) {
2881			trackText = $(trackText).filter('tt');
2882			var container = trackText.firstChild,
2883			    lines = container.querySelectorAll('p'),
2884			    styleNode = trackText.getElementById('' + container.attr('style')),
2885			    entries = [];
2886
2887			var styles = void 0;
2888
2889			if (styleNode.length) {
2890				styleNode.removeAttribute('id');
2891				var attributes = styleNode.attributes;
2892				if (attributes.length) {
2893					styles = {};
2894					for (var i = 0, total = attributes.length; i < total; i++) {
2895						styles[attributes[i].name.split(":")[1]] = attributes[i].value;
2896					}
2897				}
2898			}
2899
2900			for (var _i16 = 0, _total13 = lines.length; _i16 < _total13; _i16++) {
2901				var style = void 0,
2902				    _temp = {
2903					start: null,
2904					stop: null,
2905					style: null,
2906					text: null
2907				};
2908
2909				if (lines.eq(_i16).attr('begin')) {
2910					_temp.start = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16).attr('begin'));
2911				}
2912				if (!_temp.start && lines.eq(_i16 - 1).attr('end')) {
2913					_temp.start = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16 - 1).attr('end'));
2914				}
2915				if (lines.eq(_i16).attr('end')) {
2916					_temp.stop = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16).attr('end'));
2917				}
2918				if (!_temp.stop && lines.eq(_i16 + 1).attr('begin')) {
2919					_temp.stop = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16 + 1).attr('begin'));
2920				}
2921
2922				if (styles) {
2923					style = '';
2924					for (var _style in styles) {
2925						style += _style + ':' + styles[_style] + ';';
2926					}
2927				}
2928				if (style) {
2929					_temp.style = style;
2930				}
2931				if (_temp.start === 0) {
2932					_temp.start = 0.200;
2933				}
2934				_temp.text = lines.eq(_i16).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
2935				entries.push(_temp);
2936			}
2937			return entries;
2938		}
2939	}
2940};
2941
2942},{"16":16,"2":2,"26":26,"27":27,"30":30,"5":5,"7":7}],14:[function(_dereq_,module,exports){
2943'use strict';
2944
2945var _document = _dereq_(2);
2946
2947var _document2 = _interopRequireDefault(_document);
2948
2949var _player = _dereq_(16);
2950
2951var _player2 = _interopRequireDefault(_player);
2952
2953var _i18n = _dereq_(5);
2954
2955var _i18n2 = _interopRequireDefault(_i18n);
2956
2957var _constants = _dereq_(25);
2958
2959var _general = _dereq_(27);
2960
2961var _dom = _dereq_(26);
2962
2963function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2964
2965Object.assign(_player.config, {
2966	muteText: null,
2967
2968	unmuteText: null,
2969
2970	allyVolumeControlText: null,
2971
2972	hideVolumeOnTouchDevices: true,
2973
2974	audioVolume: 'horizontal',
2975
2976	videoVolume: 'vertical',
2977
2978	startVolume: 0.8
2979});
2980
2981Object.assign(_player2.default.prototype, {
2982	buildvolume: function buildvolume(player, controls, layers, media) {
2983		if ((_constants.IS_ANDROID || _constants.IS_IOS) && this.options.hideVolumeOnTouchDevices) {
2984			return;
2985		}
2986
2987		var t = this,
2988		    mode = t.isVideo ? t.options.videoVolume : t.options.audioVolume,
2989		    muteText = (0, _general.isString)(t.options.muteText) ? t.options.muteText : _i18n2.default.t('mejs.mute'),
2990		    unmuteText = (0, _general.isString)(t.options.unmuteText) ? t.options.unmuteText : _i18n2.default.t('mejs.unmute'),
2991		    volumeControlText = (0, _general.isString)(t.options.allyVolumeControlText) ? t.options.allyVolumeControlText : _i18n2.default.t('mejs.volume-help-text'),
2992		    mute = _document2.default.createElement('div');
2993
2994		mute.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'volume-button ' + t.options.classPrefix + 'mute';
2995		mute.innerHTML = mode === 'horizontal' ? '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' : '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' + ('<a href="javascript:void(0);" class="' + t.options.classPrefix + 'volume-slider" ') + ('aria-label="' + _i18n2.default.t('mejs.volume-slider') + '" aria-valuemin="0" aria-valuemax="100" role="slider" ') + 'aria-orientation="vertical">' + ('<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>') + ('<div class="' + t.options.classPrefix + 'volume-total">') + ('<div class="' + t.options.classPrefix + 'volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'volume-handle"></div>') + '</div>' + '</a>';
2996
2997		t.addControlElement(mute, 'volume');
2998
2999		t.options.keyActions.push({
3000			keys: [38],
3001			action: function action(player) {
3002				var volumeSlider = player.container.querySelector('.' + _player.config.classPrefix + 'volume-slider');
3003				if (volumeSlider || player.container.querySelector('.' + _player.config.classPrefix + 'volume-slider').matches(':focus')) {
3004					volumeSlider.style.display = 'block';
3005				}
3006				if (player.isVideo) {
3007					player.showControls();
3008					player.startControlsTimer();
3009				}
3010
3011				var newVolume = Math.min(player.volume + 0.1, 1);
3012				player.setVolume(newVolume);
3013				if (newVolume > 0) {
3014					player.setMuted(false);
3015				}
3016			}
3017		}, {
3018			keys: [40],
3019			action: function action(player) {
3020				var volumeSlider = player.container.querySelector('.' + _player.config.classPrefix + 'volume-slider');
3021				if (volumeSlider) {
3022					volumeSlider.style.display = 'block';
3023				}
3024
3025				if (player.isVideo) {
3026					player.showControls();
3027					player.startControlsTimer();
3028				}
3029
3030				var newVolume = Math.max(player.volume - 0.1, 0);
3031				player.setVolume(newVolume);
3032
3033				if (newVolume <= 0.1) {
3034					player.setMuted(true);
3035				}
3036			}
3037		}, {
3038			keys: [77],
3039			action: function action(player) {
3040				player.container.querySelector('.' + _player.config.classPrefix + 'volume-slider').style.display = 'block';
3041				if (player.isVideo) {
3042					player.showControls();
3043					player.startControlsTimer();
3044				}
3045				if (player.media.muted) {
3046					player.setMuted(false);
3047				} else {
3048					player.setMuted(true);
3049				}
3050			}
3051		});
3052
3053		if (mode === 'horizontal') {
3054			var anchor = _document2.default.createElement('a');
3055			anchor.className = t.options.classPrefix + 'horizontal-volume-slider';
3056			anchor.href = 'javascript:void(0);';
3057			anchor.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider'));
3058			anchor.setAttribute('aria-valuemin', 0);
3059			anchor.setAttribute('aria-valuemax', 100);
3060			anchor.setAttribute('role', 'slider');
3061			anchor.innerHTML += '<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>' + ('<div class="' + t.options.classPrefix + 'horizontal-volume-total">') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-handle"></div>') + '</div>';
3062			mute.parentNode.insertBefore(anchor, mute.nextSibling);
3063		}
3064
3065		var mouseIsDown = false,
3066		    mouseIsOver = false,
3067		    modified = false,
3068		    updateVolumeSlider = function updateVolumeSlider() {
3069			var volume = Math.floor(media.volume * 100);
3070			volumeSlider.setAttribute('aria-valuenow', volume);
vendor: 9,773 bytes, lines 3071-3379
3071			volumeSlider.setAttribute('aria-valuetext', volume + '%');
3072		};
3073
3074		var volumeSlider = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-slider') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-slider'),
3075		    volumeTotal = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-total') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-total'),
3076		    volumeCurrent = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-current') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-current'),
3077		    volumeHandle = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-handle') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-handle'),
3078		    positionVolumeHandle = function positionVolumeHandle(volume) {
3079
3080			if (volume === null || isNaN(volume) || volume === undefined) {
3081				return;
3082			}
3083
3084			volume = Math.max(0, volume);
3085			volume = Math.min(volume, 1);
3086
3087			if (volume === 0) {
3088				(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
3089				(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
3090				var button = mute.firstElementChild;
3091				button.setAttribute('title', unmuteText);
3092				button.setAttribute('aria-label', unmuteText);
3093			} else {
3094				(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
3095				(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
3096				var _button = mute.firstElementChild;
3097				_button.setAttribute('title', muteText);
3098				_button.setAttribute('aria-label', muteText);
3099			}
3100
3101			var volumePercentage = volume * 100 + '%',
3102			    volumeStyles = getComputedStyle(volumeHandle);
3103
3104			if (mode === 'vertical') {
3105				volumeCurrent.style.bottom = 0;
3106				volumeCurrent.style.height = volumePercentage;
3107				volumeHandle.style.bottom = volumePercentage;
3108				volumeHandle.style.marginBottom = -parseFloat(volumeStyles.height) / 2 + 'px';
3109			} else {
3110				volumeCurrent.style.left = 0;
3111				volumeCurrent.style.width = volumePercentage;
3112				volumeHandle.style.left = volumePercentage;
3113				volumeHandle.style.marginLeft = -parseFloat(volumeStyles.width) / 2 + 'px';
3114			}
3115		},
3116		    handleVolumeMove = function handleVolumeMove(e) {
3117			var totalOffset = (0, _dom.offset)(volumeTotal),
3118			    volumeStyles = getComputedStyle(volumeTotal);
3119
3120			modified = true;
3121
3122			var volume = null;
3123
3124			if (mode === 'vertical') {
3125				var railHeight = parseFloat(volumeStyles.height),
3126				    newY = e.pageY - totalOffset.top;
3127
3128				volume = (railHeight - newY) / railHeight;
3129
3130				if (totalOffset.top === 0 || totalOffset.left === 0) {
3131					return;
3132				}
3133			} else {
3134				var railWidth = parseFloat(volumeStyles.width),
3135				    newX = e.pageX - totalOffset.left;
3136
3137				volume = newX / railWidth;
3138			}
3139
3140			volume = Math.max(0, volume);
3141			volume = Math.min(volume, 1);
3142
3143			positionVolumeHandle(volume);
3144
3145			t.setMuted(volume === 0);
3146			t.setVolume(volume);
3147
3148			e.preventDefault();
3149			e.stopPropagation();
3150		},
3151		    toggleMute = function toggleMute() {
3152			if (t.muted) {
3153				positionVolumeHandle(0);
3154				(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
3155				(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
3156			} else {
3157				positionVolumeHandle(media.volume);
3158				(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
3159				(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
3160			}
3161		};
3162
3163		player.container.addEventListener('keydown', function (e) {
3164			var hasFocus = !!e.target.closest('.' + t.options.classPrefix + 'container');
3165			if (!hasFocus && mode === 'vertical') {
3166				volumeSlider.style.display = 'none';
3167			}
3168		});
3169
3170		mute.addEventListener('mouseenter', function (e) {
3171			if (e.target === mute) {
3172				volumeSlider.style.display = 'block';
3173				mouseIsOver = true;
3174				e.preventDefault();
3175				e.stopPropagation();
3176			}
3177		});
3178		mute.addEventListener('focusin', function () {
3179			volumeSlider.style.display = 'block';
3180			mouseIsOver = true;
3181		});
3182
3183		mute.addEventListener('focusout', function (e) {
3184			if ((!e.relatedTarget || e.relatedTarget && !e.relatedTarget.matches('.' + t.options.classPrefix + 'volume-slider')) && mode === 'vertical') {
3185				volumeSlider.style.display = 'none';
3186			}
3187		});
3188		mute.addEventListener('mouseleave', function () {
3189			mouseIsOver = false;
3190			if (!mouseIsDown && mode === 'vertical') {
3191				volumeSlider.style.display = 'none';
3192			}
3193		});
3194		mute.addEventListener('focusout', function () {
3195			mouseIsOver = false;
3196		});
3197		mute.addEventListener('keydown', function (e) {
3198			if (t.options.keyActions.length) {
3199				var keyCode = e.which || e.keyCode || 0,
3200				    volume = media.volume;
3201
3202				switch (keyCode) {
3203					case 38:
3204						volume = Math.min(volume + 0.1, 1);
3205						break;
3206					case 40:
3207						volume = Math.max(0, volume - 0.1);
3208						break;
3209					default:
3210						return true;
3211				}
3212
3213				mouseIsDown = false;
3214				positionVolumeHandle(volume);
3215				media.setVolume(volume);
3216
3217				e.preventDefault();
3218				e.stopPropagation();
3219			}
3220		});
3221		mute.querySelector('button').addEventListener('click', function () {
3222			media.setMuted(!media.muted);
3223			var event = (0, _general.createEvent)('volumechange', media);
3224			media.dispatchEvent(event);
3225		});
3226
3227		volumeSlider.addEventListener('dragstart', function () {
3228			return false;
3229		});
3230
3231		volumeSlider.addEventListener('mouseover', function () {
3232			mouseIsOver = true;
3233		});
3234		volumeSlider.addEventListener('focusin', function () {
3235			volumeSlider.style.display = 'block';
3236			mouseIsOver = true;
3237		});
3238		volumeSlider.addEventListener('focusout', function () {
3239			mouseIsOver = false;
3240			if (!mouseIsDown && mode === 'vertical') {
3241				volumeSlider.style.display = 'none';
3242			}
3243		});
3244		volumeSlider.addEventListener('mousedown', function (e) {
3245			handleVolumeMove(e);
3246			t.globalBind('mousemove.vol', function (event) {
3247				var target = event.target;
3248				if (mouseIsDown && (target === volumeSlider || target.closest(mode === 'vertical' ? '.' + t.options.classPrefix + 'volume-slider' : '.' + t.options.classPrefix + 'horizontal-volume-slider'))) {
3249					handleVolumeMove(event);
3250				}
3251			});
3252			t.globalBind('mouseup.vol', function () {
3253				mouseIsDown = false;
3254				if (!mouseIsOver && mode === 'vertical') {
3255					volumeSlider.style.display = 'none';
3256				}
3257			});
3258			mouseIsDown = true;
3259			e.preventDefault();
3260			e.stopPropagation();
3261		});
3262
3263		media.addEventListener('volumechange', function (e) {
3264			if (!mouseIsDown) {
3265				toggleMute();
3266			}
3267			updateVolumeSlider(e);
3268		});
3269
3270		var rendered = false;
3271		media.addEventListener('rendererready', function () {
3272			if (!modified) {
3273				setTimeout(function () {
3274					rendered = true;
3275					if (player.options.startVolume === 0 || media.originalNode.muted) {
3276						media.setMuted(true);
3277						player.options.startVolume = 0;
3278					}
3279					media.setVolume(player.options.startVolume);
3280					t.setControlsSize();
3281				}, 250);
3282			}
3283		});
3284
3285		media.addEventListener('loadedmetadata', function () {
3286			setTimeout(function () {
3287				if (!modified && !rendered) {
3288					if (player.options.startVolume === 0 || media.originalNode.muted) {
3289						media.setMuted(true);
3290						player.options.startVolume = 0;
3291					}
3292					media.setVolume(player.options.startVolume);
3293					t.setControlsSize();
3294				}
3295				rendered = false;
3296			}, 250);
3297		});
3298
3299		if (player.options.startVolume === 0 || media.originalNode.muted) {
3300			media.setMuted(true);
3301			player.options.startVolume = 0;
3302			toggleMute();
3303		}
3304
3305		t.container.addEventListener('controlsresize', function () {
3306			toggleMute();
3307		});
3308	}
3309});
3310
3311},{"16":16,"2":2,"25":25,"26":26,"27":27,"5":5}],15:[function(_dereq_,module,exports){
3312'use strict';
3313
3314Object.defineProperty(exports, "__esModule", {
3315	value: true
3316});
3317var EN = exports.EN = {
3318	'mejs.plural-form': 1,
3319
3320	'mejs.download-file': 'Download File',
3321
3322	'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/',
3323
3324	'mejs.fullscreen': 'Fullscreen',
3325
3326	'mejs.play': 'Play',
3327	'mejs.pause': 'Pause',
3328
3329	'mejs.time-slider': 'Time Slider',
3330	'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.',
3331	'mejs.live-broadcast': 'Live Broadcast',
3332
3333	'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.',
3334	'mejs.unmute': 'Unmute',
3335	'mejs.mute': 'Mute',
3336	'mejs.volume-slider': 'Volume Slider',
3337
3338	'mejs.video-player': 'Video Player',
3339	'mejs.audio-player': 'Audio Player',
3340
3341	'mejs.captions-subtitles': 'Captions/Subtitles',
3342	'mejs.captions-chapters': 'Chapters',
3343	'mejs.none': 'None',
3344	'mejs.afrikaans': 'Afrikaans',
3345	'mejs.albanian': 'Albanian',
3346	'mejs.arabic': 'Arabic',
3347	'mejs.belarusian': 'Belarusian',
3348	'mejs.bulgarian': 'Bulgarian',
3349	'mejs.catalan': 'Catalan',
3350	'mejs.chinese': 'Chinese',
3351	'mejs.chinese-simplified': 'Chinese (Simplified)',
3352	'mejs.chinese-traditional': 'Chinese (Traditional)',
3353	'mejs.croatian': 'Croatian',
3354	'mejs.czech': 'Czech',
3355	'mejs.danish': 'Danish',
3356	'mejs.dutch': 'Dutch',
3357	'mejs.english': 'English',
3358	'mejs.estonian': 'Estonian',
3359	'mejs.filipino': 'Filipino',
3360	'mejs.finnish': 'Finnish',
3361	'mejs.french': 'French',
3362	'mejs.galician': 'Galician',
3363	'mejs.german': 'German',
3364	'mejs.greek': 'Greek',
3365	'mejs.haitian-creole': 'Haitian Creole',
3366	'mejs.hebrew': 'Hebrew',
3367	'mejs.hindi': 'Hindi',
3368	'mejs.hungarian': 'Hungarian',
3369	'mejs.icelandic': 'Icelandic',
3370	'mejs.indonesian': 'Indonesian',
3371	'mejs.irish': 'Irish',
3372	'mejs.italian': 'Italian',
3373	'mejs.japanese': 'Japanese',
3374	'mejs.korean': 'Korean',
3375	'mejs.latvian': 'Latvian',
3376	'mejs.lithuanian': 'Lithuanian',
3377	'mejs.macedonian': 'Macedonian',
3378	'mejs.malay': 'Malay',
3379	'mejs.maltese': 'Maltese',
3380	'mejs.norwegian': 'Norwegian',
3381	'mejs.persian': 'Persian',
3382	'mejs.polish': 'Polish',
3383	'mejs.portuguese': 'Portuguese',
3384	'mejs.romanian': 'Romanian',
3385	'mejs.russian': 'Russian',
3386	'mejs.serbian': 'Serbian',
3387	'mejs.slovak': 'Slovak',
3388	'mejs.slovenian': 'Slovenian',
3389	'mejs.spanish': 'Spanish',
3390	'mejs.swahili': 'Swahili',
3391	'mejs.swedish': 'Swedish',
3392	'mejs.tagalog': 'Tagalog',
3393	'mejs.thai': 'Thai',
3394	'mejs.turkish': 'Turkish',
3395	'mejs.ukrainian': 'Ukrainian',
3396	'mejs.vietnamese': 'Vietnamese',
3397	'mejs.welsh': 'Welsh',
3398	'mejs.yiddish': 'Yiddish'
3399};
3400
3401},{}],16:[function(_dereq_,module,exports){
3402'use strict';
3403
3404Object.defineProperty(exports, "__esModule", {
3405	value: true
3406});
3407exports.config = undefined;
3408
3409var _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; };
3410
3411var _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; }; }();
3412
3413var _window = _dereq_(3);
3414
3415var _window2 = _interopRequireDefault(_window);
3416
3417var _document = _dereq_(2);
3418
3419var _document2 = _interopRequireDefault(_document);
3420
3421var _mejs = _dereq_(7);
3422
3423var _mejs2 = _interopRequireDefault(_mejs);
3424
3425var _mediaelement = _dereq_(6);
3426
3427var _mediaelement2 = _interopRequireDefault(_mediaelement);
3428
3429var _default = _dereq_(17);
3430
3431var _default2 = _interopRequireDefault(_default);
3432
3433var _i18n = _dereq_(5);
3434
3435var _i18n2 = _interopRequireDefault(_i18n);
3436
3437var _constants = _dereq_(25);
3438
3439var _general = _dereq_(27);
3440
3441var _time = _dereq_(30);
3442
3443var _media = _dereq_(28);
3444
3445var _dom = _dereq_(26);
3446
3447var dom = _interopRequireWildcard(_dom);
3448
3449function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
3450
3451function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3452
3453function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3454
3455_mejs2.default.mepIndex = 0;
3456
3457_mejs2.default.players = {};
3458
3459var config = exports.config = {
3460	poster: '',
3461
3462	showPosterWhenEnded: false,
3463
3464	showPosterWhenPaused: false,
3465
3466	defaultVideoWidth: 480,
3467
3468	defaultVideoHeight: 270,
3469
3470	videoWidth: -1,
3471
3472	videoHeight: -1,
3473
3474	defaultAudioWidth: 400,
3475
3476	defaultAudioHeight: 40,
3477
3478	defaultSeekBackwardInterval: function defaultSeekBackwardInterval(media) {
3479		return media.getDuration() * 0.05;
3480	},
3481
3482	defaultSeekForwardInterval: function defaultSeekForwardInterval(media) {
3483		return media.getDuration() * 0.05;
3484	},
3485
3486	setDimensions: true,
3487
3488	audioWidth: -1,
3489
3490	audioHeight: -1,
3491
3492	loop: false,
3493
3494	autoRewind: true,
3495
3496	enableAutosize: true,
3497
3498	timeFormat: '',
3499
3500	alwaysShowHours: false,
3501
3502	showTimecodeFrameCount: false,
3503
3504	framesPerSecond: 25,
3505
3506	alwaysShowControls: false,
3507
3508	hideVideoControlsOnLoad: false,
3509
3510	hideVideoControlsOnPause: false,
3511
3512	clickToPlayPause: true,
3513
3514	controlsTimeoutDefault: 1500,
3515
3516	controlsTimeoutMouseEnter: 2500,
3517
3518	controlsTimeoutMouseLeave: 1000,
3519
3520	iPadUseNativeControls: false,
3521
3522	iPhoneUseNativeControls: false,
3523
3524	AndroidUseNativeControls: false,
3525
3526	features: ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'],
3527
3528	useDefaultControls: false,
3529
3530	isVideo: true,
3531
3532	stretching: 'auto',
3533
3534	classPrefix: 'mejs__',
3535
3536	enableKeyboard: true,
3537
3538	pauseOtherPlayers: true,
3539
3540	secondsDecimalLength: 0,
3541
3542	customError: null,
3543
3544	keyActions: [{
3545		keys: [32, 179],
3546		action: function action(player) {
3547
3548			if (!_constants.IS_FIREFOX) {
3549				if (player.paused || player.ended) {
3550					player.play();
3551				} else {
3552					player.pause();
3553				}
3554			}
3555		}
3556	}]
3557};
3558
3559_mejs2.default.MepDefaults = config;
3560
3561var MediaElementPlayer = function () {
3562	function MediaElementPlayer(node, o) {
3563		_classCallCheck(this, MediaElementPlayer);
3564
3565		var t = this,
3566		    element = typeof node === 'string' ? _document2.default.getElementById(node) : node;
3567
3568		if (!(t instanceof MediaElementPlayer)) {
3569			return new MediaElementPlayer(element, o);
3570		}
3571
3572		t.node = t.media = element;
3573
3574		if (!t.node) {
3575			return;
3576		}
3577
3578		if (t.media.player) {
3579			return t.media.player;
3580		}
3581
3582		t.hasFocus = false;
3583
3584		t.controlsAreVisible = true;
3585
3586		t.controlsEnabled = true;
3587
3588		t.controlsTimer = null;
3589
3590		t.currentMediaTime = 0;
3591
3592		t.proxy = null;
3593
3594		if (o === undefined) {
3595			var options = t.node.getAttribute('data-mejsoptions');
3596			o = options ? JSON.parse(options) : {};
3597		}
3598
3599		t.options = Object.assign({}, config, o);
3600
3601		if (t.options.loop && !t.media.getAttribute('loop')) {
3602			t.media.loop = true;
3603			t.node.loop = true;
3604		} else if (t.media.loop) {
3605			t.options.loop = true;
3606		}
3607
3608		if (!t.options.timeFormat) {
3609			t.options.timeFormat = 'mm:ss';
3610			if (t.options.alwaysShowHours) {
3611				t.options.timeFormat = 'hh:mm:ss';
3612			}
3613			if (t.options.showTimecodeFrameCount) {
3614				t.options.timeFormat += ':ff';
3615			}
3616		}
3617
3618		(0, _time.calculateTimeFormat)(0, t.options, t.options.framesPerSecond || 25);
3619
3620		t.id = 'mep_' + _mejs2.default.mepIndex++;
3621
3622		_mejs2.default.players[t.id] = t;
3623
3624		var playerOptions = Object.assign({}, t.options, {
3625			success: function success(media, domNode) {
3626				t._meReady(media, domNode);
3627			},
3628			error: function error(e) {
3629				t._handleError(e);
3630			}
3631		}),
3632		    tagName = t.node.tagName.toLowerCase();
3633
3634		t.isDynamic = tagName !== 'audio' && tagName !== 'video' && tagName !== 'iframe';
3635		t.isVideo = t.isDynamic ? t.options.isVideo : tagName !== 'audio' && t.options.isVideo;
3636		t.mediaFiles = null;
3637		t.trackFiles = null;
3638
3639		if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls) {
3640			t.node.setAttribute('controls', true);
3641
3642			if (_constants.IS_IPAD && t.node.getAttribute('autoplay')) {
3643				t.play();
3644			}
3645		} else if ((t.isVideo || !t.isVideo && (t.options.features.length || t.options.useDefaultControls)) && !(_constants.IS_ANDROID && t.options.AndroidUseNativeControls)) {
3646			t.node.removeAttribute('controls');
3647			var videoPlayerTitle = t.isVideo ? _i18n2.default.t('mejs.video-player') : _i18n2.default.t('mejs.audio-player');
3648
3649			var offscreen = _document2.default.createElement('span');
3650			offscreen.className = t.options.classPrefix + 'offscreen';
3651			offscreen.innerText = videoPlayerTitle;
3652			t.media.parentNode.insertBefore(offscreen, t.media);
3653
3654			t.container = _document2.default.createElement('div');
3655			t.container.id = t.id;
3656			t.container.className = t.options.classPrefix + 'container ' + t.options.classPrefix + 'container-keyboard-inactive ' + t.media.className;
3657			t.container.tabIndex = 0;
3658			t.container.setAttribute('role', 'application');
3659			t.container.setAttribute('aria-label', videoPlayerTitle);
3660			t.container.innerHTML = '<div class="' + t.options.classPrefix + 'inner">' + ('<div class="' + t.options.classPrefix + 'mediaelement"></div>') + ('<div class="' + t.options.classPrefix + 'layers"></div>') + ('<div class="' + t.options.classPrefix + 'controls"></div>') + '</div>';
3661			t.container.addEventListener('focus', function (e) {
3662				if (!t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) {
3663					t.showControls(true);
3664
3665					var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.container) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button',
3666					    button = t.container.querySelector(btnSelector);
3667
3668					button.focus();
3669				}
3670			});
3671			t.node.parentNode.insertBefore(t.container, t.node);
3672
3673			if (!t.options.features.length && !t.options.useDefaultControls) {
3674				t.container.style.background = 'transparent';
3675				t.container.querySelector('.' + t.options.classPrefix + 'controls').style.display = 'none';
3676			}
3677
3678			if (t.isVideo && t.options.stretching === 'fill' && !dom.hasClass(t.container.parentNode, t.options.classPrefix + 'fill-container')) {
3679				t.outerContainer = t.media.parentNode;
3680
3681				var wrapper = _document2.default.createElement('div');
3682				wrapper.className = t.options.classPrefix + 'fill-container';
3683				t.container.parentNode.insertBefore(wrapper, t.container);
3684				wrapper.appendChild(t.container);
3685			}
3686
3687			if (_constants.IS_ANDROID) {
3688				dom.addClass(t.container, t.options.classPrefix + 'android');
3689			}
3690			if (_constants.IS_IOS) {
3691				dom.addClass(t.container, t.options.classPrefix + 'ios');
3692			}
3693			if (_constants.IS_IPAD) {
3694				dom.addClass(t.container, t.options.classPrefix + 'ipad');
3695			}
3696			if (_constants.IS_IPHONE) {
3697				dom.addClass(t.container, t.options.classPrefix + 'iphone');
3698			}
3699			dom.addClass(t.container, t.isVideo ? t.options.classPrefix + 'video' : t.options.classPrefix + 'audio');
3700
3701			if (_constants.IS_SAFARI && !_constants.IS_IOS) {
3702
3703				dom.addClass(t.container, t.options.classPrefix + 'hide-cues');
3704
3705				var cloneNode = t.node.cloneNode(),
3706				    children = t.node.children,
3707				    mediaFiles = [],
3708				    tracks = [];
3709
3710				for (var i = 0, total = children.length; i < total; i++) {
3711					var childNode = children[i];
3712
3713					(function () {
3714						switch (childNode.tagName.toLowerCase()) {
3715							case 'source':
3716								var elements = {};
3717								Array.prototype.slice.call(childNode.attributes).forEach(function (item) {
3718									elements[item.name] = item.value;
3719								});
3720								elements.type = (0, _media.formatType)(elements.src, elements.type);
3721								mediaFiles.push(elements);
3722								break;
3723							case 'track':
3724								childNode.mode = 'hidden';
3725								tracks.push(childNode);
3726								break;
3727							default:
3728								cloneNode.appendChild(childNode);
3729								break;
3730						}
3731					})();
3732				}
3733
3734				t.node.remove();
3735				t.node = t.media = cloneNode;
3736
3737				if (mediaFiles.length) {
3738					t.mediaFiles = mediaFiles;
3739				}
3740				if (tracks.length) {
3741					t.trackFiles = tracks;
3742				}
3743			}
3744
3745			t.container.querySelector('.' + t.options.classPrefix + 'mediaelement').appendChild(t.node);
3746
3747			t.media.player = t;
3748
3749			t.controls = t.container.querySelector('.' + t.options.classPrefix + 'controls');
3750			t.layers = t.container.querySelector('.' + t.options.classPrefix + 'layers');
3751
3752			var tagType = t.isVideo ? 'video' : 'audio',
3753			    capsTagName = tagType.substring(0, 1).toUpperCase() + tagType.substring(1);
3754
3755			if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) {
3756				t.width = t.options[tagType + 'Width'];
3757			} else if (t.node.style.width !== '' && t.node.style.width !== null) {
3758				t.width = t.node.style.width;
3759			} else if (t.node.getAttribute('width')) {
3760				t.width = t.node.getAttribute('width');
3761			} else {
3762				t.width = t.options['default' + capsTagName + 'Width'];
3763			}
3764
3765			if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) {
3766				t.height = t.options[tagType + 'Height'];
3767			} else if (t.node.style.height !== '' && t.node.style.height !== null) {
3768				t.height = t.node.style.height;
3769			} else if (t.node.getAttribute('height')) {
3770				t.height = t.node.getAttribute('height');
3771			} else {
3772				t.height = t.options['default' + capsTagName + 'Height'];
3773			}
3774
3775			t.initialAspectRatio = t.height >= t.width ? t.width / t.height : t.height / t.width;
3776
3777			t.setPlayerSize(t.width, t.height);
3778
3779			playerOptions.pluginWidth = t.width;
3780			playerOptions.pluginHeight = t.height;
3781		} else if (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) {
3782				t.node.style.display = 'none';
3783			}
3784
3785		_mejs2.default.MepDefaults = playerOptions;
3786
3787		new _mediaelement2.default(t.media, playerOptions, t.mediaFiles);
3788
3789		if (t.container !== undefined && t.options.features.length && t.controlsAreVisible && !t.options.hideVideoControlsOnLoad) {
3790			var event = (0, _general.createEvent)('controlsshown', t.container);
3791			t.container.dispatchEvent(event);
3792		}
3793
3794		return t;
3795	}
3796
3797	_createClass(MediaElementPlayer, [{
3798		key: 'showControls',
3799		value: function showControls(doAnimation) {
3800			var t = this;
3801
3802			doAnimation = doAnimation === undefined || doAnimation;
3803
3804			if (t.controlsAreVisible || !t.isVideo) {
3805				return;
3806			}
3807
3808			if (doAnimation) {
3809				(function () {
3810					dom.fadeIn(t.controls, 200, function () {
3811						dom.removeClass(t.controls, t.options.classPrefix + 'offscreen');
3812						var event = (0, _general.createEvent)('controlsshown', t.container);
3813						t.container.dispatchEvent(event);
3814					});
3815
3816					var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
3817
3818					var _loop = function _loop(i, total) {
3819						dom.fadeIn(controls[i], 200, function () {
3820							dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
3821						});
3822					};
3823
3824					for (var i = 0, total = controls.length; i < total; i++) {
3825						_loop(i, total);
3826					}
3827				})();
3828			} else {
3829				dom.removeClass(t.controls, t.options.classPrefix + 'offscreen');
3830				t.controls.style.display = '';
3831				t.controls.style.opacity = 1;
3832
3833				var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
3834				for (var i = 0, total = controls.length; i < total; i++) {
3835					dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
3836					controls[i].style.display = '';
3837				}
3838
3839				var event = (0, _general.createEvent)('controlsshown', t.container);
3840				t.container.dispatchEvent(event);
3841			}
3842
3843			t.controlsAreVisible = true;
3844			t.setControlsSize();
3845		}
3846	}, {
3847		key: 'hideControls',
3848		value: function hideControls(doAnimation, forceHide) {
3849			var t = this;
3850
3851			doAnimation = doAnimation === undefined || doAnimation;
3852
3853			if (forceHide !== true && (!t.controlsAreVisible || t.options.alwaysShowControls || t.paused && t.readyState === 4 && (!t.options.hideVideoControlsOnLoad && t.currentTime <= 0 || !t.options.hideVideoControlsOnPause && t.currentTime > 0) || t.isVideo && !t.options.hideVideoControlsOnLoad && !t.readyState || t.ended)) {
3854				return;
3855			}
3856
3857			if (doAnimation) {
3858				(function () {
3859					dom.fadeOut(t.controls, 200, function () {
3860						dom.addClass(t.controls, t.options.classPrefix + 'offscreen');
3861						t.controls.style.display = '';
3862						var event = (0, _general.createEvent)('controlshidden', t.container);
vendor: 15,986 bytes, lines 3863-4419
3863						t.container.dispatchEvent(event);
3864					});
3865
3866					var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
3867
3868					var _loop2 = function _loop2(i, total) {
3869						dom.fadeOut(controls[i], 200, function () {
3870							dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
3871							controls[i].style.display = '';
3872						});
3873					};
3874
3875					for (var i = 0, total = controls.length; i < total; i++) {
3876						_loop2(i, total);
3877					}
3878				})();
3879			} else {
3880				dom.addClass(t.controls, t.options.classPrefix + 'offscreen');
3881				t.controls.style.display = '';
3882				t.controls.style.opacity = 0;
3883
3884				var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
3885				for (var i = 0, total = controls.length; i < total; i++) {
3886					dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
3887					controls[i].style.display = '';
3888				}
3889
3890				var event = (0, _general.createEvent)('controlshidden', t.container);
3891				t.container.dispatchEvent(event);
3892			}
3893
3894			t.controlsAreVisible = false;
3895		}
3896	}, {
3897		key: 'startControlsTimer',
3898		value: function startControlsTimer(timeout) {
3899			var t = this;
3900
3901			timeout = typeof timeout !== 'undefined' ? timeout : t.options.controlsTimeoutDefault;
3902
3903			t.killControlsTimer('start');
3904
3905			t.controlsTimer = setTimeout(function () {
3906				t.hideControls();
3907				t.killControlsTimer('hide');
3908			}, timeout);
3909		}
3910	}, {
3911		key: 'killControlsTimer',
3912		value: function killControlsTimer() {
3913			var t = this;
3914
3915			if (t.controlsTimer !== null) {
3916				clearTimeout(t.controlsTimer);
3917				delete t.controlsTimer;
3918				t.controlsTimer = null;
3919			}
3920		}
3921	}, {
3922		key: 'disableControls',
3923		value: function disableControls() {
3924			var t = this;
3925
3926			t.killControlsTimer();
3927			t.controlsEnabled = false;
3928			t.hideControls(false, true);
3929		}
3930	}, {
3931		key: 'enableControls',
3932		value: function enableControls() {
3933			var t = this;
3934
3935			t.controlsEnabled = true;
3936			t.showControls(false);
3937		}
3938	}, {
3939		key: '_setDefaultPlayer',
3940		value: function _setDefaultPlayer() {
3941			var t = this;
3942			if (t.proxy) {
3943				t.proxy.pause();
3944			}
3945			t.proxy = new _default2.default(t);
3946			t.media.addEventListener('loadedmetadata', function () {
3947				if (t.getCurrentTime() > 0 && t.currentMediaTime > 0) {
3948					t.setCurrentTime(t.currentMediaTime);
3949					if (!_constants.IS_IOS && !_constants.IS_ANDROID) {
3950						t.play();
3951					}
3952				}
3953			});
3954		}
3955	}, {
3956		key: '_meReady',
3957		value: function _meReady(media, domNode) {
3958			var t = this,
3959			    autoplayAttr = domNode.getAttribute('autoplay'),
3960			    autoplay = !(autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false'),
3961			    isNative = media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
3962
3963			if (t.controls) {
3964				t.enableControls();
3965			}
3966
3967			if (t.container && t.container.querySelector('.' + t.options.classPrefix + 'overlay-play')) {
3968				t.container.querySelector('.' + t.options.classPrefix + 'overlay-play').style.display = '';
3969			}
3970
3971			if (t.created) {
3972				return;
3973			}
3974
3975			t.created = true;
3976			t.media = media;
3977			t.domNode = domNode;
3978
3979			if (!(_constants.IS_ANDROID && t.options.AndroidUseNativeControls) && !(_constants.IS_IPAD && t.options.iPadUseNativeControls) && !(_constants.IS_IPHONE && t.options.iPhoneUseNativeControls)) {
3980				if (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) {
3981					if (autoplay && isNative) {
3982						t.play();
3983					}
3984
3985					if (t.options.success) {
3986
3987						if (typeof t.options.success === 'string') {
3988							_window2.default[t.options.success](t.media, t.domNode, t);
3989						} else {
3990							t.options.success(t.media, t.domNode, t);
3991						}
3992					}
3993
3994					return;
3995				}
3996
3997				t.featurePosition = {};
3998
3999				t._setDefaultPlayer();
4000
4001				t.buildposter(t, t.controls, t.layers, t.media);
4002				t.buildkeyboard(t, t.controls, t.layers, t.media);
4003				t.buildoverlays(t, t.controls, t.layers, t.media);
4004
4005				if (t.options.useDefaultControls) {
4006					var defaultControls = ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'];
4007					t.options.features = defaultControls.concat(t.options.features.filter(function (item) {
4008						return defaultControls.indexOf(item) === -1;
4009					}));
4010				}
4011
4012				for (var i = 0, total = t.options.features.length; i < total; i++) {
4013					var feature = t.options.features[i];
4014					if (t['build' + feature]) {
4015						try {
4016							t['build' + feature](t, t.controls, t.layers, t.media);
4017						} catch (e) {
4018							console.error('error building ' + feature, e);
4019						}
4020					}
4021				}
4022
4023				var event = (0, _general.createEvent)('controlsready', t.container);
4024				t.container.dispatchEvent(event);
4025
4026				t.setPlayerSize(t.width, t.height);
4027				t.setControlsSize();
4028
4029				if (t.isVideo) {
4030					t.clickToPlayPauseCallback = function () {
4031
4032						if (t.options.clickToPlayPause) {
4033							var button = t.container.querySelector('.' + t.options.classPrefix + 'overlay-button'),
4034							    pressed = button.getAttribute('aria-pressed');
4035
4036							if (t.paused && pressed) {
4037								t.pause();
4038							} else if (t.paused) {
4039								t.play();
4040							} else {
4041								t.pause();
4042							}
4043
4044							button.setAttribute('aria-pressed', !pressed);
4045							t.container.focus();
4046						}
4047					};
4048
4049					t.createIframeLayer();
4050
4051					t.media.addEventListener('click', t.clickToPlayPauseCallback);
4052
4053					if ((_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls) {
4054						t.node.addEventListener('touchstart', function () {
4055							if (t.controlsAreVisible) {
4056								t.hideControls(false);
4057							} else {
4058								if (t.controlsEnabled) {
4059									t.showControls(false);
4060								}
4061							}
4062						}, _constants.SUPPORT_PASSIVE_EVENT ? { passive: true } : false);
4063					} else {
4064						t.container.addEventListener('mouseenter', function () {
4065							if (t.controlsEnabled) {
4066								if (!t.options.alwaysShowControls) {
4067									t.killControlsTimer('enter');
4068									t.showControls();
4069									t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4070								}
4071							}
4072						});
4073						t.container.addEventListener('mousemove', function () {
4074							if (t.controlsEnabled) {
4075								if (!t.controlsAreVisible) {
4076									t.showControls();
4077								}
4078								if (!t.options.alwaysShowControls) {
4079									t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4080								}
4081							}
4082						});
4083						t.container.addEventListener('mouseleave', function () {
4084							if (t.controlsEnabled) {
4085								if (!t.paused && !t.options.alwaysShowControls) {
4086									t.startControlsTimer(t.options.controlsTimeoutMouseLeave);
4087								}
4088							}
4089						});
4090					}
4091
4092					if (t.options.hideVideoControlsOnLoad) {
4093						t.hideControls(false);
4094					}
4095
4096					if (t.options.enableAutosize) {
4097						t.media.addEventListener('loadedmetadata', function (e) {
4098							var target = e !== undefined ? e.detail.target || e.target : t.media;
4099							if (t.options.videoHeight <= 0 && !t.domNode.getAttribute('height') && !t.domNode.style.height && target !== null && !isNaN(target.videoHeight)) {
4100								t.setPlayerSize(target.videoWidth, target.videoHeight);
4101								t.setControlsSize();
4102								t.media.setSize(target.videoWidth, target.videoHeight);
4103							}
4104						});
4105					}
4106				}
4107
4108				t.media.addEventListener('play', function () {
4109					t.hasFocus = true;
4110
4111					for (var playerIndex in _mejs2.default.players) {
4112						if (_mejs2.default.players.hasOwnProperty(playerIndex)) {
4113							var p = _mejs2.default.players[playerIndex];
4114
4115							if (p.id !== t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended) {
4116								p.pause();
4117								p.hasFocus = false;
4118							}
4119						}
4120					}
4121
4122					if (!(_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls && t.isVideo) {
4123						t.hideControls();
4124					}
4125				});
4126
4127				t.media.addEventListener('ended', function () {
4128					if (t.options.autoRewind) {
4129						try {
4130							t.setCurrentTime(0);
4131
4132							setTimeout(function () {
4133								var loadingElement = t.container.querySelector('.' + t.options.classPrefix + 'overlay-loading');
4134								if (loadingElement && loadingElement.parentNode) {
4135									loadingElement.parentNode.style.display = 'none';
4136								}
4137							}, 20);
4138						} catch (exp) {
4139							
4140						}
4141					}
4142
4143					if (typeof t.media.renderer.stop === 'function') {
4144						t.media.renderer.stop();
4145					} else {
4146						t.pause();
4147					}
4148
4149					if (t.setProgressRail) {
4150						t.setProgressRail();
4151					}
4152					if (t.setCurrentRail) {
4153						t.setCurrentRail();
4154					}
4155
4156					if (t.options.loop) {
4157						t.play();
4158					} else if (!t.options.alwaysShowControls && t.controlsEnabled) {
4159						t.showControls();
4160					}
4161				});
4162
4163				t.media.addEventListener('loadedmetadata', function () {
4164
4165					(0, _time.calculateTimeFormat)(t.getDuration(), t.options, t.options.framesPerSecond || 25);
4166
4167					if (t.updateDuration) {
4168						t.updateDuration();
4169					}
4170					if (t.updateCurrent) {
4171						t.updateCurrent();
4172					}
4173
4174					if (!t.isFullScreen) {
4175						t.setPlayerSize(t.width, t.height);
4176						t.setControlsSize();
4177					}
4178				});
4179
4180				var duration = null;
4181				t.media.addEventListener('timeupdate', function () {
4182					if (!isNaN(t.getDuration()) && duration !== t.getDuration()) {
4183						duration = t.getDuration();
4184						(0, _time.calculateTimeFormat)(duration, t.options, t.options.framesPerSecond || 25);
4185
4186						if (t.updateDuration) {
4187							t.updateDuration();
4188						}
4189						if (t.updateCurrent) {
4190							t.updateCurrent();
4191						}
4192
4193						t.setControlsSize();
4194					}
4195				});
4196
4197				t.container.addEventListener('click', function (e) {
4198					dom.addClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
4199				});
4200
4201				t.container.addEventListener('focusin', function (e) {
4202					dom.removeClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
4203					if (t.isVideo && !_constants.IS_ANDROID && !_constants.IS_IOS && t.controlsEnabled && !t.options.alwaysShowControls) {
4204						t.killControlsTimer('enter');
4205						t.showControls();
4206						t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4207					}
4208				});
4209
4210				t.container.addEventListener('focusout', function (e) {
4211					setTimeout(function () {
4212						if (e.relatedTarget) {
4213							if (t.keyboardAction && !e.relatedTarget.closest('.' + t.options.classPrefix + 'container')) {
4214								t.keyboardAction = false;
4215								if (t.isVideo && !t.options.alwaysShowControls && !t.paused) {
4216									t.startControlsTimer(t.options.controlsTimeoutMouseLeave);
4217								}
4218							}
4219						}
4220					}, 0);
4221				});
4222
4223				setTimeout(function () {
4224					t.setPlayerSize(t.width, t.height);
4225					t.setControlsSize();
4226				}, 0);
4227
4228				t.globalResizeCallback = function () {
4229					if (!(t.isFullScreen || _constants.HAS_TRUE_NATIVE_FULLSCREEN && _document2.default.webkitIsFullScreen)) {
4230						t.setPlayerSize(t.width, t.height);
4231					}
4232
4233					t.setControlsSize();
4234				};
4235
4236				t.globalBind('resize', t.globalResizeCallback);
4237			}
4238
4239			if (autoplay && isNative) {
4240				t.play();
4241			}
4242
4243			if (t.options.success) {
4244				if (typeof t.options.success === 'string') {
4245					_window2.default[t.options.success](t.media, t.domNode, t);
4246				} else {
4247					t.options.success(t.media, t.domNode, t);
4248				}
4249			}
4250		}
4251	}, {
4252		key: '_handleError',
4253		value: function _handleError(e, media, node) {
4254			var t = this,
4255			    play = t.layers.querySelector('.' + t.options.classPrefix + 'overlay-play');
4256
4257			if (play) {
4258				play.style.display = 'none';
4259			}
4260
4261			if (t.options.error) {
4262				t.options.error(e, media, node);
4263			}
4264
4265			if (t.container.querySelector('.' + t.options.classPrefix + 'cannotplay')) {
4266				t.container.querySelector('.' + t.options.classPrefix + 'cannotplay').remove();
4267			}
4268
4269			var errorContainer = _document2.default.createElement('div');
4270			errorContainer.className = t.options.classPrefix + 'cannotplay';
4271			errorContainer.style.width = '100%';
4272			errorContainer.style.height = '100%';
4273
4274			var errorContent = typeof t.options.customError === 'function' ? t.options.customError(t.media, t.media.originalNode) : t.options.customError,
4275			    imgError = '';
4276
4277			if (!errorContent) {
4278				var poster = t.media.originalNode.getAttribute('poster');
4279				if (poster) {
4280					imgError = '<img src="' + poster + '" alt="' + _mejs2.default.i18n.t('mejs.download-file') + '">';
4281				}
4282
4283				if (e.message) {
4284					errorContent = '<p>' + e.message + '</p>';
4285				}
4286
4287				if (e.urls) {
4288					for (var i = 0, total = e.urls.length; i < total; i++) {
4289						var url = e.urls[i];
4290						errorContent += '<a href="' + url.src + '" data-type="' + url.type + '"><span>' + _mejs2.default.i18n.t('mejs.download-file') + ': ' + url.src + '</span></a>';
4291					}
4292				}
4293			}
4294
4295			if (errorContent && t.layers.querySelector('.' + t.options.classPrefix + 'overlay-error')) {
4296				errorContainer.innerHTML = errorContent;
4297				t.layers.querySelector('.' + t.options.classPrefix + 'overlay-error').innerHTML = '' + imgError + errorContainer.outerHTML;
4298				t.layers.querySelector('.' + t.options.classPrefix + 'overlay-error').parentNode.style.display = 'block';
4299			}
4300
4301			if (t.controlsEnabled) {
4302				t.disableControls();
4303			}
4304		}
4305	}, {
4306		key: 'setPlayerSize',
4307		value: function setPlayerSize(width, height) {
4308			var t = this;
4309
4310			if (!t.options.setDimensions) {
4311				return false;
4312			}
4313
4314			if (typeof width !== 'undefined') {
4315				t.width = width;
4316			}
4317
4318			if (typeof height !== 'undefined') {
4319				t.height = height;
4320			}
4321
4322			switch (t.options.stretching) {
4323				case 'fill':
4324					if (t.isVideo) {
4325						t.setFillMode();
4326					} else {
4327						t.setDimensions(t.width, t.height);
4328					}
4329					break;
4330				case 'responsive':
4331					t.setResponsiveMode();
4332					break;
4333				case 'none':
4334					t.setDimensions(t.width, t.height);
4335					break;
4336
4337				default:
4338					if (t.hasFluidMode() === true) {
4339						t.setResponsiveMode();
4340					} else {
4341						t.setDimensions(t.width, t.height);
4342					}
4343					break;
4344			}
4345		}
4346	}, {
4347		key: 'hasFluidMode',
4348		value: function hasFluidMode() {
4349			var t = this;
4350
4351			return t.height.toString().indexOf('%') !== -1 || t.node && t.node.style.maxWidth && t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width || t.node && t.node.currentStyle && t.node.currentStyle.maxWidth === '100%';
4352		}
4353	}, {
4354		key: 'setResponsiveMode',
4355		value: function setResponsiveMode() {
4356			var t = this,
4357			    parent = function () {
4358
4359				var parentEl = void 0,
4360				    el = t.container;
4361
4362				while (el) {
4363					try {
4364						if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) {
4365							return _window2.default.frameElement;
4366						} else {
4367							parentEl = el.parentElement;
4368						}
4369					} catch (e) {
4370						parentEl = el.parentElement;
4371					}
4372
4373					if (parentEl && dom.visible(parentEl)) {
4374						return parentEl;
4375					}
4376					el = parentEl;
4377				}
4378
4379				return null;
4380			}(),
4381			    parentStyles = parent ? getComputedStyle(parent, null) : getComputedStyle(_document2.default.body, null),
4382			    nativeWidth = function () {
4383				if (t.isVideo) {
4384					if (t.media.videoWidth && t.media.videoWidth > 0) {
4385						return t.media.videoWidth;
4386					} else if (t.node.getAttribute('width')) {
4387						return t.node.getAttribute('width');
4388					} else {
4389						return t.options.defaultVideoWidth;
4390					}
4391				} else {
4392					return t.options.defaultAudioWidth;
4393				}
4394			}(),
4395			    nativeHeight = function () {
4396				if (t.isVideo) {
4397					if (t.media.videoHeight && t.media.videoHeight > 0) {
4398						return t.media.videoHeight;
4399					} else if (t.node.getAttribute('height')) {
4400						return t.node.getAttribute('height');
4401					} else {
4402						return t.options.defaultVideoHeight;
4403					}
4404				} else {
4405					return t.options.defaultAudioHeight;
4406				}
4407			}(),
4408			    aspectRatio = function () {
4409				var ratio = 1;
4410				if (!t.isVideo) {
4411					return ratio;
4412				}
4413
4414				if (t.media.videoWidth && t.media.videoWidth > 0 && t.media.videoHeight && t.media.videoHeight > 0) {
4415					ratio = t.height >= t.width ? t.media.videoWidth / t.media.videoHeight : t.media.videoHeight / t.media.videoWidth;
4416				} else {
4417					ratio = t.initialAspectRatio;
4418				}
4419
4420				if (isNaN(ratio) || ratio < 0.01 || ratio > 100) {
4421					ratio = 1;
4422				}
4423
4424				return ratio;
4425			}(),
4426			    parentHeight = parseFloat(parentStyles.height);
4427
4428			var newHeight = void 0,
4429			    parentWidth = parseFloat(parentStyles.width);
4430
4431			if (t.isVideo) {
4432				if (t.height === '100%') {
4433					newHeight = parseFloat(parentWidth * nativeHeight / nativeWidth, 10);
4434				} else {
4435					newHeight = t.height >= t.width ? parseFloat(parentWidth / aspectRatio, 10) : parseFloat(parentWidth * aspectRatio, 10);
4436				}
4437			} else {
4438				newHeight = nativeHeight;
4439			}
4440
4441			if (isNaN(newHeight)) {
4442				newHeight = parentHeight;
4443			}
4444
4445			if (t.container.parentNode.length > 0 && t.container.parentNode.tagName.toLowerCase() === 'body') {
4446				parentWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth;
4447				newHeight = _window2.default.innerHeight || _document2.default.documentElement.clientHeight || _document2.default.body.clientHeight;
4448			}
4449
4450			if (newHeight && parentWidth) {
4451				t.container.style.width = parentWidth + 'px';
4452				t.container.style.height = newHeight + 'px';
4453
4454				t.node.style.width = '100%';
4455				t.node.style.height = '100%';
4456
4457				if (t.isVideo && t.media.setSize) {
4458					t.media.setSize(parentWidth, newHeight);
4459				}
4460
4461				var layerChildren = t.layers.children;
4462				for (var i = 0, total = layerChildren.length; i < total; i++) {
4463					layerChildren[i].style.width = '100%';
4464					layerChildren[i].style.height = '100%';
4465				}
4466			}
4467		}
4468	}, {
4469		key: 'setFillMode',
4470		value: function setFillMode() {
4471			var t = this;
4472
4473			var parent = void 0,
4474			    isIframe = false;
4475
4476			try {
4477				if (_window2.default.self !== _window2.default.top) {
4478					isIframe = true;
4479					parent = _window2.default.frameElement;
4480				} else {
4481					parent = t.outerContainer;
4482				}
4483			} catch (e) {
4484				parent = t.outerContainer;
4485			}
4486
4487			var parentStyles = getComputedStyle(parent);
4488
4489			if (t.node.style.height !== 'none' && t.node.style.height !== t.height) {
4490				t.node.style.height = 'auto';
4491			}
4492			if (t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width) {
4493				t.node.style.maxWidth = 'none';
4494			}
4495
4496			if (t.node.style.maxHeight !== 'none' && t.node.style.maxHeight !== t.height) {
4497				t.node.style.maxHeight = 'none';
4498			}
4499
4500			if (t.node.currentStyle) {
4501				if (t.node.currentStyle.height === '100%') {
4502					t.node.currentStyle.height = 'auto';
4503				}
4504				if (t.node.currentStyle.maxWidth === '100%') {
4505					t.node.currentStyle.maxWidth = 'none';
4506				}
4507				if (t.node.currentStyle.maxHeight === '100%') {
4508					t.node.currentStyle.maxHeight = 'none';
4509				}
4510			}
4511
4512			if (!isIframe && !parseFloat(parentStyles.width)) {
4513				parent.style.width = t.media.offsetWidth + 'px';
4514			}
4515
4516			if (!isIframe && !parseFloat(parentStyles.height)) {
4517				parent.style.height = t.media.offsetHeight + 'px';
4518			}
4519
4520			parentStyles = getComputedStyle(parent);
4521
4522			var parentWidth = parseFloat(parentStyles.width),
4523			    parentHeight = parseFloat(parentStyles.height);
4524
4525			t.setDimensions('100%', '100%');
4526
4527			var poster = t.container.querySelector('.' + t.options.classPrefix + 'poster>img');
4528			if (poster) {
4529				poster.style.display = '';
4530			}
4531
4532			var targetElement = t.container.querySelectorAll('object, embed, iframe, video'),
4533			    initHeight = t.height,
4534			    initWidth = t.width,
4535			    scaleX1 = parentWidth,
4536			    scaleY1 = initHeight * parentWidth / initWidth,
4537			    scaleX2 = initWidth * parentHeight / initHeight,
4538			    scaleY2 = parentHeight,
4539			    bScaleOnWidth = scaleX2 > parentWidth === false,
4540			    finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2),
4541			    finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2),
4542			    width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px',
4543			    height = bScaleOnWidth ? finalHeight + 'px' : parentHeight + 'px';
4544
4545			for (var i = 0, total = targetElement.length; i < total; i++) {
4546				targetElement[i].style.height = height;
4547				targetElement[i].style.width = width;
4548				if (t.media.setSize) {
4549					t.media.setSize(width, height);
4550				}
4551
4552				targetElement[i].style.marginLeft = Math.floor((parentWidth - finalW
4552idth) / 2) + 'px';
4553				targetElement[i].style.marginTop = 0;
4554			}
4555		}
4556	}, {
4557		key: 'setDimensions',
4558		value: function setDimensions(width, height) {
4559			var t = this;
4560
4561			width = (0, _general.isString)(width) && width.indexOf('%') > -1 ? width : parseFloat(width) + 'px';
4562			height = (0, _general.isString)(height) && height.indexOf('%') > -1 ? height : parseFloat(height) + 'px';
4563
4564			t.container.style.width = width;
4565			t.container.style.height = height;
4566
4567			var layers = t.layers.children;
4568			for (var i = 0, total = layers.length; i < total; i++) {
4569				layers[i].style.width = width;
4570				layers[i].style.height = height;
4571			}
4572		}
4573	}, {
4574		key: 'setControlsSize',
4575		value: function setControlsSize() {
4576			var t = this;
4577
4578			if (!dom.visible(t.container)) {
4579				return;
4580			}
4581
4582			if (t.rail && dom.visible(t.rail)) {
4583				var totalStyles = t.total ? getComputedStyle(t.total, null) : null,
4584				    totalMargin = totalStyles ? parseFloat(totalStyles.marginLeft) + parseFloat(totalStyles.marginRight) : 0,
4585				    railStyles = getComputedStyle(t.rail),
4586				    railMargin = parseFloat(railStyles.marginLeft) + parseFloat(railStyles.marginRight);
4587
4588				var siblingsWidth = 0;
4589
4590				var siblings = dom.siblings(t.rail, function (el) {
4591					return el !== t.rail;
4592				}),
4593				    total = siblings.length;
4594				for (var i = 0; i < total; i++) {
4595					siblingsWidth += siblings[i].offsetWidth;
4596				}
4597
4598				siblingsWidth += totalMargin + (totalMargin === 0 ? railMargin * 2 : railMargin) + 1;
4599
4600				t.container.style.minWidth = siblingsWidth + 'px';
4601
4602				var event = (0, _general.createEvent)('controlsresize', t.container);
4603				t.container.dispatchEvent(event);
4604			} else {
4605				var children = t.controls.children;
4606				var minWidth = 0;
4607
4608				for (var _i = 0, _total = children.length; _i < _total; _i++) {
4609					minWidth += children[_i].offsetWidth;
4610				}
4611
4612				t.container.style.minWidth = minWidth + 'px';
4613			}
4614		}
4615	}, {
4616		key: 'addControlElement',
4617		value: function addControlElement(element, key) {
4618
4619			var t = this;
4620
4621			if (t.featurePosition[key] !== undefined) {
4622				var child = t.controls.children[t.featurePosition[key] - 1];
4623				child.parentNode.insertBefore(element, child.nextSibling);
4624			} else {
4625				t.controls.appendChild(element);
4626				var children = t.controls.children;
4627				for (var i = 0, total = children.length; i < total; i++) {
4628					if (element === children[i]) {
4629						t.featurePosition[key] = i;
4630						break;
4631					}
4632				}
4633			}
4634		}
4635	}, {
4636		key: 'createIframeLayer',
4637		value: function createIframeLayer() {
4638			var t = this;
4639
4640			if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.indexOf('iframe') > -1 && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) {
4641
4642				var layer = _document2.default.createElement('div'),
4643				    target = _document2.default.getElementById(t.media.id + '_' + t.media.rendererName);
4644
4645				layer.id = t.media.id + '-iframe-overlay';
4646				layer.className = t.options.classPrefix + 'iframe-overlay';
4647				layer.addEventListener('click', function (e) {
4648					if (t.options.clickToPlayPause) {
4649						if (t.paused) {
4650							t.play();
4651						} else {
4652							t.pause();
4653						}
4654
4655						e.preventDefault();
4656						e.stopPropagation();
4657					}
4658				});
4659
4660				target.parentNode.insertBefore(layer, target);
4661			}
4662		}
4663	}, {
4664		key: 'resetSize',
4665		value: function resetSize() {
4666			var t = this;
4667
4668			setTimeout(function () {
4669				t.setPlayerSize(t.width, t.height);
4670				t.setControlsSize();
4671			}, 50);
4672		}
4673	}, {
4674		key: 'setPoster',
4675		value: function setPoster(url) {
4676			var t = this;
4677
4678			var posterDiv = t.container.querySelector('.' + t.options.classPrefix + 'poster');
4679
4680			if (!posterDiv) {
4681				posterDiv = _document2.default.createElement('div');
4682				posterDiv.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';
4683				t.layers.appendChild(posterDiv);
4684			}
4685
4686			var posterImg = posterDiv.querySelector('img');
4687
4688			if (!posterImg && url) {
4689				posterImg = _document2.default.createElement('img');
4690				posterImg.className = t.options.classPrefix + 'poster-img';
4691				posterImg.width = '100%';
4692				posterImg.height = '100%';
4693				posterDiv.style.display = '';
vendor: 10,660 bytes, lines 4694-5067
4694				posterDiv.appendChild(posterImg);
4695			}
4696
4697			if (url) {
4698				posterImg.setAttribute('src', url);
4699				posterDiv.style.backgroundImage = 'url("' + url + '")';
4700				posterDiv.style.display = '';
4701			} else if (posterImg) {
4702				posterDiv.style.backgroundImage = 'none';
4703				posterDiv.style.display = 'none';
4704				posterImg.remove();
4705			} else {
4706				posterDiv.style.display = 'none';
4707			}
4708		}
4709	}, {
4710		key: 'changeSkin',
4711		value: function changeSkin(className) {
4712			var t = this;
4713
4714			t.container.className = t.options.classPrefix + 'container ' + className;
4715			t.setPlayerSize(t.width, t.height);
4716			t.setControlsSize();
4717		}
4718	}, {
4719		key: 'globalBind',
4720		value: function globalBind(events, callback) {
4721			var t = this,
4722			    doc = t.node ? t.node.ownerDocument : _document2.default;
4723
4724			events = (0, _general.splitEvents)(events, t.id);
4725			if (events.d) {
4726				var eventList = events.d.split(' ');
4727				for (var i = 0, total = eventList.length; i < total; i++) {
4728					eventList[i].split('.').reduce(function (part, e) {
4729						doc.addEventListener(e, callback, false);
4730						return e;
4731					}, '');
4732				}
4733			}
4734			if (events.w) {
4735				var _eventList = events.w.split(' ');
4736				for (var _i2 = 0, _total2 = _eventList.length; _i2 < _total2; _i2++) {
4737					_eventList[_i2].split('.').reduce(function (part, e) {
4738						_window2.default.addEventListener(e, callback, false);
4739						return e;
4740					}, '');
4741				}
4742			}
4743		}
4744	}, {
4745		key: 'globalUnbind',
4746		value: function globalUnbind(events, callback) {
4747			var t = this,
4748			    doc = t.node ? t.node.ownerDocument : _document2.default;
4749
4750			events = (0, _general.splitEvents)(events, t.id);
4751			if (events.d) {
4752				var eventList = events.d.split(' ');
4753				for (var i = 0, total = eventList.length; i < total; i++) {
4754					eventList[i].split('.').reduce(function (part, e) {
4755						doc.removeEventListener(e, callback, false);
4756						return e;
4757					}, '');
4758				}
4759			}
4760			if (events.w) {
4761				var _eventList2 = events.w.split(' ');
4762				for (var _i3 = 0, _total3 = _eventList2.length; _i3 < _total3; _i3++) {
4763					_eventList2[_i3].split('.').reduce(function (part, e) {
4764						_window2.default.removeEventListener(e, callback, false);
4765						return e;
4766					}, '');
4767				}
4768			}
4769		}
4770	}, {
4771		key: 'buildposter',
4772		value: function buildposter(player, controls, layers, media) {
4773			var t = this,
4774			    poster = _document2.default.createElement('div');
4775
4776			poster.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';
4777			layers.appendChild(poster);
4778
4779			var posterUrl = media.originalNode.getAttribute('poster');
4780
4781			if (player.options.poster !== '') {
4782				if (posterUrl && _constants.IS_IOS) {
4783					media.originalNode.removeAttribute('poster');
4784				}
4785				posterUrl = player.options.poster;
4786			}
4787
4788			if (posterUrl) {
4789				t.setPoster(posterUrl);
4790			} else if (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') {
4791				t.setPoster(t.media.renderer.getPosterUrl());
4792			} else {
4793				poster.style.display = 'none';
4794			}
4795
4796			media.addEventListener('play', function () {
4797				poster.style.display = 'none';
4798			});
4799
4800			media.addEventListener('playing', function () {
4801				poster.style.display = 'none';
4802			});
4803
4804			if (player.options.showPosterWhenEnded && player.options.autoRewind) {
4805				media.addEventListener('ended', function () {
4806					poster.style.display = '';
4807				});
4808			}
4809
4810			media.addEventListener('error', function () {
4811				poster.style.display = 'none';
4812			});
4813
4814			if (player.options.showPosterWhenPaused) {
4815				media.addEventListener('pause', function () {
4816					if (!player.ended) {
4817						poster.style.display = '';
4818					}
4819				});
4820			}
4821		}
4822	}, {
4823		key: 'buildoverlays',
4824		value: function buildoverlays(player, controls, layers, media) {
4825
4826			if (!player.isVideo) {
4827				return;
4828			}
4829
4830			var t = this,
4831			    loading = _document2.default.createElement('div'),
4832			    error = _document2.default.createElement('div'),
4833			    bigPlay = _document2.default.createElement('div');
4834
4835			loading.style.display = 'none';
4836			loading.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
4837			loading.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-loading">' + ('<span class="' + t.options.classPrefix + 'overlay-loading-bg-img"></span>') + '</div>';
4838			layers.appendChild(loading);
4839
4840			error.style.display = 'none';
4841			error.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
4842			error.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-error"></div>';
4843			layers.appendChild(error);
4844
4845			bigPlay.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer ' + t.options.classPrefix + 'overlay-play';
4846			bigPlay.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-button" role="button" tabindex="0" ' + ('aria-label="' + _i18n2.default.t('mejs.play') + '" aria-pressed="false"></div>');
4847			bigPlay.addEventListener('click', function () {
4848				if (t.options.clickToPlayPause) {
4849
4850					var button = t.container.querySelector('.' + t.options.classPrefix + 'overlay-button'),
4851					    pressed = button.getAttribute('aria-pressed');
4852
4853					if (t.paused) {
4854						t.play();
4855					} else {
4856						t.pause();
4857					}
4858
4859					button.setAttribute('aria-pressed', !!pressed);
4860					t.container.focus();
4861				}
4862			});
4863
4864			bigPlay.addEventListener('keydown', function (e) {
4865				var keyPressed = e.keyCode || e.which || 0;
4866
4867				if (keyPressed === 13 || _constants.IS_FIREFOX && keyPressed === 32) {
4868					var event = (0, _general.createEvent)('click', bigPlay);
4869					bigPlay.dispatchEvent(event);
4870					return false;
4871				}
4872			});
4873
4874			layers.appendChild(bigPlay);
4875
4876			if (t.media.rendererName !== null && (/(youtube|facebook)/i.test(t.media.rendererName) && !(t.media.originalNode.getAttribute('poster') || player.options.poster || typeof t.media.renderer.getPosterUrl === 'function' && t.media.renderer.getPosterUrl()) || _constants.IS_STOCK_ANDROID || t.media.originalNode.getAttribute('autoplay'))) {
4877				bigPlay.style.display = 'none';
4878			}
4879
4880			var hasError = false;
4881
4882			media.addEventListener('play', function () {
4883				bigPlay.style.display = 'none';
4884				loading.style.display = 'none';
4885				error.style.display = 'none';
4886				hasError = false;
4887			});
4888			media.addEventListener('playing', function () {
4889				bigPlay.style.display = 'none';
4890				loading.style.display = 'none';
4891				error.style.display = 'none';
4892				hasError = false;
4893			});
4894			media.addEventListener('seeking', function () {
4895				bigPlay.style.display = 'none';
4896				loading.style.display = '';
4897				hasError = false;
4898			});
4899			media.addEventListener('seeked', function () {
4900				bigPlay.style.display = t.paused && !_constants.IS_STOCK_ANDROID ? '' : 'none';
4901				loading.style.display = 'none';
4902				hasError = false;
4903			});
4904			media.addEventListener('pause', function () {
4905				loading.style.display = 'none';
4906				if (!_constants.IS_STOCK_ANDROID && !hasError) {
4907					bigPlay.style.display = '';
4908				}
4909				hasError = false;
4910			});
4911			media.addEventListener('waiting', function () {
4912				loading.style.display = '';
4913				hasError = false;
4914			});
4915
4916			media.addEventListener('loadeddata', function () {
4917				loading.style.display = '';
4918
4919				if (_constants.IS_ANDROID) {
4920					media.canplayTimeout = setTimeout(function () {
4921						if (_document2.default.createEvent) {
4922							var evt = _document2.default.createEvent('HTMLEvents');
4923							evt.initEvent('canplay', true, true);
4924							return media.dispatchEvent(evt);
4925						}
4926					}, 300);
4927				}
4928				hasError = false;
4929			});
4930			media.addEventListener('canplay', function () {
4931				loading.style.display = 'none';
4932
4933				clearTimeout(media.canplayTimeout);
4934				hasError = false;
4935			});
4936
4937			media.addEventListener('error', function (e) {
4938				t._handleError(e, t.media, t.node);
4939				loading.style.display = 'none';
4940				bigPlay.style.display = 'none';
4941				hasError = true;
4942			});
4943
4944			media.addEventListener('loadedmetadata', function () {
4945				if (!t.controlsEnabled) {
4946					t.enableControls();
4947				}
4948			});
4949
4950			media.addEventListener('keydown', function (e) {
4951				t.onkeydown(player, media, e);
4952				hasError = false;
4953			});
4954		}
4955	}, {
4956		key: 'buildkeyboard',
4957		value: function buildkeyboard(player, controls, layers, media) {
4958
4959			var t = this;
4960
4961			t.container.addEventListener('keydown', function () {
4962				t.keyboardAction = true;
4963			});
4964
4965			t.globalKeydownCallback = function (event) {
4966				var container = _document2.default.activeElement.closest('.' + t.options.classPrefix + 'container'),
4967				    target = t.media.closest('.' + t.options.classPrefix + 'container');
4968				t.hasFocus = !!(container && target && container.id === target.id);
4969				return t.onkeydown(player, media, event);
4970			};
4971
4972			t.globalClickCallback = function (event) {
4973				t.hasFocus = !!event.target.closest('.' + t.options.classPrefix + 'container');
4974			};
4975
4976			t.globalBind('keydown', t.globalKeydownCallback);
4977
4978			t.globalBind('click', t.globalClickCallback);
4979		}
4980	}, {
4981		key: 'onkeydown',
4982		value: function onkeydown(player, media, e) {
4983
4984			if (player.hasFocus && player.options.enableKeyboard) {
4985				for (var i = 0, total = player.options.keyActions.length; i < total; i++) {
4986					var keyAction = player.options.keyActions[i];
4987
4988					for (var j = 0, jl = keyAction.keys.length; j < jl; j++) {
4989						if (e.keyCode === keyAction.keys[j]) {
4990							keyAction.action(player, media, e.keyCode, e);
4991							e.preventDefault();
4992							e.stopPropagation();
4993							return;
4994						}
4995					}
4996				}
4997			}
4998
4999			return true;
5000		}
5001	}, {
5002		key: 'play',
5003		value: function play() {
5004			this.proxy.play();
5005		}
5006	}, {
5007		key: 'pause',
5008		value: function pause() {
5009			this.proxy.pause();
5010		}
5011	}, {
5012		key: 'load',
5013		value: function load() {
5014			this.proxy.load();
5015		}
5016	}, {
5017		key: 'setCurrentTime',
5018		value: function setCurrentTime(time) {
5019			this.proxy.setCurrentTime(time);
5020		}
5021	}, {
5022		key: 'getCurrentTime',
5023		value: function getCurrentTime() {
5024			return this.proxy.currentTime;
5025		}
5026	}, {
5027		key: 'getDuration',
5028		value: function getDuration() {
5029			return this.proxy.duration;
5030		}
5031	}, {
5032		key: 'setVolume',
5033		value: function setVolume(volume) {
5034			this.proxy.volume = volume;
5035		}
5036	}, {
5037		key: 'getVolume',
5038		value: function getVolume() {
5039			return this.proxy.getVolume();
5040		}
5041	}, {
5042		key: 'setMuted',
5043		value: function setMuted(value) {
5044			this.proxy.setMuted(value);
5045		}
5046	}, {
5047		key: 'setSrc',
5048		value: function setSrc(src) {
5049			if (!this.controlsEnabled) {
5050				this.enableControls();
5051			}
5052			this.proxy.setSrc(src);
5053		}
5054	}, {
5055		key: 'getSrc',
5056		value: function getSrc() {
5057			return this.proxy.getSrc();
5058		}
5059	}, {
5060		key: 'canPlayType',
5061		value: function canPlayType(type) {
5062			return this.proxy.canPlayType(type);
5063		}
5064	}, {
5065		key: 'remove',
5066		value: function remove() {
5067			var t = this,
5068			    rendererName = t.media.rendererName,
5069			    src = t.media.originalNode.src;
5070
5071			for (var featureIndex in t.options.features) {
5072				var feature = t.options.features[featureIndex];
5073				if (t['clean' + feature]) {
5074					try {
5075						t['clean' + feature](t, t.layers, t.controls, t.media);
5076					} catch (e) {
5077						console.error('error cleaning ' + feature, e);
5078					}
5079				}
5080			}
5081
5082			var nativeWidth = t.node.getAttribute('width'),
5083			    nativeHeight = t.node.getAttribute('height');
5084
5085			if (nativeWidth) {
5086				if (nativeWidth.indexOf('%') === -1) {
5087					nativeWidth = nativeWidth + 'px';
5088				}
5089			} else {
5090				nativeWidth = 'auto';
5091			}
5092
5093			if (nativeHeight) {
5094				if (nativeHeight.indexOf('%') === -1) {
5095					nativeHeight = nativeHeight + 'px';
5096				}
5097			} else {
5098				nativeHeight = 'auto';
5099			}
5100
5101			t.node.style.width = nativeWidth;
5102			t.node.style.height = nativeHeight;
5103
5104			t.setPlayerSize(0, 0);
5105
5106			if (!t.isDynamic) {
5107				(function () {
5108					t.node.setAttribute('controls', true);
5109					t.node.setAttribute('id', t.node.getAttribute('id').replace('_' + rendererName, '').replace('_from_mejs', ''));
5110					var poster = t.container.querySelector('.' + t.options.classPrefix + 'poster>img');
5111					if (poster) {
5112						t.node.setAttribute('poster', poster.src);
5113					}
5114
5115					delete t.node.autoplay;
5116
5117					if (t.media.canPlayType((0, _media.getTypeFromFile)(src)) !== '') {
5118						t.node.setAttribute('src', src);
5119					}
5120
5121					if (~rendererName.indexOf('iframe')) {
5122						var layer = _document2.default.getElementById(t.media.id + '-iframe-overlay');
5123						layer.remove();
5124					}
5125
5126					var node = t.node.cloneNode();
5127					node.style.display = '';
5128					t.container.parentNode.insertBefore(node, t.container);
5129					t.node.remove();
5130
5131					if (t.mediaFiles) {
5132						for (var i = 0, total = t.mediaFiles.length; i < total; i++) {
5133							var source = _document2.default.createElement('source');
5134							source.setAttribute('src', t.mediaFiles[i].src);
5135							source.setAttribute('type', t.mediaFiles[i].type);
5136							node.appendChild(source);
5137						}
5138					}
5139					if (t.trackFiles) {
5140						var _loop3 = function _loop3(_i4, _total4) {
5141							var track = t.trackFiles[_i4];
5142							var newTrack = _document2.default.createElement('track');
5143							newTrack.kind = track.kind;
5144							newTrack.label = track.label;
5145							newTrack.srclang = track.srclang;
5146							newTrack.src = track.src;
5147
5148							node.appendChild(newTrack);
5149							newTrack.addEventListener('load', function () {
5150								this.mode = 'showing';
5151								node.textTracks[_i4].mode = 'showing';
5152							});
5153						};
5154
5155						for (var _i4 = 0, _total4 = t.trackFiles.length; _i4 < _total4; _i4++) {
5156							_loop3(_i4, _total4);
5157						}
5158					}
5159
5160					delete t.node;
5161					delete t.mediaFiles;
5162					delete t.trackFiles;
5163				})();
5164			} else {
5165				t.container.parentNode.insertBefore(t.node, t.container);
5166			}
5167
5168			if (typeof t.media.renderer.destroy === 'function') {
5169				t.media.renderer.destroy();
5170			}
5171
5172			delete _mejs2.default.players[t.id];
5173
5174			if (_typeof(t.container) === 'object') {
5175				var offscreen = t.container.parentNode.querySelector('.' + t.options.classPrefix + 'offscreen');
5176				offscreen.remove();
5177				t.container.remove();
5178			}
5179			t.globalUnbind('resize', t.globalResizeCallback);
5180			t.globalUnbind('keydown', t.globalKeydownCallback);
5181			t.globalUnbind('click', t.globalClickCallback);
5182
5183			delete t.media.player;
5184		}
5185	}, {
5186		key: 'paused',
5187		get: function get() {
5188			return this.proxy.paused;
5189		}
5190	}, {
5191		key: 'muted',
5192		get: function get() {
5193			return this.proxy.muted;
5194		},
5195		set: function set(muted) {
5196			this.setMuted(muted);
5197		}
5198	}, {
5199		key: 'ended',
5200		get: function get() {
5201			return this.proxy.ended;
5202		}
5203	}, {
5204		key: 'readyState',
5205		get: function get() {
5206			return this.proxy.readyState;
5207		}
5208	}, {
5209		key: 'currentTime',
5210		set: function set(time) {
5211			this.setCurrentTime(time);
5212		},
5213		get: function get() {
5214			return this.getCurrentTime();
5215		}
5216	}, {
5217		key: 'duration',
5218		get: function get() {
5219			return this.getDuration();
5220		}
5221	}, {
5222		key: 'volume',
5223		set: function set(volume) {
5224			this.setVolume(volume);
5225		},
5226		get: function get() {
5227			return this.getVolume();
5228		}
5229	}, {
5230		key: 'src',
5231		set: function set(src) {
5232			this.setSrc(src);
5233		},
5234		get: function get() {
vendor: 10,189 bytes, lines 5235-5616
5235			return this.getSrc();
5236		}
5237	}]);
5238
5239	return MediaElementPlayer;
5240}();
5241
5242_window2.default.MediaElementPlayer = MediaElementPlayer;
5243_mejs2.default.MediaElementPlayer = MediaElementPlayer;
5244
5245exports.default = MediaElementPlayer;
5246
5247},{"17":17,"2":2,"25":25,"26":26,"27":27,"28":28,"3":3,"30":30,"5":5,"6":6,"7":7}],17:[function(_dereq_,module,exports){
5248'use strict';
5249
5250Object.defineProperty(exports, "__esModule", {
5251	value: true
5252});
5253
5254var _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; }; }();
5255
5256var _window = _dereq_(3);
5257
5258var _window2 = _interopRequireDefault(_window);
5259
5260function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5261
5262function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5263
5264var DefaultPlayer = function () {
5265	function DefaultPlayer(player) {
5266		_classCallCheck(this, DefaultPlayer);
5267
5268		this.media = player.media;
5269		this.isVideo = player.isVideo;
5270		this.classPrefix = player.options.classPrefix;
5271		this.createIframeLayer = function () {
5272			return player.createIframeLayer();
5273		};
5274		this.setPoster = function (url) {
5275			return player.setPoster(url);
5276		};
5277		return this;
5278	}
5279
5280	_createClass(DefaultPlayer, [{
5281		key: 'play',
5282		value: function play() {
5283			this.media.play();
5284		}
5285	}, {
5286		key: 'pause',
5287		value: function pause() {
5288			this.media.pause();
5289		}
5290	}, {
5291		key: 'load',
5292		value: function load() {
5293			var t = this;
5294
5295			if (!t.isLoaded) {
5296				t.media.load();
5297			}
5298
5299			t.isLoaded = true;
5300		}
5301	}, {
5302		key: 'setCurrentTime',
5303		value: function setCurrentTime(time) {
5304			this.media.setCurrentTime(time);
5305		}
5306	}, {
5307		key: 'getCurrentTime',
5308		value: function getCurrentTime() {
5309			return this.media.currentTime;
5310		}
5311	}, {
5312		key: 'getDuration',
5313		value: function getDuration() {
5314			return this.media.getDuration();
5315		}
5316	}, {
5317		key: 'setVolume',
5318		value: function setVolume(volume) {
5319			this.media.setVolume(volume);
5320		}
5321	}, {
5322		key: 'getVolume',
5323		value: function getVolume() {
5324			return this.media.getVolume();
5325		}
5326	}, {
5327		key: 'setMuted',
5328		value: function setMuted(value) {
5329			this.media.setMuted(value);
5330		}
5331	}, {
5332		key: 'setSrc',
5333		value: function setSrc(src) {
5334			var t = this,
5335			    layer = document.getElementById(t.media.id + '-iframe-overlay');
5336
5337			if (layer) {
5338				layer.remove();
5339			}
5340
5341			t.media.setSrc(src);
5342			t.createIframeLayer();
5343			if (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') {
5344				t.setPoster(t.media.renderer.getPosterUrl());
5345			}
5346		}
5347	}, {
5348		key: 'getSrc',
5349		value: function getSrc() {
5350			return this.media.getSrc();
5351		}
5352	}, {
5353		key: 'canPlayType',
5354		value: function canPlayType(type) {
5355			return this.media.canPlayType(type);
5356		}
5357	}, {
5358		key: 'paused',
5359		get: function get() {
5360			return this.media.paused;
5361		}
5362	}, {
5363		key: 'muted',
5364		set: function set(muted) {
5365			this.setMuted(muted);
5366		},
5367		get: function get() {
5368			return this.media.muted;
5369		}
5370	}, {
5371		key: 'ended',
5372		get: function get() {
5373			return this.media.ended;
5374		}
5375	}, {
5376		key: 'readyState',
5377		get: function get() {
5378			return this.media.readyState;
5379		}
5380	}, {
5381		key: 'currentTime',
5382		set: function set(time) {
5383			this.setCurrentTime(time);
5384		},
5385		get: function get() {
5386			return this.getCurrentTime();
5387		}
5388	}, {
5389		key: 'duration',
5390		get: function get() {
5391			return this.getDuration();
5392		}
5393	}, {
5394		key: 'volume',
5395		set: function set(volume) {
5396			this.setVolume(volume);
5397		},
5398		get: function get() {
5399			return this.getVolume();
5400		}
5401	}, {
5402		key: 'src',
5403		set: function set(src) {
5404			this.setSrc(src);
5405		},
5406		get: function get() {
5407			return this.getSrc();
5408		}
5409	}]);
5410
5411	return DefaultPlayer;
5412}();
5413
5414exports.default = DefaultPlayer;
5415
5416
5417_window2.default.DefaultPlayer = DefaultPlayer;
5418
5419},{"3":3}],18:[function(_dereq_,module,exports){
5420'use strict';
5421
5422var _window = _dereq_(3);
5423
5424var _window2 = _interopRequireDefault(_window);
5425
5426var _mejs = _dereq_(7);
5427
5428var _mejs2 = _interopRequireDefault(_mejs);
5429
5430var _player = _dereq_(16);
5431
5432var _player2 = _interopRequireDefault(_player);
5433
5434function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5435
5436if (typeof jQuery !== 'undefined') {
5437	_mejs2.default.$ = _window2.default.jQuery = _window2.default.$ = jQuery;
5438} else if (typeof Zepto !== 'undefined') {
5439	_mejs2.default.$ = _window2.default.Zepto = _window2.default.$ = Zepto;
5440} else if (typeof ender !== 'undefined') {
5441	_mejs2.default.$ = _window2.default.ender = _window2.default.$ = ender;
5442}
5443
5444(function ($) {
5445	if (typeof $ !== 'undefined') {
5446		$.fn.mediaelementplayer = function (options) {
5447			if (options === false) {
5448				this.each(function () {
5449					var player = $(this).data('mediaelementplayer');
5450					if (player) {
5451						player.remove();
5452					}
5453					$(this).removeData('mediaelementplayer');
5454				});
5455			} else {
5456				this.each(function () {
5457					$(this).data('mediaelementplayer', new _player2.default(this, options));
5458				});
5459			}
5460			return this;
5461		};
5462
5463		$(document).ready(function () {
5464			$('.' + _mejs2.default.MepDefaults.classPrefix + 'player').mediaelementplayer();
5465		});
5466	}
5467})(_mejs2.default.$);
5468
5469},{"16":16,"3":3,"7":7}],19:[function(_dereq_,module,exports){
5470'use strict';
5471
5472var _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; };
5473
5474var _window = _dereq_(3);
5475
5476var _window2 = _interopRequireDefault(_window);
5477
5478var _mejs = _dereq_(7);
5479
5480var _mejs2 = _interopRequireDefault(_mejs);
5481
5482var _renderer = _dereq_(8);
5483
5484var _general = _dereq_(27);
5485
5486var _media = _dereq_(28);
5487
5488var _constants = _dereq_(25);
5489
5490var _dom = _dereq_(26);
5491
5492function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5493
5494var NativeDash = {
5495
5496	promise: null,
5497
5498	load: function load(settings) {
5499		if (typeof dashjs !== 'undefined') {
5500			NativeDash.promise = new Promise(function (resolve) {
5501				resolve();
5502			}).then(function () {
5503				NativeDash._createPlayer(settings);
5504			});
5505		} else {
5506			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js';
5507
5508			NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path);
5509			NativeDash.promise.then(function () {
5510				NativeDash._createPlayer(settings);
5511			});
5512		}
5513
5514		return NativeDash.promise;
5515	},
5516
5517	_createPlayer: function _createPlayer(settings) {
5518		var player = dashjs.MediaPlayer().create();
5519		_window2.default['__ready__' + settings.id](player);
5520		return player;
5521	}
5522};
5523
5524var DashNativeRenderer = {
5525	name: 'native_dash',
5526	options: {
5527		prefix: 'native_dash',
5528		dash: {
5529			path: 'https://cdn.dashjs.org/latest/dash.all.min.js',
5530			debug: false,
5531			drm: {},
5532
5533			robustnessLevel: ''
5534		}
5535	},
5536
5537	canPlayType: function canPlayType(type) {
5538		return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1;
5539	},
5540
5541	create: function create(mediaElement, options, mediaFiles) {
5542
5543		var originalNode = mediaElement.originalNode,
5544		    id = mediaElement.id + '_' + options.prefix,
5545		    autoplay = originalNode.autoplay,
5546		    children = originalNode.children;
5547
5548		var node = null,
5549		    dashPlayer = null;
5550
5551		originalNode.removeAttribute('type');
5552		for (var i = 0, total = children.length; i < total; i++) {
5553			children[i].removeAttribute('type');
5554		}
5555
5556		node = originalNode.cloneNode(true);
5557		options = Object.assign(options, mediaElement.options);
5558
5559		var props = _mejs2.default.html5media.properties,
5560		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
5561		    attachNativeEvents = function attachNativeEvents(e) {
5562			if (e.type !== 'error') {
5563				var _event = (0, _general.createEvent)(e.type, mediaElement);
5564				mediaElement.dispatchEvent(_event);
5565			}
5566		},
5567		    assignGettersSetters = function assignGettersSetters(propName) {
5568			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5569
5570			node['get' + capName] = function () {
5571				return dashPlayer !== null ? node[propName] : null;
5572			};
5573
5574			node['set' + capName] = function (value) {
5575				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
5576					if (propName === 'src') {
5577						var source = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
5578						node[propName] = source;
5579						if (dashPlayer !== null) {
5580							dashPlayer.reset();
5581							for (var _i = 0, _total = events.length; _i < _total; _i++) {
5582								node.removeEventListener(events[_i], attachNativeEvents);
5583							}
5584							dashPlayer = NativeDash._createPlayer({
5585								options: options.dash,
5586								id: id
5587							});
5588
5589							if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(value.drm) === 'object') {
5590								dashPlayer.setProtectionData(value.drm);
5591								if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
5592									dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
5593								}
5594							}
5595							dashPlayer.attachSource(source);
5596							if (autoplay) {
5597								dashPlayer.play();
5598							}
5599						}
5600					} else {
5601						node[propName] = value;
5602					}
5603				}
5604			};
5605		};
5606
5607		for (var _i2 = 0, _total2 = props.length; _i2 < _total2; _i2++) {
5608			assignGettersSetters(props[_i2]);
5609		}
5610
5611		_window2.default['__ready__' + id] = function (_dashPlayer) {
5612			mediaElement.dashPlayer = dashPlayer = _dashPlayer;
5613
5614			var dashEvents = dashjs.MediaPlayer.events,
5615			    assignEvents = function assignEvents(eventName) {
5616				if (eventName === 'loadedmetadata') {
5617					dashPlayer.getDebug().setLogToBrowserConsole(options.dash.debug);
5618					dashPlayer.initialize();
5619					dashPlayer.setScheduleWhilePaused(false);
5620					dashPlayer.setFastSwitchEnabled(true);
5621					dashPlayer.attachView(node);
5622					dashPlayer.setAutoPlay(false);
5623
5624					if (_typeof(options.dash.drm) === 'object' && !_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) {
5625						dashPlayer.setProtectionData(options.dash.drm);
5626						if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
5627							dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
5628						}
5629					}
5630					dashPlayer.attachSource(node.getSrc());
5631				}
5632
5633				node.addEventListener(eventName, attachNativeEvents);
5634			};
5635
5636			for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
5637				assignEvents(events[_i3]);
5638			}
5639
5640			var assignMdashEvents = function assignMdashEvents(name, data) {
5641				if (name.toLowerCase() === 'error') {
5642					mediaElement.generateError(data.message, node.src);
5643					console.error(data);
5644				} else {
5645					var _event2 = (0, _general.createEvent)(name, mediaElement);
5646					_event2.data = data;
5647					mediaElement.dispatchEvent(_event2);
5648				}
5649			};
5650
5651			for (var eventType in dashEvents) {
5652				if (dashEvents.hasOwnProperty(eventType)) {
5653					dashPlayer.on(dashEvents[eventType], function (e) {
5654						for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
5655							args[_key - 1] = arguments[_key];
5656						}
5657
5658						return assignMdashEvents(e.type, args);
5659					});
5660				}
5661			}
5662		};
5663
5664		if (mediaFiles && mediaFiles.length > 0) {
5665			for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
5666				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
5667					node.setAttribute('src', mediaFiles[_i4].src);
5668					if (typeof mediaFiles[_i4].drm !== 'undefined') {
5669						options.dash.drm = mediaFiles[_i4].drm;
5670					}
5671					break;
5672				}
5673			}
5674		}
5675
5676		node.setAttribute('id', id);
5677
5678		originalNode.parentNode.insertBefore(node, originalNode);
5679		originalNode.autoplay = false;
5680		originalNode.style.display = 'none';
5681
5682		node.setSize = function (width, height) {
5683			node.style.width = width + 'px';
5684			node.style.height = height + 'px';
5685			return node;
5686		};
5687
5688		node.hide = function () {
5689			node.pause();
5690			node.style.display = 'none';
5691			return node;
5692		};
5693
5694		node.show = function () {
5695			node.style.display = '';
5696			return node;
5697		};
5698
5699		node.destroy = function () {
5700			if (dashPlayer !== null) {
5701				dashPlayer.reset();
5702			}
5703		};
5704
5705		var event = (0, _general.createEvent)('rendererready', node);
5706		mediaElement.dispatchEvent(event);
5707
5708		mediaElement.promises.push(NativeDash.load({
5709			options: options.dash,
5710			id: id
5711		}));
5712
5713		return node;
5714	}
5715};
5716
5717_media.typeChecks.push(function (url) {
5718	return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null;
5719});
5720
5721_renderer.renderer.add(DashNativeRenderer);
5722
5723},{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],20:[function(_dereq_,module,exports){
5724'use strict';
5725
5726Object.defineProperty(exports, "__esModule", {
5727	value: true
5728});
5729exports.PluginDetector = undefined;
5730
5731var _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; };
5732
5733var _window = _dereq_(3);
5734
5735var _window2 = _interopRequireDefault(_window);
5736
5737var _document = _dereq_(2);
5738
5739var _document2 = _interopRequireDefault(_document);
5740
5741var _mejs = _dereq_(7);
5742
5743var _mejs2 = _interopRequireDefault(_mejs);
5744
5745var _i18n = _dereq_(5);
5746
5747var _i18n2 = _interopRequireDefault(_i18n);
5748
5749var _renderer = _dereq_(8);
5750
5751var _general = _dereq_(27);
5752
5753var _constants = _dereq_(25);
5754
5755var _media = _dereq_(28);
5756
5757function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5758
5759var PluginDetector = exports.PluginDetector = {
5760	plugins: [],
5761
5762	hasPluginVersion: function hasPluginVersion(plugin, v) {
5763		var pv = PluginDetector.plugins[plugin];
5764		v[1] = v[1] || 0;
5765		v[2] = v[2] || 0;
5766		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];
5767	},
5768
5769	addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
5770		PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
5771	},
5772
5773	detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
5774
5775		var version = [0, 0, 0],
5776		    description = void 0,
5777		    ax = void 0;
5778
5779		if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
5780			description = _constants.NAV.plugins[pluginName].description;
5781			if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
5782				version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.');
5783				for (var i = 0, total = version.length; i < total; i++) {
5784					version[i] = parseInt(version[i].match(/\d+/), 10);
5785				}
5786			}
5787		} else if (_window2.default.ActiveXObject !== undefined) {
5788			try {
5789				ax = new ActiveXObject(activeX);
5790				if (ax) {
5791					version = axDetect(ax);
5792				}
5793			} catch (e) {
5794				
5795			}
5796		}
5797		return version;
5798	}
5799};
5800
5801PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
5802	var version = [],
5803	    d = ax.GetVariable("$version");
5804
5805	if (d) {
5806		d = d.split(" ")[1].split(",");
5807		version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
5808	}
5809	return version;
5810});
5811
5812var FlashMediaElementRenderer = {
5813	create: function create(mediaElement, options, mediaFiles) {
5814
5815		var flash = {};
5816		var isActive = false;
5817
5818		flash.options = options;
5819		flash.id = mediaElement.id + '_' + flash.options.prefix;
5820		flash.mediaElement = mediaElement;
5821		flash.flashState = {};
5822		flash.flashApi = null;
5823		flash.flashApiStack = [];
5824
5825		var props = _mejs2.default.html5media.properties,
5826		    assignGettersSetters = function assignGettersSetters(propName) {
5827			flash.flashState[propName] = null;
5828
5829			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5830
5831			flash['get' + capName] = function () {
5832				if (flash.flashApi !== null) {
5833					if (typeof flash.flashApi['get_' + propName] === 'function') {
5834						var value = flash.flashApi['get_' + propName]();
5835
5836						if (propName === 'buffered') {
5837							return {
5838								start: function start() {
5839									return 0;
5840								},
5841								end: function end() {
5842									return value;
5843								},
5844								length: 1
5845							};
5846						}
5847						return value;
5848					} else {
5849						return null;
5850					}
5851				} else {
5852					return null;
5853				}
5854			};
5855
5856			flash['set' + capName] = function (value) {
5857				if (propName === 'src') {
5858					value = (0, _media.absolutizeUrl)(value);
5859				}
5860
5861				if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
5862					try {
5863						flash.flashApi['set_' + propName](value);
5864					} catch (e) {
5865						
5866					}
5867				} else {
5868					flash.flashApiStack.push({
5869						type: 'set',
5870						propName: propName,
5871						value: value
5872					});
5873				}
5874			};
5875		};
5876
5877		for (var i = 0, total = props.length; i < total; i++) {
5878			assignGettersSetters(props[i]);
5879		}
5880
5881		var methods = _mejs2.default.html5media.methods,
5882		    assignMethods = function assignMethods(methodName) {
5883			flash[methodName] = function () {
5884				if (isActive) {
5885					if (flash.flashApi !== null) {
5886						if (flash.flashApi['fire_' + methodName]) {
5887							try {
5888								flash.flashApi['fire_' + methodName]();
5889							} catch (e) {
5890								
5891							}
5892						} else {
5893							
5894						}
5895					} else {
5896						flash.flashApiStack.push({
5897							type: 'call',
5898							methodName: methodName
5899						});
5900					}
5901				}
5902			};
5903		};
5904		methods.push('stop');
5905		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
5906			assignMethods(methods[_i]);
5907		}
5908
5909		var initEvents = ['rendererready'];
5910
5911		for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
5912			var event = (0, _general.createEvent)(initEvents[_i2], flash);
5913			mediaElement.dispatchEvent(event);
5914		}
5915
5916		_window2.default['__ready__' + flash.id] = function () {
5917
5918			flash.flashReady = true;
5919			flash.flashApi = _document2.default.getElementById('__' + flash.id);
5920
5921			if (flash.flashApiStack.length) {
5922				for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
5923					var stackItem = flash.flashApiStack[_i3];
5924
5925					if (stackItem.type === 'set') {
5926						var propName = stackItem.propName,
5927						    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5928
5929						flash['set' + capName](stackItem.value);
5930					} else if (stackItem.type === 'call') {
5931						flash[stackItem.methodName]();
5932					}
5933				}
5934			}
5935		};
5936
5937		_window2.default['__event__' + flash.id] = function (eventName, message) {
5938			var event = (0, _general.createEvent)(eventName, flash);
5939			if (message) {
5940				try {
5941					event.data = JSON.parse(message);
5942					event.details.data = JSON.parse(message);
5943				} catch (e) {
5944					event.message = message;
5945				}
5946			}
5947
5948			flash.mediaElement.dispatchEvent(event);
5949		};
5950
5951		flash.flashWrapper = _document2.default.createElement('div');
5952
5953		if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) {
5954			flash.options.shimScriptAccess = 'sameDomain';
5955		}
5956
5957		var autoplay = mediaElement.originalNode.autoplay,
5958		    flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess, 'preload=' + (mediaElement.originalNode.getAttribute('preload') || '')],
5959		    isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video',
5960		    flashHeight = isVideo ? mediaElement.originalNode.height : 1,
5961		    flashWidth = isVideo ? mediaElement.originalNode.width : 1;
5962
5963		if (mediaElement.originalNode.getAttribute('src')) {
5964			flashVars.push('src=' + mediaElement.originalNode.getAttribute('src'));
5965		}
5966
5967		if (flash.options.enablePseudoStreaming === true) {
5968			flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam);
5969			flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType);
5970		}
5971
5972		mediaElement.appendChild(flash.flashWrapper);
5973		mediaElement.originalNode.style.display = 'none';
5974
5975		var settings = [];
5976
5977		if (_constants.IS_IE || _constants.IS_EDGE) {
5978			var specialIEContainer = _document2.default.createElement('div');
5979			flash.flashWrapper.appendChild(specialIEContainer);
5980
5981			if (_constants.IS_EDGE) {
5982				settings = ['type="application/x-shockwave-flash"', 'data="' + flash.options.pluginPath + flash.options.filename + '"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
5983			} else {
5984				settings = ['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"', 'codebase="//download.macromedia.com/pub/s
5984hockwave/cabs/flash/swflash.cab"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
5985			}
5986
5987			if (!isVideo) {
5988				settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
5989			}
5990
5991			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>';
5992		} else {
5993
5994			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('&') + '"'];
5995
5996			if (isVideo) {
5997				settings.push('width="${flashWidth}"');
5998				settings.push('height="${flashHeight}"');
5999			} else {
6000				settings.push('style="position: fixed; left: -9999em; top: -9999em;"');
6001			}
6002
6003			flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>';
6004		}
6005
6006		flash.flashNode = flash.flashWrapper.lastChild;
6007
6008		flash.hide = function () {
6009			isActive = false;
6010			if (isVideo) {
6011				flash.flashNode.style.display = 'none';
6012			}
6013		};
6014		flash.show = function () {
6015			isActive = true;
6016			if (isVideo) {
6017				flash.flashNode.style.display = '';
6018			}
6019		};
6020		flash.setSize = function (width, height) {
6021			flash.flashNode.style.width = width + 'px';
6022			flash.flashNode.style.height = height + 'px';
6023
6024			if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') {
6025				flash.flashApi.fire_setSize(width, height);
6026			}
6027		};
6028
6029		flash.destroy = function () {
6030			flash.flashNode.remove();
6031		};
6032
6033		if (mediaFiles && mediaFiles.length > 0) {
6034			for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
6035				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
6036					flash.setSrc(mediaFiles[_i4].src);
6037					break;
6038				}
6039			}
6040		}
6041
6042		return flash;
6043	}
6044};
6045
6046var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
6047
6048if (hasFlash) {
6049	_media.typeChecks.push(function (url) {
6050		url = url.toLowerCase();
6051
6052		if (url.startsWith('rtmp')) {
6053			if (~url.indexOf('.mp3')) {
6054				return 'audio/rtmp';
6055			} else {
6056				return 'video/rtmp';
6057			}
6058		} else if (/\.og(a|g)/i.test(url)) {
6059			return 'audio/ogg';
6060		} else if (~url.indexOf('.m3u8')) {
6061			return 'application/x-mpegURL';
6062		} else if (~url.indexOf('.mpd')) {
6063			return 'application/dash+xml';
6064		} else if (~url.indexOf('.flv')) {
6065			return 'video/flv';
6066		} else {
6067			return null;
6068		}
6069	});
6070
6071	var FlashMediaElementVideoRenderer = {
6072		name: 'flash_video',
6073		options: {
6074			prefix: 'flash_video',
6075			filename: 'mediaelement-flash-video.swf',
6076			enablePseudoStreaming: false,
6077
6078			pseudoStreamingStartQueryParam: 'start',
6079
6080			pseudoStreamingType: 'byte'
6081		},
6082
6083		canPlayType: function canPlayType(type) {
6084			return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase());
6085		},
6086
6087		create: FlashMediaElementRenderer.create
6088
6089	};
6090	_renderer.renderer.add(FlashMediaElementVideoRenderer);
6091
6092	var FlashMediaElementHlsVideoRenderer = {
6093		name: 'flash_hls',
6094		options: {
6095			prefix: 'flash_hls',
6096			filename: 'mediaelement-flash-video-hls.swf'
6097		},
6098
6099		canPlayType: function canPlayType(type) {
6100			return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase());
6101		},
6102
6103		create: FlashMediaElementRenderer.create
6104	};
6105	_renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
6106
6107	var FlashMediaElementMdashVideoRenderer = {
6108		name: 'flash_dash',
6109		options: {
6110			prefix: 'flash_dash',
6111			filename: 'mediaelement-flash-video-mdash.swf'
6112		},
6113
6114		canPlayType: function canPlayType(type) {
6115			return ~['application/dash+xml'].indexOf(type.toLowerCase());
6116		},
6117
6118		create: FlashMediaElementRenderer.create
6119	};
6120	_renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
6121
6122	var FlashMediaElementAudioRenderer = {
6123		name: 'flash_audio',
6124		options: {
6125			prefix: 'flash_audio',
6126			filename: 'mediaelement-flash-audio.swf'
6127		},
6128
6129		canPlayType: function canPlayType(type) {
6130			return ~['audio/mp3'].indexOf(type.toLowerCase());
6131		},
6132
6133		create: FlashMediaElementRenderer.create
6134	};
6135	_renderer.renderer.add(FlashMediaElementAudioRenderer);
6136
6137	var FlashMediaElementAudioOggRenderer = {
6138		name: 'flash_audio_ogg',
6139		options: {
6140			prefix: 'flash_audio_ogg',
6141			filename: 'mediaelement-flash-audio-ogg.swf'
6142		},
6143
6144		canPlayType: function canPlayType(type) {
6145			return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase());
6146		},
6147
6148		create: FlashMediaElementRenderer.create
6149	};
6150	_renderer.renderer.add(FlashMediaElementAudioOggRenderer);
6151}
6152
6153},{"2":2,"25":25,"27":27,"28":28,"3":3,"5":5,"7":7,"8":8}],21:[function(_dereq_,module,exports){
6154'use strict';
6155
6156var _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; };
6157
6158var _window = _dereq_(3);
6159
6160var _window2 = _interopRequireDefault(_window);
6161
6162var _mejs = _dereq_(7);
6163
6164var _mejs2 = _interopRequireDefault(_mejs);
6165
6166var _renderer = _dereq_(8);
6167
6168var _general = _dereq_(27);
6169
6170var _constants = _dereq_(25);
6171
6172var _media = _dereq_(28);
6173
6174var _dom = _dereq_(26);
6175
6176function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6177
6178var NativeFlv = {
6179
6180	promise: null,
6181
6182	load: function load(settings) {
6183		if (typeof flvjs !== 'undefined') {
6184			NativeFlv.promise = new Promise(function (resolve) {
6185				resolve();
6186			}).then(function () {
6187				NativeFlv._createPlayer(settings);
6188			});
6189		} else {
6190			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.3.3/flv.min.js';
6191
6192			NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path);
6193			NativeFlv.promise.then(function () {
6194				NativeFlv._createPlayer(settings);
6195			});
6196		}
6197
6198		return NativeFlv.promise;
6199	},
6200
6201	_createPlayer: function _createPlayer(settings) {
6202		flvjs.LoggingControl.enableDebug = settings.options.debug;
6203		flvjs.LoggingControl.enableVerbose = settings.options.debug;
6204		var player = flvjs.createPlayer(settings.options, settings.configs);
6205		_window2.default['__ready__' + settings.id](player);
6206		return player;
6207	}
6208};
6209
6210var FlvNativeRenderer = {
6211	name: 'native_flv',
6212	options: {
6213		prefix: 'native_flv',
6214		flv: {
6215			path: 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.3.3/flv.min.js',
6216
6217			cors: true,
6218			debug: false
6219		}
6220	},
6221
6222	canPlayType: function canPlayType(type) {
6223		return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1;
6224	},
6225
6226	create: function create(mediaElement, options, mediaFiles) {
6227
6228		var originalNode = mediaElement.originalNode,
6229		    id = mediaElement.id + '_' + options.prefix;
6230
6231		var node = null,
6232		    flvPlayer = null;
6233
6234		node = originalNode.cloneNode(true);
6235		options = Object.assign(options, mediaElement.options);
6236
6237		var props = _mejs2.default.html5media.properties,
6238		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
6239		    attachNativeEvents = function attachNativeEvents(e) {
6240			if (e.type !== 'error') {
6241				var _event = (0, _general.createEvent)(e.type, mediaElement);
6242				mediaElement.dispatchEvent(_event);
6243			}
6244		},
6245		    assignGettersSetters = function assignGettersSetters(propName) {
6246			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6247
6248			node['get' + capName] = function () {
6249				return flvPlayer !== null ? node[propName] : null;
6250			};
6251
6252			node['set' + capName] = function (value) {
6253				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6254					if (propName === 'src') {
6255						node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
6256						if (flvPlayer !== null) {
6257							var _flvOptions = {};
6258							_flvOptions.type = 'flv';
6259							_flvOptions.url = value;
6260							_flvOptions.cors = options.flv.cors;
6261							_flvOptions.debug = options.flv.debug;
6262							_flvOptions.path = options.flv.path;
6263							var _flvConfigs = options.flv.configs;
6264
6265							flvPlayer.destroy();
6266							for (var i = 0, total = events.length; i < total; i++) {
6267								node.removeEventListener(events[i], attachNativeEvents);
6268							}
6269							flvPlayer = NativeFlv._createPlayer({
6270								options: _flvOptions,
6271								configs: _flvConfigs,
6272								id: id
6273							});
6274							flvPlayer.attachMediaElement(node);
6275							flvPlayer.load();
6276						}
6277					} else {
6278						node[propName] = value;
6279					}
6280				}
6281			};
6282		};
6283
6284		for (var i = 0, total = props.length; i < total; i++) {
6285			assignGettersSetters(props[i]);
6286		}
6287
6288		_window2.default['__ready__' + id] = function (_flvPlayer) {
6289			mediaElement.flvPlayer = flvPlayer = _flvPlayer;
6290
6291			var flvEvents = flvjs.Events,
6292			    assignEvents = function assignEvents(eventName) {
6293				if (eventName === 'loadedmetadata') {
6294					flvPlayer.unload();
6295					flvPlayer.detachMediaElement();
6296					flvPlayer.attachMediaElement(node);
6297					flvPlayer.load();
6298				}
6299
6300				node.addEventListener(eventName, attachNativeEvents);
6301			};
6302
6303			for (var _i = 0, _total = events.length; _i < _total; _i++) {
6304				assignEvents(events[_i]);
6305			}
6306
6307			var assignFlvEvents = function assignFlvEvents(name, data) {
6308				if (name === 'error') {
6309					var message = data[0] + ': ' + data[1] + ' ' + data[2].msg;
6310					mediaElement.generateError(message, node.src);
6311				} else {
6312					var _event2 = (0, _general.createEvent)(name, mediaElement);
6313					_event2.data = data;
6314					mediaElement.dispatchEvent(_event2);
6315				}
6316			};
6317
6318			var _loop = function _loop(eventType) {
6319				if (flvEvents.hasOwnProperty(eventType)) {
6320					flvPlayer.on(flvEvents[eventType], function () {
6321						for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
6322							args[_key] = arguments[_key];
6323						}
6324
6325						return assignFlvEvents(flvEvents[eventType], args);
6326					});
6327				}
6328			};
6329
6330			for (var eventType in flvEvents) {
6331				_loop(eventType);
6332			}
6333		};
6334
6335		if (mediaFiles && mediaFiles.length > 0) {
6336			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
6337				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
6338					node.setAttribute('src', mediaFiles[_i2].src);
6339					break;
6340				}
6341			}
6342		}
6343
6344		node.setAttribute('id', id);
6345
6346		originalNode.parentNode.insertBefore(node, originalNode);
6347		originalNode.autoplay = false;
vendor: 25,863 bytes, lines 6348-7342
6348		originalNode.style.display = 'none';
6349
6350		var flvOptions = {};
6351		flvOptions.type = 'flv';
6352		flvOptions.url = node.src;
6353		flvOptions.cors = options.flv.cors;
6354		flvOptions.debug = options.flv.debug;
6355		flvOptions.path = options.flv.path;
6356		var flvConfigs = options.flv.configs;
6357
6358		node.setSize = function (width, height) {
6359			node.style.width = width + 'px';
6360			node.style.height = height + 'px';
6361			return node;
6362		};
6363
6364		node.hide = function () {
6365			if (flvPlayer !== null) {
6366				flvPlayer.pause();
6367			}
6368			node.style.display = 'none';
6369			return node;
6370		};
6371
6372		node.show = function () {
6373			node.style.display = '';
6374			return node;
6375		};
6376
6377		node.destroy = function () {
6378			if (flvPlayer !== null) {
6379				flvPlayer.destroy();
6380			}
6381		};
6382
6383		var event = (0, _general.createEvent)('rendererready', node);
6384		mediaElement.dispatchEvent(event);
6385
6386		mediaElement.promises.push(NativeFlv.load({
6387			options: flvOptions,
6388			configs: flvConfigs,
6389			id: id
6390		}));
6391
6392		return node;
6393	}
6394};
6395
6396_media.typeChecks.push(function (url) {
6397	return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null;
6398});
6399
6400_renderer.renderer.add(FlvNativeRenderer);
6401
6402},{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],22:[function(_dereq_,module,exports){
6403'use strict';
6404
6405var _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; };
6406
6407var _window = _dereq_(3);
6408
6409var _window2 = _interopRequireDefault(_window);
6410
6411var _mejs = _dereq_(7);
6412
6413var _mejs2 = _interopRequireDefault(_mejs);
6414
6415var _renderer = _dereq_(8);
6416
6417var _general = _dereq_(27);
6418
6419var _constants = _dereq_(25);
6420
6421var _media = _dereq_(28);
6422
6423var _dom = _dereq_(26);
6424
6425function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6426
6427var NativeHls = {
6428
6429	promise: null,
6430
6431	load: function load(settings) {
6432		if (typeof Hls !== 'undefined') {
6433			NativeHls.promise = new Promise(function (resolve) {
6434				resolve();
6435			}).then(function () {
6436				NativeHls._createPlayer(settings);
6437			});
6438		} else {
6439			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/0.8.1/hls.min.js';
6440
6441			NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path);
6442			NativeHls.promise.then(function () {
6443				NativeHls._createPlayer(settings);
6444			});
6445		}
6446
6447		return NativeHls.promise;
6448	},
6449
6450	_createPlayer: function _createPlayer(settings) {
6451		var player = new Hls(settings.options);
6452		_window2.default['__ready__' + settings.id](player);
6453		return player;
6454	}
6455};
6456
6457var HlsNativeRenderer = {
6458	name: 'native_hls',
6459	options: {
6460		prefix: 'native_hls',
6461		hls: {
6462			path: 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/0.8.1/hls.min.js',
6463
6464			autoStartLoad: false,
6465			debug: false
6466		}
6467	},
6468
6469	canPlayType: function canPlayType(type) {
6470		return _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1;
6471	},
6472
6473	create: function create(mediaElement, options, mediaFiles) {
6474
6475		var originalNode = mediaElement.originalNode,
6476		    id = mediaElement.id + '_' + options.prefix,
6477		    preload = originalNode.getAttribute('preload'),
6478		    autoplay = originalNode.autoplay;
6479
6480		var hlsPlayer = null,
6481		    node = null,
6482		    index = 0,
6483		    total = mediaFiles.length;
6484
6485		node = originalNode.cloneNode(true);
6486		options = Object.assign(options, mediaElement.options);
6487		options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
6488
6489		var props = _mejs2.default.html5media.properties,
6490		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
6491		    attachNativeEvents = function attachNativeEvents(e) {
6492			if (e.type !== 'error') {
6493				var _event = (0, _general.createEvent)(e.type, mediaElement);
6494				mediaElement.dispatchEvent(_event);
6495			}
6496		},
6497		    assignGettersSetters = function assignGettersSetters(propName) {
6498			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6499
6500			node['get' + capName] = function () {
6501				return hlsPlayer !== null ? node[propName] : null;
6502			};
6503
6504			node['set' + capName] = function (value) {
6505				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6506					if (propName === 'src') {
6507						node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
6508						if (hlsPlayer !== null) {
6509							hlsPlayer.destroy();
6510							for (var i = 0, _total = events.length; i < _total; i++) {
6511								node.removeEventListener(events[i], attachNativeEvents);
6512							}
6513							hlsPlayer = NativeHls._createPlayer({
6514								options: options.hls,
6515								id: id
6516							});
6517							hlsPlayer.loadSource(value);
6518							hlsPlayer.attachMedia(node);
6519						}
6520					} else {
6521						node[propName] = value;
6522					}
6523				}
6524			};
6525		};
6526
6527		for (var i = 0, _total2 = props.length; i < _total2; i++) {
6528			assignGettersSetters(props[i]);
6529		}
6530
6531		_window2.default['__ready__' + id] = function (_hlsPlayer) {
6532			mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;
6533			var hlsEvents = Hls.Events,
6534			    assignEvents = function assignEvents(eventName) {
6535				if (eventName === 'loadedmetadata') {
6536					var url = mediaElement.originalNode.src;
6537					hlsPlayer.detachMedia();
6538					hlsPlayer.loadSource(url);
6539					hlsPlayer.attachMedia(node);
6540				}
6541
6542				node.addEventListener(eventName, attachNativeEvents);
6543			};
6544
6545			for (var _i = 0, _total3 = events.length; _i < _total3; _i++) {
6546				assignEvents(events[_i]);
6547			}
6548
6549			var recoverDecodingErrorDate = void 0,
6550			    recoverSwapAudioCodecDate = void 0;
6551			var assignHlsEvents = function assignHlsEvents(name, data) {
6552				if (name === 'hlsError') {
6553					console.warn(data);
6554					data = data[1];
6555
6556					if (data.fatal) {
6557						switch (data.type) {
6558							case 'mediaError':
6559								var now = new Date().getTime();
6560								if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) {
6561									recoverDecodingErrorDate = new Date().getTime();
6562									hlsPlayer.recoverMediaError();
6563								} else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) {
6564									recoverSwapAudioCodecDate = new Date().getTime();
6565									console.warn('Attempting to swap Audio Codec and recover from media error');
6566									hlsPlayer.swapAudioCodec();
6567									hlsPlayer.recoverMediaError();
6568								} else {
6569									var message = 'Cannot recover, last media error recovery failed';
6570									mediaElement.generateError(message, node.src);
6571									console.error(message);
6572								}
6573								break;
6574							case 'networkError':
6575								if (data.details === 'manifestLoadError') {
6576									if (index < total) {
6577										node.setSrc(mediaFiles[index++].src);
6578										node.load();
6579										node.play();
6580									}
6581								} else {
6582									var _message = 'Network error';
6583									mediaElement.generateError(_message, mediaFiles);
6584									console.error(_message);
6585								}
6586								break;
6587							default:
6588								hlsPlayer.destroy();
6589								break;
6590						}
6591					}
6592				} else {
6593					var _event2 = (0, _general.createEvent)(name, mediaElement);
6594					_event2.data = data;
6595					mediaElement.dispatchEvent(_event2);
6596				}
6597			};
6598
6599			var _loop = function _loop(eventType) {
6600				if (hlsEvents.hasOwnProperty(eventType)) {
6601					hlsPlayer.on(hlsEvents[eventType], function () {
6602						for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
6603							args[_key] = arguments[_key];
6604						}
6605
6606						return assignHlsEvents(hlsEvents[eventType], args);
6607					});
6608				}
6609			};
6610
6611			for (var eventType in hlsEvents) {
6612				_loop(eventType);
6613			}
6614		};
6615
6616		if (total > 0) {
6617			for (; index < total; index++) {
6618				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
6619					node.setAttribute('src', mediaFiles[index].src);
6620					break;
6621				}
6622			}
6623		}
6624
6625		if (preload !== 'auto' && !autoplay) {
6626			node.addEventListener('play', function () {
6627				if (hlsPlayer !== null) {
6628					hlsPlayer.startLoad();
6629				}
6630			});
6631
6632			node.addEventListener('pause', function () {
6633				if (hlsPlayer !== null) {
6634					hlsPlayer.stopLoad();
6635				}
6636			});
6637		}
6638
6639		node.setAttribute('id', id);
6640
6641		originalNode.parentNode.insertBefore(node, originalNode);
6642		originalNode.autoplay = false;
6643		originalNode.style.display = 'none';
6644
6645		node.setSize = function (width, height) {
6646			node.style.width = width + 'px';
6647			node.style.height = height + 'px';
6648			return node;
6649		};
6650
6651		node.hide = function () {
6652			node.pause();
6653			node.style.display = 'none';
6654			return node;
6655		};
6656
6657		node.show = function () {
6658			node.style.display = '';
6659			return node;
6660		};
6661
6662		node.destroy = function () {
6663			if (hlsPlayer !== null) {
6664				hlsPlayer.stopLoad();
6665				hlsPlayer.destroy();
6666			}
6667		};
6668
6669		var event = (0, _general.createEvent)('rendererready', node);
6670		mediaElement.dispatchEvent(event);
6671
6672		mediaElement.promises.push(NativeHls.load({
6673			options: options.hls,
6674			id: id
6675		}));
6676
6677		return node;
6678	}
6679};
6680
6681_media.typeChecks.push(function (url) {
6682	return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;
6683});
6684
6685_renderer.renderer.add(HlsNativeRenderer);
6686
6687},{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],23:[function(_dereq_,module,exports){
6688'use strict';
6689
6690var _window = _dereq_(3);
6691
6692var _window2 = _interopRequireDefault(_window);
6693
6694var _document = _dereq_(2);
6695
6696var _document2 = _interopRequireDefault(_document);
6697
6698var _mejs = _dereq_(7);
6699
6700var _mejs2 = _interopRequireDefault(_mejs);
6701
6702var _renderer = _dereq_(8);
6703
6704var _general = _dereq_(27);
6705
6706var _constants = _dereq_(25);
6707
6708function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6709
6710var HtmlMediaElement = {
6711	name: 'html5',
6712	options: {
6713		prefix: 'html5'
6714	},
6715
6716	canPlayType: function canPlayType(type) {
6717
6718		var mediaElement = _document2.default.createElement('video');
6719
6720		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) {
6721			return 'yes';
6722		} else if (mediaElement.canPlayType) {
6723			return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, '');
6724		} else {
6725			return '';
6726		}
6727	},
6728
6729	create: function create(mediaElement, options, mediaFiles) {
6730
6731		var id = mediaElement.id + '_' + options.prefix;
6732		var isActive = false;
6733
6734		var node = null;
6735
6736		if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
6737			node = _document2.default.createElement('audio');
6738			mediaElement.appendChild(node);
6739		} else {
6740			node = mediaElement.originalNode;
6741		}
6742
6743		node.setAttribute('id', id);
6744
6745		var props = _mejs2.default.html5media.properties,
6746		    assignGettersSetters = function assignGettersSetters(propName) {
6747			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6748
6749			node['get' + capName] = function () {
6750				return node[propName];
6751			};
6752
6753			node['set' + capName] = function (value) {
6754				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6755					node[propName] = value;
6756				}
6757			};
6758		};
6759
6760		for (var i = 0, _total = props.length; i < _total; i++) {
6761			assignGettersSetters(props[i]);
6762		}
6763
6764		var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
6765		    assignEvents = function assignEvents(eventName) {
6766			node.addEventListener(eventName, function (e) {
6767				if (isActive) {
6768					var _event = (0, _general.createEvent)(e.type, e.target);
6769					mediaElement.dispatchEvent(_event);
6770				}
6771			});
6772		};
6773
6774		for (var _i = 0, _total2 = events.length; _i < _total2; _i++) {
6775			assignEvents(events[_i]);
6776		}
6777
6778		node.setSize = function (width, height) {
6779			node.style.width = width + 'px';
6780			node.style.height = height + 'px';
6781			return node;
6782		};
6783
6784		node.hide = function () {
6785			isActive = false;
6786			node.style.display = 'none';
6787
6788			return node;
6789		};
6790
6791		node.show = function () {
6792			isActive = true;
6793			node.style.display = '';
6794
6795			return node;
6796		};
6797
6798		var index = 0,
6799		    total = mediaFiles.length;
6800		if (total > 0) {
6801			for (; index < total; index++) {
6802				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
6803					node.setAttribute('src', mediaFiles[index].src);
6804					break;
6805				}
6806			}
6807		}
6808
6809		node.addEventListener('error', function (e) {
6810			if (e.target.error.code === 4 && isActive) {
6811				if (index < total) {
6812					node.src = mediaFiles[index++].src;
6813					node.load();
6814					node.play();
6815				} else {
6816					mediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles);
6817				}
6818			}
6819		});
6820
6821		var event = (0, _general.createEvent)('rendererready', node);
6822		mediaElement.dispatchEvent(event);
6823
6824		return node;
6825	}
6826};
6827
6828_window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement;
6829
6830_renderer.renderer.add(HtmlMediaElement);
6831
6832},{"2":2,"25":25,"27":27,"3":3,"7":7,"8":8}],24:[function(_dereq_,module,exports){
6833'use strict';
6834
6835var _window = _dereq_(3);
6836
6837var _window2 = _interopRequireDefault(_window);
6838
6839var _document = _dereq_(2);
6840
6841var _document2 = _interopRequireDefault(_document);
6842
6843var _mejs = _dereq_(7);
6844
6845var _mejs2 = _interopRequireDefault(_mejs);
6846
6847var _renderer = _dereq_(8);
6848
6849var _general = _dereq_(27);
6850
6851var _media = _dereq_(28);
6852
6853var _dom = _dereq_(26);
6854
6855function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6856
6857var YouTubeApi = {
6858	isIframeStarted: false,
6859
6860	isIframeLoaded: false,
6861
6862	iframeQueue: [],
6863
6864	enqueueIframe: function enqueueIframe(settings) {
6865		YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;
6866
6867		if (YouTubeApi.isLoaded) {
6868			YouTubeApi.createIframe(settings);
6869		} else {
6870			YouTubeApi.loadIframeApi();
6871			YouTubeApi.iframeQueue.push(settings);
6872		}
6873	},
6874
6875	loadIframeApi: function loadIframeApi() {
6876		if (!YouTubeApi.isIframeStarted) {
6877			(0, _dom.loadScript)('https://www.youtube.com/player_api');
6878			YouTubeApi.isIframeStarted = true;
6879		}
6880	},
6881
6882	iFrameReady: function iFrameReady() {
6883
6884		YouTubeApi.isLoaded = true;
6885		YouTubeApi.isIframeLoaded = true;
6886
6887		while (YouTubeApi.iframeQueue.length > 0) {
6888			var settings = YouTubeApi.iframeQueue.pop();
6889			YouTubeApi.createIframe(settings);
6890		}
6891	},
6892
6893	createIframe: function createIframe(settings) {
6894		return new YT.Player(settings.containerId, settings);
6895	},
6896
6897	getYouTubeId: function getYouTubeId(url) {
6898
6899		var youTubeId = '';
6900
6901		if (url.indexOf('?') > 0) {
6902			youTubeId = YouTubeApi.getYouTubeIdFromParam(url);
6903
6904			if (youTubeId === '') {
6905				youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
6906			}
6907		} else {
6908			youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
6909		}
6910
6911		var id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1);
6912		youTubeId = id.split('?');
6913		return youTubeId[0];
6914	},
6915
6916	getYouTubeIdFromParam: function getYouTubeIdFromParam(url) {
6917
6918		if (url === undefined || url === null || !url.trim().length) {
6919			return null;
6920		}
6921
6922		var parts = url.split('?'),
6923		    parameters = parts[1].split('&');
6924
6925		var youTubeId = '';
6926
6927		for (var i = 0, total = parameters.length; i < total; i++) {
6928			var paramParts = parameters[i].split('=');
6929			if (paramParts[0] === 'v') {
6930				youTubeId = paramParts[1];
6931				break;
6932			}
6933		}
6934
6935		return youTubeId;
6936	},
6937
6938	getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {
6939
6940		if (url === undefined || url === null || !url.trim().length) {
6941			return null;
6942		}
6943
6944		var parts = url.split('?');
6945		url = parts[0];
6946		return url.substring(url.lastIndexOf('/') + 1);
6947	},
6948
6949	getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {
6950		if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) {
6951			return url;
6952		}
6953
6954		var parts = url.split('/');
6955		parts[2] = parts[2].replace('.com', '-nocookie.com');
6956		return parts.join('/');
6957	}
6958};
6959
6960var YouTubeIframeRenderer = {
6961	name: 'youtube_iframe',
6962
6963	options: {
6964		prefix: 'youtube_iframe',
6965
6966		youtube: {
6967			autoplay: 0,
6968			controls: 0,
6969			disablekb: 1,
6970			end: 0,
6971			loop: 0,
6972			modestbranding: 0,
6973			playsinline: 0,
6974			rel: 0,
6975			showinfo: 0,
6976			start: 0,
6977			iv_load_policy: 3,
6978
6979			nocookie: false,
6980
6981			imageQuality: null
6982		}
6983	},
6984
6985	canPlayType: function canPlayType(type) {
6986		return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase());
6987	},
6988
6989	create: function create(mediaElement, options, mediaFiles) {
6990
6991		var youtube = {},
6992		    apiStack = [],
6993		    readyState = 4;
6994
6995		var youTubeApi = null,
6996		    paused = true,
6997		    ended = false,
6998		    youTubeIframe = null,
6999		    volume = 1;
7000
7001		youtube.options = options;
7002		youtube.id = mediaElement.id + '_' + options.prefix;
7003		youtube.mediaElement = mediaElement;
7004
7005		var props = _mejs2.default.html5media.properties,
7006		    assignGettersSetters = function assignGettersSetters(propName) {
7007
7008			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
7009
7010			youtube['get' + capName] = function () {
7011				if (youTubeApi !== null) {
7012					var value = null;
7013
7014					switch (propName) {
7015						case 'currentTime':
7016							return youTubeApi.getCurrentTime();
7017						case 'duration':
7018							return youTubeApi.getDuration();
7019						case 'volume':
7020							volume = youTubeApi.getVolume() / 100;
7021							return volume;
7022						case 'paused':
7023							return paused;
7024						case 'ended':
7025							return ended;
7026						case 'muted':
7027							return youTubeApi.isMuted();
7028						case 'buffered':
7029							var percentLoaded = youTubeApi.getVideoLoadedFraction(),
7030							    duration = youTubeApi.getDuration();
7031							return {
7032								start: function start() {
7033									return 0;
7034								},
7035								end: function end() {
7036									return percentLoaded * duration;
7037								},
7038								length: 1
7039							};
7040						case 'src':
7041							return youTubeApi.getVideoUrl();
7042						case 'readyState':
7043							return readyState;
7044					}
7045
7046					return value;
7047				} else {
7048					return null;
7049				}
7050			};
7051
7052			youtube['set' + capName] = function (value) {
7053				if (youTubeApi !== null) {
7054					switch (propName) {
7055						case 'src':
7056							var url = typeof value === 'string' ? value : value[0].src,
7057							    _videoId = YouTubeApi.getYouTubeId(url);
7058
7059							if (mediaElement.originalNode.autoplay) {
7060								youTubeApi.loadVideoById(_videoId);
7061							} else {
7062								youTubeApi.cueVideoById(_videoId);
7063							}
7064							break;
7065						case 'currentTime':
7066							youTubeApi.seekTo(value);
7067							break;
7068						case 'muted':
7069							if (value) {
7070								youTubeApi.mute();
7071							} else {
7072								youTubeApi.unMute();
7073							}
7074							setTimeout(function () {
7075								var event = (0, _general.createEvent)('volumechange', youtube);
7076								mediaElement.dispatchEvent(event);
7077							}, 50);
7078							break;
7079						case 'volume':
7080							volume = value;
7081							youTubeApi.setVolume(value * 100);
7082							setTimeout(function () {
7083								var event = (0, _general.createEvent)('volumechange', youtube);
7084								mediaElement.dispatchEvent(event);
7085							}, 50);
7086							break;
7087						case 'readyState':
7088							var event = (0, _general.createEvent)('canplay', youtube);
7089							mediaElement.dispatchEvent(event);
7090							break;
7091						default:
7092							
7093							break;
7094					}
7095				} else {
7096					apiStack.push({ type: 'set', propName: propName, value: value });
7097				}
7098			};
7099		};
7100
7101		for (var i = 0, total = props.length; i < total; i++) {
7102			assignGettersSetters(props[i]);
7103		}
7104
7105		var methods = _mejs2.default.html5media.methods,
7106		    assignMethods = function assignMethods(methodName) {
7107			youtube[methodName] = function () {
7108				if (youTubeApi !== null) {
7109					switch (methodName) {
7110						case 'play':
7111							paused = false;
7112							return youTubeApi.playVideo();
7113						case 'pause':
7114							paused = true;
7115							return youTubeApi.pauseVideo();
7116						case 'load':
7117							return null;
7118					}
7119				} else {
7120					apiStack.push({ type: 'call', methodName: methodName });
7121				}
7122			};
7123		};
7124
7125		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
7126			assignMethods(methods[_i]);
7127		}
7128
7129		var youtubeContainer = _document2.default.createElement('div');
7130		youtubeContainer.id = youtube.id;
7131
7132		if (youtube.options.youtube.nocookie) {
7133			mediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src);
7134		}
7135
7136		mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode);
7137		mediaElement.originalNode.style.display = 'none';
7138
7139		var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',
7140		    height = isAudio ? '1' : mediaElement.originalNode.height,
7141		    width = isAudio ? '1' : mediaElement.originalNode.width,
7142		    videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),
7143		    youtubeSettings = {
7144			id: youtube.id,
7145			containerId: youtubeContainer.id,
7146			videoId: videoId,
7147			height: height,
7148			width: width,
7149			playerVars: Object.assign({
7150				controls: 0,
7151				rel: 0,
7152				disablekb: 1,
7153				showinfo: 0,
7154				modestbranding: 0,
7155				html5: 1,
7156				playsinline: 0,
7157				start: 0,
7158				end: 0,
7159				iv_load_policy: 3
7160			}, youtube.options.youtube),
7161			origin: _window2.default.location.host,
7162			events: {
7163				onReady: function onReady(e) {
7164					mediaElement.youTubeApi = youTubeApi = e.target;
7165					mediaElement.youTubeState = {
7166						paused: true,
7167						ended: false
7168					};
7169
7170					if (apiStack.length) {
7171						for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
7172
7173							var stackItem = apiStack[_i2];
7174
7175							if (stackItem.type === 'set') {
7176								var propName = stackItem.propName,
7177								    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
7178
7179								youtube['set' + capName](stackItem.value);
7180							} else if (stackItem.type === 'call') {
7181								youtube[stackItem.methodName]();
7182							}
7183						}
7184					}
7185
7186					youTubeIframe = youTubeApi.getIframe();
7187
7188					if (mediaElement.originalNode.getAttribute('muted')) {
7189						youTubeApi.mute();
7190					}
7191
7192					var events = ['mouseover', 'mouseout'],
7193					    assignEvents = function assignEvents(e) {
7194						var newEvent = (0, _general.createEvent)(e.type, youtube);
7195						mediaElement.dispatchEvent(newEvent);
7196					};
7197
7198					for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
7199						youTubeIframe.addEventListener(events[_i3], assignEvents, false);
7200					}
7201
7202					var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
7203
7204					for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) {
7205						var event = (0, _general.createEvent)(initEvents[_i4], youtube);
7206						mediaElement.dispatchEvent(event);
7207					}
7208				},
7209				onStateChange: function onStateChange(e) {
7210					var events = [];
7211
7212					switch (e.data) {
7213						case -1:
7214							events = ['loadedmetadata'];
7215							paused = true;
7216							ended = false;
7217							break;
7218						case 0:
7219							events = ['ended'];
7220							paused = false;
7221							ended = !youtube.options.youtube.loop;
7222							if (!youtube.options.youtube.loop) {
7223								youtube.stopInterval();
7224							}
7225							break;
7226						case 1:
7227							events = ['play', 'playing'];
7228							paused = false;
7229							ended = false;
7230							youtube.startInterval();
7231							break;
7232						case 2:
7233							events = ['pause'];
7234							paused = true;
7235							ended = false;
7236							youtube.stopInterval();
7237							break;
7238						case 3:
7239							events = ['progress'];
7240							ended = false;
7241							break;
7242						case 5:
7243							events = ['loadeddata', 'loadedmetadata', 'canplay'];
7244							paused = true;
7245							ended = false;
7246							break;
7247					}
7248
7249					for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) {
7250						var event = (0, _general.createEvent)(events[_i5], youtube);
7251						mediaElement.dispatchEvent(event);
7252					}
7253				},
7254				onError: function onError(e) {
7255					var event = (0, _general.createEvent)('error', youtube);
7256					event.data = e.data;
7257					mediaElement.dispatchEvent(event);
7258				}
7259			}
7260		};
7261
7262		if (isAudio) {
7263			youtubeSettings.playerVars.playsinline = 1;
7264		}
7265
7266		if (mediaElement.originalNode.autoplay) {
7267			youtubeSettings.playerVars.autoplay = 1;
7268		}
7269
7270		if (mediaElement.originalNode.loop) {
7271			youtubeSettings.playerVars.loop = 1;
7272		}
7273
7274		YouTubeApi.enqueueIframe(youtubeSettings);
7275
7276		youtube.onEvent = function (eventName, player, _youTubeState) {
7277			if (_youTubeState !== null && _youTubeState !== undefined) {
7278				mediaElement.youTubeState = _youTubeState;
7279			}
7280		};
7281
7282		youtube.setSize = function (width, height) {
7283			if (youTubeApi !== null) {
7284				youTubeApi.setSize(width, height);
7285			}
7286		};
7287		youtube.hide = function () {
7288			youtube.stopInterval();
7289			youtube.pause();
7290			if (youTubeIframe) {
7291				youTubeIframe.style.display = 'none';
7292			}
7293		};
7294		youtube.show = function () {
7295			if (youTubeIframe) {
7296				youTubeIframe.style.display = '';
7297			}
7298		};
7299		youtube.destroy = function () {
7300			youTubeApi.destroy();
7301		};
7302		youtube.interval = null;
7303
7304		youtube.startInterval = function () {
7305			youtube.interval = setInterval(function () {
7306				var event = (0, _general.createEvent)('timeupdate', youtube);
7307				mediaElement.dispatchEvent(event);
7308			}, 250);
7309		};
7310		youtube.stopInterval = function () {
7311			if (youtube.interval) {
7312				clearInterval(youtube.interval);
7313			}
7314		};
7315		youtube.getPosterUrl = function () {
7316			var quality = options.youtube.imageQuality,
7317			    resolutions = ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'],
7318			    id = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
7319			return quality && resolutions.indexOf(quality) > -1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : '';
7320		};
7321
7322		return youtube;
7323	}
7324};
7325
7326_window2.default.onYouTubePlayerAPIReady = function () {
7327	YouTubeApi.iFrameReady();
7328};
7329
7330_media.typeChecks.push(function (url) {
7331	return (/\/\/(www\.youtube|youtu\.?be)/i.test(url) ? 'video/x-youtube' : null
7332	);
7333});
7334
7335_renderer.renderer.add(YouTubeIframeRenderer);
7336
7337},{"2":2,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],25:[function(_dereq_,module,exports){
7338'use strict';
7339
7340Object.defineProperty(exports, "__esModule", {
7341	value: true
7342});
7343exports.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;
7344
7345var _window = _dereq_(3);
7346
7347var _window2 = _interopRequireDefault(_window);
7348
7349var _document = _dereq_(2);
7350
7351var _document2 = _interopRequireDefault(_document);
7352
7353var _mejs = _dereq_(7);
7354
7355var _mejs2 = _interopRequireDefault(_mejs);
7356
7357function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7358
7359var NAV = exports.NAV = _window2.default.navigator;
7360var UA = exports.UA = NAV.userAgent.toLowerCase();
7361var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA) && !_window2.default.MSStream;
7362var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA) && !_window2.default.MSStream;
7363var IS_IPOD = exports.IS_IPOD = /ipod/i.test(UA) && !_window2.default.MSStream;
7364var IS_IOS = exports.IS_IOS = /ipad|iphone|ipod/i.test(UA) && !_window2.default.MSStream;
7365var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA);
7366var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName);
7367var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
7368var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA);
7369var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA);
7370var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME;
7371var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA);
7372var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
7373var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
7374	var element = _document2.default.createElement('x'),
7375	    documentElement = _document2.default.documentElement,
7376	    getComputedStyle = _window2.default.getComputedStyle;
7377
7378	if (!('pointerEvents' in element.style)) {
7379		return false;
7380	}
7381
7382	element.style.pointerEvents = 'auto';
7383	element.style.pointerEvents = 'x';
7384	documentElement.appendChild(element);
7385	var supports = getComputedStyle && getComputedStyle(element, '').pointerEvents === 'auto';
7386	element.remove();
7387	return !!supports;
7388}();
7389
7390var SUPPORT_PASSIVE_EVENT = exports.SUPPORT_PASSIVE_EVENT = function () {
7391	var supportsPassive = false;
7392	try {
7393		var opts = Object.defineProperty({}, 'passive', {
7394			get: function get() {
7395				supportsPassive = true;
7396			}
7397		});
7398		_window2.default.addEventListener('test', null, opts);
7399	} catch (e) {}
7400
7401	return supportsPassive;
7402}();
7403
7404var html5Elements = ['source', 'track', 'audio', 'video'];
7405var video = void 0;
7406
7407for (var i = 0, total = html5Elements.length; i < total; i++) {
7408	video = _document2.default.createElement(html5Elements[i]);
7409}
7410
7411var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && /edge/i.test(UA);
7412
7413var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
7414
7415var hasNativeFullscreen = video.requestFullscreen !== undefined;
7416
7417if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) {
7418	hasNativeFullscreen = false;
7419	hasiOSFullScreen = false;
7420}
7421
7422var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
7423var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
7424var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
7425var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
7426var nativeFullScreenEnabled = hasTrueNativeFullScreen;
7427var fullScreenEventName = '';
7428var isFullScreen = void 0,
7429    requestFullScreen = void 0,
7430    cancelFullScreen = void 0;
7431
7432if (hasMozNativeFullScreen) {
7433	nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
7434} else if (hasMsNativeFullScreen) {
7435	nativeFullScreenEnabled = _document2.default.msFullscreenEnabled;
7436}
7437
7438if (IS_CHROME) {
7439	hasiOSFullScreen = false;
7440}
7441
7442if (hasTrueNativeFullScreen) {
7443	if (hasWebkitNativeFullScreen) {
7444		fullScreenEventName = 'webkitfullscreenchange';
7445	} else if (hasMozNativeFullScreen) {
7446		fullScreenEventName = 'mozfullscreenchange';
7447	} else if (hasMsNativeFullScreen) {
7448		fullScreenEventName = 'MSFullscreenChange';
7449	}
7450
7451	exports.isFullScreen = isFullScreen = function isFullScreen() {
7452		if (hasMozNativeFullScreen) {
7453			return _document2.default.mozFullScreen;
7454		} else if (hasWebkitNativeFullScreen) {
7455			return _document2.default.webkitIsFullScreen;
7456		} else if (hasMsNativeFullScreen) {
7457			return _document2.default.msFullscreenElement !== null;
7458		}
7459	};
7460
7461	exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
7462		if (hasWebkitNativeFullScreen) {
7463			el.webkitRequestFullScreen();
7464		} else if (hasMozNativeFullScreen) {
7465			el.mozRequestFullScreen();
7466		} else if (hasMsNativeFullScreen) {
7467			el.msRequestFullscreen();
7468		}
7469	};
7470
7471	exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() {
7472		if (hasWebkitNativeFullScreen) {
7473			_document2.default.webkitCancelFullScreen();
7474		} else if (hasMozNativeFullScreen) {
7475			_document2.default.mozCancelFullScreen();
7476		} else if (hasMsNativeFullScreen) {
7477			_document2.default.msExitFullscreen();
7478		}
7479	};
7480}
7481
7482var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen;
7483var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen;
7484var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen;
7485var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen;
7486var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
7487var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
vendor: 19,344 bytes, lines 7488-8185
7488var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
7489var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
7490exports.isFullScreen = isFullScreen;
7491exports.requestFullScreen = requestFullScreen;
7492exports.cancelFullScreen = cancelFullScreen;
7493
7494
7495_mejs2.default.Features = _mejs2.default.Features || {};
7496_mejs2.default.Features.isiPad = IS_IPAD;
7497_mejs2.default.Features.isiPod = IS_IPOD;
7498_mejs2.default.Features.isiPhone = IS_IPHONE;
7499_mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad;
7500_mejs2.default.Features.isAndroid = IS_ANDROID;
7501_mejs2.default.Features.isIE = IS_IE;
7502_mejs2.default.Features.isEdge = IS_EDGE;
7503_mejs2.default.Features.isChrome = IS_CHROME;
7504_mejs2.default.Features.isFirefox = IS_FIREFOX;
7505_mejs2.default.Features.isSafari = IS_SAFARI;
7506_mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
7507_mejs2.default.Features.hasMSE = HAS_MSE;
7508_mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
7509_mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
7510_mejs2.default.Features.supportsPassiveEvent = SUPPORT_PASSIVE_EVENT;
7511_mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
7512_mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
7513_mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN;
7514_mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN;
7515_mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN;
7516_mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN;
7517_mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED;
7518_mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME;
7519_mejs2.default.Features.isFullScreen = isFullScreen;
7520_mejs2.default.Features.requestFullScreen = requestFullScreen;
7521_mejs2.default.Features.cancelFullScreen = cancelFullScreen;
7522
7523},{"2":2,"3":3,"7":7}],26:[function(_dereq_,module,exports){
7524'use strict';
7525
7526Object.defineProperty(exports, "__esModule", {
7527	value: true
7528});
7529exports.removeClass = exports.addClass = exports.hasClass = undefined;
7530exports.loadScript = loadScript;
7531exports.offset = offset;
7532exports.toggleClass = toggleClass;
7533exports.fadeOut = fadeOut;
7534exports.fadeIn = fadeIn;
7535exports.siblings = siblings;
7536exports.visible = visible;
7537exports.ajax = ajax;
7538
7539var _window = _dereq_(3);
7540
7541var _window2 = _interopRequireDefault(_window);
7542
7543var _document = _dereq_(2);
7544
7545var _document2 = _interopRequireDefault(_document);
7546
7547var _mejs = _dereq_(7);
7548
7549var _mejs2 = _interopRequireDefault(_mejs);
7550
7551function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7552
7553function loadScript(url) {
7554	return new Promise(function (resolve, reject) {
7555		var script = _document2.default.createElement('script');
7556		script.src = url;
7557		script.async = true;
7558		script.onload = function () {
7559			script.remove();
7560			resolve();
7561		};
7562		script.onerror = function () {
7563			script.remove();
7564			reject();
7565		};
7566		_document2.default.head.appendChild(script);
7567	});
7568}
7569
7570function offset(el) {
7571	var rect = el.getBoundingClientRect(),
7572	    scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,
7573	    scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop;
7574	return { top: rect.top + scrollTop, left: rect.left + scrollLeft };
7575}
7576
7577var hasClassMethod = void 0,
7578    addClassMethod = void 0,
7579    removeClassMethod = void 0;
7580
7581if ('classList' in _document2.default.documentElement) {
7582	hasClassMethod = function hasClassMethod(el, className) {
7583		return el.classList !== undefined && el.classList.contains(className);
7584	};
7585	addClassMethod = function addClassMethod(el, className) {
7586		return el.classList.add(className);
7587	};
7588	removeClassMethod = function removeClassMethod(el, className) {
7589		return el.classList.remove(className);
7590	};
7591} else {
7592	hasClassMethod = function hasClassMethod(el, className) {
7593		return new RegExp('\\b' + className + '\\b').test(el.className);
7594	};
7595	addClassMethod = function addClassMethod(el, className) {
7596		if (!hasClass(el, className)) {
7597			el.className += ' ' + className;
7598		}
7599	};
7600	removeClassMethod = function removeClassMethod(el, className) {
7601		el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), '');
7602	};
7603}
7604
7605var hasClass = exports.hasClass = hasClassMethod;
7606var addClass = exports.addClass = addClassMethod;
7607var removeClass = exports.removeClass = removeClassMethod;
7608
7609function toggleClass(el, className) {
7610	hasClass(el, className) ? removeClass(el, className) : addClass(el, className);
7611}
7612
7613function fadeOut(el) {
7614	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
7615	var callback = arguments[2];
7616
7617	if (!el.style.opacity) {
7618		el.style.opacity = 1;
7619	}
7620
7621	var start = null;
7622	_window2.default.requestAnimationFrame(function animate(timestamp) {
7623		start = start || timestamp;
7624		var progress = timestamp - start;
7625		var opacity = parseFloat(1 - progress / duration, 2);
7626		el.style.opacity = opacity < 0 ? 0 : opacity;
7627		if (progress > duration) {
7628			if (callback && typeof callback === 'function') {
7629				callback();
7630			}
7631		} else {
7632			_window2.default.requestAnimationFrame(animate);
7633		}
7634	});
7635}
7636
7637function fadeIn(el) {
7638	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
7639	var callback = arguments[2];
7640
7641	if (!el.style.opacity) {
7642		el.style.opacity = 0;
7643	}
7644
7645	var start = null;
7646	_window2.default.requestAnimationFrame(function animate(timestamp) {
7647		start = start || timestamp;
7648		var progress = timestamp - start;
7649		var opacity = parseFloat(progress / duration, 2);
7650		el.style.opacity = opacity > 1 ? 1 : opacity;
7651		if (progress > duration) {
7652			if (callback && typeof callback === 'function') {
7653				callback();
7654			}
7655		} else {
7656			_window2.default.requestAnimationFrame(animate);
7657		}
7658	});
7659}
7660
7661function siblings(el, filter) {
7662	var siblings = [];
7663	el = el.parentNode.firstChild;
7664	do {
7665		if (!filter || filter(el)) {
7666			siblings.push(el);
7667		}
7668	} while (el = el.nextSibling);
7669	return siblings;
7670}
7671
7672function visible(elem) {
7673	return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
7674}
7675
7676function ajax(url, dataType, success, error) {
7677	var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
7678
7679	var type = 'application/x-www-form-urlencoded; charset=UTF-8',
7680	    completed = false,
7681	    accept = '*/'.concat('*');
7682
7683	switch (dataType) {
7684		case 'text':
7685			type = 'text/plain';
7686			break;
7687		case 'json':
7688			type = 'application/json, text/javascript';
7689			break;
7690		case 'html':
7691			type = 'text/html';
7692			break;
7693		case 'xml':
7694			type = 'application/xml, text/xml';
7695			break;
7696	}
7697
7698	if (type !== 'application/x-www-form-urlencoded') {
7699		accept = type + ', */*; q=0.01';
7700	}
7701
7702	if (xhr) {
7703		xhr.open('GET', url, true);
7704		xhr.setRequestHeader('Accept', accept);
7705		xhr.onreadystatechange = function () {
7706			if (completed) {
7707				return;
7708			}
7709
7710			if (xhr.readyState === 4) {
7711				if (xhr.status === 200) {
7712					completed = true;
7713					var data = void 0;
7714					switch (dataType) {
7715						case 'json':
7716							data = JSON.parse(xhr.responseText);
7717							break;
7718						case 'xml':
7719							data = xhr.responseXML;
7720							break;
7721						default:
7722							data = xhr.responseText;
7723							break;
7724					}
7725					success(data);
7726				} else if (typeof error === 'function') {
7727					error(xhr.status);
7728				}
7729			}
7730		};
7731
7732		xhr.send();
7733	}
7734}
7735
7736_mejs2.default.Utils = _mejs2.default.Utils || {};
7737_mejs2.default.Utils.offset = offset;
7738_mejs2.default.Utils.hasClass = hasClass;
7739_mejs2.default.Utils.addClass = addClass;
7740_mejs2.default.Utils.removeClass = removeClass;
7741_mejs2.default.Utils.toggleClass = toggleClass;
7742_mejs2.default.Utils.fadeIn = fadeIn;
7743_mejs2.default.Utils.fadeOut = fadeOut;
7744_mejs2.default.Utils.siblings = siblings;
7745_mejs2.default.Utils.visible = visible;
7746_mejs2.default.Utils.ajax = ajax;
7747_mejs2.default.Utils.loadScript = loadScript;
7748
7749},{"2":2,"3":3,"7":7}],27:[function(_dereq_,module,exports){
7750'use strict';
7751
7752Object.defineProperty(exports, "__esModule", {
7753	value: true
7754});
7755exports.escapeHTML = escapeHTML;
7756exports.debounce = debounce;
7757exports.isObjectEmpty = isObjectEmpty;
7758exports.splitEvents = splitEvents;
7759exports.createEvent = createEvent;
7760exports.isNodeAfter = isNodeAfter;
7761exports.isString = isString;
7762
7763var _mejs = _dereq_(7);
7764
7765var _mejs2 = _interopRequireDefault(_mejs);
7766
7767function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7768
7769function escapeHTML(input) {
7770
7771	if (typeof input !== 'string') {
7772		throw new Error('Argument passed must be a string');
7773	}
7774
7775	var map = {
7776		'&': '&amp;',
7777		'<': '&lt;',
7778		'>': '&gt;',
7779		'"': '&quot;'
7780	};
7781
7782	return input.replace(/[&<>"]/g, function (c) {
7783		return map[c];
7784	});
7785}
7786
7787function debounce(func, wait) {
7788	var _this = this,
7789	    _arguments = arguments;
7790
7791	var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
7792
7793
7794	if (typeof func !== 'function') {
7795		throw new Error('First argument must be a function');
7796	}
7797
7798	if (typeof wait !== 'number') {
7799		throw new Error('Second argument must be a numeric value');
7800	}
7801
7802	var timeout = void 0;
7803	return function () {
7804		var context = _this,
7805		    args = _arguments;
7806		var later = function later() {
7807			timeout = null;
7808			if (!immediate) {
7809				func.apply(context, args);
7810			}
7811		};
7812		var callNow = immediate && !timeout;
7813		clearTimeout(timeout);
7814		timeout = setTimeout(later, wait);
7815
7816		if (callNow) {
7817			func.apply(context, args);
7818		}
7819	};
7820}
7821
7822function isObjectEmpty(instance) {
7823	return Object.getOwnPropertyNames(instance).length <= 0;
7824}
7825
7826function splitEvents(events, id) {
7827	var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
7828
7829	var ret = { d: [], w: [] };
7830	(events || '').split(' ').forEach(function (v) {
7831		var eventName = '' + v + (id ? '.' + id : '');
7832
7833		if (eventName.startsWith('.')) {
7834			ret.d.push(eventName);
7835			ret.w.push(eventName);
7836		} else {
7837			ret[rwindow.test(v) ? 'w' : 'd'].push(eventName);
7838		}
7839	});
7840
7841	ret.d = ret.d.join(' ');
7842	ret.w = ret.w.join(' ');
7843	return ret;
7844}
7845
7846function createEvent(eventName, target) {
7847
7848	if (typeof eventName !== 'string') {
7849		throw new Error('Event name must be a string');
7850	}
7851
7852	var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i),
7853	    detail = {
7854		target: target
7855	};
7856
7857	if (eventFrags !== null) {
7858		eventName = eventFrags[1];
7859		detail.namespace = eventFrags[2];
7860	}
7861
7862	return new window.CustomEvent(eventName, {
7863		detail: detail
7864	});
7865}
7866
7867function isNodeAfter(sourceNode, targetNode) {
7868
7869	return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2);
7870}
7871
7872function isString(value) {
7873	return typeof value === 'string';
7874}
7875
7876_mejs2.default.Utils = _mejs2.default.Utils || {};
7877_mejs2.default.Utils.escapeHTML = escapeHTML;
7878_mejs2.default.Utils.debounce = debounce;
7879_mejs2.default.Utils.isObjectEmpty = isObjectEmpty;
7880_mejs2.default.Utils.splitEvents = splitEvents;
7881_mejs2.default.Utils.createEvent = createEvent;
7882_mejs2.default.Utils.isNodeAfter = isNodeAfter;
7883_mejs2.default.Utils.isString = isString;
7884
7885},{"7":7}],28:[function(_dereq_,module,exports){
7886'use strict';
7887
7888Object.defineProperty(exports, "__esModule", {
7889	value: true
7890});
7891exports.typeChecks = undefined;
7892exports.absolutizeUrl = absolutizeUrl;
7893exports.formatType = formatType;
7894exports.getMimeFromType = getMimeFromType;
7895exports.getTypeFromFile = getTypeFromFile;
7896exports.getExtension = getExtension;
7897exports.normalizeExtension = normalizeExtension;
7898
7899var _mejs = _dereq_(7);
7900
7901var _mejs2 = _interopRequireDefault(_mejs);
7902
7903var _general = _dereq_(27);
7904
7905function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7906
7907var typeChecks = exports.typeChecks = [];
7908
7909function absolutizeUrl(url) {
7910
7911	if (typeof url !== 'string') {
7912		throw new Error('`url` argument must be a string');
7913	}
7914
7915	var el = document.createElement('div');
7916	el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>';
7917	return el.firstChild.href;
7918}
7919
7920function formatType(url) {
7921	var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
7922
7923	return url && !type ? getTypeFromFile(url) : type;
7924}
7925
7926function getMimeFromType(type) {
7927
7928	if (typeof type !== 'string') {
7929		throw new Error('`type` argument must be a string');
7930	}
7931
7932	return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type;
7933}
7934
7935function getTypeFromFile(url) {
7936
7937	if (typeof url !== 'string') {
7938		throw new Error('`url` argument must be a string');
7939	}
7940
7941	for (var i = 0, total = typeChecks.length; i < total; i++) {
7942		var type = typeChecks[i](url);
7943
7944		if (type) {
7945			return type;
7946		}
7947	}
7948
7949	var ext = getExtension(url),
7950	    normalizedExt = normalizeExtension(ext);
7951
7952	var mime = 'video/mp4';
7953
7954	if (normalizedExt) {
7955		if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt)) {
7956			mime = 'video/' + normalizedExt;
7957		} else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) {
7958			mime = 'audio/' + normalizedExt;
7959		}
7960	}
7961
7962	return mime;
7963}
7964
7965function getExtension(url) {
7966
7967	if (typeof url !== 'string') {
7968		throw new Error('`url` argument must be a string');
7969	}
7970
7971	var baseUrl = url.split('?')[0],
7972	    baseName = baseUrl.split('\\').pop().split('/').pop();
7973	return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
7974}
7975
7976function normalizeExtension(extension) {
7977
7978	if (typeof extension !== 'string') {
7979		throw new Error('`extension` argument must be a string');
7980	}
7981
7982	switch (extension) {
7983		case 'mp4':
7984		case 'm4v':
7985			return 'mp4';
7986		case 'webm':
7987		case 'webma':
7988		case 'webmv':
7989			return 'webm';
7990		case 'ogg':
7991		case 'oga':
7992		case 'ogv':
7993			return 'ogg';
7994		default:
7995			return extension;
7996	}
7997}
7998
7999_mejs2.default.Utils = _mejs2.default.Utils || {};
8000_mejs2.default.Utils.typeChecks = typeChecks;
8001_mejs2.default.Utils.absolutizeUrl = absolutizeUrl;
8002_mejs2.default.Utils.formatType = formatType;
8003_mejs2.default.Utils.getMimeFromType = getMimeFromType;
8004_mejs2.default.Utils.getTypeFromFile = getTypeFromFile;
8005_mejs2.default.Utils.getExtension = getExtension;
8006_mejs2.default.Utils.normalizeExtension = normalizeExtension;
8007
8008},{"27":27,"7":7}],29:[function(_dereq_,module,exports){
8009'use strict';
8010
8011var _document = _dereq_(2);
8012
8013var _document2 = _interopRequireDefault(_document);
8014
8015var _promisePolyfill = _dereq_(4);
8016
8017var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);
8018
8019function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8020
8021(function (arr) {
8022	arr.forEach(function (item) {
8023		if (item.hasOwnProperty('remove')) {
8024			return;
8025		}
8026		Object.defineProperty(item, 'remove', {
8027			configurable: true,
8028			enumerable: true,
8029			writable: true,
8030			value: function remove() {
8031				this.parentNode.removeChild(this);
8032			}
8033		});
8034	});
8035})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
8036
8037(function () {
8038
8039	if (typeof window.CustomEvent === 'function') {
8040		return false;
8041	}
8042
8043	function CustomEvent(event, params) {
8044		params = params || { bubbles: false, cancelable: false, detail: undefined };
8045		var evt = _document2.default.createEvent('CustomEvent');
8046		evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
8047		return evt;
8048	}
8049
8050	CustomEvent.prototype = window.Event.prototype;
8051	window.CustomEvent = CustomEvent;
8052})();
8053
8054if (typeof Object.assign !== 'function') {
8055	Object.assign = function (target) {
8056
8057		if (target === null || target === undefined) {
8058			throw new TypeError('Cannot convert undefined or null to object');
8059		}
8060
8061		var to = Object(target);
8062
8063		for (var index = 1, total = arguments.length; index < total; index++) {
8064			var nextSource = arguments[index];
8065
8066			if (nextSource !== null) {
8067				for (var nextKey in nextSource) {
8068					if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
8069						to[nextKey] = nextSource[nextKey];
8070					}
8071				}
8072			}
8073		}
8074		return to;
8075	};
8076}
8077
8078if (!String.prototype.startsWith) {
8079	String.prototype.startsWith = function (searchString, position) {
8080		position = position || 0;
8081		return this.substr(position, searchString.length) === searchString;
8082	};
8083}
8084
8085if (!Element.prototype.matches) {
8086	Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
8087		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
8088		    i = matches.length - 1;
8089		while (--i >= 0 && matches.item(i) !== this) {}
8090		return i > -1;
8091	};
8092}
8093
8094if (window.Element && !Element.prototype.closest) {
8095	Element.prototype.closest = function (s) {
8096		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
8097		    i = void 0,
8098		    el = this;
8099		do {
8100			i = matches.length;
8101			while (--i >= 0 && matches.item(i) !== el) {}
8102		} while (i < 0 && (el = el.parentElement));
8103		return el;
8104	};
8105}
8106
8107(function () {
8108	var lastTime = 0;
8109	var vendors = ['ms', 'moz', 'webkit', 'o'];
8110	for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
8111		window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
8112		window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
8113	}
8114
8115	if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) {
8116		var currTime = new Date().getTime();
8117		var timeToCall = Math.max(0, 16 - (currTime - lastTime));
8118		var id = window.setTimeout(function () {
8119			callback(currTime + timeToCall);
8120		}, timeToCall);
8121		lastTime = currTime + timeToCall;
8122		return id;
8123	};
8124
8125	if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {
8126		clearTimeout(id);
8127	};
8128})();
8129
8130if (/firefox/i.test(navigator.userAgent)) {
8131	var getComputedStyle = window.getComputedStyle;
8132	window.getComputedStyle = function (el, pseudoEl) {
8133		var t = getComputedStyle(el, pseudoEl);
8134		return t === null ? { getPropertyValue: function getPropertyValue() {} } : t;
8135	};
8136}
8137
8138if (!window.Promise) {
8139	window.Promise = _promisePolyfill2.default;
8140}
8141
8142(function (constructor) {
8143	if (constructor && constructor.prototype && constructor.prototype.children === null) {
8144		Object.defineProperty(constructor.prototype, 'children', {
8145			get: function get() {
8146				var i = 0,
8147				    node = void 0,
8148				    nodes = this.childNodes,
8149				    children = [];
8150				while (node = nodes[i++]) {
8151					if (node.nodeType === 1) {
8152						children.push(node);
8153					}
8154				}
8155				return children;
8156			}
8157		});
8158	}
8159})(window.Node || window.Element);
8160
8161},{"2":2,"4":4}],30:[function(_dereq_,module,exports){
8162'use strict';
8163
8164Object.defineProperty(exports, "__esModule", {
8165	value: true
8166});
8167exports.isDropFrame = isDropFrame;
8168exports.secondsToTimeCode = secondsToTimeCode;
8169exports.timeCodeToSeconds = timeCodeToSeconds;
8170exports.calculateTimeFormat = calculateTimeFormat;
8171exports.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
8172
8173var _mejs = _dereq_(7);
8174
8175var _mejs2 = _interopRequireDefault(_mejs);
8176
8177function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8178
8179function isDropFrame() {
8180	var fps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 25;
8181
8182	return !(fps % 1 === 0);
8183}
8184function secondsToTimeCode(time) {
8185	var forceHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
8186	var showFrameCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
8187	var fps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25;
8188	var secondsDecimalLength = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
8189
8190
8191	time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
8192
8193	var dropFrames = Math.round(fps * 0.066666),
8194	    timeBase = Math.round(fps),
8195	    framesPer24Hours = Math.round(fps * 3600) * 24,
8196	    framesPer10Minutes = Math.round(fps * 600),
8197	    frameSep = isDropFrame(fps) ? ';' : ':',
8198	    hours = void 0,
8199	    minutes = void 0,
8200	    seconds = void 0,
8201	    frames = void 0,
8202	    f = Math.round(time * fps);
8203
8204	if (isDropFrame(fps)) {
8205
8206		if (f < 0) {
8207			f = framesPer24Hours + f;
8208		}
8209
8210		f = f % framesPer24Hours;
8211
8212		var d = Math.floor(f / framesPer10Minutes);
8213		var m = f % framesPer10Minutes;
8214		f = f + dropFrames * 9 * d;
8215		if (m > dropFrames) {
8216			f = f + dropFrames * Math.floor((m - dropFrames) / Math.round(timeBase * 60 - dropFrames));
8217		}
8218
8219		var timeBaseDivision = Math.floor(f / timeBase);
8220
8221		hours = Math.floor(Math.floor(timeBaseDivision / 60) / 60);
8222		minutes = Math.floor(timeBaseDivision / 60) % 60;
8223
8224		if (showFrameCount) {
8225			seconds = timeBaseDivision % 60;
8226		} else {
8227			seconds = (f / timeBase % 60).toFixed(secondsDecimalLength);
8228		}
8229	} else {
8230		hours = Math.floor(time / 3600) % 24;
8231		minutes = Math.floor(time / 60) % 60;
8232		if (showFrameCount) {
8233			seconds = Math.floor(time % 60);
8234		} else {
8235			seconds = (time % 60).toFixed(secondsDecimalLength);
8236		}
8237	}
8238	hours = hours <= 0 ? 0 : hours;
8239	minutes = minutes <= 0 ? 0 : minutes;
8240	seconds = seconds <= 0 ? 0 : seconds;
8241
8242	var result = forceHours || hours > 0 ? (hours < 10 ? '0' + hours : hours) + ':' : '';
8243	result += (minutes < 10 ? '0' + minutes : minutes) + ':';
8244	result += '' + (seconds < 10 ? '0' + seconds : seconds);
8245
8246	if (showFrameCount) {
8247		frames = (f % timeBase).toFixed(0);
8248		frames = frames <= 0 ? 0 : frames;
8249		result += frames < 10 ? frameSep + '0' + frames : '' + frameSep + frames;
8250	}
8251
8252	return result;
8253}
8254
8255function timeCodeToSeconds(time) {
8256	var fps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 25;
8257
8258
8259	if (typeof time !== 'string') {
8260		throw new TypeError('Time must be a string');
8261	}
8262
8263	if (time.indexOf(';') > 0) {
8264		time = time.replace(';', ':');
8265	}
8266
8267	if (!/\d{2}(\:\d{2}){0,3}/i.test(time)) {
8268		throw new TypeError('Time code must have the format `00:00:00`');
8269	}
8270
8271	var parts = time.split(':');
8272
8273	var output = void 0,
8274	    hours = 0,
8275	    minutes = 0,
8276	    seconds = 0,
8277	    frames = 0,
8278	    totalMinutes = 0,
8279	    dropFrames = Math.round(fps * 0.066666),
8280	    timeBase = Math.round(fps),
8281	    hFrames = timeBase * 3600,
8282	    mFrames = timeBase * 60;
8283
8284	switch (parts.length) {
8285		default:
8286		case 1:
8287			seconds = parseInt(parts[0], 10);
8288			break;
8289		case 2:
8290			minutes = parseInt(parts[0], 10);
8291			seconds = parseInt(parts[1], 10);
8292			break;
8293		case 3:
8294			hours = parseInt(parts[0], 10);
8295			minutes = parseInt(parts[1], 10);
8296			seconds = parseInt(parts[2], 10);
8297			break;
8298		case 4:
8299			hours = parseInt(parts[0], 10);
8300			minutes = parseInt(parts[1], 10);
8301			seconds = parseInt(parts[2], 10);
8302			frames = parseInt(parts[3], 10);
8303			break;
8304	}
8305
8306	if (isDropFrame(fps)) {
8307		totalMinutes = 60 * hours + minutes;
8308		output = hFrames * hours + mFrames * minutes + timeBase * seconds + frames - dropFrames * (totalMinutes - Math.floor(totalMinutes / 10));
8309	} else {
8310		output = (hFrames * hours + mFrames * minutes + fps * seconds + frames) / fps;
8311	}
8312
8313	return parseFloat(output.toFixed(3));
8314}
8315
8316function calculateTimeFormat(time, options) {
8317	var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 25;
8318
8319
8320	time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
8321
8322	var hours = Math.floor(time / 3600) % 24,
8323	    minutes = Math.floor(time / 60) % 60,
8324	    seconds = Math.floor(time % 60),
8325	    frames = Math.floor((time % 1 * fps).toFixed(3)),
8326	    lis = [[frames, 'f'], [seconds, 's'], [minutes, 'm'], [hours, 'h']];
8327
8328	var format = options.timeFormat,
8329	    firstTwoPlaces = format[1] === format[0],
8330	    separatorIndex = firstTwoPlaces ? 2 : 1,
8331	    separator = format.length < separatorIndex ? format[separatorIndex] : ':',
8332	    firstChar = format[0],
8333	    required = false;
vendor: 1,471 bytes, lines 8334-8396
8334
8335	for (var i = 0, len = lis.length; i < len; i++) {
8336		if (~format.indexOf(lis[i][1])) {
8337			required = true;
8338		} else if (required) {
8339			var hasNextValue = false;
8340			for (var j = i; j < len; j++) {
8341				if (lis[j][0] > 0) {
8342					hasNextValue = true;
8343					break;
8344				}
8345			}
8346
8347			if (!hasNextValue) {
8348				break;
8349			}
8350
8351			if (!firstTwoPlaces) {
8352				format = firstChar + format;
8353			}
8354			format = lis[i][1] + separator + format;
8355			if (firstTwoPlaces) {
8356				format = lis[i][1] + format;
8357			}
8358			firstChar = lis[i][1];
8359		}
8360	}
8361
8362	options.currentTimeFormat = format;
8363}
8364
8365function convertSMPTEtoSeconds(SMPTE) {
8366
8367	if (typeof SMPTE !== 'string') {
8368		throw new TypeError('Argument must be a string value');
8369	}
8370
8371	SMPTE = SMPTE.replace(',', '.');
8372
8373	var decimalLen = ~SMPTE.indexOf('.') ? SMPTE.split('.')[1].length : 0;
8374
8375	var secs = 0,
8376	    multiplier = 1;
8377
8378	SMPTE = SMPTE.split(':').reverse();
8379
8380	for (var i = 0, total = SMPTE.length; i < total; i++) {
8381		multiplier = 1;
8382		if (i > 0) {
8383			multiplier = Math.pow(60, i);
8384		}
8385		secs += Number(SMPTE[i]) * multiplier;
8386	}
8387	return Number(secs.toFixed(decimalLen));
8388}
8389
8390_mejs2.default.Utils = _mejs2.default.Utils || {};
8391_mejs2.default.Utils.secondsToTimeCode = secondsToTimeCode;
8392_mejs2.default.Utils.timeCodeToSeconds = timeCodeToSeconds;
8393_mejs2.default.Utils.calculateTimeFormat = calculateTimeFormat;
8394_mejs2.default.Utils.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
8395
8396},{"7":7}]},{},[29,6,5,15,23,20,19,21,22,24,16,18,17,9,10,11,12,13,14]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.